Привет, мир и первый пакет
Один файл#
Программа на OxL — один файл .oxl или пакет. Файл с функцией main запускается напрямую:
// hello.oxl
fn main() io { // io — эффект: функция пишет в stdout
let name = env("OXL_DEMO_NAME") ?? "мир" // env возвращает str?; ?? подставляет значение при none
print("Привет, {name}!") // {name} — интерполяция строки
}Вывод
Привет, мир!
oxl run hello.oxl # собрать и запустить
oxl check hello.oxl # только проверить типы и эффекты, без кодогенерации
oxl fmt hello.oxl # привести к каноническому виду (oxl fmt --check — только проверить)Всё, что делает функцию «нечистой», видно в её сигнатуре: io, net, time, db, fs… Функция без эффектов помечается
pure. Компилятор не даст вызвать io-функцию из pure (§6.2, диагностика effects).
Пакет#
oxl new hello # шаблон cli; --template lib | service
cd hello
oxl run # собрать и запустить src/main.oxl
oxl test # тесты из test-объявленийoxl new создаёт каталог с двумя файлами:
# oxl.toml
[package]
name = "hello"
version = "0.1.0"
edition = "2027"и src/main.oxl — корневой модуль пакета; main в нём — точка входа (§2.4). Остальные модули — файлы в src/;
use подключает их и модули стандартной библиотеки (use std.io { File }). Манифест подробно — формат oxl.toml.
Тесты живут рядом с кодом:
fn add(a: i32, b: i32) -> i32 pure => a + b
test "add sums two numbers" {
assert add(2, 3) == 5
assert_eq(add(-2, 2), 0)
}oxl test запускает все test-объявления пакета; вид теста (unit, integ, sim) и фильтры — в руководстве по тестам.
Дальше#
- Тур по языку: типы, ошибки, конкурентность, сервисы, акторы, саги, хранилище, кластер, тесты, развёртывание.
- Примеры: полные проекты, которые можно скачать и запустить.
- Настройка редактора: подсветка, подсказки, отладчик.