Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Message.t
down to a specific subset of messages your process is currently interested in. Messages that aren't selected will be kept in the queue in place. This allows us to implement patterns where we scan the mailbox for specific messages, while allowing new messages to come in and not be accidentally discarded.run_with_status
function that converts a Result into an exit status, and helps one-off programs be written more succintly – thanks @Dev380 :sparkles:This is the largest Riot release yet, and we are splitting the package into 4 sub-packages:
receive
Timeouts – you can now call receive ~after:10L ()
and if there are messages fetched in 10 microseconds receive
will raise a Receive_timeout
exception that you can match on.syscall
Timeouts – any syscall being made now can specify a timeout for an answer. If the syscall isn't ready to retry within the timeout period, a Syscall_timeout
exception will be raised.Timer_wheel
with support for clearing timers, iterating timers in the order in which they were created, and a MinHeap backend.Dynamic_supervisor
to dynamically allocate pools of processes up to a maximum.Runtime.Stats
server can be started to periodically print out statistics about the runtime and the garbage collector.Net.Socket
module is now split into a Tcp_listener
and a Tcp_stream
, with their corresponding functions for listening, connecting, sending, and receiving. These also include support for timeouts.Net.Socket.stream_socket
into a client or a server SSL-backed stream pair.Task
to quickly spin up processes that we can await. This is the closest we have to a future. A Task
is typed, executes a single function, and MUST be awaited with Task.await ?timeout task
.Crypto.Random
module with high-level utilities for creating random data of different types, including integers of different sizes, strings, bytestrings, bytes, characters, and ASCII strings.Process.where_is
and Porcess.await_name
to make it easier to find pids by name, and await a name to be registered.Process.is_alive
predicate to check if a process is aliveRef.cast
to do type-safe type-casting based on runtime information of a Ref at its instantiation time.Stream
module that extends the stdlib Seq with a reduce_while
combinator.Store
that works in a process-friendly fashion, similar to Erlang's ETS.%b
sigil.config
package.Introduce IO module with low-level IO operations such as performing direct vectorized (or regular) reads/writes. New operations include:
read
, write
single_read
, single_write
(vectorized)await_readable
, await_writeable
, await
write_all
copy
and copy_buffered
test_name: OK
when everything is fine and all modules to end in _test
.lib_eio_posix
for vectorized i/o.riot
poll
to support kqueue on macOSDashmap.iter
to iterate over a collectionnet_test
with an echo tcp server/clientregister name pid
unregister name
send_by_name ~name msg
Timer.send_after
Riot.Runtime
includes the lower-level runtime blocks, and everything else that is more user-friendly lives at the Riot.*
level.Application
interface for managing the lifecycle of the systemRiot.Logger
to fit the Application
interfaceRiot.Telemetry
backend for doing async telemetryRiot.random ()
API to expose current scheduler's random stateNet
moduleNet.Socket
operations where hanging on I/O polling when they could have been eagerFirst release, including: