Skip to content

Quick reference

This page is the answer to three questions: what are the nine effects, which builtins do they gate, and what does the standard library contain.

Every table below is generated from the compiler source, not written by hand: the effect list and the builtin mapping come from src/hlc/parser.hls and src/hlc/checker.hls, the module lists come from the std/ and core/ trees, and the snapshot numbers come from snapshot/MANIFEST.json. When the compiler changes, this page changes with it — and CI fails the build if the committed copy drifts.

Effect Builtins In the uses IO blanket?
| `IO` | 6 builtins | Yes | | `Fs` | 8 builtins | Yes | | `Clock` | 4 builtins | Yes | | `Args` | 2 builtins | Yes | | `Exit` | 1 builtins | Yes | | `Net` | 11 builtins | **No** | | `Rand` | 3 builtins | **No** | | `Proc` | 16 builtins | **No** | | `Conc` | 31 builtins | **No** |
All builtins, by effect**`IO`** — `eprint`, `eprintln`, `isatty`, `print`, `println`, `read_line` **`Fs`** — `file_exists`, `fs_is_dir`, `fs_read_dir`, `fs_set_perms`, `fs_size`, `read_file`, `read_file_tainted`, `write_file` **`Clock`** — `clock_ms`, `instant_now_ns`, `system_time_now_ms`, `thread_sleep_ms` **`Args`** — `args`, `tainted_args` **`Exit`** — `exit` **`Net`** — `net_close`, `net_lookup`, `net_read`, `net_tcp_accept`, `net_tcp_connect`, `net_tcp_listen`, `net_tls_get`, `net_udp_open`, `net_udp_recv_from`, `net_udp_send_to`, `net_write` **`Rand`** — `rand_float`, `rand_int`, `rand_seed` **`Proc`** — `args_os`, `cwd_get`, `cwd_set`, `env_get`, `env_has`, `env_set`, `env_unset`, `proc_child_close`, `proc_child_read`, `proc_child_write`, `proc_exec`, `proc_kill`, `proc_pid`, `proc_spawn`, `proc_wait`, `sys_hostname` **`Conc`** — `async_spawn`, `await`, `chan.len`, `chan.recv`, `chan.recv_or`, `chan.send`, `chan.try_send`, `chan_new`, `chan_new_bounded`, `future_poll`, `future_ready`, `future_select`, `gen_spawn`, `select`, `spawn`, `stream_close`, `stream_filter_int`, `stream_flat_map_int`, `stream_fold_int`, `stream_len`, `stream_map_int`, `stream_merge_int`, `stream_new`, `stream_recv`, `stream_send`, `stream_take_int`, `stream_try_recv`, `task.join`, `thread_current_id`, `thread_sleep_ms`, `thread_yield`
Backend Triples Notes
Native C x86_64 / aarch64 / riscv64 — Linux, macOS, Windows, FreeBSD The default path: AOT through cc
LLVM IR any LLVM-supported target hlc --emit llvm prog.hls out.ll
WebAssembly wasm32 std.jsffi / std.dom; packaged by hls-wasm-pack
Bare metal x86_64 / aarch64 / riscv64 -unknown-none Multiboot2/Limine, IDT/GDT, MMIO, DMA-safe buffers, custom link scripts, DWARF 5

64 modules in std/ and 18 in core/ — 82 in total.

**core** (13) — `str`, `math`, `fmt`, `list`, `set`, `collections`, `bits`, `option`, `result`, `hash`, `regex`, `template`, `log` **system** (12) — `io`, `fs`, `env`, `process`, `thread`, `sync`, `time`, `stream`, `async`, `archive`, `uuid`, `net` **web** (16) — `http`, `http2`, `http_router`, `http_server`, `websocket`, `sse`, `cookie`, `session`, `csrf`, `graphql`, `openapi`, `dom`, `jsffi`, `jsffi_callback`, `url`, `html` **data** (10) — `json`, `json_stream`, `csv`, `config`, `crypto`, `sha1`, `sha256`, `base64`, `hex`, `simd` **cli** (8) — `cli`, `tui`, `color`, `progress`, `complete`, `man`, `hlsdoc`, `hlscli` **security** (2) — `taint`, `sanitize` **testing** (3) — `test`, `quickcheck`, `bench` **bare** (18) — `core.alloc`, `core.asm`, `core.atomics`, `core.boot`, `core.clone`, `core.dma`, `core.eq`, `core.interrupt`, `core.iter`, `core.mem`, `core.mmio`, `core.option`, `core.panic`, `core.port`, `core.result`, `core.rt`, `core.section`, `core.stack`

30 native tools in tools/, plus the language server, debug adapter and REPL:

`hlaarch64`, `hlbindgen`, `hlboot`, `hlcov`, `hlemit`, `hlfmt`, `hlfront`, `hllint`, `hlpgo`, `hlriscv`, `hls-ctime`, `hls-det`, `hls-fuzz`, `hls-lts`, `hls-mem`, `hls-perf`, `hls-pkg`, `hls-rc`, `hls-repro`, `hls-rss`, `hls-rt`, `hls-sbom`, `hls-sign`, `hls-size`, `hls-snap`, `hls-spec-check`, `hls-tlog`, `hls-xdiff`, `hltest`, `ll_validate`

15 rows, each with an enforcement mechanism, an anchor in the source tree and negative probes that must fail as expected:

`G-MEM-01`, `G-MEM-02`, `G-TYPE-01`, `G-ARITH-01`, `G-EFF-01`, `G-TAINT-01`, `G-CONC-01`, `G-MATCH-01`, `G-CAP-01`, `G-SBX-01`, `G-CT-01`, `G-FFI-01`, `G-SPEC-01`, `G-DET-01`, `G-CORPUS-01`
Field Value
Version {bootstrap.version}
Lines 43,610
Bytes 3,075,424
SHA-256 {bootstrap.sha256}
Closure digest {bootstrap.closureDigest}
Closure files 20