Skip to content

v0.10.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@josevalim josevalim released this 15 Jul 09:37
Enhancements
  • [ExUnit] Support trace: true option which gives detailed reporting on test runs
  • [HashDict] Optimize HashDict to store pairs in a cons cell reducing storage per key by half
  • [Kernel] Add pretty printing support for inspect
  • [Kernel] Add document algebra library used as the foundation for pretty printing
  • [Kernel] Add defrecordp/3 that enables specifying the first element of the tuple
  • [Kernel] Add the Set API and a hash based implementation via HashSet
  • [Kernel] Add Stream as composable, lazy-enumerables
  • [Mix] mix archive now includes the version of the generated archive
  • [Mix] Mix now requires explicit dependency overriding to be given with override: true
  • [Mix] Projects can now define an :elixir key to outline supported Elixir versions
  • [Typespec] Improve error messages to contain file, line and the typespec itself
Bug fix
  • [CLI] Elixir can now run on Unix directories with : in its path
  • [Kernel] match?/2 does not leak variables to outer scope
  • [Kernel] Keep head|tail format when splicing at the tail
  • [Kernel] Ensure variables defined in the module body are not passed to callbacks
  • [Mix] On dependencies conflict, show from where each source is coming from
  • [Mix] Empty projects no longer leave empty ebin files on mix compile
  • [Module] Calling Module.register_attribute/3 no longer automatically changes it to persisted or accumulated
Deprecations
  • [Enum] Receiving the index of iteration in Enum.map/2 and Enum.each/2 is deprecated in favor of Stream.with_index/1
  • [File] File.iterator/1 and File.biniterator/1 are deprecated in favor of IO.stream/1 and IO.binstream/1
  • [File] File.iterator!/2 and File.biniterator!/2 are deprecated in favor of File.stream!/2 and File.binstream!/2
  • [Kernel] Deprecate recently added quote binding: ... in favor of the clearer quote bind_quoted: ...
  • [Kernel] Deprecate Kernel.float/1 in favor of a explicit conversion
  • [Mix] Deprecate mix run EXPR in favor of mix run -e EXPR
  • [Record] Record.__index__/2 deprecated in favor of Record.__record__(:index, key)
Backwards incompatible changes
  • [Kernel] The Binary.Inspect protocol has been renamed to Inspect

  • [Kernel] Tighten up the grammar rules regarding parentheses omission, previously the examples below would compile but now they raise an error message:

        do_something 1, is_list [], 3
        [1, is_atom :foo, 3]
    
  • [Module] Calling Module.register_attribute/3 no longer automatically changes it to persisted or accumulated

  • [Record] First element of a record via defrecordp is now the defrecordp name and no longer the current atom

  • [URI] Remove custom URI parsers in favor of URI.default_port/2