Skip to main content

vm/
lib.rs

1mod builtins;
2
3pub mod assembler;
4pub mod bytecode;
5pub mod compiler;
6pub mod debug_info;
7#[cfg(feature = "runtime")]
8pub mod debugger;
9#[cfg(feature = "runtime")]
10pub mod jit {
11    pub use crate::vm::jit::{
12        JitAttempt, JitCallSiteProfile, JitConfig, JitExitProfile, JitMetrics, JitNyiDoc,
13        JitNyiReason, JitSnapshot, JitTrace, JitTraceTerminal, TraceJitEngine,
14    };
15}
16#[cfg(feature = "cli")]
17pub mod cli;
18#[cfg(feature = "runtime")]
19pub mod vm;
20#[cfg(feature = "runtime")]
21pub mod vmbc;
22
23pub use assembler::{AsmParseError, Assembler, AssemblerError, BytecodeBuilder, assemble};
24#[cfg(feature = "runtime")]
25pub use builtins::runtime::print::{PrintHostFunction, PrintlnHostFunction, format_value};
26pub use builtins::{
27    BuiltinFunction, BuiltinNamespaceMemberSpec, BuiltinNamespaceSpec, CallableDef, CallableParam,
28    CallableParamType, CallableSignature, LanguageBuiltinSpec, builtin_namespace_specs,
29    callable_signatures_for_builtin_namespace_member, default_host_callables, is_builtin_namespace,
30    language_builtin_specs, resolve_builtin_namespace_call,
31};
32pub use bytecode::{
33    CallableEnvironment, CallableKind, CallablePrototype, CallableTarget, CallableValue,
34    CaptureBindingMode, ExportedCallable, FunctionRegion, HostImport, OpCode, Program,
35    RootCallableBinding, ScriptFunction, TypeMap, Value, ValueType,
36};
37pub fn builtin_call_index(name: &str) -> Option<u16> {
38    use builtins::BuiltinFunction;
39
40    match name {
41        "len" => Some(BuiltinFunction::Len.call_index()),
42        "slice" => Some(BuiltinFunction::Slice.call_index()),
43        "concat" => Some(BuiltinFunction::Concat.call_index()),
44        "get" => Some(BuiltinFunction::Get.call_index()),
45        "has" => Some(BuiltinFunction::Has.call_index()),
46        "set" => Some(BuiltinFunction::Set.call_index()),
47        "keys" => Some(BuiltinFunction::Keys.call_index()),
48        "string_contains" => Some(BuiltinFunction::StringContains.call_index()),
49        "string_replace_literal" => Some(BuiltinFunction::StringReplaceLiteral.call_index()),
50        "string_lower_ascii" => Some(BuiltinFunction::StringLowerAscii.call_index()),
51        "string_split_literal" => Some(BuiltinFunction::StringSplitLiteral.call_index()),
52        _ => BuiltinFunction::from_namespaced_name(name).map(|builtin| builtin.call_index()),
53    }
54}
55pub use compiler::diagnostics::{render_compile_error, render_source_error};
56pub use compiler::source_map::{LineSpanMapping, LoweredSource, SourceId, SourceMap, Span};
57pub use compiler::{
58    AssignmentKind, ClosureExpr, CompileError, CompileSourceFileOptions, CompiledProgram,
59    CompiledReplProgram, Compiler, Expr, FormatError, FrontendImportSyntax, FrontendIr,
60    FunctionDecl, ImportClause, InferredLocalTypeHint, LocalIrBuilder, LocalSlot, ModuleImport,
61    NamedImport, ParseError, ParserDialect, ReplLocalBinding, ReplLocalState, SharedParserOptions,
62    SourceError, SourceFlavor, SourcePathError, SourcePlugin, Stmt, UnknownInferredLocal,
63    collect_inferred_local_type_hints, collect_inferred_local_type_hints_at_path_with_options,
64    collect_inferred_local_type_hints_with_options, compile_source,
65    compile_source_at_path_with_flavor_and_options, compile_source_file,
66    compile_source_file_with_options, compile_source_for_repl, compile_source_for_repl_with_locals,
67    compile_source_for_repl_with_state, compile_source_with_flavor,
68    compile_source_with_flavor_and_options, format_source, format_source_with_flavor,
69    format_source_with_flavor_and_options, lint_trailing_function_return_semicolons,
70    lint_unknown_inferred_local_types, lint_unknown_inferred_local_types_at_path_with_options,
71    lint_unknown_inferred_local_types_with_options, lint_unknown_type_annotations,
72    parse_source_with_dialect,
73};
74pub use debug_info::{ArgInfo, DebugFunction, DebugInfo, LineInfo, LocalInfo};
75#[cfg(feature = "runtime")]
76pub use debugger::{
77    DebugCommandBridge, DebugCommandBridgeError, DebugCommandBridgeResponse,
78    DebugCommandBridgeStatus, Debugger, StepMode, VmRecording, VmRecordingError, VmRecordingFrame,
79    VmRecordingReplayResponse, VmRecordingReplayState, replay_recording_stdio,
80    run_recording_replay_command,
81};
82#[cfg(feature = "runtime")]
83pub use jit::{
84    JitAttempt, JitCallSiteProfile, JitConfig, JitExitProfile, JitMetrics, JitNyiDoc, JitNyiReason,
85    JitSnapshot, JitTrace, JitTraceTerminal, TraceJitEngine,
86};
87#[cfg(feature = "runtime")]
88pub use vm::diagnostics::render_vm_error;
89#[cfg(feature = "runtime")]
90pub use vm::{
91    AotArtifactError, CallOutcome, CallReturn, DEFAULT_MAX_SCRIPT_CALL_DEPTH, EpochCheckpoint,
92    EpochHandle, FuelCheckpoint, HostArgsFunction, HostAsyncBridge, HostBindingPlan, HostFunction,
93    HostFunctionRegistry, HostOpId, HostStackFunction, IntoScriptValue, QueuedScriptInvocation,
94    ScriptArgs, ScriptCallback, ScriptResult, StaticHostArgsFunction, StaticHostFunction,
95    StaticHostStackFunction, Store, Vm, VmError, VmResult, VmStatus, VmYieldReason,
96};
97#[cfg(feature = "runtime")]
98pub use vmbc::{
99    DisassembleOptions, ValidationError, WireError, decode_program, disassemble_program,
100    disassemble_program_with_options, disassemble_vmbc, disassemble_vmbc_with_options,
101    encode_program, infer_local_count, validate_program,
102};