Skip to content

v0.13.2

Pre-release
Pre-release
Compare
Choose a tag to compare
@josevalim josevalim released this 11 May 10:33

Enhancements

  • [Application] Add an Application module with common functions to work with OTP applications
  • [Exception] Add Exception.message/1, Exception.format_banner/1, Exception.format_exit/1 and Exception.format/1
  • [File] Add File.ln_s/1
  • [Mix] mix deps.clean now works accross environments
  • [Mix] Support line numbers in mix test, e.g. test/some/file_test.exs:12
  • [Mix] Use @file attributes to detect dependencies in between .ex and external files. This means changing an .eex file will no longer recompile the whole project only the files that depend directly on it
  • [Mix] Support application configurations in config/config.exs which can be customized by specifying your own :config_path
  • [Mix] Support user-wide configuration with ~/.mix/config.exs
  • [Mix] mix help now uses ANSI formatting to print guides
  • [Regex] Support functions in Regex.replace/4
  • [String] Support :parts in String.split/3

Bug fixes

  • [Code] Ensure we don't lose the caller stacktrace on code evaluation
  • [IEx] Exit signals now exits the IEx evaluator and a new one is spawned on its place
  • [IEx] Ensure we don't prune too much stacktrace when reporting failures
  • [IEx] Fix an issue where iex.bat on Windows was not passing the proper parameters forward
  • [Kernel] Ensure modules defined on root respect defined aliases
  • [Kernel] Do not wrap single lists in :__block__
  • [Kernel] Ensure emitted beam code works nicely with dialyzer
  • [Kernel] Do not allow a module named Elixir to be defined
  • [Kernel] Create remote funs even if mod is a variable in capture &mod.fun/arity
  • [Kernel] Improve compiler message when duplicated modules are detected
  • [Mix] Generate .gitignore for --umbrella projects
  • [Mix] Verify if a git dependency in deps has a proper git checkout and clean it automatically when it doesn't
  • [Mix] Ensure mix test works with IEx.pry/0
  • [System] Convert remaining functions in System to rely on char data

Soft deprecations (no warnings emitted)

  • [Application] use Application.Behaviour is deprecated in favor of use Application
  • [Exception] exception.message is deprecated in favor Exception.message/1 for retrieving exception messages
  • [Kernel] is_exception/1, is_record/1 and is_record/2 are deprecated in favor of Exception.exception?1, Record.record?/1 and Record.record?/2
  • [Mix] Mix.project/0 is deprecated in favor of Mix.Project.config/0
  • [Process] Process.spawn/1, Process.spawn/3, Process.spawn_link/1, Process.spawn_link/3, Process.spawn_monitor/1, Process.spawn_monitor/3, Process.send/2 and Process.self/0 are deprecated in favor of the ones in Kernel

Deprecations

  • [IEx] IEx.Options is deprecated in favor of IEx.configure/1 and IEx.configuration/0
  • [Kernel] lc and bc comprehensions are deprecated in favor of for
  • [Macro] Macro.safe_terms/1 is deprecated
  • [Process] Process.delete/0 is deprecated
  • [Regex] Deprecate :global option in Regex.split/3 in favor of parts: :infinity
  • [String] Deprecate :global option in String.split/3 in favor of parts: :infinity

Backwards incompatible changes

  • [ExUnit] ExUnit.Test and ExUnit.TestCase has been converted to structs
  • [ExUnit] The test and callback context has been converted to maps
  • [Kernel] File.Stat, HashDict, HashSet, Inspect.Opts, Macro.Env, Range, Regex and Version.Requirement have been converted to structs. This means is_record/2 checks will no longer work, instead, you can pattern match on them using %Range{} and similar
  • [URI] The URI.Info record has now become the URI struct
  • [Version] The Version.Schema record has now become the Version struct