--- a/Cargo.lock +++ b/Cargo.lock @@ -3,21 +3,6 @@ version = 3 [[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] name = "ahash" version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -89,7 +74,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -99,7 +84,7 @@ checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -115,30 +100,6 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] -name = "backtrace" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "backtrace-ext" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537beee3be4a18fb023b570f80e3ae28003db9167a751266b259926e25539d50" -dependencies = [ - "backtrace", -] - -[[package]] name = "base64" version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -265,7 +226,7 @@ "encode_unicode", "lazy_static", "libc", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -359,7 +320,7 @@ checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -396,12 +357,6 @@ ] [[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -475,12 +430,6 @@ "similar", "yaml-rust", ] - -[[package]] -name = "is_ci" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" [[package]] name = "itertools" @@ -625,9 +574,7 @@ "indoc", "insta", "logos", - "miette", "rowan", - "text-size", "thiserror", ] @@ -780,36 +727,6 @@ ] [[package]] -name = "miette" -version = "7.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baed61d13cc3723ee6dbed730a82bfacedc60a85d81da2d77e9c3e8ebc0b504a" -dependencies = [ - "backtrace", - "backtrace-ext", - "miette-derive", - "owo-colors", - "supports-color", - "supports-hyperlinks", - "supports-unicode", - "terminal_size", - "textwrap", - "thiserror", - "unicode-width", -] - -[[package]] -name = "miette-derive" -version = "7.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301c3f54f98abc6c212ee722f5e5c62e472a334415840669e356f04850051ec" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.50", -] - -[[package]] name = "mimalloc-sys" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -826,15 +743,6 @@ checksum = "2d44fe4ebf6b538fcf39d9975c2b90bb3232d1ba8e8bffeacd004f27b20c577a" dependencies = [ "mimalloc-sys", -] - -[[package]] -name = "miniz_oxide" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" -dependencies = [ - "adler", ] [[package]] @@ -865,15 +773,6 @@ checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", -] - -[[package]] -name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", ] [[package]] @@ -881,12 +780,6 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "owo-colors" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caff54706df99d2a78a5a4e3455ff45448d81ef1bb63c22cd14052ca0e993a3f" [[package]] name = "parking_lot" @@ -1068,12 +961,6 @@ ] [[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1089,7 +976,7 @@ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -1190,12 +1077,6 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" - -[[package]] -name = "smawk" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "static_assertions" @@ -1230,27 +1111,6 @@ "quote", "syn 1.0.109", ] - -[[package]] -name = "supports-color" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9829b314621dfc575df4e409e79f9d6a66a3bd707ab73f23cb4aa3a854ac854f" -dependencies = [ - "is_ci", -] - -[[package]] -name = "supports-hyperlinks" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0a1e5168041f5f3ff68ff7d95dcb9c8749df29f6e7e89ada40dd4c9de404ee" - -[[package]] -name = "supports-unicode" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" [[package]] name = "syn" @@ -1283,17 +1143,7 @@ "cfg-if", "fastrand", "rustix", - "windows-sys 0.52.0", -] - -[[package]] -name = "terminal_size" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" -dependencies = [ - "rustix", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -1313,17 +1163,6 @@ checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" [[package]] -name = "textwrap" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" -dependencies = [ - "smawk", - "unicode-linebreak", - "unicode-width", -] - -[[package]] name = "thiserror" version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1362,12 +1201,6 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] -name = "unicode-linebreak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" - -[[package]] name = "unicode-width" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1390,15 +1223,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] [[package]] name = "windows-sys" --- a/Cargo.toml +++ b/Cargo.toml @@ -1,10 +1,15 @@ [workspace] -package.version = "0.5.0-pre96" -package.repository = "https://github.com/CertainLach/jrsonnet" members = ["crates/*", "bindings/jsonnet", "cmds/*", "tests", "xtask"] default-members = ["cmds/jrsonnet"] resolver = "2" +[workspace.package] +authors = ["Yaroslav Bolyukin "] +edition = "2021" +license = "MIT" +repository = "https://github.com/CertainLach/jrsonnet" +version = "0.5.0-pre96" + [workspace.dependencies] jrsonnet-evaluator = { path = "./crates/jrsonnet-evaluator", version = "0.5.0-pre96" } jrsonnet-macros = { path = "./crates/jrsonnet-macros", version = "0.5.0-pre96" } @@ -16,25 +21,61 @@ jrsonnet-types = { path = "./crates/jrsonnet-types", version = "0.5.0-pre96" } jrsonnet-gcmodule = "0.3.6" + +# Diagnostics. +# hi-doc is my library, which handles text formatting very well, but isn't polished enough yet +# Previous implementation was based on annotate-snippets, which I don't like for many reasons. +# +# I'm against using miette, because I want to reuse data between interpreter and annotations, yet miette +# and other libraries want to handle spans etc by itself, which is okay for compiler diagnostics, but is +# bad for interpreter, where interpreter and parser are paired much closer. hi-doc = "0.1.0" +annotate-snippets = "0.10.1" + +# CLI +clap = "4.5" +clap_complete = "4.5" +# Parsing, manifestification is implemented manually everywhere +# Note on serde_yaml_with_quirks: This is a fork of serde-yaml with legacy yaml 1.1 support: +# https://github.com/dtolnay/serde-yaml/pull/225 serde = "1.0.197" serde_json = "1.0.114" serde_yaml_with_quirks = "0.8.24" +# Error handling anyhow = "1.0.80" thiserror = "1.0" + +# Code formatting +dprint-core = "0.65.0" + +# Stdlib hashing functions +md5 = "0.7.0" +sha1 = "0.10.6" +sha2 = "0.10.8" +sha3 = "0.10.8" + +# Pre-parsed stdlib serialization. +# TODO: Drop in favor of replacing std.jsonnet with full native implementation, version 2.0 of bincode is bad. +bincode = "1.3" + +# Source code parsing. +# Jrsonnet has two parsers for jsonnet - one is for execution, and another is for better parsing diagnostics/lints/LSP. +# First (and fast one) is based on peg, second is based on rowan. +peg = "0.8.2" +logos = "0.14.0" +ungrammar = "1.16.1" +rowan = "0.15" + mimallocator = "0.1.3" indoc = "2.0" -dprint-core = "0.65.0" insta = "1.35" tempfile = "3.10" pathdiff = "0.2.1" hashbrown = "0.14.3" static_assertions = "1.1" rustc-hash = "1.1" -bincode = "1.3" -annotate-snippets = "0.10.1" num-bigint = "0.4.4" derivative = "2.2.0" strsim = "0.11.0" @@ -42,24 +83,11 @@ proc-macro2 = "1.0" quote = "1.0" syn = "2.0" -peg = "0.8.2" drop_bomb = "0.1.5" -logos = "0.14.0" -miette = "7.1.0" -rowan = "0.15" -text-size = "1.1" -md5 = "0.7.0" -sha1 = "0.10.6" -sha2 = "0.10.8" -sha3 = "0.10.8" base64 = "0.21.7" indexmap = "2.2.3" itertools = "0.12.1" -ungrammar = "1.16.1" xshell = "0.2.5" - -clap = "4.5" -clap_complete = "4.5" lsp-server = "0.7.6" lsp-types = "0.95.0" @@ -67,6 +95,62 @@ regex = "1.10.3" lru = "0.12.2" +[workspace.lints.rust] +unsafe_op_in_unsafe_fn = "deny" + +# TODO: add docs everywhere +# missing_doc = "warn" + +elided_lifetimes_in_paths = "allow" +explicit_outlives_requirements = "allow" +noop_method_call = "allow" +single_use_lifetimes = "allow" +variant_size_differences = "allow" +macro_expanded_macro_exports_accessed_by_absolute_paths = "allow" + +[workspace.lints.rustdoc] +all = "warn" + +[workspace.lints.clippy] +all = "warn" +nursery = "warn" +pedantic = "warn" + +ptr_arg = "allow" +# Too verbose +must_use_candidate = "allow" +# A lot of functions pass around errors thrown by code +missing_errors_doc = "allow" +# A lot of pointers have interior Rc +needless_pass_by_value = "allow" +# Its fine +wildcard_imports = "allow" +enum_glob_use = "allow" +module_name_repetitions = "allow" +# TODO: fix individual issues, however this works as intended almost everywhere +cast_precision_loss = "allow" +cast_possible_wrap = "allow" +cast_possible_truncation = "allow" +cast_sign_loss = "allow" +# False positives +# https://github.com/rust-lang/rust-clippy/issues/6902 +use_self = "allow" +# https://github.com/rust-lang/rust-clippy/issues/8539 +iter_with_drain = "allow" +type_repetition_in_bounds = "allow" +# ci is being run with nightly, but library should work on stable +missing_const_for_fn = "allow" +# too many false-positives with .expect() calls +missing_panics_doc = "allow" +# false positive for IStr type. There is an configuration option for +# such cases, but it doesn't work: +# https://github.com/rust-lang/rust-clippy/issues/9801 +mutable_key_type = "allow" +# false positives +redundant_pub_crate = "allow" +# Sometimes code is fancier without that +manual_let_else = "allow" + #[profile.test] #opt-level = 1 --- a/bindings/jsonnet/Cargo.toml +++ b/bindings/jsonnet/Cargo.toml @@ -1,12 +1,16 @@ [package] name = "libjsonnet" description = "Rust implementation of libjsonnet.so" +authors.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true version.workspace = true -authors = ["Yaroslav Bolyukin "] -license = "MIT" -edition = "2021" publish = false +[lints] +workspace = true + [dependencies] jrsonnet-evaluator.workspace = true jrsonnet-parser.workspace = true --- a/cmds/jrsonnet-fmt/Cargo.toml +++ b/cmds/jrsonnet-fmt/Cargo.toml @@ -1,8 +1,14 @@ [package] name = "jrsonnet-fmt" +authors.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true version.workspace = true -edition = "2021" +[lints] +workspace = true + [dependencies] dprint-core.workspace = true jrsonnet-rowan-parser.workspace = true --- a/cmds/jrsonnet/Cargo.toml +++ b/cmds/jrsonnet/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "jrsonnet" description = "Rust jsonnet implementation" -version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true repository.workspace = true -authors = ["Yaroslav Bolyukin "] -license = "MIT" -edition = "2021" +version.workspace = true + +[lints] +workspace = true [features] experimental = [ --- a/crates/jrsonnet-cli/Cargo.toml +++ b/crates/jrsonnet-cli/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "jrsonnet-cli" description = "Utilities for building jrsonnet CLIs" -version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true repository.workspace = true -authors = ["Yaroslav Bolyukin "] -license = "MIT" -edition = "2021" +version.workspace = true + +[lints] +workspace = true [features] exp-preserve-order = [ --- a/crates/jrsonnet-evaluator/Cargo.toml +++ b/crates/jrsonnet-evaluator/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "jrsonnet-evaluator" description = "jsonnet interpreter" -version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true repository.workspace = true -authors = ["Yaroslav Bolyukin "] -license = "MIT" -edition = "2021" +version.workspace = true + +[lints] +workspace = true [features] default = ["explaining-traces"] --- a/crates/jrsonnet-interner/Cargo.toml +++ b/crates/jrsonnet-interner/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "jrsonnet-interner" description = "Jrsonnet string interning" -version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true repository.workspace = true -authors = ["Yaroslav Bolyukin "] -license = "MIT" -edition = "2021" +version.workspace = true + +[lints] +workspace = true [features] default = [] --- a/crates/jrsonnet-macros/Cargo.toml +++ b/crates/jrsonnet-macros/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "jrsonnet-macros" description = "Macros to reduce boilerplate in jrsonnet-evaluator usage" -authors = ["Yaroslav Bolyukin "] -license = "MIT" -version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true repository.workspace = true -edition = "2021" +version.workspace = true + +[lints] +workspace = true [lib] proc-macro = true --- a/crates/jrsonnet-parser/Cargo.toml +++ b/crates/jrsonnet-parser/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "jrsonnet-parser" description = "jsonnet language parser and AST" +authors.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true version.workspace = true -repository.workspace = true -authors = ["Yaroslav Bolyukin "] -license = "MIT" -edition = "2021" [features] default = [] --- a/crates/jrsonnet-rowan-parser/Cargo.toml +++ b/crates/jrsonnet-rowan-parser/Cargo.toml @@ -1,16 +1,20 @@ [package] name = "jrsonnet-rowan-parser" +authors.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true version.workspace = true -edition = "2021" +[lints] +workspace = true + [dependencies] anyhow.workspace = true drop_bomb.workspace = true indoc.workspace = true logos.workspace = true -miette = { workspace = true, features = ["fancy"] } rowan.workspace = true -text-size.workspace = true thiserror.workspace = true [dev-dependencies] --- a/crates/jrsonnet-stdlib/Cargo.toml +++ b/crates/jrsonnet-stdlib/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "jrsonnet-stdlib" description = "jsonnet standard library packaged as crate" -version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true repository.workspace = true -authors = ["Yaroslav Bolyukin "] -license = "MIT" -edition = "2021" +version.workspace = true + +[lints] +workspace = true [features] default = ["codegenerated-stdlib"] --- a/crates/jrsonnet-types/Cargo.toml +++ b/crates/jrsonnet-types/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "jrsonnet-types" description = "Jrsonnet type system definition" -version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true repository.workspace = true -authors = ["Yaroslav Bolyukin "] -license = "MIT" -edition = "2021" +version.workspace = true + +[lints] +workspace = true [dependencies] jrsonnet-gcmodule.workspace = true --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -4,6 +4,9 @@ edition = "2021" publish = false +[lints] +workspace = true + [dependencies] jrsonnet-evaluator.workspace = true jrsonnet-gcmodule.workspace = true --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -2,6 +2,10 @@ name = "xtask" version = "0.1.0" edition = "2021" +publish = false + +[lints] +workspace = true [dependencies] anyhow.workspace = true