v0.14.0
Pre-release
Pre-release
Enhancements
- [ExUnit] Add
on_exit/1
callbacks that are guaranteed to run once the test process exits and always in another process - [Kernel] Store documentation in the abstract code to avoid loading them when the module is loaded
- [Kernel] Add
get_in/2
,put_in/3
,update_in/3
andget_and_update_in/3
to handle nested data structure operations - [Kernel] Add
get_in/1
,put_in/2
,update_in/2
andget_and_update_in/2
to handle nested data structure operations via paths - [Mix] Add
Mix.Config
to ease definition of configuration files - [Mix] Add
mix loadconfig
task that can be called multiple times to load external configs - [Mix] Support
--config
option onmix run
- [Mix] Support
HTTP_PROXY
andHTTPS_PROXY
on Mix url commands - [Mix] Support
--names
options inmix help
which emit only names (useful for autocompletion) - [Protocol] Add
Protocol.consolidate/2
,Protocol.consolidated?/1
and amix compile.protocols
task for protocol consolidation - [Protocol] Add
Protocol.derive/3
for runtime deriving of a struct - [String] Add
String.chunk/2
- [Struct] Add support for
@derive
beforedefstruct/2
definitions
Bug fixes
- [File]
File.rm
now consistently deletes read-only across operating systems - [Kernel] Ensure Mix
_build
structure works on Windows when copying projects - [Kernel] Ensure
1.0E10
(with uppercase E) is also valid syntax - [Mix] Fix
mix do
task for Windows' powershell users - [Path] Fix
Path.absname("/")
andPath.expand("/")
to return the absolute path"/"
.
Soft deprecations (no warnings emitted)
- [Kernel]
size/1
is deprecated, please usebyte_size/1
ortuple_size/1
instead - [ExUnit]
teardown/2
andteardown_all/2
are deprecated in favor ofon_exit/1
callbacks
Deprecations
- [Access]
Access.access/2
is deprecated in favor ofAccess.get/2
- [Dict]
Dict.Behaviour
is deprecated in favor ofDict
- [Kernel]
Application.Behaviour
,GenEvent.Behaviour
,GenServer.Behaviour
andSupervisor.Behaviour
are deprecated in favor ofApplication
,GenEvent
,GenServer
andSupervisor
- [Kernel]
defexception/3
is deprecated in favor ofdefexception/1
- [Kernel]
raise/3
is deprecated in favor ofreraise/2
- [Kernel]
set_elem/3
is deprecated in favor ofput_elem/3
- [Kernel] Passing an atom
var!/1
is deprecated, variables can be built dynamically withMacro.var/2
- [Mix] Exceptions that define a
:mix_error
field to be compatible with Mix are no longer supported. Instead please provide a:mix
field and useMix.raise/1
andMix.raise/2
Backwards incompatible changes
- [Access]
Kernel.access/2
no longer exists and theAccess
protocol now requiresget/2
(instead ofaccess/2
) andget_and_update/3
to be implemented - [Kernel] Retrieving docs as
module.__info__(:docs)
is no longer supported, please useCode.get_docs/2
instead - [Kernel]
Code.compiler_options/1
no longer accepts custom options, only the ones specified by Elixir (use mix config instead) - [Mix]
mix new
no longer generates a supevision tree by default, please pass--sup
instead - [Task] Tasks are automatically linked to callers and a failure in the task will crash the caller directly