v0.14.3
Pre-release
Pre-release
Enhancements
- [Access] Allow function access on
get_in/2
andget_and_update_in/3
- [Enum] Add
Enum.sort_by/3
- [ExUnit] Match the line filter by proximity instead of exact match
- [Float] Support precision in
Float.ceil/1
andFloat.floor/1
- [IO] Add
IO.(bin)read(device, :all)
- [Kernel] Print a warning if a dangling
@doc
clause is found - [Mix] Use absolute symbolic links on Windows for
_build
instead of copying - [Mix] Add
Mix.compilers
that returns all default compilers used by mix tasks - [Mix] Issue warning and reset mtime for source files from the future
- [Mix] Support task aliases in Mix
- [OptionParser] Add
OptionParser.split/1
that splits a string into argv - [Record] Allow a record to be converted to a keyword list with
record(some_record)
- [String] Improve performance of
String.split/1
- [Typespec] Allow
%Struct{}
syntax to be used in typespecs - [Typespec] Allow
record(:record, fields)
syntax to be used in typespecs
Bug fixes
- [IEx] Do not print ANSI sequences on
IEx.Helpers.clear/0
if ANSI sequences are not supported - [Inspect] Ensure
Inspect.Algebra.to_doc/2
doesn't go into a loop when there is a failure printing a struct - [Kernel]
|>
,<<<
,>>>
and^^^
made left associative in operator table - [Kernel]
<
,>
,<=
,>=
given higher precedence than comparison operators (==
,!=
, etc) in the operator table - [Kernel] Run command line and escripts in a process that does not trap exits
- [Kernel] Fix a bug where Mix paths had higher priority than CLI ones, causing protocol consolidations to not be properly loaded
- [Kernel] Fix wording on error messages when a check/guard always passes or always fails
- [Kernel] Fix a bug where an unused function warning was printed even when the function was used via
defoverridable
- [Kernel] Improve typespecs so they don't generate supertype dialyzer warnings
- [Macro]
to_string
correctly displays sigils - [Mix] Ensure Mix dependencies are not compiled every second time when
mix deps.compile
is invoked - [Mix] Fix a bug where
Mix.shell.error/1
and friends choked when printing a map - [Mix] Ensure multiple
@external_resource
entries are read by Mix compilers - [Mix] Fix a bug where tasks for umbrella projects were not properly reenabled
- [Stream] Fix bug when
flat_map
is used inside anotherflat_map
with an Enumerable - [Typespec] Fix a bug where the
list
typespec was incorrectly rendered as[]
Soft deprecations (no warnings emitted)
- [Kernel] Using a list for bitstring modifiers is deprecated (as in
<<x :: [little, utf16]>>
), please use-
as the separator instead (as in<<x :: little-utf16>>
) - [System]
System.cmd/1
is deprecated in favor ofSystem.cmd/3
Deprecations
- [Mix]
mix escriptize
is deprecated in favor ofescript.build
- [Mix]
mix local.install
andmix local.uninstall
have been deprecated in favor ofmix archive.install
andmix archive.uninstall
respectively - [Mix]
:embed_extra_apps
for escripts is deprecated, instead list the dependencies insidedef application
- [System] Giving a char list to
System.find_executable/1
is deprecated
Backwards incompatible changes
- [Access] No longer fill in missing intermediate values with empty maps
- [Float]
Float.ceil/2
andFloat.floor/2
now always returns floats and no longer accept integers - [Kernel]
defstruct
no longer automatically defines a type - [Kernel]
exit(integer)
is no longer supported from scripts to configure the exit signal. Useexit({:shutdown, integer})
instead - [Kernel] Default argument values have to be defined in a function head if the function has multiple clauses
- [Mix]
mix archive.build
replaces the functionality ofmix archive
,mix archive
now lists locally installed archives - [Mix]
Mix.shell.info/1
no longer automatically escape ANSI sequences. Instead if has to be explicitly enabled with theansi: true
option - [OptionParser]
--no-SWITCH
are only allowed for declared booleans switches