3 releases

Uses new Rust 2024

new 0.1.11 Jun 3, 2026
0.1.1 May 26, 2026
0.1.0 May 25, 2026

#619 in Programming languages

Apache-2.0

155KB
3K SLoC

w16-lib

Библиотека для использования W16.

Как использовать W16

Если вы делаете свой язык, и хотите использовать W16 как runtime — во первых огромное спасибо, за то что выбрали именно w16! Во вторых, инструкция как использовать W16:

  1. Подключите библиотеку:
cargo add w16-lib
  1. Сделайте транслятор вашего языка, в W16 HIR, вы можете транслировать ваш язык в
  • HIR в виде текста.
  • HIR в виде AST.

Либо вы можете транслировать в:

  • W16 MIR.
  • W16 Bytecode.

И в итоге вот как будет выглядеть использование W16(псевдокод):

use w16_lib::{run_hir_text_as, ExecutionMode};

fn main() {
    let source: &str = /* HIR в виде текста */;

    /// Выполнить ваш W16 HIR в виде текста
    let result: Result<RunResult, W16Error> = run_hir_text_as(&source, ExecutionMode::Interpreter /* Либо "ExecutionMode::Jit", если хотите JIT-компилировать*/);
}

Как использовать w16 ( только примеры )

  • Выполнить текстовый HIR
use w16_lib::{run_hir_text_as, ExecutionMode};

fn main() {
    let source: &str = /* HIR в виде текста */;

    /// Выполнить ваш W16 HIR в виде текста
    let result: Result<RunResult, W16Error> = run_hir_text_as(&source, ExecutionMode::Interpreter /* Либо "ExecutionMode::Jit", если хотите JIT-компилировать*/);
}
  • Выполнить HIR в виде Module

Для этого подключите библиотеку w16-ir:

cargo add w16-ir
use w16_lib::{run_hir_text_as, ExecutionMode};
use w16_ir::hir::Module;

fn main() {
    let source: Module = Module { name: /* Название модуля. String */, constants: /* Константы в модуле. Vec<ConstDecl> */, functions: /* Функции в модуле. Vec<Function> */};

    let result: Result<RunResult, W16Error> = W16::new().run_hir_ast(&source);
}

Dependencies

~10–21MB
~278K SLoC