Age | Commit message (Collapse) | Author |
|
26b59dfe67e introduced support for arbitrary Unicode characters in
atoms. After that commit, it is possible to print any atom with
a "~s" format string:
1> io:format("~s\n", ['спутник']).
спутник
Note that the same text as a string will fail:
2> io:format("~s\n", ["спутник"]).
** exception error: bad argument
in function io:format/3
called as io:format(<0.53.0>,"~s\n",
[[1089,1087,1091,1090,1085,1080,1082]])
Being more permissive for atoms is probably beneficial for io:format/2.
However, for io_lib:format/2, the new behavior breaks this guarantee
in the documentation for io_lib:format/2:
If and only if the Unicode translation modifier is used in
the format string (that is, ~ts or ~tc), the resulting list
can contain characters beyond the ISO Latin-1 character range
(that is, numbers > 255).
The problem is that you can no longer be sure whether io_lib:format/2
will return an iolist that can be successfully passed to a port
or iolist_to_binary/1.
We see three solutions:
1. Keep the new behavior. That means that you can get non-iolist data
when you use ~s for printing an atom, but a 'badarg' when printing
Unicode strings. That is inconsistent, and it delays error detection
if the result is passed to a port or iolist_to_binary/1.
2. Always allow Unicode characters for ~s. That would be incompatible,
because ~s says that any binary is encoded in latin1, while ~ts says
that any binary is encoded in UTF-8. To implement this solution, we
could no longer support latin1 binaries; all binaries would have to
be encoded in UTF-8.
3. Only allow ~s for atoms where all characters are less than 256.
Require ~ts to print atoms such as 'спутник'.
We reject solution 1 because it is slightly incompatible and is
inconsistent.
We reject solution 2 because it too incompatible.
Therefore, this commit implements solution 3.
|
|
|
|
* sverker/bin2term-zlib-bug/ERL-340/OTP-14159:
erts: Fix binary_to_term for compressed and zlib >= v1.2.9
|
|
|
|
* josevalim/atu8-chunk/PR-1078/OTP-14178:
Add new AtU8 beam chunk
|
|
* maint:
Updated OTP version
Prepare release
Fixed crash when a table was deleted during checkpoint traversal
|
|
* maint-19:
Updated OTP version
Prepare release
Fixed crash when a table was deleted during checkpoint traversal
|
|
Conflicts:
lib/crypto/c_src/crypto.c
lib/crypto/src/crypto.erl
|
|
|
|
|
|
|
|
* dgud/mnesia/checkpoint-crash/OTP-14167:
Fixed crash when a table was deleted during checkpoint traversal
|
|
|
|
|
|
Set fixtable false will fail on deleted tables, catch that and also
report checkpoint deactivate error, so user can see why checkpoint
was deactivated and backup fails.
|
|
The new chunk stores atoms encoded in UTF-8.
beam_lib has also been modified to handle the new
'utf8_atoms' attribute while the 'atoms' attribute
may be a missing chunk from now on.
The binary_to_atom/2 BIF can now encode any utf8
binary with up to 255 characters.
The list_to_atom/1 BIF can now accept codepoints
higher than 255 with up to 255 characters (thanks
to Björn Gustavsson).
|
|
|
|
|
|
|
|
|
|
* ingela/ssl/key-ext-validate/ERL-338/OTP-14141:
ssl: The certificate path may be used as a source to find intermediate CAs for the CRL
ssl: Handle more than one DistributionPoint
ssl: Correct ssl_certificate:validate/3
|
|
for the CRL
|
|
|
|
|
|
|
|
Add restart intensity howto section to design principles doc
OTP-14168
|
|
|
|
Fix observer application crash
When clicking an HTML-link to a port before the port tab has been opened for the first time, observer would crash since port info is not initiated. This is now corrected.
Also, when clicking on an HTML link to a port, and the port does not exist,
then pop up an info dialog saying "No such port".
OTP-14151
|
|
* egil/erts/remove-broken-hash/OTP-13827:
Update test cases for erlang:hash/2 removal
mnesia: Remove mnesia_frag_old_hash hash module
stdlib: Produce correct warning for erlang:hash/2
erts: Remove erlang:hash/2 from documentation
erts: Remove broken hash from Erlang
|
|
|
|
|
|
* rickard/ds-20-fix:
Fix unused warning
Change exception for enif_schedule_nif() with dirty flags
Remove double check of NifExport when checking process code
|
|
* maint:
Workaround for buggy android implementation of PTHREAD_STACK_MIN
|
|
OTP-14165
* rickard/android-missing-page-size-workaround:
Workaround for buggy android implementation of PTHREAD_STACK_MIN
|
|
|
|
The module mnesia_frag_old_hash utilized the broken erlang:hash/2 function
which has been deprecated for a long time. Since erlang:hash/2 is now removed
there is no point in having this module any more.
|
|
|
|
|
|
erlang:hash/2 has been deprecated for a while, time to remove it.
|
|
|
|
* ingela/ssl/crl-validity:
ssl: Make crls valid for a week instead of 24 hours
|
|
|
|
* egil/erts/fix-crashdump-suspend/OTP-14164:
erts: Fix thread suspend in crashdump
|
|
|
|
* ingela/ssl/pem-chache-own-process/OTP-13874:
ssl: Move PEM cache to a dedicated process
|
|
* egil/percept/remove-application/OTP-14163:
ssl: Remove percept from benchmark
otp: Don't mention percept in documentation
runtime_tools: Remove percept
percept: Remove application
|
|
|
|
Changes made to ssl_certificate:validate appear to be preventing CRL
validation from happening when an id-ce-extKeyUsage extension is
present in the cert before the DistributionPoint extension.
https://github.com/erlang/otp/blob/448e8aca77dd29ed5b37d56f0700d24ac26a7243/lib/ssl/src/ssl_certificate.erl#L131
See also ERL-338 and PR-1302
|
|
|
|
* schimulkar/os_mon/linux-on-ibm-z/PR-1309/OTP-14161:
Adding s390x support
|