Releases: elixir-lang/elixir
Releases · elixir-lang/elixir
v0.10.1
Enhancements
- [Behaviour] Add support for
defmacrocallback/1
- [Enum] Add
Enum.shuffle/1
- [ExUnit] The
:trace
option now also reports run time for each test - [ExUnit] Add support for
:color
to enable/disable ANSI coloring - [IEx] Add the
clear
helper to clear the screen. - [Kernel] Add the capture operator
&
- [Kernel] Add support for
GenFSM.Behaviour
- [Kernel] Functions now points to the module and function they were defined when inspected
- [Kernel] A documentation attached to a function that is never defined now prints warnings
- [List] Add
List.keysort/2
- [Mix]
:test_helper
project configuration did not affectmix test
and was therefore removed. Atest/test_helper.exs
file is still necessary albeit it doesn't need to be automatically required in each test file - [Mix] Add manifests for yecc, leex and Erlang compilers, making it easier to detect dependencies in between compilers and providing a more useful clean behaviour
- [Mix]
mix help
now outputs information about the default mix task - [Mix] Add
--no-deps-check
option tomix run
,mix compile
and friends to not check dependency status - [Mix] Add support for
MIX_GIT_FORCE_HTTPS
system environment that forces HTTPS for known providers, useful when the regular git port is blocked. This configuration does not affect themix.lock
results - [Mix] Allow coverage tool to be pluggable via the
:test_coverage
configuration - [Mix] Add
mix cmd
as a convenience to run a command recursively in child apps in an umbrella application - [Mix] Support
umbrella: true
in dependencies as a convenience for setting up umbrella path deps - [Mix]
mix run
now behaves closer to theelixir
command and properly mangles the ARGV - [String] Add
Regex.scan/3
now supports capturing groups - [String] Add
String.reverse/1
Bug fix
- [Behaviour] Ensure callbacks are stored in the definition order
- [CLI] Speed up boot time on Elixir .bat files
- [IEx] Reduce cases where IEx parser can get stuck
- [Kernel] Improve error messages when the use of an operator has no effect
- [Kernel] Fix a bug where warnings were not being generated when imported macros conflicted with local functions or macros
- [Kernel] Document that
on_definition
can only be a function as it is evaluated inside the function context - [Kernel] Ensure
%w
sigils with no interpolation are fully expanded at compile time - [Mix]
mix deps.update
,mix deps.clean
andmix deps.unlock
no longer change all dependencies unless--all
is given - [Mix] Always run
mix loadpaths
onmix app.start
, even if--no-compile
is given - [OptionParser] Do not add boolean flags to the end result if they were not given
- [OptionParser] Do not parse non-boolean flags as booleans when true or false are given
- [OptionParser] Ensure
:keep
and:integer
|:float
can be given together as options - [OptionParser] Ensure
--no-flag
sets:flag
to false when:flag
is a registered boolean switch
Deprecations
- [Kernel]
function(Mod.fun/arity)
andfunction(fun/arity)
are deprecated in favor of&Mod.fun/arity
and&fun/arity
- [Kernel]
function/3
is deprecated in favor ofModule.function/3
- [Kernel]
Kernel.ParallelCompiler
now receives a set of callbacks instead of a single one - [Mix]
:test_coverage
option now expect keywords arguments and the--cover
flag is now treated as a boolean
Backwards incompatible changes
- [Regex]
Regex.scan/3
now always returns a list of lists, normalizing the result, instead of list with mixed lists and binaries - [System]
System.halt/2
was removed since the current Erlang implementation of such function is bugged
v0.10.0
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 viaHashSet
- [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
andEnum.each/2
is deprecated in favor ofStream.with_index/1
- [File]
File.iterator/1
andFile.biniterator/1
are deprecated in favor ofIO.stream/1
andIO.binstream/1
- [File]
File.iterator!/2
andFile.biniterator!/2
are deprecated in favor ofFile.stream!/2
andFile.binstream!/2
- [Kernel] Deprecate recently added
quote binding: ...
in favor of the clearerquote bind_quoted: ...
- [Kernel] Deprecate
Kernel.float/1
in favor of a explicit conversion - [Mix] Deprecate
mix run EXPR
in favor ofmix run -e EXPR
- [Record]
Record.__index__/2
deprecated in favor ofRecord.__record__(:index, key)
Backwards incompatible changes
-
[Kernel] The
Binary.Inspect
protocol has been renamed toInspect
-
[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 thedefrecordp
name and no longer the current atom -
[URI] Remove custom URI parsers in favor of
URI.default_port/2