How fs-fio/fio works
FIO is a typed, purely functional effects library for F# with fibers and pluggable runtimes, plus HTTP, TCP socket, and WebSocket extensions. The principal workflow is to compose lazy effects with the DSL, then run them through FIOApp and a runtime; the app handles the settled outcome and shutdown. README documentation supports the core workflow and major capabilities, but no source excerpts were available, so internal wiring beyond those documented relationships is omitted.
Main entry points: App.fs FIOApp · Core.fs Typed effects · DSL DSL and operators · Runtime Runtime family
Components 19
Effect composition
- DSL and operators
src/FIO/DSL - Typed effects
src/FIO/DSL/Core.fs
Execution and concurrency
- FIOApp
src/FIO/App.fs - Runtime family
src/FIO/Runtime - Fibers
src/FIO/DSL - Typed channels
src/FIO/DSL - Parallel combinators
src/FIO/DSL - Atomic refs
src/FIO/DSL/Ref.fs - Finalizers
src/FIO/DSL
Core I/O
- Console
src/FIO/Console.fs
Network extensions
- HTTP server
src/FIO.Http/Server.fs - TCP sockets
src/FIO.Sockets/Socket.fs - TCP server
src/FIO.Sockets/ServerSocket.fs - Socket codecs
src/FIO.Sockets/Codec.fs - WebSockets
src/FIO.WebSockets/WebSocket.fs - WebSocket server
src/FIO.WebSockets/WebSocketServer.fs
Other components
- Application developer
- Terminal
- HTTP clients
Connections 9
- Application developer → DSL and operators: composes
- DSL and operators → Typed effects: builds
- Application developer → FIOApp: starts
- FIOApp → Typed effects: runs
- FIOApp → Runtime family: uses
- Runtime family → Typed effects: interprets
- Terminal → Console: input
- Console → Terminal: output
- HTTP clients → HTTP server: requests