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
每月下载量 2,583
用于 17 个 crate(直接使用9个)
96KB
2.5K SLoC
Stak Scheme
在Rust中实现的无需std和无需alloc的Scheme
文档在此处:https://raviqqe.github.io/stak.
许可
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!");