Elixir
Elixir Core Team
Elixir v1.19.0-rc.1 released
1. Enhancements
Elixir
- [Kernel] Raise when U+2028 and U+2029 characters are present in comments and strings to avoid line spoofing attacks
- [Kernel] Include the line for the previous clause in errors/warnings related to conflicts between defaults on function definitions
- [Macro] Add
__escape__/1callback so structs can escape references and other runtime data types inMacro.escape/1 - [OptionParser] Support the
:regextype - [OptionParser] Enhance parsing error to display available options
- [String] Update to Unicode 17.0.0
ExUnit
- [ExUnit] Set a process label for each test
Logger
- [Logger] Accept any enumerable in
Logger.metadata/1
Mix
- [mix format] Add options to mix format to allow excluding of files
- [mix test] Add
--name-patternoption tomix test - [Mix.install/2] Support the
:compilersoption
2. Bug fixes
Elixir
- [Code] Return error on invalid unicode sequences in
Code.string_to_quoted/2instead of raising - [Code] Properly handle column annotation for
ininnot inexpressions - [Enum] Fix infinite loop on
Enum.take/2with negative index on empty enumerable - [Inspect] Inspect ill-formed structs as maps
- [Kernel] Properly increment metadata newline when
?is followed by a literal newline character
ExUnit
- [ExUnit.Assertions] Fix order in ExUnit results when listing pinned variables
- [ExUnit.Assertions] Raise if attempting to raise an assertion error with invalid message (not a binary)
IEx
- [IEx] Abort pipelines when there is an error in any step along the way
Mix
- [mix compile] Fix bug where reverting changes to an external resource (such as HEEx template) after a compilation error would make it so the source module would not be compiled
- [mix compile] Avoid failures when locking compilation across different users
- [mix compile] Fix race condition when renaming files used by the compilation lock
- [mix test] Prevent
mix testfrom overriding:failures_manifest_pathoption
3. Hard deprecations
Elixir
- [Code] Warn if line-break characters outside of
\rand\r\nare found in strings according to UX#55. This warning will be fast-tracked into an error for security reasons in Elixir v1.20, following a similar rule to bidirectional control characters. They will already raise if found in comments
Trending in News
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #elixirconf-us
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #performance
- #security










First 10 of 14 Posts!
josevalim
Alright folks, in a nutshell, this release addresses all feedback from the previous RC:
Please give it a try, so we can finally ship v1.19!
frankdugan3
Just want to share the performance gains on deps compilations for my large day-job project on an AMD Ryzen 9 5900X 12-Core Processor:
Great work, team!
Eiji
Compilation from the source (using
asdf install elixir ref:1.19.0-rc.1) was completed, but a new warning has appeared during tests, see:There are 3 things that look bad and 2 of them may be important if they appear in other use cases:
noneas a line insrc/conflict.yrl- I guess it’s a bug? Or maybe it’s something likemeta[:line] || "none"?conflictnaming is rather alarming and I’m not sure if it should be ignored like a typical warningThe warning message is not clear. I only know that there is some “conflict”, but I have no idea what’s conflicting and where I can find it (
noneas a line number also does not helps here).1 shift/reduce, 0 reduce/reduceis some short that is rather not commonly known or I have forget about or missed something as I don’t remember similar warning or error message like that.The application exited for
parsetoolsis not a new thing so I know it’s not a problem especially that it’s labelled asnotice. What’s I just realised is why we havenoticelevel in this case … I guess it’s usuallywarn/warningor sometimeserror.If all of those messages are expected then silencing only those 2 things would make the installation logs clear. Is there a way to instruct
asdfand other tools to configure this process, so those messages would not show up? In a manual compilation for development purposes of course those messages are fine. However it’s not the same if we talk about installation from source.I was testing
v1.19before many times especially for parallel dependency compilation and I also see a huge improvement. It’s worth to mention that such improvements or even better applies to everyphoenixapplication, so this is not the type of speedup most developers could just not notice.Also there is at least one bug fix not mentioned. In short
@compile debug_info: truedoes not worked while@compile {:debug_info, true}and@compile :debug_infodid. For more information see:https://github.com/elixir-lang/elixir/issues/14567
https://github.com/elixir-lang/elixir/commit/f8de42a053a007242b766b49355a951aa25b8b8c
derekkraan
Moving from 1.19-rc.0 to 1.19-rc.1, I am now seeing some mysterious compiler output. It appears to be stuck.
(It has now taken much longer than 10s, and I’m still waiting as I type out this message)
sabiwara
I think it might be the same issue as v1.19.0-rc.1 - compilation does not finish with for comprehension in Ecto.Migrator anomymous function · Issue #14810 · elixir-lang/elixir · GitHub.
derekkraan
Ah yes, apologies for the noise! I see even that a colleague of mine already posted in that issue.
hkrutzer
I am getting:
I haven’t been able to reduce this to a test case yet, curious if anyone else is seeing something like this.
Eiji
You need to show us the related code from
myfile.ex. We can’t just guess what you have there.hkrutzer
I don’t think you understood what I meant with “I haven’t been able to reduce this to a test case yet,”, it means I can’t share just this file, I would need to share the entire codebase.
Eiji
I understand, but it does not help us help you. If you want you can invite just me to your repo, so I can investigate the problem for you. I guess you should have no problem with inviting someone with read-only rule. Of course you may say you can’t just trust people, but such a stacktrace is not enough.
For example due to pattern-matching functions are expected to simply fail on non-matching data and that’s fine, because in a “private” part of core it should never happen. The maintainers usually needs a use case, so they can investigate what caused such an edge case.
Look that if wrong data would come to example function below we have no idea what kind of data it is as well as which code in core caused the issue, because there is not enough information in the stacktrace:
Adding an
is_integer/1check and clause for other data is not a solution here, but a workaround for the problem.Last Post!
sabiwara
Linking your issue here for the record since you did manage to reproduce it (thank you!)
https://github.com/elixir-lang/elixir/issues/14817