← На главную

Код на F* работает в Firefox, Linux kernel, Azure и Wireguard

02.08.2026 12:31 · hackernews

F — язык программирования, заточенный под доказательство свойств программ. Он соединяет выразительность зависимых типов с автоматизацией доказательств через SMT-решатели и интерактивное доказательство теорем. По умолчанию код на F компилируется в OCaml. Отдельные фрагменты можно извлекать в F#, C или Wasm с помощью утилиты KaRaMeL, а также в ассемблер через инструментарий Vale. Сам F написан на F и загружается через OCaml.

Исходники лежат на GitHub. Разработкой занимаются Microsoft Research, Inria и сообщество. Язык распространяется под лицензией Apache 2.0. Готовые бинарники для Windows, Linux и Mac OS X регулярно появляются на GitHub. Поставить F* можно через OPAM, Docker, Nix или собрать из исходников.

Для обучения есть онлайн-книга Proof-oriented Programming In F. Отдельный учебник рассказывает про Low — низкоуровневое подмножество F*, которое KaRaMeL компилирует в C.

На F построено несколько крупных проектов. Project Everest развивает высоконадёжное защищённое сетевое ПО. Библиотека HACL даёт верифицированные криптографические примитивы на C. ValeCrypt добавляет формально доказанные ассемблерные реализации через фреймворк Vale. EverCrypt объединяет их в единый криптопровайдер. Код из этих проектов работает в Mozilla Firefox, Linux kernel, Python, mbedTLS, блокчейне Tezos, SDK для электронного голосования ElectionGuard и в Wireguard.

Ещё один инструмент — EverParse, генератор парсеров бинарных форматов. Сгенерированные им парсеры применяются в Windows Hyper-V: каждый сетевой пакет, проходящий через Azure, проверяется кодом EverParse. EverParse также используется в ebpf-for-windows.

Вокруг F много исследований. В основе системы эффектов лежит Dijkstra monad. На ней построена логика разделения SteelCore, а затем DSL Steel для верификации конкурентного кода. Для анализа безопасности криптопротоколов есть фреймворк DY. Среди заметных результатов — реализация TLS 1.3 record layer, библиотека Noise для защищённых каналов, TreeSync для MLS, а также Bert13 — реализация TLS-1.3 на Rust с постквантовой криптографией, доказанная с использованием F. Есть верифицированный аллокатор памяти StarMalloc и компилятор Catala для юридических текстов.

Читать оригинал →