- [Access] Optimize Access.get/2
- [Calendar] Limit
Calendar.ISOup to year 10000 - [Calendar] Add Rata Die format for conversions between Calendars and
Date.convert/2,Time.convert/2,NaiveDateTime.convert/2andDateTime.convert/2(as well as bang variants) - [Calendar] Add
:calendarfield toTimestruct - [Calendar] Add
Date.diff/2 - [Enum] Add
Enum.chunk_by/4andStream.chunk_by/4 - [Exception] Add
Exception.blame/3that adds metadata to exceptions - [File] Add
File.read_link/1andFile.read_link!/1 - [File] Introduce
:trim_bomoption forFile.stream!/2 - [Inspect] Add
:printable_limitto control the limit of printable structures - [Integer] Add
Integer.gcd/2 - [Kernel] Use the new
debug_infochunk in OTP 20. This provides a mechanism for tools to retrieve the Elixir AST from beam files - [Kernel]
defoverridable/1accepts a module name as argument and marks all callbacks as overridable - [Kernel] Allow non-quoted Unicode atoms and variables according to Unicode Annex #31 (see Unicode Syntax document)
- [Kernel] Warn when a :struct key is used when building/updating structs
- [Keyword] Add
replace/3andreplace!/3for replacing an existing key - [List]
List.starts_with?/2 - [Macro] Introduce
Macro.generate_arguments/2 - [Map] Optimize
Map.merge/3by choosing merge direction - [Map] Add
replace/3andreplace!/3for replacing an existing key - [MapSet] Reduce
MapSetsize when serialized to approximately half - [Process] Add
Process.cancel_timer/2 - [Registry] Support ETS guard conditions in
Registry.match/3 - [Task] Support
:on_timeoutinTask.async_streamto control how tasks are terminated
- [ExUnit] Show code snippet from test source file in case of test errors
- [ExUnit] Show the value of variables used in an assertion
- [ExUnit] Use
Exception.blame/3when formatting test errors
- [IEx.Evaluator] Use
Exception.blame/3when showing errors in the terminal - [IEx.Helpers] Add
e/1IEx helper to list all exports in a module - [IEx.Info] Implement
IEx.Infoprotocol for calendar types
- [Logger] Add
metadata: :allconfiguration to log all metadata
- [mix escript.build] Strip debug information from escripts by default and add option
:strip_beamwhich defaults to true - [mix loadpaths] Ensure
--no-deps-checkdo not trigger SCM callbacks (such asgit) - [mix local.hex] Add
--if-missingflag tolocal.hexmix task - [mix profile.cprof] Add
Mix.Tasks.Profile.Cproffor count-based profiling
- [File] Support
:ram/:rawfiles inFile.copy/2 - [Kernel] Support guards on anonymous functions of zero arity
- [Kernel] Fix compilation of maps used as maps keys inside matches
- [Record] Properly escape quoted expressions passed to
defrecord - [String] Consider Unicode non-characters valid according to the specification in
String.valid?/1
- [ExUnit] Properly account failed tests when
setup_allfails
- [IEx] Skip autocompletion of module names that are invalid without being quoted
- [IEx] Do not start oldshell alongside IEx
- [mix compile.elixir] Store multiple sources in case of module conflicts. This solves an issue where
_buildwould get corrupted when compiling Elixir projects with module conflicts
- [Kernel]
not left in rightis soft-deprecated in favor ofleft not in right
Atom.to_char_list/1,Float.to_char_list/1,Integer.to_char_list/1,Integer.to_char_list/2,Kernel.to_char_list/1,List.Chars.to_char_list/1,String.to_char_list/1have been deprecated in favor of theirto_charlistversion. This aligns with the naming conventions in both Erlang and Elixir- [Calendar] Deprecate
NaiveDateTimeandDateTimeinDate.to_iso8601/1,Date.to_erl/1,Time.to_iso8601/1andTime.to_erl/1to avoid loss of precision - [Enum] Deprecate
Enum.filter_map/3in favor ofEnum.filter/2+Enum.map/2or for-comprehensions - [GenEvent] Deprecate
GenEventand provide alternatives in its docs - [Kernel] Using
()to meannilis deprecated - [Kernel]
:as_char_lists valueinInspect.Opts.t/0type, in favor of:as_charlists - [Kernel]
:char_listskey inInspect.Opts.t/0type, in favor of:charlists - [Module] Using Erlang parse transforms via
@compile {:parse_transform, _}is deprecated - [Stream] Deprecate
Stream.filter_map/3in favor ofStream.filter/2+Stream.map/2 - [String]
String.ljust/3andString.rjust/3are deprecated in favor ofString.pad_leading/3andString.pad_trailing/3with a binary padding - [String]
String.strip/1andString.strip/2are deprecated in favor ofString.trim/1andString.trim/2 - [String]
String.lstrip/1andString.rstrip/1are deprecated in favor ofString.trim_leading/1andString.trim_trailing/1 - [String]
String.lstrip/2andString.rstrip/2are deprecated in favor ofString.trim_leading/2andString.trim_trailing/2with a binary as second argument - [Typespec]
char_list/0type is deprecated in favor ofcharlist/0
The CHANGELOG for v1.4 releases can be found in the v1.4 branch.