From e0ffe2a8584b10f73e7d74bfe1c75bf5caa43497 Mon Sep 17 00:00:00 2001 From: Matthieu Jolimaitre Date: Thu, 24 Oct 2024 18:48:49 +0200 Subject: [PATCH] explicit library api and remove dependency on stack overflow introspection tool --- Cargo.lock | 112 ------------------------------------------------ Cargo.toml | 2 +- example/repl.rs | 1 - example/run.rs | 9 +++- 4 files changed, 9 insertions(+), 115 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b573ce4..7f23dfa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,21 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - [[package]] name = "ahash" version = "0.8.11" @@ -35,44 +20,6 @@ version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets", -] - -[[package]] -name = "backtrace-on-stack-overflow" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd2d70527f3737a1ad17355e260706c1badebabd1fa06a7a053407380df841b" -dependencies = [ - "backtrace", - "libc", - "nix", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "cc" version = "1.1.31" @@ -110,12 +57,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - [[package]] name = "hashbrown" version = "0.14.5" @@ -143,61 +84,14 @@ version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - [[package]] name = "microlang" version = "0.1.0" dependencies = [ - "backtrace-on-stack-overflow", "chumsky", "hashbrown 0.15.0", ] -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" -dependencies = [ - "adler2", -] - -[[package]] -name = "nix" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" -dependencies = [ - "bitflags", - "cc", - "cfg-if", - "libc", - "memoffset", -] - -[[package]] -name = "object" -version = "0.36.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" version = "1.20.2" @@ -231,12 +125,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - [[package]] name = "shlex" version = "1.3.0" diff --git a/Cargo.toml b/Cargo.toml index e2d8091..ff9f776 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ hashbrown = { version = "0.15.0", default-features = true, features = [ # "equivalent", # "default-hasher", ] } -backtrace-on-stack-overflow = "0.3.0" +# backtrace-on-stack-overflow = "0.3.0" [[bin]] name = "repl" diff --git a/example/repl.rs b/example/repl.rs index ab45356..2e948a1 100644 --- a/example/repl.rs +++ b/example/repl.rs @@ -3,7 +3,6 @@ use std::io::{stdin, stdout, Write}; use microlang::Context; pub fn main() { - unsafe { backtrace_on_stack_overflow::enable() }; let mut context = Context::empty(); loop { print!("> "); diff --git a/example/run.rs b/example/run.rs index 0c08864..5898172 100644 --- a/example/run.rs +++ b/example/run.rs @@ -3,8 +3,10 @@ use std::{env::args, fs}; use microlang::{Context, Value}; pub fn main() { - unsafe { backtrace_on_stack_overflow::enable() }; + // Context instantiation. let mut context = Context::empty(); + + // Definition of built-in function. context.define_built("print", |values, _| { for val in values { print!("{} ", val.serialize()); @@ -13,9 +15,14 @@ pub fn main() { Ok(Value::None) }); + // Script to evaluate. let lines = fs::read_to_string(args().nth(1).expect("Pass a file as arg 1.")).expect("File could not be read."); + + // Script evaluation. match context.eval(lines) { + // May return errors raised during parsing or actual evaluation. Err(err) => panic!("Failed : {err:?}"), + // Success returns the parsed AST alongside the value resulting from the evaluation. Ok((_, value)) => println!("{}", value.serialize()), } }