
검증 가능한 정확성, 결정론적 동작, 그리고 성능을 우선시하는 시스템 프로그래밍 언어
범용 시스템 언어 및 프로덕션 툴체인으로, 기본적으로 메모리 안전한 안전 언어 표면, 검증 가능한 정확성, 결정적 실행, 그리고 재생 우선 디버깅이 내장되어 있습니다.
fzy는 컴파일러 워크플로와 결정적 검증을 위한 단일 프로덕션 CLI인 fz를 제공합니다. 정확성, 결정성, 재생, 인시던트 아티팩트, 프로덕션 증거는 사후 고려사항이 아닌 정상 워크플로의 일부입니다. 언어에 대한 빠른 시각적 둘러보기를 원하시면 open fzl-showcase.html을 사용하여 브라우저에서 제공된 FZL 쇼케이스를 열어보세요. 이 언어를 선택해야 하는 간략한 이유는 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
가장 빠른 개요를 원하시나요? open fzl-showcase.html로 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 쇼케이스를 사용하세요.
프레임워크 패키지는 일반 패키지 규칙을 따릅니다. fozzy.toml의 [deps]에 선언하고, 소스에서 use fzbounds;, use fzweb; 등과 같은 패키지 이름으로 가져옵니다. fz check src/services/mod.fzy --json과 같은 직접 소스 검사는 이제 소유 패키지 컨텍스트를 통해 검증되므로, 의존성 가져오기 및 형제 모듈은 전체 프로젝트 검사와 동일하게 동작합니다.
fz: 빌드, 실행, 테스트, 검증, 문서, IR, RPC, 헤더, ABI 검사 등을 위한 컴파일러 CLIfz fmt, fz doc gencrates/parser, crates/ast, crates/hir, crates/fircrates/verifiercrates/runtimecrates/drivertests/*.fozzy.json현재 구현 및 검증 완료:
alloc(...) / free(...)를 통한 선택적 수동 메모리 관리 지원unsafe { ... } 섬 전반에 걸친 실제 런타임 defer 의미론으로, 결정적 정리가 문서화에 그치지 않고 강제됨alloc(...) / free(...) 흐름 및 검증기 가시적 수명 주기 검사 제공fifo, random, coverage_guidedrpc_send, rpc_recv, rpc_deadline, rpc_canceltest 블록에서 언어 네이티브 시나리오 생성mod 선언에서 재귀적 다중 파일 모듈 로딩pubext c fn 시그니처로부터 C 헤더 생성fz rpc gen을 통한 RPC 스키마, 클라이언트 및 서버 스텁 생성core.crypto 및 core.security를 통한 프로덕션 암호화/보안 표면 (보안 난수, 해싱, HMAC, 상수 시간 비교, URL 안전 인코딩 포함)fzweb 프로덕션 웹 프레임워크 모듈 (앱 라우팅, 쿠키, 세션, 멀티파트 업로드, 지속성, SSE, 웹소켓, OpenAPI 내보내기)fz run은 라이브 텍스트 스트리밍 또는 JSON 캡처와 함께 네이티브 출력을 직접 실행python3 scripts/direct_memory_architecture_gate.pypython3 scripts/direct_memory_perf_gate.pycore.gpu를 통한 프로덕션 GPU 표면 (Apple에서 라이브 Metal 실행 및 공유 spirv/nvptx 어댑터 계약)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
# 현재 디렉토리 또는 대상 경로에 프로젝트 스캐폴드
fz init [path] [--name package] [--template minimal|rust|ts] [--with run,fuzz,explore,memory,host|all] [--force]
# 소스/프로젝트 빌드
fz build [path] [--release] [--lib] [--threads N] [--backend llvm|cranelift] [--pgo-generate|--pgo-use file] [-l lib] [-L path] [-framework name] [--json]
# 소스/프로젝트 또는 .fozzy 시나리오 실행
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]
# 소스/프로젝트 또는 .fozzy 시나리오 테스트
fz test [path] [--det] [--strict-verify] [--sched fifo|random|coverage_guided] [--seed N] [--record path] [--backend llvm|cranelift] [--filter substring] [--json]
# 검증/확인/문서/도구
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 / 문서 출력물
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/HTTP 작업 전에 한 번 로드됩니다.log.set_json(1)을 통해 옵트인됩니다.core.process, core.term, core.thread, core.log, core.text, core.io, core.path, core.util이 포함됩니다.core.crypto 및 core.security는 보안 난수, 다이제스트, HMAC, URL 안전 인코딩, 상수 시간 비교를 포함하여 프로덕션 인증/세션 흐름을 지원합니다.fzweb은 관심사별로 그룹화된 프레임워크 모듈과 헬스, 준비 상태, 메트릭, 검사, 검색, 쿠키, 세션, 업로드, 이벤트, 웹소켓, 항목 CRUD, OpenAPI, 정적 자산을 위한 내장 라우트를 제공합니다.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] --json으로 잠금 상태를 새로 고칩니다.fozzy.lock 및 vendor/fozzy-vendor.json이 포함됩니다.docs/dependency-locking-v1.mdfz abi-check는 다음을 강제합니다:
추가 내보내기는 허용됩니다.
docs/c-interop-production-v1.mdpubext c fn에는 #[ffi_panic(abort|error)]가 필요합니다.ext unsafe c fn을 선호하고, 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.html을 생성합니다.reason, invariant, owner, scope, risk_class, proof_ref와 같은 메타데이터 필드는 컴파일러 생성 및 정책 기반입니다.fozzy.toml에 있습니다.엄격한 신뢰를 위해 다음 시퀀스를 사용하세요:
# 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.md