58个版本

0.5.7 2024年8月24日
0.5.1 2024年7月15日
0.3.23 2024年3月31日
0.2.1 2023年12月3日
0.2.0 2023年10月17日

内存管理 中排名 200

Download history 305/week @ 2024-05-03 605/week @ 2024-05-10 668/week @ 2024-05-17 345/week @ 2024-05-24 385/week @ 2024-05-31 389/week @ 2024-06-07 282/week @ 2024-06-14 138/week @ 2024-06-21 21/week @ 2024-06-28 27/week @ 2024-07-05 615/week @ 2024-07-12 275/week @ 2024-07-19 632/week @ 2024-07-26 269/week @ 2024-08-02 647/week @ 2024-08-09 999/week @ 2024-08-16

每月下载量 2,583
用于 17 crate(直接使用9个)

自定义许可

96KB
2.5K SLoC

Stak Scheme

GitHub Action Crate Codecov License

在Rust中实现的无需std和无需alloc的Scheme

文档在此处:https://raviqqe.github.io/stak.

许可

MIT


lib.rs:

虚拟机及其运行时值。

示例

use stak_device::FixedBufferDevice;
use stak_file::VoidFileSystem;
use stak_macro::compile_r7rs;
use stak_primitive::SmallPrimitiveSet;
use stak_process_context::VoidProcessContext;
use stak_vm::Vm;

const HEAP_SIZE: usize = 1 << 16;
const BUFFER_SIZE: usize = 1 << 10;

let mut heap = [Default::default(); HEAP_SIZE];
let device = FixedBufferDevice::<BUFFER_SIZE, 0>::new(&[]);
let mut vm = Vm::new(
    &mut heap,
    SmallPrimitiveSet::new(
        device,
        VoidFileSystem::new(),
        VoidProcessContext::new(),
    ),
).unwrap();

const PROGRAM: &[u8] = compile_r7rs!(r#"
    (import (scheme write))

    (display "Hello, world!")
"#);

vm.initialize(PROGRAM.iter().copied()).unwrap();
vm.run().unwrap();

assert_eq!(vm.primitive_set().device().output(), b"Hello, world!");

依赖项