v0.14.3
Pre-release
Pre-release
Enhancements
- [Access] Allow function access on
get_in/2andget_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/1andFloat.floor/1 - [IO] Add
IO.(bin)read(device, :all) - [Kernel] Print a warning if a dangling
@docclause is found - [Mix] Use absolute symbolic links on Windows for
_buildinstead of copying - [Mix] Add
Mix.compilersthat 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/1that 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/0if ANSI sequences are not supported - [Inspect] Ensure
Inspect.Algebra.to_doc/2doesn'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_stringcorrectly displays sigils - [Mix] Ensure Mix dependencies are not compiled every second time when
mix deps.compileis invoked - [Mix] Fix a bug where
Mix.shell.error/1and friends choked when printing a map - [Mix] Ensure multiple
@external_resourceentries are read by Mix compilers - [Mix] Fix a bug where tasks for umbrella projects were not properly reenabled
- [Stream] Fix bug when
flat_mapis used inside anotherflat_mapwith an Enumerable - [Typespec] Fix a bug where the
listtypespec 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/1is deprecated in favor ofSystem.cmd/3
Deprecations
- [Mix]
mix escriptizeis deprecated in favor ofescript.build - [Mix]
mix local.installandmix local.uninstallhave been deprecated in favor ofmix archive.installandmix archive.uninstallrespectively - [Mix]
:embed_extra_appsfor escripts is deprecated, instead list the dependencies insidedef application - [System] Giving a char list to
System.find_executable/1is deprecated
Backwards incompatible changes
- [Access] No longer fill in missing intermediate values with empty maps
- [Float]
Float.ceil/2andFloat.floor/2now always returns floats and no longer accept integers - [Kernel]
defstructno 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.buildreplaces the functionality ofmix archive,mix archivenow lists locally installed archives - [Mix]
Mix.shell.info/1no longer automatically escape ANSI sequences. Instead if has to be explicitly enabled with theansi: trueoption - [OptionParser]
--no-SWITCHare only allowed for declared booleans switches