Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
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, writesingle_read, single_write (vectorized)await_readable, await_writeable, awaitwrite_allcopy and copy_bufferedtest_name: OK when everything is fine and all modules to end in _test.lib_eio_posix for vectorized i/o.riotpoll to support kqueue on macOSDashmap.iter to iterate over a collectionnet_test with an echo tcp server/clientregister name pidunregister namesend_by_name ~name msgTimer.send_afterRiot.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: