Skip to content

v0.14.2

Pre-release
Pre-release
Compare
Choose a tag to compare
@josevalim josevalim released this 29 Jun 09:55

Enhancements

  • [Enum] Improve performance of Enum.join/2 and Enum.map_join/3 by using iolists
  • [Kernel] Ensure compatibility with Erlang 17.1
  • [Kernel] Support @external_resource attribute to external dependencies to a module
  • [Mix] Allow built Git dependencies to run on a system without Git by passing --no-deps-check
  • [Mix] Add MIX_ARCHIVES env variable (it is recommended for Elixir build tools to swap this environment)
  • [Task] Set :proc_lib initial call on task to aid debugging
  • [Typespec] Delay typespec compilation to after expansion
  • [URI] Allow parse/1 now accepts %URI{} as argument and return the uri itself

Bug fixes

  • [CLI] Support paths inside archives in -pa and -pz options
  • [IEx] Remove delay when printing data from the an application start callback
  • [IEx] Ensure we show a consistent error when we cannot evaluate .iex.exs
  • [Kernel] Ensure derived protocols are defined with a file
  • [Kernel] Change precedence of & to not special case /
  • [Kernel] Ensure we can only use variables and \\ as arguments of bodyless clause

Soft deprecations (no warnings emitted)

  • [EEx] Using EEx.TransformerEngine and EEx.AssignsEngine are deprecated in favor of function composition with Macro.prewalk/1 (see EEx.SmartEngine for an example)
  • [Kernel] Kernel.xor/2 is deprecated
  • [Mix] Mix.Generator.from_file/1 is deprecated in favor of passing from_file: file option to embed_text/2 and embed_template/2 (note though that from_file/1 expects a path relative to the current file while the from_file: file expects one relative to the current working directory)

Deprecations

  • [Kernel] size/1 is deprecated in favor of byte_size/1 and tuple_size/1 (this change was soft deprecated two releases ago)

Backwards incompatible changes

  • [CLI] Remove support for the --gen-debug option as its usage is not documented by OTP
  • [Kernel] Sigils no longer balance start and end tokens, e.g. the sigil ~s(f(o)o) is no longer valid as it finishes in the first closing )
  • [Kernel] Variables set in cond clause heads are no longer available outside of that particular cond clause (this is the behaviour also found in case, receive and friends)
  • [System] build_info/0 now returns a map