Lowent Manual

Lowent Manual

Systems Programming with Contracts and Effects

draft

v0.2.0 · last updated 2026-09-15

rubidus

An introduction to the Lowent language, and its user manual.

Written for readers who have programmed a little,
up to those who already use a systems language such as C or Rust.

This edition is a draft. For the paginated index and exact typesetting, see the PDF.
If anything in the book leaves you wondering, please ask on the Q&A board. I answer as time allows and as far as I know the answer. Korean or English, either is fine. For typos and mistakes, an issue is the better place.

Contents

Part I — Getting started

Part II — Values and flow

Part III — Data

Part IV — Contracts and effects

Part V — Memory

Part VI — Abstraction

Part VII — Concurrency

Part VIII — The outside world

Part IX — The standard library

Part X — Grounds: what has been proven

Front and back matter

Appendix A — Words and builtinsAppendix B — Diagnostics indexAppendix C — Common mistakes and how to fix themAppendix D — Grammar summaryAppendix E — Standard library modulesstrings — string view operationsstrbuf — owned string buffer and null-terminated cstrfmt — formatting assembled into the caller’s bufferutf8 — UTF-8 code point iteration and validationutf16 — UTF-16 surrogate arithmeticunicode — Unicode property tablescodec — hex and base64regex — Pike VM regular expressions without backtrackingterm — terminal renderer (the pure half)sortlib — in-place quicksortsortgen — generic sorting (the type brings the comparison)searchlib — binary search on sorted sliceshashmap — u64 → u64 hash mapstrmap — string-keyed hash mapvecs — growable byte vectors with caller-held buffersspsc — lock-free SPSC ring bufferhash — hashing (hash map slots · corruption detection · SHA-256)math — floating-point mathsrandom — random numbers (reproducible sequences · OS entropy)hmac — HMAC-SHA256 and HKDFchacha — ChaCha20 stream cipherpoly — Poly1305 one-time authenticatoraead — ChaCha20-Poly1305 seal and openx25519 — key agreement on a curveaes — the AES-128 block ciphergcm — AES-128-GCM authenticated encryptioncrypto_hw — arithmetic the machine helps withbigint — big-number modular arithmeticrsa — RSASSA-PSS verificationp256 — the NIST P-256 curve and ECDSA verificationp384 — the NIST P-384 curve and ECDSA verificationecdsa — ECDSA P-256 signinged25519 — Ed25519 signature verificationder — minimal DER parserpem — unwrapping PEM envelopesx509 — reading X.509 certificatesverify — certificate signatures and one link of a chaintls13 — the computational parts of TLS 1.3tlssrv — the TLS 1.3 server handshaketlscli — the TLS 1.3 client handshakehttp — HTTP/1.1 request parsersoa — an SoA layout trial: one array per fieldallocs — allocator traits, bumps and default allocatorspool — generational-handle block poolshard — access units that split a storebudget — handle bit budgets and generation wraparoundwire — dividing one word into fieldsflags — named on/off settings in one wordsegarena — fixed-size segment arenapagecache — page ids and pinning cursorsgrowvec — self-growing byte vectorvecgen — generic self-growing vector vec t amapgen — generic hash map table k vnodelist — fixed intrusive listssegview — cursors, total length and coalescing for segment viewslifemode · lifeatom — when a value endsio — stream reading over slicesoutbuf — buffered output where forgetting to flush is a compile errorfiles — file and directory streams where forgetting to close is a compile errortty — terminal inputnet — sockets (TCP loopback · in-process pairs)clock — time and deadlinestrust — finding a trusted root in the trust storeIndex

Copyright and contact

author
rubidus
contact
rubidus@gmail.com
repository
github.com/rubidus-api/lowent_lang
edition
v0.2.0 — draft
last updated
2026-09-15

The text — Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). You may share and adapt it freely with attribution; commercial use is not permitted, and adaptations must carry the same licence.
creativecommons.org/licenses/by-nc-sa/4.0/

The example code — MIT licence. Take it and use it. The Lowent compiler and standard library used by the examples follow the repository's MIT licence.

Every code demonstration in this book is output actually obtained by checking and running it with lowentc. The typesetting is done with Typst.

This book keeps being revised. What you are reading is the edition numbered above; corrections and additions follow it. Reports and suggestions are taken at the repository.