1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//! A virtual machine and its runtime values.
//!
//! # Examples
//!
//! ```rust
//! use stak_device::FixedBufferDevice;
//! use stak_file::VoidFileSystem;
//! use stak_macro::compile_r7rs;
//! use stak_process_context::VoidProcessContext;
//! use stak_r7rs::SmallPrimitiveSet;
//! use stak_time::VoidClock;
//! use stak_vm::Vm;
//!
//! const HEAP_SIZE: usize = 1 << 16;
//! const BUFFER_SIZE: usize = 1 << 10;
//!
//! let device = FixedBufferDevice::<BUFFER_SIZE, 0>::new(&[]);
//! let mut vm = Vm::new(
//! [Default::default(); HEAP_SIZE],
//! SmallPrimitiveSet::new(
//! device,
//! VoidFileSystem::new(),
//! VoidProcessContext::new(),
//! VoidClock::new(),
//! ),
//! )
//! .unwrap();
//!
//! const BYTECODE: &[u8] = compile_r7rs!(
//! r#"
//! (import (scheme write))
//!
//! (display "Hello, world!")
//! "#
//! );
//!
//! vm.run(BYTECODE.iter().copied()).unwrap();
//!
//! assert_eq!(vm.primitive_set().device().output(), b"Hello, world!");
//! ```
extern crate alloc;
extern crate std;
pub use ;
pub use Error;
pub use Exception;
pub use Heap;
pub use Memory;
pub use Number;
pub use PrimitiveSet;
pub use Profiler;
pub use StackSlot;
pub use r#typeType;
pub use Value;
pub use Vm;