Skip to content

v0.12.3

Pre-release
Pre-release
Compare
Choose a tag to compare
@josevalim josevalim released this 02 Feb 18:57

Enhancements

  • [Kernel] Warnings now are explicitly tagged with "warning:" in messages
  • [Kernel] Explicit functions inlined by the compiler, including operators. This means that Kernel.+/2 will now expand to :erlang.+/2 and so on
  • [Mix] Do not fail if a Mix dependency relies on an outdated Elixir version
  • [Process] Add Process.send/2 and Process.send_after/3
  • [Version] Add Version.compare/2

Bug fixes

  • [Atom] Inspect :... and :foo@bar without quoting
  • [Keyword] The list [1, 2, three: :four] now correctly expands to [1, 2, {:three, :four}]
  • [Kernel] Ensure undefined @attributes shows proper stacktrace in warnings
  • [Kernel] Guarantee nullary funs/macros are allowed in guards
  • [Process] Ensure monitoring functions are inlined by the compiler

Deprecations

  • [IEx] The helper m/0 has been deprecated. The goal is to group all runtime statistic related helpers into a single module
  • [Kernel] binary_to_term/1, binary_to_term/2, term_to_binary/1 and term_to_binary/2 are deprecated in favor of their counterparts in the :erlang module
  • [Kernel] // for default arguments is deprecated in favor of \\. This is a soft deprecation, no warnings will be emitted for it in this release
  • [Kernel] Deprecated @behavior in favor of @behaviour
  • [Record] to_keywords, getter and list getter functionalities in defrecordp are deprecated
  • [Record] Record.import/2 is deprecated

Backwards incompatible changes

  • [Dict] Implementations of equal?/2 and merge/2 in HashDict and ListDict are no longer polymorphic. To get polymorphism, use the functions in Dict instead
  • [File] File.cp/3 and File.cp_r/3 no longer carry Unix semantics where the function behaves differently if the destination is an existing previous directory or not. It now always copies source to destination, doing it recursively in the latter
  • [IEx] IEx now loads the .iex.exs file instead of .iex
  • [Kernel] Remove ** from the list of allowed operators
  • [Kernel] Limit sigils delimiters to one of the following: <>, {}, [], (), ||, //, " and '
  • [Range] Range is no longer a record, instead use first .. last if you need pattern matching
  • [Set] Implementations of difference/2, disjoint?/2, equal?/2, intersection/2, subset?/2 and union/2 in HashSet are no longer polymorphic. To get polymorphism, use the functions in Set instead