Техническая дорожная карта Rul (.rl) — от движка v0.4 к системному языку v1.0
Дорожная карта из 4 этапов по расширению Rul (.rl) от 29-опкодного колоночного движка (v0.4) до системного языка общего назначения, заменяющего Rust и Go для ИИ-разработки (v1.0).
Почему мы начали с конвейеров данных (v0.1 – v0.4)
Чтобы доказать работоспособность 16-байтного бинарного формата инструкций на реальном кремнии до добавления конструкций общего назначения, в версиях v0.1–v0.4 мы сосредоточились на обработке массивов и векторов (29 опкодов) — подтвердив верификацию O(N) за ~5.78 нс/узел, компиляцию автономного ELF64 за ~6.4 мкс и пропускную способность 51.53 ГБ/с.
Четыре этапа к системному языку общего назначения v1.0
Колоночное ядро SSA-DAG (29 опкодов), трассировщик «белого ящика» и компилятор AVX2 ELF64 AOT
На реальном оборудовании доказана эффективность 16-байтного формата инструкций, однопроходного верификатора O(N) (~5.8 нс/узел), 3-уровневого движка, сервера rul-mcp и компилятора Linux ELF64 без LLVM (~6.4 мкс).
- 01. 64-байтный RulHeader, 16-байтный ArenaDescriptor, 16-байтный ProofEntry и 16-байтный NodeFrame для 29 опкодов.
- 02. Обратимый без потерь ассемблер .rls <-> .rl, автономный CLI rul, пакет rul-bench и сервер rul-mcp из 6 инструментов.
- 03. Линейный распределитель регистров YMM (ymm2..ymm13), достигающий 51.53 ГБ/с (в 4.72 раза быстрее C) на массивах 80 МБ.
Поток управления общего назначения, функции и составные типы данных
Расширение 16-байтного набора инструкций за пределы числовых массивов: скаляры, структуры, перечисления, строки UTF-8, хэш-таблицы, ветвления и циклы с доказательством завершения.
- 01. Поддержка первого класса для i64, i32, u8, f32, структур с фиксированной разметкой, алгебраических объединений, строк UTF-8 и хэш-таблиц в аренах.
- 02. SelectBranch: условное ветвление, требующее слияния обеих ветвей в идентичном состоянии версий памяти (проверка за O(1)).
- 03. RegionLoop и Call: ограниченные циклы со свидетельствами завершения в ProofEntry и модульные функции, проверяемые без инлайнинга всей программы.
Владение кучей уровня Rust и времена жизни структур за время O(N)
Обобщение 32-битных версий TokenOp и 16-байтных сертификатов ProofEntry с плоских массивов на регионные аллокации в куче и заимствования полей структур.
- 01. Детерминированное выделение и освобождение регионов кучи, привязанное к линейным токенам владения — без GC и без фрагментации malloc/free.
- 02. Сертификаты ProofEntry для независимых мутаций полей структур и времён жизни срезов zero-copy, проверяемые за O(1) на инструкцию.
- 03. Полная защита от use-after-free, double-free и алиасинга без многосекундного решения ограничений Borrow Checker.
Детерминированная конкурентность в стиле Go и системный ввод-вывод под контролем CapabilityMask
Введение легковесных задач, каналов с передачей владения и детализированных битов разрешений в заголовке для системных вызовов файлов, сети и процессов.
- 01. Отправка буфера через типизированный канал выполняет AffineConsume токена отправителя и передаёт владение получателю — исключая гонки данных при загрузке без GC.
- 02. Расширение 64-битной маски RulHeader.capability_mask для контроля чтения/записи файлов, сетевых сокетов, таймеров и подпроцессов.
- 03. Бинарный файл .rl с CAP_NONE (0x0) математически заблокирован от любых сетевых или дисковых вызовов ещё до начала выполнения.
Мультиархитектурные нативные бэкенды (x86_64, ARM64, WASI) и формальные доказательства Kani
Генерация автономных исполняемых файлов для Linux, macOS, Windows и WebAssembly без LLVM, подтверждённая проверкой моделей Kani и набором из 50 тестов соответствия v1.0.
- 01. Прямая генерация машинного кода без LLVM для x86_64 и AArch64 (ARM64) на Linux, macOS и Windows, а также детерминированных модулей WASI.
- 02. Доказательства корректности с помощью Kani model-checking и непрерывный дифференциальный фаззинг декодера, O(N) верификатора и кодогенератора.
- 03. Заморозка бинарной спецификации .rl v1.0 и публикация открытого набора из 50 эталонных программ.
Ключевые инженерные правила (Non-Goals)
Каждое свойство безопасности (типы, владение, границы, завершение циклов, права ввода-вывода) должно проверяться за один прямой проход O(N).
Ноль пауз GC и ноль скрытых фоновых потоков; время жизни памяти отслеживается явно через версионные арены и регионы.
Каждый уровень выполнения (Tier 0, Tier 1, Tier 2 и ELF64 AOT) обязан выдавать идентичный результат или безопасно завершаться с детерминированной ошибкой.