Package Release Info


Update Info: Base Release
Available in Package Hub : 15 SP1





Change Logs

* Wed Mar 13 2019
- Add requires Erlang >= 20
* Tue Feb 19 2019
- Elixir 1.8.1
  * Bug fixes
    [Float] Fix rounding for subnormal floats
    [IEx] Fix IEx.pry crash when IEx isn't running
    [IEx.CLI] Add IEx warning when using --remsh with "dumb" terminal
    [IEx.Helpers] Sort results by arity on h helper
    [mix compile] Do not include optional dependencies in extra applications as it is
    incompatible with shared deps in umbrellas
* Mon Jan 28 2019
- Elixir 1.8.0
  * Elixir v1.8 comes with many improvements at the infrastructure level, improving compilation time,
    speeding up common patterns, and adding features around introspection of the system.
    See full changelog at
  * Enhancements
    [EEx] Optimize the default template engine to compile and execute more efficiently
    [Calendar] Add Calendar.TimeZoneDatabase and a Calendar.UTCOnlyTimeZoneDatabase implementation
    [Calendar] Add callbacks day_of_year/3, quarter_of_year/3, year_of_era/1, and day_of_era/3
    [Code.Formatter] Preserve user's choice of new line after most operators
    [Date] Add Date.day_of_year/1, Date.quarter_of_year/1, Date.year_of_era/1, and Date.day_of_era/1
    [DateTime] Add DateTime.from_naive/3,, and DateTime.shift_zone/3
    [File] Allow :raw option in File.exists?/2, File.regular?/2, and File.dir?/2
    [File] Allow POSIX time as an integer in File.touch/2 and File.touch!/2
    [Inspect] Allow Inspect protocol to be derivable with the :only/:except options
    [Kernel] Do not propagate counters to variables in quote inside another quote
    [Kernel] Warn on ambiguous use of :: and | in typespecs
    [Kernel] Add :delegate_to @doc metadata tag when using defdelegate
    [Kernel] Improve compile-time building of ranges via the .. operator
    [Kernel] Compile charlist interpolation more efficiently
    [Kernel] Add floor/1 and ceil/1 guards
    [Kernel.SpecialForms] Add :reduce option to for comprehensions
    [List] Add List.myers_difference/3 and List.improper?/1
    [Macro] Add Macro.struct!/2 for proper struct resolution during compile time
    [Map] Optimize and merge nested maps put and merge operations
    [Range] Add Range.disjoint?/2
    [Record] Reduce memory allocation when updating multiple fields in a record
    [Registry] Allow associating a value on :via tuple
    [String] Add String.bag_distance/2
    [Task] Add $callers tracking to Task - this makes it easier to find which process spawned a task and use it for tracking ownership and monitoring
    [ExUnit] Add ExUnit.after_suite/1 callback
    [ExUnit.Assertions] Show last N messages (instead of first N) from mailbox on assert_receive fail
    [IEx.Helpers] Add port/1 and port/2
    [IEx.Server] Expose for custom IEx sessions with the ability to broker pry sessions
    [Mix] Add and to control dependency management per target
    [Mix.Project] Add :depth and :parents options to deps_paths/1
    [mix archive.install] Add a timeout when installing archives
    [mix compile] Include optional dependencies in :extra_applications
    [mix escript.install] Add a timeout when installing escripts
    [mix format] Warn when the same file may be formatted by multiple .formatter.exs
    [mix test] Allow setting the maximum number of failures via --max-failures
    [mix test] Print a message instead of raising on unmatched tests inside umbrella projects
  * Bug fixes
    [Calendar] Allow printing dates with more than 9999 years
    [Exception] Exclude deprecated functions in "did you mean?" hints
    [Float] Handle subnormal floats in Float.ratio/1
    [Kernel] Remove Guard test tuple_size(...) can never succeed Dialyzer warning on try
    [Kernel] Expand operands in size*unit bitstring modifier instead of expecting size and unit to be literal integers
    [Kernel] Do not deadlock on circular struct dependencies in typespecs
    [Kernel] Raise proper error message when passing flags to the Erlang compiler that Elixir cannot handle
    [Kernel] Do not leak variables in cond clauses with a single matching at compile-time clause
    [NaiveDateTime] Do not accept leap seconds in builder and parsing functions
    [String] Fix ZWJ handling in Unicode grapheme clusters
    [StringIO] Handle non-printable args in StringIO gracefully
    [IEx.Helpers] Use typespec info (instead of docs chunk) and properly format callbacks in b/1
    [Logger] Allow Logger backends to be dynamically removed when an application is shutting down
    [mix compile] Ensure changes in deps propagate to all umbrella children - this fix a long standing issue where updating a dependency would not recompile all projects accordingly, requiring a complete removal of _build
    [mix compile] Avoid time drift when checking and updating compiler manifest files
    [mix] Respect the :only option between umbrella siblings
    [mix compile.protocols] Reconsolidate protocols if local dependencies are stale
    [mix deps] Properly mark dependencies with different :system_env as diverged
    [mix new] Use --module value when setting up filenames
* Sun Dec 30 2018
- Use %{_rpmmacrodir} for macros.elixir
* Wed Dec 19 2018
- Set License to Apache-2.0.
  I have not found where did ErlPL come from.
* Tue Dec 11 2018 Jan Engelhardt <>
- Improvements to description grammar.
* Mon Dec 10 2018
- Use %license for LICENSE
* Thu Nov 08 2018
- Elixir 1.7.4
  * Bug fixes
    [Calendar] Fix for converting from negative iso days on New Year
    in a leap year
    [Kernel] Ensure @spec, @callback, @type and friends can be read
    [Module] Avoid warnings when using Module.eval_quoted in the middle of
    existing definitions
    [mix] Unload previous archive versions before building
    [mix format] Expand paths so mix format path\for\windows.ex works
    [mix test] Ensure that --cover displays correct coverage in an umbrella app
- Elixir 1.7.3
  * Bug fixes
    [ExUnit.Assertions] Do not attempt to expand try/1 as it is a special form
    [mix] Do not include applications with runtime: false as a runtime
    dependency for applications coming from Hex
    [mix] Do not include applications with runtime: false as a
    runtime dependency for applications coming from Hex
- Elixir 1.7.2
  * Bug fixes
    [Kernel] Do not emit warnings for repeated docs over different clauses
    due to false  positives
    [mix compile] Properly mark top-level dependencies as optional and as
    This fixes a bug where Mix attempted to start optional dependencies of a
    package when those optional dependencies were not available
    [mix compile] Avoid deadlock when a config has a timestamp later
    than current time
    [mix test] Do not fail suite if there are no test files
- Elixir 1.7.1
  * Bug fixes
    [Calendar] Work-around a Dialyzer bug that causes it to loop for a
    long time, potentially indefinitely
- Elixir 1.7
  Elixir v1.7 is the last release to support Erlang/OTP 19. We recommend
  everyone to migrate to Erlang/OTP 20+.
  Full release notes:
* Sun Jul 01 2018
- Elixir 1.6.6
  This release supports Erlang/OTP 21.0 by removing all warnings and by
  properly supporting the new Erlang logger module.
  * Bug fixes
    [Base] Do not raise when finding bad digits in Base.decode32! with
    `case: :mixed`
    [Code] Preserve the user's choice when fn is followed by a newline and it
    has only a single clause
    [DynamicSupervisor] Properly account for restarting children in the
    `:max_children` configuration
    [String] Add performant impl for string upcase/downcase :ascii mode
    [Task.Supervisor] Fix type spec for start_child/4
    [Logger] Do not crash truncation when truncate is set to infinity
    [mix format] Match files starting with dot
- Elixir 1.6.5
  This release supports Erlang/OTP 21.0-rc by removing all warnings and by
  properly redirecting logger output. Note it is not guaranteed it will support
  Erlang/OTP 21.0 final.
  Bug fixes
    [Code] Preserve the user's choice in the formatter on parens call with next
    break fits
    [Code] Preserve the user's choice in the formatter on calls without parens
    when we have one argument per line
    [Code] Fix formatting when there is a tilde in the first element of a
    [Kernel] Support specsdiff flag on __info__ spec clauses
    [Kernel] Do not exclude hygienic vars in defguard
    [Kernel.SpecialForms] Mark for comprehensions as generated to avoid
    dialyzer warnings
    [Macro] Make sure Macro.to_string/2 emits valid quoted expressions
    [Task] Support :infinity timeout on Task.yield_many/2
    [Task.Supervisor] Do not crash spawning supervised tasks when the parent
    process is dead
    [URI] Fix parsing of URIs with trailing ?
* Thu Apr 12 2018
- Elixir 1.6.4
  * [Code.Formatter] Do not double escape quoted keyword list identifiers
  * [Kernel] Properly support into: binary in Erlang/OTP 20.3
- Elixir 1.6.3
  * [Code.Formatter] Support comments in the middle of pipelines, `when` and
    `|` expressions
  * [Code.Formatter] Consider commas when breaking groups
  * [Code.Formatter] Ensure proper precedence between & and operators
  * [Code.Formatter] Consider .formatter.exs when formatting stdin
  * [Logger.Translator] Ensure logger doesn't crash when reporting named
- Elixir 1.6.2
  See full changelog at
- Elixir 1.6.1
  See full changelog at
- Elixir 1.6.0
  See full changelog at
- Elixir 1.5.3
  See full changelog at
* Wed Nov 01 2017
- updated to 1.5.2
* Sun Aug 06 2017
- Elixir 1.5.1
  Release notes:
- Elixir 1.5.0
  Elixir v1.5 includes new features, enhancements, and bug fixes. While Elixir
  v1.4 focused on tools for concurrency and scalability, Elixir v1.5 brings
  many improvements to the developer experience and quality of life. As we will
  see, many of those are powered by the latest Erlang/OTP 20. This is also the
  last Elixir release that supports Erlang/OTP 18.
  Release notes:
* Wed Jul 05 2017
- Elixir v1.4.5
  This version includes changes that make Elixir fully compatible with
  Erlang/OTP 20.
  1. Enhancements
    [Logger] Handle changes to crash reports in OTP 20
  2. Bug fixes
    [DateTime] Fix DateTime.from_iso8601/2 when offset has no colon
    [Registry] Do not leak EXIT messages on Registry.dispatch/3
* Thu May 18 2017
- Elixir v1.4.4
  1. Bug fixes
    [Map] Fix regression on struct update syntax
- Elixir v1.4.3
  Note: This release had a regression that has been immediately fixed on
  version 1.4.4.
  This version includes changes that make Elixir fully compatible with
  Erlang OTP 20-rc.1.
  1. Enhancements
    [Kernel] Improve compilation time for modules with many clauses
    [Map] Warn when attempting to override __struct__ key
    [Regex] Add recompile/1 and recompile!/1 to ease transition to OTP 20
    for archives and stored regexes
    [Logger.Translator] Handle OTP 20 GenServer log messages
    [mix compile] Recompile projects if OTP version changes
  2. Bug fixes
    [Kernel] Fix code generation when non-binary bitstrings are in AST
    [Record] Properly escape fields passed to defrecord
    [ExUnit.Diff] Do not fail when comparing maps with nil or boolean keys
    [IEx.Helpers] Do not log exits on IEx.Helpers.c/2 failures
    [mix archive.install] Detect proper path on URLs with query strings
    [mix loadpaths] Do not assume all paths in loadpaths exist
* Mon Feb 27 2017
- Elixir v1.4.2
  1. Bug fixes
    [EEx] Support middle expressions on trim mode
    [Calendar] Correct typo on Calendar types
    [Kernel] Ensure redefined functions point to the proper source
    [OptionParser] Add `:allow_nonexistent_atoms` to support unsafe behaviour
    prior to v1.4
    [Stream] Allow consuming multiple items from suspended enumerable in
    [String] Incorporate new grapheme rules in Unicode 9
    [IEx.Autocomplete] Do not crash on aliases which are not known at compile
    [Mix.Umbrella] Ensure umbrella projects can depend on other umbrella
    [Mix.Archive] Ensure previous archives with .ez extension are deleted
- Elixir v1.4.1
    1. Bug fixes
    [Kernel] Remove warning when making private functions overridable
    [Path] Ensure `Path.join/1` returns strings for lists of one element
    [Regex] Ensure `Regex.escape/1` also escapes `-`
    [IEx] Disable ANSI detection for powershell to avoid false positives
    [Mix.Make] Run `make clean` for ``
    [Mix.Rebar] Support all of rebar3 dependency package declaration
    [Mix.Rebar] Only pass overrides from parent to child in Rebar dep
* Fri Jan 06 2017
- update to v1.4.0
  1. Enhancements
    [Calendar] Add,,
    [Calendar] Support NaiveDateTime.add/3 and NaiveDateTime.diff/3 for
    adding seconds (up to microseconds) as well as the difference between
    two NaiveDateTimes in seconds (up to microseconds)
    [Calendar] Add Date.leap_year?/1 and Date.day_of_week/1
    [Calendar] Ensure Date, Time and NaiveDateTime APIs work with any struct
    that provides the same set of fields as their respective struct. For
    example, a NaiveDateTime can be given to Date since it contains a
    superset of the fields in the Date struct
    [Enum] Add Enum.map_every/2 that invokes the given function with every
    nth item
    [Enum] Add min/2, max/2, min_max/2, min_by/3, max_by/3, and min_max_by/3
    that allow a function specifying the default value when the enumerable
    is empty
    [Enum] Introduce to zip multiple entries at once
    [Float] Introduce Float.ratio/1 that returns a tuple with the numerator
    and denominator as integers to retrieve the given float
    [GenServer] Log warn on default handle_info/2 implementation
    [Inspect] Support syntax coloring via the :syntax_color option
    [Integer] Integer.digits/2 now accepts negative integers
    [Integer] Add Integer.mod/2 and Integer.floor_div/2
    [IO] Add :label option to IO.inspect/2 to help distinguish multiple
    IO.inspect/2 calls.
    [Kernel] Recognize merge conflict markers in source and provide a
    readable error message
    [Kernel] Warn on unused module attributes
    [Kernel] Improve compiler message on unexpected end of line
    [Kernel] Raise BadBooleanError when a non-boolean is given on the
    left-hand side of and/or
    [List] Add List.pop_at/3
    [List] Add List.myers_difference/2
    [OptionParser] Expand multi-letter aliases in OptionParser
    [Process] Add Process.send_after/4
    [Process] Improve error messages on Process.register/2 errors
    [Registry] Add a local, decentralized and scalable key-value process storage
    [Stream] Add Stream.map_every/2 that invokes the given function with
    every nth item
    [Stream] Introduce to lazily zip multiple entries at once
    [String] Update to Unicode 9.0.0
    [Task] Add Task.async_stream/3 and Task.async_stream/5 as well as the
    supervised versions Task.Supervisor.async_stream/4 and
    [URI] Allow 0 as URI scheme default port
    [ExUnit.Diff] Use red or green background for whitespace-only diffs
    [ExUnit.Doctest] Allow inspected structures with multiples lines and
    unicode characters in the doctest result
    [ExUnit.Formatter] Replace lhs/rhs with left/right in the formatter for
    [IEx.Autocomplete] Stop appending a trailing dot when autocompleting
    modules in IEx
    [IEx.Autocomplete] Support autocompletion for structs
    [IEx.Autocomplete] Improve IEx autocomplete to support navigating map
    atom keys
    [IEx.Helpers] c/1 now compiles in memory by default to avoid common
    issue where .beam files remain at projects root directory
    [IEx.Helpers] Add info about protocols in i/1
    [IEx.Server] Support interrupting IEx evaluation through the Ctrl+G prompt
    [mix archive] Compress archive files built by mix archive as they are
    now unzipped during installation
    [mix archive] Install from SCM
    [mix compile] Automatically infer the list of applications for Mix
    [mix cmd] Add the ability to specify one or more apps in mix cmd
    [mix deps] Warn if there are non-applications in the apps directory for
    umbrella projects
    [mix deps] Add warning for invalid paths on mix deps.clean
    [mix deps] Add Mix.Project.apps_paths that returns the paths to children
    applications in umbrella projects
    [mix deps] Add MIX_REBAR environment variable for overriding local rebar
    [mix escript] Install from SCM
    [mix new] Check directory existence in mix new and ask how to proceed if
    one exists
    [mix new] Applications built with the --sup flag now have an individual
    module to work as application callback
    [mix test] Add --formatter option to mix test
    [mix xref] Provide "did you mean?" suggestions for mix xref
  2. Bug fixes
    [Access] Do not accept nils in Access.key/1 and Access.key/2 in favor of
    explicit default values (or Access.key!/1 if you expect the key to
    always be available)
    [Float] Avoid multiple roundings in Float.ceil/2, Float.floor/2 and
    [Kernel] Don't crash in macro_exported?/3 when dealing with Erlang
    [Kernel] Ensure locals calls are rewritten when calling a local function
    or macro from inside a module
    [Kernel] Annotate the context for variables as zero-arity funs in quotes
    [Kernel.SpecialForms] Ensure comprehensions with guards and filters keep
    proper ordering,
    [Kernel.SpecialForms] Produce meaningful warning when with's else
    clauses have no effect
    [Macro] Wrap fn calls in parens in Macro.to_string/2
    [Macro] Do not print aliases as keys inside keyword lists in
    [OptionParser] Support options in OptionParser.to_argv/2 to ensure
    :count switches are correctly encoded
    [Stream] Ensure Stream.take/2 does not consume next element on :suspend
    [String] Fix infinite recursion in String.replace_leading/3 and
    String.replace_trailing/3 when given an empty string
    [Task] Fix Task.shutdown/1,2 infinite block when task has no monitor
    [Task] Ensure task cannot link after parents unlinks
    [ExUnit] Fix a race condition in assert_receive where we would assert a
    message was not received but show it in the list of messages when the
    message is delivered right after the timeout value
    [IEx.Helpers] Purge consolidated protocols before and after recompile/0
    [Mix.Dep] Use gmake on FreeBSD instead of make when compiling make
    [Mix.Project] Only copy files from source when they're newer than
    destination (for Windows machines)
    [Mix.Task] Ensure non-recursive tasks inside umbrella are reenabled
  3. Soft deprecations (no warnings emitted)
    [Enum] Enum.partition/2 has been deprecated in favor of Enum.split_with/2
    [System] Deprecate plural time units in favor of singular ones to align
    with future Erlang releases
    [ExUnit] Using GenEvent to implement ExUnit formatters is deprecated.
    Please use the new GenServer based formatters instead
  4. Deprecations
    [Access] Access.key/1 is deprecated due to erratic behaviour for missing
    keys, please use Access.key/2 instead with proper default values
    [Behaviour] The Behaviour module is deprecated. Callbacks may now be
    defined directly via the @callback attribute
    [Enum] Deprecate Enum.uniq/2 in favor of Enum.uniq_by/2
    [Float] Float.to_char_list/2 and Float.to_string/2 are deprecated (use
    the :erlang functions if such conversions are desired)
    [Kernel] Deprecate support for making private functions overridable.
    Overridable functions must always be public as they must be contracts
    [Kernel] Warn if variable is used as a function call
    [OptionParser] Deprecate aliases with multiple letters, such as -abc
    [Set] Deprecate the Set module
    [Stream] Deprecate Stream.uniq/2 in favor of Stream.uniq_by/2
    [IEx.Helpers] import_file/2 is deprecated in favor of
    [Mix.Utils] underscore/1 and camelize/1 are deprecated
* Sun Oct 09 2016
- update to v1.3.4
  1. Bug fixes
    [Kernel] Ensure the compiler does not generate unecessary variable
    bindings inside case statements. This improves the code emitted and make
    sure "unused variable warnings" are not mistakenly silenced
    [Kernel] Move raise checks to runtime to avoid crashing cover on Erlang 19.1
    [Protocol] Do not emit warnings when using protocols on opaque types
    [ExUnit.CaptureLog] Flush Erlang's :error_logger before capturing to
    avoid mixed messages
* Fri Sep 23 2016
- update to v1.3.3
  1. Enhancements
    [DateTime] Support negative integer in DateTime.from_unix/2
    [Kernel.LexicalTracker] Do not consider remote typespecs as a compile-time dependency
    [Kernel.ParallelCompiler] Do not emit deadlock messages when the process is waiting on itself
    [Kernel.Typespec] Mark struct update syntax as generated to avoid false positives from dialyzer
    [ExUnit] Make ExUnit server timeout configurable
    [Logger] Use :ansi_color if one is available in metadata
    [Mix] Add support for the :sparse option in Mix.SCM.Git
    [Mix] Skip dependendency loading if MIX_NO_DEPS is set to 1
  2. Bug fixes
    [System] Use NUL instead of /dev/null on Windows when building System.build_info
    [IEx.Autocomplete] Resolves issue with autocompletion on structs not working
    [Mix] Also store external resources that are not part of the current working directory in compilation manifest
    [Mix] Always include the compiled file source in manifests
* Sat Jul 30 2016
- update to v1.3.2
  1. Enhancements
    [Kernel] Support guards in else clauses in with
    [Mix] Add MIX_NO_DEPS env var for disabling dep loading. Used for third-party scripts and tools like Nix package manager
    [Mix] Add mix test --listen-on-stdin that automatically reruns tests on stdin
    [Mix] Disable --warnings-as-errors when compiling dependencies
    [Mix] Add --filter option to mix deps.unlock to unlock only matching dependencies
  2. Bug fixes
    [Enum] Return nil if enumerable halts in Enum.find_index/3
    [Kernel] Do not attempt to load modules that have not been required when invoking regular functions, otherwise this invalidates the @compile {:autoload, false} directive.
    [Mix] Ensure missing protocol dependencies are discarded in umbrella projects with shared build
    [ExUnit.Diff] Ensure no leading or trailing when diffing some maps
* Thu Jun 30 2016
- update to v1.3.1
  1. Enhancements
    [IEx.Helpers] Add import_file_if_available for importing files only if
    they are available
    [IEx.Helpers] Add import_if_available for importing modules only if they
    are available
  2. Bug fixes
    [Kernel] Ensure structs can be expanded in dynamic module names
    [Kernel] Ensure aliases warnings are not accidentally discarded when the
    same module is imported
    [Kernel.ParallelCompiler] Ensure two modules with cyclic struct
    dependencies cannot run into a deadlock when compiling
    [Kernel.Typespec] Support module attributes in remote types
    [Module] Do not expect stacktraces to be always present when dispatching
    to locals during the module compilation
    [IEx.Helpers] Fix h helper for operators
    [Mix] Do not load modules for xref purposes, instead use BEAM info
    [Mix] Ensure deps.check does not check archives (that's done in loadpaths)
    [Mix] Validate application properties before traversing them
    [Mix] Check for proper Makefile when compiling on Windows
    [Mix] Enforce space after comma in mix do
Version: 1.11.3-bp153.1.16
* Mon Jan 11 2021 Sven Marquardt <>
- Elixir 1.11.3
  * Enhancements
  [Macro] Add Macro.unique_var/2 and Macro.generate_unique_arguments/2
  * Bug fixes
  [Code] Do not raise when checking for operator ambiguity when :static_atoms_encoder is set in Code.string_to_quoted
  [Kernel] Emit undefined function warnings from with
  [Kernel] Do not fail type checking when literals are used in guards
  [Module] Do not warn for attributes used in @after_compile
  [Record] Make sure nested record names do not clobber each other
  [ExUnit.Assertions] Do not crash if there are macros and module attributes on the left side of ++
  [IEx.Helpers] Do not use Unicode chars if ANSI is disabled
  [mix deps.compile] Fix compatibility with rebar v3.14
  [mix release] Do not use private ram_file:compress/1
  [mix xref] Do not crash when retrieving calls for modules in memory
* Wed Nov 04 2020 Sven Marquardt <>
- Elixir 1.11.2
  * Bug fixes
  [Code] Do not crash when getting docs for missing `erts` appdir
  [Kernel] Raise meaningful error if `:erlang.is_record` is used in guards
  [Kernel] Prune tracers when fetching `__ENV__` inside functions
  [mix] Fix regression where aliases could not call themselves recursively
  [mix compile] Do not discard tracers that are set programatically
* Mon Oct 19 2020 Sven Marquardt <>
- Elixir 1.11.1
  * Bug fixes
  [Code] Ignore tracers if lexical tracker is dead or explicitly nil when evaling code with an environment
  [GenServer] Do not show warning when using `super` in `GenServer.child_spec/1`
  [Kernel] Do not crash when :reduce is set to `nil` in comprehensions
  [Kernel] Fix a scenario where undefined function warnings were not being emitted
  [IEx.Helpers] Properly handle tags inside typespec when showing Erlang docs
  [Logger] Do not deadlock Logger if handler crashes on sync mode
  [Mix] Add inet6 fallback to Mix usage of httpc
  [mix] Do not list apps that do not match the current target
* Mon Oct 19 2020 Sven Marquardt <>
- Elixir 1.11.0
  * Enhancements
  [EEx] Track column information in EEx templates when enabled in the compiler
  [EEx] Show column information in EEx error messages
  [EEx] Support `:indentation` option when compiling EEx templates for proper column tracking
  [Access] Add `!/1`
  [Calendar] Add `Calendar.strftime/3` for datetime formatting
  [Calendar] Add linear integer representations to Calendar modules:
    `Date.from_gregorian_days/2`, `Date.to_gregorian_days/1`, `NaiveDateTime.from_gregorian_seconds/3`,
    and `Time.to_seconds_after_midnight/1`
  [Calendar] Add `new!` to Date/Time/NaiveDateTime/DateTime (`new` has also been added to `DateTime` for completeness)
  [Calendar] Support custom starting day of the week in `Date.day_of_week/2`
  [Calendar] Add `Date.beginning_of_month/1` and `Date.end_of_month/1`
  [Calendar] Add `Date.beginning_of_week/2` and `Date.end_of_week/2`
  [Code] Add `:column` to `Code.string_to_quoted*/2`
  [Code] Add `Code.can_await_module_compilation?/0` to check if the parallel compiler is enabled
    and it can await for other modules to be compiled
  [Config] Support `config_env/0` and `config_target/0` in `config` files
  [Config] Allow `import_config` to be disabled for some configuration files
  [Enum] Allow a sorting function on `Enum.min_max_by/3,4`, including the new `compare/2` conventions
  [Kernel] Add `is_struct/2` guard
  [Kernel] Add `is_exception/1` and `is_exception/2` guards
  [Kernel] Support `map.field` syntax in guards
  [Kernel] Add `+++` and `---` with right associativity to the list of custom operators
  [Kernel] Warn if a variable that looks like a compiler variable (such as `__MODULE__`) is unused
  [Kernel.ParallelCompiler] Report individual file compilation times when `profile: :time` is given
  [Kernel.ParallelCompiler] Improve precision of `:long_compilation_threshold` so it takes only compilation times into
    account (and not waiting times)
  [Registry] Add `Registry.delete_meta/2`
  [Task] Add `Task.await_many/2`
  [ExUnit] Add support for coloring on Windows 10 consoles/shells
  [ExUnit] Add `ExUnit.fetch_test_supervisor/0`
  [ExUnit] Add `@tag :tmp_dir` support to ExUnit. The temporary directory is automatically created and pruned before each test
  [ExUnit] Add file and line to ExUnit's `--trace`
  [ExUnit.Assertion] Allow receive timeouts to be computed at runtime
  [ExUnit.Case] Add `register_test/6` to speed up compilation of custom tests
  [ExUnit.Doctest] Allow users to add tags to doctests
  [IEx] Add support for coloring on Windows 10 consoles/shells
  [IEx.Helpers] Show docs from Erlang modules that have been compiled with the docs chunk
  [Logger] Add `notice`, `critical`, `alert`, and `emergency` log levels
  [Logger] Support structured logging by logging maps or keyword lists
  [Logger] Allow level to be set per module with `Logger.put_module_level/2`
  [Logger] Include `erl_level` in Logger's metadata
  [mix] Add `MIX_BUILD_ROOT` to config `_build` dir
  [mix] Introduce `MIX_XDG` as a simpler mechanism to opt-in to the XDG specification
  [mix] Allow requirements for a Mix task to be listed via the `@requirements` module attribute
  [mix] Allow optional dependencies to be defined in `:extra_applications` and `:applications`
  [mix app.config] Add new `mix app.config` task that compiles applications and loads runtime configuration
  [mix archive.install] Support `--repo` option on Hex packages
  [mix compile] Support the `__mix_recompile__?/0` callback for custom behaviour on when Mix should recompile a given
  [mix compile.elixir] Mark modules for path dependencies as "Export dependencies" if they changed but their public
    interface is the same
  [mix compile.elixir] Track application boundaries in the Elixir compiler.
    If you invoke code from Erlang or Elixir standard libraries and you don't depend on the proper
    applications, a warning will be emitted. A warning will also be emitted if you invoke code from
    an umbrella sibling that you don't depend on - effectively forbidding cyclic dependencies between
  [mix deps] Sort the dependencies alphabetically before printing
  [mix deps] Use `origin/HEAD` as the default Git ref in dependencies
  [mix deps] Redact Git `username`/`password` in output log
  [mix deps] Support rebar3's `git_subdir` resource type
  [mix deps.compile] Allow local deps to be skipped on `mix deps.compile`
  {mix deps.unlock] Print which dependencies get unlocked when using the `--unused` flag
  [mix escript.install] Support `--repo` option on Hex packages
  [mix new] Add `@impl` to application generated by `mix new --sup`
  [mix release] Enable overriding `sys.config` location via `RELEASE_SYS_CONFIG` env var
  [mix release] Boot a release under configuration in interactive mode and then swap to embedded mode
    (if running on Erlang/OTP 23+)
  [mix release] Add `rel_templates_path` to configure the source of template files such as "", "vm.args.eex"
    and "overlays"
  [mix release] Allow some chunks to be kept in the `:strip_beams` config
  [mix test] Allow `:ignore_modules` inside `:test_coverage` option
  [mix test.coverage] Add `mix test.coverage` that aggregates coverage results from umbrellas and OS partitioning
  [mix xref] Make the `--label` option for `mix xref graph` transitive by default and add `--only-direct` for only
    direct dependencies
  [mix xref] Add `--format cycles` support for `mix xref graph`
  [mix xref] Add support to `mix xref graph` for using `--source` and `--sink` at the same time
  * Bug fixes
  [EEx] Make trimming behaviour via the `:trim` option more consistent
  [Application] Warn if non-atom keys are given to `put_env`, `get_env`, `fetch_env`, and `delete_env`
  [Code] Do not send language keyword through the `:static_atoms_encoder` in `Code.string_to_quoted`
  [Kernel] Validate values given to `:line` in quote to avoid emitting invalid ASTs
  [Kernel] Report the correct line number when raising inside a macro
  [Kernel] Fix an issue where `elixirc` would not accept paths with backslash (`\`) separators on Windows
  [Kernel] Properly parse `&//2` (i.e. the capture of the division operator)
  [Kernel] Raise `CompileError` when trying to define reserved types
  [Kernel] Improve compiler error message when using `|` in a `def` signature
  [Kernel] Improve error message when trying to use invalid list operators in guards
  [Kernel.SpecialForms] Add `|/2` to the list of special forms to avoid inconsistent behaviour on overrides
  [Keyword] Enforce keys to be atoms in `Keyword.keys/1`
  [Record] Keep lexical ordering when creating records
  [Registry] Do not crash when a process with key-value has been registered using `:via` and it fails to start on `init`
  [URI] `URI.decode_query/2` emits an empty string for parameters without values, according to
    [URL's living standard]( - note this behaviour i
    s not specified in the spec implemented by the URI module, so the living standard was chosen
  [Version] Add defaults and enforce keys in `Version` struct
  [ExUnit.CaptureIO] Fix race condition where a dead capture would still be considered as active
  [ExUnit.Diff] Do not crash when failing to eval/inspect struct
  [ExUnit.Diff] Properly diff numbers in respect to `==` and `===` operators
  [IEx] Fix tokenizer emitting repeated warnings in the REPL
  [IEx] Ensure `--dot-iex` is preserved when restarting the evaluator and after shell respawn
  [IEx.Pry] Ensure `IEx.pry` can be triggered more than twice when invoked from the same process
  [mix cmd] Fix a bug where only the first --app option would be executed
  [mix compile] Fix an issue where new protocol implementations would not propagate when running `mix compile` from
    an umbrella root
  [mix deps.compile] Use `gmake` instead of `make` when compiling deps on NetBSD/DragonFlyBSD
  [mix release] Load `.app` from dependencies path when it is a project dependency
  [mix release] Always include "rel/overlays" in the list of overlays directories if available
  [mix release] Change `erts/bin/erl` binary mode to `0o755`
  [mix test] Compare to test coverage threshold inclusively
  [Logger] Print metadata for all types that implement String.Chars
  * Soft-deprecations (no warnings emitted)
  [Exception] `Exception.exception?/1` is deprecated in favor of `Kernel.is_exception/1`
  [Regex] `Regex.regex?/1` is deprecated in favor of `Kernel.is_struct/2`
  [Logger] `warn` log level is deprecated in favor of `warning`
  [mix release] `config/releases.exs` is deprecated in favor of a more general purpose `config/runtime.exs`
  * Hard-deprecations
  [Supervisor] Deprecate `Supervisor.start_child/2` and `Supervisor.terminate_child/2` in favor of `DynamicSupervisor`
  [Supervisor.Spec] Deprecate `Supervisor.Spec.worker/3` and `Supervisor.Spec.supervisor/3` in favor of the new typespecs
  [System] Deprecate `System.stacktrace/0` in favor of `__STACKTRACE__`
  [Mix.Project] Deprecate `Mix.Project.compile/2` in favor of `"compile", args)`
  Full release notes:
* Wed Jul 08 2020 Gabriele Santomaggio <>
- Elixir 1.10.4
  * Bug fixes
  [Kernel] Fix a bug where custom types were printed as built-in types
  [Kernel] Don't add compile-time dependency on defdelegate
  [Kernel] Add line numbers to warnings on deprecated imports
  [Kernel] Report the correct line number when raising inside a macro
  [Task] Include callers in translated Logger metadata for Task
  [Task] Fix Task PID and caller in Task Supervisor reports
  [ExUnit.Formatter] Avoid crashes when diffing guards when the pattern does not match
  [ExUnit.Formatter] Also blame exceptions that come from linked and trapped exits
  [IEx.Helpers] Do not crash when printing a type that cannot be code formatted
  [mix app.start] Fix reading .app file located in archives (.ez files)
  [mix local.hex] Provide more guidance when Hex can't be installed
  [mix release] Properly encode config in releases
* Sat Apr 25 2020 Sven Marquardt <>
- Elixir 1.10.3
  * Bug fixes
  [Code] Return `[{mod, bin}]` from `Code.compile_file/2`, `Code.require_file/2`, `Code.load_file/2`
  [Code] Make sure the formatter respects newlines before and after module attributes
  [Kernel.ParallelCompiler] Fix a bug where the parallel compiler would raise in long compilation cycles
  [Kernel.ParallelCompiler] Fix a bug where the parallel compiler would raise if some of the modules being compiled referred to a module that has been loaded directly to memory
  [Module] Fix accidental breaking change where bodiless clauses had their body value on `@on_definition` callbacks set to an empty list instead of `nil`
  [String] Undeprecate `String.normalize/2` normalize and fix infinite loop caused by certain invalid strings
  [ExUnit.Assertions] Fix pattern matching diff when matching on pinned variables
  [ExUnit.Assertions] Fix pattern matching diff when matching variable struct names
  [ExUnit.Assertions] Fix pattern matching diff when matching on the binary concat operator (`<>`) and the left side is not a literal string
  [ExUnit.Assertions] Fix pattern matching diff when matching on pseudo-vars (`__MODULE__`, `__DIR__`, etc)
  [mix release] Respect the `:path` option when creating a `:tar` file for releases
* Thu Apr 16 2020 Gabriele Santomaggio <>
- Elixir 1.10.2
  * Bug fixes
    [Macro] Fix a bug where Macro.to_string/1 would emit invalid code for sigils
    [Task] Do not crash async_stream monitor if it receives spurious DOWN messages
    [Logger] Fix a bug where the Logger formatter would fail when handling unknown metadata values
    [mix compile] Do not write files to disk if --warnings-as-errors was given and warnings were emitted
- Elixir 1.10.1
  * Bug fixes
    [Code] Do not emit invalid code when formatting nil, false, and true keys in maps
    [Kernel] Ensure with clauses properly unpack "implicit guards" (such as matching on the struct name)
    [Kernel] Do not warn if commas are used by themselves in ~w/~W sigils
    [Kernel] Do not validate the :line option in quote (the validation has been moved to v1.11 to give users more time to update their code)
    [Module] Ensure the code verifier handles the :erlang.size/1 guard properly
    [Logger] Properly handle the report_cb/2 option from Erlang
    [Logger] Fix truncation for multi-byte characters
    [Logger] Do not rebroadcast messages from remote nodes as this is now taken care by Erlang's logger
    [ExUnit] Ensure assert_receive produces valid exception messages in case of errors
    [mix release] Make sure the install command (Window specific) works on paths with spaces in the name
    [mix release] Allow using remote and rpc commands with Application.compile_env/3
- Elixir 1.10.0
  * Elixir 1.10.0 is a new main release.
    Full release notes: