Skip to main content

harn_vm/
stdlib.rs

1//! Standard library builtins for the Harn VM.
2//!
3//! Each category of builtins lives in its own sub-module.
4
5mod concurrency;
6mod crypto;
7mod datetime;
8mod fs;
9mod io;
10mod json;
11mod logging;
12mod math;
13mod process;
14mod regex;
15mod sets;
16mod shapes;
17mod strings;
18mod testing;
19mod tools;
20mod tracing;
21mod types;
22
23use crate::http::register_http_builtins;
24use crate::llm::register_llm_builtins;
25use crate::mcp::register_mcp_builtins;
26use crate::vm::Vm;
27
28// Re-export helpers used by other modules in harn-vm
29pub(crate) use json::json_to_vm_value;
30pub(crate) fn set_thread_source_dir(dir: &std::path::Path) {
31    process::set_thread_source_dir(dir);
32}
33
34/// Register all standard builtins on a VM.
35pub fn register_vm_stdlib(vm: &mut Vm) {
36    io::register_io_builtins(vm);
37    types::register_type_builtins(vm);
38    math::register_math_builtins(vm);
39    strings::register_string_builtins(vm);
40    json::register_json_builtins(vm);
41    fs::register_fs_builtins(vm);
42    process::register_process_builtins(vm);
43    process::register_path_builtins(vm);
44    datetime::register_datetime_builtins(vm);
45    regex::register_regex_builtins(vm);
46    crypto::register_crypto_builtins(vm);
47    sets::register_set_builtins(vm);
48    testing::register_testing_builtins(vm);
49    concurrency::register_concurrency_builtins(vm);
50    tools::register_tool_builtins(vm);
51    tracing::register_tracing_builtins(vm);
52    shapes::register_shape_builtins(vm);
53
54    register_http_builtins(vm);
55    register_llm_builtins(vm);
56    register_mcp_builtins(vm);
57}
58
59/// Reset thread-local stdlib state (logging, tracing, source dir). Call between test runs.
60pub fn reset_stdlib_state() {
61    logging::reset_logging_state();
62    process::reset_process_state();
63}