]> Repositorios git - scryer-prolog.git/commitdiff
Merge branch 'master' into library-use-case
authorNicolas Luck <[email protected]>
Wed, 30 Aug 2023 16:12:26 +0000 (18:12 +0200)
committerNicolas Luck <[email protected]>
Wed, 30 Aug 2023 16:12:26 +0000 (18:12 +0200)
# Conflicts:
# Cargo.toml
# src/machine/mock_wam.rs
# src/machine/mod.rs

1  2 
Cargo.lock
Cargo.toml
src/atom_table.rs
src/bin/scryer-prolog.rs
src/lib.rs
src/machine/mod.rs
src/machine/system_calls.rs

diff --cc Cargo.lock
index a53f32ceaf6be9eb12b7de3af87828369ec70164,b3f16992733221aaeee04c38f7e30fddae8b569f..76d60f0a34403a4127d9baf0b89ae88afe43e0be
@@@ -1843,30 -1743,13 +1770,30 @@@ version = "0.1.10
  source = "registry+https://github.com/rust-lang/crates.io-index"
  checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
  
 +[[package]]
 +name = "regex-automata"
 +version = "0.3.3"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
 +checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310"
 +dependencies = [
 + "aho-corasick",
 + "memchr",
 + "regex-syntax",
 +]
 +
 +[[package]]
 +name = "regex-syntax"
 +version = "0.7.4"
 +source = "registry+https://github.com/rust-lang/crates.io-index"
 +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
 +
  [[package]]
  name = "reqwest"
- version = "0.11.18"
+ version = "0.11.20"
  source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55"
+ checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1"
  dependencies = [
-  "base64 0.21.2",
+  "base64 0.21.3",
   "bytes",
   "encoding_rs",
   "futures-core",
@@@ -2066,9 -1950,9 +1995,10 @@@ dependencies = 
   "quote",
   "rand",
   "ref_thread_local",
 + "regex",
   "reqwest",
   "ring",
+  "ring-wasi",
   "ripemd160",
   "roxmltree",
   "rustyline",
diff --cc Cargo.toml
index f594f3f4caab01484790eebf29ba068bccec7efa,94f589d042776d4117d9ac345343e09b591691d5..47a412f09e97c99310b6c6daf73790c756a42724
@@@ -13,7 -13,12 +13,13 @@@ build = "build/main.rs
  rust-version = "1.63"
  
  [features]
 +multi_thread = []
+ default = ["ffi", "repl", "hostname", "tls", "http"]
+ ffi = ["dep:libffi"]
+ repl = ["dep:crossterm", "dep:ctrlc", "dep:rustyline"]
+ hostname = ["dep:hostname"]
+ tls = ["dep:native-tls"]
+ http = ["dep:hyper", "dep:reqwest"]
  
  [build-dependencies]
  indexmap = "1.0.2"
@@@ -57,14 -56,9 +57,10 @@@ select = "0.6.0
  roxmltree = "0.11.0"
  base64 = "0.12.3"
  smallvec = "1.8.0"
- sodiumoxide = "0.2.6"
  static_assertions = "1.1.0"
  ryu = "1.0.9"
- hyper = { version = "1.0.0-rc.4", features = ["full"] }
- hyper-util = { git = "https://github.com/hyperium/hyper-util.git" }
- tokio = { version = "1.28.2", features = ["full"] }
  futures = "0.3"
 +regex = "1.9.1"
  libloading = "0.7"
  derive_deref = "1.1.1"
  http-body-util = "0.1.0-rc.2"
Simple merge
index da462526393cfa11dd808166477c89e4804d3f41,eb0fd5ff7e3322433c4f9abc0e1fcafe6f5a3230..01291652c9d023cf3f801568bcfbb1939deb367c
@@@ -1,19 -1,12 +1,27 @@@
  fn main() -> std::process::ExitCode {
      use std::sync::atomic::Ordering;
      use scryer_prolog::*;
 +    use scryer_prolog::atom_table::Atom;
  
+     #[cfg(feature = "repl")]
      ctrlc::set_handler(move || {
          scryer_prolog::machine::INTERRUPT.store(true, Ordering::Relaxed);
      }).unwrap();
  
 -    let mut wam = machine::Machine::new();
 -    wam.run_top_level()
++    #[cfg(target_os = "wasi")]
++    let runtime = tokio::runtime::Builder::new_current_thread()
++        .enable_all()
++        .build()
++        .unwrap();
++
++    #[cfg(not(target_os = "wasi"))]
 +    let runtime = tokio::runtime::Builder::new_multi_thread()
 +        .enable_all()
 +        .build()
 +        .unwrap();
 +
 +    runtime.block_on(async move {
 +        let mut wam = machine::Machine::new(Default::default());
 +        wam.run_top_level(atom!("$toplevel"), (atom!("$repl"), 1))
 +    })
  }
diff --cc src/lib.rs
Simple merge
index a170abd4c3f5905008fbe719d396cccd02ba19e1,ea96f1b434b6386ac6b57d4a053ba392515ff135..e56e72bb86c528c7beac58a74ce464eff33066e0
@@@ -73,6 -68,8 +74,7 @@@ pub struct Machine 
      pub(super) user_output: Stream,
      pub(super) user_error: Stream,
      pub(super) load_contexts: Vec<LoadContext>,
 -    pub(super) runtime: Runtime,
+     #[cfg(feature = "ffi")]
      pub(super) foreign_function_table: ForeignFunctionTable,
  }
  
@@@ -452,6 -444,8 +454,7 @@@ impl Machine 
              user_output,
              user_error,
              load_contexts: vec![],
 -            runtime,
+             #[cfg(feature = "ffi")]
                foreign_function_table: Default::default(),
          };
  
index f025306c448f31d79c1c2e5b0136376f115781d2,b158d428e22d8a96b5642b1dca182b9ef4e81841..bd38455b4aac399e100d76f7dd34eb6e1c45de66
@@@ -87,9 -95,10 +95,11 @@@ use hyper::header::{HeaderValue, Header
  use hyper::{HeaderMap, Method};
  use http_body_util::BodyExt;
  use bytes::Buf;
+ #[cfg(feature = "http")]
  use reqwest::Url;
 +use hyper_util::rt::TokioIo;
  
+ #[cfg(feature = "repl")]
  pub(crate) fn get_key() -> KeyEvent {
      let key;
      enable_raw_mode().expect("failed to enable raw mode");