Axiom · black
Стандартні модулі
У цій документації стандартна бібліотека розглядається як FALL-подібний набір малих модулів із детермінованими API.
Stdlib Axiom не повинна бути монолітною «магічною runtime». Модуль має явно показувати, чи він pure, чи потребує OS capability, чи працює з caller-provided storage.
| Модуль | Для чого | Принцип |
|---|---|---|
core | базові типи, result, option, view | без OS |
text | UTF, parsing, formatting | two-pass для output |
math | арифметика, geometry | детерміновані operations |
math.bit | bit operations, CRC, target ops | unsupported capability = compile error |
io | stream abstractions | через Self Type |
fs | files/path | OS capability |
net | socket/address/protocol | async/resumable operations |
time | monotonic/wall clock | явне джерело часу |
sync | atomic/mutex/channel/task | semantic happens-before |
mem | bundle/two-pass/regions | без general heap |
target | target capabilities | compile-time information |
hardware | MMIO/GPIO/SPI/I²C | привілейований boundary |
Bit operations — не оператори
Target-aware stdlibAxiom
1import math.bit23crc_packet(view<const u8> data) -> u32:4 RETURN math.bit.crc32(data)1
Bit API імпортується явно.
3
Звичайна функція.
4
Якщо target не має required CRC capability і API позначене hardware-only, compiler видає target capability error замість тихої емуляції.
Форматування без hidden allocation
Deterministic text outputAxiom
1make_log(u64 id, text state) -> two_pass<text>:2 RETURN text.format("job {}: {}", id, state)1
Результат форматування — планована операція.
2
Caller може запитати size, дати buffer і тільки тоді виконати formatting.