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.
The nine effects
Section titled “The nine effects”| Effect | Builtins | In the uses IO blanket? |
|---|
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`The four backends
Section titled “The four backends”| 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 |
The standard library
Section titled “The standard library”64 modules in std/ and 18 in core/ —
82 in total.
The toolchain
Section titled “The toolchain”30 native tools in tools/, plus the language server, debug
adapter and REPL:
The soundness ledger
Section titled “The soundness ledger”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`The bootstrap snapshot
Section titled “The bootstrap snapshot”| Field | Value |
|---|---|
| Version | {bootstrap.version} |
| Lines | 43,610 |
| Bytes | 3,075,424 |
| SHA-256 | {bootstrap.sha256} |
| Closure digest | {bootstrap.closureDigest} |
| Closure files | 20 |