Releases: elixir-lang/elixir
Releases · elixir-lang/elixir
v1.3.0-rc.1
Release v1.3.0-rc.1
v1.2.6
1. Enhancements
- [Kernel] Support Erlang 19
- [Kernel] Supported generated: true in the
quotespecial form
2. Bug fixes
- [Path] Fix a bug in path join with "/" followed by empty segments
- [String] Fix a bug in NFD normalization when followed by one-byte sized graphemes
- [Typespec] Correctly support
<<_::size, _::_*unit>>syntax
v1.3.0-rc.0
Release v1.3.0-rc.0
v1.2.5
Bug fixes
- [Logger] Stringify truncated function data in Logger
- [Logger] Ensure poorly formatted char data can also be logged by using the replacement character "�" (diamond question mark)
- [Mix] Do not assume
@implis always a list - [String] Fix bugs in
String.replace_*functions where it would not include the accumulated value for certain replacements
v1.2.4
Enhancements
- [Mix] Add
:archivesconfiguration todef projectthat allows projects to list archive dependencies.--no-archives-check(as well as--no-deps-check) will disable the archive check. The:archivesoption is not checked for dependencies. - [Mix] Add
deps.precompiletask as hook - [Mix] Support
--include-childreninmix deps.compileoption - [String] Update version of the Unicode database to 8.0.0
Bug fixes
- [Application] Ensure
spec/2returns nil for unknown applications - [Integer] Fix a possible binary leak in
parse/1 - [Mix] Purge Erlang modules on recompilation
- [String] Ensure
split/1does not break on non-breakable whitespace - [String] Ensure NFC and NFD normalization pass all of Unicode 8.0.0 tests
- [Version] Allow dots in build info for versions in
Version.parse/1
v1.2.3
Enhancements
- [Base] Add
:ignoreand:paddingoption to encoding/decoding functions - [Mix] Add
Mix.Projects.deps_pathsthat returns the dependencies path as a map
Bug fixes
- [ExUnit] Do not provide negative line numbers without generated annotation (for compatibility with Erlang 19)
- [Mix] Reject non fullfilled optional dependencies later on in the convergence resolution for proper dependency sorting
- [String] Fix incomplete data trimming on both
String.replace_trailingandString.rstrip - [String] Attach debug_info back into Unicode modules for Dialyzer support
v1.2.2
Enhancements
- [Kernel] Support
@compile {:autoload, false}to disable automatic loading after compilation
Bug fixes
- [ExUnit] Raise if trying to override reserved tag in
setupblocks - [Mix] Ensure retrieve compile manifests do fail if some compilers are not yet available
- [Mix] Automatically merge managers according to the mix > rebar3 > rebar > make order
- [Mix] Force recompilation if dependency was recently fetched
v1.2.1
Enhancements
- [IEx] Support remote pids/ports with IEx helper
i/1 - [Protocol] Warn when
defimplis called for a consolidated protocol
Bug fixes
- [ExUnit] Ensure
assertmacros can be used from quoted code - [ExUnit] Do not warn in match assertion if variable is reused in pattern
- [Macro] Fix a bug in
Macro.to_string/1where a remote function could be accidentally interpreted as a sigil - [Mix] Ensure dependencies are properly skipped when
--onlyoption is given tomix deps.get
v1.2.0
Official announcement: https://elixir-lang.org/blog/2016/01/03/elixir-v1-2-0-released/
1. Enhancements
Elixir
- [Application] Add
spec/1andspec/2to retrieve application specification - [Application] Add
get_application/1to retrieve the application a given module belongs to - [Base] Optimize encode and decode operations about 10 times
- [Enum] Use the faster and auto-seeding
:randinstead of:randominEnum.shuffle/1andEnum.random/1andEnum.take_random/2 - [Enum] Add
Enum.with_index/2 - [GenServer] Add
GenServer.stop/1for shutting down servers reliably - [IO] Add
colorrelated functions toIO.ANSI - [Kernel] Support multiple aliases in
alias,import,requireanduse. For example,alias MyApp.{Foo, Bar, Baz} - [Kernel] Add
struct!/2. Similar tostruct/2but raises on invalid keys - [Kernel] Warn if
@doc/@typedoc/@moduledocattributes are redefined - [Kernel] Warn if non-variables are used in
defdelegate/2(as they have no effect) - [Kernel] Mark quoted expressions as generated, avoiding false positives on dialyzer
- [Kernel] Allow variables as map keys on creation
%{key => value}and on matches%{^key => value} - [Kernel] Allow the pin operator
^infnclauses and on the left side of<-inforcomprehensions - [Kernel] Introduce
withas a special form that allows matching on right side parameters - [Kernel] Warn when right hand side of
->does not provide any expression - [Kernel] Warn if the Elixir was compiled with a different endianness than the one currently available at runtime
- [Kernel] Warn if a variable is used after being defined exclusively in a nested context
- [Kernel] Warn if piping into an expression without parentheses
- [Macro] Add
Macro.traverse/4that performs pre and post-walk at once - [Macro] Add
Macro.camelize/1andMacro.underscore/1 - [Process] Add
Process.get_keys/0 - [Stream] Add
Stream.with_index/2 - [String] Introduce
String.replace_{prefix,suffix,leading,trailing}/2. The first two will replace only the first occurrence of the given match in string. The last two will replace all occurrences of the given match - [String] Support
String.normalize/2andString.equivalent?/2that perform NFD and NFC normalization - [System] Add
System.time_offset,System.monotonic_time,System.system_time,System.convert_time_unitandSystem.unique_integer - [System] Allow
System.cmd/3to remove variables by specifying nil values - [Task] Add
Task.Supervisor.async_nolink/1/3that spawns a supervised task without linking to the caller process - [Task] Introduce
Task.yield_many/2 - [Task] Raise an error when a task is queried from a non-owning process (instead of waiting forever)
ExUnit
- [ExUnit] Allow one test to raise multiple errors. The goal is to enable tools in the ecosystem to emit multiple failure reports from the same test
- [ExUnit] Support
@tag report: [:foo, :bar]which will include the values for tags:fooand:barwhenever a test fails
IEx
- [IEx] Allow
IEX_WITH_WERLto be set on Windows to always run on WERL mode - [IEx] Display type docs for
t(Module.type)andt(Module.type/arity) - [IEx] Add
i/1helper that prints information about any data type - [IEx] Show source code snippet whenever there is a request to pry a given process
Logger
- [Logger] Add file to logger metadata
Mix
- [Mix] Cache and always consolidate protocols
- [Mix] Add
warn_test_patterntomix testthat will warn on potentially misconfigured test files - [Mix] Introduce
MIX_QUIETenvironment variable that configures the underlying Mix task to output only error messages - [Mix] Introduce
MIX_DEBUGenvironment variable that prints information about the task being run - [Mix] Validate git options and warn on conflicting ref, branch or tags
- [Mix] New umbrella applications will now share configuration and build files
- [Mix] Add experimental support for Rebar 3
- [Mix] Do not warn when an optional dependency has a conflicting
:onlyoption with another dependency - [Mix] Raise readable error message when parsertools is not available
- [Mix] Add
--buildflag tomix deps.clean DEPto only remove artifacts from_build
2. Bug fixes
Kernel
- [Access] Improve error messages when using Access on non-valid key-value structures
- [Kernel] Raise when conflicting
:onlyand:exceptare given to import - [Kernel] Change
__ENV__.fileif@fileis set for the given function - [Kernel] Make
Kernel.ParallelRequireaware of:warning_as_errors - [Kernel] Improve error message for invalid
do/do: - [Macro] Ensure
Macro.to_string/2respects operator precedence when using the access operator - [Path] Do not crash when expanding paths that go beyond the root, for example,
Path.expand("/../..") - [String] Ensure
UnicodeConversionErrordoes not contain invalid string in its error message
IEx
- [IEx] Do not start apps on
recompilehelper if--no-startwas given - [IEx] Avoid copying of data when evaluating every expression in IEx
Mix
- [Mix] Always run non-recursive tasks at the umbrella root
- [Mix] Ensure rebar projects work on directory names that contain non-latin characters
- [Mix] Ignore directories inside
appsin umbrellas that do not have amix.exsfile - [Mix] Ensure Mix can be used with path dependencies where the app name is different than the path basename
- [Mix] Ensure dependencies won't crash when updating from a git repository to a hex repository and the git version did not respect SemVer
- [Mix] Do not run remote converger if dependencies have diverged
- [Mix] Ensure umbrella dependencies across all environments are loaded on parent deps.get/deps.update
ExUnit
- [ExUnit] Include file and line in all compilation errors for doctests
3. Soft deprecations (no warnings emitted)
Kernel
- [Dict]
DictandHashDictare soft deprecated in favor ofMap - [Keyword]
Keyword.size/1is deprecated in favor oflength/1 - [Map]
Map.size/1is deprecated in favor ofmap_size/1 - [Set]
SetandHashSetare soft deprecated in favor ofMapSet
Mix
- [Mix]
Mix.Utils.camelize/1andMix.Utils.underscore/1are soft deprecated in favor ofMacro.camelize/1andMacro.underscore/1