package riot
An actor-model multi-core scheduler for OCaml 5
Install
Dune Dependency
Authors
Maintainers
Sources
riot-0.0.7.tbz
sha256=b7e3cc061e2b6578bcd9d5258efde72f3657e68d626a005b43d15f1a7aff769e
sha512=00dcd34cce21058137cca15229a81e0e2c898f9877f22db6903288c8f757847a65965cfe791f84fe251df342f90e7e4aefe04f2fbb6ba282ad45b1a3b979e6cf
doc/CHANGES.html
Changes
0.0.7
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
andcopy_buffered
- Introduce Buffer module with support for converting from and to CStruct and String, including position tracking.
- Introduce Read/Reader interface for creating buffered and unbuffered readers of arbitrary sources.
- Introduce Write/Writer interfaces for creating unbuffered writers into arbitrary destinations/sinks.
- Introduce File module with Reader and Writer implementations
- Implment Reader and Writer interfaces for Net.Socket
- Dropped dependency on Bigstringaf and moved to Cstruct
- Fix max number of domains to always be under the recommended domain count
- Fix issue with tests where the runtime idled after the main would die. Now the main process finishing with an exception is considered reason enough to shutdown the system.
- Refactor tests to always output
test_name: OK
when everything is fine and all modules to end in_test
. - Add several IO tests.
- Fix log levels for writing to sockets
- Include proper license for C Stubs copied from
lib_eio_posix
for vectorized i/o. - Split test suite into io/non-io so io tests are left outside opam ci
- Improved IO polling that removes heavy iterations over process/fds tables
- Rewrite Dashmap internals to use a Hashtbl
0.0.6
- Redo packaging to expose a single public library:
riot
- Fix issue with schedulers busy-waiting
- Introduce separate IO Schedulers for polling
- Switch to
poll
to support kqueue on macOS - Reuse read-buffers on Io.read loops
- Broaden IO socket types to file descriptors
- Improved polling with shorter poll timeouts and safety checks
- Add
Dashmap.iter
to iterate over a collection - Add
net_test
with an echo tcp server/client - Fix bugs with syscall suspension that was introduced with reduction counting
0.0.5
- Add
register name pid
- Add
unregister name
- Add
send_by_name ~name msg
- Fix timer wheel making it remove timers correctly
- Add better test for
Timer.send_after
0.0.4
- Internally immediately suspend (bypassing reduction counts) when on a receive expression
- Fix reads from closed Unix sockets
- Fix writes to closed Unix sockets
- Ignore SIGPIPEs on setup
- Fix always mark connected sockets as nonblocking
- Fix GC i/o process table
- Surface pretty-printing of socket values
0.0.3
- Big namespace refactor.
Riot.Runtime
includes the lower-level runtime blocks, and everything else that is more user-friendly lives at theRiot.*
level. - Introduce reduction counting, so processes will run up to N iterations unless they finish, or they execute an unhandled effect.
- Introduce the
Application
interface for managing the lifecycle of the system - Fix
Riot.Logger
to fit theApplication
interface - Add a new
Riot.Telemetry
backend for doing async telemetry
0.0.2
- New
Riot.random ()
API to expose current scheduler's random state - Better logging in the
Net
module - Fix a bug where
Net.Socket
operations where hanging on I/O polling when they could have been eager
0.0.1
First release, including:
- First working version of the scheduler
- Support for process spawning, message passing, monitoring, and linking
- Rudimentary supervisors
- Basic (and incomplete) GenServer
- Scheduling-aware I/O primitives
- Scheduling-aware Logger
- Timers