4 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
nia
|
77c5203342 |
elixir: Update to 1.9.1
## v1.9.1 (2019-07-18) ### 1. Enhancements #### Mix * [mix format] Print relative paths in `--check-formatted` output * [mix release] Support included applications ### 2. Bug fixes #### Elixir * [Code] Fix formatter wrongly removing nested parens in nested calls #### Logger * [Logger] Do not crash translator on poorly formatted supervisor names #### Mix * [mix compile] Raise readable error for mismatched sources during compilation * [mix release] Preserve UTF8 encoding in release config files ## v1.9.0 (2019-06-24) ### 1. Enhancements #### EEx * [EEx] Allow more complex mixed expressions when tokenizing #### Elixir * [Access] Allow `Access.at/1` to handle negative index * [CLI] Add support for `--boot`, `--boot-var`, `--erl-config`, `--pipe-to`, `--rpc-eval`, and `--vm-args` options * [Code] Add `static_atom_encoder` option to `Code.string_to_quoted/2` * [Code] Support `:force_do_end_blocks` on `Code.format_string!/2` and `Code.format_file!/2` * [Code] Do not raise on deadlocks on `Code.ensure_compiled/1` * [Config] Add `Config`, `Config.Reader`, and `Config.Provider` modules for working with configuration * [File] Add `File.rename!/2` * [Inspect] Add `:inspect_fun` and `:custom_options` to `Inspect.Opts` * [Kernel] Add `~U` sigil for UTC date times * [Kernel] Optimize `&super/arity` and `&super(&1)` * [Kernel] Optimize generated code for `with` with a catch-all clause * [Kernel] Validate `__struct__` key in map returned by `__struct__/0,1` * [Module] Add `Module.get_attribute/3` * [Protocol] Improve `Protocol.UndefinedError` messages to also include the type that was attempted to dispatch on * [Protocol] Optimize performance of dynamic dispatching for non-consolidated protocols * [Record] Include field names in generated type for records * [Regex] Automatically recompile regexes * [Registry] Add `Registry.select/2` * [System] Add `System.restart/0`, `System.pid/0` and `System.no_halt/1` * [System] Add `System.get_env/2`, `System.fetch_env/1`, and `System.fetch_env!/1` * [System] Support `SOURCE_DATE_EPOCH` for reproducible builds #### ExUnit * [ExUnit] Allow multiple `:exclude` on configuration/CLI * [ExUnit.DocTest] No longer wrap doctest errors in custom exceptions. They ended-up hiding more information than showing * [ExUnit.DocTest] Display the actual doctest code when doctest fails #### IEx * [IEx.CLI] Copy ticktime from remote node on IEx `--remsh` * [IEx.CLI] Automatically add a host on node given to `--remsh` #### Logger * [Logger] Use a decentralized mode computation for Logger which allows overloads to be detected more quickly * [Logger] Use `persistent_term` to store configuration whenever available for performance #### Mix * [Mix] Follow XDG base dir specification in Mix for temporary and configuration files * [Mix.Generator] Add `copy_file/3`, `copy_template/4`, and `overwite?/2` * [Mix.Project] Add `preferred_cli_target` that works like `preferred_cli_env` * [mix archive.uninstall] Allow `mix archive.uninstall APP` to uninstall any installed version of APP * [mix new] No longer generate a `config/` directory for mix new * [mix release] Add support for releases * [mix release.init] Add templates for release configuration * [mix test] Allow running tests for a given umbrella app from the umbrella root with `mix test apps/APP/test`. Test failures also include the `apps/APP` prefix in the test location ### 2. Bug fixes #### EEx * [EEx] Consistently trim newlines when you have a single EEx expression per line on multiple lines #### Elixir * [Code] Quote `::` in `Code.format_string!/1` to avoid ambiguity * [Code] Do not crash formatter on false positive sigils * [Enum] Ensure the first equal entry is returned by `Enum.min/2` and `Enum.max/2` * [Kernel] Improve error message when string interpolation is used in a guard * [Kernel] Properly merge and handle docs for callbacks with multiple clauses * [Kernel] Guarantee reproducible builds on modules with dozens of specs * [Kernel] Resolve `__MODULE__` accordingly in nested `defmodule` to avoid double nesting * [Kernel] Type variables starting with an underscore (`_foo`) should not raise compile error * [Kernel] Keep order of elements when macro `in/2` is expanded with a literal list on the right-hand side * [Kernel] Print proper location on undefined function error from dynamically generated functions * [Kernel] **Potentially breaking** Do not leak aliases when nesting module definitions that are fully namespaced modules. If you defined `defmodule Elixir.Foo.Bar` inside `defmodule Foo`, previous Elixir versions would automatically define an alias, but fully namespaced modules such as `Elixir.Foo.Bar` should never define or require an alias. If you were accidentally relying on this broken behaviour, your code may no longer work * [System] Make sure `:init.get_status/0` is set to `{:started, :started}` once the system starts * [Path] Do not expand `~` in `Path.expand/2` when not followed by a path separator * [Protocol] Ensure `debug_info` is kept in protocols * [Regex] Ensure inspect returns valid `~r//` expressions when they are manually compiled with backslashes * [Registry] Fix ETS leak in `Registry.register/2` for already registered calls in unique registries while the process is still alive #### ExUnit * [ExUnit] Raise error if attempting to run single line tests on multiple files * [ExUnit] Return proper error on duplicate child IDs on `start_supervised` #### IEx * [IEx] Automatically shut down IEx if we receive EOF #### Logger * [Logger] Don't discard Logger messages from other nodes as to leave a trail on both systems #### Mix * [mix compile] Ensure Erlang-based Mix compilers (erlang, leex, yecc) set valid position on diagnostics * [mix compile] Ensure compilation halts in an umbrella project if one of the siblings fail to compile * [mix deps] Raise an error if the umbrella app's dir name and `mix.exs` app name don't match * [mix deps.compile] Fix subcommand splitting bug in rebar3 * [mix test] Do not consider modules that are no longer cover compiled when computing coverage report, which could lead to flawed reports ### 3. Soft-deprecations (no warnings emitted) #### Mix * [Mix.Config] `Mix.Config` has been deprecated in favor of the `Config` module that now ships as part of Elixir itself. Reading configuration files should now be done by the `Config.Reader` module ### 4. Hard-deprecations #### Elixir * [CLI] Deprecate `--detached` option, use `--erl "-detached"` instead * [Map] Deprecate Enumerable keys in `Map.drop/2`, `Map.split/2`, and `Map.take/2` * [String] The `:insert_replaced` option in `String.replace/4` has been deprecated. Instead you may pass a function as a replacement or use `:binary.replace/4` if you need to support earlier Elixir versions #### Mix * [Mix.Project] Deprecate `Mix.Project.load_paths/1` in favor of `Mix.Project.compile_path/1` |
||
fhajny
|
3d2ee04e14 |
lang/elixir: Update to 1.7.3.
v1.7.3 ====== 1. Bug fixes ExUnit - [ExUnit.Assertions] Do not attempt to expand `try/1` as it is a special form Mix - [mix compile.app] Do not include applications with `runtime: false` as a runtime dependency for applications coming from Hex v1.7.2 ====== 1. Bug fixes Elixir - [DateTime] Take negative years into account in `DateTime.from_iso8601/1` - [Kernel] Do not emit warnings for repeated docs over different clauses due to false positives Mix - [mix compile] Properly mark top-level dependencies as optional and as runtime. This fixes a bug where Mix attempted to start optional dependencies of a package when those optional dependencies were not available - [mix compile] Avoid deadlock when a config has a timestamp later than current time - [mix help] Show task and alias help when both are available - [mix test] Do not fail suite if there are no test files v1.7.1 ====== 1. Bug fixes Elixir - [Calendar] Work-around a Dialyzer bug that causes it to loop for a long time, potentially indefinitely v1.7.0 ====== 1. Enhancements Elixir - [Calendar.ISO] Support negative dates in `Calendar.ISO` - [Calendar] Add `Calendar.months_in_year/1` callback - [Code] Add `Code.compile_file/2` that compiles files without leaving footprints on the system - [Code] Add `Code.purge_compiler_modules/0` that purges any compiler module left behind. This is useful for live systems dynamically compiling code - [Code] Add `Code.fetch_docs/1` that returns docs in the [EEP 48](http://erlang.org/eep/eeps/eep-0048.html) format - [Date] Add `Date.months_in_year/1` function - [DynamicSupervisor] Use the name of the `DynamicSupervisor` as the ID whenever possible - [Exception] Provide "did you mean" suggestions on KeyError - [Exception] Provide more information on ArithmeticError on Erlang/OTP 21+ - [Function] Add `Function` module with `capture/3`, `info/1` and `info/2` functions - [GenServer] Support the new `handle_continue/2` callback on Erlang/OTP 21+ - [IO.ANSI] Add cursor movement to `IO.ANSI` - [Kernel] Support adding arbitrary documentation metadata by passing a keyword list to `@doc`, `@moduledoc` and `@typedoc` - [Kernel] Introduce `__STACKTRACE__` to retrieve the current stacktrace inside `catch`/`rescue` (this will be a requirement for Erlang/OTP 21+) - [Kernel] Raise on unsafe variables in order to allow us to better track unused variables - [Kernel] Warn when using `length` to check if a list is not empty on guards - [Kernel] Add hints on mismatched `do`/`end` and others pairs - [Kernel] Warn when comparing structs using the `>`, `<`, `>=` and `<=` operators - [Kernel] Warn on unsupported nested comparisons such as `x < y < z` - [Kernel] Warn if redefining documentation across clauses of the same definition - [Kernel] Warn on unnecessary quotes around atoms, keywords and calls - [Macro] Add `Macro.special_form?/2` and `Macro.operator?/2` that returns `true` if the given name/arity is a special form or operator respectively - [Macro.Env] Add `Macro.Env.vars/1` and `Macro.Env.has_var?/2` that gives access to environment data without accessing private fields - [Regex] Include endianness in the regex version. This allows regexes to be recompiled when an archive is installed in a system with a different endianness - [Registry] Add `Registry.count/1` and `Registry.count_match/4` - [String] Update to Unicode 11 - [StringIO] Add `StringIO.open/3` - [System] Use ISO 8601 in `System.build_info/0` ExUnit - [ExUnit.Assertion] Print the arguments in error reports when asserting on a function call. For example, if `assert is_list(arg)` fails, the argument will be shown in the report - [ExUnit.Diff] Improve diffing of lists when one list is a subset of the other - [ExUnit.DocTest] Show colored diffs on failed doctests - [ExUnit.Formatter] Excluded tests, via the `--exclude` and `--only` flags, are now shown as "Excluded" in reports. Tests skipped via `@tag :skip` are now exclusively shown as "Skipped" and in yellow IEx - [IEx.Helpers] Add `use_if_available/2` - [IEx.Helpers] Allow `force: true` option in `recompile/1` - [IEx.Helpers] Add `:allocators` pane to `runtime_info/1` - [IEx.Helpers] Show documentation metadata in `h/1` helpers Logger - [Logger] Ensure nil metadata is always pruned - [Logger] Only evaluate Logger macro arguments when the message will be logged - [Logger] Add `:compile_time_purge_matching` to purge logger calls that match certain compile time metadata, such as module names and application names - [Logger] Log to `:stderr` if a backend fails and there are no other backends - [Logger] Allow translators to return custom metadata - [Logger] Return `:crash_reason`, `:initial_call` and `:registered_name` as metadata in crash reports coming from Erlang/OTP Mix - [mix archive.install] Add support for the Hex organization via `--organization` - [mix archive.uninstall] Support `--force` flag - [mix compile] Improve support for external build tools such as `rebar` - [mix deps] Include `override: true` in rebar dependencies to make the behaviour closer to how rebar3 works (although diverged deps are still marked as diverged) - [mix escript.install] Add support for the Hex organization via `--organization` - [mix escript.uninstall] Support `--force` flag - [mix help] Also list aliases - [mix local] Use ipv6 with auto fallback to ipv4 when downloading data - [mix profile] Allow all profiling tasks to run programatically - [mix test] Add `--failed` option that only runs previously failed tests - [mix test] Print coverage summary by default when the `--cover` flag is given - [Mix.Project] Add `Mix.Project.clear_deps_cache/0` - [Mix.Project] Add `Mix.Project.config_mtime/0` that caches the config mtime values to avoid filesystem access 2. Bug fixes Elixir - [IO.ANSI.Docs] Fix table column alignment when converting docs to ANSI escapes - [Code] Ensure `string_to_quoted` returns error tuples instead of raising in certain constructs - [Code.Formatter] Consistently format keyword lists in function calls with and without parens - [Code.Formatter] Do not break after `->` when there are only comments and one-line clauses - [File] Allow the `:trim_bom` option to be used with `:encoding` - [Kernel] Raise on unsafe variables as some of the code emitted with unsafe variables would not correctly propagate variables or would disable tail call optimization semantics - [Kernel] Do not crash on dynamic sizes in binary generators with collectable into in comprehensions - [Kernel] Do not crash on literals with non-unary size in binary generators with collectable into in comprehensions - [Task] Improve error reports and exit reasons for failed tasks on Erlang/OTP 20+ ExUnit - [ExUnit.Case] Raise proper error if `@tag` and `@moduletag` are used before `use ExUnit.Case` - [ExUnit.Case] Raise proper error if `@describetag` is used outside of `describe/2` blocks - [ExUnit.DocTest] Emit proper assertion error on doctests with invalid UTF-8 Mix - [mix archive.install] Fetch optional dependencies when installing an archive from Git/Hex - [mix compile] Properly track config files in umbrella projects and recompile when any relevant umbrella configuration changes - [mix deps] Ensure the same dependency from different SCMs are tagged as diverged when those SCMs are remote and non-remote - [mix deps] Ensure we re-run dependency resolution when overriding a skipped dep in umbrella - [mix deps.compile] Perform clean builds for dependencies on outdated locks to avoid old modules from affecting future compilation - [mix escript.install] Fetch optional dependencies when installing an escript from Git/Hex 3. Soft-deprecations (no warnings emitted) Elixir - [Code] Deprecate `Code.load_file/2` in favor of `Code.compile_file/2` - [Code] Deprecate `Code.loaded_files/0` in favor of `Code.required_files/0` - [Code] Deprecate `Code.unload_files/1` in favor of `Code.unrequire_files/1` Logger - [Logger] `compile_time_purge_level` is deprecated in favor of `compile_time_purge_matching` 4. Hard-deprecations Elixir - [Code] `Code.get_docs/2` is deprecated in favor of `Code.fetch_docs/1` - [Enum] `Enum.chunk/2/3/4` is deprecated in favor of `Enum.chunk_every/2/3/4` - notice `chunk_every` does not discard incomplete chunks by default - [GenServer] Warn if `super` is used in any of the GenServer callbacks - [Kernel] `not left in right` is ambiguous and is deprecated in favor of `left not in right` - [Kernel] Warn on confusing operator sequences, such as `1+++1` meaning `1 ++ +1` or `........` meaning `... .. ...` - [OptionParser] Deprecate dynamic option parser mode that depended on atoms to be previously loaded and therefore behaved inconsistently - [Stream] `Stream.chunk/2/3/4` is deprecated in favor of `Stream.chunk_every/2/3/4` - notice `chunk_every` does not discard incomplete chunks by default |
||
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. |