1.6.0
Released on 2018-01-17
Changes
- Type
- enhancement
- Tool
- EEx
- Module
- EEx
- Description
- Allow markers `/` and `|` to be used in a custom EEx engine
- Type
- enhancement
- Tool
- Elixir
- Module
- Calendar
- Description
- Add truncate to `Time`, `DateTime` and `NaiveDateTime` to facilitate microsecond precision pruning
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- Add `format_string!/2` and `format_file!/2` for automatic code formatting
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- Support column annotations in quoted expressions with `columns: true` in `Code.string_to_quoted/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- DynamicSupervisor
- Description
- Add `DynamicSupervisor` designed to manage children that are added and removed dynamically
- Type
- enhancement
- Tool
- Elixir
- Module
- Exception
- Description
- Make `Exception.blame/3` extensible by adding an optional `blame/2` callback to exceptions
- Type
- enhancement
- Tool
- Elixir
- Module
- Exception
- Description
- Improve the printing of guards on blamed exceptions
- Type
- enhancement
- Tool
- Elixir
- Module
- Enumerable
- Description
- Add `Enumerable.slice/1` and optimize many `Enum` operations with the new protocol. This allows data-structures with index-based random access to provide a non-linear implementation
- Type
- enhancement
- Tool
- Elixir
- Module
- Inspect
- Description
- Show UTF-8 BOM on inspected strings
- Type
- enhancement
- Tool
- Elixir
- Module
- Inspect.Algebra
- Description
- Add `:strict` and `:flex` breaks - this gives more control over the document fitting
- Type
- enhancement
- Tool
- Elixir
- Module
- Inspect.Algebra
- Description
- Allow a group to inherit the parent group break
- Type
- enhancement
- Tool
- Elixir
- Module
- Inspect.Algebra
- Description
- Add `force_unfit/1` and `next_break_fits/2` which give more control over document fitting
- Type
- enhancement
- Tool
- Elixir
- Module
- Inspect.Algebra
- Description
- Add `collapse_lines/1` for collapsing multiple lines to a maximum value
- Type
- enhancement
- Tool
- Elixir
- Module
- Inspect.Algebra
- Description
- Allow `nest/2` to be `:reset` or be set to the current `:cursor` position
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Prefix variables with V when emitting Erlang code. This improves the integration with tools such as Erlang code formatters and the GUI debugger
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn on the use of `length(x) == 0` in guards
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn if `catch` comes before `rescue` in try
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn if heredoc is outdented compared to its closing quotes
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Add `defguard/1` and `defguardp/1` to make it easier to build guard-safe macros
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel.ParallelCompiler
- Description
- Add `compile/2`, `compile_to_path/3` and `require/2` which provide detailed information about warnings and errors
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel.SpecialForms
- Description
- Support the `uniq: true` flag in `for` comprehensions
- Type
- enhancement
- Tool
- Elixir
- Module
- Module
- Description
- Introduce `@deprecated` and `@since` attributes
- Type
- enhancement
- Tool
- Elixir
- Module
- List
- Description
- Rearrange equals and inserts for shorter diff scripts in `List.myers_difference/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Record
- Description
- Allow `:macros` and `:includes` to be given to `Record.extract/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Stream
- Description
- Add `Stream.intersperse/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- String
- Description
- Update to Unicode 10
- Type
- enhancement
- Tool
- Elixir
- Module
- String
- Description
- Allow passing empty string `match` to `String.replace/4`
- Type
- enhancement
- Tool
- Elixir
- Module
- String
- Description
- Support context and language sensitive operations in `String.upcase/2` and `String.downcase/2`. Currently only the `:greek` context is supported
- Type
- enhancement
- Tool
- Elixir
- Module
- String
- Description
- Support `:ascii` conversion in `String.upcase/2` and `String.downcase/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Time
- Description
- Add `Time.add/3`
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit.Assertions
- Description
- Perform inclusive checks in `assert_in_delta`
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit.Callbacks
- Description
- Add `ExUnit.Callbacks.start_supervised!/2`
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit.Case
- Description
- Generate a random seed per test based on the test suite seed
- Type
- enhancement
- Tool
- IEx
- Module
- IEx.Autocomplete
- Description
- Provide contextual autocompletion: `t Enum.` will autocomplete types, `b Enum` will autocomplete callbacks
- Type
- enhancement
- Tool
- IEx
- Module
- IEx.CLI
- Description
- Provide hints for developers when a bad host name is given to `--remsh`
- Type
- enhancement
- Tool
- IEx
- Module
- IEx.Helpers
- Description
- Automatically include specs when showing documentation for functions/macros
- Type
- enhancement
- Tool
- IEx
- Module
- IEx.Helpers
- Description
- Improve formatting of behaviours and typespecs by using the formatter
- Type
- enhancement
- Tool
- IEx
- Module
- IEx.Helpers
- Description
- Allow pattern matching and guard expressions when on `IEx.break!`
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- Add `:discard_threshold` to Logger to help with message queue overflow
- Type
- enhancement
- Tool
- Mix
- Module
- mix app.start
- Description
- Add `--preload-modules` to `mix app.start`
- Type
- enhancement
- Tool
- Mix
- Module
- mix archive.build
- Description
- Allow `mix archive.build` to bundle dot files via an option
- Type
- enhancement
- Tool
- Mix
- Module
- mix compile
- Description
- Define a behavior for Mix compiler tasks and return diagnostics from compiler tasks
- Type
- enhancement
- Tool
- Mix
- Module
- mix compile
- Description
- Track struct dependencies between files and recompile them only if the struct changes
- Type
- enhancement
- Tool
- Mix
- Module
- mix deps
- Description
- Support `:system_env` option when specifying dependencies
- Type
- enhancement
- Tool
- Mix
- Module
- mix format
- Description
- Add a `mix format` task that formats the given files (or the files specified in a `.formatter.exs` file)
- Type
- enhancement
- Tool
- Mix
- Module
- mix profile.eprof
- Description
- Add a new task for time-based profiling with eprof
- Type
- enhancement
- Tool
- Mix
- Module
- mix test
- Description
- Run all functions in a describe block by giving the `file:line` the describe block starts
- Type
- enhancement
- Tool
- Mix
- Module
- mix test
- Description
- Report the top N slowest tests with the `--slowest N` flag
- Type
- enhancement
- Tool
- Mix
- Module
- mix test
- Description
- Report the number of doctests and tests separately
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref
- Description
- Support `--include-siblings` in reports for umbrella support
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref
- Description
- Add `mix xref graph --format stats`
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref
- Description
- Add `--only-nodes` and `--label` filters to mix xref graph
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref
- Description
- Add `mix xref deprecated` that shows the callsite of deprecated functions
- Type
- bugfix
- Tool
- Elixir
- Module
- CLI
- Description
- Support path with spaces as argument to elixir.bat
- Type
- bugfix
- Tool
- Elixir
- Module
- Inspect
- Description
- Properly handle minus signal for non-decimal negative integers
- Type
- bugfix
- Tool
- Elixir
- Module
- Integer
- Description
- Do not raise on non-integer values in `is_odd`/`is_even`
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Solve a precedence issue between `&` and `|`, such as `[&Foo.bar/1 | &Baz.bat/2]`
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Do not load dynamic Elixir modules as `:in_memory` as this value is not officially supported by the code server. Instead, use an empty list, which is the same value used by Erlang.
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Validate variable struct name is atom when used in pattern matching
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- No longer generate documentation for `defdelegate` functions automatically to avoid overriding previously specified `@doc`
- Type
- bugfix
- Tool
- Elixir
- Module
- Macro
- Description
- Fix `Macro.to_string/2` for tuple calls, such as `alias Foo.{Bar, Baz}`
- Type
- bugfix
- Tool
- Elixir
- Module
- MapSet
- Description
- Return valid MapSet when unioning a legacy MapSet
- Type
- bugfix
- Tool
- Elixir
- Module
- Regex
- Description
- Return a leading empty space when splitting on empty pattern. This makes the `split` operation consistent with the other operations in the `Regex` module
- Type
- bugfix
- Tool
- Elixir
- Module
- Stream
- Description
- Ensure `Stream.chunk_while/4` does not emit more elements than necessary when halted
- Type
- bugfix
- Tool
- Elixir
- Module
- String
- Description
- Return a leading empty space when splitting on empty string. This makes the `split` operation consistent with the other operations in the `String` module
- Type
- bugfix
- Tool
- Elixir
- Module
- URI
- Description
- Preserve empty fragments in `URI.parse/1`
- Type
- bugfix
- Tool
- Mix
- Module
- mix app.start
- Description
- Improve the quality of reports if app fails to boot
- Type
- bugfix
- Tool
- Mix
- Module
- mix cmd
- Description
- Allow `mix cmd` to be invoked multiple times without marking it as executed
- Type
- bugfix
- Tool
- Mix
- Module
- mix deps
- Description
- Ensure optional dependencies in umbrella applications are loaded
- Type
- bugfix
- Tool
- Mix
- Module
- mix deps.update
- Description
- Ensure transitive new non-Hex dependencies are also fetched when a repo is updated
- Type
- bugfix
- Tool
- Mix
- Module
- mix xref
- Description
- Take compile dependencies with higher priority than runtime ones when building a graph
- Type
- bugfix
- Tool
- Mix
- Module
- mix xref
- Description
- Handle external files for xref callers and warnings
- Type
- enhancement
- Tool
- Elixir
- Module
- GenServer
- Description
- Warn if `init/1` is not defined in `GenServer`. This brings GenServer closer to the implementation in OTP and aligns all behaviours to require the `init/1` callback
- Type
- enhancement
- Tool
- Elixir
- Module
- Inspect.Algebra
- Description
- `surround/3` and `surround_many/6` are deprecated in favor of `container_doc/6`
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Specifying map types with variable keys without defining the type as required/optional is deprecated
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel.ParallelCompiler
- Description
- `files/2` and `files_to_path/3` are deprecated in favor of `compile/2` and `compile_to_path/3`
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel.ParallelRequire
- Description
- `files/2` is deprecated in favor of `Kernel.ParallelCompiler.require/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Supervisor
- Description
- The `:simple_one_for_one` strategy is deprecated in favor of `DynamicSupervisor`
- Type
- enhancement
- Tool
- Elixir
- Module
- Supervisor
- Description
- Passing a list of args to `Supervisor.start_child/2` is deprecated in favor of `DynamicSupervisor`
- Type
- enhancement
- Tool
- Elixir
- Module
- Task.Supervisor
- Description
- Passing `:restart` and `:shutdown` to `Task.Supervisor.start_link/2` is deprecated (it should be passed on start child instead)
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit.Formatter
- Description
- `:case_started` and `:case_finished` events are deprecated in favor of `:module_started` and `:module_finished`
- Type
- enhancement
- Tool
- Mix
- Module
- Mix.Compilers.Erlang
- Description
- Returning `{:ok, val} | :error` from custom Erlang compilers is deprecated in favor of `{:ok, val, warnings} | {:error, errors, warnings}`
- Type
- enhancement
- Tool
- Elixir
- Module
- Enum
- Description
- `Enum.partition/2` is deprecated in favor of `Enum.split_with/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Keyword
- Description
- `Keyword.replace/3` is deprecated in favor of `Keyword.fetch/2` and `Keyword.put/3`
- Type
- enhancement
- Tool
- Elixir
- Module
- Map
- Description
- `Map.replace/3` is deprecated in favor of `Map.fetch/2` and `Map.put/3`
- Type
- enhancement
- Tool
- Elixir
- Module
- Macro
- Description
- `Macro.unescape_tokens/1` and `Macro.unescape_tokens/2` are deprecated in favor of `Enum.map/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Range
- Description
- Deprecate `Range.range?/1` in favor of pattern matching on `_ .. _`