Elixir v1.15.0-rc.2 released

Note this release includes offline Elixir installers for Windows per supported Erlang/OTP version.

1. Enhancements

Elixir

  • [Module] Mark functions as generated in “Docs” chunk

ExUnit

  • [ExUnit.Doctest] Include doctest_data in doctest tags

2. Bug fixes

Elixir

  • [Kernel] Fix import m, only: :sigils for multi-letter sigils (regression)
  • [Macro] Fix Macro.to_string/1 for multi-letter sigils (regression)

ExUnit

  • [ExUnit] Mark test cases as invalid when an exit occurs during setup_all
  • [ExUnit] Fix ExUnit diffs for multi-letter sigils (regression)
  • [ExUnit.Doctest] Fix line information when a doctest with multiple assertions fails

Mix

  • [mix compile] Keep erts when pruning load paths (regression)
  • [mix xref] Raise early if mix xref is used at the umbrella root
27 Likes

Hi everyone, this should be our last stop before Elixir v1.15.0 final. Note that we are now generating offline Elixir installers for Windows per Erlang/OTP version and that is meant to be the way forward for installing Elixir on Windows machines (thank you @wojtekmach).

Please give it a try and report it if you haven’t tried any of the previous RCs. :slight_smile:

14 Likes

Not sure if it’s relevant, the RC tests throw on my RaspberryPi

  1. test code path prunning (Mix.Tasks.CompileTest)
    test/mix/tasks/compile_test.exs:332
    match (=) failed
    code: assert {:docs_v1, _, _, _, _, _, _} = Code.fetch_docs(:zlib)
    left: {:docs_v1, _, _, _, _, _, _}
    right: {:error, :chunk_not_found}
    stacktrace:
    test/mix/tasks/compile_test.exs:340: anonymous fn/0 in Mix.Tasks.CompileTest.“test code path prunning”/1
    (elixir 1.15.0-rc.2) lib/file.ex:1624: File.cd!/2
    test/test_helper.exs:146: MixTest.Case.in_fixture/3
    test/mix/tasks/compile_test.exs:335: (test)


Finished in 365.5 seconds (17.8s on load, 0.07s async, 347.5s sync)
6 doctests, 796 tests, 1 failure

Randomized with seed 436594
make: *** [Makefile:116: test_mix] Error 2

This seems to be a problem with your OTP installation, that the chunk is somehow missing. It should be there:

iex> ls "#{:code.root_dir()}/lib/erts-#{:erlang.system_info(:version)}/doc/chunks"
atomics.chunk             counters.chunk            erl_prim_loader.chunk     erlang.chunk
init.chunk                persistent_term.chunk     zlib.chunk

On Ubuntu they may need to install a separate package like erlang-doc or erlang-source.

I build this OTP with kerl and definitely skipped building documentation because it is just jailed environment of Debian on top of Raspberry. Thanks

This is great news for Windows users, thank you Wojtek and José!

2 Likes

I stay on a windows machine at home (mostly because other platforms support very poorly games), it is always a pain for me to start a real elixir project (a lot of projects run on older erlang/elixir combinations). Using the windows console is abysmal, when I was the university I used minGW and git bash(not sure on what it runs nowadays) and theoretically you could use some combinations like chocolate + asdf, but I always found them hard to use.

What I’m getting at is the fact that it would be smart to look at other ways to allow versioning on windows, as console is not its most powerful tool.

I would suggest you use Windows Terminal and run PowerShell core, WSL, git bash, MSYS2 etc in there. If you want to switch versions I suggest you use scoop as your package manager because you can install and switch versions at the command line. scoop install erlang@26.0.1 elixir@1.15.0-rc.2-otp-26. Switching versions is done with the scoop hold elixir@1.14.5-otp-25 IIRC. It lacks support for .tool-versions but that could be scripted.

Or use WSL and keep the unix workflow?

1 Like

I use WSL2 solely (running Ubuntu 20.04) and have had zero major issues with it. I absolutely would recommend it over Windows-native tooling.