Skip to content

Releases: elixir-lang/elixir

v1.14.0-rc.0

01 Aug 20:30
Compare
Choose a tag to compare
v1.14.0-rc.0 Pre-release
Pre-release
Release v1.14.0-rc.0

v1.13.4

07 Apr 06:15
Compare
Choose a tag to compare

This release has been verified to work with Erlang/OTP 25 RC2.

1. Enhancements

Elixir

  • [Code] Allow iodata to be returned in sigil formatting functions
  • [Code] Pass opening delimiter information to sigil formatting functions

2. Bug fixes

Elixir

  • [Kernel] Tweak type unification to fix infinite loop with recursive vars
  • [Kernel] Add compile-time dependencies on require
  • [Registry] Make Registry send work with named triplets

3. Deprecations

Mix

  • [mix rebar] Deprecate Rebar 2 as it no longer works on Erlang/OTP 25

Checksums

  • Precompiled.zip SHA1: 325fbdde4f0a5701bb8b9d455175b85ff41470d7
  • Precompiled.zip SHA512: e64c714e80cd9657b8897d725f6d78f251d443082f6af5070caec863c18068c97af6bdda156c3b3390e0a2b84f77c2ad3378a42913f64bb583fb5251fa49e619
  • Docs.zip SHA1: 2ae1b2e4c9a62fe8fc36b5da23c6d9ab8646463f
  • Docs.zip SHA512: faa66a9543344728f2ffa7de0855747526e8c2dc7f710875bad5335c87d4d3be3eb5963c152a1ed7a0f021308f877e3c81a8a4479db26ca77679317574912d21

v1.13.3

09 Feb 15:37
Compare
Choose a tag to compare

1. Enhancements

Mix

  • [mix format] Supply file and line to formatter plugins
  • [mix format] Support embedded Elixir expressions inside formatter plugins

2. Bug fixes

Elixir

  • [Code] Fix duplicate bindings causing errors during evaluation
  • [Kernel] Make sure signatures stored in the Documentation chunk does not contain newlines
  • [Kernel] Fix infinite loop when compiling guards with recursive map access
  • [Macro] Fix error on Macro.to_string/1 when the plain alias Elixir is given
  • [String] Fix error for certain codepoint combinations in String.split_at/2

Mix

  • [mix compile] Recompile project files when exports from dependencies change
  • [mix test] Fix total coverage always showing in red even when above the threshold

Checksums

  • Precompiled.zip SHA1: 7a2d0ff13beadcba3f566d692d960dcd785df5c8
  • Precompiled.zip SHA512: 93132c03a16479cfd48c509e2c5ee145b9062d77d528ac2eaeae460f4349f138286f14d34a1ee884e6c76081fe1bf52d27788b944ef06feaa40c07bec41a0a27
  • Docs.zip SHA1: e1110f7a791483a09914ab364ea283cf890f3157
  • Docs.zip SHA512: c477ba1bf10dd009f3c295e1c70f5272b7df3525edbd3f9ee0ae71eef49933c7a19a264cb9fa7eae4fa82d9c393c59e0f2e39b99b16b7ca6cd413f1c7d96d9a2

v1.13.2

13 Jan 09:58
Compare
Choose a tag to compare

1. Enhancements

Mix

  • [mix format] Allow plugins to also format .ex and .exs files
  • [mix release] Allow bypassing application mode validation in release spec
  • [mix test] Print a message when the suite fails due to the coverage threshold

2. Bug fixes

Elixir

  • [Code] Do not emit warnings on Code.Fragment.container_cursor_to_quoted/2
  • [Kernel] Fix a crash when a for-comprehension with :uniq was used inside another comprehension with :uniq
  • [Kernel] Ensure env.context_modules is properly set inside optimized defmodule
  • [Keyword] Deprecate the recently added Keyword.map/2 as it is equivalent to Keyword.new/2
  • [Map] Deprecate the recently added Map.map/2 as it is equivalent to Map.new/2
  • [Protocol] Warn on zero arity callbacks inside protocols

Checksums

  • Precompiled.zip SHA1: 53bf917f18fc210dcf252e346453fd8c04f2ac6b
  • Precompiled.zip SHA512: 74cc0b3d7ddb0156d6695b3b08319d0c01fcfac053407b0bf8b456013d21d1b37ffd5cba389557edfb6af329fbed07c8cd1061a6698b60e1b16a70c898720ec2
  • Docs.zip SHA1: 442ee132942e7834b0dd87e459b261d0d7db5821
  • Docs.zip SHA512: 8519c56c6f57c187a82745c272906dc9ff76be2a026af5d1a8cb7e727530aab99c7536d520a72209f01bf7c99cabb29efb8d1a43eb99ac8dc0bababc04805d0e

v1.13.1

14 Dec 22:40
Compare
Choose a tag to compare

1. Bug fixes

Elixir

  • [Code] Do not show code snippets in SyntaxError and TokenMissingError if line is empty
  • [Exception] Do not fail blaming ArgumentError for improper lists on apply/3
  • [Macro] Set a max line_length for Macro.to_string/1
  • [Macro] Fix formatting of lists on module attributes for Macro.to_string/1
  • [String] Fix incorrect codepoint byte counting in slice with negative positions in ranges
  • [Task] Ensure async streams can be consumed from another process than the one that creates them
  • [URI] Undeprecate URI.parse/1 as URI.new/1 is too strict in many common cases
  • [URI] Make sure URI.new/1 returns nil for empty paths

IEx

  • [IEx] Make sure the --version flag halts IEx

Mix

  • [Mix] Make protocol consolidation part of the Mix.install/2 cache

Checksums

  • Precompiled.zip SHA1: 40762ffbef86cbbfd0c79a94e057fb987dc882ff
  • Precompiled.zip SHA512: bb02ead0d4ccf499ff0473fbbb17fd12de4ba476b463c0452138bc1ef9004547166e75ffe7c6f96b9497adc9fecbda4ad57bfe0f17f1ba95d8339a0e98c29b03
  • Docs.zip SHA1: 066586bc79319f6248b26143124b76520e995c19
  • Docs.zip SHA512: 7c33c6208250a88646ffc2a2f74a944e7f1a9c69473791e9faaf054bd476876a1dd80d8c792a5c47b5bf350a77c0ba4ef191f3b4509b9e962d2514ef88bff9a3

v1.13.0

03 Dec 18:25
Compare
Choose a tag to compare

Announcement: https://elixir-lang.org/blog/2021/12/03/elixir-v1-13-0-released/

1. Enhancements

EEx

  • [EEx] Add :parser_options to EEx functions

Elixir

  • [Calendar] Add c:Calendar.year_of_era/3 to support calendars where the beginning of a new era does not align with the beginning of a new year
  • [CLI] Support --short-version on the CLI that does not boot the VM
  • [Code] Add Code.string_to_quoted_with_comments/2 and Code.quoted_to_algebra/2
  • [Code] Add more :token_metadata to aliases and remote calls when parsing strings
  • [Code] Add Code.Fragment module to provide best-effort information from code fragments. The module currently provides an updated Code.Fragment.cursor_context/2 with operator support and Code.Fragment.surround_context/2 which looks at a given position in a fragment and find its surrounding delimiters
  • [Code] Allow custom sigil formatting on Code.format_string!/2
  • [Code] Add {:on_module, bytecode, :none} trace to compilation tracers
  • [Enum] Optimize Enum.concat/1 for lists of lists
  • [Enum] Add Enum.slide/3
  • [Exception] Better format Elixir exceptions in Erlang
  • [Inspect] Allow default inspect fun to be set globally with Inspect.Opts.default_inspect_fun/1
  • [IO] Allow :eof to be given as limit to IO.getn/2
  • [Kernel] Support the :sigils option in import Mod, only: :sigils and allow the sigil modifiers to be also digits
  • [Kernel] Make get_in consistently abort when nil values are found
  • [Kernel] Improve compilation times by reducing the amount of copies of the AST across compiler processes
  • [Kernel] Raise if trying to define a module with a slash in its name
  • [Kernel] Warn when ?\ is used and there is no need for a escape character
  • [Kernel] Track structs in typespecs as export deps instead of compile-time deps
  • [Kernel] Add power operator (**/2)
  • [Keyword] Add Keyword.validate/2
  • [Keyword] Implement Keyword.filter/2 and Keyword.map/2
  • [List] Add List.keyfind!/3
  • [Macro] Add Macro.prewalker/1 and Macro.postwalker/1
  • [Macro.Env] Add the following reflection functions: required?/2, lookup_import/2, fetch_alias/2, and fetch_macro_alias/2
  • [Map] Implement Map.filter/2 and Map.map/2
  • [Module] Support :nillify_clauses in Module.get_definition/3
  • [Module] Add Module.attributes_in/1 and Module.overridables_in/1
  • [OptionParser] Add "did you mean?" suggestions to OptionParser.ParseError messages
  • [Record] Add record reflection via @__records__
  • [Task] Add Task.completed/1
  • [Task] Add Task.ignore/1 to keep a task running but ignoring all of its results
  • [Task] Reduce the amount of copying Task.async* functions
  • [URI] Add URI.new/1 and URI.new!/1

ExUnit

  • [ExUnit] Show hint if comparing different but equivalent strings
  • [ExUnit.CaptureIO] Add with_io/3 to return result with captured io
  • [ExUnit.CaptureLog] Add with_log/2 to return result with captured logs

IEx

  • [IEx.Autocomplete] Add path autocompletion whenever when the cursor follows "./ or "/ or "DRIVER: where DRIVER is a single letter
  • [IEx.Autocomplete] Add autocompletion for sigils, struct names, and struct fields
  • [IEx.Helpers] Allow multiple modules to be given to r/1

Logger

  • [Logger] Add Logger.put_application_level/2

Mix

  • [Mix] Add MIX_INSTALL_FORCE environment variable support
  • [Mix] Support :config and :system_env in Mix.install/2
  • [Mix] Add Mix.installed?/0
  • [Mix.Shell] Add :default option to Mix.Shell.yes?
  • [mix archive.install] Run loadconfig before building archive
  • [mix compile] Move Elixir version check to before deps are compiled, in order to give feedback earlier
  • [mix compile.elixir] Do not recompile files if their modification time change but their contents are still the same and the .beam files are still on disk
  • [mix compile.elixir] Do not recompile all Elixir sources when Erlang modules change, only dependent ones
  • [mix compile.elixir] Do not recompile Elixir files if mix.exs changes, instead recompile only files using Mix.Project or trigger a recompilation if a compiler option changes
  • [mix compile.elixir] Only recompile needed files when a dependency is added, updated or removed
  • [mix compile.elixir] Only recompile needed files when a dependency is configured
  • [mix deps] Add :subdir option to git deps
  • [mix escript.install] Run loadconfig before building escript
  • [mix format] Support :plugins in mix format that can hook into custom extensions and sigils
  • [mix format] Add Mix.Tasks.Format.formatter_for_file/2
  • [mix local.rebar] No longer support sub_dirs in Rebar 2 to help migration towards Rebar 3
  • [mix local.rebar] Support --if-missing option when installing Rebar
  • [mix local.rebar] Set REBAR_PROFILE=prod when compiling Rebar dependencies
  • [mix test] Support --profile-require=time to profile the time loading test files themselves
  • [mix test] Allow filtering modules from coverage using regex
  • [mix test] Allow the exit status of ExUnit to be configured and set the default to 2
  • [mix test] Exit with a status of 3 when coverage falls below threshold
  • [mix test] Write failed manifest when suite fails due to --warnings-as-errors
  • [mix test] Ignore MIX_TEST_PARTITION when partitions set to 1
  • [mix xref] Support multiple sinks and sources in mix xref graph
  • [mix xref] Add trace subcommand to print compilation dependencies between files
  • [mix xref] Add --fail-above option to mix xref
  • [mix xref] Add --label compile-connected to mix xref

2. Bug fixes

EEx

  • [EEx] Accept comments in EEx between do and the first clause
  • [EEx] Accept EEx expressions where -> is followed by newline

Elixir

  • [Application] Allow any expression as first argument of compile_env
  • [Application] Warn if Application.compile_env or Application.compile_env! are called without a require
  • [Code] Make sure :static_atoms_encoder in Code.string_to_quoted/2 also applies to quoted keyword keys
  • [Code] Ensure bindings with no context are returned as atoms instead of {binding, nil} in eval operations
  • [Inspect] Fix a bug when inspecting a non-binary bitstring with colors
  • [Kernel] Reject bidirectional formatting characters in strings and comments
  • [Kernel] Support escaping of terminators in uppercase sigils heredocs for consistency
  • [Kernel] Raise if __CALLER__ or __ENV__ or __STACKTRACE__ are used in match
  • [Kernel] Improve error message on invalid argument for byte_size from binary concat
  • [Kernel] Raise when aliasing non-Elixir modules without :as
  • [Kernel] Allow unquote_splicing inside %{...} without parens
  • [Kernel] Ensure that waiting on a struct expansion inside a typespec is correctly tracked as waiting time in the compiler
  • [Kernel] Correctly parse the atom . as a keyword list key
  • [Kernel] Do not leak variables from the first generator in with and for special forms
  • [Kernel] Fix column number on strings with NFD characters
  • [Kernel] Fix a bug where a combination of dynamic line in quote with unquote of remote calls would emit invalid AST metadata
  • [OptionParser] Validate switch types/modifiers early on to give more precise feedback
  • [Protocol] Add defdelegate to the list of unallowed macros inside protocols as protocols do not allow function definitions
  • [Protocol] Warn if @callback, @macrocallback and @optional_callbacks are defined inside protocol
  • [Protocol] Ensure protocol metadata is deterministic on consolidation
  • [Range] Always show step when range is descending
  • [String] Update Unicode database to version 14.0
  • [URI] Only percent decode if followed by hex digits (according to https://url.spec.whatwg.org/#percent-decode)
  • [Version] Ensure proper precedence of and/or in version requirements

ExUnit

  • [ExUnit] Fix formatter and counters from ExUnit.run/0 to consider all tests in a module whenever if a module's setup_all fails
  • [ExUnit] Allow doctests newlines to be terminated by CRLF

IEx

  • [IEx] Fix the loss of .iex.exs context after a pry session
  • [IEx] Stop evaluator before exiting IEx server to avoid evaluators leaking

Logger

  • [Logger] Raise clear error message for invalid :compile_time_purge_matching configuration
  • [Logger] Fix a bug where Logger would not reset its discard counter under some scenarios

Mix

  • [mix compile.elixir] Track transitive runtime dependencies coming from local/path dependencies
  • [mix compile.elixir] Recompile file if @external_resource is deleted
  • [mix compile.elixir] Print number of compiling files on all compiler cycles. This will make the Compiling N files (.ex) show up multiple times if necessary
  • [mix deps] Raise if local dep is unavailable while compiling
  • [mix deps.unlock] Fix blank output when unlocking a dependency that is not locked
  • [mix local.install] Do not respect MIX_DEPS_PATH for install commands
  • [mix release] Improve release scripts by making sure shell errors cascade (this is done by avoiding exporting and defining variables in a single step)
  • [mix release] Do not boot release if RELEASE_COOKIE is empty
  • [mix release] Allow releases running as a daemon to be restarted
  • [mix release] Raise proper error message when non-serializable values are in configs
  • [mix test] Fix coverage engine to also tag case, cond, and receive branches where the right side is a literal

3. Soft-deprecations (no warnings emitted)

Elixir

  • [Code] Environment options in Code.eval_quoted/3 and Code.eval_string/3, such as :aliases and `:t...
Read more

v1.13.0-rc.1

16 Nov 20:48
Compare
Choose a tag to compare
v1.13.0-rc.1 Pre-release
Pre-release

Checksums

  • Precompiled.zip SHA1: 8878e702736ccd1d9d3ed4ec013abd299c885bad
  • Precompiled.zip SHA512: 3fbdddcac36f96e33c3b5d6eecdfe4e9adcfc9d4f3dc5dd1fbb6803c673f28aea8d210ced450b7786f861abdcb1707f98fff1ec41278e9ac1cd2d484f7de6bc5
  • Docs.zip SHA1: 7a64deae28eb719f634cb6118402b9e38da376e1
  • Docs.zip SHA512: 2a0ce6a19edd795fc5eb0f1c529ae7a3680713f6a1c225d1e7acb5de032b10a4d6c67a9ee1c31e9dcc935e5b040df02fe2ad36a8ec7272c6a538fc012dee5b6e

v1.13.0-rc.0

01 Nov 21:26
Compare
Choose a tag to compare
v1.13.0-rc.0 Pre-release
Pre-release

Checksums

  • Precompiled.zip SHA1: 5f6846da1f85c78500ee86240b412aec76c6fe77
  • Precompiled.zip SHA512: 10e5e40c6a1a3cd338538f4fb1e1fa6bfcce22157c1300b6779f27ba22b6ed8b1d5a60e0aa02efa6365c956f5181e4d9e80eb15b6137a03294f0e2b28fcc2391
  • Docs.zip SHA1: f7099c1646c8c5e8747e226452115c5f7e1d1a39
  • Docs.zip SHA512: 69af920c03e61c0310cc2964c66a332e2498dab62c1c314eeabff75617ab9fbe41c16124b41abbcd62bdae955d6f619cd8902336705dedd39686560c5186f05d

v1.12.3

05 Sep 08:30
Compare
Choose a tag to compare

1. Bug fixes

Elixir

  • [Code] Make sure that bindings in the default context returned by Code.eval_* functions are not returned as tagged tuples
  • [Kernel] Do not crash when handling ambiguity errors
  • [Range] Still match on old range patterns throughout the stdlib

IEx

  • [IEx.Autocomplete] Do not error autocompletion with module attribute

Mix

  • [Mix] Rename inconsistent :exit_code option to :exit_status on Mix.raise/2

Checksums

  • Precompiled.zip SHA1: db3c8a5470dee211168707c432a1f8002960e966
  • Precompiled.zip SHA512: db092caa32b55195eeb24a17e0ab98bb2fea38d2f638bc42fee45a6dfcd3ba0782618d27e281c545651f93914481866b9d34b6d284c7f763d197e87847fdaef4
  • Docs.zip SHA1: c49003f6252dd2e892c1897f06fe357bbf360e08
  • Docs.zip SHA512: 3e3f2b39546025f25716bb265cc53861ab260db2598f2a91183da3389b9902e189cbd6b409e178a917e59e533c630e372d9d2c8721a8576951700ec8dbfa1d8f

v1.12.2

01 Jul 16:36
Compare
Choose a tag to compare

1. Bug fixes

Elixir

  • [Kernel] Ensure deprecated macros emit warnings

Mix

  • [mix deps] Ensure unconstrained rebar deps generate valid mix specifications

2. Enhancements

Elixir

  • [elixirc] Change the output of --profile time to make it easier to detect outliers
  • [Application] Do not add compile time deps on args to Application.compile_env/2 and Application.compile_env!/2
  • [Enum] Optimize Enum.into/3 and Map.new/2

Mix

  • [mix compile] Compile most recently changed files first
  • [mix compile, mix run, mix test] Speed up the time taken to load dependencies. This should make the usage of Mix inside projects quite more responsive

Checksums

  • Precompiled.zip SHA1: 051c2728bfd679d1d6f74d11f25ca679491cd6b4
  • Precompiled.zip SHA512: 38eb2281032b0cb096ef5e61f048c5374d6fb9bf4078ab8f9526a42e16e7c661732a632b55d6072328eedf87a47e6eeb3f0e3f90bba1086239c71350f90c75e5
  • Docs.zip SHA1: a3573b1a759944669dec951b38d3a978e17ba535
  • Docs.zip SHA512: ed1d9814e53a7d8abb13354f1772881640f84cb55dd6f4fdf24465b871aae5561d0b64627b2cba03dd00494c1822ce1108956b02cdaa230d41ce7e5c6ede1222