Age | Commit message (Collapse) | Author |
|
|
|
* nox/erl_eval-receive/OTP-11137:
Updated primary bootstrap for erl_eval
Added preloaded prim_eval
Fix receive support in erl_eval with a BEAM module
|
|
|
|
Using the low-level BEAM instructions, we can loop over each message in
the process queue and removes the first message that matches, without
receiving them all to later send them back to itself.
The function prim_eval:'receive'/2 is equivalent to the
following pseudo-code:
'receive'(F, T) ->
RESET MESSAGE QUEUE POINTER,
LOOP:
case PEEK CURRENT MESSAGE WITH TIMEOUT T of
{ok,Msg} ->
case F(Msg) of
nomatch ->
DECREMENT TIMEOUT T,
ADVANCE MESSAGE QUEUE POINTER,
GOTO LOOP;
Result ->
RESET MESSAGE QUEUE POINTER,
Result
end;
timeout ->
RESET MESSAGE QUEUE POINTER,
timeout
end.
To not break Dialyzer and other tools, we use a stub Erlang module which
abstract code is forcefully inserted into prim_inet.erl afterwards
compilation.
|
|
In an email to erlang-questions, Bengt Kleberg wrote:
When I use c:ls/1 it reminds me so much of Unix "ls" that I
expect c:ls("filename") to work. The resulting error surprises
me every time (not the same day).
While teaching c:ls/1 to show non-directory files, update the
error handling to make use of the POSIX error codes from
file:list_dir/1 and file:format_error/1 (which had not been
invented when the c module was first implemented).
Suggested-by: Bengt Kleberg
Test-suite-by: Bengt Kleberg
|
|
|
|
This function is used all over the place in OTP itself and people
sometimes want that functionality, they may as well not reimplement it
themselves.
|
|
|
|
|
|
These were documented in the stdlib user's guide, but not in the
reference manual for erl. This has now been corrected.
|
|
|
|
* sv/stdlib/sys-get-state/OTP-11013:
Removed ?line macro
add sys:get_state/1,2 and sys:replace_state/2,3
update sys:get_status/2,3 documentation for gen_event
|
|
At Erlang Factory 2013 there was discussion during one of the talks about
the sys:get_status functions and how useful they were for debugging. Geoff
Cant mentioned it would be very useful if the sys module also provided
functions to use while debugging to get just the state of a process and
also to be able to replace the state of a process, and many others in the
audience appeared to agree.
The sys:get_state/1,2 functions return the state of a gen_server, gen_fsm,
or gen_event process. The return value varies depending on the process
type: process state for a gen_server, state name and state data for a
gen_fsm, and handler module, handler id, and handler state for each handler
registered in a gen_event process.
The sys:replace_state/2,3 functions allow the state of a gen_server,
gen_fsm, or gen_event process to be replaced with a new state. These
functions take a function argument that updates or replaces the process
state; using a function to change the state eliminates the race condition
of first reading the state via sys:get_state/1 or sys:get_state/2, using
its return value to create a new state, and then replacing the old state
with the new state, since during that time the process might have received
other calls or messages that could have changed its state.
* For a gen_server process, the state replacement function takes the
process state as an argument and returns a new state.
* For a gen_fsm process, the state replacement function gets a tuple of
{StateName, StateData} and returns a similar tuple that specifies a new
state name, new state data, or both.
* For a gen_event process, the state replacement function is called for
each registered event handler. It gets a tuple {Module, Id, HandlerState}
and returns a similar tuple that specifies the same Module and Id values
but may specify a different value for HandlerState.
If the state replacement function crashes or results in an error, the
original state of a gen_server or gen_fsm process is maintained; if such a
crash occurs for a gen_event process, the original state of the event
handler for which the state replacement function was called is maintained,
but the states of other event handlers of the same gen_event process may
still be updated if no errors or crashes occur while replacing their
states.
Add documentation for sys:get_state/1,2 and sys:replace_state/2,3. The
documentation explicitly notes that the functions are intended for use
during debugging.
Add new tests for these functions to gen_server_SUITE, gen_fsm_SUITE, and
gen_event_SUITE.
|
|
Modify the documentation for the sys:get_status/2,3 functions to reflect
that they also work on gen_event processes, and add a cross reference for
gen_event:format_status/2 to go along with the existing cross references
for gen_server and gen_fsm.
|
|
A bug has been fixed: when given the option {encoding,utf8} a list of
floating point numbers (in the correct interval) was mistakenly
returned as a string.
|
|
Since commit 47759479146ca11ad81eca0bb3236b265e20601d,
simple-one-for-one supervisors _do_ kill their children explicitly on
shutdown. That commit also removed this note, but it seems like the
merge commit 45b4d5309e0686cc5fa28506de76f75b598bbd95 incorrectly
reinstated it.
|
|
|
|
|
|
|
|
Also extended it with more examples, summaries and other
stuff.
|
|
* pan/unicode_printable_ranges:
Adapt stdlib tests to ~tp detecting latin1 binaries
Update primary bootstrap
Make wx debugger use +pc flag when applicable
Correct misspelled comments and space at lin ends
Make ~tp output latin1 binaries as strings if possible
Leave the +pc handling to io and io_lib_pretty
Remove newly introduced warning in erlexec.c
Make shell_SUITE:otp_10302 use +pc unicode when needed
Fix io_proto_SUITE to handle the new io_lib_pretty:print
Add testcase for +pc and io:printable_range/0
Make printing of UTF-8 in binaries behave like lists.
Document +pc flag and io:printable_range/0
Add usage of and spec for io:printable_range/0
Add +pc {latin1|unicode} switch and io:printable_range/0
Fix some Unicode issues
OTP-18084
|
|
* bjorn/unicode-doc/OTP-10852:
file: Document list_dir_all/1 and read_link_all/1
file: Remove note about Unicode handling being experimental
filelib: Update documentation
|
|
|
|
A short description of how ~tp works now.
|
|
Use the new function shell:strings/1 to toggle how the Erlang shell
outputs lists of integers.
|
|
The modifier 'l' can be used for turning off the string recognition of
~p and ~P.
|
|
|
|
|
|
|
|
* sverk/ets-write_concurrency-locks:
erts,stdlib: Increase number of locks for write_concurrency
OTP-10787
|
|
|
|
There seems to be a need for a more elaborate solution when it comes
to recognizing printable Unicode characters.
The ~tp syntax is experimental, and may be removed in R16B.
|
|
|
|
|
|
|
|
The code related to the introduction of unicode_string() and
unicode_char() has been removed. The types char() and string() have
been extended to include Unicode characters.
In fact char() was changed some time ago; this commit is about
cleaning up the documentation and introduce better names for some
functions.
|
|
Also minor corrections of the docs of io(3)
|
|
|
|
The documentation of some Unicode functions in io_lib was committed by
mistake.
|
|
|
|
Examples overflowing the width of PDF pages have been fixed.
The remaining warnings are due to table cells, and require more
work.
|
|
* ks/stdlib/proplists-spec-cleanup/OTP-10663:
Ensure that edocumentation and the xml file are in sync
Clean up some specs
|
|
|
|
|
|
Expect modifications, additions and corrections.
There is a kludge in file_io_server and
erl_scan:continuation_location() that's not so pleasing.
|
|
|
|
The R15B03 release
|
|
|
|
|
|
If a child fails to start, supervisor relies upon error_logger which does not
work when IO is inhibited. Instead pass the error up the chain and let someone
else use a proper Reason for any possible printouts.
|