Skip to content

Commit d3991f0

Browse files
committed
Add news item for OTP 28 RC4
1 parent 7da525d commit d3991f0

File tree

1 file changed

+158
-0
lines changed

1 file changed

+158
-0
lines changed

_news/179.md

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
---
2+
layout: post
3+
id: 179
4+
title: "Erlang/OTP 28.0 Release Candidate 4"
5+
lead: "Erlang/OTP 28.0-rc4 is the fourth release candidate for OTP 28"
6+
tags: "release, OTP, 28.0-rc4, Release date"
7+
Candidate: "2025-05-05"
8+
author: "Björn Gustavsson"
9+
---
10+
## OTP 28.0-rc4
11+
12+
Erlang/OTP 28.0-rc4 is the fourth release candidate before the OTP 28.0 release.
13+
14+
The intention with this release is to get feedback from our users.
15+
All feedback is welcome, even if it is only to say that it works for you,
16+
and that it installs as it should.
17+
We encourage users to try it out and give us feedback either by creating an issue at
18+
[https://github.com/erlang/otp/issues](https://github.com/erlang/otp/issues) or by
19+
posting to [Erlang Forums](https://erlangforums.com/).
20+
21+
All artifacts for the release can be downloaded from the
22+
[Erlang/OTP Github](https://github.com/erlang/otp/releases/tag/OTP-28.0-rc4) release
23+
and you can view the new documentation at
24+
[https://erlang.org/documentation/doc-16-rc4/doc](https://erlang.org/documentation/doc-16-rc4/doc/).
25+
You can also install the latest release using [kerl](https://github.com/kerl/kerl) like this:
26+
27+
```
28+
kerl build 28.0-rc4 28.0-rc4
29+
```
30+
31+
Starting with this release, a source [Software Bill of Materials
32+
(SBOM)](https://www.cisa.gov/sites/default/files/2023-04/sbom-types-document-508c.pdf)
33+
will describe the release on the [Github
34+
Releases](https://github.com/erlang/otp/releases) page. We welcome
35+
feedback on the SBOM.
36+
37+
Erlang/OTP 28 is a new major release with new features, improvements
38+
as well as a few incompatibilities. Some of the new features are
39+
highlighted below.
40+
41+
Many thanks to all contributors!
42+
43+
# Highlights for RC4
44+
45+
- The ancient ASN.1 modules used in `public_key` has been replaced with more
46+
modern versions, but we have strived to keep the documented Erlang API for the
47+
`public_key` application compatible.
48+
49+
# Highlights for RC2
50+
51+
- Functionality making it possible for processes to enable reception of
52+
[priority messages](https://erlang.org/doc/system/ref_man_processes.html#priority-messages) has been introduced in accordance with
53+
[EEP 76](https://www.erlang.org/eeps/eep-0076).
54+
55+
# Highlights for RC1
56+
57+
## New language features
58+
59+
- Comprehensions have been extended with "zip generators" allowing
60+
multiple generators to be run in parallel. For example,
61+
`[A+B || A <- [1,2,3] && B <- [4,5,6]]` will produce `[5,7,9]`.
62+
63+
- Generators in comprehensions can now be strict, meaning that if
64+
the generator pattern does not match, an exception will be raised
65+
instead of silently ignore the value that didn't match.
66+
67+
- It is now possible to use any base for floating point numbers as per
68+
[EEP 75: Based Floating Point Literals](https://www.erlang.org/eeps/eep-0075).
69+
70+
71+
## Compiler and JIT improvements
72+
73+
- For certain types of errors, the compiler can now suggest
74+
corrections. For example, when attempting to use variable `A` that
75+
is not defined but `A0` is, the compiler could emit the following
76+
message: `variable 'A' is unbound, did you mean 'A0'?`
77+
78+
- The size of an atom in the Erlang source code was limited to 255
79+
bytes in previous releases, meaning that an atom containing only
80+
emojis could contain only 63 emojis. While atoms are still only
81+
allowed to contain 255 characters, the number of bytes is no longer
82+
limited.
83+
84+
- The `warn_deprecated_catch` option enables warnings for use of
85+
old-style catch expressions on the form `catch Expr` instead of the
86+
modern `try` ... `catch` ... `end`.
87+
88+
- Provided that the map argument for a `maps:put/3` call is known to
89+
the compiler to be a map, the compiler will replace such calls with
90+
the corresponding update using the map syntax.
91+
92+
- Some BIFs with side-effects (such as `binary_to_atom/1`) are
93+
optimized in `try` ... `catch` in the same way as guard BIFs in
94+
order to gain performance.
95+
96+
- The compiler’s alias analysis pass is now both faster and less
97+
conservative, allowing optimizations of records and binary
98+
construction to be applied in more cases.
99+
100+
## ERTS
101+
102+
- The `trace:system/3` function has been added. It has a similar
103+
interface as `erlang:system_monitor/2` but it also supports trace
104+
sessions.
105+
106+
- `os:set_signal/2` now supports setting handlers for the `SIGWINCH`,
107+
`SIGCONT`, and `SIGINFO` signals.
108+
109+
- The two new BIFs `erlang:processes_iterator/0` and
110+
`erlang:process_next/1` make it possible to iterate over the
111+
process table in a way that scales better than `erlang:processes/0`.
112+
113+
## Shell and terminal
114+
115+
- The erl -noshell mode has been updated to have two sub modes called
116+
`raw` and `cooked`, where `cooked` is the old default behaviour and
117+
`raw` can be used to bypass the line-editing support of the native
118+
terminal. Using `raw` mode it is possible to read keystrokes as they
119+
occur without the user having to press Enter. Also, the `raw` mode
120+
does not echo the typed characters to stdout.
121+
122+
- The shell now prints a help message explaining how to interrupt a
123+
running command when stuck executing a command for longer than 5
124+
seconds.
125+
126+
## STDLIB
127+
128+
- The `join(Binaries, Separator)` function that joins a list of
129+
binaries has been added to the
130+
[`binary`](https://erlang.org/documentation/doc-16-rc2/lib/stdlib-7.0/doc/html/binary.html) module.
131+
132+
- By default, sets created by module
133+
[`sets`](https://erlang.org/documentation/doc-16-rc2/lib/stdlib-7.0/doc/html/sets.html)
134+
will now be represented as maps.
135+
136+
- Module [`re`](https://erlang.org/documentation/doc-16-rc2/lib/stdlib-7.0/doc/html/re.html) has
137+
been updated to use the newer PCRE2 library instead of the
138+
PCRE library.
139+
140+
- There is a new `zstd` module that does
141+
[Zstandard](https://facebook.github.io/zstd/) compression.
142+
143+
144+
## Dialyzer
145+
146+
- [EEP 69: Nominal Types](https://www.erlang.org/eeps/eep-0069) has been
147+
implemented.
148+
149+
## SSL
150+
151+
- The data handling for tls-v1.3 has been optimized.
152+
153+
## Emacs mode (in the Tools application)
154+
155+
- The `indent-region` in Emacs command will now handle multiline
156+
strings better.
157+
158+
For more details about new features and potential incompatibilities see the [README](https://erlang.org/download/otp_src_28.0-rc4.readme).

0 commit comments

Comments
 (0)