From 9517a54d7a1025e29412473ca2723b4bac88e7ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bjo=CC=88rn=20Gustavsson?= Date: Mon, 10 Feb 2025 09:43:27 +0100 Subject: [PATCH 1/2] Add news post about Erlang/OTP 28, release candidate 1 --- _news/174.md | 146 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 _news/174.md diff --git a/_news/174.md b/_news/174.md new file mode 100644 index 0000000000..a30c6de401 --- /dev/null +++ b/_news/174.md @@ -0,0 +1,146 @@ +--- +layout: post +id: 174 +title: "Erlang/OTP 28.0 Release Candidate 1" +lead: "Erlang/OTP 28.0-rc1 is the first release candidate for OTP 28" +tags: "release, OTP, 28.0-rc1, Release Candidate" +date: "2024-02-12" +author: "Björn Gustavsson" +--- +## OTP 28.0-rc1 + +Erlang/OTP 28.0-rc1 is the first release candidate of three before the OTP 28.0 release. + +The intention with this release is to get feedback from our users. +All feedback is welcome, even if it is only to say that it works for you. +We encourage users to try it out and give us feedback either by creating an issue at +[https://github.com/erlang/otp/issues](https://github.com/erlang/otp/issues) or by +posting to [Erlang Forums](https://erlangforums.com/). + +All artifacts for the release can be downloaded from the +[Erlang/OTP Github](https://github.com/erlang/otp/releases/tag/OTP-28.0-rc1) release +and you can view the new documentation at +[https://erlang.org/documentation/doc-16.0-rc1/doc](https://erlang.org/documentation/doc-16.0-rc1/doc/). +You can also install the latest release using [kerl](https://github.com/kerl/kerl) like this: + +``` +kerl build 28.0-rc1 28.0-rc1. +``` + +Starting with this release, a source [Software Bill of Materials +(SBOM)](https://www.cisa.gov/sites/default/files/2023-04/sbom-types-document-508c.pdf) +will describe the release on the [Github +Releases](https://github.com/erlang/otp/releases) page. We welcome +feedback on the SBOM. + +Erlang/OTP 28 is a new major release with new features, improvements +as well as a few incompatibilities. Some of the new features are +highlighted below. + +Many thanks to all contributors! + + +# HIGHLIGHTS + +## New language features + +- Comprehensions have been extended with "zip generators" allowing + multiple generators to be run in parallel. For example, + `[A+B || A <- [1,2,3] && B <- [4,5,6]]` will produce `[5,7,9]`. + +- Generators in comprehensions can now be strict, meaning that if + the generator pattern does not match, an exception will be raised + instead of silently ignore the value that didn't match. + +- It is now possible to use any base for floating point numbers as per + [EEP 75: Based Floating Point Literals](https://www.erlang.org/eeps/eep-0075). + + +## Compiler and JIT improvements + +- For certain types of errors, the compiler can now suggest + corrections. For example, when attempting to use variable `A` that + is not defined but `A0` is, the compiler could emit the following + message: `variable 'A' is unbound, did you mean 'A0'?` + +- The size of an atom in the Erlang source code was limited to 255 + bytes in previous releases, meaning that an atom containing only + emojis could contain only 63 emojis. While atoms are still only + allowed to contain 255 characters, the number of bytes is no longer + limited. + +- The `warn_deprecated_catch` option enables warnings for use of + old-style catch expressions on the form `catch Expr` instead of the + modern `try` ... `catch` ... `end`. + +- Provided that the map argument for a `maps:put/3` call is known to + the compiler to be a map, the compiler will replace such calls with + the corresponding update using the map syntax. + +- Some BIFs with side-effects (such as `binary_to_atom/1`) are + optimized in `try` ... `catch` in the same way as guard BIFs in + order to gain performance. + +- The compiler’s alias analysis pass is now both faster and less + conservative, allowing optimizations of records and binary + construction to be applied in more cases. + +## ERTS + +- The `trace:system/3` function has been added. It has a similar + interface as `erlang:system_monitor/2` but it also supports trace + sessions. + +- `os:set_signal/2` now supports setting handlers for the `SIGWINCH`, + `SIGCONT`, and `SIGINFO` signals. + +- The two new BIFs `erlang:processes_iterator/0` and + `erlang:process_next/1` make it possible to iterate over the + process table in a way that scales better than `erlang:processes/0`. + +## Shell and terminal + +- The erl -noshell mode has been updated to have two sub modes called + `raw` and `cooked`, where `cooked` is the old default behaviour and + `raw` can be used to bypass the line-editing support of the native + terminal. Using `raw` mode it is possible to read keystrokes as they + occur without the user having to press Enter. Also, the `raw` mode + does not echo the typed characters to stdout. + +- The shell now prints a help message explaining how to interrupt a + running command when stuck executing a command for longer than 5 + seconds. + +## STDLIB + +- The `join(Binaries, Separator)` function that joins a list of + binaries has been added to the + [`binary`](https://www.erlang.org/doc/apps/stdlib/re.html) module. + +- By default, sets created by module + [`sets`](https://www.erlang.org/doc/apps/stdlib/sets.html) + will now be represented as maps. + +- Module [`re`](https://www.erlang.org/doc/apps/stdlib/re.html) has + been updated to use the newer PCRE2 library instead of the + PCRE library. + +- There is a new `zstd` module that does + [Zstandard](https://facebook.github.io/zstd/) compression. + + +## Dialyzer + +- [EEP 69: Nominal Types](https://www.erlang.org/eeps/eep-0069) has been + implemented. + +## SSL + +- The data handling for tls-v1.3 has been optimized. + +## Emacs mode (in the Tools application) + +- The `indent-region` in Emacs command will now handle multiline + strings better. + +For more details about new features and potential incompatibilities see the [README](https://erlang.org/download/otp_src_28.0-rc1.readme). From a07ade95f27bbdaacbf04e025341efcea281689f Mon Sep 17 00:00:00 2001 From: Henrik Nord Date: Wed, 12 Feb 2025 12:26:51 +0100 Subject: [PATCH 2/2] suggest changes for doc links doc changes --- _news/174.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_news/174.md b/_news/174.md index a30c6de401..6e2fc32f44 100644 --- a/_news/174.md +++ b/_news/174.md @@ -115,13 +115,13 @@ Many thanks to all contributors! - The `join(Binaries, Separator)` function that joins a list of binaries has been added to the - [`binary`](https://www.erlang.org/doc/apps/stdlib/re.html) module. + [`binary`](https://erlang.org/documentation/doc-16-rc1/lib/stdlib-7.0/doc/html/binary.html) module. - By default, sets created by module - [`sets`](https://www.erlang.org/doc/apps/stdlib/sets.html) + [`sets`](https://erlang.org/documentation/doc-16-rc1/lib/stdlib-7.0/doc/html/sets.html) will now be represented as maps. -- Module [`re`](https://www.erlang.org/doc/apps/stdlib/re.html) has +- Module [`re`](https://erlang.org/documentation/doc-16-rc1/lib/stdlib-7.0/doc/html/re.html) has been updated to use the newer PCRE2 library instead of the PCRE library.