diff --git a/.clippy.toml b/.clippy.toml new file mode 100644 index 000000000..37e85de6b --- /dev/null +++ b/.clippy.toml @@ -0,0 +1,35 @@ +allowed-duplicate-crates = [ + "bitflags", + "dashmap", # upgraded to 6.* by dependabot, not sure if it should be downgraded back + + "getrandom", + "wasi", # 0.14 needed by getrandom@0.3.2, 0.11 by mio@1.0.3 and getrandom@0.2.15 + + "hashbrown", # TODO: can be resolved by updating dashmap to 7.0.0-rc0 + "objc2", + "objc2-foundation", + + "proc-macro-utils", # TODO: can be resolved by updating leptos crates to 0.7.0 + "serde_qs", # TODO: can be resolved by updating leptos crates to 0.7.0 + + "rustix", + "linux-raw-sys", # needed by rustix@0.38 + + "thiserror", + "thiserror-impl", + "ttf-parser", # both versions are brought by cosmic-text@0.12.1 + "windows-core", + "windows-implement", + "windows-interface", + "windows-result", + "windows-sys", + "windows-targets", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", + "zip", # 0.5.13 needed by simple_excel_writer, 4.2.0 by calamine +] diff --git a/Cargo.lock b/Cargo.lock index 35116a96c..d48ed1ae9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1080,7 +1080,7 @@ dependencies = [ "anstyle", "clap_lex", "strsim", - "terminal_size 0.4.2", + "terminal_size", ] [[package]] @@ -1155,15 +1155,6 @@ dependencies = [ "objc", ] -[[package]] -name = "codee" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af40247be877a1e3353fb406aa27ab3ef4bd3ff18cef91e75e667bfa3fde701d" -dependencies = [ - "thiserror 1.0.69", -] - [[package]] name = "codepage" version = "0.1.2" @@ -1354,17 +1345,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "cookie" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" -dependencies = [ - "percent-encoding", - "time", - "version_check", -] - [[package]] name = "coolor" version = "1.0.0" @@ -1600,7 +1580,7 @@ checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ "bitflags 2.9.1", "crossterm_winapi", - "mio 1.0.3", + "mio", "parking_lot", "rustix 0.38.44", "signal-hook", @@ -1656,12 +1636,12 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.4" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345" +checksum = "697b5419f348fd5ae2478e8018cb016c00a5881c7f46c717de98ffd135a5651c" dependencies = [ - "nix 0.28.0", - "windows-sys 0.52.0", + "nix", + "windows-sys 0.59.0", ] [[package]] @@ -2578,18 +2558,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "gloo-timers" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - [[package]] name = "gloo-utils" version = "0.2.0" @@ -2902,7 +2870,7 @@ dependencies = [ "displaydoc", "yoke", "zerofrom", - "zerovec 0.10.4", + "zerovec", ] [[package]] @@ -2913,9 +2881,9 @@ checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ "displaydoc", "litemap", - "tinystr 0.7.6", + "tinystr", "writeable", - "zerovec 0.10.4", + "zerovec", ] [[package]] @@ -2928,8 +2896,8 @@ dependencies = [ "icu_locid", "icu_locid_transform_data", "icu_provider", - "tinystr 0.7.6", - "zerovec 0.10.4", + "tinystr", + "zerovec", ] [[package]] @@ -2953,7 +2921,7 @@ dependencies = [ "utf16_iter", "utf8_iter", "write16", - "zerovec 0.10.4", + "zerovec", ] [[package]] @@ -2973,8 +2941,8 @@ dependencies = [ "icu_locid_transform", "icu_properties_data", "icu_provider", - "tinystr 0.7.6", - "zerovec 0.10.4", + "tinystr", + "zerovec", ] [[package]] @@ -2993,11 +2961,11 @@ dependencies = [ "icu_locid", "icu_provider_macros", "stable_deref_trait", - "tinystr 0.7.6", + "tinystr", "writeable", "yoke", "zerofrom", - "zerovec 0.10.4", + "zerovec", ] [[package]] @@ -3105,9 +3073,9 @@ dependencies = [ [[package]] name = "inotify" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" dependencies = [ "bitflags 1.3.2", "inotify-sys", @@ -3123,6 +3091,15 @@ dependencies = [ "libc", ] +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if 1.0.0", +] + [[package]] name = "interpolate_name" version = "0.2.4" @@ -3342,24 +3319,17 @@ dependencies = [ [[package]] name = "leptos-use" -version = "0.12.0" +version = "0.13.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "268b9df23d8c68ed0518c39d6f0d3b99fcbe30190a6dce4a7e5f342027ab0033" +checksum = "a6a93d93201701e3d46ad005e96f5ebad7212a9e0e2a1405f087523cc55d9a81" dependencies = [ - "async-trait", "cfg-if 1.0.0", - "codee", - "cookie", "default-struct-builder", - "futures-util", - "gloo-timers", - "gloo-utils", "js-sys", "lazy_static", "leptos", "paste", "thiserror 1.0.69", - "unic-langid", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -3808,18 +3778,6 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", -] - [[package]] name = "mio" version = "1.0.3" @@ -3987,18 +3945,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "nix" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" -dependencies = [ - "bitflags 2.9.1", - "cfg-if 1.0.0", - "cfg_aliases 0.1.1", - "libc", -] - [[package]] name = "nix" version = "0.29.0" @@ -4012,18 +3958,6 @@ dependencies = [ "memoffset", ] -[[package]] -name = "nix" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" -dependencies = [ - "bitflags 2.9.1", - "cfg-if 1.0.0", - "cfg_aliases 0.2.1", - "libc", -] - [[package]] name = "nohash-hasher" version = "0.2.0" @@ -4114,21 +4048,30 @@ checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" [[package]] name = "notify" -version = "6.1.1" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +checksum = "c533b4c39709f9ba5005d8002048266593c1cfaf3c5f0739d5b8ab0c6c504009" dependencies = [ "bitflags 2.9.1", - "crossbeam-channel", "filetime", "fsevent-sys", "inotify", "kqueue", "libc", "log", - "mio 0.8.11", + "mio", + "notify-types", "walkdir", - "windows-sys 0.48.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "notify-types" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585d3cb5e12e01aed9e8a1f70d5c6b5e86fe2a6e48fc8cd0b3e0b8df6f6eb174" +dependencies = [ + "instant", ] [[package]] @@ -5482,9 +5425,9 @@ dependencies = [ [[package]] name = "rustyline" -version = "16.0.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62fd9ca5ebc709e8535e8ef7c658eb51457987e48c98ead2be482172accc408d" +checksum = "2ee1e066dc922e513bda599c6ccb5f3bb2b0ea5870a579448f2622993f0a9a2f" dependencies = [ "bitflags 2.9.1", "cfg-if 1.0.0", @@ -5494,7 +5437,7 @@ dependencies = [ "libc", "log", "memchr", - "nix 0.30.1", + "nix", "radix_trie", "unicode-segmentation", "unicode-width 0.2.1", @@ -5653,9 +5596,9 @@ dependencies = [ [[package]] name = "serde_tuple" -version = "0.5.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f025b91216f15a2a32aa39669329a475733590a015835d1783549a56d09427" +checksum = "52569c5296679bd28e2457f067f97d270077df67da0340647da5412c8eac8d9e" dependencies = [ "serde", "serde_tuple_macros", @@ -5663,13 +5606,13 @@ dependencies = [ [[package]] name = "serde_tuple_macros" -version = "0.5.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4076151d1a2b688e25aaf236997933c66e18b870d0369f8b248b8ab2be630d7e" +checksum = "2f46c707781471741d5f2670edb36476479b26e94cf43efe21ca3c220b97ef2e" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.100", ] [[package]] @@ -5789,7 +5732,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio 1.0.3", + "mio", "signal-hook", ] @@ -6136,16 +6079,6 @@ dependencies = [ "xterm-query", ] -[[package]] -name = "terminal_size" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" -dependencies = [ - "rustix 0.38.44", - "windows-sys 0.48.0", -] - [[package]] name = "terminal_size" version = "0.4.2" @@ -6298,17 +6231,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ "displaydoc", - "zerovec 0.10.4", -] - -[[package]] -name = "tinystr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" -dependencies = [ - "displaydoc", - "zerovec 0.11.2", + "zerovec", ] [[package]] @@ -6613,7 +6536,6 @@ dependencies = [ "notify", "num-complex", "num_cpus", - "once_cell", "open", "parking_lot", "paste", @@ -6635,7 +6557,7 @@ dependencies = [ "smallvec", "sys-locale", "terminal-light", - "terminal_size 0.3.0", + "terminal_size", "thread_local", "threadpool", "time", @@ -6680,30 +6602,11 @@ dependencies = [ "dashmap 6.1.0", "ecow", "enum-iterator", - "once_cell", "serde", "serde_tuple", "unicode-segmentation", ] -[[package]] -name = "unic-langid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05" -dependencies = [ - "unic-langid-impl", -] - -[[package]] -name = "unic-langid-impl" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658" -dependencies = [ - "tinystr 0.8.1", -] - [[package]] name = "unicode-bidi" version = "0.3.18" @@ -7529,15 +7432,6 @@ dependencies = [ "windows-targets 0.42.2", ] -[[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" version = "0.52.0" @@ -7901,7 +7795,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "292c33df434fde4ecd87a7afecdfa1681a3d29567fc69c774a0d83d32c095331" dependencies = [ - "nix 0.29.0", + "nix", "thiserror 1.0.69", ] @@ -7978,7 +7872,7 @@ dependencies = [ "futures-sink", "futures-util", "hex", - "nix 0.29.0", + "nix", "ordered-stream", "rand", "serde", @@ -8119,15 +8013,6 @@ dependencies = [ "zerovec-derive", ] -[[package]] -name = "zerovec" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" -dependencies = [ - "zerofrom", -] - [[package]] name = "zerovec-derive" version = "0.10.3" diff --git a/Cargo.toml b/Cargo.toml index 731a5f434..53510381c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,36 +1,109 @@ -[package] +[workspace] +members = ["site", "tests_ffi", "pad/editor", "parser"] + +[workspace.package] categories = ["compilers", "algorithms", "multimedia", "parser-implementations"] -description = "A stack-based array programming language" -documentation = "https://docs.rs/uiua" edition = "2021" keywords = ["uiua", "array", "stack", "language", "apl"] license = "MIT" -name = "uiua" readme = "readme.md" repository = "https://github.com/uiua-lang/uiua" rust-version = "1.82.0" version = "0.17.0-dev.2" +[workspace.lints.clippy] +cargo = {level = "warn", priority = -1} +dbg_macro = "warn" +print_stdout = "warn" +non_std_lazy_statics = "warn" + +[workspace.dependencies] +base64 = "0.22.0" +bytemuck = "1.17" +colored = "2" +dashmap = {version = "6", features = ["serde"]} +ecow = {version = "0.2.3", features = ["serde"]} +enum-iterator = "2.1.0" +hound = "3.5.1" +js-sys = "0.3.69" +leptos = "0.6.11" +leptos_router = {version = "0.6.11", features = ["csr"]} +leptos_meta = {version = "0.6.11", features = ["csr"]} +rand = {version = "0.8.5", features = ["small_rng"]} +serde = {version = "1", features = ["derive"]} +serde_json = "1.0.115" +unicode-segmentation = "1.10" +urlencoding = "2" +# NOTE: if you change the wasm-bindgen version, remember to change it in nix/site.nix as well +wasm-bindgen = "=0.2.93" + +[workspace.dependencies.web-sys] +version = "0.3.70" +features = [ + "Clipboard", + "ClipboardEvent", + "CssStyleDeclaration", + "DataTransfer", + "DataTransfer", + "DomRect", + "EventInit", + "File", + "FileList", + "FileReader", + "HtmlAudioElement", + "HtmlBrElement", + "Navigator", + "Node", + "Performance", + "Permissions", + "ResizeObserver", + "ResizeObserverEntry", + "ScrollBehavior", + "ScrollIntoViewOptions", + "ScrollLogicalPosition", + "Selection", + "Storage", + "StorageManager", +] + + +[package] +description = "A stack-based array programming language" +documentation = "https://docs.rs/uiua" +name = "uiua" +categories.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +readme.workspace = true +repository.workspace = true +rust-version.workspace = true +version.workspace = true + + [dependencies] # Uiua dependencies uiua_parser = {path = "parser", version = "0.17.0-dev.2"} # Core dependencies bitflags = {version = "2", features = ["serde"]} -bytemuck = {version = "1.17", features = ["must_cast", "derive", "extern_crate_alloc"]} -colored = "2" +bytemuck = {workspace = true, features = [ + "must_cast", + "derive", + "extern_crate_alloc", +]} +colored.workspace = true crossbeam-channel = "0.5.12" -dashmap = {version = "6", features = ["serde"]} -ecow = {version = "0.2.3", features = ["serde"]} -enum-iterator = "2.1.0" +dashmap.workspace = true +ecow.workspace = true +enum-iterator.workspace = true indexmap = {version = "2", features = ["serde"]} num_cpus = "1.16.0" -once_cell = "1" open = {version = "5", optional = true} parking_lot = "0.12.1" paste = "1.0.14" pathdiff = "0.2.1" -rand = {version = "0.8.5", features = ["small_rng"]} +rand.workspace = true rawrrr = {version = "0.2.1", optional = true} rayon = "1.9.0" regex = "1.10.3" @@ -39,15 +112,15 @@ rustls = {version = "0.23.2", optional = true, default-features = false, feature "tls12", "ring", ]} -serde = {version = "1", features = ["derive", "rc"]} -serde_json = "1" +serde = {workspace = true, features = ["rc"]} +serde_json.workspace = true smallvec = {version = "1.9", features = ["serde", "union", "const_new"]} -terminal_size = {version = "0.3.0", optional = true} +terminal_size = {version = "0.4.2", optional = true} thread_local = "1" threadpool = "1.8.1" time = {version = "0.3.36", features = ["local-offset"]} trash = {version = "5.2.2", optional = true} -unicode-segmentation = "1.10" +unicode-segmentation.workspace = true viuer = {version = "0.9", optional = true} webpki-roots = {version = "1.0.2", optional = true} @@ -57,10 +130,10 @@ hodaun = {version = "0.4.1", optional = true, features = ["output", "wav"]} # Binary dependencies clap = {version = "4", optional = true, features = ["derive"]} color-backtrace = {version = "0.6.1", optional = true} -ctrlc = {version = "=3.4.4", optional = true} +ctrlc = {version = "3.4.6", optional = true} icy_sixel = {version = "0.1.2", optional = true} -notify = {version = "6", optional = true} -rustyline = {version = "16.0.0", optional = true} +notify = {version = "7", optional = true} +rustyline = {version = "15.0.0", optional = true} terminal-light = {version = "1.4.0", optional = true} tokio = {version = "1", optional = true, features = ["io-std", "rt"]} tower-lsp = {version = "0.20.0", optional = true, features = ["proposed"]} @@ -75,13 +148,23 @@ color_quant = {version = "1.1", optional = true} cosmic-text = {version = "0.12.1", optional = true} csv = {version = "1", optional = true} gif = {version = "0.13.1", optional = true} -hound = {version = "3", optional = true} -image = {version = "0.25", optional = true, default-features = false, features = ["bmp", "gif", "ico", "jpeg", "png", "qoi", "webp"]} +hound = {workspace = true, optional = true} +image = {version = "0.25", optional = true, default-features = false, features = [ + "bmp", + "gif", + "ico", + "jpeg", + "png", + "qoi", + "webp", +]} json5 = {version = "0.4.1", optional = true} libffi = {version = "4", optional = true} libloading = {version = "0.8.3", optional = true} nokhwa = {version = "0.10.7", optional = true, features = ["input-native"]} -num-complex = {version = ">=0.4.1", optional = true, default-features = false, features = ["bytemuck"]} +num-complex = {version = ">=0.4.1", optional = true, default-features = false, features = [ + "bytemuck", +]} png = {version = "0.17.16", optional = true} rustfft = {version = "6.2.0", optional = true} rustls-pemfile = {version = "2.1.2", optional = true} @@ -89,8 +172,8 @@ simple_excel_writer = {version = "0.2.0", optional = true} sys-locale = {version = "0.3.1", optional = true} # Web-only dependencies -js-sys = {version = "0.3", optional = true} -wasm-bindgen = {version = "0.2.92", optional = true} +js-sys = {workspace = true, optional = true} +wasm-bindgen = {workspace = true, optional = true} web-sys = {version = "0.3.60", optional = true} # Window dependencies @@ -167,14 +250,6 @@ system = ["libffi?/system"] name = "uiua" required-features = ["binary"] -[workspace] -members = ["site", "tests_ffi", "pad/editor", "parser"] - -[workspace.lints.clippy] -dbg_macro = "warn" -print_stderr = "allow" -print_stdout = "warn" - [lints] workspace = true diff --git a/pad/editor/Cargo.toml b/pad/editor/Cargo.toml index 3cc39adbd..ba274dd73 100644 --- a/pad/editor/Cargo.toml +++ b/pad/editor/Cargo.toml @@ -1,7 +1,14 @@ [package] +description = "Uiua editor" name = "uiua-editor" version = "0.1.0" -edition = "2021" +categories.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +readme.workspace = true +repository.workspace = true +rust-version.workspace = true [lib] crate-type = ["cdylib", "rlib"] @@ -10,45 +17,23 @@ crate-type = ["cdylib", "rlib"] workspace = true [dependencies] -leptos = { version = "0.6.10", features = ["csr"] } -js-sys = "0.3.69" -web-sys = { version = "0.3.70", features = [ - "Window", - "CustomElementRegistry", - "CssStyleDeclaration", - "DomRect", - "Storage", - "HtmlAudioElement", - "HtmlBrElement", - "Selection", - "Node", - "Clipboard", - "ClipboardEvent", - "DataTransfer", - "Navigator", - "Permissions", - "ScrollIntoViewOptions", - "ScrollBehavior", - "ScrollLogicalPosition", - "StorageManager", - "FileReader", - "EventInit", - "DataTransfer", - "File", - "FileList", - "ResizeObserver", - "ResizeObserverEntry", - "Performance", -] } -base64 = "0.22.0" -leptos_router = {version = "0.6.11", features = ["csr"]} -leptos-use = "0.12.0" -uiua = {path = "../..", default-features = false, features = ["batteries", "web"]} +base64.workspace = true +hound.workspace = true +js-sys.workspace = true +leptos = {workspace = true, features = ["csr"]} +leptos_router.workspace = true +serde_json.workspace = true +unicode-segmentation.workspace = true +urlencoding.workspace = true +wasm-bindgen.workspace = true +web-sys = {workspace = true, features = ["CustomElementRegistry", "Window"]} +uiua = {path = "../..", default-features = false, features = [ + "batteries", + "web", +]} image = "0.25" -unicode-segmentation = "1.10" -urlencoding = "2" -wasm-bindgen = "0.2.93" +leptos-use = {version = "0.13.0", default-features = false, features = [ + "use_resize_observer", +]} wasm-bindgen-futures = "0.4.43" -hound = "3.5.1" -serde_json = "1.0.115" futures = "0.3.30" diff --git a/parser/Cargo.toml b/parser/Cargo.toml index 152e2f751..b38ea8af3 100644 --- a/parser/Cargo.toml +++ b/parser/Cargo.toml @@ -1,25 +1,29 @@ [package] -categories = ["parser-implementations"] description = "Uiua parser implementation" documentation = "https://docs.rs/uiua_parser" -edition = "2021" -keywords = ["uiua", "array", "stack", "language", "apl"] -license = "MIT" name = "uiua_parser" -repository = "https://github.com/uiua-lang/uiua" -rust-version = "1.82.0" -version = "0.17.0-dev.2" +categories.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +readme.workspace = true +repository.workspace = true +rust-version.workspace = true +version.workspace = true [lints] workspace = true [dependencies] -bytemuck = {version = "1.17", features = ["must_cast", "derive", "extern_crate_alloc"]} -colored = "2" -dashmap = {version = "6", features = ["serde"]} -ecow = {version = "0.2.3", features = ["serde"]} -enum-iterator = "2.1.0" -once_cell = "1" -serde = {version = "1", features = ["derive", "rc"]} -serde_tuple = "0.5.0" -unicode-segmentation = "1.10" +bytemuck = {workspace = true, features = [ + "must_cast", + "derive", + "extern_crate_alloc", +]} +colored.workspace = true +dashmap.workspace = true +ecow.workspace = true +enum-iterator.workspace = true +serde = {workspace = true, features = ["rc"]} +unicode-segmentation.workspace = true +serde_tuple = "1.0.0" diff --git a/parser/src/split.rs b/parser/src/split.rs index 66be6c8e2..1d306db2f 100644 --- a/parser/src/split.rs +++ b/parser/src/split.rs @@ -1,13 +1,12 @@ -use std::{collections::HashMap, fmt}; +use std::{collections::HashMap, fmt, sync::LazyLock}; use enum_iterator::Sequence; -use once_cell::sync::Lazy; use crate::{ast::NumWord, Complex, SysOp}; use super::Primitive; -static ALIASES: Lazy> = Lazy::new(|| { +static ALIASES: LazyLock> = LazyLock::new(|| { [ (Primitive::Identity, &["id"] as &[_]), (Primitive::Gap, &["ga"]), @@ -148,7 +147,7 @@ impl Primitive { if name.len() < 2 { return None; } - static REVERSE_ALIASES: Lazy> = Lazy::new(|| { + static REVERSE_ALIASES: LazyLock> = LazyLock::new(|| { ALIASES .iter() .flat_map(|(prim, aliases)| aliases.iter().map(|&s| (s, *prim))) diff --git a/site/Cargo.toml b/site/Cargo.toml index 5206fde12..cb67c4e3e 100644 --- a/site/Cargo.toml +++ b/site/Cargo.toml @@ -1,58 +1,35 @@ [package] -edition = "2021" +description = "Uiua website" name = "site" version = "0.1.0" +categories.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +readme.workspace = true +repository.workspace = true +rust-version.workspace = true [lints] workspace = true [dependencies] -base64 = "0.22.0" +base64.workspace = true +enum-iterator.workspace = true +js-sys.workspace = true +leptos.workspace = true +leptos_meta.workspace = true +leptos_router.workspace = true +rand.workspace = true +serde.workspace = true +serde_json.workspace = true +urlencoding.workspace = true +wasm-bindgen.workspace = true +web-sys = {workspace = true, features = ["HtmlElement"]} comrak = "0.39.0" console_error_panic_hook = "0.1.7" -enum-iterator = "2.0.0" -js-sys = "0.3" -leptos = "0.6.11" -leptos_meta = {version = "0.6.11", features = ["csr"]} -leptos_router = {version = "0.6.11", features = ["csr"]} -rand = {version = "0.8.5", features = ["small_rng"]} -serde = {version = "1", features = ["derive"]} -serde_json = "1" uiua = {path = "..", default-features = false, features = ["batteries", "web"]} uiua-editor = {path = "../pad/editor"} -urlencoding = "2" -# NOTE: if you change the wasm-bindgen version, remember to change it in nix/site.nix as well -wasm-bindgen = "=0.2.93" - -[dependencies.web-sys] -features = [ - "CssStyleDeclaration", - "DomRect", - "Storage", - "HtmlAudioElement", - "HtmlBrElement", - "HtmlElement", - "Selection", - "Node", - "Clipboard", - "ClipboardEvent", - "DataTransfer", - "Navigator", - "Permissions", - "ScrollIntoViewOptions", - "ScrollBehavior", - "ScrollLogicalPosition", - "StorageManager", - "FileReader", - "EventInit", - "DataTransfer", - "File", - "FileList", - "ResizeObserver", - "ResizeObserverEntry", - "Performance", -] -version = "0.3.70" [features] audio = [] # Dummy for rust-analyzer diff --git a/src/constant.rs b/src/constant.rs index f0464a374..68adfdb60 100644 --- a/src/constant.rs +++ b/src/constant.rs @@ -1,11 +1,10 @@ use std::{ f64::consts::TAU, path::{Path, PathBuf}, - sync::OnceLock, + sync::{LazyLock, OnceLock}, }; use ecow::EcoVec; -use once_cell::sync::Lazy; use rand::prelude::*; use crate::{ @@ -19,9 +18,9 @@ pub struct ConstantDef { /// The constant's class pub class: ConstClass, /// The constant's value - pub value: Lazy, + pub value: LazyLock, /// The constant's documentation - pub doc: Lazy, + pub doc: LazyLock, /// The suggested replacement because of deprecation pub deprecation: Option<&'static str>, } @@ -135,9 +134,9 @@ macro_rules! constant { $(#[$attr])* ConstantDef { name: $name, - value: Lazy::new(|| {$value.into()}), + value: LazyLock::new(|| {$value.into()}), class: ConstClass::$class, - doc: Lazy::new(|| { + doc: LazyLock::new(|| { let mut s = String::new(); $( s.push_str($doc.trim()); diff --git a/src/main.rs b/src/main.rs index d909d8674..c2bc10e7f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,7 +20,6 @@ use std::{ use clap::{Parser, Subcommand}; use colored::*; use notify::{event::ModifyKind, EventKind, RecursiveMode, Watcher}; -use once_cell::sync::Lazy; use parking_lot::Mutex; use rustyline::{error::ReadlineError, DefaultEditor}; use terminal_size::terminal_size; @@ -34,7 +33,7 @@ use uiua::{ }; static PRESSED_CTRL_C: AtomicBool = AtomicBool::new(false); -static WATCH_CHILD: Lazy>> = Lazy::new(Default::default); +static WATCH_CHILD: Mutex> = Mutex::new(None); fn fail(e: UiuaError) -> T { eprintln!("{}", e.report()); diff --git a/src/stand.rs b/src/stand.rs index 91babb79c..c65ddcfad 100644 --- a/src/stand.rs +++ b/src/stand.rs @@ -1,6 +1,4 @@ -use std::{env, fs, io, path::Path}; - -use once_cell::sync::Lazy; +use std::{env, fs, io, path::Path, sync::LazyLock}; use crate::{Assembly, Compiler, NativeSys, UiuaResult}; @@ -43,5 +41,5 @@ fn load_asm() -> io::Result> { Ok(Some(asm)) } -pub static STAND_ASM: Lazy> = - Lazy::new(|| load_asm().unwrap_or_else(|e| panic!("{e}"))); +pub static STAND_ASM: LazyLock> = + LazyLock::new(|| load_asm().unwrap_or_else(|e| panic!("{e}"))); diff --git a/src/sys/mod.rs b/src/sys/mod.rs index d134866a9..1a97f329f 100644 --- a/src/sys/mod.rs +++ b/src/sys/mod.rs @@ -7,13 +7,12 @@ use std::{ mem::take, net::SocketAddr, path::{Path, PathBuf}, - sync::Arc, + sync::{Arc, LazyLock}, time::Duration, }; #[cfg(feature = "image")] use image::DynamicImage; -use once_cell::sync::Lazy; use parking_lot::Mutex; use time::UtcOffset; @@ -46,13 +45,13 @@ use in example Uiua code ✨"; /// Access the built-in `example.ua` file pub fn example_ua(f: impl FnOnce(&mut String) -> T) -> T { - static S: Lazy> = Lazy::new(|| Mutex::new(EXAMPLE_UA.to_string())); + static S: LazyLock> = LazyLock::new(|| Mutex::new(EXAMPLE_UA.to_string())); f(&mut S.lock()) } /// Access the built-in `example.txt` file pub fn example_txt(f: impl FnOnce(&mut String) -> T) -> T { - static S: Lazy> = Lazy::new(|| Mutex::new(EXAMPLE_TXT.to_string())); + static S: LazyLock> = LazyLock::new(|| Mutex::new(EXAMPLE_TXT.to_string())); f(&mut S.lock()) } diff --git a/src/sys/native.rs b/src/sys/native.rs index f059dfde6..f440b66ba 100644 --- a/src/sys/native.rs +++ b/src/sys/native.rs @@ -9,7 +9,7 @@ use std::{ slice, sync::{ atomic::{self, AtomicBool, AtomicU64}, - Arc, + Arc, LazyLock, }, thread::sleep, time::Duration, @@ -19,7 +19,6 @@ use colored::Colorize; #[cfg(feature = "webcam")] use crossbeam_channel as channel; use dashmap::DashMap; -use once_cell::sync::Lazy; use crate::{ terminal_size, GitTarget, Handle, MetaPtr, ReadLinesFn, ReadLinesReturnFn, Span, SysBackend, @@ -298,7 +297,7 @@ impl GlobalNativeSys { } } -static NATIVE_SYS: Lazy = Lazy::new(Default::default); +static NATIVE_SYS: LazyLock = LazyLock::new(Default::default); #[cfg(all(feature = "audio", feature = "binary"))] #[doc(hidden)] diff --git a/tests_ffi/Cargo.toml b/tests_ffi/Cargo.toml index caa4971da..4d8546d40 100644 --- a/tests_ffi/Cargo.toml +++ b/tests_ffi/Cargo.toml @@ -1,7 +1,14 @@ [package] -edition = "2021" +description = "Uiua FFI tests" name = "tests_ffi" version = "0.1.0" +categories.workspace = true +edition.workspace = true +keywords.workspace = true +license.workspace = true +readme.workspace = true +repository.workspace = true +rust-version.workspace = true [lib] crate-type = ["cdylib"]