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