[package] name = "kcl-lib" description = "KittyCAD Language implementation and tools" version = "0.2.26" edition = "2021" license = "MIT" repository = "https://github.com/KittyCAD/modeling-app" rust-version = "1.73" authors = ["Jess Frazelle", "Adam Chalmers", "KittyCAD, Inc"] keywords = ["kcl", "KittyCAD", "CAD"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] anyhow = { version = "1.0.93", features = ["backtrace"] } async-recursion = "1.1.1" async-trait = "0.1.83" base64 = "0.22.1" chrono = "0.4.38" clap = { version = "4.5.20", default-features = false, optional = true, features = ["std", "derive"] } convert_case = "0.6.0" dashmap = "6.1.0" databake = { version = "0.1.8", features = ["derive"] } derive-docs = { version = "0.1.29", path = "../derive-docs" } fnv = "1.0.7" form_urlencoded = "1.2.1" futures = { version = "0.3.31" } git_rev = "0.1.0" gltf-json = "1.4.1" http = { workspace = true } image = { version = "0.25.5", default-features = false, features = ["png"] } indexmap = { version = "2.6.0", features = ["serde"] } kittycad = { workspace = true } kittycad-modeling-cmds = { workspace = true } lazy_static = "1.5.0" measurements = "0.11.0" mime_guess = "2.0.5" parse-display = "0.9.1" pyo3 = { version = "0.22.6", optional = true } reqwest = { version = "0.12", default-features = false, features = ["stream", "rustls-tls"] } ropey = "1.6.1" schemars = { version = "0.8.17", features = ["impl_json_schema", "indexmap2", "url", "uuid1", "preserve_order"] } serde = { version = "1.0.214", features = ["derive"] } serde_json = "1.0.128" sha2 = "0.10.8" tabled = { version = "0.15.0", optional = true } thiserror = "2.0.0" toml = "0.8.19" ts-rs = { version = "10.0.0", features = ["uuid-impl", "url-impl", "chrono-impl", "indexmap-impl", "no-serde-warnings", "serde-json-impl"] } url = { version = "2.5.3", features = ["serde"] } urlencoding = "2.1.3" uuid = { version = "1.11.0", features = ["v4", "js", "serde"] } validator = { version = "0.19.0", features = ["derive"] } winnow = "0.6.18" zip = { version = "2.0.0", default-features = false } [target.'cfg(target_arch = "wasm32")'.dependencies] js-sys = { version = "0.3.72" } tokio = { version = "1.40.0", features = ["sync", "time"] } tower-lsp = { version = "0.20.0", default-features = false, features = ["runtime-agnostic"] } wasm-bindgen = "0.2.91" wasm-bindgen-futures = "0.4.44" web-sys = { version = "0.3.72", features = ["console"] } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] approx = "0.5" bson = { version = "2.13.0", features = ["uuid-1", "chrono"] } tokio = { version = "1.39.3", features = ["full"] } tokio-tungstenite = { version = "0.24.0", features = ["rustls-tls-native-roots"] } tower-lsp = { version = "0.20.0", features = ["proposed"] } [features] default = ["engine"] cli = ["dep:clap"] # For the lsp server, when run with stdout for rpc we want to disable println. # This is used for editor extensions that use the lsp server. disable-println = [] engine = [] pyo3 = ["dep:pyo3"] # Helper functions also used in benchmarks. lsp-test-util = [] tabled = ["dep:tabled"] [dev-dependencies] base64 = "0.22.1" criterion = { version = "0.5.1", features = ["async_tokio"] } expectorate = "1.1.0" handlebars = "6.2.0" iai = "0.1" image = { version = "0.25.5", default-features = false, features = ["png"] } insta = { version = "1.41.1", features = ["json", "filters", "redactions"] } itertools = "0.13.0" pretty_assertions = "1.4.1" tokio = { version = "1.40.0", features = ["rt-multi-thread", "macros", "time"] } twenty-twenty = "0.8.0" [[bench]] name = "compiler_benchmark_criterion" harness = false [[bench]] name = "compiler_benchmark_iai" harness = false [[bench]] name = "digest_benchmark" harness = false [[bench]] name = "lsp_semantic_tokens_benchmark_criterion" harness = false required-features = ["lsp-test-util"] [[bench]] name = "lsp_semantic_tokens_benchmark_iai" harness = false required-features = ["lsp-test-util"] [[bench]] name = "executor_benchmark_criterion" harness = false [[bench]] name = "executor_benchmark_iai" harness = false