Age | Commit message (Collapse) | Author |
|
This moves, extends and exports functionality that previously existed only
internally in filename:find_src/1/2, adding the ability to automatically
substitute file suffixes and use different rules for different suffixes.
|
|
|
|
|
|
asn1: Remove deprecated functions
OTP-14146
|
|
Remove the entire asn1rt module. All functions in it were deprecated in
OTP 17.
In asn1ct, remove the deprecated functions asn1ct:encode/3 and
asn1ct:decode/3. Also remove asn1ct:encode/2, which has not been
formally deprecated but is undocumented.
|
|
* hasse/stdlib/check_type_constraints/OTP-14070/PR-1214:
stdilb: Check for bad type constraints in function types
|
|
* maint:
stdlib: Correct signatures of functions in erl_parse
|
|
The signatures of erl_parse:anno_to_term/1 and
erl_parse:anno_from_term/1 are corrected. Using these function no
longer results in false Dialyzer warnings.
|
|
* maint:
stdlib: Allow characters in types and constant patterns
|
|
* egil/stdlib/gen_event-start-2/OTP-14123:
stdlib: Document gen_event start options
stdlib: Test gen_event options
stdlib: Refactor gen_event_SUITE
stdlib: Remove whitespace error in gen_event_SUITE
stdlib: Add start options to gen_event
stdlib: Remove whitespace errors in gen_event
|
|
Characters ($char) can be used in constant pattern expressions. They
can also be used in types and contracts.
|
|
Similar to maps:take/2, add take/2 to the other dictionary
modules in STDLIB:
orddict:take(Key, Dict) -> {Val,NewDict} | 'error'.
dict:take(Key, Dict) -> {Val,NewDict} | 'error'.
gb_trees:take(Key, Dict) -> {Val,NewDict}.
For gb_trees also add:
gb_trees:take_any(Key, Dict) -> {Val,NewDict} | 'error'.
gb_trees already has delete() and delete_any(), so we will
follow that design pattern.
Suggested by Boris Bochkaryov in https://github.com/erlang/otp/pull/1209.
|
|
* New gen_event:start/2 and gen_event:start_link/2
* Extend gen_event:start/1 and gen_event:start_link/1
to handle an option list as input.
The options to gen_event are the same as to gen_server.
|
|
|
|
* maint:
Allow escripts with only two lines
Add project-wide Emacs settings file
|
|
The current implementation assumes that escripts all have at least
three lines. But according to the escript documentation, comments
on the second line and emulator flags on the third line are all
optional. Thus escripts with only two lines -- shebang on the
first line and code on the second line -- will not run. This commit
fixes the problem by rearranging the escript header parsing logic,
and recognize the escript body on the second line if the header only
contains a line of shebang.
|
|
When a gen_server crashes it is in many cases helpful to know in which
context its client made its call.
|
|
* maint:
Update copyright-year
Conflicts:
lib/dialyzer/src/dialyzer.hrl
lib/dialyzer/src/dialyzer_options.erl
lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer.hrl
lib/dialyzer/test/opaque_SUITE_data/src/recrec/dialyzer_races.erl
lib/hipe/icode/hipe_icode.erl
lib/hipe/main/hipe.erl
lib/hipe/main/hipe.hrl.src
lib/hipe/main/hipe_main.erl
|
|
|
|
* richcarl/stdlib/io_lib_pretty-comments/PR-1228:
Add comments for understanding io_lib_pretty
|
|
* richcarl/default-compiler-flags/PR-1226/OTP-14071:
stdlib test suite: fix uses of export_all
diameter tests: Eliminate use of -compile(export_all)
asn1 test suite: Suppress warnings for -compile(export_all)
Remove left-over uses of -compile(export_all)
Make warn_export_all the default
warn_obsolete_guard is already default
|
|
|
|
The parser recognizes the 'is_subtype(V, T)' syntax for constraints,
and of course the new 'V :: T' syntax, but other variants result in an
error message. Up to now, the parser and linter have let badly formed
constraints through, and relied upon Dialyzer to emit warnings.
is_subtype/2 cannot easily be taken out from the parser. Not only
would we need find a way to emit a (linter) warning, but there also
needs to be an option for suppressing the linter warning as
compilation with +warnings_as_errors has to work. (Notice that the
abstract format representation for 'V :: T' is the same as for
'is_subtype(V, T)'.)
This correction was triggered by an email from Robert, and Kostis
created pull request 1214 to provide a fix. However, Kostis' fix
disallowed is_subtype() altogether, which breaks backward
compatibility.
As of Erlang/OTP 19.0 (ticket OTP-11879), the 'is_subtype(V, T)' is no
longer documented.
|
|
* hasse/stdlib/remove_dets_v8/OTP-13830:
reltool: Remove module dets_v8
runtime_tools: Remove module dets_v8
stdlib: Remove support for Dets version 8 tables
|
|
* richcarl/error_logger_tty-cleanup/PR-1256/OTP-14068:
Write node info before log message body, not after
Eliminate some code duplication
|
|
When at it, types have been added to record fields.
|
|
|
|
Make error_logger_tty_h insert node information for nonlocal messages before
the message itself instead of after, both for readability and so as not to
change the line termination property at the end of the message.
|
|
|
|
* richcarl/code-change-utils/PR-1257/OTP-14059:
Update preloaded modules
Add shell mm() and lm() functions
Add code:module_status/1 and modified_modules/0
Fix spec for erlang:get_module_info()
Handle prefetched paths
Restructure code:which() and where_is_file()
Remove remnants of module package support
|
|
|
|
|
|
|
|
|
|
* maint:
stdlib: Correct types of the abstract format
|
|
The types in erl_parse.yrl are more in harmony with the description in
The Abstract Format (in ERTS User's Guide).
|
|
Fixed bad specs introduced in commit ff568b5e818.
Also suppress improper_lists warnings.
|
|
* jj1bdx/stdlib/rand-jump/PR-1235/OTP-14038:
Add jump functions to rand module
|
|
* tokitori/stdlib/optimize-sets/PR-1212/OTP-14035:
Speed up sets:add_element/2 and sets:del_element/2
|
|
Jump functions returns the state after performing jump calculation to a
rand module internal state, which is equivalent to perform a large
number of calls of calculating new states for XorShift*/+ algorithms.
This commit add jump functions for exsplus and exs1024 algorithms, and a
wrapper function jump/1. The wrapper function will cause error with
reason "not_implemented" if the jump function for the algorithm is not
implemented.
This commit adds following new functionalities:
- Add new functions rand:jump/0 and rand:jump/1
- Add the member jump to type alg_handler(), a fun for performing
the jump function
- Add jump functions for exsplus, equivalent to 2^64 calls
- Add jump functions for exs1024, equivalent to 2^512 calls
- Revise seed_put/1, seed/1, seed/2
See <https://github.com/erlang/otp/pull/1235#discussion_r86950557>
- Add dummy jump function for exs64 calling
erlang:error(not_implemented)
- Add jump function test cases as follows:
* Add Common Test group reference_jump
* Add tests for jump/0 to reference_jump_procdict/1
* Rename tests for jump/1 to reference_jump_state/1
* Rename gen_jump/1 to gen_jump_1/1
* Add Common Tests reference_jump_procdict and reference_jump_state
to the group reference_jump
- Add jump function documentation
This commit also changes the Copyright year for Kenji Rikitake's code
from 2015 to 2015-2016.
|
|
* siri/appups-20.0:
Update sasl/test/test_lib.hrl with recent versions of kernel and stdlib
Update appups in kernel, stdlib and sasl for OTP-20
|
|
Optimize sets:add_element/2 when adding an element that is already present, and
sets:del_element/2 when the element to be deleted is not present. This optimization
can make certain operations, such as sets:union/2 with many overlapping elements,
up to two orders of magnitude faster.
|
|
|
|
* gandrade/fmod/PR-1216/OTP-14000:
Add test cases for math:fmod/2 BIF
Support math:fmod/2 BIF on compiler
Add math:fmod/2 BIF
|
|
Returns the (floating point) remainder of first argument divided
by second argument.
|
|
This makes proc_lib behaves like a normal process as far
as the propagation of exceptions is concerned.
Before this commit, the following difference could be
observed:
6> spawn_link(fun() -> ssl:send(a,b) end).
<0.43.0>
7> flush().
Shell got {'EXIT',<0.43.0>,
{function_clause,
[{ssl,send,[a,b],[{file,"..."},{line,275}]}]}}
ok
8> proc_lib:spawn_link(fun() -> ssl:send(a,b) end).
<0.46.0>
9> flush().
Shell got {'EXIT',<0.46.0>,function_clause}
After this commit, we get the following instead:
3> flush().
Shell got {'EXIT',<0.61.0>,
{function_clause,
[{ssl,send,[a,b],[{file,"..."},{line,275}]},
{proc_lib,init_p,3,[{file,"..."},{line,232}]}]}}
The stacktrace will show minor differences of course
but the form is now the same as without proc_lib.
The rationale behind this commit is that:
* We now have a single form regardless of how the process
was started
* We can use the stacktrace to programmatically alter behavior
(for example an HTTP server identifying problems in input
decoding to send back a generic 400, or a 500 otherwise)
* We can access the stacktrace to print it somewhere (for
example an HTTP server could send it back to the client
when a debug mode is enabled)
|
|
|
|
Do not start an event timer unless there are no enqueued events.
|
|
Handling of timers and timeouts has been cleaned up
and generalized.
Semantic change regarding state timeout zero:
Previously if one state caused a state timeout zero and
managed to stay in the same state to insert additional
timeout zero(s) in the next state callback invocation, then
there would be only one timeout zero event. The mindset
was that the machine was faster then the timeout zero.
This has changed with the mindset that all state callback
invocations should be independent, so now the machine will
get one state timeout zero event per started state timeout
zero.
Note that just using zero timeouts is fairly esoteric...
|
|
|