difftreelog
chore cleanup Cargo.toml
in: master
15 files changed
Cargo.lockdiffbeforeafterboth--- 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"
Cargo.tomldiffbeforeafterboth--- 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 <iam@lach.pw>"]
+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
bindings/jsonnet/Cargo.tomldiffbeforeafterboth--- 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 <iam@lach.pw>"]
-license = "MIT"
-edition = "2021"
publish = false
+[lints]
+workspace = true
+
[dependencies]
jrsonnet-evaluator.workspace = true
jrsonnet-parser.workspace = true
cmds/jrsonnet-fmt/Cargo.tomldiffbeforeafterboth--- 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
cmds/jrsonnet/Cargo.tomldiffbeforeafterboth1[package]1[package]2name = "jrsonnet"2name = "jrsonnet"3description = "Rust jsonnet implementation"3description = "Rust jsonnet implementation"4version.workspace = true4authors.workspace = true5repository.workspace = true5edition.workspace = true6authors = ["Yaroslav Bolyukin <iam@lach.pw>"]6license.workspace = true7license = "MIT"7repository.workspace = true8edition = "2021"8version.workspace = true910[lints]11workspace = true91210[features]13[features]11experimental = [14experimental = [crates/jrsonnet-cli/Cargo.tomldiffbeforeafterboth--- 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 <iam@lach.pw>"]
-license = "MIT"
-edition = "2021"
+version.workspace = true
+
+[lints]
+workspace = true
[features]
exp-preserve-order = [
crates/jrsonnet-evaluator/Cargo.tomldiffbeforeafterboth--- 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 <iam@lach.pw>"]
-license = "MIT"
-edition = "2021"
+version.workspace = true
+
+[lints]
+workspace = true
[features]
default = ["explaining-traces"]
crates/jrsonnet-interner/Cargo.tomldiffbeforeafterboth--- 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 <iam@lach.pw>"]
-license = "MIT"
-edition = "2021"
+version.workspace = true
+
+[lints]
+workspace = true
[features]
default = []
crates/jrsonnet-macros/Cargo.tomldiffbeforeafterboth--- 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 <iam@lach.pw>"]
-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
crates/jrsonnet-parser/Cargo.tomldiffbeforeafterboth--- 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 <iam@lach.pw>"]
-license = "MIT"
-edition = "2021"
[features]
default = []
crates/jrsonnet-rowan-parser/Cargo.tomldiffbeforeafterboth--- 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]
crates/jrsonnet-stdlib/Cargo.tomldiffbeforeafterboth--- 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 <iam@lach.pw>"]
-license = "MIT"
-edition = "2021"
+version.workspace = true
+
+[lints]
+workspace = true
[features]
default = ["codegenerated-stdlib"]
crates/jrsonnet-types/Cargo.tomldiffbeforeafterboth--- 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 <iam@lach.pw>"]
-license = "MIT"
-edition = "2021"
+version.workspace = true
+
+[lints]
+workspace = true
[dependencies]
jrsonnet-gcmodule.workspace = true
tests/Cargo.tomldiffbeforeafterboth--- 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
xtask/Cargo.tomldiffbeforeafterboth--- 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