diff --git a/elixir-1.14.0.tar.gz b/elixir-1.14.0.tar.gz deleted file mode 100644 index 183fadf..0000000 --- a/elixir-1.14.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac129e266a1e04cdc389551843ec3dbdf36086bb2174d3d7e7936e820735003b -size 3067581 diff --git a/elixir-1.14.2.tar.gz b/elixir-1.14.2.tar.gz new file mode 100644 index 0000000..7908473 --- /dev/null +++ b/elixir-1.14.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f79e384706495725119f60982fa16ea82d510c3fbeacfc6ee1a77c792bf152a +size 3085613 diff --git a/elixir-doc.spec b/elixir-doc.spec index 5696ffb..1030414 100644 --- a/elixir-doc.spec +++ b/elixir-doc.spec @@ -1,7 +1,7 @@ # # spec file for package elixir-doc # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: elixir-doc -Version: 1.14.0 +Version: 1.14.2 Release: 0 Summary: Documentation for elixir License: Apache-2.0 diff --git a/elixir.changes b/elixir.changes index ab9280b..77d9aac 100644 --- a/elixir.changes +++ b/elixir.changes @@ -1,3 +1,72 @@ +------------------------------------------------------------------- +Tue Jan 10 11:50:09 UTC 2023 - Fabrizio Sestito + +- Elixir 1.14.2 + * 1. Enhancements + Elixir + + [Code] Add Code.eval_quoted_with_env/4 with support for the :prune_binding option + + ExUnit + + [ExUnit.Case] Allow test cases to not be registered on use + [ExUnit.DocTest] Include :doctest and :doctest_line as meta tags + [ExUnit.Formatter] Expose ExUnit.Formatter.format_assertion_diff/4 + + Mix + + [Mix] Mix.install/2 accepts atoms as paths + + * 2. Bug fixes + Elixir + + [Code.Formatter] Fix size*unit shortcut in bitstring + [Kernel] Generate unique variables for macro expansion of defguard + [Protocol] Expand :for in protocols with the appropriate env + + ExUnit + + [ExUnit] Do not run duplicate cases on ExUnit.run/1 + + Mix + + [mix test] Ensure proper error message when there is no test directory + +- Elixir 1.14.1 + * 1. Enhancements + Elixir + + [Kernel] Perform partial expansion of literals in module attributes + [Kernel] Do not add compile-time dependencies for literals as defaults in Application.compile_env/3 inside module attributes + [Macro] Add Macro.expand_literals/2 and Macro.expand_literals/3 + [System] Add :close_stdin to System.shell/2 + Mix + + [mix test] Accept --all-warnings option + * 2. Bug fixes + Elixir + + [Kernel] Fix misleading warning when :uniq is given in for comprehensions and the result is unused + [Kernel] Improve error message for when there is a conflicting struct and ignoring module conflict + [Kernel] Do not delete @enforce_keys attribute after defstruct declaration + [Kernel] Do not crash the checker on modules with missing :debug_info chunk + [Macro] Fix error in Macro.to_string/2 when converting an AST with :erlang.binary_to_atom/2 + [String] Fix String.split/3 and String.next_grapheme/1 returning invalid results on invalid UTF-8 encoding + [System] Do not close stdin by default in System.shell/2 + [URI] Do not return uri.port as :undefined in certain cases in URI.new/1 + + ExUnit + + [ExUnit.DocTest] Do not crash when both :moduledoc and functions are specified in :only + + IEx + + [CLI] Fix invalid argument handling when --no-pry is given + + Mix + + [mix format] Do not cache inputs from .formatter.exs so they are properly re-evaluted on every call + ------------------------------------------------------------------- Wed Sep 7 06:38:23 UTC 2022 - Fabrizio Sestito @@ -5,188 +74,188 @@ Wed Sep 7 06:38:23 UTC 2022 - Fabrizio Sestito * 1. Enhancements EEx - [EEx] Support multi-line comments to EEx via <%!-- --%> - [EEx] Add EEx.tokenize/2 + [EEx] Support multi-line comments to EEx via <%!-- --%> + [EEx] Add EEx.tokenize/2 Elixir - [Access] Add Access.slice/1 - [Application] Add Application.compile_env/4 and Application.compile_env!/3 to read the compile-time environment inside macros - [Calendar] Support ISO8601 basic format parsing with DateTime.from_iso8601/2 - [Calendar] Add day/hour/minute on add/diff across different calendar modules - [Code] Add :normalize_bitstring_modifiers to Code.format_string!/2 - [Code] Emit deprecation and type warnings for invalid options in on Code.compile_string/2 and Code.compile_quoted/2 - [Code] Warn if an outdated lexical tracker is given on eval - [Code] Add Code.env_for_eval/1 and Code.eval_quoted_with_env/3 - [Code] Improve stacktraces from eval operations on Erlang/OTP 25+ - [Code.Fragment] Add support for __MODULE__ in several functions - [Code.Fragment] Support surround and context suggestions across multiple lines - [Enum] Allow slicing with steps in Enum.slice/2 - [File] Support dereference_symlinks: true in File.cp/3 and File.cp_r/3 - [Float] Do not show floats in scientific notation if below 1.0e16 and the fractional value is precisely zero - [Float] Add Float.min_finite/0 and Float.max_finite/0 - [Inspect] Improve error reporting when there is a faulty implementation of the Inspect protocol - [Inspect] Allow :optional when deriving the Inspect protocol for hiding fields that match their default value - [Inspect] Inspect struct fields in the order they are declared in defstruct - [Inspect] Use expression-based inspection for Date.Range, MapSet, and Version.Requirement - [IO] Support Macro.Env and keywords as stacktrace definitions in IO.warn/2 - [IO] Add IO.ANSI.syntax_colors/0 and related configuration to be shared across IEx and dbg - [Kernel] Add new dbg/0-2 macro - [Kernel] Allow any guard expression as the size of a bitstring in a pattern match - [Kernel] Allow composite types with pins as the map key in a pattern match - [Kernel] Print escaped version of control chars when they show up as unexpected tokens - [Kernel] Warn on confusable non-ASCII identifiers - [Kernel] Add .. as a nullary operator that returns 0..-1//1 - [Kernel] Implement Unicode Technical Standard #39 recommendations. In particular, we warn for confusable scripts and restrict identifiers to single-scripts or highly restrictive mixed-scripts - [Kernel] Automatically perform NFC conversion of identifiers - [Kernel] Add binary_slice/2 and binary_slice/3 - [Kernel] Lazily expand module attributes to avoid compile-time deps - [Kernel] Automatically cascade generated: true annotations on macro expansion - [Keyword] Add Keyword.from_keys/2 and Keyword.replace_lazy/3 - [List] Add List.keysort/3 with support for a sorter function - [Macro] Add Macro.classify_atom/1 and Macro.inspect_atom/2 - [Macro] Add Macro.expand_literal/2 and Macro.path/2 - [Macro.Env] Add Macro.Env.prune_compile_info/1 - [Map] Add Map.from_keys/2 and Map.replace_lazy/3 - [MapSet] Add MapSet.filter/2, MapSet.reject/2, and MapSet.symmetric_difference/2 - [Node] Add Node.spawn_monitor/2 and Node.spawn_monitor/4 - [Module] Support new @after_verify attribute for executing code whenever a module is verified - [PartitionSupervisor] Add PartitionSupervisor that starts multiple isolated partitions of the same child for scalability - [Path] Add Path.safe_relative/1 and Path.safe_relative_to/2 - [Registry] Add Registry.count_select/2 - [Stream] Add Stream.duplicate/2 and Stream.transform/5 - [String] Support empty lookup lists in String.replace/3, String.split/3, and String.splitter/3 - [String] Allow slicing with steps in String.slice/2 - [Task] Add :zip_input_on_exit option to Task.async_stream/3 - [Task] Store :mfa in the Task struct for reflection purposes - [URI] Add URI.append_query/2 - [Version] Add Version.to_string/1 - [Version] Colorize Version.Requirement source in the Inspect protocol + [Access] Add Access.slice/1 + [Application] Add Application.compile_env/4 and Application.compile_env!/3 to read the compile-time environment inside macros + [Calendar] Support ISO8601 basic format parsing with DateTime.from_iso8601/2 + [Calendar] Add day/hour/minute on add/diff across different calendar modules + [Code] Add :normalize_bitstring_modifiers to Code.format_string!/2 + [Code] Emit deprecation and type warnings for invalid options in on Code.compile_string/2 and Code.compile_quoted/2 + [Code] Warn if an outdated lexical tracker is given on eval + [Code] Add Code.env_for_eval/1 and Code.eval_quoted_with_env/3 + [Code] Improve stacktraces from eval operations on Erlang/OTP 25+ + [Code.Fragment] Add support for __MODULE__ in several functions + [Code.Fragment] Support surround and context suggestions across multiple lines + [Enum] Allow slicing with steps in Enum.slice/2 + [File] Support dereference_symlinks: true in File.cp/3 and File.cp_r/3 + [Float] Do not show floats in scientific notation if below 1.0e16 and the fractional value is precisely zero + [Float] Add Float.min_finite/0 and Float.max_finite/0 + [Inspect] Improve error reporting when there is a faulty implementation of the Inspect protocol + [Inspect] Allow :optional when deriving the Inspect protocol for hiding fields that match their default value + [Inspect] Inspect struct fields in the order they are declared in defstruct + [Inspect] Use expression-based inspection for Date.Range, MapSet, and Version.Requirement + [IO] Support Macro.Env and keywords as stacktrace definitions in IO.warn/2 + [IO] Add IO.ANSI.syntax_colors/0 and related configuration to be shared across IEx and dbg + [Kernel] Add new dbg/0-2 macro + [Kernel] Allow any guard expression as the size of a bitstring in a pattern match + [Kernel] Allow composite types with pins as the map key in a pattern match + [Kernel] Print escaped version of control chars when they show up as unexpected tokens + [Kernel] Warn on confusable non-ASCII identifiers + [Kernel] Add .. as a nullary operator that returns 0..-1//1 + [Kernel] Implement Unicode Technical Standard #39 recommendations. In particular, we warn for confusable scripts and restrict identifiers to single-scripts or highly restrictive mixed-scripts + [Kernel] Automatically perform NFC conversion of identifiers + [Kernel] Add binary_slice/2 and binary_slice/3 + [Kernel] Lazily expand module attributes to avoid compile-time deps + [Kernel] Automatically cascade generated: true annotations on macro expansion + [Keyword] Add Keyword.from_keys/2 and Keyword.replace_lazy/3 + [List] Add List.keysort/3 with support for a sorter function + [Macro] Add Macro.classify_atom/1 and Macro.inspect_atom/2 + [Macro] Add Macro.expand_literal/2 and Macro.path/2 + [Macro.Env] Add Macro.Env.prune_compile_info/1 + [Map] Add Map.from_keys/2 and Map.replace_lazy/3 + [MapSet] Add MapSet.filter/2, MapSet.reject/2, and MapSet.symmetric_difference/2 + [Node] Add Node.spawn_monitor/2 and Node.spawn_monitor/4 + [Module] Support new @after_verify attribute for executing code whenever a module is verified + [PartitionSupervisor] Add PartitionSupervisor that starts multiple isolated partitions of the same child for scalability + [Path] Add Path.safe_relative/1 and Path.safe_relative_to/2 + [Registry] Add Registry.count_select/2 + [Stream] Add Stream.duplicate/2 and Stream.transform/5 + [String] Support empty lookup lists in String.replace/3, String.split/3, and String.splitter/3 + [String] Allow slicing with steps in String.slice/2 + [Task] Add :zip_input_on_exit option to Task.async_stream/3 + [Task] Store :mfa in the Task struct for reflection purposes + [URI] Add URI.append_query/2 + [Version] Add Version.to_string/1 + [Version] Colorize Version.Requirement source in the Inspect protocol ExUnit - [ExUnit] Add ExUnit.Callbacks.start_link_supervised!/2 - [ExUnit] Add ExUnit.run/1 to rerun test modules - [ExUnit] Colorize summary in yellow with message when all tests are excluded - [ExUnit] Display friendly error when test name is too long + [ExUnit] Add ExUnit.Callbacks.start_link_supervised!/2 + [ExUnit] Add ExUnit.run/1 to rerun test modules + [ExUnit] Colorize summary in yellow with message when all tests are excluded + [ExUnit] Display friendly error when test name is too long IEx - [IEx] Evaluate --dot-iex line by line - [IEx] Add line-by-line evaluation of IEx breakpoints - [IEx.Autocomplete] Autocomplete bitstrings modifiers (after :: inside <<...>>) - [IEx.Helpers] Allow an atom to be given to pid/1 - [IEx.Helpers] Support sigils in h/1 + [IEx] Evaluate --dot-iex line by line + [IEx] Add line-by-line evaluation of IEx breakpoints + [IEx.Autocomplete] Autocomplete bitstrings modifiers (after :: inside <<...>>) + [IEx.Helpers] Allow an atom to be given to pid/1 + [IEx.Helpers] Support sigils in h/1 Logger - [Logger] Add Logger.put_process_level/2 + [Logger] Add Logger.put_process_level/2 Mix - [Mix] Add :config_path and :lockfile options to Mix.install/2 - [mix compile] Add --no-optional-deps to skip optional dependencies to test compilation works without optional dependencies - [mix compile] Include column information on error diagnostics when possible - [mix deps] Mix.Dep.Converger now tells which deps formed a cycle - [mix do] Support --app option to restrict recursive tasks in umbrella projects - [mix do] Allow using + as a task separator instead of comma - [mix format] Support filename in mix format - when reading from stdin - [mix format] Compile if mix format plugins are missing - [mix new] Do not allow projects to be created with application names that conflict with multi-arg Erlang VM switches - [mix profile] Return the return value of the profiled function - [mix release] Make BEAM compression opt-in - [mix release] Let :runtime_config_path accept false to skip the config/runtime.exs - [mix test] Improve error message when suite fails due to coverage - [mix test] Support :test_elixirc_options and default to not generating docs nor debug info chunk for tests - [mix xref] Support --group flag in mix xref graph + [Mix] Add :config_path and :lockfile options to Mix.install/2 + [mix compile] Add --no-optional-deps to skip optional dependencies to test compilation works without optional dependencies + [mix compile] Include column information on error diagnostics when possible + [mix deps] Mix.Dep.Converger now tells which deps formed a cycle + [mix do] Support --app option to restrict recursive tasks in umbrella projects + [mix do] Allow using + as a task separator instead of comma + [mix format] Support filename in mix format - when reading from stdin + [mix format] Compile if mix format plugins are missing + [mix new] Do not allow projects to be created with application names that conflict with multi-arg Erlang VM switches + [mix profile] Return the return value of the profiled function + [mix release] Make BEAM compression opt-in + [mix release] Let :runtime_config_path accept false to skip the config/runtime.exs + [mix test] Improve error message when suite fails due to coverage + [mix test] Support :test_elixirc_options and default to not generating docs nor debug info chunk for tests + [mix xref] Support --group flag in mix xref graph * 2. Bug fixes Elixir - [Calendar] Handle widths with "0" in them in Calendar.strftime/3 - [CLI] Improve errors on incorrect --rpc-eval usage - [CLI] Return proper exit code on Windows - [Code] Do not emit warnings when formatting code - [Enum] Allow slices to overflow on both starting and ending positions - [Kernel] Do not allow restricted characters in identifiers according to UTS39 - [Kernel] Define __exception__ field as true when expanding exceptions in typespecs - [Kernel] Warn if any of True, False, and Nil aliases are used - [Kernel] Warn on underived @derive attributes - [Kernel] Remove compile-time dependency from defimpl :for - [Kernel] Track all arities on imported functions - [Kernel] Fix equality in guards for dynamic ranges without steps - [Module] Fix loop while unifying type variables - [Protocol] Warn if a protocol has no definitions - [Regex] Show list options when inspecting a Regex manually defined with Regex.compile/2 - [String] Allow slices to overflow on both starting and ending positions - [System] Raise non-generic exception on missing env in System.fetch_env!/1 to mirror map operations + [Calendar] Handle widths with "0" in them in Calendar.strftime/3 + [CLI] Improve errors on incorrect --rpc-eval usage + [CLI] Return proper exit code on Windows + [Code] Do not emit warnings when formatting code + [Enum] Allow slices to overflow on both starting and ending positions + [Kernel] Do not allow restricted characters in identifiers according to UTS39 + [Kernel] Define __exception__ field as true when expanding exceptions in typespecs + [Kernel] Warn if any of True, False, and Nil aliases are used + [Kernel] Warn on underived @derive attributes + [Kernel] Remove compile-time dependency from defimpl :for + [Kernel] Track all arities on imported functions + [Kernel] Fix equality in guards for dynamic ranges without steps + [Module] Fix loop while unifying type variables + [Protocol] Warn if a protocol has no definitions + [Regex] Show list options when inspecting a Regex manually defined with Regex.compile/2 + [String] Allow slices to overflow on both starting and ending positions + [System] Raise non-generic exception on missing env in System.fetch_env!/1 to mirror map operations ExUnit - [ExUnit] Do not crash when diffing unknown bindings in guards - [ExUnit] Properly print diffs when comparing improper lists with strings at the tail position - [ExUnit] Add short hash to tmp_dir in ExUnit to avoid test name collision - [ExUnit] Do not store logs in the CLI formatter (this reduces memory usage for suites with capture_log) - [ExUnit] Run ExUnit.after_suite/1 callback even when no tests run - [ExUnit] Fix scenario where setup with imported function from within describe failed to compile + [ExUnit] Do not crash when diffing unknown bindings in guards + [ExUnit] Properly print diffs when comparing improper lists with strings at the tail position + [ExUnit] Add short hash to tmp_dir in ExUnit to avoid test name collision + [ExUnit] Do not store logs in the CLI formatter (this reduces memory usage for suites with capture_log) + [ExUnit] Run ExUnit.after_suite/1 callback even when no tests run + [ExUnit] Fix scenario where setup with imported function from within describe failed to compile IEx - [IEx] Disallow short-hand pipe after matches - [IEx] Fix exports/1 in IEx for long function names + [IEx] Disallow short-hand pipe after matches + [IEx] Fix exports/1 in IEx for long function names Mix - [mix compile.elixir] Fix --warnings-as-errors when used with --all-warnings - [mix compile.elixir] Ensure semantic recompilation cascades to path dependencies - [mix compile.elixir] Lock the compiler to avoid concurrent usage - [mix format] Do not add new lines if the formatted file is empty - [mix format] Properly compile dependencies on mix format - [mix release] Only set RELEASE_MODE after env.{sh,bat} are executed - [mix release] Allow application mode configuration to cascade to dependencies - [mix xref] Do not emit already consolidated warnings during mix xref trace - [Mix] Do not start apps with runtime: false on Mix.install/2 + [mix compile.elixir] Fix --warnings-as-errors when used with --all-warnings + [mix compile.elixir] Ensure semantic recompilation cascades to path dependencies + [mix compile.elixir] Lock the compiler to avoid concurrent usage + [mix format] Do not add new lines if the formatted file is empty + [mix format] Properly compile dependencies on mix format + [mix release] Only set RELEASE_MODE after env.{sh,bat} are executed + [mix release] Allow application mode configuration to cascade to dependencies + [mix xref] Do not emit already consolidated warnings during mix xref trace + [Mix] Do not start apps with runtime: false on Mix.install/2 * 3. Soft deprecations (no warnings emitted) Elixir - [File] Passing a callback as third argument to File.cp/3 and File.cp_r/3 is deprecated. - Instead pass the callback the :on_conflict key of a keyword list + [File] Passing a callback as third argument to File.cp/3 and File.cp_r/3 is deprecated. + Instead pass the callback the :on_conflict key of a keyword list EEx - [EEx] Using <%# ... %> for comments is deprecated. Please use <% # ... %> or the new multi-line comments with <%!-- ... --%> + [EEx] Using <%# ... %> for comments is deprecated. Please use <% # ... %> or the new multi-line comments with <%!-- ... --%> Logger - [Logger] Deprecate Logger.enable/1 and Logger.disable/1 in favor of Logger.put_process_level/2 + [Logger] Deprecate Logger.enable/1 and Logger.disable/1 in favor of Logger.put_process_level/2 Mix - [mix cmd] The --app option in mix cmd CMD is deprecated in favor of the more efficient mix do --app app cmd CMD + [mix cmd] The --app option in mix cmd CMD is deprecated in favor of the more efficient mix do --app app cmd CMD * 4. Hard deprecations Elixir - [Application] Calling Application.get_env/3 and friends in the module body is now discouraged, use Application.compile_env/3 instead - [Bitwise] use Bitwise is deprecated, use import Bitwise instead - [Bitwise] ~~~ is deprecated in favor of bnot for clarity - [Kernel.ParallelCompiler] Returning a list or two-element tuple from :each_cycle is deprecated, return a {:compile | :runtime, modules, warnings} tuple instead - [Kernel] Deprecate the operator <|> to avoid ambiguity with upcoming extended numerical operators - [String] Deprecate passing a binary compiled pattern to String.starts_with?/2 + [Application] Calling Application.get_env/3 and friends in the module body is now discouraged, use Application.compile_env/3 instead + [Bitwise] use Bitwise is deprecated, use import Bitwise instead + [Bitwise] ~~~ is deprecated in favor of bnot for clarity + [Kernel.ParallelCompiler] Returning a list or two-element tuple from :each_cycle is deprecated, return a {:compile | :runtime, modules, warnings} tuple instead + [Kernel] Deprecate the operator <|> to avoid ambiguity with upcoming extended numerical operators + [String] Deprecate passing a binary compiled pattern to String.starts_with?/2 Logger - [Logger] Deprecate $levelpad on message formatting + [Logger] Deprecate $levelpad on message formatting Mix - [Mix] Mix.Tasks.Xref.calls/1 is deprecated in favor of compilation tracers + [Mix] Mix.Tasks.Xref.calls/1 is deprecated in favor of compilation tracers * 5. Backwards incompatible changes Mix - [mix local.rebar] Remove support for rebar2, which has not been updated in 5 years, and is no longer supported on recent Erlang/OTP versions + [mix local.rebar] Remove support for rebar2, which has not been updated in 5 years, and is no longer supported on recent Erlang/OTP versions ------------------------------------------------------------------- Sat Apr 9 11:16:39 UTC 2022 - Fabrizio Sestito @@ -210,7 +279,6 @@ Sat Apr 9 11:16:39 UTC 2022 - Fabrizio Sestito [mix rebar] Deprecate Rebar 2 as it no longer works on Erlang/OTP 25 - ------------------------------------------------------------------- Tue Feb 22 20:01:32 UTC 2022 - Fabrizio Sestito @@ -218,23 +286,22 @@ Tue Feb 22 20:01:32 UTC 2022 - Fabrizio Sestito * 1. Enhancements Mix - [mix format] Supply file and line to formatter plugins - [mix format] Support embedded Elixir expressions inside formatter plugins + [mix format] Supply file and line to formatter plugins + [mix format] Support embedded Elixir expressions inside formatter plugins * 2. Bug fixes Elixir - [Code] Fix duplicate bindings causing errors during evaluation - [Kernel] Make sure signatures stored in the Documentation chunk does not contain newlines - [Kernel] Fix infinite loop when compiling guards with recursive map access - [Macro] Fix error on Macro.to_string/1 when the plain alias Elixir is given - [String] Fix error for certain codepoint combinations in String.split_at/2 + [Code] Fix duplicate bindings causing errors during evaluation + [Kernel] Make sure signatures stored in the Documentation chunk does not contain newlines + [Kernel] Fix infinite loop when compiling guards with recursive map access + [Macro] Fix error on Macro.to_string/1 when the plain alias Elixir is given + [String] Fix error for certain codepoint combinations in String.split_at/2 Mix - [mix compile] Recompile project files when exports from dependencies change - [mix test] Fix total coverage always showing in red even when above the threshold - + [mix compile] Recompile project files when exports from dependencies change + [mix test] Fix total coverage always showing in red even when above the threshold ------------------------------------------------------------------- Fri Jan 14 15:23:32 UTC 2022 - Fabrizio Sestito @@ -257,201 +324,211 @@ Fri Jan 14 15:23:32 UTC 2022 - Fabrizio Sestito [Map] Deprecate the recently added Map.map/2 as it is equivalent to Map.new/2 [Protocol] Warn on zero arity callbacks inside protocols - ------------------------------------------------------------------- Thu Jan 6 19:50:32 UTC 2022 - Sven Marquardt - Elixir 1.13.1 * 1. Bug fixes - Elixir - [Code] Do not show code snippets in `SyntaxError` and `TokenMissingError` if line is empty - [Exception] Do not fail blaming `ArgumentError` for improper lists on `apply/3` - [Macro] Set a max `line_length` for `Macro.to_string/1` - [Macro] Fix formatting of lists on module attributes for `Macro.to_string/1` - [String] Fix incorrect codepoint byte counting in `slice` with negative positions in ranges - [Task] Ensure async streams can be consumed from another process than the one that creates them - [URI] Undeprecate `URI.parse/1` as `URI.new/1` is too strict in many common cases - [URI] Make sure `URI.new/1` returns nil for empty paths + + [Code] Do not show code snippets in `SyntaxError` and `TokenMissingError` if line is empty + [Exception] Do not fail blaming `ArgumentError` for improper lists on `apply/3` + [Macro] Set a max `line_length` for `Macro.to_string/1` + [Macro] Fix formatting of lists on module attributes for `Macro.to_string/1` + [String] Fix incorrect codepoint byte counting in `slice` with negative positions in ranges + [Task] Ensure async streams can be consumed from another process than the one that creates them + [URI] Undeprecate `URI.parse/1` as `URI.new/1` is too strict in many common cases + [URI] Make sure `URI.new/1` returns nil for empty paths IEx - [IEx] Make sure the `--version` flag halts IEx + + [IEx] Make sure the `--version` flag halts IEx Mix - [Mix] Make protocol consolidation part of the `Mix.install/2` cache + [Mix] Make protocol consolidation part of the `Mix.install/2` cache ------------------------------------------------------------------- Thu Jan 6 18:45:51 UTC 2022 - Sven Marquardt + - Elixir 1.13.0 * Enhancements - EEx - [EEx] Add `:parser_options` to EEx functions + + [EEx] Add `:parser_options` to EEx functions Elixir - [Calendar] Add `c:Calendar.year_of_era/3` to support calendars where the beginning of a new era does not align with - the beginning of a new year - [CLI] Support `--short-version` on the CLI that does not boot the VM - [Code] Add `Code.string_to_quoted_with_comments/2` and `Code.quoted_to_algebra/2` - [Code] Add more `:token_metadata` to aliases and remote calls when parsing strings - [Code] Add `Code.Fragment` module to provide best-effort information from code fragments. - The module currently provides an updated `Code.Fragment.cursor_context/2` with operator support and - `Code.Fragment.surround_context/2` which looks at a given position in a fragment and find its surrounding delimiters - [Code] Allow custom sigil formatting on `Code.format_string!/2` - [Code] Add `{:on_module, bytecode, :none}` trace to compilation tracers - [Enum] Optimize `Enum.concat/1` for lists of lists - [Enum] Add `Enum.slide/3` - [Exception] Better format Elixir exceptions in Erlang - [Inspect] Allow default inspect fun to be set globally with `Inspect.Opts.default_inspect_fun/1` - [IO] Allow `:eof` to be given as limit to `IO.getn/2` - [Kernel] Support the `:sigils` option in `import Mod, only: :sigils` and allow the sigil modifiers to be also digits - [Kernel] Make `get_in` consistently abort and return `nil` when `nil` values are found (previously Elixir would raise - an error in this case). This allows a user to use `get_in` as a safe navigation operator. - [Kernel] Improve compilation times by reducing the amount of copies of the AST across compiler processes - [Kernel] Raise if trying to define a module with a slash in its name - [Kernel] Warn when `?\` is used and there is no need for a escape character - [Kernel] Track structs in typespecs as export deps instead of compile-time deps - [Kernel] Add power operator (`**/2`) - [Keyword] Add `Keyword.validate/2` - [Keyword] Implement `Keyword.filter/2` and `Keyword.map/2` - [List] Add `List.keyfind!/3` - [Macro] Add `Macro.prewalker/1` and `Macro.postwalker/1` - [Macro.Env] Add the following reflection functions: `required?/2`, `lookup_import/2`, `fetch_alias/2`, and `fetch_macro_alias/2` - [Map] Implement `Map.filter/2` and `Map.map/2` - [Module] Support `:nillify_clauses` in `Module.get_definition/3` - [Module] Add `Module.attributes_in/1` and `Module.overridables_in/1` - [OptionParser] Add "did you mean?" suggestions to `OptionParser.ParseError` messages - [Record] Add record reflection via `@__records__` - [Task] Add `Task.completed/1` - [Task] Add `Task.ignore/1` to keep a task running but ignoring all of its results - [Task] Reduce the amount of copying `Task.async*` functions - [URI] Add `URI.new/1` and `URI.new!/1` - ExUnit - [ExUnit] Show hint if comparing different but equivalent strings - [ExUnit.CaptureIO] Add `with_io/3` to return result with captured io - [ExUnit.CaptureLog] Add `with_log/2` to return result with captured logs + [Calendar] Add `c:Calendar.year_of_era/3` to support calendars where the beginning of a new era does not align with + the beginning of a new year + [CLI] Support `--short-version` on the CLI that does not boot the VM + [Code] Add `Code.string_to_quoted_with_comments/2` and `Code.quoted_to_algebra/2` + [Code] Add more `:token_metadata` to aliases and remote calls when parsing strings + [Code] Add `Code.Fragment` module to provide best-effort information from code fragments. + The module currently provides an updated `Code.Fragment.cursor_context/2` with operator support and + `Code.Fragment.surround_context/2` which looks at a given position in a fragment and find its surrounding delimiters + [Code] Allow custom sigil formatting on `Code.format_string!/2` + [Code] Add `{:on_module, bytecode, :none}` trace to compilation tracers + [Enum] Optimize `Enum.concat/1` for lists of lists + [Enum] Add `Enum.slide/3` + [Exception] Better format Elixir exceptions in Erlang + [Inspect] Allow default inspect fun to be set globally with `Inspect.Opts.default_inspect_fun/1` + [IO] Allow `:eof` to be given as limit to `IO.getn/2` + [Kernel] Support the `:sigils` option in `import Mod, only: :sigils` and allow the sigil modifiers to be also digits + [Kernel] Make `get_in` consistently abort and return `nil` when `nil` values are found (previously Elixir would raise + an error in this case). This allows a user to use `get_in` as a safe navigation operator. + [Kernel] Improve compilation times by reducing the amount of copies of the AST across compiler processes + [Kernel] Raise if trying to define a module with a slash in its name + [Kernel] Warn when `?\` is used and there is no need for a escape character + [Kernel] Track structs in typespecs as export deps instead of compile-time deps + [Kernel] Add power operator (`**/2`) + [Keyword] Add `Keyword.validate/2` + [Keyword] Implement `Keyword.filter/2` and `Keyword.map/2` + [List] Add `List.keyfind!/3` + [Macro] Add `Macro.prewalker/1` and `Macro.postwalker/1` + [Macro.Env] Add the following reflection functions: `required?/2`, `lookup_import/2`, `fetch_alias/2`, and `fetch_macro_alias/2` + [Map] Implement `Map.filter/2` and `Map.map/2` + [Module] Support `:nillify_clauses` in `Module.get_definition/3` + [Module] Add `Module.attributes_in/1` and `Module.overridables_in/1` + [OptionParser] Add "did you mean?" suggestions to `OptionParser.ParseError` messages + [Record] Add record reflection via `@__records__` + [Task] Add `Task.completed/1` + [Task] Add `Task.ignore/1` to keep a task running but ignoring all of its results + [Task] Reduce the amount of copying `Task.async*` functions + [URI] Add `URI.new/1` and `URI.new!/1` - IEx - [IEx.Autocomplete] Add path autocompletion whenever when the cursor follows `"./` or `"/` or `"DRIVER:` where - `DRIVER` is a single letter - [IEx.Autocomplete] Add autocompletion for sigils, struct names, and struct fields - [IEx.Helpers] Allow multiple modules to be given to `r/1` + ExUnit + [ExUnit] Show hint if comparing different but equivalent strings + [ExUnit.CaptureIO] Add `with_io/3` to return result with captured io + [ExUnit.CaptureLog] Add `with_log/2` to return result with captured logs - Logger - [Logger] Add `Logger.put_application_level/2` - [Logger] Print all log levels in accordance to Erlang/OTP. This also means `[warn]` is now shown as `[warning]` + IEx + [IEx.Autocomplete] Add path autocompletion whenever when the cursor follows `"./` or `"/` or `"DRIVER:` where + `DRIVER` is a single letter + [IEx.Autocomplete] Add autocompletion for sigils, struct names, and struct fields + [IEx.Helpers] Allow multiple modules to be given to `r/1` - Mix - [Mix] Add `MIX_INSTALL_FORCE` environment variable support - [Mix] Support `:config` and `:system_env` in `Mix.install/2` - [Mix] Add `Mix.installed?/0` - [Mix.Shell] Add `:default` option to `Mix.Shell.yes?` - [mix archive.install] Run `loadconfig` before building archive - [mix compile] Move Elixir version check to before deps are compiled, in order to give feedback earlier - [mix compile.elixir] Do not recompile files if their modification time change but their contents are still the same and the .beam files are still on disk - [mix compile.elixir] Do not recompile all Elixir sources when Erlang modules change, only dependent ones - [mix compile.elixir] Do not recompile Elixir files if `mix.exs` changes, instead recompile only files using `Mix.Project` or trigger a recompilation if a compiler option changes - [mix compile.elixir] Only recompile needed files when a dependency is added, updated or removed - [mix compile.elixir] Only recompile needed files when a dependency is configured - [mix deps] Add `:subdir` option to git deps - [mix escript.install] Run `loadconfig` before building escript - [mix format] Support `:plugins` in `mix format` that can hook into custom extensions and sigils - [mix format] Add `Mix.Tasks.Format.formatter_for_file/2` - [mix local.rebar] No longer support `sub_dirs` in Rebar 2 to help migration towards Rebar 3 - [mix local.rebar] Support `--if-missing` option when installing Rebar - [mix local.rebar] Set `REBAR_PROFILE=prod` when compiling Rebar dependencies - [mix test] Support `--profile-require=time` to profile the time loading test files themselves - [mix test] Allow filtering modules from coverage using regex - [mix test] Allow the exit status of ExUnit to be configured and set the default to 2 - [mix test] Exit with a status of 3 when coverage falls below threshold - [mix test] Write failed manifest when suite fails due to --warnings-as-errors - [mix test] Ignore `MIX_TEST_PARTITION` when partitions set to 1 - [mix xref] Support multiple sinks and sources in `mix xref graph` - [mix xref] Add `trace` subcommand to print compilation dependencies between files - [mix xref] Add `--fail-above` option to `mix xref` - [mix xref] Add `--label compile-connected` to `mix xref` + Logger + [Logger] Add `Logger.put_application_level/2` + [Logger] Print all log levels in accordance to Erlang/OTP. This also means `[warn]` is now shown as `[warning]` + + Mix + [Mix] Add `MIX_INSTALL_FORCE` environment variable support + [Mix] Support `:config` and `:system_env` in `Mix.install/2` + [Mix] Add `Mix.installed?/0` + [Mix.Shell] Add `:default` option to `Mix.Shell.yes?` + [mix archive.install] Run `loadconfig` before building archive + [mix compile] Move Elixir version check to before deps are compiled, in order to give feedback earlier + [mix compile.elixir] Do not recompile files if their modification time change but their contents are still the same and the .beam files are still on disk + [mix compile.elixir] Do not recompile all Elixir sources when Erlang modules change, only dependent ones + [mix compile.elixir] Do not recompile Elixir files if `mix.exs` changes, instead recompile only files using `Mix.Project` or trigger a recompilation if a compiler option changes + [mix compile.elixir] Only recompile needed files when a dependency is added, updated or removed + [mix compile.elixir] Only recompile needed files when a dependency is configured + [mix deps] Add `:subdir` option to git deps + [mix escript.install] Run `loadconfig` before building escript + [mix format] Support `:plugins` in `mix format` that can hook into custom extensions and sigils + [mix format] Add `Mix.Tasks.Format.formatter_for_file/2` + [mix local.rebar] No longer support `sub_dirs` in Rebar 2 to help migration towards Rebar 3 + [mix local.rebar] Support `--if-missing` option when installing Rebar + [mix local.rebar] Set `REBAR_PROFILE=prod` when compiling Rebar dependencies + [mix test] Support `--profile-require=time` to profile the time loading test files themselves + [mix test] Allow filtering modules from coverage using regex + [mix test] Allow the exit status of ExUnit to be configured and set the default to 2 + [mix test] Exit with a status of 3 when coverage falls below threshold + [mix test] Write failed manifest when suite fails due to --warnings-as-errors + [mix test] Ignore `MIX_TEST_PARTITION` when partitions set to 1 + [mix xref] Support multiple sinks and sources in `mix xref graph` + [mix xref] Add `trace` subcommand to print compilation dependencies between files + [mix xref] Add `--fail-above` option to `mix xref` + [mix xref] Add `--label compile-connected` to `mix xref` * 2. Bug fixes EEx - [EEx] Accept comments in EEx between do and the first clause - [EEx] Accept EEx expressions where `->` is followed by newline + + [EEx] Accept comments in EEx between do and the first clause + [EEx] Accept EEx expressions where `->` is followed by newline Elixir - [Application] Allow any expression as first argument of `compile_env` - [Application] Warn if `Application.compile_env` or `Application.compile_env!` are called without a require - [Code] Make sure `:static_atoms_encoder` in `Code.string_to_quoted/2` also applies to quoted keyword keys - [Code] Ensure bindings with no context are returned as atoms instead of `{binding, nil}` in eval operations - [Inspect] Fix a bug when inspecting a non-binary bitstring with colors - [Kernel] Reject bidirectional formatting characters in strings and comments - [Kernel] Support escaping of terminators in uppercase sigils heredocs for consistency - [Kernel] Raise if `__CALLER__` or `__ENV__` or `__STACKTRACE__` are used in match - [Kernel] Improve error message on invalid argument for `byte_size` from binary concat - [Kernel] Raise when aliasing non-Elixir modules without `:as` - [Kernel] Allow `unquote_splicing` inside `%{...}` without parens - [Kernel] Ensure that waiting on a struct expansion inside a typespec is correctly tracked as waiting time in the compiler - [Kernel] Correctly parse the atom `.` as a keyword list key - [Kernel] Do not leak variables from the first generator in `with` and `for` special forms - [Kernel] Fix column number on strings with NFD characters - [Kernel] Fix a bug where a combination of dynamic line in `quote` with `unquote` of remote calls would emit invalid AST metadata - [OptionParser] Validate switch types/modifiers early on to give more precise feedback - [Protocol] Add `defdelegate` to the list of unallowed macros inside protocols as protocols do not allow function definitions - [Protocol] Warn if `@callback`, `@macrocallback` and `@optional_callbacks` are defined inside protocol - [Protocol] Ensure protocol metadata is deterministic on consolidation - [Range] Always show step when range is descending - [String] Update Unicode database to version 14.0 - [URI] Only percent decode if followed by hex digits (according to https://url.spec.whatwg.org/#percent-decode) - [Version] Ensure proper precedence of `and`/`or` in version requirements + + [Application] Allow any expression as first argument of `compile_env` + [Application] Warn if `Application.compile_env` or `Application.compile_env!` are called without a require + [Code] Make sure `:static_atoms_encoder` in `Code.string_to_quoted/2` also applies to quoted keyword keys + [Code] Ensure bindings with no context are returned as atoms instead of `{binding, nil}` in eval operations + [Inspect] Fix a bug when inspecting a non-binary bitstring with colors + [Kernel] Reject bidirectional formatting characters in strings and comments + [Kernel] Support escaping of terminators in uppercase sigils heredocs for consistency + [Kernel] Raise if `__CALLER__` or `__ENV__` or `__STACKTRACE__` are used in match + [Kernel] Improve error message on invalid argument for `byte_size` from binary concat + [Kernel] Raise when aliasing non-Elixir modules without `:as` + [Kernel] Allow `unquote_splicing` inside `%{...}` without parens + [Kernel] Ensure that waiting on a struct expansion inside a typespec is correctly tracked as waiting time in the compiler + [Kernel] Correctly parse the atom `.` as a keyword list key + [Kernel] Do not leak variables from the first generator in `with` and `for` special forms + [Kernel] Fix column number on strings with NFD characters + [Kernel] Fix a bug where a combination of dynamic line in `quote` with `unquote` of remote calls would emit invalid AST metadata + [OptionParser] Validate switch types/modifiers early on to give more precise feedback + [Protocol] Add `defdelegate` to the list of unallowed macros inside protocols as protocols do not allow function definitions + [Protocol] Warn if `@callback`, `@macrocallback` and `@optional_callbacks` are defined inside protocol + [Protocol] Ensure protocol metadata is deterministic on consolidation + [Range] Always show step when range is descending + [String] Update Unicode database to version 14.0 + [URI] Only percent decode if followed by hex digits (according to https://url.spec.whatwg.org/#percent-decode) + [Version] Ensure proper precedence of `and`/`or` in version requirements ExUnit - [ExUnit] Fix formatter and counters from `ExUnit.run/0` to consider all tests in a module whenever if a module's `setup_all` fails - [ExUnit] Allow doctests newlines to be terminated by CRLF + + [ExUnit] Fix formatter and counters from `ExUnit.run/0` to consider all tests in a module whenever if a module's `setup_all` fails + [ExUnit] Allow doctests newlines to be terminated by CRLF IEx - [IEx] Fix the loss of `.iex.exs` context after a pry session - [IEx] Stop evaluator before exiting IEx server to avoid evaluators leaking + + [IEx] Fix the loss of `.iex.exs` context after a pry session + [IEx] Stop evaluator before exiting IEx server to avoid evaluators leaking Logger - [Logger] Raise clear error message for invalid `:compile_time_purge_matching` configuration - [Logger] Fix a bug where Logger would not reset its discard counter under some scenarios + + [Logger] Raise clear error message for invalid `:compile_time_purge_matching` configuration + [Logger] Fix a bug where Logger would not reset its discard counter under some scenarios Mix - [mix compile.elixir] Track transitive runtime dependencies coming from local/path dependencies - [mix compile.elixir] Recompile file if `@external_resource` is deleted - [mix compile.elixir] Print number of compiling files on all compiler cycles. This will make the `Compiling N files (.ex)` show up multiple times if necessary - [mix deps] Raise if local dep is unavailable while compiling - [mix deps.unlock] Fix blank output when unlocking a dependency that is not locked - [mix local.install] Do not respect `MIX_DEPS_PATH` for install commands - [mix release] Improve release scripts by making sure shell errors cascade (this is done by avoiding exporting and defining variables in a single step) - [mix release] Do not boot release if `RELEASE_COOKIE` is empty - [mix release] Allow releases running as a daemon to be restarted - [mix release] Raise proper error message when non-serializable values are in configs - [mix test] Fix coverage engine to also tag `case`, `cond`, and `receive` branches where the right side is a literal + + [mix compile.elixir] Track transitive runtime dependencies coming from local/path dependencies + [mix compile.elixir] Recompile file if `@external_resource` is deleted + [mix compile.elixir] Print number of compiling files on all compiler cycles. This will make the `Compiling N files (.ex)` show up multiple times if necessary + [mix deps] Raise if local dep is unavailable while compiling + [mix deps.unlock] Fix blank output when unlocking a dependency that is not locked + [mix local.install] Do not respect `MIX_DEPS_PATH` for install commands + [mix release] Improve release scripts by making sure shell errors cascade (this is done by avoiding exporting and defining variables in a single step) + [mix release] Do not boot release if `RELEASE_COOKIE` is empty + [mix release] Allow releases running as a daemon to be restarted + [mix release] Raise proper error message when non-serializable values are in configs + [mix test] Fix coverage engine to also tag `case`, `cond`, and `receive` branches where the right side is a literal * 3. Soft-deprecations (no warnings emitted) - Elixir - [Code] Environment options in `Code.eval_quoted/3` and `Code.eval_string/3`, such as `:aliases` and `:tracers`, have been deprecated in favor of passing an environment - [IO] `:all` on `IO.getn` is deprecated in favor of `:eof` - [URI] `URI.parse/1` is deprecated in favor of `URI.new/1` and `URI.new!/1` + + [Code] Environment options in `Code.eval_quoted/3` and `Code.eval_string/3`, such as `:aliases` and `:tracers`, have been deprecated in favor of passing an environment + [IO] `:all` on `IO.getn` is deprecated in favor of `:eof` + [URI] `URI.parse/1` is deprecated in favor of `URI.new/1` and `URI.new!/1` Mix - [mix format] `Mix.Tasks.Format.formatter_opts_for_file/2` is deprecated in favor of `Mix.Tasks.Format.formatter_for_file/2` + + [mix format] `Mix.Tasks.Format.formatter_opts_for_file/2` is deprecated in favor of `Mix.Tasks.Format.formatter_for_file/2` * 4. Hard-deprecations - Elixir - [Code] `Code.cursor_context/2` is deprecated, use `Code.Fragment.cursor_context/2` instead - [Macro] `Macro.to_string/2` is deprecated, use `Macro.to_string/1` instead - [System] `System.get_pid/0` is deprecated, use `System.pid/0` instead - [Version] Using `!` or `!=` in version requirements is deprecated, use `~>` or `>=` instead + + [Code] `Code.cursor_context/2` is deprecated, use `Code.Fragment.cursor_context/2` instead + [Macro] `Macro.to_string/2` is deprecated, use `Macro.to_string/1` instead + [System] `System.get_pid/0` is deprecated, use `System.pid/0` instead + [Version] Using `!` or `!=` in version requirements is deprecated, use `~>` or `>=` instead Mix - [mix escript.build] `:strip_beam` option is deprecated in favor of `:strip_beams` - [Mix] `:exit_code` in `Mix.raise/2` has been deprecated in favor of `:exit_status` - [Mix.Config] `Mix.Config` is deprecated in favor of `Config` module + + [mix escript.build] `:strip_beam` option is deprecated in favor of `:strip_beams` + [Mix] `:exit_code` in `Mix.raise/2` has been deprecated in favor of `:exit_status` + [Mix.Config] `Mix.Config` is deprecated in favor of `Config` module Full release notes: https://github.com/elixir-lang/elixir/releases/tag/v1.13.0 @@ -468,57 +545,52 @@ Fri Nov 5 11:51:18 UTC 2021 - Matwey Kornilov Tue Sep 28 18:07:15 UTC 2021 - Sven Marquardt - Elixir 1.12.3 - * Bug fixes - Elixir - [Code] Make sure that bindings in the default context returned by `Code.eval_*` functions are not returned as tagged tuples - [Kernel] Do not crash when handling ambiguity errors - [Range] Still match on old range patterns throughout the stdlib + [Code] Make sure that bindings in the default context returned by `Code.eval_*` functions are not returned as tagged tuples + [Kernel] Do not crash when handling ambiguity errors + [Range] Still match on old range patterns throughout the stdlib IEx - [IEx.Autocomplete] Do not error autocompletion with module attribute + [IEx.Autocomplete] Do not error autocompletion with module attribute Mix - [Mix] Rename inconsistent `:exit_code` option to `:exit_status` on `Mix.raise/2` + [Mix] Rename inconsistent `:exit_code` option to `:exit_status` on `Mix.raise/2` ------------------------------------------------------------------- Mon Jul 12 07:26:51 UTC 2021 - Sven Marquardt - Elixir 1.12.2 - * Bug fixes Elixir - [Kernel] Ensure deprecated macros emit warnings + [Kernel] Ensure deprecated macros emit warnings Mix - [mix deps] Ensure unconstrained rebar deps generate valid mix specifications + [mix deps] Ensure unconstrained rebar deps generate valid mix specifications * Enhancements Elixir - [elixirc] Change the output of `--profile time` to make it easier to detect outliers - [Application] Do not add compile time deps on args to `Application.compile_env/2` and `Application.compile_env!/2` - [Enum] Optimize `Enum.into/3` and `Map.new/2` + [elixirc] Change the output of `--profile time` to make it easier to detect outliers + [Application] Do not add compile time deps on args to `Application.compile_env/2` and `Application.compile_env!/2` + [Enum] Optimize `Enum.into/3` and `Map.new/2` Mix - [mix compile] Compile most recently changed files first - [mix compile, mix run, mix test] Speed up the time taken to load dependencies. This should make the usage of Mix inside projects quite more responsive + [mix compile] Compile most recently changed files first + [mix compile, mix run, mix test] Speed up the time taken to load dependencies. This should make the usage of Mix inside projects quite more responsive ------------------------------------------------------------------- Mon Jun 14 19:39:42 UTC 2021 - Sven Marquardt - Elixir 1.12.1 - * Bug fixes - Elixir - [Code] Make sure `Code.format_string!/2` formats multiline expression inside interpolation on the first run - [Macro] Revert keeping of underscores between digits in camelize + [Code] Make sure `Code.format_string!/2` formats multiline expression inside interpolation on the first run + [Macro] Revert keeping of underscores between digits in camelize Mix - [Mix] Make sure `Mix.install/2` expand paths for deps - [mix deps.get] Silence false positives on `httpc` warnings - [mix test] Do not run the whole suite when there are no --failed tests as it won't behave as expected inside umbrellas + [Mix] Make sure `Mix.install/2` expand paths for deps + [mix deps.get] Silence false positives on `httpc` warnings + [mix test] Do not run the whole suite when there are no --failed tests as it won't behave as expected inside umbrellas ------------------------------------------------------------------- Mon Jun 14 19:24:33 UTC 2021 - Sven Marquardt @@ -526,149 +598,147 @@ Mon Jun 14 19:24:33 UTC 2021 - Sven Marquardt - Elixir 1.12 * Enhancements EEx - [EEx.Engine] Add `c:EEx.Engine.handle_text/3` callback that receives text metadata - [EEx.Engine] Emit warnings for unused "do" expression in EEx + [EEx.Engine] Add `c:EEx.Engine.handle_text/3` callback that receives text metadata + [EEx.Engine] Emit warnings for unused "do" expression in EEx Elixir - [Code] Add `Code.cursor_context/2` to return the context of a code snippet - [Code] Do not add newlines around interpolation on code formatting. - Note this means formatted code that has interpolation after the line length on Elixir v1.12 won't be considered as formatted on earlier Elixir versions - [Code] Do not add brackets when keywords is used in the access syntax - [Calendar] Support basic datetime format in `Calendar.ISO` parsing functions - [Code] Improve evaluation performance on systems running on Erlang/OTP 24+ - [Date] Support steps via `Date.range/3` - [DateTime] Add `offset` to `DateTime.to_iso8601/2` (now `to_iso8601/3`) - [Enum] Add `Enum.count_until/2` and `Enum.count_until/3` - [Enum] Add `Enum.product/1` - [Enum] Add `Enum.zip_with/2`, `Enum.zip_with/3`, `Enum.zip_reduce/3`, and `Enum.zip_reduce/4` - [Enum] Add support for functions as the second argument of `Enum.with_index/2` - [Exception] Show `error_info` data for exceptions coming from Erlang - [Float] Add `Float.pow/2` - [Integer] Add `Integer.pow/2` and `Integer.extended_gcd/2` - [IO] Add `IO.stream/0` and `IO.binstream/0` which default to STDIO with line orientation - [List] Add default value for `List.first/1` and `List.last/1` - [Kernel] Add `first..last//step` as support for stepped ranges - [Kernel] Also warn for literal structs on `min/2` and `max/2` - [Kernel] Add `Kernel.tap/2` and `Kernel.then/2` - [Kernel] Do not add runtime dependencies to remotes in typespecs - [Kernel] When there is an unused variable warning and there is a variable with the same name previously defined, suggest the user may have wanted to use the pin operator - [Kernel] Improve error messages on invalid character right after a number - [Kernel] Show removal and deprecated tips from Erlang/OTP - [Macro] Add export dependencies on `Macro.struct!/2` - [Macro] Support `:newline` to customize newlines escaping in `Macro.unescape_string/2` - [Module] Raise on invalid `@dialyzer` attributes - [Module] Add `Module.get_definition/2` and `Module.delete_definition/2` - [Module] Allow `@on_load` to be a private function - [Module] Validate `@dialyzer` related module attributes - [Module] Add `Module.reserved_attributes/0` to list all reserved attributes by the language - [Range] Add `Range.new/3` and `Range.size/1` - [Regex] Add offset option to `Regex.scan/3` and `Regex.run/3` - [Registry] Support `:compression` on `Registry` tables - [Registry] Support `Registry.values/3` for reading values under a given key-pid pair - [Stream] Add `Stream.zip_with/2` and `Stream.zip_with/3` - [String] Add `:turkic` mode option to String case functions - [String] Update to Unicode 13.0 - [System] Add `System.trap_signal/3` and `System.untrap_signal/2` - [System] Add `System.shell/2` to invoke a command that is interpreted by the shell - [Tuple] Add `Tuple.sum/1` and `Tuple.product/1` - [URI] Support RFC3986 compliant encoding and decoding of queries via the `:rfc3986` option + [Code] Add `Code.cursor_context/2` to return the context of a code snippet + [Code] Do not add newlines around interpolation on code formatting. + Note this means formatted code that has interpolation after the line length on Elixir v1.12 won't be considered as formatted on earlier Elixir versions + [Code] Do not add brackets when keywords is used in the access syntax + [Calendar] Support basic datetime format in `Calendar.ISO` parsing functions + [Code] Improve evaluation performance on systems running on Erlang/OTP 24+ + [Date] Support steps via `Date.range/3` + [DateTime] Add `offset` to `DateTime.to_iso8601/2` (now `to_iso8601/3`) + [Enum] Add `Enum.count_until/2` and `Enum.count_until/3` + [Enum] Add `Enum.product/1` + [Enum] Add `Enum.zip_with/2`, `Enum.zip_with/3`, `Enum.zip_reduce/3`, and `Enum.zip_reduce/4` + [Enum] Add support for functions as the second argument of `Enum.with_index/2` + [Exception] Show `error_info` data for exceptions coming from Erlang + [Float] Add `Float.pow/2` + [Integer] Add `Integer.pow/2` and `Integer.extended_gcd/2` + [IO] Add `IO.stream/0` and `IO.binstream/0` which default to STDIO with line orientation + [List] Add default value for `List.first/1` and `List.last/1` + [Kernel] Add `first..last//step` as support for stepped ranges + [Kernel] Also warn for literal structs on `min/2` and `max/2` + [Kernel] Add `Kernel.tap/2` and `Kernel.then/2` + [Kernel] Do not add runtime dependencies to remotes in typespecs + [Kernel] When there is an unused variable warning and there is a variable with the same name previously defined, suggest the user may have wanted to use the pin operator + [Kernel] Improve error messages on invalid character right after a number + [Kernel] Show removal and deprecated tips from Erlang/OTP + [Macro] Add export dependencies on `Macro.struct!/2` + [Macro] Support `:newline` to customize newlines escaping in `Macro.unescape_string/2` + [Module] Raise on invalid `@dialyzer` attributes + [Module] Add `Module.get_definition/2` and `Module.delete_definition/2` + [Module] Allow `@on_load` to be a private function + [Module] Validate `@dialyzer` related module attributes + [Module] Add `Module.reserved_attributes/0` to list all reserved attributes by the language + [Range] Add `Range.new/3` and `Range.size/1` + [Regex] Add offset option to `Regex.scan/3` and `Regex.run/3` + [Registry] Support `:compression` on `Registry` tables + [Registry] Support `Registry.values/3` for reading values under a given key-pid pair + [Stream] Add `Stream.zip_with/2` and `Stream.zip_with/3` + [String] Add `:turkic` mode option to String case functions + [String] Update to Unicode 13.0 + [System] Add `System.trap_signal/3` and `System.untrap_signal/2` + [System] Add `System.shell/2` to invoke a command that is interpreted by the shell + [Tuple] Add `Tuple.sum/1` and `Tuple.product/1` + [URI] Support RFC3986 compliant encoding and decoding of queries via the `:rfc3986` option ExUnit - [ExUnit] Intercept SIGQUIT (via Ctrl+\\) and show a list of all aborted tests as well as intermediate test results - [ExUnit] Interpolate module attributes in match assertions diffs - [ExUnit] Print how much time is spent on `async` vs `sync` tests - [ExUnit] Improve error messages for doctests - [ExUnit] Compile doctests faster (often by two times) - [ExUnit] Add `ExUnit.async_run/0` and `ExUnit.await_run/1` + [ExUnit] Intercept SIGQUIT (via Ctrl+\\) and show a list of all aborted tests as well as intermediate test results + [ExUnit] Interpolate module attributes in match assertions diffs + [ExUnit] Print how much time is spent on `async` vs `sync` tests + [ExUnit] Improve error messages for doctests + [ExUnit] Compile doctests faster (often by two times) + [ExUnit] Add `ExUnit.async_run/0` and `ExUnit.await_run/1` IEx - [IEx] Make IEx' parser configurable to allow special commands - [IEx] Show function signature when pressing tab after the opening parens of a function - [IEx] If an IEx expression starts with a binary operator, such as `|>`, automatically pipe in the result of the last expression + [IEx] Make IEx' parser configurable to allow special commands + [IEx] Show function signature when pressing tab after the opening parens of a function + [IEx] If an IEx expression starts with a binary operator, such as `|>`, automatically pipe in the result of the last expression Mix - [Mix] Add `Mix.install/2` for dynamically installing a list of dependencies - [Mix] Support `:exit_code` option in `Mix.raise/2` - [Mix] Discard `MIX_ENV` and `MIX_TARGET` values if they are empty strings - [Mix] Print the time taken to execute a task with on `MIX_DEBUG=1` - [mix compile.erlang] Compile multiple files in parallel - [mix escript.build] Deep merge configuration and ensure argv is set when executing `config/runtime.exs` - [mix release] Add `RELEASE_PROG` to releases with the name of the executable starting the release - [mix release] Support `remote.vm.args` to customize how the connecting VM boots - [mix test] Run all available tests if there are no pending `--failed` tests. This provides a better workflow as you no longer need to toggle the `--failed` flag between runs + [Mix] Add `Mix.install/2` for dynamically installing a list of dependencies + [Mix] Support `:exit_code` option in `Mix.raise/2` + [Mix] Discard `MIX_ENV` and `MIX_TARGET` values if they are empty strings + [Mix] Print the time taken to execute a task with on `MIX_DEBUG=1` + [mix compile.erlang] Compile multiple files in parallel + [mix escript.build] Deep merge configuration and ensure argv is set when executing `config/runtime.exs` + [mix release] Add `RELEASE_PROG` to releases with the name of the executable starting the release + [mix release] Support `remote.vm.args` to customize how the connecting VM boots + [mix test] Run all available tests if there are no pending `--failed` tests. This provides a better workflow as you no longer need to toggle the `--failed` flag between runs * Bug fixes - Elixir - [CLI] Ensure `-e ""` (with an empty string) parses correctly on Windows - [Inspect] Do not override user supplied `:limit` option for derived implementations - [Kernel] Allow heredoc inside a heredoc interpolation - [Kernel] Preserve CRLF on heredocs - [Kernel] Public functions without documentation now appear as an empty map on `Code.fetch_docs/1`, - unless they start with underscore, where they remain as `:none`. This aligns Elixir's implementation with EEP48 - [Kernel] Do not crash when complex literals (binaries and maps) are used in guards - [Kernel] Properly parse keywords (such as `end`) followed by the `::` operator - [Kernel] Do not ignore unimplemented signatures from generated functions - [Kernel] Improve error message when an expression follows a keyword list without brackets - [Macro] `Macro.decompose_call/1` now also consider tuples with more than 2 elements to not be valid calls - [Macro] Fix `Macro.to_string/1` double-escaping of escape characters in sigils - [Macro] Fix `Macro.underscore/1` on digits preceded by capitals: "FOO10" now becomes "foo10" instead of "fo_o10" - [Macro] Preserve underscores between digits on `Macro.underscore/1` - [OptionParser] Properly parse when numbers follow-up aliases, for example, `-ab3` is now parsed as `-a -b 3` - [Path] Fix `Path.relative_to/2` when referencing self - [Path] Do not crash when a volume is given to `Path.absname/1`, such as "c:" - [Task] Ensure `Task.async_stream/2` with `ordered: false` discard results as they are emitted, instead of needlessly accumulating inside the stream manager - [Task] Raise if `:max_concurrency` is set to 0 on streaming operations - [URI] Do not discard empty paths on `URI.merge/2` + [CLI] Ensure `-e ""` (with an empty string) parses correctly on Windows + [Inspect] Do not override user supplied `:limit` option for derived implementations + [Kernel] Allow heredoc inside a heredoc interpolation + [Kernel] Preserve CRLF on heredocs + [Kernel] Public functions without documentation now appear as an empty map on `Code.fetch_docs/1`, + unless they start with underscore, where they remain as `:none`. This aligns Elixir's implementation with EEP48 + [Kernel] Do not crash when complex literals (binaries and maps) are used in guards + [Kernel] Properly parse keywords (such as `end`) followed by the `::` operator + [Kernel] Do not ignore unimplemented signatures from generated functions + [Kernel] Improve error message when an expression follows a keyword list without brackets + [Macro] `Macro.decompose_call/1` now also consider tuples with more than 2 elements to not be valid calls + [Macro] Fix `Macro.to_string/1` double-escaping of escape characters in sigils + [Macro] Fix `Macro.underscore/1` on digits preceded by capitals: "FOO10" now becomes "foo10" instead of "fo_o10" + [Macro] Preserve underscores between digits on `Macro.underscore/1` + [OptionParser] Properly parse when numbers follow-up aliases, for example, `-ab3` is now parsed as `-a -b 3` + [Path] Fix `Path.relative_to/2` when referencing self + [Path] Do not crash when a volume is given to `Path.absname/1`, such as "c:" + [Task] Ensure `Task.async_stream/2` with `ordered: false` discard results as they are emitted, instead of needlessly accumulating inside the stream manager + [Task] Raise if `:max_concurrency` is set to 0 on streaming operations + [URI] Do not discard empty paths on `URI.merge/2` ExUnit - [ExUnit.Case] Make `@tag tmp_dir` an absolute directory, avoiding inconsistencies if the test changes the current working directory - [ExUnit.Diff] Fix cases where the diffing algorithm would fail to print a pattern correct + [ExUnit.Case] Make `@tag tmp_dir` an absolute directory, avoiding inconsistencies if the test changes the current working directory + [ExUnit.Diff] Fix cases where the diffing algorithm would fail to print a pattern correct IEx - [IEx] Fix auto-completion inside remote shells + [IEx] Fix auto-completion inside remote shells Mix - [mix app.config] Do not emit false positive warnings when configured dependencies that have `runtime: false` set - [mix compile.elixir] Ensure that a manifest is generated even with no source code - [mix compile.elixir] Make sure export dependencies trigger recompilation when the dependency is removed as well as when the whole file is removed - [mix compile.elixir] Do not emit false positive warnings when a path dependency adds a module that is then used by the current application in the same `mix compile` cycle - [mix test] Ensure protocols within the current project are consolidated when `--cover` is given - [mix release] Improve compliance of release scripts with stripped down Linux installations - [mix release] Preserve file mode when copying non-beam ebin files - [mix xref] Ensure args are passed to the underlying `mix compile` call + [mix app.config] Do not emit false positive warnings when configured dependencies that have `runtime: false` set + [mix compile.elixir] Ensure that a manifest is generated even with no source code + [mix compile.elixir] Make sure export dependencies trigger recompilation when the dependency is removed as well as when the whole file is removed + [mix compile.elixir] Do not emit false positive warnings when a path dependency adds a module that is then used by the current application in the same `mix compile` cycle + [mix test] Ensure protocols within the current project are consolidated when `--cover` is given + [mix release] Improve compliance of release scripts with stripped down Linux installations + [mix release] Preserve file mode when copying non-beam ebin files + [mix xref] Ensure args are passed to the underlying `mix compile` call * Soft-deprecations (no warnings emitted) - Elixir - [Kernel] Using `first..last` to match on ranges is soft-deprecated and will warn on future Elixir versions. Use `first..last//step` instead - [Kernel] Using `first..last` to create decreasing ranges is soft-deprecated and will warn on future versions. Use `first..last//-1` instead + [Kernel] Using `first..last` to match on ranges is soft-deprecated and will warn on future Elixir versions. Use `first..last//step` instead + [Kernel] Using `first..last` to create decreasing ranges is soft-deprecated and will warn on future versions. Use `first..last//-1` instead * Hard-deprecations - EEx - [EEx.Engine] `use EEx.Engine` is deprecated in favor of explicit delegation + [EEx.Engine] `use EEx.Engine` is deprecated in favor of explicit delegation Elixir - [Kernel] The binary operator `^^^` is deprecated. If you are using `Bitwise.^^^/2`, use `Bitwise.bxor/2` instead - [Kernel] Deprecate `@foo()` in favor of `@foo` - [System] Deprecate `System.stacktrace/0` (it was already deprecated outside of catch/rescue and now it is deprecated everywhere) + [Kernel] The binary operator `^^^` is deprecated. If you are using `Bitwise.^^^/2`, use `Bitwise.bxor/2` instead + [Kernel] Deprecate `@foo()` in favor of `@foo` + [System] Deprecate `System.stacktrace/0` (it was already deprecated outside of catch/rescue and now it is deprecated everywhere) Mix - [mix compile] The `:xref` compiler is deprecated and it has no effect. Please remove it from your mix.exs file. + [mix compile] The `:xref` compiler is deprecated and it has no effect. Please remove it from your mix.exs file. Full release notes: https://github.com/elixir-lang/elixir/releases/tag/v1.12.0 + ------------------------------------------------------------------- Fri Mar 19 22:01:35 UTC 2021 - Sven Marquardt - Elixir 1.11.4 * Enhancements Elixir - [Kernel] Update formatting when printing warnings and errors from Erlang/OTP 24+ - [Kernel] Support float-16 on bitstrings + [Kernel] Update formatting when printing warnings and errors from Erlang/OTP 24+ + [Kernel] Support float-16 on bitstrings Mix - [mix local.rebar] This task will now install rebar3 version 3.14.4, compiled with Erlang/OTP 21 + [mix local.rebar] This task will now install rebar3 version 3.14.4, compiled with Erlang/OTP 21 ------------------------------------------------------------------- Mon Jan 11 19:13:39 UTC 2021 - Sven Marquardt @@ -676,27 +746,26 @@ Mon Jan 11 19:13:39 UTC 2021 - Sven Marquardt - Elixir 1.11.3 * Enhancements Elixir - [Macro] Add Macro.unique_var/2 and Macro.generate_unique_arguments/2 + [Macro] Add Macro.unique_var/2 and Macro.generate_unique_arguments/2 * Bug fixes Elixir - [Code] Do not raise when checking for operator ambiguity when :static_atoms_encoder is set in Code.string_to_quoted - [Kernel] Emit undefined function warnings from with - [Kernel] Do not fail type checking when literals are used in guards - [Module] Do not warn for attributes used in @after_compile - [Record] Make sure nested record names do not clobber each other + [Code] Do not raise when checking for operator ambiguity when :static_atoms_encoder is set in Code.string_to_quoted + [Kernel] Emit undefined function warnings from with + [Kernel] Do not fail type checking when literals are used in guards + [Module] Do not warn for attributes used in @after_compile + [Record] Make sure nested record names do not clobber each other ExUnit - [ExUnit.Assertions] Do not crash if there are macros and module attributes on the left side of ++ + [ExUnit.Assertions] Do not crash if there are macros and module attributes on the left side of ++ IEx - [IEx.Helpers] Do not use Unicode chars if ANSI is disabled + [IEx.Helpers] Do not use Unicode chars if ANSI is disabled Mix - [mix deps.compile] Fix compatibility with rebar v3.14 - [mix release] Do not use private ram_file:compress/1 - [mix xref] Do not crash when retrieving calls for modules in memory - + [mix deps.compile] Fix compatibility with rebar v3.14 + [mix release] Do not use private ram_file:compress/1 + [mix xref] Do not crash when retrieving calls for modules in memory ------------------------------------------------------------------- Wed Nov 04 11:09:00 UTC 2020 - Sven Marquardt @@ -704,13 +773,13 @@ Wed Nov 04 11:09:00 UTC 2020 - Sven Marquardt - Elixir 1.11.2 * Bug fixes Elixir - [Code] Do not crash when getting docs for missing `erts` appdir - [Kernel] Raise meaningful error if `:erlang.is_record` is used in guards - [Kernel] Prune tracers when fetching `__ENV__` inside functions + [Code] Do not crash when getting docs for missing `erts` appdir + [Kernel] Raise meaningful error if `:erlang.is_record` is used in guards + [Kernel] Prune tracers when fetching `__ENV__` inside functions Mix - [mix] Fix regression where aliases could not call themselves recursively - [mix compile] Do not discard tracers that are set programatically + [mix] Fix regression where aliases could not call themselves recursively + [mix compile] Do not discard tracers that are set programatically ------------------------------------------------------------------- Mon Oct 19 11:09:00 UTC 2020 - Sven Marquardt @@ -718,20 +787,20 @@ Mon Oct 19 11:09:00 UTC 2020 - Sven Marquardt - Elixir 1.11.1 * Bug fixes Elixir - [Code] Ignore tracers if lexical tracker is dead or explicitly nil when evaling code with an environment - [GenServer] Do not show warning when using `super` in `GenServer.child_spec/1` - [Kernel] Do not crash when :reduce is set to `nil` in comprehensions - [Kernel] Fix a scenario where undefined function warnings were not being emitted + [Code] Ignore tracers if lexical tracker is dead or explicitly nil when evaling code with an environment + [GenServer] Do not show warning when using `super` in `GenServer.child_spec/1` + [Kernel] Do not crash when :reduce is set to `nil` in comprehensions + [Kernel] Fix a scenario where undefined function warnings were not being emitted IEx - [IEx.Helpers] Properly handle tags inside typespec when showing Erlang docs + [IEx.Helpers] Properly handle tags inside typespec when showing Erlang docs Logger - [Logger] Do not deadlock Logger if handler crashes on sync mode + [Logger] Do not deadlock Logger if handler crashes on sync mode Mix - [Mix] Add inet6 fallback to Mix usage of httpc - [mix compile.app] Do not list apps that do not match the current target + [Mix] Add inet6 fallback to Mix usage of httpc + [mix compile.app] Do not list apps that do not match the current target ------------------------------------------------------------------- Mon Oct 19 11:03:32 UTC 2020 - Sven Marquardt @@ -740,159 +809,159 @@ Mon Oct 19 11:03:32 UTC 2020 - Sven Marquardt * Enhancements EEx - [EEx] Track column information in EEx templates when enabled in the compiler - [EEx] Show column information in EEx error messages - [EEx] Support `:indentation` option when compiling EEx templates for proper column tracking + [EEx] Track column information in EEx templates when enabled in the compiler + [EEx] Show column information in EEx error messages + [EEx] Support `:indentation` option when compiling EEx templates for proper column tracking Elixir - [Access] Add `Access.at!/1` - [Calendar] Add `Calendar.strftime/3` for datetime formatting - [Calendar] Add linear integer representations to Calendar modules: - `Date.from_gregorian_days/2`, `Date.to_gregorian_days/1`, `NaiveDateTime.from_gregorian_seconds/3`, - `NaiveDateTime.to_gregorian_seconds/1`,`Time.from_seconds_after_midnight/1` - and `Time.to_seconds_after_midnight/1` - [Calendar] Add `new!` to Date/Time/NaiveDateTime/DateTime (`new` has also been added to `DateTime` for completeness) - [Calendar] Support custom starting day of the week in `Date.day_of_week/2` - [Calendar] Add `Date.beginning_of_month/1` and `Date.end_of_month/1` - [Calendar] Add `Date.beginning_of_week/2` and `Date.end_of_week/2` - [Code] Add `:column` to `Code.string_to_quoted*/2` - [Code] Add `Code.can_await_module_compilation?/0` to check if the parallel compiler is enabled - and it can await for other modules to be compiled - [Config] Support `config_env/0` and `config_target/0` in `config` files - [Config] Allow `import_config` to be disabled for some configuration files - [Enum] Allow a sorting function on `Enum.min_max_by/3,4`, including the new `compare/2` conventions - [Kernel] Add `is_struct/2` guard - [Kernel] Add `is_exception/1` and `is_exception/2` guards - [Kernel] Support `map.field` syntax in guards - [Kernel] Add `+++` and `---` with right associativity to the list of custom operators - [Kernel] Warn if a variable that looks like a compiler variable (such as `__MODULE__`) is unused - [Kernel.ParallelCompiler] Report individual file compilation times when `profile: :time` is given - [Kernel.ParallelCompiler] Improve precision of `:long_compilation_threshold` so it takes only compilation times into - account (and not waiting times) - [Registry] Add `Registry.delete_meta/2` - [Task] Add `Task.await_many/2` + [Access] Add `Access.at!/1` + [Calendar] Add `Calendar.strftime/3` for datetime formatting + [Calendar] Add linear integer representations to Calendar modules: + `Date.from_gregorian_days/2`, `Date.to_gregorian_days/1`, `NaiveDateTime.from_gregorian_seconds/3`, + `NaiveDateTime.to_gregorian_seconds/1`,`Time.from_seconds_after_midnight/1` + and `Time.to_seconds_after_midnight/1` + [Calendar] Add `new!` to Date/Time/NaiveDateTime/DateTime (`new` has also been added to `DateTime` for completeness) + [Calendar] Support custom starting day of the week in `Date.day_of_week/2` + [Calendar] Add `Date.beginning_of_month/1` and `Date.end_of_month/1` + [Calendar] Add `Date.beginning_of_week/2` and `Date.end_of_week/2` + [Code] Add `:column` to `Code.string_to_quoted*/2` + [Code] Add `Code.can_await_module_compilation?/0` to check if the parallel compiler is enabled + and it can await for other modules to be compiled + [Config] Support `config_env/0` and `config_target/0` in `config` files + [Config] Allow `import_config` to be disabled for some configuration files + [Enum] Allow a sorting function on `Enum.min_max_by/3,4`, including the new `compare/2` conventions + [Kernel] Add `is_struct/2` guard + [Kernel] Add `is_exception/1` and `is_exception/2` guards + [Kernel] Support `map.field` syntax in guards + [Kernel] Add `+++` and `---` with right associativity to the list of custom operators + [Kernel] Warn if a variable that looks like a compiler variable (such as `__MODULE__`) is unused + [Kernel.ParallelCompiler] Report individual file compilation times when `profile: :time` is given + [Kernel.ParallelCompiler] Improve precision of `:long_compilation_threshold` so it takes only compilation times into + account (and not waiting times) + [Registry] Add `Registry.delete_meta/2` + [Task] Add `Task.await_many/2` ExUnit - [ExUnit] Add support for coloring on Windows 10 consoles/shells - [ExUnit] Add `ExUnit.fetch_test_supervisor/0` - [ExUnit] Add `@tag :tmp_dir` support to ExUnit. The temporary directory is automatically created and pruned before each test - [ExUnit] Add file and line to ExUnit's `--trace` - [ExUnit.Assertion] Allow receive timeouts to be computed at runtime - [ExUnit.Case] Add `register_test/6` to speed up compilation of custom tests - [ExUnit.Doctest] Allow users to add tags to doctests + [ExUnit] Add support for coloring on Windows 10 consoles/shells + [ExUnit] Add `ExUnit.fetch_test_supervisor/0` + [ExUnit] Add `@tag :tmp_dir` support to ExUnit. The temporary directory is automatically created and pruned before each test + [ExUnit] Add file and line to ExUnit's `--trace` + [ExUnit.Assertion] Allow receive timeouts to be computed at runtime + [ExUnit.Case] Add `register_test/6` to speed up compilation of custom tests + [ExUnit.Doctest] Allow users to add tags to doctests IEx - [IEx] Add support for coloring on Windows 10 consoles/shells - [IEx.Helpers] Show docs from Erlang modules that have been compiled with the docs chunk + [IEx] Add support for coloring on Windows 10 consoles/shells + [IEx.Helpers] Show docs from Erlang modules that have been compiled with the docs chunk Logger - [Logger] Add `notice`, `critical`, `alert`, and `emergency` log levels - [Logger] Support structured logging by logging maps or keyword lists - [Logger] Allow level to be set per module with `Logger.put_module_level/2` - [Logger] Include `erl_level` in Logger's metadata + [Logger] Add `notice`, `critical`, `alert`, and `emergency` log levels + [Logger] Support structured logging by logging maps or keyword lists + [Logger] Allow level to be set per module with `Logger.put_module_level/2` + [Logger] Include `erl_level` in Logger's metadata Mix - [mix] Add `MIX_BUILD_ROOT` to config `_build` dir - [mix] Introduce `MIX_XDG` as a simpler mechanism to opt-in to the XDG specification - [mix] Allow requirements for a Mix task to be listed via the `@requirements` module attribute - [mix] Allow optional dependencies to be defined in `:extra_applications` and `:applications` - [mix app.config] Add new `mix app.config` task that compiles applications and loads runtime configuration - [mix archive.install] Support `--repo` option on Hex packages - [mix compile] Support the `__mix_recompile__?/0` callback for custom behaviour on when Mix should recompile a given - module - [mix compile.elixir] Mark modules for path dependencies as "Export dependencies" if they changed but their public - interface is the same - [mix compile.elixir] Track application boundaries in the Elixir compiler. - If you invoke code from Erlang or Elixir standard libraries and you don't depend on the proper - applications, a warning will be emitted. A warning will also be emitted if you invoke code from - an umbrella sibling that you don't depend on - effectively forbidding cyclic dependencies between - apps - [mix deps] Sort the dependencies alphabetically before printing - [mix deps] Use `origin/HEAD` as the default Git ref in dependencies - [mix deps] Redact Git `username`/`password` in output log - [mix deps] Support rebar3's `git_subdir` resource type - [mix deps.compile] Allow local deps to be skipped on `mix deps.compile` - {mix deps.unlock] Print which dependencies get unlocked when using the `--unused` flag - [mix escript.install] Support `--repo` option on Hex packages - [mix new] Add `@impl` to application generated by `mix new --sup` - [mix release] Enable overriding `sys.config` location via `RELEASE_SYS_CONFIG` env var - [mix release] Boot a release under configuration in interactive mode and then swap to embedded mode - (if running on Erlang/OTP 23+) - [mix release] Add `rel_templates_path` to configure the source of template files such as "env.sh.eex", "vm.args.eex" - and "overlays" - [mix release] Allow some chunks to be kept in the `:strip_beams` config - [mix test] Allow `:ignore_modules` inside `:test_coverage` option - [mix test.coverage] Add `mix test.coverage` that aggregates coverage results from umbrellas and OS partitioning - [mix xref] Make the `--label` option for `mix xref graph` transitive by default and add `--only-direct` for only - direct dependencies - [mix xref] Add `--format cycles` support for `mix xref graph` - [mix xref] Add support to `mix xref graph` for using `--source` and `--sink` at the same time + [mix] Add `MIX_BUILD_ROOT` to config `_build` dir + [mix] Introduce `MIX_XDG` as a simpler mechanism to opt-in to the XDG specification + [mix] Allow requirements for a Mix task to be listed via the `@requirements` module attribute + [mix] Allow optional dependencies to be defined in `:extra_applications` and `:applications` + [mix app.config] Add new `mix app.config` task that compiles applications and loads runtime configuration + [mix archive.install] Support `--repo` option on Hex packages + [mix compile] Support the `__mix_recompile__?/0` callback for custom behaviour on when Mix should recompile a given + module + [mix compile.elixir] Mark modules for path dependencies as "Export dependencies" if they changed but their public + interface is the same + [mix compile.elixir] Track application boundaries in the Elixir compiler. + If you invoke code from Erlang or Elixir standard libraries and you don't depend on the proper + applications, a warning will be emitted. A warning will also be emitted if you invoke code from + an umbrella sibling that you don't depend on - effectively forbidding cyclic dependencies between + apps + [mix deps] Sort the dependencies alphabetically before printing + [mix deps] Use `origin/HEAD` as the default Git ref in dependencies + [mix deps] Redact Git `username`/`password` in output log + [mix deps] Support rebar3's `git_subdir` resource type + [mix deps.compile] Allow local deps to be skipped on `mix deps.compile` + {mix deps.unlock] Print which dependencies get unlocked when using the `--unused` flag + [mix escript.install] Support `--repo` option on Hex packages + [mix new] Add `@impl` to application generated by `mix new --sup` + [mix release] Enable overriding `sys.config` location via `RELEASE_SYS_CONFIG` env var + [mix release] Boot a release under configuration in interactive mode and then swap to embedded mode + (if running on Erlang/OTP 23+) + [mix release] Add `rel_templates_path` to configure the source of template files such as "env.sh.eex", "vm.args.eex" + and "overlays" + [mix release] Allow some chunks to be kept in the `:strip_beams` config + [mix test] Allow `:ignore_modules` inside `:test_coverage` option + [mix test.coverage] Add `mix test.coverage` that aggregates coverage results from umbrellas and OS partitioning + [mix xref] Make the `--label` option for `mix xref graph` transitive by default and add `--only-direct` for only + direct dependencies + [mix xref] Add `--format cycles` support for `mix xref graph` + [mix xref] Add support to `mix xref graph` for using `--source` and `--sink` at the same time * Bug fixes EEx - [EEx] Make trimming behaviour via the `:trim` option more consistent + [EEx] Make trimming behaviour via the `:trim` option more consistent Elixir - [Application] Warn if non-atom keys are given to `put_env`, `get_env`, `fetch_env`, and `delete_env` - [Code] Do not send language keyword through the `:static_atoms_encoder` in `Code.string_to_quoted` - [Kernel] Validate values given to `:line` in quote to avoid emitting invalid ASTs - [Kernel] Report the correct line number when raising inside a macro - [Kernel] Fix an issue where `elixirc` would not accept paths with backslash (`\`) separators on Windows - [Kernel] Properly parse `&//2` (i.e. the capture of the division operator) - [Kernel] Raise `CompileError` when trying to define reserved types - [Kernel] Improve compiler error message when using `|` in a `def` signature - [Kernel] Improve error message when trying to use invalid list operators in guards - [Kernel.SpecialForms] Add `|/2` to the list of special forms to avoid inconsistent behaviour on overrides - [Keyword] Enforce keys to be atoms in `Keyword.keys/1` - [Record] Keep lexical ordering when creating records - [Registry] Do not crash when a process with key-value has been registered using `:via` and it fails to start on `init` - [URI] `URI.decode_query/2` emits an empty string for parameters without values, according to - [URL's living standard](https://url.spec.whatwg.org/#application/x-www-form-urlencoded) - note this behaviour i - s not specified in the spec implemented by the URI module, so the living standard was chosen - [Version] Add defaults and enforce keys in `Version` struct + [Application] Warn if non-atom keys are given to `put_env`, `get_env`, `fetch_env`, and `delete_env` + [Code] Do not send language keyword through the `:static_atoms_encoder` in `Code.string_to_quoted` + [Kernel] Validate values given to `:line` in quote to avoid emitting invalid ASTs + [Kernel] Report the correct line number when raising inside a macro + [Kernel] Fix an issue where `elixirc` would not accept paths with backslash (`\`) separators on Windows + [Kernel] Properly parse `&//2` (i.e. the capture of the division operator) + [Kernel] Raise `CompileError` when trying to define reserved types + [Kernel] Improve compiler error message when using `|` in a `def` signature + [Kernel] Improve error message when trying to use invalid list operators in guards + [Kernel.SpecialForms] Add `|/2` to the list of special forms to avoid inconsistent behaviour on overrides + [Keyword] Enforce keys to be atoms in `Keyword.keys/1` + [Record] Keep lexical ordering when creating records + [Registry] Do not crash when a process with key-value has been registered using `:via` and it fails to start on `init` + [URI] `URI.decode_query/2` emits an empty string for parameters without values, according to + [URL's living standard](https://url.spec.whatwg.org/#application/x-www-form-urlencoded) - note this behaviour i + s not specified in the spec implemented by the URI module, so the living standard was chosen + [Version] Add defaults and enforce keys in `Version` struct ExUnit - [ExUnit.CaptureIO] Fix race condition where a dead capture would still be considered as active - [ExUnit.Diff] Do not crash when failing to eval/inspect struct - [ExUnit.Diff] Properly diff numbers in respect to `==` and `===` operators + [ExUnit.CaptureIO] Fix race condition where a dead capture would still be considered as active + [ExUnit.Diff] Do not crash when failing to eval/inspect struct + [ExUnit.Diff] Properly diff numbers in respect to `==` and `===` operators IEx - [IEx] Fix tokenizer emitting repeated warnings in the REPL - [IEx] Ensure `--dot-iex` is preserved when restarting the evaluator and after shell respawn - [IEx.Pry] Ensure `IEx.pry` can be triggered more than twice when invoked from the same process + [IEx] Fix tokenizer emitting repeated warnings in the REPL + [IEx] Ensure `--dot-iex` is preserved when restarting the evaluator and after shell respawn + [IEx.Pry] Ensure `IEx.pry` can be triggered more than twice when invoked from the same process Mix - [mix cmd] Fix a bug where only the first --app option would be executed - [mix compile] Fix an issue where new protocol implementations would not propagate when running `mix compile` from - an umbrella root - [mix deps.compile] Use `gmake` instead of `make` when compiling deps on NetBSD/DragonFlyBSD - [mix release] Load `.app` from dependencies path when it is a project dependency - [mix release] Always include "rel/overlays" in the list of overlays directories if available - [mix release] Change `erts/bin/erl` binary mode to `0o755` - [mix test] Compare to test coverage threshold inclusively + [mix cmd] Fix a bug where only the first --app option would be executed + [mix compile] Fix an issue where new protocol implementations would not propagate when running `mix compile` from + an umbrella root + [mix deps.compile] Use `gmake` instead of `make` when compiling deps on NetBSD/DragonFlyBSD + [mix release] Load `.app` from dependencies path when it is a project dependency + [mix release] Always include "rel/overlays" in the list of overlays directories if available + [mix release] Change `erts/bin/erl` binary mode to `0o755` + [mix test] Compare to test coverage threshold inclusively Logger - [Logger] Print metadata for all types that implement String.Chars + [Logger] Print metadata for all types that implement String.Chars * Soft-deprecations (no warnings emitted) Elixir - [Exception] `Exception.exception?/1` is deprecated in favor of `Kernel.is_exception/1` - [Regex] `Regex.regex?/1` is deprecated in favor of `Kernel.is_struct/2` + [Exception] `Exception.exception?/1` is deprecated in favor of `Kernel.is_exception/1` + [Regex] `Regex.regex?/1` is deprecated in favor of `Kernel.is_struct/2` Logger - [Logger] `warn` log level is deprecated in favor of `warning` + [Logger] `warn` log level is deprecated in favor of `warning` Mix - [mix release] `config/releases.exs` is deprecated in favor of a more general purpose `config/runtime.exs` + [mix release] `config/releases.exs` is deprecated in favor of a more general purpose `config/runtime.exs` * Hard-deprecations Elixir - [Supervisor] Deprecate `Supervisor.start_child/2` and `Supervisor.terminate_child/2` in favor of `DynamicSupervisor` - [Supervisor.Spec] Deprecate `Supervisor.Spec.worker/3` and `Supervisor.Spec.supervisor/3` in favor of the new typespecs - [System] Deprecate `System.stacktrace/0` in favor of `__STACKTRACE__` + [Supervisor] Deprecate `Supervisor.start_child/2` and `Supervisor.terminate_child/2` in favor of `DynamicSupervisor` + [Supervisor.Spec] Deprecate `Supervisor.Spec.worker/3` and `Supervisor.Spec.supervisor/3` in favor of the new typespecs + [System] Deprecate `System.stacktrace/0` in favor of `__STACKTRACE__` Mix - [Mix.Project] Deprecate `Mix.Project.compile/2` in favor of `Mix.Task.run("compile", args)` + [Mix.Project] Deprecate `Mix.Project.compile/2` in favor of `Mix.Task.run("compile", args)` Full release notes: https://github.com/elixir-lang/elixir/releases/tag/v1.11.0 @@ -902,21 +971,21 @@ Wed Jul 8 08:09:49 UTC 2020 - Gabriele Santomaggio - Elixir 1.10.4 * Bug fixes Elixir - [Kernel] Fix a bug where custom types were printed as built-in types - [Kernel] Don't add compile-time dependency on defdelegate - [Kernel] Add line numbers to warnings on deprecated imports - [Kernel] Report the correct line number when raising inside a macro - [Task] Include callers in translated Logger metadata for Task - [Task] Fix Task PID and caller in Task Supervisor reports - ExUnit - [ExUnit.Formatter] Avoid crashes when diffing guards when the pattern does not match - [ExUnit.Formatter] Also blame exceptions that come from linked and trapped exits - IEx - [IEx.Helpers] Do not crash when printing a type that cannot be code formatted - Mix - [mix app.start] Fix reading .app file located in archives (.ez files) - [mix local.hex] Provide more guidance when Hex can't be installed - [mix release] Properly encode config in releases + [Kernel] Fix a bug where custom types were printed as built-in types + [Kernel] Don't add compile-time dependency on defdelegate + [Kernel] Add line numbers to warnings on deprecated imports + [Kernel] Report the correct line number when raising inside a macro + [Task] Include callers in translated Logger metadata for Task + [Task] Fix Task PID and caller in Task Supervisor reports + ExUnit + [ExUnit.Formatter] Avoid crashes when diffing guards when the pattern does not match + [ExUnit.Formatter] Also blame exceptions that come from linked and trapped exits + IEx + [IEx.Helpers] Do not crash when printing a type that cannot be code formatted + Mix + [mix app.start] Fix reading .app file located in archives (.ez files) + [mix local.hex] Provide more guidance when Hex can't be installed + [mix release] Properly encode config in releases ------------------------------------------------------------------- Sat Apr 25 16:20:54 UTC 2020 - Sven Marquardt @@ -924,19 +993,19 @@ Sat Apr 25 16:20:54 UTC 2020 - Sven Marquardt - Elixir 1.10.3 * Bug fixes Elixir - [Code] Return `[{mod, bin}]` from `Code.compile_file/2`, `Code.require_file/2`, `Code.load_file/2` - [Code] Make sure the formatter respects newlines before and after module attributes - [Kernel.ParallelCompiler] Fix a bug where the parallel compiler would raise in long compilation cycles - [Kernel.ParallelCompiler] Fix a bug where the parallel compiler would raise if some of the modules being compiled referred to a module that has been loaded directly to memory - [Module] Fix accidental breaking change where bodiless clauses had their body value on `@on_definition` callbacks set to an empty list instead of `nil` - [String] Undeprecate `String.normalize/2` normalize and fix infinite loop caused by certain invalid strings - ExUnit - [ExUnit.Assertions] Fix pattern matching diff when matching on pinned variables - [ExUnit.Assertions] Fix pattern matching diff when matching variable struct names - [ExUnit.Assertions] Fix pattern matching diff when matching on the binary concat operator (`<>`) and the left side is not a literal string - [ExUnit.Assertions] Fix pattern matching diff when matching on pseudo-vars (`__MODULE__`, `__DIR__`, etc) - Mix - [mix release] Respect the `:path` option when creating a `:tar` file for releases + [Code] Return `[{mod, bin}]` from `Code.compile_file/2`, `Code.require_file/2`, `Code.load_file/2` + [Code] Make sure the formatter respects newlines before and after module attributes + [Kernel.ParallelCompiler] Fix a bug where the parallel compiler would raise in long compilation cycles + [Kernel.ParallelCompiler] Fix a bug where the parallel compiler would raise if some of the modules being compiled referred to a module that has been loaded directly to memory + [Module] Fix accidental breaking change where bodiless clauses had their body value on `@on_definition` callbacks set to an empty list instead of `nil` + [String] Undeprecate `String.normalize/2` normalize and fix infinite loop caused by certain invalid strings + ExUnit + [ExUnit.Assertions] Fix pattern matching diff when matching on pinned variables + [ExUnit.Assertions] Fix pattern matching diff when matching variable struct names + [ExUnit.Assertions] Fix pattern matching diff when matching on the binary concat operator (`<>`) and the left side is not a literal string + [ExUnit.Assertions] Fix pattern matching diff when matching on pseudo-vars (`__MODULE__`, `__DIR__`, etc) + Mix + [mix release] Respect the `:path` option when creating a `:tar` file for releases ------------------------------------------------------------------- Thu Apr 16 08:09:49 UTC 2020 - Gabriele Santomaggio @@ -944,33 +1013,33 @@ Thu Apr 16 08:09:49 UTC 2020 - Gabriele Santomaggio - Elixir 1.10.2 * Bug fixes Elixir - [Macro] Fix a bug where Macro.to_string/1 would emit invalid code for sigils - [Task] Do not crash async_stream monitor if it receives spurious DOWN messages - Logger - [Logger] Fix a bug where the Logger formatter would fail when handling unknown metadata values - Mix - [mix compile] Do not write files to disk if --warnings-as-errors was given and warnings were emitted + [Macro] Fix a bug where Macro.to_string/1 would emit invalid code for sigils + [Task] Do not crash async_stream monitor if it receives spurious DOWN messages + Logger + [Logger] Fix a bug where the Logger formatter would fail when handling unknown metadata values + Mix + [mix compile] Do not write files to disk if --warnings-as-errors was given and warnings were emitted - Elixir 1.10.1 * Bug fixes Elixir - [Code] Do not emit invalid code when formatting nil, false, and true keys in maps - [Kernel] Ensure with clauses properly unpack "implicit guards" (such as matching on the struct name) - [Kernel] Do not warn if commas are used by themselves in ~w/~W sigils - [Kernel] Do not validate the :line option in quote (the validation has been moved to v1.11 to give users more time to update their code) - [Module] Ensure the code verifier handles the :erlang.size/1 guard properly + [Code] Do not emit invalid code when formatting nil, false, and true keys in maps + [Kernel] Ensure with clauses properly unpack "implicit guards" (such as matching on the struct name) + [Kernel] Do not warn if commas are used by themselves in ~w/~W sigils + [Kernel] Do not validate the :line option in quote (the validation has been moved to v1.11 to give users more time to update their code) + [Module] Ensure the code verifier handles the :erlang.size/1 guard properly Logger - [Logger] Properly handle the report_cb/2 option from Erlang - [Logger] Fix truncation for multi-byte characters - [Logger] Do not rebroadcast messages from remote nodes as this is now taken care by Erlang's logger + [Logger] Properly handle the report_cb/2 option from Erlang + [Logger] Fix truncation for multi-byte characters + [Logger] Do not rebroadcast messages from remote nodes as this is now taken care by Erlang's logger ExUnit - [ExUnit] Ensure assert_receive produces valid exception messages in case of errors + [ExUnit] Ensure assert_receive produces valid exception messages in case of errors Mix - [mix release] Make sure the install command (Window specific) works on paths with spaces in the name - [mix release] Allow using remote and rpc commands with Application.compile_env/3 + [mix release] Make sure the install command (Window specific) works on paths with spaces in the name + [mix release] Allow using remote and rpc commands with Application.compile_env/3 - Elixir 1.10.0 * Elixir 1.10.0 is a new main release. @@ -987,34 +1056,34 @@ Tue Dec 3 09:25:13 UTC 2019 - Gabriele Santomaggio - Elixir 1.9.4 * Bug fixes Mix - [mix local.hex] Remove invalid deprecation warning on mix local.hex command + [mix local.hex] Remove invalid deprecation warning on mix local.hex command - Elixir 1.9.3 * Enhancements Mix - [mix release] Add :tar option for releases to create a tarball + [mix release] Add :tar option for releases to create a tarball * Bug fixes Mix - [mix release] Use default_release option when name is not given - [mix release] Make release's boot script contents deterministic + [mix release] Use default_release option when name is not given + [mix release] Make release's boot script contents deterministic * Deprecations Mix - [mix archive.install] Warn when installing from URI - [mix escript.install] Warn when installing from URI + [mix archive.install] Warn when installing from URI + [mix escript.install] Warn when installing from URI - Elixir 1.9.2 * Enhancements Mix - [mix release] Allow {:from_app, app_name} as a version for releases + [mix release] Allow {:from_app, app_name} as a version for releases * Bug fixes Elixir - [Kernel] Ensure compilation works for a variable named super - [Kernel] Ensure capture operator of a local function expands correctly inside a macro - [Regex] Ensure dynamic recompilation of regexes considers options. - This fixes an issue where parsing the protocol in URI.parse/1 seemingly looked case sensitive when running Elixir precompiled on another machine + [Kernel] Ensure compilation works for a variable named super + [Kernel] Ensure capture operator of a local function expands correctly inside a macro + [Regex] Ensure dynamic recompilation of regexes considers options. + This fixes an issue where parsing the protocol in URI.parse/1 seemingly looked case sensitive when running Elixir precompiled on another machine * Mix [mix release] Use Base.encode32 when generating cookie to avoid unsafe chars @@ -1024,19 +1093,19 @@ Tue Dec 3 09:25:13 UTC 2019 - Gabriele Santomaggio - Elixir 1.9.1 * Enhancements Mix - [mix format] Print relative paths in --check-formatted output - [mix release] Support included applications + [mix format] Print relative paths in --check-formatted output + [mix release] Support included applications * Bug fixes Elixir - [Code] Fix formatter wrongly removing nested parens in nested calls + [Code] Fix formatter wrongly removing nested parens in nested calls * Logger - [Logger] Do not crash translator on poorly formatted supervisor names + [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 + [mix compile] Raise readable error for mismatched sources during compilation + [mix release] Preserve UTF8 encoding in release config files ------------------------------------------------------------------- Tue Jun 25 08:55:44 UTC 2019 - g.santomaggio@gmail.com @@ -1044,103 +1113,106 @@ Tue Jun 25 08:55:44 UTC 2019 - g.santomaggio@gmail.com - Elixir 1.9.0 * Enhancements EEx - [EEx] Allow more complex mixed expressions when tokenizing + [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 + [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 shing - [ExUnit.DocTest] Display the actual doctest code when doctest fails + [ExUnit] Allow multiple :exclude on configuration/CLI + [ExUnit.DocTest] No longer wrap doctest errors in custom exceptions. They ended-up hiding more information than shing + [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 + [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 + [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. failures also include the apps/APP prefix in the test location + [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. failures also include the apps/APP prefix in the test location * Bug fixes EEx - [EEx] Consistently trim newlines when you have a single EEx expression per line on multiple lines + [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 - [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 procesis still alive + [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 + [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 procesis 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 + [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 + [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 + [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 couldlead to flawed reports + [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 couldlead to flawed reports + * 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 + [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 * 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 + [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 + [Mix.Project] Deprecate Mix.Project.load_paths/1 in favor of Mix.Project.compile_path/1 * Full release notes: https://github.com/elixir-lang/elixir/releases/tag/v1.9.0 @@ -1149,12 +1221,14 @@ Mon May 27 09:02:44 UTC 2019 - g.santomaggio@gmail.com - Elixir 1.8.2 * Bug fixes - [EEx] Raise readable error message on bad EEx state + [EEx] Raise readable error message on bad EEx state + Elixir - [Protocol] Ensure :debug_info is kept in protocols + [Protocol] Ensure :debug_info is kept in protocols + Logger - [Logger] Make sure Logger v1.8 does not get stuck in discard mode - [Logger.Translator] Translate remote process crash in Logger + [Logger] Make sure Logger v1.8 does not get stuck in discard mode + [Logger.Translator] Translate remote process crash in Logger ------------------------------------------------------------------- Wed Mar 13 11:15:44 UTC 2019 - g.santomaggio@gmail.com @@ -1167,14 +1241,16 @@ Tue Feb 19 15:38:20 UTC 2019 - g.santomaggio@gmail.com - Elixir 1.8.1 * Bug fixes Elixir - [Float] Fix rounding for subnormal floats + [Float] Fix rounding for subnormal floats + IEx - [IEx] Fix IEx.pry crash when IEx isn't running - [IEx.CLI] Add IEx warning when using --remsh with "dumb" terminal - [IEx.Helpers] Sort results by arity on h helper + [IEx] Fix IEx.pry crash when IEx isn't running + [IEx.CLI] Add IEx warning when using --remsh with "dumb" terminal + [IEx.Helpers] Sort results by arity on h helper + Mix - [mix compile] Do not include optional dependencies in extra applications as it is - incompatible with shared deps in umbrellas + [mix compile] Do not include optional dependencies in extra applications as it is + incompatible with shared deps in umbrellas ------------------------------------------------------------------- Mon Jan 28 11:00:20 UTC 2019 - g.santomaggio@gmail.com @@ -1183,73 +1259,81 @@ Mon Jan 28 11:00:20 UTC 2019 - g.santomaggio@gmail.com * Elixir v1.8 comes with many improvements at the infrastructure level, improving compilation time, speeding up common patterns, and adding features around introspection of the system. See full changelog at https://github.com/elixir-lang/elixir/releases/tag/v1.8.0 + * Enhancements EEx - [EEx] Optimize the default template engine to compile and execute more efficiently + [EEx] Optimize the default template engine to compile and execute more efficiently + Elixir - [Calendar] Add Calendar.TimeZoneDatabase and a Calendar.UTCOnlyTimeZoneDatabase implementation - [Calendar] Add callbacks day_of_year/3, quarter_of_year/3, year_of_era/1, and day_of_era/3 - [Code.Formatter] Preserve user's choice of new line after most operators - [Date] Add Date.day_of_year/1, Date.quarter_of_year/1, Date.year_of_era/1, and Date.day_of_era/1 - [DateTime] Add DateTime.from_naive/3, DateTime.now/1, and DateTime.shift_zone/3 - [File] Allow :raw option in File.exists?/2, File.regular?/2, and File.dir?/2 - [File] Allow POSIX time as an integer in File.touch/2 and File.touch!/2 - [Inspect] Allow Inspect protocol to be derivable with the :only/:except options - [Kernel] Do not propagate counters to variables in quote inside another quote - [Kernel] Warn on ambiguous use of :: and | in typespecs - [Kernel] Add :delegate_to @doc metadata tag when using defdelegate - [Kernel] Improve compile-time building of ranges via the .. operator - [Kernel] Compile charlist interpolation more efficiently - [Kernel] Add floor/1 and ceil/1 guards - [Kernel.SpecialForms] Add :reduce option to for comprehensions - [List] Add List.myers_difference/3 and List.improper?/1 - [Macro] Add Macro.struct!/2 for proper struct resolution during compile time - [Map] Optimize and merge nested maps put and merge operations - [Range] Add Range.disjoint?/2 - [Record] Reduce memory allocation when updating multiple fields in a record - [Registry] Allow associating a value on :via tuple - [String] Add String.bag_distance/2 - [Task] Add $callers tracking to Task - this makes it easier to find which process spawned a task and use it for tracking ownership and monitoring + [Calendar] Add Calendar.TimeZoneDatabase and a Calendar.UTCOnlyTimeZoneDatabase implementation + [Calendar] Add callbacks day_of_year/3, quarter_of_year/3, year_of_era/1, and day_of_era/3 + [Code.Formatter] Preserve user's choice of new line after most operators + [Date] Add Date.day_of_year/1, Date.quarter_of_year/1, Date.year_of_era/1, and Date.day_of_era/1 + [DateTime] Add DateTime.from_naive/3, DateTime.now/1, and DateTime.shift_zone/3 + [File] Allow :raw option in File.exists?/2, File.regular?/2, and File.dir?/2 + [File] Allow POSIX time as an integer in File.touch/2 and File.touch!/2 + [Inspect] Allow Inspect protocol to be derivable with the :only/:except options + [Kernel] Do not propagate counters to variables in quote inside another quote + [Kernel] Warn on ambiguous use of :: and | in typespecs + [Kernel] Add :delegate_to @doc metadata tag when using defdelegate + [Kernel] Improve compile-time building of ranges via the .. operator + [Kernel] Compile charlist interpolation more efficiently + [Kernel] Add floor/1 and ceil/1 guards + [Kernel.SpecialForms] Add :reduce option to for comprehensions + [List] Add List.myers_difference/3 and List.improper?/1 + [Macro] Add Macro.struct!/2 for proper struct resolution during compile time + [Map] Optimize and merge nested maps put and merge operations + [Range] Add Range.disjoint?/2 + [Record] Reduce memory allocation when updating multiple fields in a record + [Registry] Allow associating a value on :via tuple + [String] Add String.bag_distance/2 + [Task] Add $callers tracking to Task - this makes it easier to find which process spawned a task and use it for tracking ownership and monitoring + ExUnit - [ExUnit] Add ExUnit.after_suite/1 callback - [ExUnit.Assertions] Show last N messages (instead of first N) from mailbox on assert_receive fail + [ExUnit] Add ExUnit.after_suite/1 callback + [ExUnit.Assertions] Show last N messages (instead of first N) from mailbox on assert_receive fail + IEx - [IEx.Helpers] Add port/1 and port/2 - [IEx.Server] Expose IEx.Server.run/1 for custom IEx sessions with the ability to broker pry sessions + [IEx.Helpers] Add port/1 and port/2 + [IEx.Server] Expose IEx.Server.run/1 for custom IEx sessions with the ability to broker pry sessions + Mix - [Mix] Add Mix.target/0 and Mix.target/1 to control dependency management per target - [Mix.Project] Add :depth and :parents options to deps_paths/1 - [mix archive.install] Add a timeout when installing archives - [mix compile] Include optional dependencies in :extra_applications - [mix escript.install] Add a timeout when installing escripts - [mix format] Warn when the same file may be formatted by multiple .formatter.exs - [mix test] Allow setting the maximum number of failures via --max-failures - [mix test] Print a message instead of raising on unmatched tests inside umbrella projects + [Mix] Add Mix.target/0 and Mix.target/1 to control dependency management per target + [Mix.Project] Add :depth and :parents options to deps_paths/1 + [mix archive.install] Add a timeout when installing archives + [mix compile] Include optional dependencies in :extra_applications + [mix escript.install] Add a timeout when installing escripts + [mix format] Warn when the same file may be formatted by multiple .formatter.exs + [mix test] Allow setting the maximum number of failures via --max-failures + [mix test] Print a message instead of raising on unmatched tests inside umbrella projects * Bug fixes Elixir - [Calendar] Allow printing dates with more than 9999 years - [Exception] Exclude deprecated functions in "did you mean?" hints - [Float] Handle subnormal floats in Float.ratio/1 - [Kernel] Remove Guard test tuple_size(...) can never succeed Dialyzer warning on try - [Kernel] Expand operands in size*unit bitstring modifier instead of expecting size and unit to be literal integers - [Kernel] Do not deadlock on circular struct dependencies in typespecs - [Kernel] Raise proper error message when passing flags to the Erlang compiler that Elixir cannot handle - [Kernel] Do not leak variables in cond clauses with a single matching at compile-time clause - [NaiveDateTime] Do not accept leap seconds in builder and parsing functions - [String] Fix ZWJ handling in Unicode grapheme clusters - [StringIO] Handle non-printable args in StringIO gracefully + [Calendar] Allow printing dates with more than 9999 years + [Exception] Exclude deprecated functions in "did you mean?" hints + [Float] Handle subnormal floats in Float.ratio/1 + [Kernel] Remove Guard test tuple_size(...) can never succeed Dialyzer warning on try + [Kernel] Expand operands in size*unit bitstring modifier instead of expecting size and unit to be literal integers + [Kernel] Do not deadlock on circular struct dependencies in typespecs + [Kernel] Raise proper error message when passing flags to the Erlang compiler that Elixir cannot handle + [Kernel] Do not leak variables in cond clauses with a single matching at compile-time clause + [NaiveDateTime] Do not accept leap seconds in builder and parsing functions + [String] Fix ZWJ handling in Unicode grapheme clusters + [StringIO] Handle non-printable args in StringIO gracefully + IEx - [IEx.Helpers] Use typespec info (instead of docs chunk) and properly format callbacks in b/1 + [IEx.Helpers] Use typespec info (instead of docs chunk) and properly format callbacks in b/1 + Logger - [Logger] Allow Logger backends to be dynamically removed when an application is shutting down + [Logger] Allow Logger backends to be dynamically removed when an application is shutting down + Mix - [mix compile] Ensure changes in deps propagate to all umbrella children - this fix a long standing issue where updating a dependency would not recompile all projects accordingly, requiring a complete removal of _build - [mix compile] Avoid time drift when checking and updating compiler manifest files - [mix compile.app] Respect the :only option between umbrella siblings - [mix compile.protocols] Reconsolidate protocols if local dependencies are stale - [mix deps] Properly mark dependencies with different :system_env as diverged - [mix new] Use --module value when setting up filenames + [mix compile] Ensure changes in deps propagate to all umbrella children - this fix a long standing issue where updating a dependency would not recompile all projects accordingly, requiring a complete removal of _build + [mix compile] Avoid time drift when checking and updating compiler manifest files + [mix compile.app] Respect the :only option between umbrella siblings + [mix compile.protocols] Reconsolidate protocols if local dependencies are stale + [mix deps] Properly mark dependencies with different :system_env as diverged + [mix new] Use --module value when setting up filenames ------------------------------------------------------------------- Sun Dec 30 11:18:35 UTC 2018 - matwey.kornilov@gmail.com @@ -1424,6 +1508,7 @@ Wed Jul 5 19:59:58 UTC 2017 - develop7@develop7.info 1. Enhancements Logger [Logger] Handle changes to crash reports in OTP 20 + 2. Bug fixes Elixir [DateTime] Fix DateTime.from_iso8601/2 when offset has no colon @@ -1449,18 +1534,23 @@ Thu May 18 18:39:39 UTC 2017 - develop7@develop7.info [Map] Warn when attempting to override __struct__ key [Regex] Add recompile/1 and recompile!/1 to ease transition to OTP 20 for archives and stored regexes + Logger [Logger.Translator] Handle OTP 20 GenServer log messages + Mix [mix compile] Recompile projects if OTP version changes 2. Bug fixes Elixir [Kernel] Fix code generation when non-binary bitstrings are in AST [Record] Properly escape fields passed to defrecord + ExUnit [ExUnit.Diff] Do not fail when comparing maps with nil or boolean keys + IEx [IEx.Helpers] Do not log exits on IEx.Helpers.c/2 failures + Mix [mix archive.install] Detect proper path on URLs with query strings [mix loadpaths] Do not assume all paths in loadpaths exist @@ -1472,6 +1562,7 @@ Mon Feb 27 09:13:15 UTC 2017 - develop7@develop7.info 1. Bug fixes EEx [EEx] Support middle expressions on trim mode + Elixir [Calendar] Correct typo on Calendar types [Kernel] Ensure redefined functions point to the proper source @@ -1480,9 +1571,11 @@ Mon Feb 27 09:13:15 UTC 2017 - develop7@develop7.info [Stream] Allow consuming multiple items from suspended enumerable in `Stream.transform/3` [String] Incorporate new grapheme rules in Unicode 9 + IEx [IEx.Autocomplete] Do not crash on aliases which are not known at compile time + Mix [Mix.Umbrella] Ensure umbrella projects can depend on other umbrella projects @@ -1494,8 +1587,10 @@ Mon Feb 27 09:13:15 UTC 2017 - develop7@develop7.info [Kernel] Remove warning when making private functions overridable [Path] Ensure `Path.join/1` returns strings for lists of one element [Regex] Ensure `Regex.escape/1` also escapes `-` + IEx [IEx] Disable ANSI detection for powershell to avoid false positives + Mix [Mix.Make] Run `make clean` for `erlang.mk` [Mix.Rebar] Support all of rebar3 dependency package declaration @@ -1551,12 +1646,14 @@ Fri Jan 6 17:33:45 UTC 2017 - develop7@develop7.info supervised versions Task.Supervisor.async_stream/4 and Task.Supervisor.async_stream/6 [URI] Allow 0 as URI scheme default port + ExUnit [ExUnit.Diff] Use red or green background for whitespace-only diffs [ExUnit.Doctest] Allow inspected structures with multiples lines and unicode characters in the doctest result [ExUnit.Formatter] Replace lhs/rhs with left/right in the formatter for clarity + IEx [IEx.Autocomplete] Stop appending a trailing dot when autocompleting modules in IEx @@ -1567,6 +1664,7 @@ Fri Jan 6 17:33:45 UTC 2017 - develop7@develop7.info issue where .beam files remain at projects root directory [IEx.Helpers] Add info about protocols in i/1 [IEx.Server] Support interrupting IEx evaluation through the Ctrl+G prompt + Mix [mix archive] Compress archive files built by mix archive as they are now unzipped during installation @@ -1587,6 +1685,7 @@ Fri Jan 6 17:33:45 UTC 2017 - develop7@develop7.info module to work as application callback [mix test] Add --formatter option to mix test [mix xref] Provide "did you mean?" suggestions for mix xref + 2. Bug fixes Elixir [Access] Do not accept nils in Access.key/1 and Access.key/2 in favor of @@ -1613,26 +1712,33 @@ Fri Jan 6 17:33:45 UTC 2017 - develop7@develop7.info String.replace_trailing/3 when given an empty string [Task] Fix Task.shutdown/1,2 infinite block when task has no monitor [Task] Ensure task cannot link after parents unlinks + ExUnit [ExUnit] Fix a race condition in assert_receive where we would assert a message was not received but show it in the list of messages when the message is delivered right after the timeout value + IEx + [IEx.Helpers] Purge consolidated protocols before and after recompile/0 + Mix [Mix.Dep] Use gmake on FreeBSD instead of make when compiling make dependencies [Mix.Project] Only copy files from source when they're newer than destination (for Windows machines) [Mix.Task] Ensure non-recursive tasks inside umbrella are reenabled + 3. Soft deprecations (no warnings emitted) Elixir [Enum] Enum.partition/2 has been deprecated in favor of Enum.split_with/2 [System] Deprecate plural time units in favor of singular ones to align with future Erlang releases + ExUnit [ExUnit] Using GenEvent to implement ExUnit formatters is deprecated. Please use the new GenServer based formatters instead + 4. Deprecations Elixir [Access] Access.key/1 is deprecated due to erratic behaviour for missing @@ -1648,9 +1754,11 @@ Fri Jan 6 17:33:45 UTC 2017 - develop7@develop7.info [OptionParser] Deprecate aliases with multiple letters, such as -abc [Set] Deprecate the Set module [Stream] Deprecate Stream.uniq/2 in favor of Stream.uniq_by/2 + IEx [IEx.Helpers] import_file/2 is deprecated in favor of import_file_if_available/1 + Mix [Mix.Utils] underscore/1 and camelize/1 are deprecated @@ -1665,6 +1773,7 @@ Sun Oct 9 19:39:04 UTC 2016 - develop7@develop7.info sure "unused variable warnings" are not mistakenly silenced [Kernel] Move raise checks to runtime to avoid crashing cover on Erlang 19.1 [Protocol] Do not emit warnings when using protocols on opaque types + ExUnit [ExUnit.CaptureLog] Flush Erlang's :error_logger before capturing to avoid mixed messages @@ -1679,18 +1788,23 @@ Fri Sep 23 10:40:28 UTC 2016 - develop7@develop7.info [Kernel.LexicalTracker] Do not consider remote typespecs as a compile-time dependency [Kernel.ParallelCompiler] Do not emit deadlock messages when the process is waiting on itself [Kernel.Typespec] Mark struct update syntax as generated to avoid false positives from dialyzer + ExUnit [ExUnit] Make ExUnit server timeout configurable + Logger [Logger] Use :ansi_color if one is available in metadata + Mix [Mix] Add support for the :sparse option in Mix.SCM.Git [Mix] Skip dependendency loading if MIX_NO_DEPS is set to 1 2. Bug fixes Elixir [System] Use NUL instead of /dev/null on Windows when building System.build_info + IEx [IEx.Autocomplete] Resolves issue with autocompletion on structs not working + Mix [Mix] Also store external resources that are not part of the current working directory in compilation manifest [Mix] Always include the compiled file source in manifests @@ -1702,17 +1816,21 @@ Sat Jul 30 10:32:07 UTC 2016 - develop7@develop7.info 1. Enhancements Elixir [Kernel] Support guards in else clauses in with + Mix [Mix] Add MIX_NO_DEPS env var for disabling dep loading. Used for third-party scripts and tools like Nix package manager [Mix] Add mix test --listen-on-stdin that automatically reruns tests on stdin [Mix] Disable --warnings-as-errors when compiling dependencies [Mix] Add --filter option to mix deps.unlock to unlock only matching dependencies + 2. Bug fixes Elixir [Enum] Return nil if enumerable halts in Enum.find_index/3 [Kernel] Do not attempt to load modules that have not been required when invoking regular functions, otherwise this invalidates the @compile {:autoload, false} directive. + Mix [Mix] Ensure missing protocol dependencies are discarded in umbrella projects with shared build + ExUnit [ExUnit.Diff] Ensure no leading or trailing when diffing some maps @@ -1738,8 +1856,10 @@ Thu Jun 30 18:22:46 UTC 2016 - develop7@develop7.info [Kernel.Typespec] Support module attributes in remote types [Module] Do not expect stacktraces to be always present when dispatching to locals during the module compilation + IEx [IEx.Helpers] Fix h helper for operators + Mix [Mix] Do not load modules for xref purposes, instead use BEAM info [Mix] Ensure deps.check does not check archives (that's done in loadpaths) @@ -1769,11 +1889,11 @@ Sun May 1 09:43:58 UTC 2016 - pereira.alex@gmail.com [String] Fix bugs in String.replace_* functions where it would not include the accumulated value for certain replacements - Update to v1.2.4 - Enhancements - [Mix] Add :archives configuration to def project that allows projects to list archive dependencies. --no-archives-check (as well as --no-deps-check) will disable the archive check. The :archives option is not checked for dependencies. - [Mix] Add deps.precompile task as hook - [Mix] Support --include-children in mix deps.compile option - [String] Update version of the Unicode database to 8.0.0 + Enhancements + [Mix] Add :archives configuration to def project that allows projects to list archive dependencies. --no-archives-check (as well as --no-deps-check) will disable the archive check. The :archives option is not checked for dependencies. + [Mix] Add deps.precompile task as hook + [Mix] Support --include-children in mix deps.compile option + [String] Update version of the Unicode database to 8.0.0 Bug fixes [Application] Ensure spec/2 returns nil for unknown applications @@ -1790,6 +1910,7 @@ Wed Feb 24 16:06:18 UTC 2016 - develop7@develop7.info + Enhancements * [Base] Add :ignore and :padding option to encoding/decoding functions * [Mix] Add Mix.Projects.deps_paths that returns the dependencies path as a map + + Bug fixes * [ExUnit] Do not provide negative line numbers without generated annotation (for compatibility with Erlang 19) * [Mix] Reject non fullfilled optional dependencies later on in the convergence resolution for proper dependency sorting @@ -1802,6 +1923,7 @@ Thu Feb 4 09:10:38 UTC 2016 - pereira.alex@gmail.com - Update to v1.2.2 Enhancements [Kernel] Support @compile {:autoload, false} to disable automatic loading after compilation + Bug fixes [ExUnit] Raise if trying to override reserved tag in setup blocks [Mix] Ensure retrieve compile manifests do fail if some compilers are not yet available @@ -1812,6 +1934,7 @@ Thu Feb 4 09:10:38 UTC 2016 - pereira.alex@gmail.com Enhancements [IEx] Support remote pids/ports with IEx helper i/1 [Protocol] Warn when defimpl is called for a consolidated protocol + Bug fixes [ExUnit] Ensure assert macros can be used from quoted code [ExUnit] Do not warn in match assertion if variable is reused in pattern diff --git a/elixir.spec b/elixir.spec index 96c4118..0bc2159 100644 --- a/elixir.spec +++ b/elixir.spec @@ -1,7 +1,7 @@ # # spec file for package elixir # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: elixir -Version: 1.14.0 +Version: 1.14.2 Release: 0 Summary: Functional meta-programming aware language built atop Erlang License: Apache-2.0 @@ -28,9 +28,9 @@ Source2: macros.elixir BuildRequires: gcc BuildRequires: make # required by Mix.SCM.Git see also (https://github.com/elixir-lang/elixir/issues/1386) -Requires: erlang >= 22 +Requires: erlang >= 23 Requires: git >= 1.7 -BuildRequires: erlang >= 22 +BuildRequires: erlang >= 23 BuildRequires: erlang-dialyzer BuildRequires: erlang-src BuildRequires: git >= 1.7