[package] name = "scryer-prolog" version = "0.10.0" authors = ["Mark Thom "] edition = "2024" description = "A modern Prolog implementation written mostly in Rust." readme = "README.md" repository = "https://github.com/mthom/scryer-prolog" license = "BSD-3-Clause" keywords = ["prolog", "prolog-interpreter", "prolog-system"] categories = ["command-line-utilities"] build = "build/main.rs" # Remember to check CI rust-version = "1.93.1" [lib] crate-type = ["cdylib", "rlib"] [features] default = ["all-simple-cross", "tls", "http"] # activates all features that depend on no non pure-rust dependencies # # currently does not include # ffi due to libffi # tls, http due to openssl # crypto-full due to ring all-pure = ["repl", "hostname"] # enables all features that are simple to get working for cross-compliation # currently all but tls, http as those depend on openssl all-simple-cross = ["all-pure", "ffi", "crypto-full"] ffi = ["dep:libffi"] repl = ["dep:crossterm", "dep:ctrlc", "dep:rustyline"] hostname = ["dep:hostname"] tls = ["dep:native-tls"] http = ["dep:warp", "dep:reqwest"] # crypto function that require non pure-rust dependencies crypto-full = ["dep:ring"] [lints.clippy] collapsible_match = "allow" [lints.rust] unexpected_cfgs = "deny" function_casts_as_integer = "deny" [build-dependencies] proc-macro2 = "1.0.86" quote = "1.0.36" strum = "0.26" strum_macros = "0.26" syn = { version = "2.0.72", features = ['full', 'visit', 'extra-traits'] } to-syn-value = "0.1.1" to-syn-value_derive = "0.1.1" walkdir = "2" [dependencies] arcu = { version = "0.1.2", features = ["thread_local_counter"] } base64 = "0.22.1" bit-set = "0.8.0" bitvec = "1" blake2 = "0.10.6" bytes = "1" chrono = "0.4.38" cpu-time = "1.0.0" crrl = "0.9.0" dashu = { version = "0.4.2", features = ["rand"] } derive_more = "0.99.18" dirs-next = "2.0.0" divrem = "1.0.0" futures = "0.3" fxhash = "0.2.1" git-version = "0.3.9" indexmap = "2.3.0" lexical = "7.0.4" libc = "0.2.155" libloading = "0.8" modular-bitfield = "0.13.1" num-order = { version = "1.2.0" } ordered-float = "5.0.0" phf = { version = "0.11", features = ["macros"] } puruspe = "0.4.1" rand = "0.8.5" ring = { version = "0.17.8", features = [ "wasm32_unknown_unknown_js", ], optional = true } ripemd = "0.1.3" roxmltree = "0.20.0" ryu = "1.0.18" sha3 = "0.10.8" smallvec = "1.13.2" static_assertions = "1.1.0" scraper = { version = "0.23.1", default-features = false, features = [ "errors", ] } ego-tree = "0.10.0" serde_json = "1.0.122" serde = "1.0.204" parking_lot = "0.12.4" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] crossterm = { version = "0.28.1", optional = true } ctrlc = { version = "3.4.4", optional = true } hostname = { version = "0.4.0", optional = true } libffi = { version = "5.1.0", optional = true } native-tls = { version = "0.2.12", optional = true } # the version requirement of reqwest is kept low for compatibility with old deno versions # that pin reqwest to 0.11.20 reqwest = { version = "0.11.0", optional = true } rustyline = { version = "18.0.0", optional = true } tokio = { version = "1.39.2", features = ["full"] } warp = { version = "0.3.7", features = ["tls"], optional = true } [target.'cfg(target_arch = "wasm32")'.dependencies] getrandom = { version = "0.2.15", features = ["js"] } tokio = { version = "1.39.2", features = [ "sync", "macros", "io-util", "rt", "time", ] } [target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies] console_error_panic_hook = "0.1" wasm-bindgen = "0.2.92" wasm-bindgen-futures = "0.4" serde-wasm-bindgen = "0.6" web-sys = { version = "0.3", features = [ "Document", "Window", "Element", "Performance", ] } js-sys = "0.3" ouroboros = "0.18" [dev-dependencies] current_platform = "0.2.0" maplit = "1.0.2" serial_test = "3.1.1" [target.'cfg(not(all(target_arch = "wasm32", target_os = "unknown")))'.dev-dependencies] criterion = "0.5.1" iai-callgrind = "0.12.1" trycmd = "0.15.6" [target.'cfg(not(any(target_os = "windows", all(target_arch = "wasm32", target_os = "unknown"))))'.dev-dependencies] pprof = { version = "0.13.0", features = ["criterion", "flamegraph"] } [profile.bench] lto = true opt-level = 3 [profile.release] lto = true opt-level = 3 debug = 2 [profile.wasm-dev] inherits = "dev" opt-level = 1 lto = "off" [profile.wasm-release] inherits = "release" lto = "off" panic = "abort" codegen-units = 256 [[bench]] name = "run_criterion" harness = false [[bench]] name = "run_iai" harness = false