Rustとの相互運用性
- RustからSchemeのコードを呼び出し
- 標準ライブラリが無い環境でも動く (e.g. ブラウザ上、組み込み)
const HEAP_SIZE: usize = 1 << 16;
const BUFFER_SIZE: usize = 1 << 10;
let mut heap = [Default::default(); HEAP_SIZE];
let device = stak_device::FixedBufferDevice::<BUFFER_SIZE, 0>::new(&[]);
let mut vm = stak_vm::Vm::new(&mut heap, stak_primitive::SmallPrimitiveSet::new(device)).unwrap();
const PROGRAM: &[u8] = stak_macro::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!");