
язык системного программирования, отдающий приоритет проверяемой корректности, детерминизму и производительности
Универсальный системный язык и производственный инструментарий с безопасной по умолчанию поверхностью безопасного языка, проверяемой корректностью, детерминированным выполнением и встроенной отладкой на основе воспроизведения первого шага.
fzy поставляет один производственный CLI, fz, как для рабочих процессов компилятора, так и для детерминированной валидации. Корректность, детерминизм, воспроизведение, артефакты инцидентов и производственные доказательства являются частью обычного рабочего процесса, а не второстепенной мыслью. Для быстрого визуального обзора языка откройте прилагаемый FZL showcase в браузере с помощью open fzl-showcase.html. Краткое обоснование, почему вы можете выбрать его, см. в WHYFZY.md.
Политика архитектуры репозитория типизирована внутри и JSON только на реальных границах.
INSTALL.mdUSAGE.mdWHYFZY.mdCODE.mddocs/production-workflow-v1.mddocs/gpu-v1.mddocs/system-safety-trust-model-v1.mddocs/unsafe-contract-authoring-v1.mddocs/language-stability-v1.mddocs/workspace-policy-v1.mddocs/operational-insights-v1.mdfzyllm: saint0x/fzyllmРекомендуемая установка:
curl -fsSL https://raw.githubusercontent.com/saint0x/fzy/main/install.sh | sh
Это устанавливает fz в ~/.local/bin, обновляет PATH при необходимости и проверяет установку с помощью fz version и fz env.
Запасной вариант из исходников:
curl -fsSL https://raw.githubusercontent.com/saint0x/fzy/main/install.sh | sh -s -- --from-source
Хотите самый быстрый обзор? Откройте fzl-showcase.html с помощью open fzl-showcase.html, просмотрите WHYFZY.md для аргументации продукта, затем используйте пример ниже как компактный исполняемый набросок.
use core.log;
use core.path;
use core.process;
use core.time;
enum Mode {
Fast,
Safe,
}
trait Scorer {
fn score(endpoint: Url) -> i32;
}
struct HttpScorer {}
impl Scorer for HttpScorer {
fn score(endpoint: Url) -> i32 {
discard endpoint;
return 7;
}
}
struct Config<TEndpoint> {
retries: i32,
endpoint: TEndpoint,
mode: Mode,
}
fn weight(mode: Mode) -> i32 {
match mode {
Mode::Fast => return 3,
Mode::Safe => return 1,
_ => return 1,
}
}
async fn boost(v: i32) -> i32 {
checkpoint()
return v + 1
}
fn normalize<T: Scorer>(cfg: Config<Url>) -> i32 {
return weight(cfg.mode) + T.score(cfg.endpoint)
}
async fn run_once(cfg: Config<Url>) -> i32 {
let base = normalize<HttpScorer>(cfg)
return await boost(base)
}
fn main() -> i32 {
let cfg = Config { retries: 4, endpoint: url.parse("https://example.test"), mode: Mode::Fast }
let now = time.now()
let out_path = path.join("tmp", "score.log")
let mode = process.argv_or(1, "showcase")
let score = normalize<HttpScorer>(cfg)
log.info("snippet.run", out_path)
discard mode
discard run_once
if score + now > 0 then return score
return score
}
Для более широкого охвата языка используйте CODE.md, examples/ и удобный для браузера FZL showcase.
Пакеты фреймворков следуют обычным правилам для пакетов: объявите их в fozzy.toml в разделе [deps], затем импортируйте их в исходном коде с помощью use fzbounds;, use fzweb; и аналогичных имен пакетов. Прямые проверки исходного кода, такие как fz check src/services/mod.fzy --json, теперь выполняются в контексте владеющего пакета, поэтому импорт зависимостей и модули-соседи ведут себя так же, как и в полных проверках проекта.
fz: CLI компилятора для сборки, запуска, тестирования, проверки, документации, IR, RPC, заголовков, проверок ABI и многого другогоfz fmt, fz doc gencrates/parser, crates/ast, crates/hir, crates/fircrates/verifiercrates/runtimecrates/drivertests/*.fozzy.jsonРеализовано и подтверждено на сегодня:
alloc(...) / free(...)defer времени выполнения как в обычном коде, так и в островках unsafe { ... }, поэтому детерминированная очистка обеспечивается принудительно, а не просто документируетсяalloc(...) / free(...) и проверками жизненного цикла, видимыми верификаторуfifo, random, coverage_guidedrpc_send, , , fzy настроен на поддержку следующих производственных утверждений сегодня:
alloc(...) / free(...) остаются в безопасном коде, когда компилятор все еще может проверить владение, происхождение и выполнение очисткиfzweb плюс примитивы безопасности, которые поддерживают потоки сессий/куки/аутентификации в рамках поддерживаемой поверхности среды выполненияСм. также:
docs/system-safety-trust-model-v1.mddocs/production-memory-model-v1.mddocs/production-workflow-v1.mdcargo check --workspace
cargo test --workspace
# Scaffold a project in the current directory or a target path
fz init [path] [--name package] [--template minimal|rust|ts] [--with run,fuzz,explore,memory,host|all] [--force]
# Build source/project
fz build [path] [--release] [--lib] [--threads N] [--backend llvm|cranelift] [--pgo-generate|--pgo-use file] [-l lib] [-L path] [-framework name] [--json]
# Run source/project or .fozzy scenario
fz run [path] [--det] [--strict-verify] [--seed N] [--record path] [--host-backends] [--backend llvm|cranelift] [--max-seconds N] [--exit-on-healthcheck URL] [--smoke-http URL] [-- <args>] [--json]
# Test source/project or .fozzy scenario
fz test [path] [--det] [--strict-verify] [--sched fifo|random|coverage_guided] [--seed N] [--record path] [--backend llvm|cranelift] [--filter substring] [--json]
# Verify/check/docs/tooling
fz fmt [path ...] [--check] [--json]
fz check [path] [--json]
fz verify [path] [--json]
fz lint [path] [--tier production|pedantic|compat] [--json]
fz dx-check [project] [--strict] [--json]
fz spec-check [--json]
fz emit-ir [path] [--json]
fz perf [--artifact artifacts/bench_core_rust_vs_fzy.json] [--json]
fz stability-dashboard [--json]
fz parity [path] [--seed N] [--json]
fz audit unsafe [path] [--workspace] [--json]
fz vendor [project] [--json]
fz abi-check <current.abi.json> --baseline <baseline.abi.json> [--json]
fz debug-check [path] [--json]
fz pgo merge [path] [--out file] [--json]
fz lsp diagnostics [path] [--json]
fz lsp definition <path> <symbol> [--json]
fz lsp hover <path> <symbol> [--json]
fz lsp rename <path> <from> <to> [--json]
fz lsp smoke [path] [--json]
fz lsp serve [--path <workspace>] [--json]
fz map suites [--root dir] [--scenario-root dir] [--profile pedantic|production|compat] [--json]
fz artifacts ls latest [--json]
fz report show latest [--format json|text] [--json]
fz usage [--json]
fz env [--json]
fz version [--json]
fz inspect stdlib <module> [--json]
fz schema [--json]
fz validate <scenario> [--json]
fz trace verify <trace> [--strict] [--json]
fz replay <trace> [--json]
fz shrink <trace> [--json]
fz ci <trace> [--json]
fz trace-native <trace.fozzy> [--out path] [--json]
# FFI / RPC / docs outputs
fz headers [path] [--out path] [--json]
fz rpc gen [path] [--out-dir dir] [--json]
fz doc gen [path] [--format json|html|markdown] [--out path] [--reference path] [--json]
Интеграция с VS Code находится в tooling/vscode и нацелена на fz lsp serve.
Поведение по умолчанию и отображаемое поведение среды выполнения:
127.0.0.18787listen.env или FZ_DOTENV_PATH загружается один раз перед операциями env/HTTPlog.set_json(1)core.process, core.term, core.thread, core.log, core.text, core.io, core.path и core.utilС помощью fz test <file.fzy> --det --record artifacts/name.trace.json --json драйвер выдает:
*.trace.json: трасса детерминированного выполнения*.timeline.json: решения планировщика*.report.json: сводка, выводы и группировка сбоев*.explore.json: кандидаты расписания и приоритеты сценариев*.shrink.json: детерминированные подсказки для сжатия*.scenarios/ и *.scenarios.json: сгенерированные сценарии на родном языке*.manifest.json: карта артефактов, включая основной путь сценарияКаноническое разделение авторства:
core.process, core.term, core.text: argv и терминальный UXcore.log: политика логирования и структурированный выводcore.io, core.path: обнаружение файловой системы и сборка путейproc.*: выполнение дочерних процессовПример:
use core.log;
use core.process;
use core.term;
use core.text;
fn main() -> i32 {
let mode = process.argv_or(1, "serve")
discard log.set_sink_name("stderr")
discard log.set_level_name("warn")
discard term.transcript_kv("mode", mode, 8)
if term.is_interactive() == 1 {
discard term.eprint_line(str.concat("interactive=", str.from_i32(term.is_interactive())))
}
discard term.print_line(text.indent("ready\nwaiting", " "))
return 0
}
EOF явный:
term.read_line() == "" и term.stdin_eof() == 0term.read_line() == "" и term.stdin_eof() == 1Для серьезной работы с CLI/средой выполнения используйте как встроенный в компилятор лаунчер, так и собранный бинарник, когда важно точное поведение терминала.
cranelift и llvm--backend, затем FZ_NATIVE_BACKEND, затем профиль по умолчаниюdev -> cranelift, release -> llvmfozzy.lock для путей зависимостейfz vendor [project] --jsonfozzy.lock и vendor/fozzy-vendor.jsondocs/dependency-locking-v1.mdfz abi-check обеспечивает:
Добавочные экспорты разрешены.
docs/c-interop-production-v1.mdpubext c fn требует #[ffi_panic(abort|error)]ext unsafe c fn для небезопасных импортов C и вызывайте их только внутри unsafe { ... }fz build --lib выдает статические/разделяемые библиотеки плюс устанавливаемый заголовок и манифест ABI
--backend llvm отклоняется с подсказкой по миграцииunsafe fn и unsafe { ... }fz audit unsafe --workspace --json выдает .fz/unsafe-map.workspace.json, .fz/unsafe-docs.workspace.json, .fz/unsafe-docs.workspace.md и .fz/unsafe-docs.workspace.htmlreason, invariant, owner, scope, risk_class и proof_ref, генерируются компилятором и определяются политикойИспользуйте эту последовательность для строгой уверенности:
# 1) Сначала аудит детерминизма
fz doctor --deep --scenario tests/run.pass.fozzy.json --runs 5 --seed 42 --json
# 2) Строгие детерминированные тесты
fz test --det --strict-verify tests/run.pass.fozzy.json tests/memory.pass.fozzy.json --json
# 3) Записать одну реальную трассу
fz run tests/run.pass.fozzy.json --det --record artifacts/trace.fozzy --json
# 4) Проверить конвейер воспроизведения
fz trace verify artifacts/trace.fozzy --strict --json
fz replay artifacts/trace.fozzy --json
fz ci artifacts/trace.fozzy --json
# 5) Проход доверия с поддержкой хоста
fz run tests/host.pass.fozzy.json --host-backends --json
Строгий шлюз релиза:
./scripts/ship_release_gate.sh
Это включает проверки целостности утверждений документации, блокирующие релиз, через scripts/safety_claim_integrity_gate.py.
cat >/tmp/demo.fzy <<'FZY'
test "alpha" {}
test "beta" nondet {}
rpc Ping(req: PingReq) -> PingRes;
async fn worker() -> i32 {}
fn main() -> i32 {
timeout(1)
return 0
}
FZY
fz test /tmp/demo.fzy --det --sched random --seed 13 --record artifacts/demo.trace.json --json
Проверьте выданные артефакты нативного теста напрямую:
artifacts/demo.trace.native.trace.jsonartifacts/demo.trace.report.jsonartifacts/demo.trace.timeline.json если включены расширенные артефактыartifacts/demo.trace.manifest.jsonМанифесты нативных тестов являются первоклассными входными данными trace verify / replay / ci для записанных запусков нативных тестов. Они не являются входными данными сценариев и не участвуют в shrink сценариев.
Все поставляемые примеры следуют соглашению v1 повествовательного DX:
src/main.fzy предназначен только для оркестрации и размещает fn main последнимsrc/tests/*mod.fzyДоступные проекты:
examples/agent_runtimeexamples/context_runtimeexamples/minimal_runtimeexamples/service_appexamples/fullstackexamples/robust_cliexamples/live_serverВалидация и потоки проекта:
fz dx-check examples/fullstack --strict --json
fz check examples/fullstack --json
fz build examples/fullstack --backend cranelift --json
fz build examples/fullstack --release --backend llvm --json
fz run examples/fullstack --backend cranelift --json
fz test examples/fullstack --det --seed 41 --backend llvm --json
fz headers examples/fullstack --json
fz abi-check examples/fullstack/include/fullstack.abi.json --baseline examples/fullstack/include/fullstack.abi.json --json
fz dx-check examples/robust_cli --strict --json
fz build examples/robust_cli --backend cranelift --json
fz run examples/robust_cli --backend llvm --json
fz test examples/robust_cli --det --seed 55 --backend cranelift --json
fz dx-check examples/live_server --strict --json
fz build examples/live_server --backend cranelift --json
fz run examples/live_server --backend llvm --json
fz test examples/live_server --det --seed 77 --backend cranelift --record artifacts/live_server.stats.trace.json --rich-artifacts --json
fz run tests/live.server.interhttp.fozzy.json --host-backends --json
Если вы вносите вклад из репозитория, а не устанавливаете релизную сборку, используйте cargo run -q -p fz -- <args> в качестве запасного варианта только из исходников.
Поддерживайте эти версионные документы доставки в актуальном состоянии во время реализации:
PLAN.mdFEATURES-TO-SHIP.mdrpc_recvrpc_deadlinerpc_canceltestmodpubext c fnfz rpc gencore.crypto и core.security, включая безопасный случайный, хеширование, HMAC, сравнение за постоянное время и URL-безопасные кодировкиfzweb для маршрутизации приложений, куки, сессий, многокомпонентных загрузок, персистентности, SSE, веб-сокетов и экспорта OpenAPIfz run выполняет нативный вывод напрямую с живой потоковой передачей текста или захватом JSONpython3 scripts/direct_memory_architecture_gate.pypython3 scripts/direct_memory_perf_gate.pycore.gpu, с живым выполнением Metal на Apple плюс общие контракты адаптеров spirv/nvptxcore.crypto и core.security охватывают безопасный случайный, дайджесты, HMAC, URL-безопасные кодировки и сравнения за постоянное время для производственных потоков аутентификации/сессийfzweb поставляет модули фреймворка, сгруппированные по задачам, плюс встроенные маршруты для health, readiness, metrics, inspect, search, cookies, sessions, uploads, events, websockets, CRUD элементов, OpenAPI и статических ресурсовfozzy.toml