- Elixir 1.14
* 1. Enhancements
EEx
[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
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
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
Logger
[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
* 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
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
IEx
[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
* 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
EEx
[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
Mix
[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
Logger
[Logger] Deprecate $levelpad on message formatting
Mix
[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
OBS-URL: https://build.opensuse.org/request/show/1005280
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=80
- Elixir 1.13.4
* 1. Enhancements
Elixir
[Code] Allow iodata to be returned in sigil formatting functions
[Code] Pass opening delimiter information to sigil formatting functions
* 2. Bug fixes
Elixir
[Kernel] Tweak type unification to fix infinite loop with recursive vars
[Kernel] Add compile-time dependencies on require
[Registry] Make Registry send work with named triplets
* 3. Deprecations
Mix
[mix rebar] Deprecate Rebar 2 as it no longer works on Erlang/OTP 25
OBS-URL: https://build.opensuse.org/request/show/968213
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=78
- Elixir 1.13.3
* 1. Enhancements
Mix
[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
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
OBS-URL: https://build.opensuse.org/request/show/956918
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=77
- Elixir 1.13.2
* 1. Enhancements
Mix
[mix format] Allow plugins to also format .ex and .exs files
[mix release] Allow bypassing application mode validation in release spec
[mix test] Print a message when the suite fails due to the coverage threshold
* 2. Bug fixes
Elixir
[Code] Do not emit warnings on Code.Fragment.container_cursor_to_quoted/2
[Kernel] Fix a crash when a for-comprehension with :uniq was used inside another comprehension with :uniq
[Kernel] Ensure env.context_modules is properly set inside optimized defmodule
[Keyword] Deprecate the recently added Keyword.map/2 as it is equivalent to Keyword.new/2
[Map] Deprecate the recently added Map.map/2 as it is equivalent to Map.new/2
[Protocol] Warn on zero arity callbacks inside protocols
OBS-URL: https://build.opensuse.org/request/show/946462
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=75
- 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
IEx
[IEx] Make sure the `--version` flag halts IEx
Mix
[Mix] Make protocol consolidation part of the `Mix.install/2` cache
- Elixir 1.13.0
* Enhancements
EEx
[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
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`
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
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
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
IEx
[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
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
* 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`
Mix
[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
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
Full release notes: https://github.com/elixir-lang/elixir/releases/tag/v1.13.0
OBS-URL: https://build.opensuse.org/request/show/944534
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=74
- 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
IEx
[IEx.Autocomplete] Do not error autocompletion with module attribute
Mix
[Mix] Rename inconsistent `:exit_code` option to `:exit_status` on `Mix.raise/2`
OBS-URL: https://build.opensuse.org/request/show/922053
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=72
- Elixir 1.12.2
* Bug fixes
Elixir
[Kernel] Ensure deprecated macros emit warnings
Mix
[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`
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
OBS-URL: https://build.opensuse.org/request/show/905894
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=71
- Elixir 1.11.3
* Enhancements
Elixir
[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
ExUnit
[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
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
OBS-URL: https://build.opensuse.org/request/show/862427
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=65
- 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
OBS-URL: https://build.opensuse.org/request/show/819689
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=58
- 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
- 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
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
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
- Elixir 1.10.0
* Elixir 1.10.0 is a new main release.
Full release notes: https://github.com/elixir-lang/elixir/releases/tag/v1.10.0
OBS-URL: https://build.opensuse.org/request/show/794505
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=54
Add unzip to "build require"
- Elixir 1.9.4
* Bug fixes
Mix
[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
* Bug fixes
Mix
[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
- Elixir 1.9.2
* Enhancements
Mix
[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
* Mix
[mix release] Use Base.encode32 when generating cookie to avoid unsafe chars
[mix release] Fix install command on Windows
[mix release] Quote executable path on Windows to ensure it works on directories with spaces
- Elixir 1.9.1
* Enhancements
Mix
[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
* Logger
[Logger] Do not crash translator on poorly formatted supervisor names
* Mix
[mix compile] Raise readable error for mismatched sources during compilation
[mix release] Preserve UTF8 encoding in release config files
OBS-URL: https://build.opensuse.org/request/show/755456
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=48
----------------------- --------------------------------------------
- Elixir 1.8.0
* 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
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
ExUnit
[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
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
* 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
IEx
[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
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
OBS-URL: https://build.opensuse.org/request/show/669040
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=37
- Elixir 1.7.4
* Bug fixes
[Calendar] Fix for converting from negative iso days on New Year
in a leap year
[Kernel] Ensure @spec, @callback, @type and friends can be read
accordingly
[Module] Avoid warnings when using Module.eval_quoted in the middle of
existing definitions
[mix archive.build] Unload previous archive versions before building
[mix format] Expand paths so mix format path\for\windows.ex works
[mix test] Ensure that --cover displays correct coverage in an umbrella app
- Elixir 1.7.3
* Bug fixes
[ExUnit.Assertions] Do not attempt to expand try/1 as it is a special form
[mix compile.app] Do not include applications with runtime: false as a runtime
dependency for applications coming from Hex
[mix compile.app] Do not include applications with runtime: false as a runtime dependency
for applications coming from Hex
- Elixir 1.7.2
* Bug fixes
[Kernel] Do not emit warnings for repeated docs over different clauses due to false
positives
[mix compile] Properly mark top-level dependencies as optional and as runtime.
This fixes a bug where Mix attempted to start optional dependencies of a package when
those optional dependencies were not available
[mix compile] Avoid deadlock when a config has a timestamp later than current time
[mix test] Do not fail suite if there are no test files
- Elixir 1.7.1
* Bug fixes
[Calendar] Work-around a Dialyzer bug that causes it to loop for a long time,
potentially indefinitely
- Elixir 1.7
Elixir v1.7 is the last release to support Erlang/OTP 19. We recommend everyone to migrate to
Erlang/OTP 20+.
See the full release notes here: https://github.com/elixir-lang/elixir/releases/tag/v1.7.0
OBS-URL: https://build.opensuse.org/request/show/647625
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=31
- Elixir 1.6.6
This release supports Erlang/OTP 21.0 by removing all warnings and by
properly supporting the new Erlang logger module.
* Bug fixes
[Base] Do not raise when finding bad digits in Base.decode32! with
`case: :mixed`
[Code] Preserve the user's choice when fn is followed by a newline and it
has only a single clause
[DynamicSupervisor] Properly account for restarting children in the
`:max_children` configuration
[String] Add performant impl for string upcase/downcase :ascii mode
[Task.Supervisor] Fix type spec for start_child/4
[Logger] Do not crash truncation when truncate is set to infinity
[mix format] Match files starting with dot
- Elixir 1.6.5
This release supports Erlang/OTP 21.0-rc by removing all warnings and by
properly redirecting logger output. Note it is not guaranteed it will support
Erlang/OTP 21.0 final.
Bug fixes
[Code] Preserve the user's choice in the formatter on parens call with next
break fits
[Code] Preserve the user's choice in the formatter on calls without parens
when we have one argument per line
[Code] Fix formatting when there is a tilde in the first element of a
bitstring
[Kernel] Support specsdiff flag on __info__ spec clauses
[Kernel] Do not exclude hygienic vars in defguard
[Kernel.SpecialForms] Mark for comprehensions as generated to avoid
dialyzer warnings
[Macro] Make sure Macro.to_string/2 emits valid quoted expressions
OBS-URL: https://build.opensuse.org/request/show/620027
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=30
- update to v1.3.4
1. Bug fixes
Elixir
[Kernel] Ensure the compiler does not generate unecessary variable
bindings inside case statements. This improves the code emitted and make
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
OBS-URL: https://build.opensuse.org/request/show/434012
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang/elixir?expand=0&rev=22
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.