Skip to content

Commit cd5cdbf

Browse files
committed
v0.9.0 release
1 parent 5820aa3 commit cd5cdbf

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

CHANGELOG.md

+36
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,41 @@
11
# Changelog
22

3+
## v0.9.0 - 2022-04-03
4+
5+
This is a major update to Shoehorn that includes **breaking changes**:
6+
7+
* The `:init` configuration option only supports applications now. MFAs are no
8+
longer supported and moved to `runtime.exs` or an `Application.start`
9+
callback.
10+
* References to `use Shoehorn.Handler` need to be updated to `@behaviour
11+
Shoehorn.Handler`. This may require implementing additional functions.
12+
* Elixir 1.9 is no longer supported. Please update to Elixir 1.10 or later.
13+
14+
The main update to Shoehorn is to move all application startup to the boot
15+
script. This noticeably improves boot time on many Nerves platforms due to boot
16+
scripts being able to load files without traversing the entire Erlang module
17+
path list. These traversals are amazingly slow (sometimes seconds) due to a
18+
combination of SquashFS slowness in this area and slow overall IO.
19+
20+
Using boot scripts to load all applications has some important improvements in
21+
addition to performance:
22+
23+
* Application start order is deterministic and computed at compile-time. If you
24+
want to see the order, take a look at the end of the `shoehorn.script` in your
25+
release directory.
26+
* Shoehorn alphabetizes the start of applications that could be ordered
27+
arbitrarily. This minimizes changes in start ordering when dependencies are
28+
added or removed.
29+
* It enables experimental features like providing additional dependencies (using
30+
the `:extra_dependencies` configuration key) or hinting that dependencies get
31+
started as late as possible (the `:last` configuration key)
32+
* You can remove the `:app` configuration key from your Shoehorn configuration.
33+
It's no longer needed.
34+
35+
Aside from the change from a macro to a behaviour and possibly needing to
36+
implement callback functions, `Shoehorn.Handler` implementations work the same
37+
as before.
38+
339
## v0.8.0 - 2021-10-31
440

541
Shoehorn v0.8.0 completely removes support for Distillery.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ releases` configuration in the `mix.exs` (replace `:simple_app`):
4848

4949
defp deps do
5050
[
51-
{:shoehorn, "~> 0.7.0"}
51+
{:shoehorn, "~> 0.9.0"}
5252
]
5353
end
5454
end

mix.exs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
defmodule Shoehorn.MixProject do
22
use Mix.Project
33

4-
@version "0.8.0"
4+
@version "0.9.0"
55
@source_url "https://github.com/nerves-project/shoehorn"
66

77
def project do

0 commit comments

Comments
 (0)