| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Currently release_man_spec for system/doc/top fails on GNU make 4.3
make[3]: Entering directory '/home/dav/.kerl/builds/26.0-rc1-master/otp_src_git/system/doc/top'
make[3]: *** No rule to make target '/home/dav/erlang/26.0-rc1-master/doc/docbuild\', needed by 'release_man_spec'. Stop.
Due to breaking change done in GNU make sp variable is empty in qs
and sq calls (note a '\' after 'docbuild').
Previously appending using '+=' to an empty variable would result
in a value starting with a space. Since 4.3 the initial space is only
added if the variable already contains some value.
<https://lists.gnu.org/archive/html/info-gnu/2020-01/msg00004.html>
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
* anders/make-4.3/OTP-18468:
Revert "Fix GNU make 4.3 incompatibility"
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The fix in commit 15a48d75 was plain wrong, setting sp to a string
containing quote characters, causing release with a path containing a
space to fail. Revert and let PR 6879 do it right instead.
This reverts commit 15a48d75426fa11ada0280448d87f4cf05bae225.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Reference Manual: Use the change tag for clarity
|
| | |/ / / / /
| |/| | | | |
| | | | | | |
| | | | | | | |
While at it, fix a few other minor issues.
|
|\ \ \ \ \ \ \
| |/ / / / / /
|/| / / / / /
| |/ / / / /
| | | | | | |
* anders/make-4.3/OTP-18468:
Fix GNU make 4.3 incompatibility
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
GNU make documents the incompatibility below in 4.3, which commmit
cd645af2 stepped on when using += to set variable sp to a single space.
* WARNING: Backward-incompatibility!
Previously appending using '+=' to an empty variable would result in a
value starting with a space. Now the initial space is only added if
the variable already contains some value. Similarly, appending an
empty string does not add a trailing space.
https://lists.gnu.org/archive/html/info-gnu/2020-01/msg00004.html
There's no need for += since the value can be set directly. The missing
space caused make release_docs to fail:
make[3]: *** No rule to make target
'/home/anders/release/26.0-rc1/doc/temporary/index.html /home/anders/release/26.0-rc1/doc/temporary/applications.html /home/anders/release/26.0-rc1/doc/temporary/erlresolvelinks.js /home/anders/release/26.0-rc1/doc/temporary/man_index.html\',
needed by 'html'. Stop.
|
|\ \ \ \ \ \
| |_|_|/ / /
|/| | | | | |
Remove HiPE note about module MD5 checksum
|
| | |_|/ /
| |/| | | |
|
| |/ / /
|/| | |
| | | |
| | | | |
This reverts commit 587341d994f91af5b30483ee9434e932e3d7b802.
|
| | | | |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Update index html
|
| | | | | |
|
| | | | |
| | | | |
| | | | | |
change all http: to https:
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
|\ \ \ \ \
| | |/ / /
| |/| | |
| | | | |
| | | | | |
* maint:
Add info about async_dist in reference manual
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit fca5947492613f576ae82ebcd8d3242fdb262854, reversing
changes made to c0cc1fe4885a1b7c7d74a52e49c9a68784efbb20.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit e5e21c3964488d6dfa6551d6673bc757781980a6, reversing
changes made to 6f3e1a7d5158ea8feca430377ef5cb4061b454ab.
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
Remove archives fallback in code path OTP-18436
|
| | |/ /
| |/| | |
|
|\ \ \ \
| | | | |
| | | | | |
Implement map comprehensions (EEP-58)
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The sections for List Comprehensions and Bit String Comprehensions
have been combined to a single Comprehensions section, which now cover
all three types of comprehensions and generators.
|
|/ / / / |
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The `file:pid2name/1` function is limited in that it does not work for
files opened in `raw` mode or for files opened on a remote file
server. The implementation also adds overhead for each open and close
operation because an ETS table must be updated.
Therefore, deprecate the `file:pid2name/1` now, and schedule it for
removal in Erlang/OTP 27.
|
| | | |
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* maint:
system: Clarify documentation for enabling 'maybe'
|
| | | |
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* maint:
fix typo
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Allow max/2 and min/2 to be used in guards
|
| | | |
| | | |
| | | |
| | | | |
Closes #6544
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Change "priority" to the standard terminology "precedence".
* Document the changed precedence of the `catch` operator.
* Mention the restrictions of `?=` in a note after the operand table.
* Mark the non-associative binary operators as such in the operand table.
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | | |
* maint:
Updated OTP version
Prepare release
Update copyright year
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
bjorng/bjorn/compiler/parallel-match/GH-6348/OTP-18297
Lift restrictions for matching of binaries and maps
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
There has always been an implementation limitation for matching
of binaries (for technical reasons). For example:
foo(Bin) ->
<<A:8>> = <<X:4,Y:4>> = Bin,
{A,X,Y}.
This would fail to compile with the following message:
t.erl:5:5: binary patterns cannot be matched in parallel using '='
% 5| <<A:8>> = <<X:4,Y:4>> = Bin,
% | ^
This commit lifts this restriction, making the example legal.
A restriction for map matching is also lifted, but before we can
describe that, we'll need a digression to talk about the `=` operator.
The `=` operator can be used for two similar but slightly differently
purposes.
When used in a pattern in a clause, for example in a function head,
both the left-hand and right-hand side operands must be patterns:
Pattern1 = Pattern2
For example:
bar(#{a := A} = #{b := B}) -> {A, B}.
The following example will not compile because the right-hand side
is not a pattern but an expression:
wrong(#{a := A} = #{b => B}) -> {A, B}.
t.erl:4:23: illegal pattern
% 4| wrong(#{a := A} = #{b => B}) -> {A, B}.
% | ^
Used in this context, the `=` operator does not imply that the two
patterns are matched in any particular order. Attempting to use a
variable matched out on the left-hand side on the right-hand side, or
vice versa, will fail:
also_wrong1(#{B := A} = #{b := B}) -> {A,B}.
also_wrong2(#{a := A} = #{A := B}) -> {A,B}.
t.erl:6:15: variable 'B' is unbound
% 6| also_wrong1(#{B := A} = #{b := B}) -> {A,B}.
% | ^
t.erl:7:27: variable 'A' is unbound
% 7| also_wrong2(#{a := A} = #{A := B}) -> {A,B}.
% | ^
The other way to use `=` is in a function body. Used in this way,
the right-hand side must be an expression:
Pattern = Expression
For example:
foobar(Value) ->
#{a := A} = #{a => Value},
A.
Used in this context, the right-hand side of `=` must **not** be a pattern:
illegal_foobar(Value) ->
#{a := A} = #{a := Value},
A.
t.erl:18:21: only association operators '=>' are allowed in map construction
% 18| #{a := A} = #{a := Value},
% | ^
When used in a body context, the value of the `=` operator is the
value of its right-hand side operand. When multiple `=` operators are
combined, they are evaluted from right to left. That means that any
number of patterns can be matched at once:
Pattern1 = Pattern2 = ... = PatternN = Expr
which is equivalent to:
Var = Expr
PatternN = Var
.
.
.
Pattern2 = Var
Pattern1 = Var
Given that there is a well-defined evaluation order from right to
left, one would expect that the following example would be legal:
baz(M) ->
#{K := V} = #{k := K} = M,
V.
It is not. In Erlang/OTP 25 or earlier, the compilation fails with the
following message:
t.erl:28:7: variable 'K' is unbound
% 28| #{K := V} = #{k := K} = M,
% | ^
That restriction is now lifted, making the example legal.
Closes #6348
Closes #6444
Closes #6467
|
|\ \ \ \
| |/ / /
|/| / /
| |/ /
| | | |
* maint:
Typo. use "as follows" instead of "a follows"
|
| | |
| | |
| | | |
In the "List Operations" section, write "The procedure is as follows" instead of "The procedure is a follows".
|
| | |
| | |
| | | |
`cg3` should be `ch3`
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It is documented that `$\^X` is the code point (ASCII code) for
Control X, where X is an uppercase or lowercase letter.
It turns out that it works for **all** characters:
1> $\^@.
0
2> $\^_.
31
3> $\^Γ.
19
4> $\*.
42
5> $\^😀.
0
6> $\^?.
31
Some of those are reasonable. `^@` and `^_` are allowed in Emacs and
most other tools that support the caret notation.
It is reasonable to allow `^?`, but the value of it should
be 127 (Delete) as in all other tools.
Allowing arbitrary letters and symbols does not make sense.
Therefore, this commit modifies the rules for the caret notation to
allow all characters in the range `16#40` through `16#4F` as well as
lowercase `a` through `z`. That is, the following characters are
allowed: `@`, `A`-`Z`, `[`, `\`, `]`, `^`, `_`, and `a`-`z`. That
makes it possible to express all control codes from 0 through 31.
Also allowed is `?`, but the value of it will now be 127 instead
of 31. That is a potential incompatibility, but only for users who
used it despite it being undocumented.
Closes #6477
|
|\ \ \
| |/ / |
|
| | | |
|
| | | |
|