Commit graph

43 commits

Author SHA1 Message Date
adam 0a21beb9ac elixir: updated to 1.15.7
v1.15.7

1. Enhancements

Elixir

[Elixir] Allow code evaluation across Elixir versions

2. Bug fixes

EEx

[EEx] Do not emit duplicate warnings from tokenizer
Mix

[mix format] Correctly match file to subdirectory in Mix.Tasks.Format.formatter_for_file/2
2023-10-23 14:42:23 +00:00
adam 3629e5afdc elixir: updated to 1.15.4
v1.15.4

Bug fixes

Mix

[mix archive.build] Disable protocol consolidation when building archiveson archive.install
[mix compile] Track removed files per local dependency (this addresses a bug where files depending on modules from path dependencies always recompiled)
[mix release] Do not strip relevant chunks from Erlang/OTP 26


v1.15.3

1. Enhancements

Elixir

[Kernel] Improve better stacktraces when executing unnested Elixir code in a file

Mix

[Mix] Allow to opt out of starting apps in Mix.install/2

2. Bug fixes

Elixir

[Code] Ensure with_diagnostics propagate warnings from inner Erlang passes

IEx

[IEx] Fix --remsh on Erlang/OTP 25 and earlier

Mix

[mix compile.elixir] Ensure __mix_recompile__? callbacks are properly invoked
2023-07-24 06:57:38 +00:00
adam 14d0c2acb4 elixir: updated to 1.15.2
v1.15.2

Bug fixes

IEx

[IEx] Fix CLI being unable to boot on Windows


v1.15.1

1. Enhancements

[Code] Code.string_to_quoted/2 honors :static_atoms_encoder for multi-letter sigils
2. Bug fixes

ExUnit

[ExUnit.CaptureLog] Fix race condition on concurrent capture_log
[ExUnit.CaptureLog] Respect options passed to nested capture_log calls
[ExUnit.Doctest] Properly compile doctests without results terminated by fences
[ExUnit.Doctest] Allow variables defined in doctests to be used in expectation
IEx

[IEx] Ensure pry works on Erlang/OTP 25 and earlier while IEx is booting
[IEx] Code.Fragment.surround_context considers surround context around spaces and parens
Logger

[Logger] Do not assume Logger has been loaded at compile-time
[Logger.Formatter] Properly handle :function as metadata
Mix

[mix compile] Ensure the current project is available on the code path after its Elixir sources are compiled
[mix compile] Guarantee yecc/leex are available when emitting warnings from previous runs
[mix compile] Fix bug where an external resource was deleted after its
mtime was successfully retrieved
[mix compile] Track removed modules and exports across local deps
[mix deps] Fix an issue where dependencies could not be started in an umbrella projects
[mix release] Properly handle optional dependencies when there is a conflict in the application start mode
[mix release] Remove --werl from release scripts on Erlang/OTP 26
2023-07-07 13:40:42 +00:00
wiz 09df873290 elixir: update to 1.15.0.
# Changelog for Elixir v1.15

This release requires Erlang/OTP 24 and later.

Elixir v1.15 is a smaller release with focused improvements
on compilation and boot times. This release also completes
our integration process with Erlang/OTP logger, bringing new
features such as log rotation and compaction out of the box.

You will also find additional convenience functions in `Code`,
`Map`, `Keyword`, all Calendar modules, and others.

## Compile and boot-time improvements

The last several releases brought improvements to compilation
time and this version is no different. In particular, Elixir
now caches and prunes load paths before compilation, ensuring your
project (and dependencies!) compile faster and in an environment
closer to production.

In a nutshell the Erlang VM loads modules from code paths. Each
application that ships with Erlang and Elixir plus each dependency
become an entry in your code path. The larger the code path, the
more work Erlang has to do in order to find a module.

In previous versions, Mix would only add entries to the load paths.
Therefore, if you compiled 20 dependencies and you went to compile
the 21st, the code path would have 21 entries (plus all Erlang and
Elixir apps). This allowed modules from unrelated dependencies to
be seen and made compilation slower the more dependencies you had.
With this release, we will now prune the code paths to only the ones
listed as dependencies, bringing the behaviour closer to `mix release`.

Furthermore, Erlang/OTP 26 allows us to start applications
concurrently and cache the code path lookups, decreasing the cost of
booting applications. The combination of Elixir v1.15 and Erlang/OTP 26
should reduce the boot time of applications, such as when starting
`iex -S mix` or running a single test with `mix test`, from 5% to 30%.

The compiler is also smarter in several ways: `@behaviour` declarations
no longer add compile-time dependencies and aliases in patterns and
guards add no dependency whatsoever, as no dispatching happens. Furthermore,
Mix now tracks the digests of `@external_resource` files, reducing the
amount of recompilation when swapping branches. Finally, dependencies
are automatically recompiled when their compile-time configuration changes.

### Potential incompatibilities

Due to the code path pruning, if you have an application or dependency
that does not specify its dependencies on Erlang and Elixir application,
it may no longer compile successfully in Elixir v1.15. You can temporarily
disable code path pruning by setting `prune_code_paths: false` in your
`mix.exs`, although doing so may lead to runtime bugs that are only
manifested inside a `mix release`.

## Compiler warnings and errors

The Elixir compiler can now emit many errors for a single file, making
sure more feedback is reported to developers before compilation is aborted.

In Elixir v1.14, an undefined function would be reported as:

    ** (CompileError) undefined function foo/0 (there is no such import)
        my_file.exs:1

In Elixir v1.15, the new reports will look like:

    error: undefined function foo/0 (there is no such import)
      my_file.exs:1

    ** (CompileError) my_file.exs: cannot compile file (errors have been logged)

A new function, called `Code.with_diagnostics/2`, has been added so this
information can be leveraged by editors, allowing them to point to several
errors at once.

## Integration with Erlang/OTP logger

This release provides additional features such as global logger
metadata and file logging (with rotation and compaction) out-of-the-box!

This release also soft-deprecates Elixir's Logger Backends in
favor of Erlang's Logger handlers. Elixir will automatically
convert your `:console` backend configuration into the new
configuration. Previously, you would set:

```elixir
config :logger, :console,
  level: :error,
  format: "$time $message $metadata"
```

Which is now translated to the equivalent:

```elixir
config :logger, :default_handler,
  level: :error

config :logger, :default_formatter,
  format: "$time $message $metadata"
```

If you use `Logger.Backends.Console` with a custom device or other
backends, they are still fully supported and functional. If you
implement your own backends, you want to consider migrating to
[`:logger_backends`](https://github.com/elixir-lang/logger_backends)
in the long term.

See the new `Logger` documentation for more information on the
new features and on compatibility.
2023-07-02 08:09:37 +00:00
adam 00acfe0749 elixir: updated to 1.14.5
v1.14.5 (2023-05-22)

This release contains fixes for Erlang/OTP 26.

Bug fixes

Elixir
* [CLI] Fix a bug where stdout would block when there was no attached terminal on Windows when running on Erlang/OTP 26

Mix
* [Mix] Properly set SSL configuration for Mix downloads when running on Erlang/OTP 26
2023-05-26 04:26:50 +00:00
wiz 4f2e539906 elixir: update to 1.14.4.
v1.14.4 Latest

This release adds basic support for Erlang/OTP 26. When migrating
to Erlang/OTP 26, keep it mind it changes how maps are stored
internally and they will be printed and traversed in a different
order (note maps never provided a guarantee of their order).
To aid migration, this release adds :sort_maps to inspect
custom options, in case you want to sort them before inspection:

inspect(map, custom_options: [sort_maps: true])

Enhancements

Elixir

    [Inspect] Add :sort_maps to Inspect.Opts.custom_options

IEx

    [IEx] Support shell history in Erlang/OTP 26+

Mix

    [mix compile.elixir] Optimize application tracer

Bug fixes

Elixir

    [Code] Properly handle blocks with comments in all cases in Code.quoted_to_string_with_comments/2
    [Kernel] Fix debug_info/4 when returning core_v1
    [Kernel] Store complete path on quote keep: true to avoid invalid stacktraces
    [Kernel] Fix column count when tokenizing escaped interpolations
    [Stream] Fix Stream.zip/1 hanging on empty list

Mix

    [mix format] Don't call formatter on directories

v1.14.3

1. Enhancements

Elixir

    [Kernel] Speed up loading of runtime modules in the parallel compiler
    [Range] Optimize range membership implementation

ExUnit

    [ExUnit] Return values from running doctests and make their order consistent

2. Bug fixes

Elixir

    [Calendar] Fix handling of negative years in Calendar.strftime/2
    [Exception] Improve blaming of FunctionClauseError with is_struct/2 guards
    [Kernel] Fix invalid variable scoping in defguard expansion
    [Kernel] Do not warn on captured underscored vars from defmodule
    [Kernel] Do not crash for missing line info on type warnings
    [Macro] Fix Macro.to_string/1 for large negative integers
    [Macro] Properly type and escape expansion of __ENV__ in macros
    [Path] Make sure Path.wildcard/2 expands .. symlinks accordingly
    [Range] Address corner cases in Range.disjoint?/2 implementation

ExUnit

    [ExUnit.DocTest] Remove unnecessary literal quotes from error message on reports
2023-04-09 08:56:58 +00:00
wiz df7e09fa2a elixir: allow setting ELIXIR_APP_VERSION independent of PKGVERSION
Needed by devel/hex
2023-03-03 10:09:58 +00:00
gdt 3541e5b413 lang/elixir: Mark not MAKE_JOBS_SAFE
Add upstream bug report URL
2023-01-06 01:14:01 +00:00
gdt 21872be868 lang/elixir: Improve locale handling
- actually set the build env for the diagnostics
  - set LC_ALL after bsd.pkg.mk
  - document why we are setting it
2023-01-04 01:19:58 +00:00
gdt 5d22356207 lang/elixir: Add debugging printouts about locale
NFCI; just prints environment variables and locale before the build.
2023-01-04 00:22:01 +00:00
schmonz 2adc53585f Update to 1.14.2. From the changelog:
## v1.14.2 (2022-11-11)

### 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


## v1.14.1 (2022-10-10)

### 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
2022-12-27 16:55:12 +00:00
nikita 65df99f67f devel/hex: fix build. 2022-11-14 17:48:14 +00:00
nikita 534640486f lang/elixir: Add code to simplify handling mix build system.
Inspired by FreeBSD ports' elixir.mk
2022-11-10 14:23:15 +00:00
triaxx a533f99335 elixir: Update to 1.14.0
upstream changes:
-----------------
v1.14
  o https://github.com/elixir-lang/elixir/blob/v1.14/CHANGELOG.md
v1.13
  o https://github.com/elixir-lang/elixir/blob/v1.13/CHANGELOG.md
2022-10-15 18:13:42 +00:00
nia 2176cc7249 lang: Replace RMD160 checksums with BLAKE2s checksums
All checksums have been double-checked against existing RMD160 and
SHA512 hashes

The following distfiles could not be fetched (possibly fetched
conditionally?):

./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-aarch64-unknown-linux-gnu.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-aarch64-unknown-linux-musl.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-aarch64-unknown-netbsd.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-armv7-unknown-netbsd-eabihf.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-i686-unknown-linux-gnu.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-powerpc-unknown-netbsd90.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-sparc64-unknown-netbsd.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-apple-darwin.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-unknown-freebsd.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-unknown-linux-gnu.tar.gz
./lang/rust-bin/distinfo rust-bin-1.54.0/rust-1.54.0-x86_64-unknown-linux-musl.tar.gz
./lang/smlnj/distinfo smlnj-110.73/boot.ppc-unix.tgz
./lang/smlnj/distinfo smlnj-110.73/boot.sparc-unix.tgz
./lang/oracle-jre8/distinfo jce_policy-8.zip
./lang/oracle-jre8/distinfo jre-8u202-linux-i586.tar.gz
./lang/oracle-jre8/distinfo jre-8u202-linux-x64.tar.gz
./lang/oracle-jre8/distinfo jre-8u202-macosx-x64.tar.gz
./lang/oracle-jre8/distinfo jre-8u202-solaris-x64.tar.gz
./lang/oracle-jdk8/distinfo jdk-8u202-linux-i586.tar.gz
./lang/oracle-jdk8/distinfo jdk-8u202-linux-x64.tar.gz
./lang/oracle-jdk8/distinfo jdk-8u202-solaris-x64.tar.gz
./lang/ghc80/distinfo ghc-7.10.3-boot-x86_64-unknown-solaris2.tar.xz
./lang/ghc80/distinfo ghc-8.0.2-boot-i386-unknown-freebsd.tar.xz
./lang/ghc80/distinfo ghc-8.0.2-boot-x86_64-unknown-freebsd.tar.xz
./lang/gcc5-aux/distinfo ada-bootstrap.i386.freebsd.100B.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.i386.freebsd.84.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.dragonfly.41.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.freebsd.100B.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.freebsd.84.tar.bz2
./lang/gcc5-aux/distinfo ada-bootstrap.x86_64.solaris.511.tar.bz2
./lang/rust/distinfo rust-1.53.0-aarch64-apple-darwin.tar.gz
./lang/rust/distinfo rust-1.53.0-aarch64-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-1.53.0-aarch64-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-1.53.0-aarch64_be-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-1.53.0-arm-unknown-linux-gnueabihf.tar.gz
./lang/rust/distinfo rust-1.53.0-armv7-unknown-linux-gnueabihf.tar.gz
./lang/rust/distinfo rust-1.53.0-i686-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-1.53.0-powerpc-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-1.53.0-powerpc-unknown-netbsd90.tar.gz
./lang/rust/distinfo rust-1.53.0-sparc64-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-1.53.0-x86_64-apple-darwin.tar.gz
./lang/rust/distinfo rust-1.53.0-x86_64-unknown-freebsd.tar.gz
./lang/rust/distinfo rust-1.53.0-x86_64-unknown-illumos.tar.gz
./lang/rust/distinfo rust-1.53.0-x86_64-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-std-1.53.0-aarch64-apple-darwin.tar.gz
./lang/rust/distinfo rust-std-1.53.0-aarch64-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-std-1.53.0-aarch64-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-aarch64_be-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-arm-unknown-linux-gnueabihf.tar.gz
./lang/rust/distinfo rust-std-1.53.0-armv7-unknown-linux-gnueabihf.tar.gz
./lang/rust/distinfo rust-std-1.53.0-i686-unknown-linux-gnu.tar.gz
./lang/rust/distinfo rust-std-1.53.0-powerpc-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-powerpc-unknown-netbsd90.tar.gz
./lang/rust/distinfo rust-std-1.53.0-sparc64-unknown-netbsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-x86_64-apple-darwin.tar.gz
./lang/rust/distinfo rust-std-1.53.0-x86_64-unknown-freebsd.tar.gz
./lang/rust/distinfo rust-std-1.53.0-x86_64-unknown-linux-gnu.tar.gz
./lang/smlnj11072/distinfo smlnj-110.72/boot.ppc-unix.tgz
./lang/smlnj11072/distinfo smlnj-110.72/boot.sparc-unix.tgz
./lang/ghc84/distinfo ghc-8.0.2-boot-x86_64-unknown-solaris2.tar.xz
./lang/ghc84/distinfo ghc-8.4.4-boot-i386-unknown-freebsd.tar.xz
./lang/ghc84/distinfo ghc-8.4.4-boot-x86_64-apple-darwin.tar.xz
./lang/ghc84/distinfo ghc-8.4.4-boot-x86_64-unknown-freebsd.tar.xz
./lang/ghc7/distinfo ghc-7.10.3-boot-i386-unknown-freebsd.tar.xz
./lang/ghc7/distinfo ghc-7.6.3-boot-i386-unknown-solaris2.tar.xz
./lang/ghc7/distinfo ghc-7.6.3-boot-powerpc-apple-darwin.tar.xz
./lang/ghc7/distinfo ghc-7.6.3-boot-x86_64-unknown-solaris2.tar.xz
./lang/ghc90/distinfo ghc-8.10.4-boot-x86_64-unknown-solaris2.tar.xz
./lang/ghc90/distinfo ghc-9.0.1-boot-aarch64-unknown-netbsd.tar.xz
./lang/ghc90/distinfo ghc-9.0.1-boot-i386-unknown-freebsd.tar.xz
./lang/ghc90/distinfo ghc-9.0.1-boot-x86_64-apple-darwin.tar.xz
./lang/ghc90/distinfo ghc-9.0.1-boot-x86_64-unknown-freebsd.tar.xz
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk-1.7.76-freebsd-10-amd64-20150301.tar.xz
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk-1.7.76-netbsd-7-sparc64-20150301.tar.xz
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk-1.8.181-netbsd-8-aarch64-20180917.tar.xz
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk7u60-bin-dragonfly-3.6-amd64-20140719.tar.bz2
./lang/openjdk8/distinfo openjdk7/bootstrap-jdk7u60-bin-dragonfly-3.8-amd64-20140719.tar.bz2
./lang/go-bin/distinfo go1.14.2.darwin-amd64.tar.gz
./lang/go-bin/distinfo go1.14.2.linux-386.tar.gz
./lang/go-bin/distinfo go1.14.2.linux-amd64.tar.gz
./lang/go-bin/distinfo go1.14.2.linux-arm64.tar.gz
./lang/go-bin/distinfo go1.14.2.linux-armv6l.tar.gz
./lang/go-bin/distinfo go1.14.2.netbsd-arm64.tar.gz
./lang/go-bin/distinfo go1.16beta1.darwin-arm64.tar.gz
./lang/gcc6-aux/distinfo ada-bootstrap.i386.freebsd.100B.tar.bz2
./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.dragonfly.41.tar.bz2
./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.freebsd.100B.tar.bz2
./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.freebsd.84.tar.bz2
./lang/gcc6-aux/distinfo ada-bootstrap.x86_64.solaris.511.tar.bz2
./lang/ghc810/distinfo ghc-8.8.4-boot-x86_64-unknown-solaris2.tar.xz
./lang/sun-jre7/distinfo UnlimitedJCEPolicyJDK7.zip
./lang/sun-jre7/distinfo jre-7u80-linux-x64.tar.gz
./lang/sun-jre7/distinfo jre-7u80-solaris-i586.tar.gz
./lang/sun-jre7/distinfo jre-7u80-solaris-x64.tar.gz
./lang/ghc88/distinfo ghc-8.4.4-boot-i386-unknown-freebsd.tar.xz
./lang/ghc88/distinfo ghc-8.4.4-boot-x86_64-apple-darwin.tar.xz
./lang/ghc88/distinfo ghc-8.4.4-boot-x86_64-unknown-freebsd.tar.xz
./lang/ghc88/distinfo ghc-8.4.4-boot-x86_64-unknown-solaris2.tar.xz
./lang/gcc-aux/distinfo ada-bootstrap.i386.dragonfly.36A.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.i386.freebsd.100B.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.i386.freebsd.84.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.x86_64.dragonfly.36A.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.x86_64.freebsd.100B.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.x86_64.freebsd.84.tar.bz2
./lang/gcc-aux/distinfo ada-bootstrap.x86_64.solaris.511.tar.bz2
./lang/gcc6/distinfo ecj-4.5.jar
./lang/openjdk11/distinfo bootstrap-jdk-1.11.0.7.10-netbsd-9-aarch64-20200509.tar.xz
./lang/sun-jdk7/distinfo jdk-7u80-linux-x64.tar.gz
./lang/sun-jdk7/distinfo jdk-7u80-solaris-i586.tar.gz
./lang/sun-jdk7/distinfo jdk-7u80-solaris-x64.tar.gz
2021-10-26 10:51:29 +00:00
nia 1361343c24 lang: Remove SHA1 hashes for distfiles 2021-10-07 14:20:45 +00:00
nia 135fb685bc elixir: update to 1.12.3
This release contains only 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
2021-09-19 07:02:00 +00:00
nia faab90b6c7 elixir: update to 1.12.2
1. Bug fixes

Elixir

    [Kernel] Ensure deprecated macros emit warnings

Mix

    [mix deps] Ensure unconstrained rebar deps generate valid mix specifications

2. 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
2021-08-10 11:18:57 +00:00
nia b6bb3f4f8f elixir: update to 1.12.1
Release notes for 1.12.x:
https://elixir-lang.org/blog/2021/05/19/elixir-v1-12-0-released/
2021-06-12 09:25:24 +00:00
nia 63e90b0dd9 elixir: Update to 1.11.4
This release introduces fixes for better support of Erlang/OTP 24+.

1. Enhancements

Elixir

    [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
2021-04-08 10:34:36 +00:00
adam b2ddd385a7 elixir: updated to 1.11.3
v1.11.3

1. Enhancements

Elixir

[Macro] Add Macro.unique_var/2 and Macro.generate_unique_arguments/2

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
2021-01-15 12:10:33 +00:00
nia bcfb56aa49 elixir: Update to 1.11.2
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

Mix

    [mix] Fix regression where aliases could not call themselves recursively
    [mix compile] Do not discard tracers that are set programmatically
2020-11-19 11:49:17 +00:00
nia 4d3622fa25 elixir: Update to 1.11.1
"Over the last releases, the Elixir team has been focusing on the compiler, both in terms of catching more mistakes at compilation time and making it faster. Elixir v1.11 has made excellent progress on both fronts. This release also includes many other goodies, such as tighter Erlang integration, support for more guard expressions, built-in datetime formatting, and other calendar enhancements."
2020-10-19 17:48:41 +00:00
nia e37026f562 elixir: gmake is a runtime dependency 2020-09-11 15:14:12 +00:00
nia e0836037ec elixir: Use 'gmake' when compiling native libraries on NetBSD
Bump PKGREVISION
2020-09-11 15:05:06 +00:00
nia d6714b4e93 elixir: Update to 1.10.4
## v1.10.4 (2020-07-04)

### 1. 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
2020-07-07 11:34:29 +00:00
nia 083c035edf elixir: Update to 1.10.3
## v1.10.3 (2020-04-25)

### 1. 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
2020-05-17 14:44:21 +00:00
joerg d4986232af Increase resource limits due to Erlang's default allocations 2020-03-26 02:31:23 +00:00
adam 78d7df5d19 elixir: updated to 1.10.2
v1.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
2020-02-26 19:21:50 +00:00
adam 0c8e87d861 elixir: updated to 1.10.0
v1.10.0
Support for Erlang/OTP 21+
Releases improvements

Elixir v1.9 introduced releases as a mechanism to package self-contained applications. Elixir v1.10 further improves releases with bug fixes and new enhancements based on feedback we got from the community. The highlights are:

* Allow the dual boot system of releases to be disabled on environments that are boot-time sensitive, such as embedded devices
* Track and raise if compile-time configuration is set or changes at runtime (more in the next section)
* Support for easily adding extra files to releases via overlays
* Allow RELEASE_DISTRIBUTION to be set to none in order to fully disable it
* Add a built-in :tar step that automatically packages releases
2020-02-13 18:27:23 +00:00
nia 77c5203342 elixir: Update to 1.9.1
## v1.9.1 (2019-07-18)

### 1. Enhancements

#### Mix

  * [mix format] Print relative paths in `--check-formatted` output
  * [mix release] Support included applications

### 2. Bug fixes

#### Elixir

  * [Code] Fix formatter wrongly removing nested parens in nested calls

#### Logger

  * [Logger] Do not crash translator on poorly formatted supervisor names

#### Mix

  * [mix compile] Raise readable error for mismatched sources during compilation
  * [mix release] Preserve UTF8 encoding in release config files

## v1.9.0 (2019-06-24)

### 1. Enhancements

#### EEx

  * [EEx] Allow more complex mixed expressions when tokenizing

#### Elixir

  * [Access] Allow `Access.at/1` to handle negative index
  * [CLI] Add support for `--boot`, `--boot-var`, `--erl-config`, `--pipe-to`, `--rpc-eval`, and `--vm-args` options
  * [Code] Add `static_atom_encoder` option to `Code.string_to_quoted/2`
  * [Code] Support `:force_do_end_blocks` on `Code.format_string!/2` and `Code.format_file!/2`
  * [Code] Do not raise on deadlocks on `Code.ensure_compiled/1`
  * [Config] Add `Config`, `Config.Reader`, and `Config.Provider` modules for working with configuration
  * [File] Add `File.rename!/2`
  * [Inspect] Add `:inspect_fun` and `:custom_options` to `Inspect.Opts`
  * [Kernel] Add `~U` sigil for UTC date times
  * [Kernel] Optimize `&super/arity` and `&super(&1)`
  * [Kernel] Optimize generated code for `with` with a catch-all clause
  * [Kernel] Validate `__struct__` key in map returned by `__struct__/0,1`
  * [Module] Add `Module.get_attribute/3`
  * [Protocol] Improve `Protocol.UndefinedError` messages to also include the type that was attempted to dispatch on
  * [Protocol] Optimize performance of dynamic dispatching for non-consolidated protocols
  * [Record] Include field names in generated type for records
  * [Regex] Automatically recompile regexes
  * [Registry] Add `Registry.select/2`
  * [System] Add `System.restart/0`, `System.pid/0` and `System.no_halt/1`
  * [System] Add `System.get_env/2`, `System.fetch_env/1`, and `System.fetch_env!/1`
  * [System] Support `SOURCE_DATE_EPOCH` for reproducible builds

#### ExUnit

  * [ExUnit] Allow multiple `:exclude` on configuration/CLI
  * [ExUnit.DocTest] No longer wrap doctest errors in custom exceptions. They ended-up hiding more information than showing
  * [ExUnit.DocTest] Display the actual doctest code when doctest fails

#### IEx

  * [IEx.CLI] Copy ticktime from remote node on IEx `--remsh`
  * [IEx.CLI] Automatically add a host on node given to `--remsh`

#### Logger

  * [Logger] Use a decentralized mode computation for Logger which allows overloads to be detected more quickly
  * [Logger] Use `persistent_term` to store configuration whenever available for performance

#### Mix

  * [Mix] Follow XDG base dir specification in Mix for temporary and configuration files
  * [Mix.Generator] Add `copy_file/3`, `copy_template/4`, and `overwite?/2`
  * [Mix.Project] Add `preferred_cli_target` that works like `preferred_cli_env`
  * [mix archive.uninstall] Allow `mix archive.uninstall APP` to uninstall any installed version of APP
  * [mix new] No longer generate a `config/` directory for mix new
  * [mix release] Add support for releases
  * [mix release.init] Add templates for release configuration
  * [mix test] Allow running tests for a given umbrella app from the umbrella root with `mix test apps/APP/test`. Test failures also include the `apps/APP` prefix in the test location

### 2. Bug fixes

#### EEx

  * [EEx] Consistently trim newlines when you have a single EEx expression per line on multiple lines

#### Elixir

  * [Code] Quote `::` in `Code.format_string!/1` to avoid ambiguity
  * [Code] Do not crash formatter on false positive sigils
  * [Enum] Ensure the first equal entry is returned by `Enum.min/2` and `Enum.max/2`
  * [Kernel] Improve error message when string interpolation is used in a guard
  * [Kernel] Properly merge and handle docs for callbacks with multiple clauses
  * [Kernel] Guarantee reproducible builds on modules with dozens of specs
  * [Kernel] Resolve `__MODULE__` accordingly in nested `defmodule` to avoid double nesting
  * [Kernel] Type variables starting with an underscore (`_foo`) should not raise compile error
  * [Kernel] Keep order of elements when macro `in/2` is expanded with a literal list on the right-hand side
  * [Kernel] Print proper location on undefined function error from dynamically generated functions
  * [Kernel] **Potentially breaking** Do not leak aliases when nesting module definitions that are fully namespaced modules. If you defined `defmodule Elixir.Foo.Bar` inside `defmodule Foo`, previous Elixir versions would automatically define an alias, but fully namespaced modules such as `Elixir.Foo.Bar` should never define or require an alias. If you were accidentally relying on this broken behaviour, your code may no longer work
  * [System] Make sure `:init.get_status/0` is set to `{:started, :started}` once the system starts
  * [Path] Do not expand `~` in `Path.expand/2` when not followed by a path separator
  * [Protocol] Ensure `debug_info` is kept in protocols
  * [Regex] Ensure inspect returns valid `~r//` expressions when they are manually compiled with backslashes
  * [Registry] Fix ETS leak in `Registry.register/2` for already registered calls in unique registries while the process is still alive

#### ExUnit

  * [ExUnit] Raise error if attempting to run single line tests on multiple files
  * [ExUnit] Return proper error on duplicate child IDs on `start_supervised`

#### IEx

  * [IEx] Automatically shut down IEx if we receive EOF

#### Logger

  * [Logger] Don't discard Logger messages from other nodes as to leave a trail on both systems

#### Mix

  * [mix compile] Ensure Erlang-based Mix compilers (erlang, leex, yecc) set valid position on diagnostics
  * [mix compile] Ensure compilation halts in an umbrella project if one of the siblings fail to compile
  * [mix deps] Raise an error if the umbrella app's dir name and `mix.exs` app name don't match
  * [mix deps.compile] Fix subcommand splitting bug in rebar3
  * [mix test] Do not consider modules that are no longer cover compiled when computing coverage report, which could lead to flawed reports

### 3. Soft-deprecations (no warnings emitted)

#### Mix

  * [Mix.Config] `Mix.Config` has been deprecated in favor of the `Config` module that now ships as part of Elixir itself. Reading configuration files should now be done by the `Config.Reader` module

### 4. Hard-deprecations

#### Elixir

  * [CLI] Deprecate `--detached` option, use `--erl "-detached"` instead
  * [Map] Deprecate Enumerable keys in `Map.drop/2`, `Map.split/2`, and `Map.take/2`
  * [String] The `:insert_replaced` option in `String.replace/4` has been deprecated. Instead you may pass a function as a replacement or use `:binary.replace/4` if you need to support earlier Elixir versions

#### Mix

  * [Mix.Project] Deprecate `Mix.Project.load_paths/1` in favor of `Mix.Project.compile_path/1`
2019-08-01 09:52:52 +00:00
nia 9eeb5f298b elixir: Avoid errors from check-interpreter.mk after addition of interpreter
workaround.
2019-06-17 16:58:42 +00:00
yyamano 762d89fd76 Make bin/mix works.
shebang doesn't work if an interpreter is a shell script.
See http://mail-index.netbsd.org/tech-pkg/2019/05/21/msg021312.html
2019-05-23 23:42:27 +00:00
nia 9759df6e6f lang/elixir: update to 1.7.4.
1. Enhancements

Elixir

    [Kernel] Expand left..right at compile time in more cases, which leads to improved performance under different scenarios, especially on x in left..right expressions

Mix

    [mix deps.loadpaths] Add --no-load-deps flag. This is useful for Rebar 3 compatibility

2. Bug fixes

Elixir

    [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

    [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
2018-11-09 17:17:28 +00:00
jperkin f8611f86ed elixir: Fix PKGMANDIR. Add TEST_TARGET. 2018-10-11 12:10:08 +00:00
fhajny 3d2ee04e14 lang/elixir: Update to 1.7.3.
v1.7.3
======

1. Bug fixes

ExUnit
- [ExUnit.Assertions] Do not attempt to expand `try/1` as it is a
  special form

Mix
- [mix compile.app] Do not include applications with `runtime: false`
  as a runtime dependency for applications coming from Hex


v1.7.2
======

1. Bug fixes

Elixir
- [DateTime] Take negative years into account in
  `DateTime.from_iso8601/1`
- [Kernel] Do not emit warnings for repeated docs over different
  clauses due to false positives

Mix
- [mix compile] Properly mark top-level dependencies as optional and
  as runtime. This fixes a bug where Mix attempted to start optional
  dependencies of a package when those optional dependencies were not
  available
- [mix compile] Avoid deadlock when a config has a timestamp later
  than current time
- [mix help] Show task and alias help when both are available
- [mix test] Do not fail suite if there are no test files


v1.7.1
======

1. Bug fixes

Elixir
- [Calendar] Work-around a Dialyzer bug that causes it to loop for a
  long time, potentially indefinitely

v1.7.0
======

1. Enhancements

Elixir
- [Calendar.ISO] Support negative dates in `Calendar.ISO`
- [Calendar] Add `Calendar.months_in_year/1` callback
- [Code] Add `Code.compile_file/2` that compiles files without leaving
  footprints on the system
- [Code] Add `Code.purge_compiler_modules/0` that purges any compiler
  module left behind. This is useful for live systems dynamically
  compiling code
- [Code] Add `Code.fetch_docs/1` that returns docs in the [EEP
  48](http://erlang.org/eep/eeps/eep-0048.html) format
- [Date] Add `Date.months_in_year/1` function
- [DynamicSupervisor] Use the name of the `DynamicSupervisor` as the
  ID whenever possible
- [Exception] Provide "did you mean" suggestions on KeyError
- [Exception] Provide more information on ArithmeticError on
  Erlang/OTP 21+
- [Function] Add `Function` module with `capture/3`, `info/1` and
  `info/2` functions
- [GenServer] Support the new `handle_continue/2` callback on
  Erlang/OTP 21+
- [IO.ANSI] Add cursor movement to `IO.ANSI`
- [Kernel] Support adding arbitrary documentation metadata by passing
  a keyword list to `@doc`, `@moduledoc` and `@typedoc`
- [Kernel] Introduce `__STACKTRACE__` to retrieve the current
  stacktrace inside `catch`/`rescue` (this will be a requirement for
  Erlang/OTP 21+)
- [Kernel] Raise on unsafe variables in order to allow us to better
  track unused variables
- [Kernel] Warn when using `length` to check if a list is not empty on
  guards
- [Kernel] Add hints on mismatched `do`/`end` and others pairs
- [Kernel] Warn when comparing structs using the `>`, `<`, `>=` and
  `<=` operators
- [Kernel] Warn on unsupported nested comparisons such as `x < y < z`
- [Kernel] Warn if redefining documentation across clauses of the same
  definition
- [Kernel] Warn on unnecessary quotes around atoms, keywords and calls
- [Macro] Add `Macro.special_form?/2` and `Macro.operator?/2` that
  returns `true` if the given name/arity is a special form or operator
  respectively
- [Macro.Env] Add `Macro.Env.vars/1` and `Macro.Env.has_var?/2` that
  gives access to environment data without accessing private fields
- [Regex] Include endianness in the regex version. This allows regexes
  to be recompiled when an archive is installed in a system with a
  different endianness
- [Registry] Add `Registry.count/1` and `Registry.count_match/4`
- [String] Update to Unicode 11
- [StringIO] Add `StringIO.open/3`
- [System] Use ISO 8601 in `System.build_info/0`

ExUnit
- [ExUnit.Assertion] Print the arguments in error reports when
  asserting on a function call. For example, if `assert is_list(arg)`
  fails, the argument will be shown in the report
- [ExUnit.Diff] Improve diffing of lists when one list is a subset of
  the other
- [ExUnit.DocTest] Show colored diffs on failed doctests
- [ExUnit.Formatter] Excluded tests, via the `--exclude` and `--only`
  flags, are now shown as "Excluded" in reports. Tests skipped via
  `@tag :skip` are now exclusively shown as "Skipped" and in yellow

IEx
- [IEx.Helpers] Add `use_if_available/2`
- [IEx.Helpers] Allow `force: true` option in `recompile/1`
- [IEx.Helpers] Add `:allocators` pane to `runtime_info/1`
- [IEx.Helpers] Show documentation metadata in `h/1` helpers

Logger
- [Logger] Ensure nil metadata is always pruned
- [Logger] Only evaluate Logger macro arguments when the message will
  be logged
- [Logger] Add `:compile_time_purge_matching` to purge logger calls
  that match certain compile time metadata, such as module names and
  application names
- [Logger] Log to `:stderr` if a backend fails and there are no other
  backends
- [Logger] Allow translators to return custom metadata
- [Logger] Return `:crash_reason`, `:initial_call` and
  `:registered_name` as metadata in crash reports coming from
  Erlang/OTP

Mix
- [mix archive.install] Add support for the Hex organization via
  `--organization`
- [mix archive.uninstall] Support `--force` flag
- [mix compile] Improve support for external build tools such as
  `rebar`
- [mix deps] Include `override: true` in rebar dependencies to make
  the behaviour closer to how rebar3 works (although diverged deps are
  still marked as diverged)
- [mix escript.install] Add support for the Hex organization via
  `--organization`
- [mix escript.uninstall] Support `--force` flag
- [mix help] Also list aliases
- [mix local] Use ipv6 with auto fallback to ipv4 when downloading
  data
- [mix profile] Allow all profiling tasks to run programatically
- [mix test] Add `--failed` option that only runs previously failed
  tests
- [mix test] Print coverage summary by default when the `--cover` flag
  is given
- [Mix.Project] Add `Mix.Project.clear_deps_cache/0`
- [Mix.Project] Add `Mix.Project.config_mtime/0` that caches the
  config mtime values to avoid filesystem access

2. Bug fixes

Elixir
- [IO.ANSI.Docs] Fix table column alignment when converting docs to
  ANSI escapes
- [Code] Ensure `string_to_quoted` returns error tuples instead of
  raising in certain constructs
- [Code.Formatter] Consistently format keyword lists in function calls
  with and without parens
- [Code.Formatter] Do not break after `->` when there are only
  comments and one-line clauses
- [File] Allow the `:trim_bom` option to be used with `:encoding`
- [Kernel] Raise on unsafe variables as some of the code emitted with
  unsafe variables would not correctly propagate variables or would
  disable tail call optimization semantics
- [Kernel] Do not crash on dynamic sizes in binary generators with
  collectable into in comprehensions
- [Kernel] Do not crash on literals with non-unary size in binary
  generators with collectable into in comprehensions
- [Task] Improve error reports and exit reasons for failed tasks on
  Erlang/OTP 20+

ExUnit
- [ExUnit.Case] Raise proper error if `@tag` and `@moduletag` are used
  before `use ExUnit.Case`
- [ExUnit.Case] Raise proper error if `@describetag` is used outside
  of `describe/2` blocks
- [ExUnit.DocTest] Emit proper assertion error on doctests with
  invalid UTF-8

Mix
- [mix archive.install] Fetch optional dependencies when installing an
  archive from Git/Hex
- [mix compile] Properly track config files in umbrella projects and
  recompile when any relevant umbrella configuration changes
- [mix deps] Ensure the same dependency from different SCMs are tagged
  as diverged when those SCMs are remote and non-remote
- [mix deps] Ensure we re-run dependency resolution when overriding a
  skipped dep in umbrella
- [mix deps.compile] Perform clean builds for dependencies on outdated
  locks to avoid old modules from affecting future compilation
- [mix escript.install] Fetch optional dependencies when installing an
  escript from Git/Hex

3. Soft-deprecations (no warnings emitted)

Elixir
- [Code] Deprecate `Code.load_file/2` in favor of
  `Code.compile_file/2`
- [Code] Deprecate `Code.loaded_files/0` in favor of
  `Code.required_files/0`
- [Code] Deprecate `Code.unload_files/1` in favor of
  `Code.unrequire_files/1`

Logger
- [Logger] `compile_time_purge_level` is deprecated in favor of
  `compile_time_purge_matching`

4. Hard-deprecations

Elixir
- [Code] `Code.get_docs/2` is deprecated in favor of
  `Code.fetch_docs/1`
- [Enum] `Enum.chunk/2/3/4` is deprecated in favor of
  `Enum.chunk_every/2/3/4` - notice `chunk_every` does not discard
  incomplete chunks by default
- [GenServer] Warn if `super` is used in any of the GenServer
  callbacks
- [Kernel] `not left in right` is ambiguous and is deprecated in favor
  of `left not in right`
- [Kernel] Warn on confusing operator sequences, such as `1+++1`
  meaning `1 ++ +1` or `........` meaning `... .. ...`
- [OptionParser] Deprecate dynamic option parser mode that depended on
  atoms to be previously loaded and therefore behaved inconsistently
- [Stream] `Stream.chunk/2/3/4` is deprecated in favor of
  `Stream.chunk_every/2/3/4` - notice `chunk_every` does not discard
  incomplete chunks by default
2018-09-04 13:49:25 +00:00
fhajny 3c0623fb6a lang/elixir: Update to 1.6.5.
- [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
- [Task] Support :infinity timeout on Task.yield_many/2
- [Task.Supervisor] Do not crash spawning supervised tasks when the
  parent process is dead
- [URI] Fix parsing of URIs with trailing ?
2018-05-14 15:57:13 +00:00
fhajny 2048b50853 lang/elixir: Update to 1.6.4.
- [Code.Formatter] Do not double escape quoted keyword list identifiers
- [Kernel] Properly support into: binary in Erlang/OTP 20.3
2018-03-23 11:54:58 +00:00
fhajny af720a8f44 lang/elixir: Update to 1.6.3.
Elixir
- [Code.Formatter] Support comments in the middle of pipelines,
  when and | expressions
- [Code.Formatter] Consider commas when breaking groups
- [Code.Formatter] Ensure proper precedence between & and operators
- [Code.Formatter] Consider .formatter.exs when formatting stdin

Logger
- [Logger.Translator] Ensure logger doesn't crash when reporting
  named DynamicSupervisor
2018-03-13 09:18:19 +00:00
fhajny 6af9d8b363 lang/elixit: Update to 1.6.2.
1. Enhancements

Mix
- [mix compile.erlang] Teach Mix erlang compiler alternative spelling
  for -behavior declaration
- [mix format] Support the :subdirectories configuration that points
  to other directories with their own .formatter.exs file. This is
  useful in umbrella applications. mix new --umbrella has also been
  changed to use this new configuration by default
- [mix format] Include the current environment for missing dependency
  errors

2. Bug fixes

Elixir
- [Code.Formatter] Ensure -> does not exceed line length
- [DynamicSupervisor] Properly tag error reports generated by dynamic
  supervisors so they can be properly translated by Logger
- [DynamicSupervisor] Consider extra arguments during child restart
- [Kernel] Ensure arguments given to a guard defined with defguard are
  evaluated in the correct order
- [Module] Do not remove docs for previous function declaration when
  @impl true is used
- [Supervisor] Ensure use Supervisor properly adds the @behaviour
  Supervisor annotation

Mix
- [Mix.Shell] Bring back Mix.Shell.cmd/2 - this arity was defined via
  a default argument that was accidentally removed
2018-02-28 15:14:02 +00:00
fhajny d943c140a0 Update lang/elixir to 1.6.1.
1. Enhancements

Elixir
- [DynamicSupervisor] Implement child_spec/1 for DynamicSupervisor
- [Kernel] Raise better error messages on invalid map syntax

2. Bug fixes

Elixir
- [Code.Formatter] Only rearrange not in operator if explicitly
  opted-in
- [Code.Formatter] Ensure do blocks do not exceed line length on calls
  with a single argument
- [Collectable] Support bitstrings in Collectable and
  for-comprehensions (regression in v1.6.0)
- [GenServer] Do not override user own @opts attribute
- [Enum] Reintroduce zipping of any enumerable of enumerables in
  Enum.zip/1 (regression in v1.6.0)
- [Macro] Reorder kw blocks in Macro.to_string/1 to avoid warnings
- [Protocol] Fix protocol consolidation when some chunks may be
  missing
- [Stream] Reintroduce zipping of any enumerable of enumerables in
  Stream.zip/1 (regression in v1.6.0)
- [Supervisor] Do not override user own @opts attribute
- [Supervisor] Add @spec to second clause of start_link/2

ExUnit
- [ExUnit.Case] Reintroduce :case in ExUnit setup/setup_all/test
  context
2018-01-30 16:27:10 +00:00
fhajny b96a217e4d Update lang/elixir to 1.6.0.
1. Enhancements

EEx
- [EEx] Allow markers `/` and `|` to be used in a custom EEx engine

Elixir
- [Calendar] Add truncate to `Time`, `DateTime` and `NaiveDateTime` to
  facilitate microsecond precision pruning
- [Code] Add `format_string!/2` and `format_file!/2` for automatic
  code formatting
- [Code] Support column annotations in quoted expressions with
  `columns: true` in `Code.string_to_quoted/2`
- [DynamicSupervisor] Add `DynamicSupervisor` designed to manage
  children that are added and removed dynamically
- [Exception] Make `Exception.blame/3` extensible by adding an
  optional `blame/2` callback to exceptions
- [Exception] Improve the printing of guards on blamed exceptions
- [Enumerable] Add `Enumerable.slice/1` and optimize many `Enum`
  operations with the new protocol. This allows data-structures with
  index-based random access to provide a non-linear implementation
- [Inspect] Show UTF-8 BOM on inspected strings
- [Inspect.Algebra] Add `:strict` and `:flex` breaks - this gives more
  control over the document fitting
- [Inspect.Algebra] Allow a group to inherit the parent group break
- [Inspect.Algebra] Add `force_unfit/1` and `next_break_fits/2` which
  give more control over document fitting
- [Inspect.Algebra] Add `collapse_lines/1` for collapsing multiple
  lines to a maximum value
- [Inspect.Algebra] Allow `nest/2` to be `:reset` or be set to the
  current `:cursor` position
- [Kernel] Prefix variables with V when emitting Erlang code. This
  improves the integration with tools such as Erlang code formatters
  and the GUI debugger
- [Kernel] Warn on the use of `length(x) == 0` in guards
- [Kernel] Warn if `catch` comes before `rescue` in try
- [Kernel] Warn if heredoc is outdented compared to its closing quotes
- [Kernel] Add `defguard/1` and `defguardp/1` to make it easier to
  build guard-safe macros
- [Kernel.ParallelCompiler] Add `compile/2`, `compile_to_path/3` and
  `require/2` which provide detailed information about warnings and
  errors
- [Kernel.SpecialForms] Support the `uniq: true` flag in `for`
  comprehensions
- [Module] Introduce `@deprecated` and `@since` attributes
- [Module] Emit conflicting behaviour warnings if the same behaviour
  is given more than once
- [List] Rearrange equals and inserts for shorter diff scripts in
  `List.myers_difference/2`
- [Record] Allow `:macros` and `:includes` to be given to
  `Record.extract/2`
- [Stream] Add `Stream.intersperse/2`
- [String] Update to Unicode 10
- [String] Allow passing empty string `match` to `String.replace/4`
- [String] Support context and language sensitive operations in
  `String.upcase/2` and `String.downcase/2`. Currently only the
  `:greek` context is supported
- [String] Support `:ascii` conversion in `String.upcase/2` and
  `String.downcase/2`
- [Time] Add `Time.add/3`

ExUnit
- [ExUnit.Assertions] Perform inclusive checks in `assert_in_delta`
- [ExUnit.Callbacks] Add `ExUnit.Callbacks.start_supervised!/2`
- [ExUnit.Case] Generate a random seed per test based on the test
  suite seed

IEx
- [IEx.Autocomplete] Provide contextual autocompletion: `t Enum.` will
  autocomplete types, `b Enum` will autocomplete callbacks
- [IEx.CLI] Provide hints for developers when a bad host name is given
  to `--remsh`
- [IEx.Helpers] Automatically include specs when showing documentation
  for functions/macros
- [IEx.Helpers] Improve formatting of behaviours and typespecs by
  using the formatter
- [IEx.Helpers] Allow pattern matching and guard expressions when on
  `IEx.break!`

Logger
- [Logger] Add `:discard_threshold` to Logger to help with message
  queue overflow

Mix
- [mix app.start] Add `--preload-modules` to `mix app.start`
- [mix archive.build] Allow `mix archive.build` to bundle dot files
  via an option
- [mix compile] Define a behavior for Mix compiler tasks and return
  diagnostics from compiler tasks
- [mix compile] Track struct dependencies between files and recompile
  them only if the struct changes
- [mix deps] Support `:system_env` option when specifying dependencies
- [mix format] Add a `mix format` task that formats the given files
  (or the files specified in a `.formatter.exs` file)
- [mix profile.eprof] Add a new task for time-based profiling with
  eprof
- [mix test] Run all functions in a describe block by giving the
  `file:line` the describe block starts
- [mix test] Report the top N slowest tests with the `--slowest N`
  flag
- [mix test] Report the number of doctests and tests separately
- [mix xref] Support `--include-siblings` in reports for umbrella
  support
- [mix xref] Add `mix xref graph --format stats`
- [mix xref] Add `--only-nodes` and `--label` filters to mix xref
  graph
- [mix xref] Add `mix xref deprecated` that shows the callsite of
  deprecated functions

2. Bug fixes

Elixir
- [CLI] Support path with spaces as argument to elixir.bat
- [Inspect] Properly handle minus signal for non-decimal negative
  integers
- [Integer] Do not raise on non-integer values in `is_odd`/`is_even`
- [Kernel] Solve a precedence issue between `&` and `|`, such as
  `[&Foo.bar/1 | &Baz.bat/2]`
- [Kernel] Do not load dynamic Elixir modules as `:in_memory` as this
  value is not officially supported by the code server. Instead, use
  an empty list, which is the same value used by Erlang.
- [Kernel] Validate variable struct name is atom when used in pattern
  matching
- [Macro] Fix `Macro.to_string/2` for tuple calls, such as `alias
  Foo.{Bar, Baz}`
- [MapSet] Return valid MapSet when unioning a legacy MapSet
- [Regex] Return a leading empty space when splitting on empty
  pattern. This makes the `split` operation consistent with the other
  operations in the `Regex` module
- [Stream] Ensure `Stream.chunk_while/4` does not emit more elements
  than necessary when halted
- [String] Return a leading empty space when splitting on empty
  string. This makes the `split` operation consistent with the other
  operations in the `String` module
- [URI] Preserve empty fragments in `URI.parse/1`

Mix
- [mix app.start] Improve the quality of reports if app fails to boot
- [mix cmd] Allow `mix cmd` to be invoked multiple times without
  marking it as executed
- [mix deps] Ensure optional dependencies in umbrella applications are
  loaded
- [mix deps.update] Ensure transitive new non-Hex dependencies are
  also fetched when a repo is updated
- [mix xref] Take compile dependencies with higher priority than
  runtime ones when building a graph
- [mix xref] Handle external files for xref callers and warnings

3. Soft deprecations (no warnings emitted)

Elixir
- [Inspect.Algebra] `surround/3` and `surround_many/6` are deprecated
  in favor of `container_doc/6`
- [Kernel.ParallelCompiler] `files/2` and `files_to_path/3` are
  deprecated in favor of `compile/2` and `compile_to_path/3`
- [Kernel.ParallelRequire] `files/2` is deprecated in favor of
  `Kernel.ParallelCompiler.require/2`
- [GenServer] Warn if `init/1` is not defined in `GenServer`. This
  brings GenServer closer to the implementation in OTP and aligns all
  behaviours to require the `init/1` callback

ExUnit
- [ExUnit.Formatter] `:case_started` and `:case_finished` events are
  deprecated in favor of `:module_started` and `:module_finished`

4. Deprecations

Elixir
- [Enum] `Enum.partition/2` is deprecated in favor of
  `Enum.split_with/2`
- [Keyword] `Keyword.replace/3` is deprecated in favor of
  `Keyword.fetch/2` and `Keyword.put/3`
- [Map] `Map.replace/3` is deprecated in favor of `Map.fetch/2` and
  `Map.put/3`
- [Macro] `Macro.unescape_tokens/1` and `Macro.unescape_tokens/2` are
  deprecated in favor of `Enum.map/2`
- [Range] Deprecate `Range.range?/1` in favor of pattern matching on
  `_ .. _`
2018-01-22 14:59:53 +00:00
fhajny da8550acb4 Import elixir-1.5.2 as lang/elixir.
Elixir is a functional, meta-programming aware language built on top of the
Erlang VM. It is a dynamic language that focuses on tooling to leverage
Erlang's abilities to build concurrent, distributed and fault-tolerant
applications with hot code upgrades.
2018-01-03 13:06:17 +00:00