Elixir release

0.14.3

Change breakdown

Organization at a glance

Detailed changelog

Enhancement

45 changes

Tool: Elixir Module: Access

Allow function access on get_in/2 and get_and_update_in/3

Tool: Elixir Module: Enum

Add Enum.sort_by/3

Tool: Elixir Module: ExUnit

Match the line filter by proximity instead of exact match

Tool: Elixir Module: Float

Support precision in Float.ceil/1 and Float.floor/1

Tool: Elixir Module: IO

Add IO.(bin)read(device, :all)

Tool: Elixir Module: Kernel

Print a warning if a dangling @doc clause is found

Tool: Elixir Module: Mix

Use absolute symbolic links on Windows for _build instead of copying

Tool: Elixir Module: Mix

Add Mix.compilers that returns all default compilers used by mix tasks

Tool: Elixir Module: Mix

Issue warning and reset mtime for source files from the future

Tool: Elixir Module: Mix

Support task aliases in Mix

Tool: Elixir Module: OptionParser

Add OptionParser.split/1 that splits a string into argv

Tool: Elixir Module: Record

Allow a record to be converted to a keyword list with record(some_record)

Tool: Elixir Module: String

Improve performance of String.split/1

Tool: Elixir Module: Typespec

Allow %Struct{} syntax to be used in typespecs

Tool: Elixir Module: Typespec

Allow record(:record, fields) syntax to be used in typespecs

Tool: Elixir Module: IEx

Do not print ANSI sequences on IEx.Helpers.clear/0 if ANSI sequences are not supported

Tool: Elixir Module: Inspect

Ensure Inspect.Algebra.to_doc/2 doesn't go into a loop when there is a failure printing a struct

Tool: Elixir Module: Kernel

|>, <<<, >>> and ^^^ made left associative in operator table

Tool: Elixir Module: Kernel

<, >, <=, >= given higher precedence than comparison operators (==, !=, etc) in the operator table

Tool: Elixir Module: Kernel

Run command line and escripts in a process that does not trap exits

Tool: Elixir Module: Kernel

Fix a bug where Mix paths had higher priority than CLI ones, causing protocol consolidations to not be properly loaded

Tool: Elixir Module: Kernel

Fix wording on error messages when a check/guard always passes or always fails

Tool: Elixir Module: Kernel

Fix a bug where an unused function warning was printed even when the function was used via defoverridable

Tool: Elixir Module: Kernel

Improve typespecs so they don't generate supertype dialyzer warnings

Tool: Elixir Module: Macro

to_string correctly displays sigils

Tool: Elixir Module: Mix

Ensure Mix dependencies are not compiled every second time when mix deps.compile is invoked

Tool: Elixir Module: Mix

Fix a bug where Mix.shell.error/1 and friends choked when printing a map

Tool: Elixir Module: Mix

Ensure multiple @external_resource entries are read by Mix compilers

Tool: Elixir Module: Mix

Fix a bug where tasks for umbrella projects were not properly reenabled

Tool: Elixir Module: Stream

Fix bug when flat_map is used inside another flat_map with an Enumerable

Tool: Elixir Module: Typespec

Fix a bug where the list typespec was incorrectly rendered as []

Tool: Elixir Module: 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>>)

Tool: Elixir Module: System

System.cmd/1 is deprecated in favor of System.cmd/3

Tool: Elixir Module: Mix

mix escriptize is deprecated in favor of escript.build

Tool: Elixir Module: Mix

mix local.install and mix local.uninstall have been deprecated in favor of mix archive.install and mix archive.uninstall respectively

Tool: Elixir Module: Mix

:embed_extra_apps for escripts is deprecated, instead list the dependencies inside def application

Tool: Elixir Module: System

Giving a char list to System.find_executable/1 is deprecated

Tool: Elixir Module: Access

No longer fill in missing intermediate values with empty maps

Tool: Elixir Module: Float

Float.ceil/2 and Float.floor/2 now always returns floats and no longer accept integers

Tool: Elixir Module: Kernel

defstruct no longer automatically defines a type

Tool: Elixir Module: Kernel

exit(integer) is no longer supported from scripts to configure the exit signal. Use exit({:shutdown, integer}) instead

Tool: Elixir Module: Kernel

Default argument values have to be defined in a function head if the function has multiple clauses

Tool: Elixir Module: Mix

mix archive.build replaces the functionality of mix archive, mix archive now lists locally installed archives

Tool: Elixir Module: Mix

Mix.shell.info/1 no longer automatically escape ANSI sequences. Instead if has to be explicitly enabled with the ansi: true option

Tool: Elixir Module: OptionParser

--no-SWITCH are only allowed for declared booleans switches