Enhancement
53 changes
Add --verbose to elixirc, which now is non-verbose by default
Add Dict.Behaviour as a convenience to create your own dictionaries
Add Enum.split/2, Enum.reduce/2, Enum.flat_map/2, Enum.chunks/2, Enum.chunks/4, Enum.chunks_by/2, Enum.concat/1 and Enum.concat/2
Support negative indices in Enum.at/fetch/fetch!
Show failures on CLIFormatter as soon as they pop up
Allow for strings in h helper
Helpers r and c can handle erlang sources
Add odd?/1 and even?/1
Added support to specifying a number of bytes to stream to IO.stream, IO.binstream, File.stream! and File.binstream!
Include file and line on error report for overriding an existing function/macro
Convert external functions into quoted expressions. This allows record fields to contain functions as long as they point to an &Mod.fun/arity
Allow foo? and bar! as valid variable names
Add List.replace_at/3
Improve printing of the access protocol on Macro.to_string/1
Add Macro.to_string/2 to support annotations on the converted string
Automatically recompile a project if the Elixir version changes
Add Path.relative_to_cwd/2
Allow erlang re options when compiling Elixir regexes
Add Stream.concat/1, Stream.concat/2 and Stream.flat_map/2
Add regex pattern support to String.replace/3
Add String.ljust/2, String.rjust/2, String.ljust/3 and String.rjust/3
URI.parse/1 supports IPv6 addresses
Do not compile behaviour docs if docs are disabled on compilation
Doctests no longer eat too much space and provides detailed reports for poorly indented lines
Fix a bug where File.touch(file, datetime) was not setting the proper datetime when the file did not exist
Limit inspect results to 50 items by default to avoid printing too much data
Return a readable error on oversized atoms
Allow functions ending with ? or ! to be captured
Fix default shutdown of child supervisors to :infinity
Fix regression when calling a function/macro ending with bang, followed by do/end blocks
Fix bug on List.insert_at/3 that added the item at the wrong position for negative indexes
Macro.escape/2 can now escape improper lists
Fix Mix.Version matching on pre-release info
Ensure watch_exts trigger full recompilation on change with mix compile
Fix regression on mix clean --all
String.strip/2 now supports removing unicode characters
String.slice/3 still returns the proper result when there is no length to be extracted
System.get_env/0 now returns a list of tuples as previously advertised
Dict.update/3 is deprecated in favor of Dict.update!/3
Enum.min/2 and Enum.max/2 are deprecated in favor of Enum.min_by/2 and Enum.max_by/2
Enum.join/2 and Enum.map_join/3 with a char list are deprecated
IO.stream(device) and IO.binstream(device) are deprecated in favor of IO.stream(device, :line) and IO.binstream(device, :line)
list_to_binary/1, binary_to_list/1 and binary_to_list/3 are deprecated in favor of String.from_char_list!/1 and String.to_char_list!/1 for characters and :binary.list_to_bin/1, :binary.bin_to_list/1 and :binary.bin_to_list/3 for bytes
to_binary/1 is deprecated in favor of to_string/1
Deprecate def/4 and friends in favor of def/2 with unquote and friends
Deprecate %b and %B in favor of %s and %S
List.concat/2 is deprecated in favor of Enum.concat/2
Macro.unescape_binary/1 and Macro.unescape_binary/2 are deprecated in favor of Macro.unescape_string/1 and Macro.unescape_string/2
:umbrella option for umbrella paths has been deprecated in favor of :in_umbrella
IO functions now only accept iolists as arguments
Binary.Chars was renamed to String.Chars
The previous ambiguous import syntax import :functions, Foo was removed in favor of import Foo, only: :functions
parse and parse_head now returns a tuple with three elements instead of two