Skip to content

Releases: nerves-project/shoehorn

v0.9.2

04 Mar 15:19
Compare
Choose a tag to compare
  • Updates
    • Improve error message when an OTP application isn't found when building the
      OTP release script. It's usually due to a dependency typo or wrong targets
      spec, so point to that.

v0.9.1

06 Apr 23:01
Compare
Choose a tag to compare
  • Updates
    • Improve detection of invalid applications being passed in the :init and
      :last options.
    • Fall back to a reasonable default when trying to get application modes from
      the release options. This fixes an exception when building the release.
    • Support release configuration via the release options in a project's
      mix.exs. Add a :shoehorn key to the release parameters to set :init,
      :last or the :exxtra_dependencies options.

v0.9.0

05 Apr 03:02
Compare
Choose a tag to compare

This is a major update to Shoehorn that includes breaking changes:

  • The :init configuration option only supports applications now. MFAs are no
    longer supported and moved to runtime.exs or an Application.start
    callback.
  • References to use Shoehorn.Handler need to be updated to
    @behaviour Shoehorn.Handler. This may require implementing additional
    functions.
  • Elixir 1.9 is no longer supported. Please update to Elixir 1.10 or later.

The main update to Shoehorn is to move all application startup to the boot
script. This noticeably improves boot time on many Nerves platforms due to boot
scripts being able to load files without traversing the entire Erlang module
path list. These traversals are amazingly slow (sometimes seconds) due to a
combination of SquashFS slowness in this area and slow overall IO.

Using boot scripts to load all applications has some important improvements in
addition to performance:

  • Application start order is deterministic and computed at compile-time. If you
    want to see the order, take a look at the end of the shoehorn.script in your
    release directory.
  • Shoehorn alphabetizes the start of applications that could be ordered
    arbitrarily. This minimizes changes in start ordering when dependencies are
    added or removed.
  • It enables experimental features like providing additional dependencies (using
    the :extra_dependencies configuration key) or hinting that dependencies get
    started as late as possible (the :last configuration key)
  • You can remove the :app configuration key from your Shoehorn configuration.
    It's no longer needed.

Aside from the change from a macro to a behaviour and possibly needing to
implement callback functions, Shoehorn.Handler implementations work the same
as before.

v0.8.0

01 Nov 15:54
Compare
Choose a tag to compare

Shoehorn v0.8.0 completely removes support for Distillery.

v0.7.0

11 Oct 00:54
Compare
Choose a tag to compare

Shoehorn 0.7.0 removes support for creating boot scripts using Distillery and
only supports using Elixir releases. As a result, the minimum supported version
of Elixir is now version 1.9.

v0.6.0

11 Jul 13:11
Compare
Choose a tag to compare
  • Enhancements
    • Added support for Elixir 1.9+ releases.
    • Distillery is now an optional dependency and ~> 2.1.
    • Updated supervisor specs and cleaned up warnings.

v0.5.0

01 Apr 12:35
Compare
Choose a tag to compare
  • Enhancements
    • Exclude distillery, artificery, and mix from the release by default.
    • Removed RPC and application overlay modules.
    • Updated deps and docs.

v0.4.0

21 Aug 11:49
Compare
Choose a tag to compare
  • Enhancements
    • Support for distillery ~> 2.0
    • Support for Elixir ~> 1.7