|
1 | 1 | # Changelog
|
2 | 2 |
|
| 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 | + |
3 | 39 | ## v0.8.0 - 2021-10-31
|
4 | 40 |
|
5 | 41 | Shoehorn v0.8.0 completely removes support for Distillery.
|
|
0 commit comments