diff --git a/.cargo/config.clang.toml b/.cargo/config.clang.toml new file mode 100644 index 000000000..b903e9bb5 --- /dev/null +++ b/.cargo/config.clang.toml @@ -0,0 +1,32 @@ +# +# Copyright (c) 2024 Elide Technologies, Inc. +# +# Licensed under the MIT license (the "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://opensource.org/license/mit/ +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under the License. +# + +[build] +rustflags = [ + # Enforce completely position-independent executables. + "-Crelocation-model=pic", + + # Link with LLD through clang; enable linker plugin LTO. + "-Clinker=clang", + "-Clink-arg=-fuse-ld=lld", + "-Clinker-plugin-lto", + + # Target CPU. + "-Ctarget-cpu=x86-64-v3", +] + +[env] +ELIDE_ROOT = { value = ".", relative = true } +SQLITE3_STATIC = { value = "1" } +SQLITE3_LIB_DIR = { value = "third_party/sqlite/install/lib", relative = true } +SQLITE3_INCLUDE_DIR = { value = "third_party/sqlite/install/include", relative = true } diff --git a/.cargo/config.pgo.toml b/.cargo/config.pgo.toml new file mode 100644 index 000000000..a5b238a30 --- /dev/null +++ b/.cargo/config.pgo.toml @@ -0,0 +1,40 @@ +# +# Copyright (c) 2024 Elide Technologies, Inc. +# +# Licensed under the MIT license (the "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://opensource.org/license/mit/ +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under the License. +# + +[build] +rustflags = [ + # Enforce completely position-independent executables. + "-Crelocation-model=pic", + + # Link with LLD through clang; enable linker plugin LTO. + "-Clinker=clang", + "-Clink-arg=-fuse-ld=lld", + "-Clinker-plugin-lto", + + # Enable PGO. + "-Cprofile-use=./tools/merged.profdata", + + # Target CPU. + "-Ctarget-cpu=x86-64-v3", +] + +[env] +CC = { value = "clang" } +CXX = { value = "clang++" } +LD = { value = "lld" } +AR = { value = "llvm-ar" } + +ELIDE_ROOT = { value = ".", relative = true } +SQLITE3_STATIC = { value = "1" } +SQLITE3_LIB_DIR = { value = "third_party/sqlite/install/lib", relative = true } +SQLITE3_INCLUDE_DIR = { value = "third_party/sqlite/install/include", relative = true } diff --git a/.cargo/config.profiler.toml b/.cargo/config.profiler.toml new file mode 100644 index 000000000..760d463c8 --- /dev/null +++ b/.cargo/config.profiler.toml @@ -0,0 +1,40 @@ +# +# Copyright (c) 2024 Elide Technologies, Inc. +# +# Licensed under the MIT license (the "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://opensource.org/license/mit/ +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under the License. +# + +[build] +rustflags = [ + # Enforce completely position-independent executables. + "-Crelocation-model=pic", + + # Link with LLD through clang; enable linker plugin LTO. + "-Clinker=clang", + "-Clink-arg=-fuse-ld=lld", + "-Clinker-plugin-lto", + + # Generate profile data. + "-Cprofile-generate=/tmp/pgo-data", + + # Target CPU. + "-Ctarget-cpu=x86-64-v3", +] + +[env] +CC = { value = "clang" } +CXX = { value = "clang++" } +LD = { value = "lld" } +AR = { value = "llvm-ar" } + +ELIDE_ROOT = { value = ".", relative = true } +SQLITE3_STATIC = { value = "1" } +SQLITE3_LIB_DIR = { value = "third_party/sqlite/install/lib", relative = true } +SQLITE3_INCLUDE_DIR = { value = "third_party/sqlite/install/include", relative = true } diff --git a/.cargo/config.toml b/.cargo/config.toml index e185aa3f1..b903e9bb5 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -13,12 +13,16 @@ [build] rustflags = [ - # Enable Tokio unstable. - # "--cfg", - # "tokio_unstable", - # Enforce completely position-independent executables. "-Crelocation-model=pic", + + # Link with LLD through clang; enable linker plugin LTO. + "-Clinker=clang", + "-Clink-arg=-fuse-ld=lld", + "-Clinker-plugin-lto", + + # Target CPU. + "-Ctarget-cpu=x86-64-v3", ] [env] diff --git a/.github/workflows/checks.apicheck.yml b/.github/workflows/checks.apicheck.yml index 18e06da8c..e32b7e0de 100644 --- a/.github/workflows/checks.apicheck.yml +++ b/.github/workflows/checks.apicheck.yml @@ -98,7 +98,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] diff --git a/.github/workflows/checks.formatting.yml b/.github/workflows/checks.formatting.yml index 06b8b40fa..7afaf72e4 100644 --- a/.github/workflows/checks.formatting.yml +++ b/.github/workflows/checks.formatting.yml @@ -100,7 +100,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] diff --git a/.github/workflows/job.build.yml b/.github/workflows/job.build.yml index 7c0c80916..5c8b16437 100644 --- a/.github/workflows/job.build.yml +++ b/.github/workflows/job.build.yml @@ -139,11 +139,12 @@ name: Framework description: "Gradle cache key" env: + CC: clang + LD: lld + CXX: clang++ + AR: llvm-ar + RANLIB: llvm-ranlib BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} - # SCCACHE_WEBDAV_ENDPOINT: "https://sccache.less.build" - # SCCACHE_WEBDAV_USERNAME: "apikey" - # SCCACHE_WEBDAV_PASSWORD: ${{ secrets.BUILDLESS_APIKEY }} - # SCCACHE_REDIS: "rediss://apikey:${{ secrets.BUILDLESS_APIKEY }}@redis.less.build:6380" permissions: contents: read @@ -274,16 +275,16 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] - - name: "Setup: LLVM 18" + - name: "Setup: LLVM 19" run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh - sudo ./llvm.sh 18 all - export LLVM_PATH=/usr/lib/llvm-18 + sudo ./llvm.sh 19 all + export LLVM_PATH=/usr/lib/llvm-19 export PATH="$LLVM_PATH/bin:$PATH" export LD_LIBRARY_PATH="$LLVM_PATH/lib:$LD_LIBRARY_PATH" export LLVM_CONFIG="$LLVM_PATH/bin/llvm-config" diff --git a/.github/workflows/job.cli.yml b/.github/workflows/job.cli.yml index e16e450fe..459752c7c 100644 --- a/.github/workflows/job.cli.yml +++ b/.github/workflows/job.cli.yml @@ -120,6 +120,14 @@ name: CLI permissions: contents: read +env: + CC: clang + LD: lld + CXX: clang++ + AR: llvm-ar + RANLIB: llvm-ranlib + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + jobs: ## ## Job: CLI (Native Debug) @@ -197,7 +205,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] @@ -241,7 +249,7 @@ jobs: if: success() && !contains(matrix.runner, 'windows') run: | pushd packages/cli/build/native/nativeCompile; - xz -9kv elide.debug; + xz -9kv elide; popd; echo "Binary compressed."; - name: "Artifacts: Debug Binary (Unix)" @@ -250,14 +258,14 @@ jobs: with: name: cli-debug-${{ matrix.tag }} path: | - ./packages/cli/build/native/nativeCompile/elide.debug.xz + ./packages/cli/build/native/nativeCompile/elide.xz - name: "Artifacts: Debug Binary (Windows)" uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 if: success() && contains(matrix.runner, 'windows') with: name: cli-debug-${{ matrix.tag }} path: | - ./packages/cli/build/native/nativeCompile/elide.debug + ./packages/cli/build/native/nativeCompile/elide - name: "Artifacts: Dashboard Dump" uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 if: success() @@ -351,7 +359,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] diff --git a/.github/workflows/job.containers.yml b/.github/workflows/job.containers.yml index b3b5fff7e..0318b015f 100644 --- a/.github/workflows/job.containers.yml +++ b/.github/workflows/job.containers.yml @@ -209,7 +209,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] @@ -321,7 +321,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] diff --git a/.github/workflows/job.test.yml b/.github/workflows/job.test.yml index 1fe7045eb..a389cc2c1 100644 --- a/.github/workflows/job.test.yml +++ b/.github/workflows/job.test.yml @@ -132,6 +132,11 @@ name: Tests description: "Sonar token" env: + CC: clang + LD: lld + CXX: clang++ + AR: llvm-ar + RANLIB: llvm-ranlib BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} permissions: @@ -201,12 +206,12 @@ jobs: storage.googleapis.com:443 - name: "Setup: Apt Dependencies" run: sudo apt-get install -y libtool-bin build-essential libc6-dev - - name: "Setup: LLVM 18" + - name: "Setup: LLVM 19" run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh - sudo ./llvm.sh 18 all - export LLVM_PATH=/usr/lib/llvm-18 + sudo ./llvm.sh 19 all + export LLVM_PATH=/usr/lib/llvm-19 export PATH="$LLVM_PATH/bin:$PATH" export LD_LIBRARY_PATH="$LLVM_PATH/lib:$LD_LIBRARY_PATH" export LLVM_CONFIG="$LLVM_PATH/bin/llvm-config" @@ -279,7 +284,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] @@ -469,12 +474,12 @@ jobs: storage.googleapis.com:443 - name: "Setup: Apt Dependencies" run: sudo apt-get install -y libtool-bin build-essential libc6-dev - - name: "Setup: LLVM 18" + - name: "Setup: LLVM 19" run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh - sudo ./llvm.sh 18 all - export LLVM_PATH=/usr/lib/llvm-18 + sudo ./llvm.sh 19 all + export LLVM_PATH=/usr/lib/llvm-19 export PATH="$LLVM_PATH/bin:$PATH" export LD_LIBRARY_PATH="$LLVM_PATH/lib:$LD_LIBRARY_PATH" export LLVM_CONFIG="$LLVM_PATH/bin/llvm-config" @@ -541,7 +546,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] diff --git a/.github/workflows/on.scheduled.yml b/.github/workflows/on.scheduled.yml index 02d21f107..b273040ca 100644 --- a/.github/workflows/on.scheduled.yml +++ b/.github/workflows/on.scheduled.yml @@ -16,9 +16,14 @@ name: Checks "on": workflow_dispatch: {} schedule: - - cron: "0 0-23/2 * * *" + - cron: "0 0-23/6 * * *" env: + CC: clang + LD: lld + CXX: clang++ + AR: llvm-ar + RANLIB: llvm-ranlib BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} permissions: @@ -177,16 +182,16 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "9.2.0" + version: "10.5.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] - - name: "Setup: LLVM 18" + - name: "Setup: LLVM 19" run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh - sudo ./llvm.sh 18 all - export LLVM_PATH=/usr/lib/llvm-18 + sudo ./llvm.sh 19 all + export LLVM_PATH=/usr/lib/llvm-19 export PATH="$LLVM_PATH/bin:$PATH" export LD_LIBRARY_PATH="$LLVM_PATH/lib:$LD_LIBRARY_PATH" export LLVM_CONFIG="$LLVM_PATH/bin/llvm-config" diff --git a/Cargo.lock b/Cargo.lock index 9d9f4c106..45d89c492 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,12 +60,6 @@ dependencies = [ "libc", ] -[[package]] -name = "annotate-snippets" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7021ce4924a3f25f802b2cccd1af585e39ea1a363a1aa2e72afe54b67a3a7a7" - [[package]] name = "anstream" version = "0.6.18" @@ -127,31 +121,6 @@ name = "arbitrary" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" -dependencies = [ - "derive_arbitrary", -] - -[[package]] -name = "arc-swap" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" - -[[package]] -name = "arcstr" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03918c3dbd7701a85c6b9887732e2921175f26c350b4563841d0958c21d57e6d" - -[[package]] -name = "argfile" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a1cc0ba69de57db40674c66f7cf2caee3981ddef084388482c95c0e2133e5e8" -dependencies = [ - "fs-err 2.11.0", - "os_str_bytes 7.1.0", -] [[package]] name = "arrayvec" @@ -165,22 +134,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7330592adf847ee2e3513587b4db2db410a0d751378654e7e993d9adcbe5c795" -[[package]] -name = "astral-tokio-tar" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65152cbda42e8ab5ecff69e8811e8333d69188c7d5c41e3eedb8d127e3f23b27" -dependencies = [ - "filetime", - "futures-core", - "libc", - "portable-atomic", - "rustc-hash 2.1.1", - "tokio", - "tokio-stream", - "xattr 1.4.0", -] - [[package]] name = "async-attributes" version = "1.1.2" @@ -205,20 +158,16 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.18" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" +checksum = "310c9bcae737a48ef5cdee3174184e6d548b292739ede61a1f955ef76a738861" dependencies = [ - "bzip2", "flate2", "futures-core", "futures-io", "memchr", "pin-project-lite", "tokio", - "xz2", - "zstd", - "zstd-safe", ] [[package]] @@ -397,40 +346,6 @@ dependencies = [ "syn 2.0.98", ] -[[package]] -name = "async_http_range_reader" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b537c00269e3f943e06f5d7cabf8ccd281b800fd0c7f111dd82f77154334197" -dependencies = [ - "bisection", - "futures 0.3.31", - "http-content-range", - "itertools 0.13.0", - "memmap2 0.9.5", - "reqwest", - "reqwest-middleware", - "thiserror 1.0.69", - "tokio", - "tokio-stream", - "tokio-util", - "tracing", -] - -[[package]] -name = "async_zip" -version = "0.0.17" -source = "git+https://github.com/charliermarsh/rs-async-zip?rev=c909fda63fcafe4af496a07bfda28a5aae97e58d#c909fda63fcafe4af496a07bfda28a5aae97e58d" -dependencies = [ - "async-compression", - "crc32fast", - "futures-lite", - "pin-project", - "thiserror 1.0.69", - "tokio", - "tokio-util", -] - [[package]] name = "atomic-waker" version = "1.1.2" @@ -457,7 +372,7 @@ dependencies = [ "http-body", "http-body-util", "itoa", - "matchit 0.7.3", + "matchit", "memchr", "mime", "percent-encoding", @@ -529,16 +444,11 @@ dependencies = [ name = "base" version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "arbitrary", "base64 0.22.1", "base64-simd", - "const_fn", - "const_panic", "crc32fast", "crc64fast", - "libabort", "smartstring", - "uuid", ] [[package]] @@ -572,31 +482,13 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" -dependencies = [ - "bitflags 2.8.0", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.98", -] - [[package]] name = "bindgen" version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -605,7083 +497,3602 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash", "shlex", "syn 2.0.98", ] [[package]] -name = "biome_console" -version = "0.5.8" +name = "bitflags" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678dfa9a976d1978c136ecddcdf9e9f4947aee7ef2003b4b988dfc78606bfd79" -dependencies = [ - "biome_markup", - "biome_text_size", - "schemars", - "serde", - "termcolor", - "unicode-segmentation", - "unicode-width 0.1.14", -] +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] -name = "biome_css_formatter" -version = "0.5.7" +name = "bitflags" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac5c2e2be9a80b221e5272f0c7156b4312996e164d5e8c04f93d97b5379ada20" -dependencies = [ - "biome_css_syntax", - "biome_diagnostics", - "biome_formatter", - "biome_rowan", - "biome_suppression", -] +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] -name = "biome_css_syntax" -version = "0.5.8" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456a8f0447f0ad2522668a3b30a89d2fb9f34837474025f59e58487df589ab96" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "biome_rowan", - "biome_string_case", - "serde", + "generic-array", ] [[package]] -name = "biome_deserialize" -version = "0.5.7" +name = "blocking" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b4443260d505148169f5fb35634c2a60d8489882f8c9c3f1db8b7cf0cb57632" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ - "biome_console", - "biome_deserialize_macros", - "biome_diagnostics", - "biome_json_parser", - "biome_json_syntax", - "biome_rowan", - "bitflags 2.8.0", - "indexmap 1.9.3", - "serde", - "serde_json", - "tracing", + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", ] [[package]] -name = "biome_deserialize_macros" -version = "0.5.7" +name = "build_const" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fc1244cc5f0cc267bd26b601e9ccd6851c6a4d395bba07e27c2de641dc84479" +checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" + +[[package]] +name = "builder" +version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "convert_case", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", + "bindgen", + "cc", + "model", ] [[package]] -name = "biome_diagnostics" -version = "0.5.8" +name = "bumpalo" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef09f4f5e519a73f1a36c0ffbf0a68ac844bf1a6eb3e9ced215a3d0c5b1319e7" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" dependencies = [ - "backtrace", - "biome_console", - "biome_diagnostics_categories", - "biome_diagnostics_macros", - "biome_rowan", - "biome_text_edit", - "biome_text_size", - "bpaf", - "enumflags2", - "oxc_resolver", - "serde", - "serde_ini", - "serde_json", - "termcolor", - "unicode-width 0.1.14", + "allocator-api2", ] [[package]] -name = "biome_diagnostics_categories" -version = "0.5.7" +name = "bytecheck" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "832080d68a2ee2f198d98ff5d26fc0f5c2566907f773d105a4a049ee07664d19" +checksum = "50690fb3370fb9fe3550372746084c46f2ac8c9685c583d2be10eefd89d3d1a3" dependencies = [ - "quote", - "serde", + "bytecheck_derive", + "ptr_meta", + "rancor", + "simdutf8", ] [[package]] -name = "biome_diagnostics_macros" -version = "0.5.7" +name = "bytecheck_derive" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540fec04d2e789fb992128c63d111b650733274afffff1cb3f26c8dff5167d3b" +checksum = "efb7846e0cb180355c2dec69e721edafa36919850f1a9f52ffba4ebc0393cb71" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.98", ] [[package]] -name = "biome_formatter" -version = "0.5.7" +name = "bytecount" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d351a9dc49ae024220a83c44329ab14a9e66887a7ca51fc7ae875e9e56f626c" -dependencies = [ - "biome_console", - "biome_deserialize", - "biome_deserialize_macros", - "biome_diagnostics", - "biome_rowan", - "cfg-if", - "countme", - "drop_bomb", - "indexmap 1.9.3", - "rustc-hash 1.1.0", - "tracing", - "unicode-width 0.1.14", -] +checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] -name = "biome_js_factory" -version = "0.5.7" +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9847f4dfd16ee242d12b90f96f6b2eb33238dfc4eac7b5c045e14eebe717b7" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ - "biome_js_syntax", - "biome_rowan", + "byteorder", + "iovec", ] [[package]] -name = "biome_js_formatter" -version = "0.5.7" +name = "bytes" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bc1f8b67a8fa45555a7a9ea1004eca73c159b7f1941050311d35e312cff3bb8" -dependencies = [ - "biome_console", - "biome_deserialize", - "biome_deserialize_macros", - "biome_diagnostics_categories", - "biome_formatter", - "biome_js_factory", - "biome_js_syntax", - "biome_json_syntax", - "biome_rowan", - "biome_text_size", - "biome_unicode_table", - "cfg-if", - "smallvec", - "tracing", - "unicode-width 0.1.14", -] +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] -name = "biome_js_syntax" -version = "0.5.7" +name = "cacache" +version = "13.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38a524bd8b1f5f7b3355dfe2744196227ee15e9aa3446d562deb9ed511cf2015" +checksum = "5c5063741c7b2e260bbede781cf4679632dd90e2718e99f7715e46824b65670b" dependencies = [ - "biome_console", - "biome_diagnostics", - "biome_rowan", + "digest", + "either", + "futures 0.3.31", + "hex", + "libc", + "memmap2", + "miette 5.10.0", + "reflink-copy", "serde", + "serde_derive", + "serde_json", + "sha1", + "sha2", + "ssri", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "walkdir", ] [[package]] -name = "biome_json_factory" -version = "0.5.7" +name = "castaway" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e409eb289040f3660689dad178b00b6ac8cfa9a7fffd8225f35cb6b3d36437cf" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" dependencies = [ - "biome_json_syntax", - "biome_rowan", + "rustversion", ] [[package]] -name = "biome_json_formatter" -version = "0.5.7" +name = "cc" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8826e8985a85dbcf674c62fabf8c7a8718e6a8eba6e1c780796d1651d1fc2c8" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ - "biome_deserialize", - "biome_deserialize_macros", - "biome_diagnostics", - "biome_formatter", - "biome_json_syntax", - "biome_rowan", - "biome_suppression", + "jobserver", + "libc", + "shlex", ] [[package]] -name = "biome_json_parser" -version = "0.5.7" +name = "cesu8" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c6d23fb9b683e6356c094b4a0cb38f8aa0acee60ce9c3ef24628d21a204de4d" -dependencies = [ - "biome_console", - "biome_diagnostics", - "biome_json_factory", - "biome_json_syntax", - "biome_parser", - "biome_rowan", - "biome_unicode_table", - "tracing", - "unicode-bom", -] +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] -name = "biome_json_syntax" -version = "0.5.7" +name = "cexpr" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2645ca57f75680d3d390b2482c35db5850b1d849e1f96151a12f15f4abdb097" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ - "biome_rowan", - "serde", + "nom 7.1.3", ] [[package]] -name = "biome_markup" -version = "0.5.7" +name = "cfg-if" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a7f11cf91599594528e97d216044ef4e410a103327212d909f215cbafe2fd9c" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", -] +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "biome_parser" -version = "0.5.8" +name = "chrono" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "811bb6840896a74483426ec61b9727731d6222caa3c09a0440c20d662cd1367e" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ - "biome_console", - "biome_diagnostics", - "biome_rowan", - "biome_unicode_table", - "drop_bomb", - "enumflags2", - "unicode-bom", + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-link", ] [[package]] -name = "biome_rowan" -version = "0.5.8" +name = "chrono-humanize" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4442bc598e3baead7453c4070b8b326f3b54287a583105d6ffd13c28b3ef0" +checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" dependencies = [ - "biome_text_edit", - "biome_text_size", - "countme", - "hashbrown 0.14.5", - "rustc-hash 2.1.1", - "serde", - "tracing", + "chrono", ] [[package]] -name = "biome_string_case" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5868798da491b19a5b27a0bad5d8727e1e65060fa2dac360b382df00ff520774" - -[[package]] -name = "biome_suppression" -version = "0.5.7" +name = "clang-sys" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb49c8239454ea68c2c59994b2ccda39334f2f4d6980cbd1f8bf5c295ac39d5" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ - "biome_console", - "biome_diagnostics", - "biome_rowan", + "glob", + "libc", + "libloading", ] [[package]] -name = "biome_text_edit" -version = "0.5.8" +name = "clap" +version = "4.5.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b42189daa66f0dd20af2a4dd405c28ccf4f5a687c08a5fa4d8e1b31ce2295b" +checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767" dependencies = [ - "biome_text_size", - "serde", - "similar", + "clap_builder", + "clap_derive", ] [[package]] -name = "biome_text_size" -version = "0.5.8" +name = "clap_builder" +version = "4.5.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "672627531edd258f1a9ecdd9bd5ff3ea6c36768622ce2cedc12dc03cb51605c9" +checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863" dependencies = [ - "schemars", - "serde", + "anstream", + "anstyle", + "clap_lex", + "strsim", + "terminal_size", ] [[package]] -name = "biome_unicode_table" -version = "0.5.9" +name = "clap_derive" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb9696fda489e25051248bad5a73bdd53f8d063dc3a7f4a71d4c6aadf6fbcb18" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.98", +] [[package]] -name = "bisection" -version = "0.1.0" +name = "clap_lex" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021e079a1bab0ecce6cf4b4b74c0c37afa4a697136eb3b127875c84a8f04a8c3" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] -name = "bitflags" -version = "1.3.2" +name = "cmake" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] [[package]] -name = "bitflags" -version = "2.8.0" +name = "colorchoice" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] -name = "block-buffer" -version = "0.10.4" +name = "colored" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" dependencies = [ - "generic-array", + "windows-sys 0.59.0", ] [[package]] -name = "blocking" -version = "1.6.1" +name = "combine" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", + "bytes 1.10.0", + "memchr", ] [[package]] -name = "boring" -version = "4.14.0" +name = "compact_str" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e10058cf3b10c9eca798177ac6ee3c895c7312d094618de60a2bb6f2698f25f" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" dependencies = [ - "bitflags 2.8.0", - "boring-sys", - "foreign-types 0.5.0", - "libc", - "openssl-macros", + "castaway", + "cfg-if", + "itoa", + "rustversion", + "ryu", + "static_assertions", ] [[package]] -name = "boring-sys" -version = "4.14.0" +name = "concurrent-queue" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84e89df19c49b8b7c670349a2341c674bccf1fb39bf565fa15cca0b10d1effc4" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ - "autocfg", - "bindgen 0.70.1", - "cmake", - "fs_extra", - "fslock", + "crossbeam-utils", ] [[package]] -name = "boxcar" -version = "0.2.10" +name = "config" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225450ee9328e1e828319b48a89726cffc1b0ad26fd9211ad435de9fa376acae" +checksum = "8cf9dc8d4ef88e27a8cb23e85cb116403dedd57f7971964dc4b18ccead548901" dependencies = [ - "loom", + "pathdiff", + "serde", + "winnow", ] [[package]] -name = "bpaf" -version = "0.9.16" +name = "console" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "913d667d4716acd286a0dc58824a4c0ec8ce58eeca95cfb58172d17a9ec01035" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ - "bpaf_derive", + "encode_unicode", + "libc", + "once_cell", + "unicode-width 0.2.0", + "windows-sys 0.59.0", ] [[package]] -name = "bpaf_derive" -version = "0.5.16" +name = "console-api" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d8a24f809c4cda0832689019daa067d0ae927d801429196b238a3e8cb0cd3e" +checksum = "8030735ecb0d128428b64cd379809817e620a40e5001c54465b99ec5feec2857" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "futures-core", + "prost", + "prost-types", + "tonic", + "tracing-core", ] [[package]] -name = "bstr" -version = "1.11.3" +name = "console-subscriber" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +checksum = "6539aa9c6a4cd31f4b1c040f860a1eac9aa80e7df6b05d506a6e7179936d6a01" dependencies = [ - "memchr", - "regex-automata 0.4.9", + "console-api", + "crossbeam-channel", + "crossbeam-utils", + "futures-task", + "hdrhistogram", + "humantime", + "hyper-util", + "prost", + "prost-types", "serde", + "serde_json", + "thread_local", + "tokio", + "tokio-stream", + "tonic", + "tracing", + "tracing-core", + "tracing-subscriber", ] [[package]] -name = "build_const" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" - -[[package]] -name = "builder" -version = "1.0.0-alpha13-SNAPSHOT" -dependencies = [ - "base", - "bindgen 0.71.1", - "cc", - "model", -] - -[[package]] -name = "bumpalo" -version = "3.17.0" +name = "console_error_panic_hook" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" dependencies = [ - "allocator-api2", + "cfg-if", + "wasm-bindgen", ] [[package]] -name = "bytecheck" -version = "0.8.1" +name = "core-foundation" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50690fb3370fb9fe3550372746084c46f2ac8c9685c583d2be10eefd89d3d1a3" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "bytecheck_derive", - "ptr_meta", - "rancor", - "simdutf8", + "core-foundation-sys", + "libc", ] [[package]] -name = "bytecheck_derive" -version = "0.8.1" +name = "core-foundation-sys" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb7846e0cb180355c2dec69e721edafa36919850f1a9f52ffba4ebc0393cb71" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] -name = "bytecount" -version = "0.6.8" +name = "cow-utils" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" +checksum = "417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79" [[package]] -name = "byteorder" -version = "1.5.0" +name = "cpufeatures" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] [[package]] -name = "bytes" -version = "0.4.12" +name = "crc32fast" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "byteorder", - "iovec", + "cfg-if", ] [[package]] -name = "bytes" -version = "1.10.0" +name = "crc64fast" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "26bb92ecea20291efcf0009e2713d64b7e327dedb8ce780545250f24075429e2" [[package]] -name = "bzip2" -version = "0.4.4" +name = "crossbeam-channel" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ - "bzip2-sys", - "libc", + "crossbeam-utils", ] [[package]] -name = "bzip2-sys" -version = "0.1.12+1.0.8" +name = "crossbeam-deque" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ebc2f1a417f01e1da30ef264ee86ae31d2dcd2d603ea283d3c244a883ca2a9" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "cc", - "libc", - "pkg-config", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] -name = "cacache" -version = "13.1.0" +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5063741c7b2e260bbede781cf4679632dd90e2718e99f7715e46824b65670b" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "digest", - "either", - "futures 0.3.31", - "hex", - "libc", - "memmap2 0.5.10", - "miette 5.10.0", - "reflink-copy", - "serde", - "serde_derive", - "serde_json", - "sha1", - "sha2", - "ssri", - "tempfile", - "thiserror 1.0.69", - "tokio", - "tokio-stream", - "walkdir", + "crossbeam-utils", ] [[package]] -name = "cachedir" -version = "0.3.1" +name = "crossbeam-utils" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4703f3937077db8fa35bee3c8789343c1aec2585f0146f09d658d4ccc0e8d873" -dependencies = [ - "tempfile", -] +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] -name = "camino" -version = "1.1.9" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "serde", + "generic-array", + "typenum", ] [[package]] -name = "cargo-util" -version = "0.2.18" +name = "darling" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "932c5376dc904ef005f0d229a5edc1116f40a78a18d30cdc992ec5acbeffd4d9" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "anyhow", - "core-foundation 0.10.0", - "filetime", - "hex", - "ignore", - "jobserver", - "libc", - "miow", - "same-file", - "sha2", - "shell-escape", - "tempfile", - "tracing", - "walkdir", - "windows-sys 0.59.0", + "darling_core", + "darling_macro", ] [[package]] -name = "castaway" -version = "0.2.3" +name = "darling_core" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ - "rustversion", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.98", ] [[package]] -name = "cc" -version = "1.2.15" +name = "darling_macro" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "jobserver", - "libc", - "shlex", + "darling_core", + "quote", + "syn 2.0.98", ] [[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cexpr" -version = "0.6.0" +name = "dashmap" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ - "nom 7.1.3", + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core 0.9.10", ] [[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "charset" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f927b07c74ba84c7e5fe4db2baeb3e996ab2688992e39ac68ce3220a677c7e" +name = "deps" +version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "base64 0.22.1", - "encoding_rs", + "base", + "serde", + "typeshare", ] [[package]] -name = "chic" -version = "1.2.2" +name = "deranged" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b5db619f3556839cb2223ae86ff3f9a09da2c5013be42bc9af08c9589bf70c" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ - "annotate-snippets", + "powerfmt", ] [[package]] -name = "chrono" -version = "0.4.39" +name = "derive_builder" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "wasm-bindgen", - "windows-targets 0.52.6", + "derive_builder_macro", ] [[package]] -name = "chrono-humanize" -version = "0.2.3" +name = "derive_builder_core" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "chrono", + "darling", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "clang-sys" -version = "1.8.1" +name = "derive_builder_macro" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ - "glob", - "libc", - "libloading", + "derive_builder_core", + "syn 2.0.98", ] [[package]] -name = "clap" -version = "4.5.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d" +name = "diag" +version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "clap_builder", - "clap_derive", + "java_native", + "jni", ] [[package]] -name = "clap_builder" -version = "4.5.30" +name = "dialoguer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", - "terminal_size", + "console", + "shell-words", + "zeroize", ] [[package]] -name = "clap_complete" -version = "4.5.45" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e3040c8291884ddf39445dc033c70abc2bc44a42f0a3a00571a0f483a83f0cd" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "clap", + "block-buffer", + "crypto-common", ] [[package]] -name = "clap_complete_command" -version = "0.6.1" +name = "directories" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da8e198c052315686d36371e8a3c5778b7852fc75cc313e4e11eeb7a644a1b62" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" dependencies = [ - "clap", - "clap_complete", - "clap_complete_nushell", + "dirs-sys", ] [[package]] -name = "clap_complete_nushell" -version = "4.5.5" +name = "dirs-sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a8b1593457dfc2fe539002b795710d022dc62a65bf15023f039f9760c7b18a" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ - "clap", - "clap_complete", + "libc", + "option-ext", + "redox_users", + "windows-sys 0.59.0", ] [[package]] -name = "clap_derive" -version = "4.5.28" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "heck", "proc-macro2", "quote", "syn 2.0.98", ] [[package]] -name = "clap_lex" -version = "0.7.4" +name = "dunce" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] -name = "clearscreen" -version = "4.0.1" +name = "either" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c41dc435a7b98e4608224bbf65282309f5403719df9113621b30f8b6f74e2f4" -dependencies = [ - "nix", - "terminfo", - "thiserror 2.0.11", - "which", - "windows-sys 0.59.0", -] +checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d" [[package]] -name = "cmake" -version = "0.1.54" +name = "embed-resource" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +checksum = "4762ce03154ba57ebaeee60cc631901ceae4f18219cbb874e464347471594742" dependencies = [ "cc", + "memchr", + "rustc_version", + "toml", + "vswhom", + "winreg", ] [[package]] -name = "colorchoice" -version = "1.0.3" +name = "encode_unicode" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] -name = "colored" -version = "3.0.0" +name = "encoding_rs" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "windows-sys 0.59.0", + "cfg-if", ] [[package]] -name = "combine" -version = "4.6.7" +name = "entry" +version = "1.0.0-alpha13-SNAPSHOT" + +[[package]] +name = "env_home" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes 1.10.0", - "memchr", -] +checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" [[package]] -name = "compact_str" -version = "0.8.1" +name = "equivalent" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ - "castaway", - "cfg-if", - "itoa", - "rustversion", - "ryu", - "serde", - "static_assertions", + "libc", + "windows-sys 0.59.0", ] [[package]] -name = "concurrent-queue" -version = "2.5.0" +name = "event-listener" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ - "crossbeam-utils", + "concurrent-queue", + "parking", + "pin-project-lite", ] [[package]] -name = "config" -version = "0.15.8" +name = "event-listener-strategy" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf9dc8d4ef88e27a8cb23e85cb116403dedd57f7971964dc4b18ccead548901" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ - "pathdiff", - "serde", - "winnow", + "event-listener", + "pin-project-lite", ] [[package]] -name = "configparser" -version = "3.1.0" +name = "fastrand" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] -name = "console" -version = "0.15.10" +name = "filetime" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ - "encode_unicode", + "cfg-if", "libc", - "once_cell", - "unicode-width 0.2.0", + "libredox", "windows-sys 0.59.0", ] [[package]] -name = "console-api" -version = "0.8.1" +name = "fixedbitset" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8030735ecb0d128428b64cd379809817e620a40e5001c54465b99ec5feec2857" -dependencies = [ - "futures-core", - "prost", - "prost-types", - "tonic", - "tracing-core", -] +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] -name = "console-subscriber" -version = "0.4.1" +name = "flate2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6539aa9c6a4cd31f4b1c040f860a1eac9aa80e7df6b05d506a6e7179936d6a01" +checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" dependencies = [ - "console-api", - "crossbeam-channel", - "crossbeam-utils", - "futures-task", - "hdrhistogram", - "humantime", - "hyper-util", - "prost", - "prost-types", - "serde", - "serde_json", - "thread_local", - "tokio", - "tokio-stream", - "tonic", - "tracing", - "tracing-core", - "tracing-subscriber", + "crc32fast", + "libz-ng-sys", + "miniz_oxide", ] [[package]] -name = "console_error_panic_hook" -version = "0.1.7" +name = "float-cmp" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" dependencies = [ - "cfg-if", - "wasm-bindgen", + "num-traits", ] [[package]] -name = "const-crc32-nostd" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808ac43170e95b11dd23d78aa9eaac5bea45776a602955552c4e833f3f0f823d" - -[[package]] -name = "const_fn" -version = "0.4.11" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f8a2ca5ac02d09563609681103aada9e1777d54fc57a5acd7a41404f9c93b6e" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "const_format" -version = "0.2.34" +name = "foreign-types" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "const_format_proc_macros", + "foreign-types-shared", ] [[package]] -name = "const_format_proc_macros" -version = "0.2.34" +name = "foreign-types-shared" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] -name = "const_panic" -version = "0.2.12" +name = "form_urlencoded" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2459fc9262a1aa204eb4b5764ad4f189caec88aea9634389c0a25f8be7f6265e" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "typewit", + "percent-encoding", ] [[package]] -name = "convert_case" -version = "0.6.0" +name = "futures" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" -dependencies = [ - "unicode-segmentation", -] +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] -name = "core-foundation" -version = "0.9.4" +name = "futures" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ - "core-foundation-sys", - "libc", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] -name = "core-foundation" -version = "0.10.0" +name = "futures-channel" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ - "core-foundation-sys", - "libc", + "futures-core", + "futures-sink", ] [[package]] -name = "core-foundation-sys" -version = "0.8.7" +name = "futures-core" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] -name = "countme" -version = "3.0.1" +name = "futures-executor" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] [[package]] -name = "cow-utils" -version = "0.1.3" +name = "futures-io" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "futures-lite" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" dependencies = [ - "libc", + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", ] [[package]] -name = "crc32fast" -version = "1.4.2" +name = "futures-macro" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ - "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "crc64fast" -version = "1.1.0" +name = "futures-sink" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26bb92ecea20291efcf0009e2713d64b7e327dedb8ce780545250f24075429e2" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] -name = "crossbeam" -version = "0.8.4" +name = "futures-task" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-epoch", - "crossbeam-queue", - "crossbeam-utils", -] +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] -name = "crossbeam-channel" -version = "0.5.14" +name = "futures-util" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "crossbeam-utils", + "futures 0.1.31", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", + "tokio-io", ] [[package]] -name = "crossbeam-deque" -version = "0.8.6" +name = "generic-array" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", + "typenum", + "version_check", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.18" +name = "getrandom" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "crossbeam-utils", + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] -name = "crossbeam-queue" -version = "0.3.12" +name = "getrandom" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ - "crossbeam-utils", + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", ] [[package]] -name = "crossbeam-utils" -version = "0.8.21" +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] -name = "crypto-common" -version = "0.1.6" +name = "glob" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] -name = "csv" -version = "1.3.1" +name = "gloo-timers" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" dependencies = [ - "csv-core", - "itoa", - "ryu", - "serde", + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "csv-core" -version = "0.1.12" +name = "h2" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" dependencies = [ - "memchr", + "atomic-waker", + "bytes 1.10.0", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.7.1", + "slab", + "tokio", + "tokio-util", + "tracing", ] [[package]] -name = "ctrlc" -version = "3.4.5" +name = "halfbrown" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" +checksum = "8588661a8607108a5ca69cab034063441a0413a0b041c13618a7dd348021ef6f" dependencies = [ - "nix", - "windows-sys 0.59.0", -] + "hashbrown 0.14.5", + "serde", +] [[package]] -name = "darling" -version = "0.20.10" +name = "hashbrown" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core", - "darling_macro", -] +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] -name = "darling_core" -version = "0.20.10" +name = "hashbrown" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.98", + "ahash", + "allocator-api2", ] [[package]] -name = "darling_macro" -version = "0.20.10" +name = "hashbrown" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ - "darling_core", - "quote", - "syn 2.0.98", + "allocator-api2", ] [[package]] -name = "dashmap" -version = "6.1.0" +name = "hdrhistogram" +version = "7.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core 0.9.10", + "base64 0.21.7", + "byteorder", + "flate2", + "nom 7.1.3", + "num-traits", ] [[package]] -name = "data-encoding" -version = "2.8.0" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] -name = "deps" -version = "1.0.0-alpha13-SNAPSHOT" -dependencies = [ - "base", - "model", - "pubgrub 0.3.0", - "purl", - "semver", - "serde", - "toml", - "toml_edit", - "typeshare", -] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] -name = "deranged" -version = "0.3.11" +name = "hex" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", -] +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] -name = "derive_arbitrary" -version = "1.4.1" +name = "http" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "bytes 1.10.0", + "fnv", + "itoa", ] [[package]] -name = "derive_builder" -version = "0.20.2" +name = "http-body" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ - "derive_builder_macro", + "bytes 1.10.0", + "http", ] [[package]] -name = "derive_builder_core" -version = "0.20.2" +name = "http-body-util" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.98", + "bytes 1.10.0", + "futures-util", + "http", + "http-body", + "pin-project-lite", ] [[package]] -name = "derive_builder_macro" -version = "0.20.2" +name = "http-cache" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +checksum = "7e883defacf53960c7717d9e928dc8667be9501d9f54e6a8b7703d7a30320e9c" dependencies = [ - "derive_builder_core", - "syn 2.0.98", + "async-trait", + "bincode", + "cacache", + "http", + "http-cache-semantics", + "httpdate", + "serde", + "url", ] [[package]] -name = "diag" -version = "1.0.0-alpha13-SNAPSHOT" +name = "http-cache-reqwest" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e076afd9d376f09073b515ce95071b29393687d98ed521948edb899195595ddf" dependencies = [ - "java_native", - "jni", - "jni-sys", - "oxc", + "anyhow", + "async-trait", + "http", + "http-cache", + "http-cache-semantics", + "reqwest", + "reqwest-middleware", + "serde", + "url", ] [[package]] -name = "dialoguer" -version = "0.10.4" +name = "http-cache-semantics" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +checksum = "92baf25cf0b8c9246baecf3a444546360a97b569168fdf92563ee6a47829920c" dependencies = [ - "console", - "shell-words", - "zeroize", + "http", + "http-serde", + "serde", + "time", ] [[package]] -name = "digest" -version = "0.10.7" +name = "http-serde" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "0f056c8559e3757392c8d091e796416e4649d8e49e88b8d76df6c002f05027fd" dependencies = [ - "block-buffer", - "crypto-common", + "http", + "serde", ] [[package]] -name = "directories" -version = "6.0.0" +name = "httparse" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" -dependencies = [ - "dirs-sys 0.5.0", -] +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] -name = "dirs" -version = "5.0.1" +name = "httpdate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys 0.4.1", -] +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] -name = "dirs-sys" -version = "0.4.1" +name = "humansize" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.4.6", - "windows-sys 0.48.0", -] +checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" [[package]] -name = "dirs-sys" -version = "0.5.0" +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.5.0", - "windows-sys 0.59.0", -] +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] -name = "displaydoc" -version = "0.2.5" +name = "hyper" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "bytes 1.10.0", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", ] [[package]] -name = "dotenvy" -version = "0.15.7" +name = "hyper-rustls" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] [[package]] -name = "drop_bomb" -version = "0.1.5" +name = "hyper-timeout" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] [[package]] -name = "dunce" -version = "1.0.5" +name = "hyper-tls" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes 1.10.0", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] [[package]] -name = "dyn-clone" -version = "1.0.18" +name = "hyper-util" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes 1.10.0", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] [[package]] -name = "either" -version = "1.14.0" +name = "iana-time-zone" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] [[package]] -name = "embed-resource" -version = "3.0.1" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4762ce03154ba57ebaeee60cc631901ceae4f18219cbb874e464347471594742" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ "cc", - "memchr", - "rustc_version", - "toml", - "vswhom", - "winreg 0.52.0", ] [[package]] -name = "encode_unicode" -version = "1.0.0" +name = "icu_collections" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] [[package]] -name = "encoding_rs" -version = "0.8.35" +name = "icu_locid" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ - "cfg-if", + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", ] [[package]] -name = "encoding_rs_io" -version = "0.1.7" +name = "icu_locid_transform" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cc3c5651fb62ab8aa3103998dade57efdd028544bd300516baa31840c252a83" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" dependencies = [ - "encoding_rs", + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", ] [[package]] -name = "entry" -version = "1.0.0-alpha13-SNAPSHOT" +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" [[package]] -name = "enumflags2" -version = "0.7.11" +name = "icu_normalizer" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" dependencies = [ - "enumflags2_derive", + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", ] [[package]] -name = "enumflags2_derive" -version = "0.7.11" +name = "icu_normalizer_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" [[package]] -name = "env_home" -version = "0.1.0" +name = "icu_properties" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] [[package]] -name = "equivalent" -version = "1.0.2" +name = "icu_properties_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" [[package]] -name = "erased-serde" -version = "0.4.5" +name = "icu_provider" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" dependencies = [ - "serde", - "typeid", + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", ] [[package]] -name = "errno" -version = "0.3.10" +name = "icu_provider_macros" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ - "libc", - "windows-sys 0.59.0", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "etcetera" -version = "0.8.0" +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "cfg-if", - "home", - "windows-sys 0.48.0", + "idna_adapter", + "smallvec", + "utf8_iter", ] [[package]] -name = "event-listener" -version = "5.4.0" +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", + "icu_normalizer", + "icu_properties", ] [[package]] -name = "event-listener-strategy" -version = "0.5.3" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "event-listener", - "pin-project-lite", + "autocfg", + "hashbrown 0.12.3", ] [[package]] -name = "fastrand" -version = "2.3.0" +name = "indexmap" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", + "serde", +] [[package]] -name = "fern" -version = "0.7.1" +name = "indicatif" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4316185f709b23713e41e3195f90edef7fb00c3ed4adc79769cf09cc762a3b29" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ - "log", + "console", + "number_prefix", + "portable-atomic", + "unicode-width 0.2.0", + "vt100", + "web-time", ] [[package]] -name = "filetime" -version = "0.2.25" +name = "instant" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", - "libc", - "libredox", - "windows-sys 0.59.0", + "js-sys", + "wasm-bindgen", + "web-sys", ] [[package]] -name = "fixedbitset" -version = "0.5.7" +name = "io_tee" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" +checksum = "4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304" [[package]] -name = "flate2" -version = "1.0.35" +name = "iovec" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" dependencies = [ - "crc32fast", - "libz-ng-sys", - "libz-rs-sys", - "miniz_oxide", + "libc", ] [[package]] -name = "float-cmp" -version = "0.10.0" +name = "ipnet" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" -dependencies = [ - "num-traits", -] +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" - -[[package]] -name = "foreign-types" -version = "0.3.2" +name = "is-docker" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" dependencies = [ - "foreign-types-shared 0.1.1", + "once_cell", ] [[package]] -name = "foreign-types" -version = "0.5.0" +name = "is-terminal" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" dependencies = [ - "foreign-types-macros", - "foreign-types-shared 0.3.1", + "hermit-abi", + "libc", + "windows-sys 0.59.0", ] [[package]] -name = "foreign-types-macros" -version = "0.2.3" +name = "is-wsl" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "is-docker", + "once_cell", ] [[package]] -name = "foreign-types-shared" -version = "0.1.1" +name = "is_ci" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" [[package]] -name = "foreign-types-shared" -version = "0.3.1" +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] -name = "form_urlencoded" -version = "1.2.1" +name = "itertools" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ - "percent-encoding", + "either", ] [[package]] -name = "fs-err" -version = "2.11.0" +name = "itertools" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ - "autocfg", + "either", ] [[package]] -name = "fs-err" -version = "3.1.0" +name = "itoa" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f89bda4c2a21204059a977ed3bfe746677dfd137b83c339e702b0ac91d482aa" -dependencies = [ - "autocfg", - "tokio", -] +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] -name = "fs2" -version = "0.4.3" +name = "java-locator" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +checksum = "09c46c1fe465c59b1474e665e85e1256c3893dd00927b8d55f63b09044c1e64f" dependencies = [ - "libc", - "winapi", + "glob", ] [[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - -[[package]] -name = "fsevent-sys" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +name = "java_native" +version = "0.1.3" +source = "git+https://github.com/elide-tools/jni-macros?rev=7dc95cc2d7534761d0b16899dcda9e7729bdb89d#7dc95cc2d7534761d0b16899dcda9e7729bdb89d" dependencies = [ - "libc", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "fslock" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" +name = "jni" +version = "0.21.1" +source = "git+https://github.com/elide-tools/jni-rs?rev=52526ede7ff165632bfd44259a10d0ac77d60e96#52526ede7ff165632bfd44259a10d0ac77d60e96" dependencies = [ - "libc", - "winapi", + "cesu8", + "cfg-if", + "combine", + "java-locator", + "jni-sys", + "libloading", + "log", + "static_assertions", + "thiserror 2.0.11", + "walkdir", ] [[package]] -name = "futures" -version = "0.1.31" +name = "jni-sys" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" +checksum = "c30a312d782b8d56a1e0897d45c1af33f31f9b4a4d13d31207a8675e0223b818" +dependencies = [ + "jni-sys-macros", +] [[package]] -name = "futures" -version = "0.3.31" +name = "jni-sys-macros" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "e6c199962dfd5610ced8eca382606e349f7940a4ac7d867b58a046123411cbb4" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "quote", + "syn 1.0.109", ] [[package]] -name = "futures-channel" -version = "0.3.31" +name = "jobserver" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ - "futures-core", - "futures-sink", + "libc", ] [[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +name = "js" +version = "1.0.0-alpha13-SNAPSHOT" +dependencies = [ + "diag", + "java_native", + "jni", + "oxc", +] [[package]] -name = "futures-executor" -version = "0.3.31" +name = "js-sys" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ - "futures-core", - "futures-task", - "futures-util", + "once_cell", + "wasm-bindgen", ] [[package]] -name = "futures-io" -version = "0.3.31" +name = "junction" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "72bbdfd737a243da3dfc1f99ee8d6e166480f17ab4ac84d7c34aacd73fc7bd16" +dependencies = [ + "scopeguard", + "windows-sys 0.52.0", +] [[package]] -name = "futures-lite" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +name = "kdl" +version = "5.0.0-alpha.2" +source = "git+https://github.com/elide-tools/kdl-rs.git?rev=b76df4f16ce805798e6d513a6daedf97f6d28e5d#b76df4f16ce805798e6d513a6daedf97f6d28e5d" dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", + "miette 7.5.0", + "nom 7.1.3", + "thiserror 1.0.69", ] [[package]] -name = "futures-macro" -version = "0.3.31" +name = "kv-log-macro" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "log", ] [[package]] -name = "futures-sink" -version = "0.3.31" +name = "lazy_static" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "futures-task" -version = "0.3.31" +name = "libc" +version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" [[package]] -name = "futures-util" -version = "0.3.31" +name = "libloading" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ - "futures 0.1.31", - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", - "tokio-io", + "cfg-if", + "windows-targets 0.52.6", ] [[package]] -name = "generator" -version = "0.8.4" +name = "libmimalloc-sys" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +checksum = "23aa6811d3bd4deb8a84dde645f943476d13b248d818edcf8ce0b2f37f036b44" dependencies = [ - "cfg-if", + "cc", "libc", - "log", - "rustversion", - "windows 0.58.0", ] [[package]] -name = "generic-array" -version = "0.14.7" +name = "libredox" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "typenum", - "version_check", + "bitflags 2.9.0", + "libc", + "redox_syscall 0.5.9", ] [[package]] -name = "getopts" -version = "0.2.21" +name = "libz-ng-sys" +version = "1.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +checksum = "7cee1488e961a80d172564fd6fcda11d8a4ac6672c06fe008e9213fa60520c2b" dependencies = [ - "unicode-width 0.1.14", + "cmake", + "libc", ] [[package]] -name = "getrandom" -version = "0.2.15" +name = "linux-raw-sys" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets 0.52.6", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] -name = "glob" -version = "0.3.2" +name = "litemap" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] -name = "globset" -version = "0.4.15" +name = "lock_api" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "autocfg", + "scopeguard", ] [[package]] -name = "globwalk" -version = "0.9.1" +name = "log" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" dependencies = [ - "bitflags 2.8.0", - "ignore", - "walkdir", + "value-bag", ] [[package]] -name = "gloo-timers" -version = "0.3.0" +name = "matchers" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", + "regex-automata 0.1.10", ] [[package]] -name = "goblin" -version = "0.9.3" +name = "matchit" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa0a64d21a7eb230583b4c5f4e23b7e4e57974f96620f42a7e75e08ae66d745" -dependencies = [ - "log", - "plain", - "scroll", -] +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] -name = "h2" -version = "0.4.8" +name = "memchr" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" -dependencies = [ - "atomic-waker", - "bytes 1.10.0", - "fnv", - "futures-core", - "futures-sink", - "http", - "indexmap 2.7.1", - "slab", - "tokio", - "tokio-util", - "tracing", -] +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] -name = "halfbrown" -version = "0.2.5" +name = "memmap2" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8588661a8607108a5ca69cab034063441a0413a0b041c13618a7dd348021ef6f" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ - "hashbrown 0.14.5", - "serde", + "libc", ] [[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.5" +name = "miette" +version = "5.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" dependencies = [ - "ahash", - "allocator-api2", + "miette-derive 5.10.0", + "once_cell", + "thiserror 1.0.69", + "unicode-width 0.1.14", ] [[package]] -name = "hashbrown" -version = "0.15.2" +name = "miette" +version = "7.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "1a955165f87b37fd1862df2a59547ac542c77ef6d17c666f619d1ad22dd89484" dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", + "backtrace", + "backtrace-ext", + "cfg-if", + "miette-derive 7.5.0", + "owo-colors", + "supports-color", + "supports-hyperlinks", + "supports-unicode", + "terminal_size", + "textwrap", + "thiserror 1.0.69", + "unicode-width 0.1.14", ] [[package]] -name = "hashlink" -version = "0.10.0" +name = "miette-derive" +version = "5.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ - "hashbrown 0.15.2", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "hdrhistogram" -version = "7.5.4" +name = "miette-derive" +version = "7.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" +checksum = "bf45bf44ab49be92fd1227a3be6fc6f617f1a337c06af54981048574d8783147" dependencies = [ - "base64 0.21.7", - "byteorder", - "flate2", - "nom 7.1.3", - "num-traits", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "heck" -version = "0.5.0" +name = "mimalloc" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "68914350ae34959d83f732418d51e2427a794055d0b9529f48259ac07af65633" +dependencies = [ + "libmimalloc-sys", +] [[package]] -name = "hermit-abi" -version = "0.4.0" +name = "mime" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] -name = "hex" -version = "0.4.3" +name = "minimal-lexical" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] -name = "home" -version = "0.5.11" +name = "miniz_oxide" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ - "windows-sys 0.59.0", + "adler2", ] [[package]] -name = "html-escape" -version = "0.2.13" +name = "mio" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "utf8-width", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", ] [[package]] -name = "http" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +name = "model" +version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "bytes 1.10.0", - "fnv", - "itoa", + "build_const", + "rustc_version", + "serde", + "typeshare", ] [[package]] -name = "http-body" -version = "1.0.1" +name = "munge" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "a0091202c98cf06da46c279fdf50cccb6b1c43b4521abdf6a27b4c7e71d5d9d7" dependencies = [ - "bytes 1.10.0", - "http", + "munge_macro", ] [[package]] -name = "http-body-util" -version = "0.1.2" +name = "munge_macro" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "734799cf91479720b2f970c61a22850940dd91e27d4f02b1c6fc792778df2459" dependencies = [ - "bytes 1.10.0", - "futures-util", - "http", - "http-body", - "pin-project-lite", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "http-cache" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e883defacf53960c7717d9e928dc8667be9501d9f54e6a8b7703d7a30320e9c" +name = "nassun" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ + "async-compression", + "async-process", + "async-std", + "async-tar-wasm", "async-trait", + "backon", "bincode", "cacache", - "http", - "http-cache-semantics", - "httpdate", + "console_error_panic_hook", + "dashmap", + "flate2", + "futures 0.3.31", + "io_tee", + "js-sys", + "miette 7.5.0", + "node-semver", + "once_cell", + "oro-client", + "oro-common", + "oro-package-spec", + "rkyv", "serde", + "serde-wasm-bindgen 0.6.5", + "serde_json", + "simd-json", + "ssri", + "tar", + "tempfile", + "thiserror 1.0.69", + "tracing", + "tsify", "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "which", ] [[package]] -name = "http-cache-reqwest" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076afd9d376f09073b515ce95071b29393687d98ed521948edb899195595ddf" +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ - "anyhow", - "async-trait", - "http", - "http-cache", - "http-cache-semantics", - "reqwest", - "reqwest-middleware", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "node-maintainer" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" +dependencies = [ + "async-std", + "colored", + "console_error_panic_hook", + "dashmap", + "futures 0.3.31", + "indexmap 2.7.1", + "indicatif", + "js-sys", + "junction", + "kdl", + "miette 7.5.0", + "nassun", + "node-semver", + "oro-common", + "oro-package-spec", + "oro-script", + "oro-shim-bin", + "pathdiff", + "petgraph", + "reflink-copy", "serde", + "serde-wasm-bindgen 0.6.5", + "serde_json", + "ssri", + "tempfile", + "thiserror 1.0.69", + "tracing", + "tsify", + "unicase", "url", + "walkdir", + "wasm-bindgen", + "wasm-bindgen-futures", ] [[package]] -name = "http-cache-semantics" -version = "2.1.0" +name = "node-semver" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92baf25cf0b8c9246baecf3a444546360a97b569168fdf92563ee6a47829920c" +checksum = "3b1a233ea5dc37d2cfba31cfc87a5a56cc2a9c04e3672c15d179ca118dae40a7" dependencies = [ - "http", - "http-serde", + "bytecount", + "miette 7.5.0", + "nom 7.1.3", "serde", - "time", + "thiserror 1.0.69", ] [[package]] -name = "http-content-range" -version = "0.2.1" +name = "nom" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4aa8e0a9f1496d70bdd43b1e30ff373857c952609ad64b89f50569cfb8cbfca" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] [[package]] -name = "http-serde" -version = "2.1.1" +name = "nom" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f056c8559e3757392c8d091e796416e4649d8e49e88b8d76df6c002f05027fd" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" dependencies = [ - "http", - "serde", + "memchr", ] [[package]] -name = "httparse" -version = "1.10.0" +name = "nonmax" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" [[package]] -name = "httpdate" -version = "1.0.3" +name = "ntapi" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] [[package]] -name = "humansize" -version = "1.1.1" +name = "nu-ansi-term" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] [[package]] -name = "humantime" -version = "2.1.0" +name = "num-bigint" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] [[package]] -name = "hyper" -version = "1.6.0" +name = "num-conv" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" -dependencies = [ - "bytes 1.10.0", - "futures-channel", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] -name = "hyper-rustls" -version = "0.27.5" +name = "num-integer" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "futures-util", - "http", - "hyper", - "hyper-util", - "rustls", - "rustls-native-certs", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", - "webpki-roots", + "num-traits", ] [[package]] -name = "hyper-timeout" -version = "0.5.2" +name = "num-traits" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", + "autocfg", ] [[package]] -name = "hyper-tls" -version = "0.6.0" +name = "number_prefix" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes 1.10.0", - "http-body-util", - "hyper", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] -name = "hyper-util" -version = "0.1.10" +name = "object" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ - "bytes 1.10.0", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", + "memchr", ] [[package]] -name = "iana-time-zone" -version = "0.1.61" +name = "once_cell" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" + +[[package]] +name = "open" +version = "5.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core 0.52.0", + "is-wsl", + "libc", + "pathdiff", ] [[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" +name = "openssl" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "cc", + "bitflags 2.9.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", ] [[package]] -name = "icu_collections" -version = "1.5.0" +name = "openssl-macros" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "openssl-probe" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "ignore" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" -dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata 0.4.9", - "same-file", - "walkdir", - "winapi-util", -] - -[[package]] -name = "imperative" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a1f6526af721f9aec9ceed7ab8ebfca47f3399d08b80056c2acca3fcb694a9" -dependencies = [ - "phf", - "rust-stemmers", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" -dependencies = [ - "equivalent", - "hashbrown 0.15.2", - "serde", -] - -[[package]] -name = "indicatif" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" -dependencies = [ - "console", - "number_prefix", - "portable-atomic", - "unicode-width 0.2.0", - "vt100", - "web-time", -] - -[[package]] -name = "indoc" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" - -[[package]] -name = "inotify" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" -dependencies = [ - "bitflags 2.8.0", - "inotify-sys", - "libc", -] - -[[package]] -name = "inotify-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" -dependencies = [ - "libc", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "io_tee" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304" - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "is-docker" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" -dependencies = [ - "once_cell", -] - -[[package]] -name = "is-macro" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57a3e447e24c22647738e4607f1df1e0ec6f72e16182c4cd199f647cdfb0e4" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "is-terminal" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "is-wsl" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" -dependencies = [ - "is-docker", - "once_cell", -] - -[[package]] -name = "is_ci" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" - -[[package]] -name = "java-locator" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c46c1fe465c59b1474e665e85e1256c3893dd00927b8d55f63b09044c1e64f" -dependencies = [ - "glob", -] - -[[package]] -name = "java_native" -version = "0.1.3" -source = "git+https://github.com/elide-tools/jni-macros?rev=7dc95cc2d7534761d0b16899dcda9e7729bdb89d#7dc95cc2d7534761d0b16899dcda9e7729bdb89d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "jiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3590fea8e9e22d449600c9bbd481a8163bef223e4ff938e5f55899f8cf1adb93" -dependencies = [ - "jiff-tzdb-platform", - "log", - "portable-atomic", - "portable-atomic-util", - "serde", - "windows-sys 0.59.0", -] - -[[package]] -name = "jiff-tzdb" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2cec2f5d266af45a071ece48b1fb89f3b00b2421ac3a5fe10285a6caaa60d3" - -[[package]] -name = "jiff-tzdb-platform" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a63c62e404e7b92979d2792352d885a7f8f83fd1d0d31eea582d77b2ceca697e" -dependencies = [ - "jiff-tzdb", -] - -[[package]] -name = "jni" -version = "0.21.1" -source = "git+https://github.com/elide-tools/jni-rs?rev=b8ec9b0c717833a640de835ab1d91577bfbd6300#b8ec9b0c717833a640de835ab1d91577bfbd6300" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "java-locator", - "jni-sys", - "libloading", - "log", - "static_assertions", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.48.0", -] - -[[package]] -name = "jni-sys" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c30a312d782b8d56a1e0897d45c1af33f31f9b4a4d13d31207a8675e0223b818" -dependencies = [ - "jni-sys-macros", -] - -[[package]] -name = "jni-sys-macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c199962dfd5610ced8eca382606e349f7940a4ac7d867b58a046123411cbb4" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "jobserver" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" -dependencies = [ - "libc", -] - -[[package]] -name = "jod-thread" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b23360e99b8717f20aaa4598f5a6541efbe30630039fbc7706cf954a87947ae" - -[[package]] -name = "js" -version = "1.0.0-alpha13-SNAPSHOT" -dependencies = [ - "diag", - "java_native", - "jni", - "jni-sys", - "oxc", -] - -[[package]] -name = "js-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "json-strip-comments" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b271732a960335e715b6b2ae66a086f115c74eb97360e996d2bd809bfc063bba" -dependencies = [ - "memchr", -] - -[[package]] -name = "junction" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72bbdfd737a243da3dfc1f99ee8d6e166480f17ab4ac84d7c34aacd73fc7bd16" -dependencies = [ - "scopeguard", - "windows-sys 0.52.0", -] - -[[package]] -name = "kdl" -version = "5.0.0-alpha.2" -source = "git+https://github.com/elide-tools/kdl-rs.git?rev=b76df4f16ce805798e6d513a6daedf97f6d28e5d#b76df4f16ce805798e6d513a6daedf97f6d28e5d" -dependencies = [ - "miette 7.5.0", - "nom 7.1.3", - "thiserror 1.0.69", -] - -[[package]] -name = "kqueue" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" -dependencies = [ - "kqueue-sys", - "libc", -] - -[[package]] -name = "kqueue-sys" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" -dependencies = [ - "bitflags 1.3.2", - "libc", -] - -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libabort" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec5d1db7977801dd3e593f88a15906cac3c4eb7a69e38b6cc162cb020b22d7d" -dependencies = [ - "libc", - "rustversion-detect", -] - -[[package]] -name = "libc" -version = "0.2.170" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" - -[[package]] -name = "libcst" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "649801a698a649791541a3125d396d5db065ed7cea53faca3652b0179394922a" -dependencies = [ - "chic", - "libcst_derive", - "memchr", - "paste", - "peg", - "regex", - "thiserror 1.0.69", -] - -[[package]] -name = "libcst_derive" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf66548c351bcaed792ef3e2b430cc840fbde504e09da6b29ed114ca60dcd4b" -dependencies = [ - "quote", - "syn 2.0.98", -] - -[[package]] -name = "libloading" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" -dependencies = [ - "cfg-if", - "windows-targets 0.52.6", -] - -[[package]] -name = "libmimalloc-sys" -version = "0.1.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23aa6811d3bd4deb8a84dde645f943476d13b248d818edcf8ce0b2f37f036b44" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.8.0", - "libc", - "redox_syscall 0.5.9", -] - -[[package]] -name = "libz-ng-sys" -version = "1.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4436751a01da56f1277f323c80d584ffad94a3d14aecd959dd0dff75aa73a438" -dependencies = [ - "cmake", - "libc", -] - -[[package]] -name = "libz-rs-sys" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "902bc563b5d65ad9bba616b490842ef0651066a1a1dc3ce1087113ffcb873c8d" -dependencies = [ - "zlib-rs", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "litemap" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" -dependencies = [ - "value-bag", -] - -[[package]] -name = "loom" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "lsp-server" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9462c4dc73e17f971ec1f171d44bfffb72e65a130117233388a0ebc7ec5656f9" -dependencies = [ - "crossbeam-channel", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "lsp-types" -version = "0.95.1" -source = "git+https://github.com/astral-sh/lsp-types.git?rev=3512a9f#3512a9f33eadc5402cfab1b8f7340824c8ca1439" -dependencies = [ - "bitflags 1.3.2", - "serde", - "serde_json", - "serde_repr", - "url", -] - -[[package]] -name = "lzma-sys" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "mailparse" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdd4a624f609f8ea7366324724b7ff41cb0f982eb665a54ac825bc1c0efc07a3" -dependencies = [ - "charset", - "data-encoding", - "quoted_printable", -] - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - -[[package]] -name = "matchit" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f926ade0c4e170215ae43342bf13b9310a437609c81f29f86c5df6657582ef9" - -[[package]] -name = "md-5" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" -dependencies = [ - "cfg-if", - "digest", -] - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "memmap2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - -[[package]] -name = "memmap2" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" -dependencies = [ - "libc", -] - -[[package]] -name = "miette" -version = "5.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" -dependencies = [ - "miette-derive 5.10.0", - "once_cell", - "thiserror 1.0.69", - "unicode-width 0.1.14", -] - -[[package]] -name = "miette" -version = "7.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a955165f87b37fd1862df2a59547ac542c77ef6d17c666f619d1ad22dd89484" -dependencies = [ - "backtrace", - "backtrace-ext", - "cfg-if", - "miette-derive 7.5.0", - "owo-colors", - "supports-color", - "supports-hyperlinks", - "supports-unicode", - "terminal_size", - "textwrap", - "thiserror 1.0.69", - "unicode-width 0.1.14", -] - -[[package]] -name = "miette-derive" -version = "5.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "miette-derive" -version = "7.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf45bf44ab49be92fd1227a3be6fc6f617f1a337c06af54981048574d8783147" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "mimalloc" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68914350ae34959d83f732418d51e2427a794055d0b9529f48259ac07af65633" -dependencies = [ - "libmimalloc-sys", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" -dependencies = [ - "adler2", -] - -[[package]] -name = "mio" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" -dependencies = [ - "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", -] - -[[package]] -name = "miow" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044" -dependencies = [ - "windows-sys 0.48.0", -] - -[[package]] -name = "model" -version = "1.0.0-alpha13-SNAPSHOT" -dependencies = [ - "build_const", - "const-crc32-nostd", - "rustc_version", - "serde", - "typeshare", -] - -[[package]] -name = "multimap" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" - -[[package]] -name = "munge" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8743b8dfaf66acac79aca9ff2440e8680fef745b6260e6a31d1772b14cfa2862" -dependencies = [ - "munge_macro", -] - -[[package]] -name = "munge_macro" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66191390a55bb9830fa8468c12634442ea4199c6e390ddf08ddcace35b3cd5da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "nanoid" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" -dependencies = [ - "rand 0.8.5", -] - -[[package]] -name = "nassun" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "async-compression", - "async-process", - "async-std", - "async-tar-wasm", - "async-trait", - "backon", - "bincode", - "cacache", - "console_error_panic_hook", - "dashmap", - "flate2", - "futures 0.3.31", - "io_tee", - "js-sys", - "miette 7.5.0", - "node-semver", - "once_cell", - "oro-client", - "oro-common", - "oro-package-spec", - "rkyv", - "serde", - "serde-wasm-bindgen 0.6.5", - "serde_json", - "simd-json", - "ssri", - "tar", - "tempfile", - "thiserror 1.0.69", - "tracing", - "tsify", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "which", -] - -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "natord" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308d96db8debc727c3fd9744aac51751243420e46edf401010908da7f8d5e57c" - -[[package]] -name = "newtype-uuid" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3224f0e8be7c2a1ebc77ef9c3eecb90f55c6594399ee825de964526b3c9056" -dependencies = [ - "uuid", -] - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.8.0", - "cfg-if", - "cfg_aliases", - "libc", -] - -[[package]] -name = "node-maintainer" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "async-std", - "colored", - "console_error_panic_hook", - "dashmap", - "futures 0.3.31", - "indexmap 2.7.1", - "indicatif", - "js-sys", - "junction", - "kdl", - "miette 7.5.0", - "nassun", - "node-semver", - "oro-common", - "oro-package-spec", - "oro-script", - "oro-shim-bin", - "pathdiff", - "petgraph", - "reflink-copy", - "serde", - "serde-wasm-bindgen 0.6.5", - "serde_json", - "ssri", - "tempfile", - "thiserror 1.0.69", - "tracing", - "tsify", - "unicase", - "url", - "walkdir", - "wasm-bindgen", - "wasm-bindgen-futures", -] - -[[package]] -name = "node-semver" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b1a233ea5dc37d2cfba31cfc87a5a56cc2a9c04e3672c15d179ca118dae40a7" -dependencies = [ - "bytecount", - "miette 7.5.0", - "nom 7.1.3", - "serde", - "thiserror 1.0.69", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "nom" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" -dependencies = [ - "memchr", -] - -[[package]] -name = "nonmax" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" - -[[package]] -name = "notify" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943" -dependencies = [ - "bitflags 2.8.0", - "filetime", - "fsevent-sys", - "inotify", - "kqueue", - "libc", - "log", - "mio", - "notify-types", - "walkdir", - "windows-sys 0.59.0", -] - -[[package]] -name = "notify-types" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" - -[[package]] -name = "ntapi" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" -dependencies = [ - "winapi", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "nu-ansi-term" -version = "0.50.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" - -[[package]] -name = "open" -version = "5.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" -dependencies = [ - "is-wsl", - "libc", - "pathdiff", -] - -[[package]] -name = "openssl" -version = "0.10.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" -dependencies = [ - "bitflags 2.8.0", - "cfg-if", - "foreign-types 0.3.2", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-src" -version = "300.4.2+3.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168ce4e058f975fe43e89d9ccf78ca668601887ae736090aacc23ae353c298e2" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "ordermap" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55fdf45a2b1e929e3656d404395767e05c98b6ebd8157eb31e370077d545160" -dependencies = [ - "indexmap 2.7.1", -] - -[[package]] -name = "oro-client" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "anyhow", - "async-trait", - "base64 0.22.1", - "chrono", - "futures 0.3.31", - "http", - "http-cache-reqwest", - "indexmap 2.7.1", - "miette 7.5.0", - "oro-common", - "percent-encoding", - "reqwest", - "reqwest-middleware", - "reqwest-retry", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", - "url", -] - -[[package]] -name = "oro-common" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "derive_builder", - "indexmap 2.7.1", - "miette 7.5.0", - "node-semver", - "nom 7.1.3", - "pathdiff", - "serde", - "serde_json", - "thiserror 1.0.69", - "url", - "walkdir", -] - -[[package]] -name = "oro-config" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "clap", - "config", - "kdl", - "miette 7.5.0", - "serde", - "thiserror 1.0.69", -] - -[[package]] -name = "oro-npm-account" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "async-std", - "base64 0.22.1", - "dialoguer", - "kdl", - "miette 7.5.0", - "open", - "oro-client", - "reqwest", - "thiserror 1.0.69", - "tracing", - "url", -] - -[[package]] -name = "oro-package-spec" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "bytecount", - "miette 7.5.0", - "node-semver", - "nom 7.1.3", - "percent-encoding", - "thiserror 1.0.69", - "url", -] - -[[package]] -name = "oro-pretty-json" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "serde_json", -] - -[[package]] -name = "oro-script" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "dunce", - "miette 7.5.0", - "oro-common", - "regex", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", - "which", -] - -[[package]] -name = "oro-shim-bin" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "once_cell", - "pathdiff", - "regex", -] - -[[package]] -name = "orogene" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=cbcf969348267ee30452606b152a40edcaf049c4#cbcf969348267ee30452606b152a40edcaf049c4" -dependencies = [ - "async-std", - "async-trait", - "chrono", - "chrono-humanize", - "clap", - "colored", - "dialoguer", - "directories", - "embed-resource", - "humansize", - "indicatif", - "is-terminal", - "is_ci", - "kdl", - "miette 7.5.0", - "nassun", - "node-maintainer", - "oro-client", - "oro-common", - "oro-config", - "oro-npm-account", - "oro-package-spec", - "oro-pretty-json", - "rand 0.9.0", - "serde", - "serde_json", - "snmalloc-rs", - "supports-unicode", - "term_grid", - "term_size", - "thiserror 1.0.69", - "tokio", - "tracing", - "tracing-appender", - "tracing-indicatif", - "tracing-subscriber", - "url", -] - -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" -dependencies = [ - "memchr", -] - -[[package]] -name = "os_str_bytes" -version = "7.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c86e2db86dd008b4c88c77a9bb83d9286bf77204e255bb3fda3b2eebcae66b62" -dependencies = [ - "memchr", -] - -[[package]] -name = "outref" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "owo-colors" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" - -[[package]] -name = "oxc" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "oxc_allocator", - "oxc_ast", - "oxc_cfg", - "oxc_codegen", - "oxc_diagnostics", - "oxc_isolated_declarations", - "oxc_mangler", - "oxc_minifier", - "oxc_parser", - "oxc_regular_expression", - "oxc_semantic", - "oxc_span", - "oxc_syntax", - "oxc_transformer", -] - -[[package]] -name = "oxc-browserslist" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5482acf27be53699af8214b9067b71117f34d74974db4b0feef1c09b556c274" -dependencies = [ - "nom 8.0.0", - "rustc-hash 2.1.1", - "serde", - "serde_json", - "thiserror 2.0.11", - "time", -] - -[[package]] -name = "oxc-miette" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e03e63fd113c068b82d07c9c614b0b146c08a3ac0a4dface3ea1d1a9d14d549e" -dependencies = [ - "cfg-if", - "owo-colors", - "oxc-miette-derive", - "textwrap", - "thiserror 1.0.69", - "unicode-width 0.2.0", -] - -[[package]] -name = "oxc-miette-derive" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e21f680e8c5f1900297d394627d495351b9e37761f7bbf90116bd5eeb6e80967" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "oxc_allocator" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "allocator-api2", - "bumpalo", - "hashbrown 0.15.2", - "rustc-hash 2.1.1", - "simdutf8", -] - -[[package]] -name = "oxc_ast" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "bitflags 2.8.0", - "cow-utils", - "nonmax", - "oxc_allocator", - "oxc_ast_macros", - "oxc_estree", - "oxc_regular_expression", - "oxc_span", - "oxc_syntax", -] - -[[package]] -name = "oxc_ast_macros" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "oxc_cfg" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "bitflags 2.8.0", - "itertools 0.14.0", - "nonmax", - "oxc_index", - "oxc_syntax", - "petgraph", - "rustc-hash 2.1.1", -] - -[[package]] -name = "oxc_codegen" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "assert-unchecked", - "bitflags 2.8.0", - "cow-utils", - "nonmax", - "oxc_allocator", - "oxc_ast", - "oxc_data_structures", - "oxc_index", - "oxc_semantic", - "oxc_sourcemap", - "oxc_span", - "oxc_syntax", - "rustc-hash 2.1.1", - "ryu-js", -] - -[[package]] -name = "oxc_data_structures" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "assert-unchecked", - "ropey", -] - -[[package]] -name = "oxc_diagnostics" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "cow-utils", - "oxc-miette", -] - -[[package]] -name = "oxc_ecmascript" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "cow-utils", - "num-bigint", - "num-traits", - "oxc_ast", - "oxc_span", - "oxc_syntax", -] - -[[package]] -name = "oxc_estree" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "itoa", -] - -[[package]] -name = "oxc_index" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fa07b0cfa997730afed43705766ef27792873fdf5215b1391949fec678d2392" - -[[package]] -name = "oxc_isolated_declarations" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "bitflags 2.8.0", - "oxc_allocator", - "oxc_ast", - "oxc_diagnostics", - "oxc_ecmascript", - "oxc_span", - "oxc_syntax", - "rustc-hash 2.1.1", -] - -[[package]] -name = "oxc_mangler" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "fixedbitset", - "itertools 0.14.0", - "oxc_allocator", - "oxc_ast", - "oxc_index", - "oxc_semantic", - "oxc_span", - "rustc-hash 2.1.1", -] - -[[package]] -name = "oxc_minifier" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "cow-utils", - "oxc_allocator", - "oxc_ast", - "oxc_codegen", - "oxc_data_structures", - "oxc_ecmascript", - "oxc_mangler", - "oxc_parser", - "oxc_semantic", - "oxc_span", - "oxc_syntax", - "oxc_traverse", - "rustc-hash 2.1.1", -] - -[[package]] -name = "oxc_parser" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "assert-unchecked", - "bitflags 2.8.0", - "cow-utils", - "memchr", - "num-bigint", - "num-traits", - "oxc_allocator", - "oxc_ast", - "oxc_diagnostics", - "oxc_ecmascript", - "oxc_regular_expression", - "oxc_span", - "oxc_syntax", - "rustc-hash 2.1.1", - "seq-macro", -] - -[[package]] -name = "oxc_regular_expression" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "oxc_allocator", - "oxc_ast_macros", - "oxc_diagnostics", - "oxc_estree", - "oxc_span", - "phf", - "rustc-hash 2.1.1", - "unicode-id-start", -] - -[[package]] -name = "oxc_resolver" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c20bb345f290c46058ba650fef7ca2b579612cf2786b927ebad7b8bec0845a7" -dependencies = [ - "cfg-if", - "dashmap", - "dunce", - "indexmap 2.7.1", - "json-strip-comments", - "once_cell", - "rustc-hash 2.1.1", - "serde", - "serde_json", - "simdutf8", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "oxc_semantic" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "assert-unchecked", - "itertools 0.14.0", - "oxc_allocator", - "oxc_ast", - "oxc_cfg", - "oxc_data_structures", - "oxc_diagnostics", - "oxc_ecmascript", - "oxc_index", - "oxc_span", - "oxc_syntax", - "phf", - "rustc-hash 2.1.1", - "self_cell", -] - -[[package]] -name = "oxc_sourcemap" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b84540840cb31eaea9548f93a271da369d69792bd7149bff1a44b0af9eb7a1" -dependencies = [ - "base64-simd", - "cfg-if", - "cow-utils", - "rustc-hash 2.1.1", - "serde", - "serde_json", -] - -[[package]] -name = "oxc_span" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "compact_str", - "oxc-miette", - "oxc_allocator", - "oxc_ast_macros", - "oxc_estree", -] - -[[package]] -name = "oxc_syntax" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "assert-unchecked", - "bitflags 2.8.0", - "cow-utils", - "nonmax", - "oxc_allocator", - "oxc_ast_macros", - "oxc_estree", - "oxc_index", - "oxc_span", - "phf", - "rustc-hash 2.1.1", - "ryu-js", - "unicode-id-start", -] - -[[package]] -name = "oxc_transformer" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "base64 0.22.1", - "compact_str", - "cow-utils", - "indexmap 2.7.1", - "itoa", - "lazy_static", - "oxc-browserslist", - "oxc_allocator", - "oxc_ast", - "oxc_data_structures", - "oxc_diagnostics", - "oxc_ecmascript", - "oxc_parser", - "oxc_regular_expression", - "oxc_semantic", - "oxc_span", - "oxc_syntax", - "oxc_traverse", - "rustc-hash 2.1.1", - "serde", - "serde_json", - "sha1", -] - -[[package]] -name = "oxc_traverse" -version = "0.52.0" -source = "git+https://github.com/elide-dev/oxc?rev=69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8#69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8" -dependencies = [ - "compact_str", - "itoa", - "oxc_allocator", - "oxc_ast", - "oxc_data_structures", - "oxc_ecmascript", - "oxc_semantic", - "oxc_span", - "oxc_syntax", - "rustc-hash 2.1.1", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core 0.9.10", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.9", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "path-absolutize" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5" -dependencies = [ - "path-dedot", -] - -[[package]] -name = "path-dedot" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397" -dependencies = [ - "once_cell", -] - -[[package]] -name = "path-slash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" - -[[package]] -name = "pathdiff" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" - -[[package]] -name = "peg" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "295283b02df346d1ef66052a757869b2876ac29a6bb0ac3f5f7cd44aebe40e8f" -dependencies = [ - "peg-macros", - "peg-runtime", -] - -[[package]] -name = "peg-macros" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdad6a1d9cf116a059582ce415d5f5566aabcd4008646779dab7fdc2a9a9d426" -dependencies = [ - "peg-runtime", - "proc-macro2", - "quote", -] - -[[package]] -name = "peg-runtime" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3aeb8f54c078314c2065ee649a7241f46b9d8e418e1a9581ba0546657d7aa3a" - -[[package]] -name = "pep440_rs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31095ca1f396e3de32745f42b20deef7bc09077f918b085307e8eab6ddd8fb9c" -dependencies = [ - "once_cell", - "serde", - "unicode-width 0.2.0", - "unscanny", - "version-ranges 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "pep508_rs" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faee7227064121fcadcd2ff788ea26f0d8f2bd23a0574da11eca23bc935bcc05" -dependencies = [ - "boxcar", - "indexmap 2.7.1", - "itertools 0.13.0", - "once_cell", - "pep440_rs", - "regex", - "rustc-hash 2.1.1", - "serde", - "smallvec", - "thiserror 1.0.69", - "unicode-width 0.2.0", - "url", - "urlencoding", - "version-ranges 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap 2.7.1", -] - -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros", - "phf_shared", -] - -[[package]] -name = "phf_codegen" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" -dependencies = [ - "phf_generator", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared", - "rand 0.8.5", -] - -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn 2.0.98", - "unicase", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", - "unicase", -] - -[[package]] -name = "pin-project" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - -[[package]] -name = "pkg-config" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" - -[[package]] -name = "plain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" - -[[package]] -name = "polling" -version = "3.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "portable-atomic" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" - -[[package]] -name = "portable-atomic-util" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" -dependencies = [ - "portable-atomic", -] - -[[package]] -name = "posix" -version = "1.0.0-alpha13-SNAPSHOT" -dependencies = [ - "java_native", - "jni", - "jni-sys", - "rustix", - "sysinfo", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy 0.7.35", -] - -[[package]] -name = "prettyplease" -version = "0.2.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" -dependencies = [ - "proc-macro2", - "syn 2.0.98", -] - -[[package]] -name = "priority-queue" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090ded312ed32a928fb49cb91ab4db6523ae3767225e61fbf6ceaaec3664ed26" -dependencies = [ - "autocfg", - "equivalent", - "indexmap 2.7.1", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "procfs" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" -dependencies = [ - "bitflags 2.8.0", - "flate2", - "hex", - "procfs-core", - "rustix", -] - -[[package]] -name = "procfs-core" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" -dependencies = [ - "bitflags 2.8.0", - "hex", -] - -[[package]] -name = "project" -version = "1.0.0-alpha13-SNAPSHOT" -dependencies = [ - "builder", - "model", - "serde", - "toml", - "toml_edit", - "typeshare", -] - -[[package]] -name = "prost" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" -dependencies = [ - "bytes 1.10.0", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" -dependencies = [ - "heck", - "itertools 0.14.0", - "log", - "multimap", - "once_cell", - "petgraph", - "prettyplease", - "prost", - "prost-types", - "regex", - "syn 2.0.98", - "tempfile", -] - -[[package]] -name = "prost-derive" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" -dependencies = [ - "anyhow", - "itertools 0.14.0", - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "prost-types" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" -dependencies = [ - "prost", -] - -[[package]] -name = "protocol" -version = "1.0.0-alpha13-SNAPSHOT" -dependencies = [ - "builder", - "bytes 1.10.0", - "const_format", - "model", - "prost", - "prost-build", -] - -[[package]] -name = "ptr_meta" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9e76f66d3f9606f44e45598d155cb13ecf09f4a28199e48daf8c8fc937ea90" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "pubgrub" -version = "0.3.0-alpha.1" -source = "git+https://github.com/elide-tools/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4#b70cf707aa43f21b32f3a61b8a0889b15032d5c4" -dependencies = [ - "indexmap 2.7.1", - "log", - "priority-queue", - "rustc-hash 2.1.1", - "thiserror 2.0.11", - "version-ranges 0.1.1 (git+https://github.com/elide-tools/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4)", -] - -[[package]] -name = "pubgrub" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f5df7e552bc7edd075f5783a87fbfc21d6a546e32c16985679c488c18192d83" -dependencies = [ - "indexmap 2.7.1", - "log", - "priority-queue", - "rustc-hash 2.1.1", - "thiserror 2.0.11", - "version-ranges 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "purl" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f112b0e2a9bca03924c39166775b74fec9a831f7d4d8fa539dee0e565f403a0e" -dependencies = [ - "hex", - "percent-encoding", - "phf", - "smartstring", - "thiserror 1.0.69", - "unicase", -] - -[[package]] -name = "pyproject-toml" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643af57c3f36ba90a8b53e972727d8092f7408a9ebfbaf4c3d2c17b07c58d835" -dependencies = [ - "indexmap 2.7.1", - "pep440_rs", - "pep508_rs", - "serde", - "thiserror 1.0.69", - "toml", -] - -[[package]] -name = "quick-junit" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed1a693391a16317257103ad06a88c6529ac640846021da7c435a06fffdacd7" -dependencies = [ - "chrono", - "indexmap 2.7.1", - "newtype-uuid", - "quick-xml", - "strip-ansi-escapes", - "thiserror 2.0.11", - "uuid", -] - -[[package]] -name = "quick-xml" -version = "0.37.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003" -dependencies = [ - "memchr", -] - -[[package]] -name = "quinn" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" -dependencies = [ - "bytes 1.10.0", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash 2.1.1", - "rustls", - "socket2", - "thiserror 2.0.11", - "tokio", - "tracing", -] - -[[package]] -name = "quinn-proto" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" -dependencies = [ - "bytes 1.10.0", - "getrandom 0.2.15", - "rand 0.8.5", - "ring", - "rustc-hash 2.1.1", - "rustls", - "rustls-pki-types", - "slab", - "thiserror 2.0.11", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "quoted_printable" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "640c9bd8497b02465aeef5375144c26062e0dcd5939dfcbb0f5db76cb8c17c73" - -[[package]] -name = "r-shquote" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76b7a332c240b0b30ad8b52cc9aecf8ec96878ccb927ce1d2feb03920e0f711" - -[[package]] -name = "rancor" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf5f7161924b9d1cea0e4cabc97c372cea92b5f927fc13c6bca67157a0ad947" -dependencies = [ - "ptr_meta", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.2", - "zerocopy 0.8.20", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.2", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_core" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a509b1a2ffbe92afab0e55c8fd99dea1c280e8171bd2d88682bb20bc41cbc2c" -dependencies = [ - "getrandom 0.3.1", - "zerocopy 0.8.20", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "red_knot_python_semantic" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "anyhow", - "bitflags 2.8.0", - "camino", - "compact_str", - "countme", - "drop_bomb", - "hashbrown 0.15.2", - "indexmap 2.7.1", - "itertools 0.14.0", - "memchr", - "ordermap", - "ruff_db", - "ruff_index", - "ruff_macros", - "ruff_python_ast", - "ruff_python_literal", - "ruff_python_parser", - "ruff_python_stdlib", - "ruff_python_trivia", - "ruff_source_file", - "ruff_text_size", - "rustc-hash 2.1.1", - "salsa", - "smallvec", - "static_assertions", - "test-case", - "thiserror 2.0.11", - "tracing", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" -dependencies = [ - "bitflags 2.8.0", -] - -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror 1.0.69", -] - -[[package]] -name = "redox_users" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" -dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror 2.0.11", -] - -[[package]] -name = "ref-cast" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "reflink-copy" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbd3533fd4222b8337470456ea84d80436b4c91c53db51c372461d5f7e6eb0b4" -dependencies = [ - "cfg-if", - "libc", - "rustix", - "windows 0.59.0", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "rend" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35e8a6bf28cd121053a66aa2e6a2e3eaffad4a60012179f0e864aa5ffeff215" -dependencies = [ - "bytecheck", -] - -[[package]] -name = "reqwest" -version = "0.12.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" -dependencies = [ - "async-compression", - "base64 0.22.1", - "bytes 1.10.0", - "encoding_rs", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-tls", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "mime_guess", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-native-certs", - "rustls-pemfile", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-native-tls", - "tokio-rustls", - "tokio-socks", - "tokio-util", - "tower 0.5.2", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "webpki-roots", - "windows-registry 0.2.0", -] - -[[package]] -name = "reqwest-middleware" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1ccd3b55e711f91a9885a2fa6fbbb2e39db1776420b062efc058c6410f7e5e3" -dependencies = [ - "anyhow", - "async-trait", - "http", - "reqwest", - "serde", - "thiserror 1.0.69", - "tower-service", -] - -[[package]] -name = "reqwest-retry" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c73e4195a6bfbcb174b790d9b3407ab90646976c55de58a6515da25d851178" -dependencies = [ - "anyhow", - "async-trait", - "futures 0.3.31", - "getrandom 0.2.15", - "http", - "hyper", - "parking_lot 0.11.2", - "reqwest", - "reqwest-middleware", - "retry-policies", - "thiserror 1.0.69", - "tokio", - "tracing", - "wasm-timer", -] - -[[package]] -name = "result" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194d8e591e405d1eecf28819740abed6d719d1a2db87fc0bcdedee9a26d55560" - -[[package]] -name = "retry-policies" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5875471e6cab2871bc150ecb8c727db5113c9338cc3354dc5ee3425b6aa40a1c" -dependencies = [ - "rand 0.8.5", -] - -[[package]] -name = "ring" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.15", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rkyv" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e147371c75553e1e2fcdb483944a8540b8438c31426279553b9a8182a9b7b65" -dependencies = [ - "bytecheck", - "bytes 1.10.0", - "hashbrown 0.15.2", - "indexmap 2.7.1", - "munge", - "ptr_meta", - "rancor", - "rend", - "rkyv_derive", - "smallvec", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246b40ac189af6c675d124b802e8ef6d5246c53e17367ce9501f8f66a81abb7a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "rmp" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" -dependencies = [ - "byteorder", - "num-traits", - "paste", -] - -[[package]] -name = "rmp-serde" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" -dependencies = [ - "byteorder", - "rmp", - "serde", -] - -[[package]] -name = "ropey" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93411e420bcd1a75ddd1dc3caf18c23155eda2c090631a85af21ba19e97093b5" -dependencies = [ - "smallvec", - "str_indices", -] - -[[package]] -name = "ruff" -version = "0.9.7" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "anyhow", - "argfile", - "bincode", - "bitflags 2.8.0", - "cachedir", - "chrono", - "clap", - "clap_complete_command", - "clearscreen", - "colored", - "filetime", - "globwalk", - "ignore", - "is-macro", - "itertools 0.14.0", - "log", - "mimalloc", - "notify", - "path-absolutize", - "rayon", - "regex", - "ruff_cache", - "ruff_db", - "ruff_diagnostics", - "ruff_graph", - "ruff_linter", - "ruff_macros", - "ruff_notebook", - "ruff_python_ast", - "ruff_python_formatter", - "ruff_server", - "ruff_source_file", - "ruff_text_size", - "ruff_workspace", - "rustc-hash 2.1.1", - "serde", - "serde_json", - "shellexpand", - "strum", - "tempfile", - "thiserror 2.0.11", - "tikv-jemallocator", - "toml", - "tracing", - "walkdir", - "wild", -] - -[[package]] -name = "ruff_annotate_snippets" -version = "0.1.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "anstyle", - "memchr", - "unicode-width 0.2.0", -] - -[[package]] -name = "ruff_cache" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "filetime", - "glob", - "globset", - "itertools 0.14.0", - "regex", - "seahash", -] - -[[package]] -name = "ruff_db" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "camino", - "countme", - "dashmap", - "dunce", - "etcetera", - "filetime", - "glob", - "ignore", - "matchit 0.8.6", - "path-slash", - "ruff_annotate_snippets", - "ruff_notebook", - "ruff_python_ast", - "ruff_python_parser", - "ruff_python_trivia", - "ruff_source_file", - "ruff_text_size", - "rustc-hash 2.1.1", - "salsa", - "serde", - "thiserror 2.0.11", - "tracing", - "web-time", - "zip", -] - -[[package]] -name = "ruff_diagnostics" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "anyhow", - "is-macro", - "log", - "ruff_text_size", - "serde", -] - -[[package]] -name = "ruff_formatter" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "drop_bomb", - "ruff_cache", - "ruff_macros", - "ruff_text_size", - "rustc-hash 2.1.1", - "serde", - "static_assertions", - "tracing", - "unicode-width 0.2.0", -] - -[[package]] -name = "ruff_graph" -version = "0.1.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "anyhow", - "clap", - "red_knot_python_semantic", - "ruff_cache", - "ruff_db", - "ruff_linter", - "ruff_macros", - "ruff_python_ast", - "ruff_python_parser", - "salsa", - "schemars", - "serde", - "zip", -] - -[[package]] -name = "ruff_index" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "ruff_macros", - "salsa", -] - -[[package]] -name = "ruff_linter" -version = "0.9.7" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "aho-corasick", - "anyhow", - "bitflags 2.8.0", - "chrono", - "clap", - "colored", - "fern", - "glob", - "globset", - "imperative", - "is-macro", - "is-wsl", - "itertools 0.14.0", - "libcst", - "log", - "memchr", - "natord", - "path-absolutize", - "pathdiff", - "pep440_rs", - "pyproject-toml", - "quick-junit", - "regex", - "ruff_annotate_snippets", - "ruff_cache", - "ruff_diagnostics", - "ruff_index", - "ruff_macros", - "ruff_notebook", - "ruff_python_ast", - "ruff_python_codegen", - "ruff_python_index", - "ruff_python_literal", - "ruff_python_parser", - "ruff_python_semantic", - "ruff_python_stdlib", - "ruff_python_trivia", - "ruff_source_file", - "ruff_text_size", - "rustc-hash 2.1.1", - "serde", - "serde_json", - "similar", - "smallvec", - "strum", - "strum_macros", - "thiserror 2.0.11", - "toml", - "typed-arena", - "unicode-normalization", - "unicode-width 0.2.0", - "unicode_names2", - "url", -] - -[[package]] -name = "ruff_macros" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "itertools 0.14.0", - "proc-macro2", - "quote", - "ruff_python_trivia", - "syn 2.0.98", -] - -[[package]] -name = "ruff_notebook" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "anyhow", - "itertools 0.14.0", - "rand 0.9.0", - "ruff_diagnostics", - "ruff_source_file", - "ruff_text_size", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.11", - "uuid", -] - -[[package]] -name = "ruff_python_ast" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "aho-corasick", - "bitflags 2.8.0", - "compact_str", - "is-macro", - "itertools 0.14.0", - "memchr", - "ruff_cache", - "ruff_macros", - "ruff_python_trivia", - "ruff_source_file", - "ruff_text_size", - "rustc-hash 2.1.1", - "salsa", - "serde", -] - -[[package]] -name = "ruff_python_codegen" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "ruff_python_ast", - "ruff_python_literal", - "ruff_python_parser", - "ruff_source_file", - "ruff_text_size", -] - -[[package]] -name = "ruff_python_formatter" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "anyhow", - "clap", - "countme", - "itertools 0.14.0", - "memchr", - "regex", - "ruff_cache", - "ruff_formatter", - "ruff_macros", - "ruff_python_ast", - "ruff_python_parser", - "ruff_python_trivia", - "ruff_source_file", - "ruff_text_size", - "rustc-hash 2.1.1", - "serde", - "smallvec", - "static_assertions", - "thiserror 2.0.11", - "tracing", -] - -[[package]] -name = "ruff_python_index" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "ruff_python_ast", - "ruff_python_parser", - "ruff_python_trivia", - "ruff_source_file", - "ruff_text_size", -] - -[[package]] -name = "ruff_python_literal" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "bitflags 2.8.0", - "itertools 0.14.0", - "ruff_python_ast", - "unic-ucd-category", -] - -[[package]] -name = "ruff_python_parser" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "bitflags 2.8.0", - "bstr", - "compact_str", - "memchr", - "ruff_python_ast", - "ruff_python_trivia", - "ruff_text_size", - "rustc-hash 2.1.1", - "static_assertions", - "unicode-ident", - "unicode-normalization", - "unicode_names2", -] +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] -name = "ruff_python_semantic" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" +name = "openssl-src" +version = "300.4.2+3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168ce4e058f975fe43e89d9ccf78ca668601887ae736090aacc23ae353c298e2" dependencies = [ - "bitflags 2.8.0", - "is-macro", - "ruff_cache", - "ruff_index", - "ruff_macros", - "ruff_python_ast", - "ruff_python_parser", - "ruff_python_stdlib", - "ruff_text_size", - "rustc-hash 2.1.1", - "serde", - "smallvec", + "cc", ] [[package]] -name = "ruff_python_stdlib" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" +name = "openssl-sys" +version = "0.9.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ - "bitflags 2.8.0", - "unicode-ident", + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", ] [[package]] -name = "ruff_python_trivia" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "itertools 0.14.0", - "ruff_source_file", - "ruff_text_size", - "unicode-ident", -] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] -name = "ruff_server" -version = "0.2.2" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" +name = "oro-client" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ "anyhow", - "crossbeam", - "ignore", - "jod-thread", - "libc", - "lsp-server", - "lsp-types", - "regex", - "ruff_diagnostics", - "ruff_formatter", - "ruff_linter", - "ruff_notebook", - "ruff_python_ast", - "ruff_python_codegen", - "ruff_python_formatter", - "ruff_python_index", - "ruff_python_parser", - "ruff_source_file", - "ruff_text_size", - "ruff_workspace", - "rustc-hash 2.1.1", + "async-trait", + "base64 0.22.1", + "chrono", + "futures 0.3.31", + "http", + "http-cache-reqwest", + "indexmap 2.7.1", + "miette 7.5.0", + "oro-common", + "percent-encoding", + "reqwest", + "reqwest-middleware", + "reqwest-retry", "serde", "serde_json", - "shellexpand", - "thiserror 2.0.11", + "thiserror 1.0.69", "tracing", - "tracing-subscriber", -] - -[[package]] -name = "ruff_source_file" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "memchr", - "ruff_text_size", - "serde", -] - -[[package]] -name = "ruff_text_size" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" -dependencies = [ - "serde", + "url", ] [[package]] -name = "ruff_workspace" -version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=b312b53c2eafd97a084f9f2961a99fbfa257f21a#b312b53c2eafd97a084f9f2961a99fbfa257f21a" +name = "oro-common" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ - "anyhow", - "colored", - "etcetera", - "glob", - "globset", - "ignore", + "derive_builder", "indexmap 2.7.1", - "is-macro", - "itertools 0.14.0", - "log", - "matchit 0.8.6", - "path-absolutize", - "path-slash", - "pep440_rs", - "regex", - "ruff_cache", - "ruff_formatter", - "ruff_graph", - "ruff_linter", - "ruff_macros", - "ruff_python_ast", - "ruff_python_formatter", - "ruff_python_semantic", - "ruff_python_stdlib", - "ruff_source_file", - "rustc-hash 2.1.1", + "miette 7.5.0", + "node-semver", + "nom 7.1.3", + "pathdiff", "serde", - "shellexpand", - "strum", - "toml", -] - -[[package]] -name = "rust-netrc" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e98097f62769f92dbf95fb51f71c0a68ec18a4ee2e70e0d3e4f47ac005d63e9" -dependencies = [ - "shellexpand", + "serde_json", "thiserror 1.0.69", + "url", + "walkdir", ] [[package]] -name = "rust-stemmers" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54" +name = "oro-config" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ + "clap", + "config", + "kdl", + "miette 7.5.0", "serde", - "serde_derive", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.8.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustls" -version = "0.23.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" -dependencies = [ - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework 3.2.0", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "rustls-pki-types" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" -dependencies = [ - "web-time", + "thiserror 1.0.69", ] [[package]] -name = "rustls-webpki" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +name = "oro-npm-account" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", + "async-std", + "base64 0.22.1", + "dialoguer", + "kdl", + "miette 7.5.0", + "open", + "oro-client", + "reqwest", + "thiserror 1.0.69", + "tracing", + "url", ] [[package]] -name = "rustversion" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" - -[[package]] -name = "rustversion-detect" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cfa9e87e97427c3a1b472eace073b2bc577ad0e1444c128d938b3d5bcdacb17" - -[[package]] -name = "ryu" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" - -[[package]] -name = "ryu-js" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd29631678d6fb0903b69223673e122c32e9ae559d0960a38d574695ebc0ea15" - -[[package]] -name = "salsa" -version = "0.18.0" -source = "git+https://github.com/salsa-rs/salsa.git?rev=c8826fa4d1d9e3cba4c6e578763878b71fa9a10d#c8826fa4d1d9e3cba4c6e578763878b71fa9a10d" +name = "oro-package-spec" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ - "arc-swap", - "boxcar", - "compact_str", - "crossbeam-queue", - "dashmap", - "hashbrown 0.15.2", - "hashlink", - "indexmap 2.7.1", - "parking_lot 0.12.3", - "rayon", - "rustc-hash 2.1.1", - "salsa-macro-rules", - "salsa-macros", - "smallvec", - "tracing", + "bytecount", + "miette 7.5.0", + "node-semver", + "nom 7.1.3", + "percent-encoding", + "thiserror 1.0.69", + "url", ] [[package]] -name = "salsa-macro-rules" -version = "0.1.0" -source = "git+https://github.com/salsa-rs/salsa.git?rev=c8826fa4d1d9e3cba4c6e578763878b71fa9a10d#c8826fa4d1d9e3cba4c6e578763878b71fa9a10d" - -[[package]] -name = "salsa-macros" -version = "0.18.0" -source = "git+https://github.com/salsa-rs/salsa.git?rev=c8826fa4d1d9e3cba4c6e578763878b71fa9a10d#c8826fa4d1d9e3cba4c6e578763878b71fa9a10d" +name = "oro-pretty-json" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.98", - "synstructure", + "serde_json", ] [[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +name = "oro-script" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ - "winapi-util", + "dunce", + "miette 7.5.0", + "oro-common", + "regex", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", + "which", ] [[package]] -name = "schannel" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +name = "oro-shim-bin" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ - "windows-sys 0.59.0", + "once_cell", + "pathdiff", + "regex", ] [[package]] -name = "schemars" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +name = "orogene" +version = "0.3.35-elide" +source = "git+https://github.com/elide-dev/orogene?rev=d8222b23fdc35181c2b3844ae70384e3278aeb07#d8222b23fdc35181c2b3844ae70384e3278aeb07" dependencies = [ - "dyn-clone", - "indexmap 2.7.1", - "schemars_derive", + "async-std", + "async-trait", + "chrono", + "chrono-humanize", + "clap", + "colored", + "dialoguer", + "directories", + "embed-resource", + "humansize", + "indicatif", + "is-terminal", + "is_ci", + "kdl", + "miette 7.5.0", + "nassun", + "node-maintainer", + "oro-client", + "oro-common", + "oro-config", + "oro-npm-account", + "oro-package-spec", + "oro-pretty-json", + "rand 0.9.0", "serde", "serde_json", - "smallvec", + "snmalloc-rs", + "supports-unicode", + "term_grid", + "term_size", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-appender", + "tracing-indicatif", + "tracing-subscriber", "url", ] [[package]] -name = "schemars_derive" -version = "0.8.21" +name = "outref" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals 0.29.1", - "syn 2.0.98", -] +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] -name = "scoped-tls" -version = "1.0.1" +name = "overload" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] -name = "scopeguard" -version = "1.2.0" +name = "owo-colors" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" [[package]] -name = "scroll" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" +name = "oxc" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "scroll_derive", + "oxc_allocator", + "oxc_ast", + "oxc_cfg", + "oxc_codegen", + "oxc_diagnostics", + "oxc_isolated_declarations", + "oxc_mangler", + "oxc_minifier", + "oxc_parser", + "oxc_regular_expression", + "oxc_semantic", + "oxc_span", + "oxc_syntax", + "oxc_transformer", ] [[package]] -name = "scroll_derive" -version = "0.12.0" +name = "oxc-browserslist" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" +checksum = "c5482acf27be53699af8214b9067b71117f34d74974db4b0feef1c09b556c274" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "nom 8.0.0", + "rustc-hash", + "serde", + "serde_json", + "thiserror 2.0.11", + "time", ] [[package]] -name = "seahash" -version = "4.1.0" +name = "oxc-miette" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +checksum = "e03e63fd113c068b82d07c9c614b0b146c08a3ac0a4dface3ea1d1a9d14d549e" +dependencies = [ + "cfg-if", + "owo-colors", + "oxc-miette-derive", + "textwrap", + "thiserror 1.0.69", + "unicode-width 0.2.0", +] [[package]] -name = "security-framework" -version = "2.11.1" +name = "oxc-miette-derive" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "e21f680e8c5f1900297d394627d495351b9e37761f7bbf90116bd5eeb6e80967" dependencies = [ - "bitflags 2.8.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "security-framework" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +name = "oxc_allocator" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "bitflags 2.8.0", - "core-foundation 0.10.0", - "core-foundation-sys", - "libc", - "security-framework-sys", + "allocator-api2", + "bumpalo", + "hashbrown 0.15.2", + "rustc-hash", + "simdutf8", ] [[package]] -name = "security-framework-sys" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +name = "oxc_ast" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "core-foundation-sys", - "libc", + "bitflags 2.9.0", + "cow-utils", + "nonmax", + "oxc_allocator", + "oxc_ast_macros", + "oxc_estree", + "oxc_regular_expression", + "oxc_span", + "oxc_syntax", ] [[package]] -name = "self-replace" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ec815b5eab420ab893f63393878d89c90fdd94c0bcc44c07abb8ad95552fb7" +name = "oxc_ast_macros" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "fastrand", - "tempfile", - "windows-sys 0.52.0", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "self_cell" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" +name = "oxc_cfg" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" +dependencies = [ + "bitflags 2.9.0", + "itertools 0.14.0", + "nonmax", + "oxc_index", + "oxc_syntax", + "petgraph", + "rustc-hash", +] [[package]] -name = "semver" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +name = "oxc_codegen" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" +dependencies = [ + "bitflags 2.9.0", + "cow-utils", + "nonmax", + "oxc_allocator", + "oxc_ast", + "oxc_data_structures", + "oxc_index", + "oxc_semantic", + "oxc_sourcemap", + "oxc_span", + "oxc_syntax", + "rustc-hash", + "ryu-js", +] [[package]] -name = "seq-macro" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" +name = "oxc_data_structures" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" +dependencies = [ + "assert-unchecked", + "ropey", +] [[package]] -name = "serde" -version = "1.0.218" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" +name = "oxc_diagnostics" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "serde_derive", + "cow-utils", + "oxc-miette", ] [[package]] -name = "serde-untagged" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +name = "oxc_ecmascript" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "erased-serde", - "serde", - "typeid", + "cow-utils", + "num-bigint", + "num-traits", + "oxc_ast", + "oxc_span", + "oxc_syntax", ] [[package]] -name = "serde-wasm-bindgen" -version = "0.5.0" +name = "oxc_estree" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" + +[[package]] +name = "oxc_index" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +checksum = "2fa07b0cfa997730afed43705766ef27792873fdf5215b1391949fec678d2392" + +[[package]] +name = "oxc_isolated_declarations" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "js-sys", - "serde", - "wasm-bindgen", + "bitflags 2.9.0", + "oxc_allocator", + "oxc_ast", + "oxc_diagnostics", + "oxc_ecmascript", + "oxc_span", + "oxc_syntax", + "rustc-hash", ] [[package]] -name = "serde-wasm-bindgen" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +name = "oxc_mangler" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "js-sys", - "serde", - "wasm-bindgen", + "fixedbitset", + "itertools 0.14.0", + "oxc_allocator", + "oxc_ast", + "oxc_index", + "oxc_semantic", + "oxc_span", + "rustc-hash", ] [[package]] -name = "serde_derive" -version = "1.0.218" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" +name = "oxc_minifier" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "cow-utils", + "oxc_allocator", + "oxc_ast", + "oxc_codegen", + "oxc_data_structures", + "oxc_ecmascript", + "oxc_mangler", + "oxc_parser", + "oxc_semantic", + "oxc_span", + "oxc_syntax", + "oxc_traverse", + "rustc-hash", ] [[package]] -name = "serde_derive_internals" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509" +name = "oxc_parser" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "assert-unchecked", + "bitflags 2.9.0", + "cow-utils", + "memchr", + "num-bigint", + "num-traits", + "oxc_allocator", + "oxc_ast", + "oxc_diagnostics", + "oxc_ecmascript", + "oxc_regular_expression", + "oxc_span", + "oxc_syntax", + "rustc-hash", + "seq-macro", ] [[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +name = "oxc_regular_expression" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "oxc_allocator", + "oxc_ast_macros", + "oxc_diagnostics", + "oxc_estree", + "oxc_span", + "phf", + "rustc-hash", + "unicode-id-start", ] [[package]] -name = "serde_ini" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb236687e2bb073a7521c021949be944641e671b8505a94069ca37b656c81139" +name = "oxc_semantic" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "result", - "serde", - "void", + "assert-unchecked", + "itertools 0.14.0", + "oxc_allocator", + "oxc_ast", + "oxc_cfg", + "oxc_data_structures", + "oxc_diagnostics", + "oxc_ecmascript", + "oxc_index", + "oxc_span", + "oxc_syntax", + "phf", + "rustc-hash", + "self_cell", ] [[package]] -name = "serde_json" -version = "1.0.139" +name = "oxc_sourcemap" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" +checksum = "00b84540840cb31eaea9548f93a271da369d69792bd7149bff1a44b0af9eb7a1" dependencies = [ - "indexmap 2.7.1", - "itoa", - "memchr", - "ryu", + "base64-simd", + "cfg-if", + "cow-utils", + "rustc-hash", "serde", + "serde_json", ] [[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +name = "oxc_span" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "compact_str", + "oxc-miette", + "oxc_allocator", + "oxc_ast_macros", + "oxc_estree", ] [[package]] -name = "serde_spanned" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +name = "oxc_syntax" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "serde", + "assert-unchecked", + "bitflags 2.9.0", + "cow-utils", + "nonmax", + "oxc_allocator", + "oxc_ast_macros", + "oxc_estree", + "oxc_index", + "oxc_span", + "phf", + "rustc-hash", + "ryu-js", + "unicode-id-start", ] [[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +name = "oxc_transformer" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "form_urlencoded", + "base64 0.22.1", + "compact_str", + "cow-utils", + "indexmap 2.7.1", "itoa", - "ryu", + "oxc-browserslist", + "oxc_allocator", + "oxc_ast", + "oxc_data_structures", + "oxc_diagnostics", + "oxc_ecmascript", + "oxc_parser", + "oxc_regular_expression", + "oxc_semantic", + "oxc_span", + "oxc_syntax", + "oxc_traverse", + "rustc-hash", "serde", + "serde_json", + "sha1", ] [[package]] -name = "serde_with" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +name = "oxc_traverse" +version = "0.53.0" +source = "git+https://github.com/elide-dev/oxc?rev=c79fc2cc3a61add19468ed2e3bdebb1e171538fa#c79fc2cc3a61add19468ed2e3bdebb1e171538fa" dependencies = [ - "serde", - "serde_derive", - "serde_with_macros", + "compact_str", + "itoa", + "oxc_allocator", + "oxc_ast", + "oxc_data_structures", + "oxc_ecmascript", + "oxc_semantic", + "oxc_span", + "oxc_syntax", + "rustc-hash", ] [[package]] -name = "serde_with_macros" -version = "3.12.0" +name = "parking" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.98", -] +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] -name = "sha-1" -version = "0.10.1" +name = "parking_lot" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ - "cfg-if", - "cpufeatures", - "digest", + "instant", + "lock_api", + "parking_lot_core 0.8.6", ] [[package]] -name = "sha1" -version = "0.10.6" +name = "parking_lot" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ - "cfg-if", - "cpufeatures", - "digest", + "lock_api", + "parking_lot_core 0.9.10", ] [[package]] -name = "sha2" -version = "0.10.8" +name = "parking_lot_core" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ "cfg-if", - "cpufeatures", - "digest", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", ] [[package]] -name = "sharded-slab" -version = "0.1.7" +name = "parking_lot_core" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "lazy_static", -] - -[[package]] -name = "shell-escape" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f" - -[[package]] -name = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + "cfg-if", + "libc", + "redox_syscall 0.5.9", + "smallvec", + "windows-targets 0.52.6", +] [[package]] -name = "shellexpand" -version = "3.1.0" +name = "pathdiff" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b" -dependencies = [ - "bstr", - "dirs", - "os_str_bytes 6.6.1", -] +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] -name = "shlex" -version = "1.3.0" +name = "percent-encoding" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] -name = "signal-hook-registry" -version = "1.4.2" +name = "petgraph" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ - "libc", + "fixedbitset", + "indexmap 2.7.1", ] [[package]] -name = "simd-json" -version = "0.14.3" +name = "phf" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2bcf6c6e164e81bc7a5d49fc6988b3d515d9e8c07457d7b74ffb9324b9cd40" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "ahash", - "getrandom 0.2.15", - "halfbrown", - "once_cell", - "ref-cast", - "serde", - "serde_json", - "simdutf8", - "value-trait", + "phf_macros", + "phf_shared", ] [[package]] -name = "simdutf8" -version = "0.1.5" +name = "phf_generator" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] [[package]] -name = "similar" -version = "2.7.0" +name = "phf_macros" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ - "bstr", - "unicode-segmentation", + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "siphasher" -version = "1.0.1" +name = "phf_shared" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] [[package]] -name = "slab" -version = "0.4.9" +name = "pin-project" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ - "autocfg", + "pin-project-internal", ] [[package]] -name = "smallvec" -version = "1.14.0" +name = "pin-project-internal" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] [[package]] -name = "smartstring" -version = "1.0.1" +name = "pin-project-lite" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" -dependencies = [ - "arbitrary", - "autocfg", - "serde", - "static_assertions", - "version_check", -] +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] -name = "smawk" -version = "0.3.2" +name = "pin-utils" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] -name = "snmalloc-rs" -version = "0.3.8" +name = "piper" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb317153089fdfa4d8a2eec059d40a5a23c3bde43995ea23b19121c3f621e74a" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ - "snmalloc-sys", + "atomic-waker", + "fastrand", + "futures-io", ] [[package]] -name = "snmalloc-sys" -version = "0.3.8" +name = "pkg-config" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065fea53d32bb77bc36cca466cb191f2e5216ebfd0ed360b1d64889ee6e559ea" -dependencies = [ - "cmake", -] +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] -name = "socket2" -version = "0.5.8" +name = "polling" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ - "libc", - "windows-sys 0.52.0", + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.59.0", ] [[package]] -name = "spdx" -version = "0.10.8" +name = "portable-atomic" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58b69356da67e2fc1f542c71ea7e654a361a79c938e4424392ecf4fa065d2193" -dependencies = [ - "smallvec", -] +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" [[package]] -name = "sqlite" +name = "posix" version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "bindgen 0.71.1", - "builder", - "cc", "java_native", "jni", "jni-sys", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "ssri" -version = "9.2.0" -source = "git+https://github.com/elide-tools/ssri-rs?rev=57b5790f8d114f5b31a716a81dee6f37c0f96c3e#57b5790f8d114f5b31a716a81dee6f37c0f96c3e" -dependencies = [ - "base64 0.22.1", - "digest", - "hex", - "miette 7.5.0", - "serde", - "sha-1", - "sha2", - "thiserror 1.0.69", - "xxhash-rust", + "rustix", + "sysinfo", ] [[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "str_indices" -version = "0.4.4" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d08889ec5408683408db66ad89e0e1f93dff55c73a4ccc71c427d5b277ee47e6" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] -name = "strip-ansi-escapes" -version = "0.2.1" +name = "ppv-lite86" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a8f8038e7e7969abb3f1b7c2a811225e9296da208539e0f79c5251d6cac0025" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "vte 0.14.1", + "zerocopy 0.7.35", ] [[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.27.1" +name = "prettyplease" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" dependencies = [ - "strum_macros", + "proc-macro2", + "syn 2.0.98", ] [[package]] -name = "strum_macros" -version = "0.27.1" +name = "proc-macro2" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.98", + "unicode-ident", ] [[package]] -name = "substrate" +name = "project" version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "bindgen 0.71.1", "builder", - "java_native", - "jni", - "jni-sys", - "libloading", + "serde", + "toml", + "typeshare", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "prost" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes 1.10.0", + "prost-derive", +] [[package]] -name = "supports-color" -version = "3.0.2" +name = "prost-derive" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ - "is_ci", + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "supports-hyperlinks" -version = "3.1.0" +name = "prost-types" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +dependencies = [ + "prost", +] [[package]] -name = "supports-unicode" -version = "3.0.0" +name = "protocol" +version = "1.0.0-alpha13-SNAPSHOT" + +[[package]] +name = "ptr_meta" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" +checksum = "fe9e76f66d3f9606f44e45598d155cb13ecf09f4a28199e48daf8c8fc937ea90" +dependencies = [ + "ptr_meta_derive", +] [[package]] -name = "syn" -version = "1.0.109" +name = "ptr_meta_derive" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1" dependencies = [ "proc-macro2", "quote", - "unicode-ident", + "syn 2.0.98", ] [[package]] -name = "syn" -version = "2.0.98" +name = "quote" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", - "quote", - "unicode-ident", ] [[package]] -name = "sync_wrapper" -version = "1.0.2" +name = "rancor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +checksum = "caf5f7161924b9d1cea0e4cabc97c372cea92b5f927fc13c6bca67157a0ad947" dependencies = [ - "futures-core", + "ptr_meta", ] [[package]] -name = "synstructure" -version = "0.13.1" +name = "rand" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", ] [[package]] -name = "sys-info" -version = "0.9.1" +name = "rand" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ - "cc", - "libc", + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.21", ] [[package]] -name = "sysinfo" -version = "0.33.1" +name = "rand_chacha" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ - "core-foundation-sys", - "libc", - "memchr", - "ntapi", - "rayon", - "windows 0.57.0", + "ppv-lite86", + "rand_core 0.6.4", ] [[package]] -name = "system-configuration" -version = "0.6.1" +name = "rand_chacha" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ - "bitflags 2.8.0", - "core-foundation 0.9.4", - "system-configuration-sys", + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] -name = "system-configuration-sys" -version = "0.6.0" +name = "rand_core" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "core-foundation-sys", - "libc", + "getrandom 0.2.15", ] [[package]] -name = "tar" -version = "0.4.44" +name = "rand_core" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "filetime", - "libc", - "xattr 1.4.0", + "getrandom 0.3.1", ] [[package]] -name = "target-lexicon" -version = "0.13.2" +name = "rayon" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] [[package]] -name = "tempfile" -version = "3.17.1" +name = "rayon-core" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "cfg-if", - "fastrand", - "getrandom 0.3.1", - "once_cell", - "rustix", - "windows-sys 0.59.0", + "crossbeam-deque", + "crossbeam-utils", ] [[package]] -name = "term_grid" -version = "0.2.0" +name = "redox_syscall" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c9eb7705cb3f0fd71d3955b23db6d372142ac139e8c473952c93bf3c3dc4b7" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "unicode-width 0.1.14", + "bitflags 1.3.2", ] [[package]] -name = "term_size" -version = "0.3.2" +name = "redox_syscall" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e4129646ca0ed8f45d09b929036bafad5377103edd06e50bf574b353d2b08d9" +checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" dependencies = [ - "libc", - "winapi", + "bitflags 2.9.0", ] [[package]] -name = "termcolor" -version = "1.4.1" +name = "redox_users" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" dependencies = [ - "winapi-util", + "getrandom 0.2.15", + "libredox", + "thiserror 2.0.11", ] [[package]] -name = "terminal" -version = "1.0.0-alpha13-SNAPSHOT" +name = "ref-cast" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" dependencies = [ - "bindgen 0.71.1", - "builder", - "cc", - "java_native", - "jni", - "jni-sys", + "ref-cast-impl", ] [[package]] -name = "terminal_size" -version = "0.4.1" +name = "ref-cast-impl" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ - "rustix", - "windows-sys 0.59.0", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "terminfo" -version = "0.9.0" +name = "reflink-copy" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662" +checksum = "9efd944f26afa2406cbbabff39fac533c9bc24b13d7f1f12e14ae3e7bdc66cdb" dependencies = [ - "fnv", - "nom 7.1.3", - "phf", - "phf_codegen", + "cfg-if", + "libc", + "rustix", + "windows 0.60.0", ] [[package]] -name = "test-case" -version = "3.3.1" +name = "regex" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ - "test-case-macros", + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] -name = "test-case-core" -version = "3.3.1" +name = "regex-automata" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 2.0.98", + "regex-syntax 0.6.29", ] [[package]] -name = "test-case-macros" -version = "3.3.1" +name = "regex-automata" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", - "test-case-core", + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", ] [[package]] -name = "textwrap" -version = "0.16.1" +name = "regex-syntax" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rend" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a35e8a6bf28cd121053a66aa2e6a2e3eaffad4a60012179f0e864aa5ffeff215" dependencies = [ - "smawk", - "unicode-linebreak", - "unicode-width 0.1.14", + "bytecheck", ] [[package]] -name = "thiserror" -version = "1.0.69" +name = "reqwest" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ - "thiserror-impl 1.0.69", + "async-compression", + "base64 0.22.1", + "bytes 1.10.0", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-util", + "tower 0.5.2", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "windows-registry", ] [[package]] -name = "thiserror" -version = "2.0.11" +name = "reqwest-middleware" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "64e8975513bd9a7a43aad01030e79b3498e05db14e9d945df6483e8cf9b8c4c4" dependencies = [ - "thiserror-impl 2.0.11", + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "thiserror 1.0.69", + "tower-service", ] [[package]] -name = "thiserror-impl" -version = "1.0.69" +name = "reqwest-retry" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "29c73e4195a6bfbcb174b790d9b3407ab90646976c55de58a6515da25d851178" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "anyhow", + "async-trait", + "futures 0.3.31", + "getrandom 0.2.15", + "http", + "hyper", + "parking_lot 0.11.2", + "reqwest", + "reqwest-middleware", + "retry-policies", + "thiserror 1.0.69", + "tokio", + "tracing", + "wasm-timer", ] [[package]] -name = "thiserror-impl" -version = "2.0.11" +name = "retry-policies" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "5875471e6cab2871bc150ecb8c727db5113c9338cc3354dc5ee3425b6aa40a1c" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "rand 0.8.5", ] [[package]] -name = "thread_local" -version = "1.1.8" +name = "ring" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73" dependencies = [ + "cc", "cfg-if", - "once_cell", + "getrandom 0.2.15", + "libc", + "untrusted", + "windows-sys 0.52.0", ] [[package]] -name = "tikv-jemalloc-sys" -version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +name = "rkyv" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" +checksum = "1e147371c75553e1e2fcdb483944a8540b8438c31426279553b9a8182a9b7b65" dependencies = [ - "cc", - "libc", + "bytecheck", + "bytes 1.10.0", + "hashbrown 0.15.2", + "indexmap 2.7.1", + "munge", + "ptr_meta", + "rancor", + "rend", + "rkyv_derive", + "tinyvec", + "uuid", ] [[package]] -name = "tikv-jemallocator" -version = "0.6.0" +name = "rkyv_derive" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" +checksum = "246b40ac189af6c675d124b802e8ef6d5246c53e17367ce9501f8f66a81abb7a" dependencies = [ - "libc", - "tikv-jemalloc-sys", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "time" -version = "0.3.37" +name = "ropey" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "93411e420bcd1a75ddd1dc3caf18c23155eda2c090631a85af21ba19e97093b5" dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", + "smallvec", + "str_indices", ] [[package]] -name = "time-core" -version = "0.1.2" +name = "rustc-demangle" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] -name = "time-macros" -version = "0.2.19" +name = "rustc-hash" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" -dependencies = [ - "num-conv", - "time-core", -] +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] -name = "tinystr" -version = "0.7.6" +name = "rustc_version" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "displaydoc", - "zerovec", + "semver", ] [[package]] -name = "tinyvec" -version = "1.8.1" +name = "rustix" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "tinyvec_macros", + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tl" -version = "0.7.8" -source = "git+https://github.com/astral-sh/tl.git?rev=6e25b2ee2513d75385101a8ff9f591ef51f314ec#6e25b2ee2513d75385101a8ff9f591ef51f314ec" - -[[package]] -name = "tokio" -version = "1.43.0" +name = "rustls" +version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ - "backtrace", - "bytes 1.10.0", - "libc", - "mio", - "parking_lot 0.12.3", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "tracing", - "windows-sys 0.52.0", + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", ] [[package]] -name = "tokio-io" -version = "0.1.13" +name = "rustls-pemfile" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log", + "rustls-pki-types", ] [[package]] -name = "tokio-macros" -version = "2.5.0" +name = "rustls-pki-types" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] -name = "tokio-native-tls" -version = "0.3.1" +name = "rustls-webpki" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "native-tls", - "tokio", + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] -name = "tokio-rustls" -version = "0.26.1" +name = "rustversion" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" -dependencies = [ - "rustls", - "tokio", -] +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] -name = "tokio-socks" -version = "0.5.2" +name = "ryu" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" -dependencies = [ - "either", - "futures-util", - "thiserror 1.0.69", - "tokio", -] +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] -name = "tokio-stream" -version = "0.1.17" +name = "ryu-js" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] +checksum = "dd29631678d6fb0903b69223673e122c32e9ae559d0960a38d574695ebc0ea15" [[package]] -name = "tokio-util" -version = "0.7.13" +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "bytes 1.10.0", - "futures-core", - "futures-io", - "futures-sink", - "pin-project-lite", - "tokio", + "winapi-util", ] [[package]] -name = "toml" -version = "0.8.20" +name = "schannel" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", ] [[package]] -name = "toml_datetime" -version = "0.6.8" +name = "scopeguard" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -dependencies = [ - "serde", -] +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "toml_edit" -version = "0.22.24" +name = "security-framework" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "indexmap 2.7.1", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", + "bitflags 2.9.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", ] [[package]] -name = "tonic" -version = "0.12.3" +name = "security-framework-sys" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64 0.22.1", - "bytes 1.10.0", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-timeout", - "hyper-util", - "percent-encoding", - "pin-project", - "prost", - "socket2", - "tokio", - "tokio-stream", - "tower 0.4.13", - "tower-layer", - "tower-service", - "tracing", + "core-foundation-sys", + "libc", ] [[package]] -name = "tower" -version = "0.4.13" +name = "self_cell" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] +checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" [[package]] -name = "tower" -version = "0.5.2" +name = "semver" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", -] +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] -name = "tower-layer" -version = "0.3.3" +name = "seq-macro" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" +checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] -name = "tower-service" -version = "0.3.3" +name = "serde" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" +dependencies = [ + "serde_derive", +] [[package]] -name = "tracing" -version = "0.1.41" +name = "serde-wasm-bindgen" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", + "js-sys", + "serde", + "wasm-bindgen", ] [[package]] -name = "tracing-appender" -version = "0.2.3" +name = "serde-wasm-bindgen" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" dependencies = [ - "crossbeam-channel", - "thiserror 1.0.69", - "time", - "tracing-subscriber", + "js-sys", + "serde", + "wasm-bindgen", ] [[package]] -name = "tracing-attributes" -version = "0.1.28" +name = "serde_derive" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" dependencies = [ "proc-macro2", "quote", @@ -7689,429 +4100,472 @@ dependencies = [ ] [[package]] -name = "tracing-core" -version = "0.1.33" +name = "serde_derive_internals" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509" dependencies = [ - "once_cell", - "valuable", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "tracing-indicatif" -version = "0.3.9" +name = "serde_json" +version = "1.0.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8201ca430e0cd893ef978226fd3516c06d9c494181c8bf4e5b32e30ed4b40aa1" +checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" dependencies = [ - "indicatif", - "tracing", - "tracing-core", - "tracing-subscriber", + "indexmap 2.7.1", + "itoa", + "memchr", + "ryu", + "serde", ] [[package]] -name = "tracing-log" -version = "0.2.0" +name = "serde_spanned" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ - "log", - "once_cell", - "tracing-core", + "serde", ] [[package]] -name = "tracing-serde" -version = "0.2.0" +name = "serde_urlencoded" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ + "form_urlencoded", + "itoa", + "ryu", "serde", - "tracing-core", ] [[package]] -name = "tracing-subscriber" -version = "0.3.19" +name = "sha-1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ - "matchers", - "nu-ansi-term 0.46.0", - "once_cell", - "regex", - "serde", - "serde_json", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", - "tracing-serde", + "cfg-if", + "cpufeatures", + "digest", ] [[package]] -name = "tracing-tree" -version = "0.4.0" +name = "sha1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f459ca79f1b0d5f71c54ddfde6debfc59c8b6eeb46808ae492077f739dc7b49c" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "nu-ansi-term 0.50.1", - "tracing-core", - "tracing-log", - "tracing-subscriber", + "cfg-if", + "cpufeatures", + "digest", ] [[package]] -name = "transport" -version = "1.0.0-alpha13-SNAPSHOT" +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "bindgen 0.71.1", - "boring", - "builder", - "cc", - "java_native", - "jni", - "jni-sys", + "cfg-if", + "cpufeatures", + "digest", ] [[package]] -name = "try-lock" -version = "0.2.5" +name = "sharded-slab" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] [[package]] -name = "tsify" -version = "0.4.5" +name = "simd-json" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b26cf145f2f3b9ff84e182c448eaf05468e247f148cf3d2a7d67d78ff023a0" +checksum = "aa2bcf6c6e164e81bc7a5d49fc6988b3d515d9e8c07457d7b74ffb9324b9cd40" dependencies = [ + "ahash", + "getrandom 0.2.15", + "halfbrown", + "once_cell", + "ref-cast", "serde", - "serde-wasm-bindgen 0.5.0", - "tsify-macros", - "wasm-bindgen", + "serde_json", + "simdutf8", + "value-trait", ] [[package]] -name = "tsify-macros" -version = "0.4.5" +name = "simdutf8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a94b0f0954b3e59bfc2c246b4c8574390d94a4ad4ad246aaf2fb07d7dfd3b47" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals 0.28.0", - "syn 2.0.98", -] +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] -name = "typed-arena" -version = "2.0.2" +name = "siphasher" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] -name = "typeid" -version = "1.0.2" +name = "slab" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] [[package]] -name = "typenum" -version = "1.18.0" +name = "smallvec" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" [[package]] -name = "typeshare" -version = "1.0.4" +name = "smartstring" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19be0f411120091e76e13e5a0186d8e2bcc3e7e244afdb70152197f1a8486ceb" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" dependencies = [ - "chrono", + "arbitrary", + "autocfg", "serde", - "serde_json", - "typeshare-annotation", + "static_assertions", + "version_check", ] [[package]] -name = "typeshare-annotation" -version = "1.0.4" +name = "smawk" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a615d6c2764852a2e88a4f16e9ce1ea49bb776b5872956309e170d63a042a34f" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "snmalloc-rs" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb317153089fdfa4d8a2eec059d40a5a23c3bde43995ea23b19121c3f621e74a" dependencies = [ - "quote", - "syn 2.0.98", + "snmalloc-sys", ] [[package]] -name = "typewit" -version = "1.11.0" +name = "snmalloc-sys" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb77c29baba9e4d3a6182d51fa75e3215c7fd1dab8f4ea9d107c716878e55fc0" +checksum = "065fea53d32bb77bc36cca466cb191f2e5216ebfd0ed360b1d64889ee6e559ea" dependencies = [ - "typewit_proc_macros", + "cmake", ] [[package]] -name = "typewit_proc_macros" -version = "1.8.1" +name = "socket2" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36a83ea2b3c704935a01b4642946aadd445cea40b10935e3f8bd8052b8193d6" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] [[package]] -name = "umbrella" -version = "0.1.0" +name = "sqlite" +version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "anyhow", - "base", - "biome_console", - "biome_css_formatter", - "biome_diagnostics", - "biome_diagnostics_categories", - "biome_diagnostics_macros", - "biome_formatter", - "biome_js_formatter", - "biome_json_formatter", - "biome_markup", - "biome_suppression", - "biome_unicode_table", + "bindgen", "builder", - "clap", - "colored", - "console-subscriber", - "deps", - "diag", - "entry", "java_native", - "jni", - "jni-sys", - "js", +] + +[[package]] +name = "ssri" +version = "9.2.0" +source = "git+https://github.com/elide-tools/ssri-rs?rev=57b5790f8d114f5b31a716a81dee6f37c0f96c3e#57b5790f8d114f5b31a716a81dee6f37c0f96c3e" +dependencies = [ + "base64 0.22.1", + "digest", + "hex", "miette 7.5.0", - "mimalloc", - "model", - "orogene", - "oxc", - "posix", - "project", - "protocol", - "ruff", "serde", - "sqlite", - "substrate", - "terminal", - "tikv-jemallocator", - "tokio", - "transport", - "typeshare", - "uv", + "sha-1", + "sha2", + "thiserror 1.0.69", + "xxhash-rust", ] [[package]] -name = "unic-char-property" -version = "0.9.0" +name = "stable_deref_trait" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] -name = "unic-char-range" -version = "0.9.0" +name = "static_assertions" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "unic-common" -version = "0.9.0" +name = "str_indices" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" +checksum = "d08889ec5408683408db66ad89e0e1f93dff55c73a4ccc71c427d5b277ee47e6" [[package]] -name = "unic-ucd-category" -version = "0.9.0" +name = "strsim" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8d4591f5fcfe1bd4453baaf803c40e1b1e69ff8455c47620440b46efef91c0" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "substrate" +version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "matches", - "unic-char-property", - "unic-char-range", - "unic-ucd-version", + "bindgen", + "builder", ] [[package]] -name = "unic-ucd-version" -version = "0.9.0" +name = "subtle" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] -name = "unicase" -version = "2.8.1" +name = "supports-color" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" +checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" +dependencies = [ + "is_ci", +] [[package]] -name = "unicode-bom" -version = "2.0.3" +name = "supports-hyperlinks" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" +checksum = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b" [[package]] -name = "unicode-id-start" -version = "1.3.1" +name = "supports-unicode" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f322b60f6b9736017344fa0635d64be2f458fbc04eef65f6be22976dd1ffd5b" +checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" [[package]] -name = "unicode-ident" -version = "1.0.17" +name = "syn" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] [[package]] -name = "unicode-linebreak" -version = "0.1.5" +name = "syn" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] [[package]] -name = "unicode-normalization" -version = "0.1.24" +name = "sync_wrapper" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ - "tinyvec", + "futures-core", ] [[package]] -name = "unicode-segmentation" -version = "1.12.0" +name = "synstructure" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] [[package]] -name = "unicode-width" -version = "0.1.14" +name = "sysinfo" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" +dependencies = [ + "core-foundation-sys", + "libc", + "memchr", + "ntapi", + "rayon", + "windows 0.57.0", +] [[package]] -name = "unicode-width" -version = "0.2.0" +name = "system-configuration" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.0", + "core-foundation", + "system-configuration-sys", +] [[package]] -name = "unicode-xid" -version = "0.2.6" +name = "system-configuration-sys" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] [[package]] -name = "unicode_names2" -version = "1.3.0" +name = "tar" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1673eca9782c84de5f81b82e4109dcfb3611c8ba0d52930ec4a9478f547b2dd" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" dependencies = [ - "phf", - "unicode_names2_generator", + "filetime", + "libc", + "xattr 1.4.0", ] [[package]] -name = "unicode_names2_generator" -version = "1.3.0" +name = "tempfile" +version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91e5b84611016120197efd7dc93ef76774f4e084cd73c9fb3ea4a86c570c56e" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ - "getopts", - "log", - "phf_codegen", - "rand 0.8.5", + "cfg-if", + "fastrand", + "getrandom 0.3.1", + "once_cell", + "rustix", + "windows-sys 0.59.0", ] [[package]] -name = "unscanny" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47" - -[[package]] -name = "untrusted" -version = "0.9.0" +name = "term_grid" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +checksum = "a7c9eb7705cb3f0fd71d3955b23db6d372142ac139e8c473952c93bf3c3dc4b7" +dependencies = [ + "unicode-width 0.1.14", +] [[package]] -name = "url" -version = "2.5.4" +name = "term_size" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "1e4129646ca0ed8f45d09b929036bafad5377103edd06e50bf574b353d2b08d9" dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", + "libc", + "winapi", ] [[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" +name = "terminal" +version = "1.0.0-alpha13-SNAPSHOT" +dependencies = [ + "bindgen", + "builder", +] [[package]] -name = "utf16_iter" -version = "1.0.5" +name = "terminal_size" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" +checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +dependencies = [ + "rustix", + "windows-sys 0.59.0", +] [[package]] -name = "utf8-width" -version = "0.1.7" +name = "textwrap" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +dependencies = [ + "smawk", + "unicode-linebreak", + "unicode-width 0.1.14", +] [[package]] -name = "utf8_iter" -version = "1.0.4" +name = "thiserror" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] [[package]] -name = "utf8parse" -version = "0.2.2" +name = "thiserror" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", +] [[package]] -name = "uuid" -version = "1.14.0" +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d59ca99a559661b96bf898d8fce28ed87935fd2bea9f05983c1464dd6c71b1" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "arbitrary", - "getrandom 0.3.1", - "js-sys", - "rand 0.9.0", - "serde", - "uuid-macro-internal", - "wasm-bindgen", - "zerocopy 0.8.20", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "uuid-macro-internal" -version = "1.14.0" +name = "thiserror-impl" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1be57878a5f7e409a1a82be6691922b11e59687a168205b1f21b087c4acdd194" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", @@ -8119,1230 +4573,540 @@ dependencies = [ ] [[package]] -name = "uv" -version = "0.6.2" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ - "anstream", - "anyhow", - "clap", - "console", - "ctrlc", - "dotenvy", - "flate2", - "fs-err 3.1.0", - "futures 0.3.31", - "http", - "indicatif", - "indoc", - "itertools 0.14.0", - "jiff", - "miette 7.5.0", - "nix", - "owo-colors", - "petgraph", - "regex", - "reqwest", - "rkyv", - "rustc-hash 2.1.1", - "self-replace", - "serde", - "serde_json", - "tempfile", - "textwrap", - "thiserror 2.0.11", - "tokio", - "toml", - "toml_edit", - "tracing", - "tracing-subscriber", - "tracing-tree", - "unicode-width 0.1.14", - "url", - "uv-auth", - "uv-build-backend", - "uv-build-frontend", - "uv-cache", - "uv-cache-info", - "uv-cache-key", - "uv-cli", - "uv-client", - "uv-configuration", - "uv-console", - "uv-dispatch", - "uv-distribution", - "uv-distribution-filename", - "uv-distribution-types", - "uv-extract", - "uv-fs", - "uv-git", - "uv-git-types", - "uv-install-wheel", - "uv-installer", - "uv-normalize", - "uv-pep440", - "uv-pep508", - "uv-performance-flate2-backend", - "uv-performance-memory-allocator", - "uv-platform-tags", - "uv-publish", - "uv-pypi-types", - "uv-python", - "uv-requirements", - "uv-resolver", - "uv-scripts", - "uv-settings", - "uv-shell", - "uv-static", - "uv-tool", - "uv-trampoline-builder", - "uv-types", - "uv-version", - "uv-virtualenv", - "uv-warnings", - "uv-workspace", - "version-ranges 0.1.1 (git+https://github.com/astral-sh/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4)", - "walkdir", - "which", - "zip", + "cfg-if", + "once_cell", ] [[package]] -name = "uv-auth" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tikv-jemalloc-sys" +version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" dependencies = [ - "anyhow", - "async-trait", - "base64 0.22.1", - "futures 0.3.31", - "http", - "percent-encoding", - "reqwest", - "reqwest-middleware", - "rust-netrc", - "rustc-hash 2.1.1", - "tokio", - "tracing", - "url", - "uv-once-map", - "uv-static", + "cc", + "libc", ] [[package]] -name = "uv-build-backend" -version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tikv-jemallocator" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" dependencies = [ - "csv", - "flate2", - "fs-err 3.1.0", - "globset", - "itertools 0.14.0", - "serde", - "sha2", - "spdx", - "tar", - "thiserror 2.0.11", - "toml", - "tracing", - "uv-distribution-filename", - "uv-fs", - "uv-globfilter", - "uv-normalize", - "uv-pep440", - "uv-pep508", - "uv-platform-tags", - "uv-pypi-types", - "uv-version", - "uv-warnings", - "version-ranges 0.1.1 (git+https://github.com/astral-sh/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4)", - "walkdir", - "zip", + "libc", + "tikv-jemalloc-sys", ] [[package]] -name = "uv-build-frontend" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ - "anstream", - "fs-err 3.1.0", - "indoc", - "itertools 0.14.0", - "owo-colors", - "regex", - "rustc-hash 2.1.1", + "deranged", + "itoa", + "num-conv", + "powerfmt", "serde", - "serde_json", - "tempfile", - "thiserror 2.0.11", - "tokio", - "toml_edit", - "tracing", - "uv-configuration", - "uv-distribution", - "uv-distribution-types", - "uv-fs", - "uv-pep440", - "uv-pep508", - "uv-pypi-types", - "uv-python", - "uv-static", - "uv-types", - "uv-virtualenv", - "uv-warnings", + "time-core", + "time-macros", ] [[package]] -name = "uv-cache" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ - "clap", - "fs-err 3.1.0", - "nanoid", - "rmp-serde", - "rustc-hash 2.1.1", - "serde", - "tempfile", - "tracing", - "url", - "uv-cache-info", - "uv-cache-key", - "uv-dirs", - "uv-distribution-filename", - "uv-distribution-types", - "uv-fs", - "uv-normalize", - "uv-pypi-types", - "uv-static", - "walkdir", + "num-conv", + "time-core", ] [[package]] -name = "uv-cache-info" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "fs-err 3.1.0", - "globwalk", - "schemars", - "serde", - "thiserror 2.0.11", - "toml", - "tracing", - "walkdir", + "displaydoc", + "zerovec", ] [[package]] -name = "uv-cache-key" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tinyvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ - "hex", - "memchr", - "percent-encoding", - "seahash", - "url", + "tinyvec_macros", ] [[package]] -name = "uv-cli" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "anstream", - "anyhow", - "clap", - "clap_complete_command", - "fs-err 3.1.0", - "serde", - "url", - "uv-cache", - "uv-configuration", - "uv-distribution-types", - "uv-install-wheel", - "uv-normalize", - "uv-pep508", - "uv-pypi-types", - "uv-python", - "uv-resolver", - "uv-settings", - "uv-static", - "uv-version", - "uv-warnings", -] - -[[package]] -name = "uv-client" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "anyhow", - "async-trait", - "async_http_range_reader", - "async_zip", - "bytecheck", - "fs-err 3.1.0", - "futures 0.3.31", - "html-escape", - "http", - "itertools 0.14.0", - "jiff", - "percent-encoding", - "reqwest", - "reqwest-middleware", - "reqwest-retry", - "rkyv", - "rmp-serde", - "serde", - "serde_json", - "sys-info", - "thiserror 2.0.11", - "tl", - "tokio", - "tokio-util", - "tracing", - "url", - "uv-auth", - "uv-cache", - "uv-cache-key", - "uv-configuration", - "uv-distribution-filename", - "uv-distribution-types", - "uv-fs", - "uv-metadata", - "uv-normalize", - "uv-pep440", - "uv-pep508", - "uv-platform-tags", - "uv-pypi-types", - "uv-static", - "uv-version", - "uv-warnings", -] - -[[package]] -name = "uv-configuration" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ - "clap", - "either", - "fs-err 3.1.0", - "rayon", - "rustc-hash 2.1.1", - "schemars", - "serde", - "serde-untagged", - "serde_json", - "thiserror 2.0.11", + "backtrace", + "bytes 1.10.0", + "libc", + "mio", + "parking_lot 0.12.3", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", "tracing", - "url", - "uv-auth", - "uv-cache", - "uv-cache-info", - "uv-cache-key", - "uv-normalize", - "uv-pep440", - "uv-pep508", - "uv-platform-tags", - "uv-pypi-types", - "uv-static", - "which", + "windows-sys 0.52.0", ] [[package]] -name = "uv-console" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tokio-io" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" dependencies = [ - "console", - "ctrlc", + "bytes 0.4.12", + "futures 0.1.31", + "log", ] [[package]] -name = "uv-dirs" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ - "etcetera", - "uv-static", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "uv-dispatch" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ - "anyhow", - "futures 0.3.31", - "itertools 0.14.0", - "rustc-hash 2.1.1", - "thiserror 2.0.11", + "native-tls", "tokio", - "tracing", - "uv-build-backend", - "uv-build-frontend", - "uv-cache", - "uv-client", - "uv-configuration", - "uv-distribution", - "uv-distribution-filename", - "uv-distribution-types", - "uv-git", - "uv-install-wheel", - "uv-installer", - "uv-platform-tags", - "uv-pypi-types", - "uv-python", - "uv-resolver", - "uv-types", - "uv-version", -] - -[[package]] -name = "uv-distribution" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "anyhow", - "either", - "fs-err 3.1.0", - "futures 0.3.31", - "nanoid", - "owo-colors", - "reqwest", - "reqwest-middleware", - "rmp-serde", - "rustc-hash 2.1.1", - "serde", - "tempfile", - "thiserror 2.0.11", + "rustls", "tokio", - "tokio-util", - "toml", - "tracing", - "url", - "uv-cache", - "uv-cache-info", - "uv-cache-key", - "uv-client", - "uv-configuration", - "uv-distribution-filename", - "uv-distribution-types", - "uv-extract", - "uv-fs", - "uv-git", - "uv-git-types", - "uv-metadata", - "uv-normalize", - "uv-pep440", - "uv-pep508", - "uv-platform-tags", - "uv-pypi-types", - "uv-types", - "uv-workspace", - "walkdir", - "zip", ] [[package]] -name = "uv-distribution-filename" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ - "memchr", - "rkyv", - "serde", - "smallvec", - "thiserror 2.0.11", - "url", - "uv-normalize", - "uv-pep440", - "uv-platform-tags", - "uv-small-str", + "futures-core", + "pin-project-lite", + "tokio", ] [[package]] -name = "uv-distribution-types" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ - "arcstr", - "bitflags 2.8.0", - "fs-err 3.1.0", - "itertools 0.14.0", - "jiff", - "owo-colors", - "percent-encoding", - "petgraph", - "rkyv", - "rustc-hash 2.1.1", - "schemars", - "serde", - "serde_json", - "thiserror 2.0.11", - "tracing", - "url", - "uv-auth", - "uv-cache-info", - "uv-cache-key", - "uv-distribution-filename", - "uv-fs", - "uv-git-types", - "uv-normalize", - "uv-pep440", - "uv-pep508", - "uv-platform-tags", - "uv-pypi-types", - "version-ranges 0.1.1 (git+https://github.com/astral-sh/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4)", -] - -[[package]] -name = "uv-extract" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "astral-tokio-tar", - "async-compression", - "async_zip", - "fs-err 3.1.0", - "futures 0.3.31", - "md-5", - "rayon", - "reqwest", - "rustc-hash 2.1.1", - "sha2", - "thiserror 2.0.11", + "bytes 1.10.0", + "futures-core", + "futures-sink", + "pin-project-lite", "tokio", - "tokio-util", - "tracing", - "uv-configuration", - "uv-distribution-filename", - "uv-pypi-types", - "xz2", - "zip", ] [[package]] -name = "uv-fs" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "toml" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ - "backon", - "dunce", - "either", - "encoding_rs_io", - "fs-err 3.1.0", - "fs2", - "junction", - "path-slash", - "percent-encoding", - "rustix", - "same-file", - "schemars", "serde", - "tempfile", - "tokio", - "tracing", - "winsafe 0.0.22", + "serde_spanned", + "toml_datetime", + "toml_edit", ] [[package]] -name = "uv-git" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ - "anyhow", - "cargo-util", - "dashmap", - "fs-err 3.1.0", - "reqwest", - "reqwest-middleware", - "thiserror 2.0.11", - "tokio", - "tracing", - "url", - "uv-auth", - "uv-cache-key", - "uv-fs", - "uv-git-types", - "uv-static", - "uv-version", - "which", + "serde", ] [[package]] -name = "uv-git-types" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "toml_edit" +version = "0.22.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ + "indexmap 2.7.1", "serde", - "thiserror 2.0.11", - "tracing", - "url", + "serde_spanned", + "toml_datetime", + "winnow", ] [[package]] -name = "uv-globfilter" -version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ - "globset", - "regex", - "regex-automata 0.4.9", - "thiserror 2.0.11", + "async-stream", + "async-trait", + "axum", + "base64 0.22.1", + "bytes 1.10.0", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "socket2", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", "tracing", - "walkdir", ] [[package]] -name = "uv-install-wheel" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ - "clap", - "configparser", - "csv", - "data-encoding", - "fs-err 3.1.0", - "mailparse", - "pathdiff", - "reflink-copy", - "regex", - "rustc-hash 2.1.1", - "same-file", - "schemars", - "self-replace", - "serde", - "serde_json", - "sha2", - "tempfile", - "thiserror 2.0.11", + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", "tracing", - "uv-cache-info", - "uv-distribution-filename", - "uv-fs", - "uv-normalize", - "uv-pep440", - "uv-pypi-types", - "uv-shell", - "uv-trampoline-builder", - "uv-warnings", - "walkdir", ] [[package]] -name = "uv-installer" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ - "anyhow", - "async-channel", - "fs-err 3.1.0", - "futures 0.3.31", - "rayon", - "rustc-hash 2.1.1", - "same-file", - "tempfile", - "thiserror 2.0.11", + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", "tokio", - "tracing", - "url", - "uv-cache", - "uv-cache-info", - "uv-cache-key", - "uv-configuration", - "uv-distribution", - "uv-distribution-types", - "uv-fs", - "uv-git-types", - "uv-install-wheel", - "uv-normalize", - "uv-pep440", - "uv-pep508", - "uv-platform-tags", - "uv-pypi-types", - "uv-python", - "uv-static", - "uv-types", - "uv-warnings", - "walkdir", + "tower-layer", + "tower-service", ] [[package]] -name = "uv-macros" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", - "textwrap", + "pin-project-lite", + "tracing-attributes", + "tracing-core", ] [[package]] -name = "uv-metadata" -version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ - "async_zip", - "fs-err 3.1.0", - "futures 0.3.31", - "thiserror 2.0.11", - "tokio", - "tokio-util", - "uv-distribution-filename", - "uv-normalize", - "uv-pypi-types", - "zip", + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", ] [[package]] -name = "uv-normalize" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ - "rkyv", - "schemars", - "serde", - "uv-small-str", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "uv-once-map" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ - "dashmap", - "futures 0.3.31", - "tokio", + "once_cell", + "valuable", ] [[package]] -name = "uv-options-metadata" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tracing-indicatif" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8201ca430e0cd893ef978226fd3516c06d9c494181c8bf4e5b32e30ed4b40aa1" dependencies = [ - "serde", + "indicatif", + "tracing", + "tracing-core", + "tracing-subscriber", ] [[package]] -name = "uv-pep440" -version = "0.7.0" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "rkyv", - "serde", - "tracing", - "unicode-width 0.1.14", - "unscanny", - "version-ranges 0.1.1 (git+https://github.com/astral-sh/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4)", + "log", + "once_cell", + "tracing-core", ] [[package]] -name = "uv-pep508" -version = "0.6.0" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ - "arcstr", - "boxcar", - "indexmap 2.7.1", - "itertools 0.14.0", + "matchers", + "nu-ansi-term", + "once_cell", "regex", - "rustc-hash 2.1.1", - "schemars", - "serde", + "sharded-slab", "smallvec", - "thiserror 2.0.11", - "unicode-width 0.1.14", - "url", - "uv-fs", - "uv-normalize", - "uv-pep440", - "version-ranges 0.1.1 (git+https://github.com/astral-sh/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4)", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] -name = "uv-performance-flate2-backend" -version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "transport" +version = "1.0.0-alpha13-SNAPSHOT" dependencies = [ - "flate2", - "libz-ng-sys", + "bindgen", + "builder", ] [[package]] -name = "uv-performance-memory-allocator" -version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "mimalloc", - "tikv-jemallocator", -] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] -name = "uv-platform-tags" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tsify" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6b26cf145f2f3b9ff84e182c448eaf05468e247f148cf3d2a7d67d78ff023a0" dependencies = [ - "memchr", - "rkyv", - "rustc-hash 2.1.1", "serde", - "thiserror 2.0.11", - "uv-small-str", + "serde-wasm-bindgen 0.5.0", + "tsify-macros", + "wasm-bindgen", ] [[package]] -name = "uv-publish" -version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "tsify-macros" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a94b0f0954b3e59bfc2c246b4c8574390d94a4ad4ad246aaf2fb07d7dfd3b47" dependencies = [ - "astral-tokio-tar", - "async-compression", - "base64 0.22.1", - "fs-err 3.1.0", - "futures 0.3.31", - "glob", - "itertools 0.14.0", - "reqwest", - "reqwest-middleware", - "reqwest-retry", - "rustc-hash 2.1.1", - "serde", - "serde_json", - "thiserror 2.0.11", - "tokio", - "tokio-util", - "tracing", - "url", - "uv-cache", - "uv-client", - "uv-configuration", - "uv-distribution-filename", - "uv-distribution-types", - "uv-extract", - "uv-fs", - "uv-metadata", - "uv-pypi-types", - "uv-static", - "uv-warnings", + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.98", ] [[package]] -name = "uv-pypi-types" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "hashbrown 0.15.2", - "indexmap 2.7.1", - "itertools 0.14.0", - "jiff", - "mailparse", - "regex", - "rkyv", - "serde", - "serde-untagged", - "thiserror 2.0.11", - "toml", - "toml_edit", - "tracing", - "url", - "uv-distribution-filename", - "uv-fs", - "uv-git-types", - "uv-normalize", - "uv-pep440", - "uv-pep508", -] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] -name = "uv-python" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "typeshare" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19be0f411120091e76e13e5a0186d8e2bcc3e7e244afdb70152197f1a8486ceb" dependencies = [ - "anyhow", - "clap", - "configparser", - "fs-err 3.1.0", - "futures 0.3.31", - "goblin", - "itertools 0.14.0", - "owo-colors", - "procfs", - "regex", - "reqwest", - "reqwest-middleware", - "reqwest-retry", - "rmp-serde", - "same-file", - "schemars", + "chrono", "serde", "serde_json", - "target-lexicon", - "tempfile", - "thiserror 2.0.11", - "tokio", - "tokio-util", - "tracing", - "url", - "uv-cache", - "uv-cache-info", - "uv-cache-key", - "uv-client", - "uv-dirs", - "uv-distribution-filename", - "uv-extract", - "uv-fs", - "uv-install-wheel", - "uv-pep440", - "uv-pep508", - "uv-platform-tags", - "uv-pypi-types", - "uv-state", - "uv-static", - "uv-trampoline-builder", - "uv-warnings", - "which", - "windows-registry 0.4.0", - "windows-result 0.3.1", - "windows-sys 0.59.0", + "typeshare-annotation", ] [[package]] -name = "uv-requirements" -version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "typeshare-annotation" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a615d6c2764852a2e88a4f16e9ce1ea49bb776b5872956309e170d63a042a34f" dependencies = [ - "anyhow", - "configparser", - "console", - "fs-err 3.1.0", - "futures 0.3.31", - "rustc-hash 2.1.1", - "serde", - "thiserror 2.0.11", - "toml", - "tracing", - "url", - "uv-cache-key", - "uv-client", - "uv-configuration", - "uv-console", - "uv-distribution", - "uv-distribution-filename", - "uv-distribution-types", - "uv-fs", - "uv-git", - "uv-normalize", - "uv-pep508", - "uv-pypi-types", - "uv-requirements-txt", - "uv-resolver", - "uv-types", - "uv-warnings", - "uv-workspace", -] - -[[package]] -name = "uv-requirements-txt" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "fs-err 3.1.0", - "r-shquote", - "regex", - "reqwest", - "reqwest-middleware", - "thiserror 2.0.11", - "tracing", - "unscanny", - "url", - "uv-client", - "uv-configuration", - "uv-distribution-types", - "uv-fs", - "uv-normalize", - "uv-pep508", - "uv-pypi-types", - "uv-warnings", + "quote", + "syn 2.0.98", ] [[package]] -name = "uv-resolver" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "umbrella" +version = "0.1.0" dependencies = [ - "arcstr", + "anyhow", + "builder", "clap", - "dashmap", - "either", - "futures 0.3.31", - "hashbrown 0.15.2", - "indexmap 2.7.1", - "itertools 0.14.0", - "jiff", - "owo-colors", - "petgraph", - "pubgrub 0.3.0-alpha.1", - "rkyv", - "rustc-hash 2.1.1", - "same-file", - "schemars", + "console-subscriber", + "diag", + "entry", + "java_native", + "jni", + "jni-sys", + "miette 7.5.0", + "mimalloc", + "orogene", + "posix", "serde", - "smallvec", - "textwrap", - "thiserror 2.0.11", + "terminal", + "tikv-jemallocator", "tokio", - "tokio-stream", - "toml", - "toml_edit", - "tracing", - "url", - "uv-cache-key", - "uv-client", - "uv-configuration", - "uv-distribution", - "uv-distribution-filename", - "uv-distribution-types", - "uv-fs", - "uv-git", - "uv-git-types", - "uv-metadata", - "uv-normalize", - "uv-once-map", - "uv-pep440", - "uv-pep508", - "uv-platform-tags", - "uv-pypi-types", - "uv-python", - "uv-requirements-txt", - "uv-static", - "uv-types", - "uv-warnings", - "uv-workspace", -] - -[[package]] -name = "uv-scripts" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "fs-err 3.1.0", - "indoc", - "memchr", - "serde", - "thiserror 2.0.11", - "toml", - "url", - "uv-pep440", - "uv-pep508", - "uv-pypi-types", - "uv-settings", - "uv-workspace", + "transport", + "typeshare", ] [[package]] -name = "uv-settings" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "clap", - "etcetera", - "fs-err 3.1.0", - "schemars", - "serde", - "textwrap", - "thiserror 2.0.11", - "toml", - "tracing", - "url", - "uv-cache-info", - "uv-configuration", - "uv-distribution-types", - "uv-fs", - "uv-install-wheel", - "uv-macros", - "uv-normalize", - "uv-options-metadata", - "uv-pep508", - "uv-pypi-types", - "uv-python", - "uv-resolver", - "uv-static", - "uv-warnings", -] - -[[package]] -name = "uv-shell" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "anyhow", - "home", - "same-file", - "tracing", - "uv-fs", - "uv-static", - "winreg 0.53.0", -] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] -name = "uv-small-str" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "arcstr", - "rkyv", - "schemars", - "serde", -] +name = "unicode-id-start" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f322b60f6b9736017344fa0635d64be2f458fbc04eef65f6be22976dd1ffd5b" [[package]] -name = "uv-state" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "fs-err 3.1.0", - "tempfile", - "uv-dirs", -] +name = "unicode-ident" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" [[package]] -name = "uv-static" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "uv-macros", -] +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.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] -name = "uv-tool" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ - "fs-err 3.1.0", - "pathdiff", - "self-replace", + "form_urlencoded", + "idna", + "percent-encoding", "serde", - "thiserror 2.0.11", - "toml", - "toml_edit", - "tracing", - "uv-cache", - "uv-dirs", - "uv-fs", - "uv-install-wheel", - "uv-installer", - "uv-pep440", - "uv-pep508", - "uv-pypi-types", - "uv-python", - "uv-settings", - "uv-state", - "uv-static", - "uv-virtualenv", -] - -[[package]] -name = "uv-trampoline-builder" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "fs-err 3.1.0", - "thiserror 2.0.11", - "uv-fs", - "zip", -] - -[[package]] -name = "uv-types" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "anyhow", - "rustc-hash 2.1.1", - "thiserror 2.0.11", - "url", - "uv-cache", - "uv-configuration", - "uv-distribution-filename", - "uv-distribution-types", - "uv-git", - "uv-normalize", - "uv-once-map", - "uv-pep440", - "uv-pep508", - "uv-pypi-types", - "uv-python", ] [[package]] -name = "uv-version" -version = "0.6.2" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" [[package]] -name = "uv-virtualenv" -version = "0.0.4" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "fs-err 3.1.0", - "itertools 0.14.0", - "pathdiff", - "self-replace", - "thiserror 2.0.11", - "tracing", - "uv-fs", - "uv-pypi-types", - "uv-python", - "uv-shell", - "uv-version", -] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] -name = "uv-warnings" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "anstream", - "owo-colors", - "rustc-hash 2.1.1", -] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] -name = "uv-workspace" -version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=878497a014a38dcaf29ac6b56f8201c0f096e5e3#878497a014a38dcaf29ac6b56f8201c0f096e5e3" -dependencies = [ - "fs-err 3.1.0", - "glob", - "itertools 0.14.0", - "owo-colors", - "rustc-hash 2.1.1", - "serde", - "thiserror 2.0.11", - "tokio", - "toml", - "toml_edit", - "tracing", - "url", - "uv-cache-key", - "uv-distribution-types", - "uv-fs", - "uv-git-types", - "uv-macros", - "uv-normalize", - "uv-options-metadata", - "uv-pep440", - "uv-pep508", - "uv-pypi-types", - "uv-static", - "uv-warnings", -] +name = "uuid" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" [[package]] name = "valuable" @@ -9374,43 +5138,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "version-ranges" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8d079415ceb2be83fc355adbadafe401307d5c309c7e6ade6638e6f9f42f42d" -dependencies = [ - "smallvec", -] - -[[package]] -name = "version-ranges" -version = "0.1.1" -source = "git+https://github.com/astral-sh/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4#b70cf707aa43f21b32f3a61b8a0889b15032d5c4" -dependencies = [ - "smallvec", -] - -[[package]] -name = "version-ranges" -version = "0.1.1" -source = "git+https://github.com/elide-tools/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4#b70cf707aa43f21b32f3a61b8a0889b15032d5c4" -dependencies = [ - "smallvec", -] - [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "vsimd" version = "0.8.0" @@ -9446,7 +5179,7 @@ dependencies = [ "itoa", "log", "unicode-width 0.1.14", - "vte 0.11.1", + "vte", ] [[package]] @@ -9460,15 +5193,6 @@ dependencies = [ "vte_generate_state_changes", ] -[[package]] -name = "vte" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "231fdcd7ef3037e8330d8e17e61011a2c244126acc0a982f4040ac3f9f0bc077" -dependencies = [ - "memchr", -] - [[package]] name = "vte_generate_state_changes" version = "0.1.2" @@ -9632,15 +5356,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki-roots" -version = "0.26.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "which" version = "7.0.2" @@ -9649,18 +5364,8 @@ checksum = "2774c861e1f072b3aadc02f8ba886c26ad6321567ecc294c935434cad06f1283" dependencies = [ "either", "env_home", - "regex", "rustix", - "winsafe 0.0.19", -] - -[[package]] -name = "wild" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1" -dependencies = [ - "glob", + "winsafe", ] [[package]] @@ -9706,22 +5411,24 @@ dependencies = [ [[package]] name = "windows" -version = "0.58.0" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +checksum = "ddf874e74c7a99773e62b1c671427abf01a425e77c3d3fb9fb1e4883ea934529" dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", + "windows-collections", + "windows-core 0.60.1", + "windows-future", + "windows-link", + "windows-numerics", ] [[package]] -name = "windows" -version = "0.59.0" +name = "windows-collections" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f919aee0a93304be7f62e8e5027811bbba96bcb1de84d6618be56e43f8a32a1" +checksum = "5467f79cc1ba3f52ebb2ed41dbb459b8e7db636cc3429458d9a852e15bc24dec" dependencies = [ - "windows-core 0.59.0", - "windows-targets 0.53.0", + "windows-core 0.60.1", ] [[package]] @@ -9747,46 +5454,32 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.59.0" +version = "0.60.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce" +checksum = "ca21a92a9cae9bf4ccae5cf8368dce0837100ddf6e6d57936749e85f152f6247" dependencies = [ "windows-implement 0.59.0", "windows-interface 0.59.0", + "windows-link", "windows-result 0.3.1", "windows-strings 0.3.1", - "windows-targets 0.53.0", ] [[package]] -name = "windows-implement" -version = "0.57.0" +name = "windows-future" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +checksum = "a787db4595e7eb80239b74ce8babfb1363d8e343ab072f2ffe901400c03349f0" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "windows-core 0.60.1", + "windows-link", ] [[package]] name = "windows-implement" -version = "0.58.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", @@ -9815,17 +5508,6 @@ dependencies = [ "syn 2.0.98", ] -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - [[package]] name = "windows-interface" version = "0.59.0" @@ -9844,25 +5526,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-numerics" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "005dea54e2f6499f2cee279b8f703b3cf3b5734a2d8d21867c8f44003182eeed" dependencies = [ - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-core 0.60.1", + "windows-link", ] [[package]] name = "windows-registry" -version = "0.4.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result 0.3.1", - "windows-strings 0.3.1", - "windows-targets 0.53.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", ] [[package]] @@ -9962,29 +5643,13 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", + "windows_i686_gnullvm", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows-targets" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" -dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", -] - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -9997,12 +5662,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -10015,12 +5674,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -10033,24 +5686,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -10063,12 +5704,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -10081,12 +5716,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -10099,12 +5728,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -10117,12 +5740,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - [[package]] name = "winnow" version = "0.7.3" @@ -10142,35 +5759,19 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "winreg" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a47b489f8fc5b949477e89dca4d1617f162c6c53fbcbefde553ab17b342ff9" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winsafe" version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" -[[package]] -name = "winsafe" -version = "0.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6ad6cbd9c6e5144971e326303f0e453b61d82e4f72067fccf23106bccd8437" - [[package]] name = "wit-bindgen-rt" version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -10211,15 +5812,6 @@ version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" -[[package]] -name = "xz2" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" -dependencies = [ - "lzma-sys", -] - [[package]] name = "yoke" version = "0.7.5" @@ -10256,11 +5848,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde3bb8c68a8f3f1ed4ac9221aad6b10cece3e60a8e2ea54a6a2dec806d0084c" +checksum = "dcf01143b2dd5d134f11f545cf9f1431b13b749695cb33bcce051e7568f99478" dependencies = [ - "zerocopy-derive 0.8.20", + "zerocopy-derive 0.8.21", ] [[package]] @@ -10276,9 +5868,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eea57037071898bf96a6da35fd626f4f27e9cee3ead2a6c703cf09d472b2e700" +checksum = "712c8386f4f4299382c9abee219bee7084f78fb939d88b6840fcc1320d5f6da2" dependencies = [ "proc-macro2", "quote", @@ -10287,18 +5879,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", @@ -10333,49 +5925,3 @@ dependencies = [ "quote", "syn 2.0.98", ] - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "byteorder", - "crc32fast", - "crossbeam-utils", - "flate2", -] - -[[package]] -name = "zlib-rs" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b20717f0917c908dc63de2e44e97f1e6b126ca58d0e391cee86d504eb8fbd05" - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3051792fbdc2e1e143244dc28c60f73d8470e93f3f9cbd0ead44da5ed802722" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.14+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb060d4926e4ac3a3ad15d864e99ceb5f343c6b34f5bd6d81ae6ed417311be5" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/Cargo.toml b/Cargo.toml index 73e2a496f..ee6dd3eb7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,118 +23,64 @@ exclude = ["crates/build", "third_party", "runtime"] license = "MIT" [profile.dev] -opt-level = 3 -lto = true +opt-level = "s" +lto = "thin" strip = false debug = true -incremental = false -codegen-units = 1 -split-debuginfo = "unpacked" +incremental = true [profile.release] -opt-level = 3 +opt-level = "z" lto = true -strip = false -debug = true +strip = "debuginfo" +debug = false incremental = false codegen-units = 1 -split-debuginfo = "unpacked" [profile.dev.package.builder] opt-level = 3 -incremental = false -codegen-units = 1 +debug = true +incremental = true overflow-checks = false -split-debuginfo = "unpacked" [patch.crates-io] ## Version Pins / Overrides async-std = { git = "https://github.com/elide-tools/async-std", rev = "33f56cce1777319a2c64cac35660f7991262d00c" } ssri = { git = "https://github.com/elide-tools/ssri-rs", rev = "57b5790f8d114f5b31a716a81dee6f37c0f96c3e" } -jni = { git = "https://github.com/elide-tools/jni-rs", rev = "b8ec9b0c717833a640de835ab1d91577bfbd6300" } - -[patch."https://github.com/astral-sh/pubgrub"] -pubgrub = { git = "https://github.com/elide-tools/pubgrub", rev = "b70cf707aa43f21b32f3a61b8a0889b15032d5c4" } +jni = { git = "https://github.com/elide-tools/jni-rs", rev = "52526ede7ff165632bfd44259a10d0ac77d60e96" } [workspace.dependencies] ## Local base = { path = "crates/base" } builder = { path = "crates/builder" } diag = { path = "crates/diag" } -deps = { path = "crates/deps" } entry = { path = "crates/entry" } model = { path = "crates/model" } posix = { path = "crates/posix" } -project = { path = "crates/project" } -protocol = { path = "crates/protocol" } -sqlite = { path = "crates/sqlite" } js = { path = "crates/js" } -substrate = { path = "crates/substrate" } terminal = { path = "crates/terminal" } transport = { path = "crates/transport" } ## Dependencies anyhow = { version = "1.0.96" } -arbitrary = { version = "1", features = ["derive"] } -argfile = { version = "0.2.1" } base64 = { version = "0.22.1", default-features = false, features = ["alloc"] } base64-simd = { version = "0.8.0" } bindgen = { version = "0.71.1" } -boring = { version = "4.14.0" } build_const = { version = "0.2.2", default-features = false } -bytes = { version = "1.10.0" } -bytemuck = { version = "1.21.0", features = [ - "derive", - "extern_crate_std", - "nightly_stdsimd", - "nightly_float", - "nightly_portable_simd", - "aarch64_simd", -] } cc = { version = "1.2.15", features = ["parallel"] } clap = { version = "4.5.30", features = ["derive"] } -colored = { version = "3.0.0" } console-subscriber = { version = "0.4.1" } -const_fn = { version = "0.4" } -const_format = { version = "0.2.34" } -const-crc32-nostd = { version = "1.3.1" } -const_panic = { version = "0.2.12" } crc32fast = { version = "1.4.2", default-features = false, features = ["nightly"] } crc64fast = { version = "1.1.0", features = ["pmull"] } -futures = { version = "0.3.31", default-features = false } -heapless = { version = "0.8.0", features = ["portable-atomic"] } java_native = { git = "https://github.com/elide-tools/jni-macros", rev = "7dc95cc2d7534761d0b16899dcda9e7729bdb89d" } jni = { version = "0.21.1", default-features = false, features = [] } jni-sys = { version = "0.4.0" } -jni-utils = { version = "0.1.1" } -lazy_static = { version = "1.5.0" } -libabort = { version = "0.1.9", features = ["libc"] } -libloading = { version = "0.8.6" } -libsqlite3-sys = { version = "0.29.0", default-features = false, features = ["loadable_extension", "openssl-sys"] } -maven-toolbox = { version = "0.0.3" } miette = { version = "7.5.0", features = ["fancy"] } mimalloc = { version = "0.1.43" } -mvn = { version = "0.2.0" } -orogene = { git = "https://github.com/elide-dev/orogene", rev = "cbcf969348267ee30452606b152a40edcaf049c4" } -panic-abort = { version = "0.3.2" } -panic-halt = { version = "0.2.0" } -pkg-config = { version = "0.3.31" } -portable-atomic = { version = "1", default-features = false } -powerfmt = { version = "0.2.0", default-features = false } -prost = { version = "0.13.5" } -prost-build = { version = "0.13.5" } -prost-types = { version = "0.13.5" } -pubgrub = { version = "0.3.0" } -purl = { version = "0.1.5" } -rkyv = { version = "0.8.10", default-features = false } -rusqlite = { version = "0.31.0", default-features = false } +orogene = { git = "https://github.com/elide-dev/orogene", rev = "d8222b23fdc35181c2b3844ae70384e3278aeb07" } rustc_version = { version = "0.4.1" } rustix = { version = "0.38.44", features = ["process"] } -sccache = { version = "0.9.1", default-features = false, features = ["dist-client", "gha", "redis", "s3"] } -semver = { version = "1.0.25" } -sentry = { version = "0.34.0" } serde = { version = "1.0.218", default-features = false } -#simdutf = { version = "0.6.0" } smartstring = { version = "1.0.1", default-features = false } sysinfo = { version = "0.33.1" } tikv-jemallocator = { version = "0.6.0", default-features = false, features = ["disable_initial_exec_tls"] } @@ -150,49 +96,20 @@ tokio = { version = "1", default-features = false, features = [ "signal-hook-registry", "tracing", ] } -tokio-uring = { version = "0.5.0" } + toml = { version = "0.8.20", default-features = false } -toml_edit = { version = "0.22.24" } -trauma = { version = "2.2.6" } typeshare = { version = "1.0.4" } -uuid = { version = "1.14.0", default-features = false, features = [ - "arbitrary", - "fast-rng", - "serde", - "v4", - "v7", - "v8", - "zerocopy", -] } -vcpkg = { version = "0.2.15" } -wild = { version = "2" } - -## Biome -biome_console = "0.5.8" -biome_css_formatter = "0.5.7" -biome_diagnostics = "0.5.8" -biome_diagnostics_categories = "0.5.7" -biome_diagnostics_macros = "0.5.7" -biome_formatter = "0.5.7" -biome_js_formatter = "0.5.7" -biome_json_formatter = "0.5.7" -biome_markup = "0.5.7" -biome_suppression = "0.5.7" -biome_unicode_table = "0.5.9" ## Oxc -oxc = { git = "https://github.com/elide-dev/oxc", rev = "69091c0f1b9295c4ae4b3bdfb70c0b2a02d3d5e8", default-features = false, features = [ +oxc = { git = "https://github.com/elide-dev/oxc", rev = "c79fc2cc3a61add19468ed2e3bdebb1e171538fa", default-features = false, features = [ "full", - "codegen", "isolated_declarations", "mangler", "minifier", - "semantic", - "transformer", ] } ## Uv -uv = { git = "https://github.com/elide-dev/uv", rev = "878497a014a38dcaf29ac6b56f8201c0f096e5e3" } +# uv = { git = "https://github.com/elide-dev/uv", rev = "c65dae64fec2545d92fd6a8f50c467dfc5efe06e" } ## Ruff -ruff = { git = "https://github.com/elide-dev/ruff", rev = "b312b53c2eafd97a084f9f2961a99fbfa257f21a" } +# ruff = { git = "https://github.com/elide-dev/ruff", rev = "cf83584abb130574059064ad5f0dd806c22e45d5" } diff --git a/Makefile b/Makefile index 2ba0a157d..37569ad8f 100644 --- a/Makefile +++ b/Makefile @@ -25,13 +25,14 @@ REMOTE ?= no PUSH ?= no CHECK ?= yes NATIVE ?= no +MUSL ?= no COVERAGE ?= yes BUILD_NATIVE_IMAGE ?= no BUILD_STDLIB ?= no RELEASE ?= no MACOS_MIN_VERSION ?= 12.3 -ENABLE_CCACHE ?= yes -ENABLE_SCCACHE ?= yes +ENABLE_CCACHE ?= no +ENABLE_SCCACHE ?= no CUSTOM_JVM ?= no export STRICT ?= yes export WASM ?= no @@ -39,6 +40,12 @@ export RELOCK ?= no DEFAULT_REPOSITORY ?= s3://elide-maven REPOSITORY ?= $(DEFAULT_REPOSITORY) +ifeq ($(CC),clang) +export COMPILER ?= clang +else +export COMPILER ?= gcc +endif + # Flags that are exported to the third_party build. export CUSTOM_ZLIB ?= no @@ -593,6 +600,25 @@ endif UMBRELLA_TARGET_PATH = target/$(UMBRELLA_TARGET) +cflags-base: + @cat $(ELIDE_ROOT)/tools/cflags/base | xargs + +cflags-gcc: + @cat $(ELIDE_ROOT)/tools/cflags/base $(ELIDE_ROOT)/tools/cflags/gcc | xargs 2> /dev/null + +cflags-clang: + @cat $(ELIDE_ROOT)/tools/cflags/gcc $(ELIDE_ROOT)/tools/cflags/clang | xargs 2> /dev/null + +cflags: ## Generate cflags for assigned target (pass COMPILER=clang for clang). + @cat $(ELIDE_ROOT)/tools/cflags/base $(ELIDE_ROOT)/tools/cflags/$(COMPILER) | xargs 2> /dev/null + +cenv: ## Show the C compiler environment. + @echo "CC=$(CC)" + @echo "CXX=$(CXX)" + @echo "LD=$(LD)" + @echo "COMPILER=$(COMPILER)" + @echo "CFLAGS=\"$(shell cat $(ELIDE_ROOT)/tools/cflags/base $(ELIDE_ROOT)/tools/cflags/$(COMPILER) | xargs 2> /dev/null)\"" + umbrella: third-party $(UMBRELLA_TARGET_PATH) ## Build the native umbrella tooling library. $(UMBRELLA_TARGET_PATH): third_party/lib @@ -633,11 +659,15 @@ clean-natives: ## Clean local native targets. natives: $(DEPS) ## Rebuild natives (C/C++ and Rust). ifeq ($(BUILD_STDLIB),yes) - @echo "" && echo "Building Rust stdlib (mode: $(BUILD_MODE), native: $(NATIVE))..." + @echo "" && echo "Building Rust stdlib (mode: $(BUILD_MODE), native: $(NATIVE))" $(CMD)$(CARGO) run +nightly -Zbuild-std --target $(RUSTC_TARGET) endif - @echo "" && echo "Building Elide crates..." - $(CMD)$(CARGO) build $(CARGO_FLAGS) + @echo "" && echo "Building Elide crates (mode: $(BUILD_MODE), native: $(NATIVE), target: $(RUSTC_TARGET))" +ifeq ($(RELEASE),yes) + $(CMD)$(CARGO) build $(CARGO_FLAGS) --target $(RUSTC_TARGET) --release +else + $(CMD)$(CARGO) build $(CARGO_FLAGS) --target $(RUSTC_TARGET) +endif third-party: third_party/sqlite third_party/lib ## Build all third-party embedded projects. diff --git a/benchmarks/graalvm/build.gradle.kts b/benchmarks/bench-graalvm/build.gradle.kts similarity index 90% rename from benchmarks/graalvm/build.gradle.kts rename to benchmarks/bench-graalvm/build.gradle.kts index 1164a1777..e7cc0332b 100644 --- a/benchmarks/graalvm/build.gradle.kts +++ b/benchmarks/bench-graalvm/build.gradle.kts @@ -20,6 +20,7 @@ import kotlinx.benchmark.gradle.* import org.jetbrains.kotlin.allopen.gradle.* +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { kotlin("jvm") @@ -30,7 +31,7 @@ plugins { alias(libs.plugins.kotlinx.plugin.benchmark) } -val javaLanguageVersion = "20" +val javaLanguageVersion = "23" sourceSets.all { java.setSrcDirs(listOf("jmh/src")) @@ -48,7 +49,8 @@ dependencies { implementation(mn.micronaut.runtime) implementation(projects.packages.graalvm) implementation(libs.lmax.disruptor.core) - compileOnly(libs.graalvm.sdk) + implementation(libs.lmax.disruptor.proxy) + compileOnly(libs.graalvm.svm) runtimeOnly(libs.logback) } @@ -79,8 +81,8 @@ tasks.withType(Copy::class).configureEach { } tasks.withType().configureEach { - kotlinOptions { - jvmTarget = javaLanguageVersion + compilerOptions { + jvmTarget = JvmTarget.fromTarget(javaLanguageVersion) javaParameters = true incremental = true } diff --git a/benchmarks/graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt b/benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt similarity index 100% rename from benchmarks/graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt rename to benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt diff --git a/benchmarks/core/build.gradle.kts b/benchmarks/core/build.gradle.kts index 7cb23deff..8ff8b6451 100644 --- a/benchmarks/core/build.gradle.kts +++ b/benchmarks/core/build.gradle.kts @@ -18,10 +18,8 @@ "DSL_SCOPE_VIOLATION", ) -import dev.elide.buildtools.gradle.plugin.BuildMode import kotlinx.benchmark.gradle.* import org.jetbrains.kotlin.allopen.gradle.* -import tools.elide.assets.EmbeddedScriptLanguage plugins { kotlin("kapt") @@ -35,9 +33,13 @@ plugins { val javaLanguageVersion = project.properties["versions.java.language"] as String +kotlin { + jvm() +} + sourceSets.all { - kotlin.setSrcDirs(listOf("jmh/src")) - resources.setSrcDirs(listOf("jmh/resources")) +// kotlin.srcDirs(listOf("jmh/src")) +// resources.srcDirs(listOf("jmh/resources")) } dependencies { @@ -51,16 +53,16 @@ allOpen { benchmark { configurations { - named("main") { - warmups = 10 - iterations = 5 - } +// named("main") { +// warmups = 10 +// iterations = 5 +// } } targets { - register("main") { - this as JvmBenchmarkTarget - jmhVersion = libs.versions.jmh.lib.get() - } +// register("main") { +// this as JvmBenchmarkTarget +// jmhVersion = libs.versions.jmh.lib.get() +// } } } diff --git a/benchmarks/server/build.gradle.kts b/benchmarks/server/build.gradle.kts index db79e020e..f0b4eee4f 100644 --- a/benchmarks/server/build.gradle.kts +++ b/benchmarks/server/build.gradle.kts @@ -18,10 +18,8 @@ "DSL_SCOPE_VIOLATION", ) -import dev.elide.buildtools.gradle.plugin.BuildMode import kotlinx.benchmark.gradle.* import org.jetbrains.kotlin.allopen.gradle.* -import tools.elide.assets.EmbeddedScriptLanguage plugins { kotlin("jvm") @@ -29,29 +27,12 @@ plugins { kotlin("plugin.allopen") kotlin("plugin.serialization") - alias(libs.plugins.elide) alias(libs.plugins.jmh) alias(libs.plugins.kotlinx.plugin.benchmark) } val javaLanguageVersion = project.properties["versions.java.language"] as String -elide { - mode = BuildMode.PRODUCTION - - server { - assets { - bundler { - format(tools.elide.assets.ManifestFormat.BINARY) - compression { - minimumSizeBytes(0) - keepAllVariants() - } - } - } - } -} - sourceSets.all { java.setSrcDirs(listOf("jmh/src")) resources.setSrcDirs(listOf("jmh/resources")) diff --git a/build.gradle.kts b/build.gradle.kts index 3c9c0be2a..49795dfb4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -78,19 +78,16 @@ val props = Properties().apply { } } -val isCI = hasProperty("elide.ci") && properties["elide.ci"] == "true" - val javaLanguageVersion = properties["versions.java.language"] as String -val kotlinLanguageVersion = properties["versions.kotlin.language"] as String val nodeVersion: String by properties val enableOwasp: String? by properties -val buildSamples: String by properties val buildDocs: String by properties val buildDeprecated: String by properties val buildEmbedded: String by properties val buildAuxImage: String by properties val buildDocsModules: String by properties +val buildBenchmarks: String by properties buildscript { repositories { @@ -352,6 +349,15 @@ apiValidation { "transport-epoll", "transport-uring", "reports", + ).plus( + if (buildBenchmarks == "true") { + listOf( + "benchmarks", + "bench-graalvm", + ) + } else { + emptyList() + }, ).plus( if (buildAuxImage == "true") { listOf( diff --git a/config/run/Debug JVM.run.xml b/config/run/Debug JVM.run.xml new file mode 100644 index 000000000..e2dd1022c --- /dev/null +++ b/config/run/Debug JVM.run.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/config/run/Guest Debug.run.xml b/config/run/Guest Debug.run.xml new file mode 100644 index 000000000..b2fe961ac --- /dev/null +++ b/config/run/Guest Debug.run.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/config/run/Native (elide.debug).run.xml b/config/run/Native (elide.debug).run.xml new file mode 100644 index 000000000..e8fd564ff --- /dev/null +++ b/config/run/Native (elide.debug).run.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/config/run/Native Debug (elide.debug).run.xml b/config/run/Native Debug (elide.debug).run.xml new file mode 100644 index 000000000..b3a7ac6e0 --- /dev/null +++ b/config/run/Native Debug (elide.debug).run.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/crates/base/Cargo.toml b/crates/base/Cargo.toml index 213a18725..f3ade2650 100644 --- a/crates/base/Cargo.toml +++ b/crates/base/Cargo.toml @@ -29,15 +29,8 @@ unstable = ["base64-simd/unstable"] unsafe = [] [dependencies] -arbitrary = { workspace = true } base64 = { workspace = true } base64-simd = { workspace = true } -const_fn = { workspace = true } -const_panic = { workspace = true } crc32fast = { workspace = true } crc64fast = { workspace = true } -libabort = { workspace = true } -#panic-abort = { workspace = true } -#simdutf = { workspace = true } smartstring = { workspace = true, default-features = false, features = ["arbitrary", "serde"] } -uuid = { workspace = true } diff --git a/crates/builder/Cargo.toml b/crates/builder/Cargo.toml index c6eabd12a..9d9a0af5a 100644 --- a/crates/builder/Cargo.toml +++ b/crates/builder/Cargo.toml @@ -22,7 +22,6 @@ version = "1.0.0-alpha13-SNAPSHOT" crate-type = ["lib"] [dependencies] -base = { workspace = true } model = { workspace = true } cc = { workspace = true, features = ["parallel"] } bindgen = { workspace = true } diff --git a/crates/builder/src/lib.rs b/crates/builder/src/lib.rs index 3fa768877..acb508f1b 100644 --- a/crates/builder/src/lib.rs +++ b/crates/builder/src/lib.rs @@ -413,17 +413,21 @@ pub fn target_arch() -> TargetArch { } /// Common C flags applied to all builds which use this builder interface. -const common_c_flags: [&str; 10] = [ +const common_c_flags: [&str; 14] = [ + "-g", "-O3", "-fPIC", "-fPIE", - "-fno-omit-frame-pointer", - "-fstack-protector-strong", "-fstack-clash-protection", + "-fstack-protector-strong", + "-fexceptions", + "-ffunction-sections", + "-fdata-sections", + "-fno-omit-frame-pointer", "-fno-delete-null-pointer-checks", "-fno-strict-overflow", "-fno-strict-aliasing", - "-fexceptions", + "-DELIDE", ]; /// Common ASM flags applied to all builds which use this builder interface. @@ -435,7 +439,10 @@ pub fn setup_cc() -> Build { let os = target_os(); let arch = target_arch(); let mut build = Build::new(); - + let custom_cc = var("CC"); + if let Ok(cc) = custom_cc { + build.compiler(cc.clone()); + } build // Defines & Compiler Settings .pic(true) @@ -457,16 +464,34 @@ pub fn setup_cc() -> Build { build // General Hardening .flag_if_supported("-fhardened") + //.flag("-fuse-linker-plugin") .flag_if_supported("-fstrict-flex-arrays=3") .flag_if_supported("-fno-delete-null-pointer-checks") .flag_if_supported("-fno-strict-overflow") .flag_if_supported("-fno-strict-aliasing"); + // if we are on x86_64... + if arch == TargetArch::Amd64 { + build + // x86_64-specific Flags + .flag("-fcf-protection=full"); + } else { + build + // ARM64-specific Flags + .flag("-mbranch-protection=standard"); + } + // add cflags for flag in common_c_flags.iter() { build.flag(flag); } + // add libc flags for musl + let target = var("TARGET").unwrap(); + if target.contains("musl") { + build.define("__MUSL__", "1"); + } + // add asm flags for flag in common_asm_flags.iter() { build.asm_flag(flag); @@ -480,8 +505,7 @@ pub fn setup_cc() -> Build { .flag("-g"), "release" => build // Release-only Flags - .define("ELIDE_RELEASE", "1") - .flag("-flto"), + .define("ELIDE_RELEASE", "1"), _ => &mut build, }; @@ -489,11 +513,11 @@ pub fn setup_cc() -> Build { // add os-specific flags match os { TargetOs::Darwin => match arch { - TargetArch::Amd64 => &mut build, + TargetArch::Amd64 => build + .flag("-march=x86-64-v3"), TargetArch::Arm64 => build // C Flags: macOS .flag("-march=armv8-a+crypto+crc+simd") - .flag("-mbranch-protection=standard") .flag(format!("-mmacos-version-min={}", MACOS_MIN)) .define("__ARM_NEON", "1") .define("__ARM_FEATURE_AES", "1") diff --git a/crates/deps/Cargo.toml b/crates/deps/Cargo.toml index a52b3120d..d68fcdb71 100644 --- a/crates/deps/Cargo.toml +++ b/crates/deps/Cargo.toml @@ -24,13 +24,13 @@ crate-type = ["lib"] [dependencies] ## Local base = { workspace = true } -model = { workspace = true } +# model = { workspace = true } ## Crates -pubgrub = { workspace = true } -purl = { workspace = true } -semver = { workspace = true } +# pubgrub = { workspace = true } +# purl = { workspace = true } +# semver = { workspace = true } serde = { workspace = true } -toml = { workspace = true } -toml_edit = { workspace = true } +# toml = { workspace = true } +# toml_edit = { workspace = true } typeshare = { workspace = true } diff --git a/crates/diag/Cargo.toml b/crates/diag/Cargo.toml index 81880cbcc..126460137 100644 --- a/crates/diag/Cargo.toml +++ b/crates/diag/Cargo.toml @@ -19,11 +19,9 @@ workspace = "../.." version = "1.0.0-alpha13-SNAPSHOT" [lib] -crate-type = ["lib", "cdylib", "staticlib"] +crate-type = ["lib", "staticlib"] [dependencies] java_native = { workspace = true } jni = { workspace = true, default-features = false } -jni-sys = { workspace = true } -oxc = { workspace = true } # miette = { workspace = true } diff --git a/crates/js/Cargo.toml b/crates/js/Cargo.toml index 8a3fa0585..1abfca58e 100644 --- a/crates/js/Cargo.toml +++ b/crates/js/Cargo.toml @@ -24,6 +24,5 @@ crate-type = ["lib", "cdylib", "staticlib"] [dependencies] java_native = { workspace = true } jni = { workspace = true, default-features = false } -jni-sys = { workspace = true } oxc = { workspace = true } diag = { workspace = true } diff --git a/crates/js/src/lib.rs b/crates/js/src/lib.rs index d944c70fe..48973dc8b 100644 --- a/crates/js/src/lib.rs +++ b/crates/js/src/lib.rs @@ -25,7 +25,7 @@ mod codegen; /// Pre-compiler implementation. mod precompiler; -#[jni("elide.runtime.gvm.js.JavaScriptPrecompiler")] +#[jni("elide.runtime.lang.javascript.JavaScriptPrecompiler")] pub fn precompile<'a>( mut env: JNIEnv<'a>, _class: JClass<'a>, diff --git a/crates/model/Cargo.toml b/crates/model/Cargo.toml index faf7a44cb..d65356231 100644 --- a/crates/model/Cargo.toml +++ b/crates/model/Cargo.toml @@ -22,7 +22,7 @@ version = "1.0.0-alpha13-SNAPSHOT" crate-type = ["lib"] [dependencies] -const-crc32-nostd = { workspace = true } +# const-crc32-nostd = { workspace = true } serde = { workspace = true } typeshare = { workspace = true } diff --git a/crates/project/Cargo.toml b/crates/project/Cargo.toml index a0085c5b7..ffc0f0af8 100644 --- a/crates/project/Cargo.toml +++ b/crates/project/Cargo.toml @@ -22,10 +22,8 @@ version = "1.0.0-alpha13-SNAPSHOT" crate-type = ["lib"] [dependencies] -model = { workspace = true } serde = { workspace = true } toml = { workspace = true, features = ["parse"] } -toml_edit = { workspace = true } typeshare = { workspace = true } [build-dependencies] diff --git a/crates/protocol/Cargo.toml b/crates/protocol/Cargo.toml index edf20aa30..dce3ab02b 100644 --- a/crates/protocol/Cargo.toml +++ b/crates/protocol/Cargo.toml @@ -22,11 +22,11 @@ version = "1.0.0-alpha13-SNAPSHOT" crate-type = ["lib"] [dependencies] -bytes = { workspace = true } -prost = { workspace = true } +#bytes = { workspace = true } +#prost = { workspace = true } [build-dependencies] -builder = { workspace = true } -const_format = { workspace = true } -model = { workspace = true } -prost-build = { workspace = true } +#builder = { workspace = true } +#const_format = { workspace = true } +#model = { workspace = true } +#prost-build = { workspace = true } diff --git a/crates/sqlite/Cargo.toml b/crates/sqlite/Cargo.toml index a41a472b2..1c64b48d6 100644 --- a/crates/sqlite/Cargo.toml +++ b/crates/sqlite/Cargo.toml @@ -24,12 +24,7 @@ crate-type = ["lib", "staticlib", "cdylib"] [dependencies] java_native = { workspace = true } -jni = { workspace = true, default-features = false } -jni-sys = { workspace = true } [build-dependencies] builder = { workspace = true } bindgen = { workspace = true } -pkg-config = { workspace = true } -vcpkg = { workspace = true } -cc = { workspace = true, features = ["parallel"] } diff --git a/crates/sqlite/build.rs b/crates/sqlite/build.rs index 0aff7cb29..a76f38b10 100644 --- a/crates/sqlite/build.rs +++ b/crates/sqlite/build.rs @@ -44,14 +44,14 @@ fn main() { .flag("-w") .flag("-fPIC") .flag("-fstack-protector-strong") - .flag_if_supported("-fstack-clash-protection") - .flag_if_supported("-fhardened") - .flag_if_supported("-Wl,-z,relro,-z,now") - .flag_if_supported("-Wl,-z,noexecstack") - .flag_if_supported("-Wl,-z,separate-code") - .flag_if_supported("-Wa,--noexecstack"); + .flag("-fstack-clash-protection") + .flag("-Wl,-z,relro,-z,now") + .flag("-Wl,-z,noexecstack") + .flag("-Wl,-z,separate-code") + .flag("-Wa,--noexecstack"); - build.flag(sqlite_include.clone()); + build + .flag(sqlite_include.clone()); build // Defines & Compiler Settings @@ -67,7 +67,7 @@ fn main() { .define("SQLITE_ENABLE_FTS3_PARENTHESIS", "1") .define("SQLITE_ENABLE_FTS5", "1") .define("SQLITE_ENABLE_LOAD_EXTENSION", "1") - .define("SQLITE_ENABLE_MATH_FUNCTIONS", "1") + .define("SQLITE_ENABLE_MATH_FUNCTIONS", "0") .define("SQLITE_ENABLE_RTREE", "1") .define("SQLITE_ENABLE_STAT4", "1") .define("SQLITE_HAVE_ISNAN", "1") diff --git a/crates/substrate/Cargo.toml b/crates/substrate/Cargo.toml index 955a2d7df..6a52b1e08 100644 --- a/crates/substrate/Cargo.toml +++ b/crates/substrate/Cargo.toml @@ -20,13 +20,13 @@ version = "1.0.0-alpha13-SNAPSHOT" [lib] name = "gvmcapi" -crate-type = ["lib", "staticlib", "cdylib"] +crate-type = ["lib", "staticlib"] [dependencies] -java_native = { workspace = true } -jni = { workspace = true, default-features = false } -jni-sys = { workspace = true } -libloading = { workspace = true } +# java_native = { workspace = true } +# jni = { workspace = true, default-features = false } +# jni-sys = { workspace = true } +# libloading = { workspace = true } [build-dependencies] builder = { workspace = true } diff --git a/crates/terminal/Cargo.toml b/crates/terminal/Cargo.toml index 5ad610819..ebe7f1274 100644 --- a/crates/terminal/Cargo.toml +++ b/crates/terminal/Cargo.toml @@ -19,14 +19,11 @@ workspace = "../.." version = "1.0.0-alpha13-SNAPSHOT" [lib] -crate-type = ["lib"] +crate-type = ["lib", "cdylib", "staticlib"] [dependencies] -java_native = { workspace = true } -jni = { workspace = true, default-features = false } -jni-sys = { workspace = true } +# Nothing at this time. [build-dependencies] builder = { workspace = true } bindgen = { workspace = true } -cc = { workspace = true } diff --git a/crates/terminal/src/clibrary.c b/crates/terminal/src/clibrary.c index 4ec33e60f..401e4b9ef 100644 --- a/crates/terminal/src/clibrary.c +++ b/crates/terminal/src/clibrary.c @@ -67,8 +67,13 @@ struct termios *getTermiosFields(JNIEnv *env, jobject lpObject, struct termios * jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, TermiosFc.c_cc); (*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->c_cc), (jbyte *)lpStruct->c_cc); } +#ifndef __MUSL__ lpStruct->c_ispeed = (*env)->GetLongField(env, lpObject, TermiosFc.c_ispeed); lpStruct->c_ospeed = (*env)->GetLongField(env, lpObject, TermiosFc.c_ospeed); +#else + lpStruct->__c_ispeed = (*env)->GetLongField(env, lpObject, TermiosFc.c_ispeed); + lpStruct->__c_ospeed = (*env)->GetLongField(env, lpObject, TermiosFc.c_ospeed); +#endif return lpStruct; } @@ -83,8 +88,13 @@ void setTermiosFields(JNIEnv *env, jobject lpObject, struct termios *lpStruct) jbyteArray lpObject1 = (jbyteArray)(*env)->GetObjectField(env, lpObject, TermiosFc.c_cc); (*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->c_cc), (jbyte *)lpStruct->c_cc); } +#ifndef __MUSL__ (*env)->SetLongField(env, lpObject, TermiosFc.c_ispeed, (jlong)lpStruct->c_ispeed); (*env)->SetLongField(env, lpObject, TermiosFc.c_ospeed, (jlong)lpStruct->c_ospeed); +#else + (*env)->SetLongField(env, lpObject, TermiosFc.c_ispeed, (jlong)lpStruct->__c_ispeed); + (*env)->SetLongField(env, lpObject, TermiosFc.c_ospeed, (jlong)lpStruct->__c_ospeed); +#endif } typedef struct WinSize_FID_CACHE { diff --git a/crates/transport/Cargo.toml b/crates/transport/Cargo.toml index 5255bf595..7fca749d7 100644 --- a/crates/transport/Cargo.toml +++ b/crates/transport/Cargo.toml @@ -19,15 +19,11 @@ workspace = "../.." version = "1.0.0-alpha13-SNAPSHOT" [lib] -crate-type = ["lib", "staticlib"] +crate-type = ["lib", "staticlib", "cdylib"] [dependencies] -boring = { workspace = true } -java_native = { workspace = true } -jni = { workspace = true, default-features = false } -jni-sys = { workspace = true } +# Nothing. [build-dependencies] builder = { workspace = true } bindgen = { workspace = true } -cc = { workspace = true } diff --git a/crates/transport/build.rs b/crates/transport/build.rs index 21b9a8efc..c4305da34 100644 --- a/crates/transport/build.rs +++ b/crates/transport/build.rs @@ -23,7 +23,8 @@ fn main() { build // Compiler Settings .std("gnu99") - .flag("-w"); + .flag("-w") + .flag("-Wno-int-conversion"); build // Defines & Compiler Settings @@ -94,7 +95,13 @@ fn main() { .file(src_file("netty_unix_socket.c")) .file(src_file("netty_unix_util.c")); - let shared_cflags = vec!["-nostdlibs", "-lssl", "-lcrypto", "-lapr-2", "-lz", "-lc++"]; + let shared_cflags = vec![ + "-lssl", + "-lcrypto", + "-lapr-2", + "-lz", + "-lc++", + ]; let shared_linkflags = vec![ // force resolution of all symbols at build time "-Wl,--no-undefined", diff --git a/crates/transport/src/lib.rs b/crates/transport/src/lib.rs index 9d19fe4d5..ca835d079 100644 --- a/crates/transport/src/lib.rs +++ b/crates/transport/src/lib.rs @@ -16,7 +16,8 @@ non_camel_case_types, non_upper_case_globals, improper_ctypes, - clippy::missing_safety_doc + clippy::missing_safety_doc, + unsafe_op_in_unsafe_fn, )] include!(concat!(env!("OUT_DIR"), "/libtransport.rs")); diff --git a/crates/transport/src/netty_io_uring_linuxsocket.c b/crates/transport/src/netty_io_uring_linuxsocket.c index c537846b1..f2a419191 100644 --- a/crates/transport/src/netty_io_uring_linuxsocket.c +++ b/crates/transport/src/netty_io_uring_linuxsocket.c @@ -31,6 +31,19 @@ * (before including any header files) in order to obtain the * definition of the ucred structure. See */ + +#define _GNU_SOURCE + +#include +#ifndef __USE_GNU + #define __MUSL__ +#endif + +// if we are on musl, include base types +#ifdef __MUSL__ +#include +#endif + #define _GNU_SOURCE #include diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index fb6acf651..4c09a9642 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -19,3 +19,6 @@ path = "fuzz_targets/fuzz_target_1.rs" test = false doc = false bench = false + +[package.metadata.cargo-machete] +ignored = ["base"] diff --git a/gradle.properties b/gradle.properties index 9df6dccab..9afcaced5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,11 +18,11 @@ publishMainHostLock = false buildSamples = false buildExamples = false -buildEmbedded = false +buildEmbedded = true buildPlugins = false buildDocs = false buildDocsModules = false -buildBenchmarks = false +buildBenchmarks = true buildMingw = true buildAndroid = false buildUuid = false diff --git a/gradle/elide.versions.toml b/gradle/elide.versions.toml index 21bc807c2..07e8ab372 100644 --- a/gradle/elide.versions.toml +++ b/gradle/elide.versions.toml @@ -122,7 +122,7 @@ kotlin-compile-testing = "1.6.0" kotlin-dataframe = "0.11.0" kotlin-language = "2.0" kotlin-sdk = "2.1.20-RC" -kotlinpoet = "2.0.0" +kotlinpoet = "2.1.0" kotlinx-abiValidator = "0.17.0" kotlinx-benchmark = "0.4.11" kotlinx-browser = "0.1" @@ -177,9 +177,9 @@ ktlint = "1.1.1" ktoml = "0.5.2" larray = "0.2.1" lettuce = "6.2.5.RELEASE" -lmaxDisruptor = "4.0.0" +lmaxDisruptor = "3.4.4" lmaxDisruptorProxy = "3.1.1" -logback = "1.5.16" +logback = "1.5.17" lz4 = "1.3.0" magicProgress = "0.3.2" mermaidDokka = "0.6.0" diff --git a/gradle/mn-override.versions.toml b/gradle/mn-override.versions.toml index 0666653eb..0a26523ea 100644 --- a/gradle/mn-override.versions.toml +++ b/gradle/mn-override.versions.toml @@ -1,3 +1,4 @@ [versions] micronaut-core = "4.7.1" micronaut-platform = "4.7.4" +micronaut-picocli = "5.7.0" diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 78ab262ea..b33735541 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -40,6 +40,11 @@ + + + + + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c02d4df99..3e8336514 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase = GRADLE_USER_HOME distributionPath = wrapper/dists -distributionUrl = https://services.gradle.org/distributions/gradle-8.13-rc-2-bin.zip +distributionUrl = https://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout = 10000 validateDistributionUrl = true zipStoreBase = GRADLE_USER_HOME diff --git a/package-lock.kdl b/package-lock.kdl index 2f4d88015..337108861 100644 --- a/package-lock.kdl +++ b/package-lock.kdl @@ -7,10 +7,10 @@ root { google-protobuf "3.21.4" jszip "3.10.1" postcss "8.5.3" - preact "10.26.2" + preact "10.26.4" react "19.0.0" react-dom "19.0.0" - typescript "5.7.3" + typescript "5.8.2" web-streams-polyfill "3.3.3" } dev-dependencies { @@ -21,9 +21,9 @@ root { "@mitata/counters" "0.0.8" "@prettier/plugin-xml" "3.4.1" "@types/google-protobuf" "3.15.12" - "@types/node" "22.13.5" - "@typescript-eslint/eslint-plugin" "8.24.1" - "@typescript-eslint/parser" "8.24.1" + "@types/node" "22.13.8" + "@typescript-eslint/eslint-plugin" "8.25.0" + "@typescript-eslint/parser" "8.25.0" commitlint "19.7.1" esbuild "0.25.0" eslint "9.21.0" @@ -831,9 +831,9 @@ pkg "@types/ms" { integrity "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" } pkg "@types/node" { - version "22.13.5" - resolved "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz" - integrity "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==" + version "22.13.8" + resolved "https://registry.npmjs.org/@types/node/-/node-22.13.8.tgz" + integrity "sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==" dependencies { undici-types ">=6.20.0 <6.21.0-0" } @@ -844,15 +844,15 @@ pkg "@types/unist" { integrity "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" } pkg "@typescript-eslint/eslint-plugin" { - version "8.24.1" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz" - integrity "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==" + version "8.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz" + integrity "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==" dependencies { "@eslint-community/regexpp" ">=4.10.0 <5.0.0-0" - "@typescript-eslint/scope-manager" "8.24.1" - "@typescript-eslint/type-utils" "8.24.1" - "@typescript-eslint/utils" "8.24.1" - "@typescript-eslint/visitor-keys" "8.24.1" + "@typescript-eslint/scope-manager" "8.25.0" + "@typescript-eslint/type-utils" "8.25.0" + "@typescript-eslint/utils" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" graphemer ">=1.4.0 <2.0.0-0" ignore ">=5.3.1 <6.0.0-0" natural-compare ">=1.4.0 <2.0.0-0" @@ -860,49 +860,49 @@ pkg "@typescript-eslint/eslint-plugin" { } } pkg "@typescript-eslint/parser" { - version "8.24.1" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz" - integrity "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==" - dependencies { - "@typescript-eslint/scope-manager" "8.24.1" - "@typescript-eslint/types" "8.24.1" - "@typescript-eslint/typescript-estree" "8.24.1" - "@typescript-eslint/visitor-keys" "8.24.1" + version "8.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz" + integrity "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==" + dependencies { + "@typescript-eslint/scope-manager" "8.25.0" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/typescript-estree" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" debug ">=4.3.4 <5.0.0-0" } } pkg "@typescript-eslint/scope-manager" { - version "8.24.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz" - integrity "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==" + version "8.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.25.0.tgz" + integrity "sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==" dependencies { - "@typescript-eslint/types" "8.24.1" - "@typescript-eslint/visitor-keys" "8.24.1" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" } } pkg "@typescript-eslint/type-utils" { - version "8.24.1" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz" - integrity "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==" + version "8.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz" + integrity "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==" dependencies { - "@typescript-eslint/typescript-estree" "8.24.1" - "@typescript-eslint/utils" "8.24.1" + "@typescript-eslint/typescript-estree" "8.25.0" + "@typescript-eslint/utils" "8.25.0" debug ">=4.3.4 <5.0.0-0" ts-api-utils ">=2.0.1 <3.0.0-0" } } pkg "@typescript-eslint/types" { - version "8.24.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz" - integrity "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==" + version "8.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.25.0.tgz" + integrity "sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==" } pkg "@typescript-eslint/typescript-estree" { - version "8.24.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz" - integrity "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==" + version "8.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz" + integrity "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==" dependencies { - "@typescript-eslint/types" "8.24.1" - "@typescript-eslint/visitor-keys" "8.24.1" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" debug ">=4.3.4 <5.0.0-0" fast-glob ">=3.3.2 <4.0.0-0" is-glob ">=4.0.3 <5.0.0-0" @@ -928,22 +928,22 @@ pkg "@typescript-eslint/typescript-estree" "minimatch" { } } pkg "@typescript-eslint/utils" { - version "8.24.1" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz" - integrity "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==" + version "8.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz" + integrity "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==" dependencies { "@eslint-community/eslint-utils" ">=4.4.0 <5.0.0-0" - "@typescript-eslint/scope-manager" "8.24.1" - "@typescript-eslint/types" "8.24.1" - "@typescript-eslint/typescript-estree" "8.24.1" + "@typescript-eslint/scope-manager" "8.25.0" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/typescript-estree" "8.25.0" } } pkg "@typescript-eslint/visitor-keys" { - version "8.24.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz" - integrity "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==" + version "8.25.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz" + integrity "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==" dependencies { - "@typescript-eslint/types" "8.24.1" + "@typescript-eslint/types" "8.25.0" eslint-visitor-keys ">=4.2.0 <5.0.0-0" } } @@ -3612,9 +3612,9 @@ pkg "postcss" "picocolors" { integrity "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" } pkg "preact" { - version "10.26.2" - resolved "https://registry.npmjs.org/preact/-/preact-10.26.2.tgz" - integrity "sha512-0gNmv4qpS9HaN3+40CLBAnKe0ZfyE4ZWo5xKlC1rVrr0ckkEvJvAQqKaHANdFKsGstoxrY4AItZ7kZSGVoVjgg==" + version "10.26.4" + resolved "https://registry.npmjs.org/preact/-/preact-10.26.4.tgz" + integrity "sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==" } pkg "prelude-ls" { version "1.2.1" @@ -4076,9 +4076,9 @@ pkg "type-check" { } } pkg "typescript" { - version "5.7.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz" - integrity "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==" + version "5.8.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz" + integrity "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==" } pkg "undici-types" { version "6.20.0" diff --git a/package.json b/package.json index 457c9fd16..efa75b0da 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@elide-dev/framework", "version": "1.0.0-alpha13", "private": true, - "packageManager": "pnpm@9.2.0", + "packageManager": "pnpm@10.5.2", "lint-staged": { "not-packages/*": "pnpm exec prettier --ignore-unknown" }, @@ -31,10 +31,10 @@ "google-protobuf": "3.21.4", "jszip": "3.10.1", "postcss": "8.5.3", - "preact": "10.26.2", + "preact": "10.26.4", "react": "19.0.0", "react-dom": "19.0.0", - "typescript": "5.7.3", + "typescript": "5.8.2", "web-streams-polyfill": "3.3.3" }, "devDependencies": { @@ -45,9 +45,9 @@ "@mitata/counters": "0.0.8", "@prettier/plugin-xml": "3.4.1", "@types/google-protobuf": "3.15.12", - "@types/node": "22.13.5", - "@typescript-eslint/eslint-plugin": "8.24.1", - "@typescript-eslint/parser": "8.24.1", + "@types/node": "22.13.8", + "@typescript-eslint/eslint-plugin": "8.25.0", + "@typescript-eslint/parser": "8.25.0", "commitlint": "19.7.1", "esbuild": "0.25.0", "eslint": "9.21.0", diff --git a/packages/base/build.gradle.kts b/packages/base/build.gradle.kts index 35401f776..e54f0572d 100644 --- a/packages/base/build.gradle.kts +++ b/packages/base/build.gradle.kts @@ -53,12 +53,6 @@ kotlin { dependencies { common { api(projects.packages.core) - api(libs.kotlinx.atomicfu) - api(libs.kotlinx.collections.immutable) - api(libs.kotlinx.coroutines.core) - api(libs.kotlinx.datetime) - api(libs.kotlinx.io) - api(libs.kotlinx.io.bytestring) api(libs.kotlinx.serialization.core) api(libs.elide.uuid) @@ -76,7 +70,7 @@ dependencies { api(libs.slf4j) api(libs.jakarta.inject) api(libs.kotlinx.collections.immutable) - api(libs.kotlinx.datetime) + api(libs.kotlinx.atomicfu) api(mn.micronaut.context) api(libs.commons.compress) diff --git a/packages/cli/build.gradle.kts b/packages/cli/build.gradle.kts index b4cee7863..649f341be 100644 --- a/packages/cli/build.gradle.kts +++ b/packages/cli/build.gradle.kts @@ -18,6 +18,7 @@ import io.micronaut.gradle.MicronautRuntime import org.apache.tools.ant.taskdefs.condition.Os +import org.graalvm.buildtools.gradle.tasks.BuildNativeImageTask import org.gradle.api.file.DuplicatesStrategy.EXCLUDE import org.gradle.api.internal.plugins.UnixStartScriptGenerator import org.gradle.api.internal.plugins.WindowsStartScriptGenerator @@ -27,6 +28,7 @@ import org.jetbrains.kotlin.konan.target.HostManager import java.nio.file.Files import java.nio.file.Path import elide.internal.conventions.kotlin.KotlinTarget +import elide.toolchain.host.TargetInfo plugins { java @@ -38,7 +40,6 @@ plugins { kotlin("jvm") kotlin("kapt") - kotlin("plugin.compose") kotlin("plugin.serialization") alias(libs.plugins.buildConfig) alias(libs.plugins.micronaut.minimal.application) @@ -51,9 +52,19 @@ plugins { // // - `elide.release`: true/false // - `elide.buildMode`: `dev`, `release`, `debug` +// - `elide.target`: Known target, like `linux-amd64`, `linux-amd64-musl`, `darwin-amd64`, or `windows-amd64` // - `elide.targetOs`: `darwin`, `linux`, `windows` // - `elide.targetArch`: `amd64`, `arm64` +// - `elide.targetLibc`: `glibc` or `musl` // - `elide.march`: `native`, `compatibility` +// - `elide.compiler`: Custom compiler name or path +// - `elide.linker`: Custom linker name or path +// +// Environment respected by this script: +// +// - `CC`: C compiler +// - `LD`: Linker +// - `CFLAGS`: C compiler flags val quickbuild = ( project.properties["elide.release"] != "true" || @@ -72,24 +83,33 @@ val isDebug = !isRelease && ( val hostIsLinux = HostManager.hostIsLinux val hostIsMac = HostManager.hostIsMac val hostIsWindows = HostManager.hostIsMingw +val elideTarget = TargetInfo.current(project) val nativesType = if (isRelease) "release" else "debug" +val archTripleToken = (findProperty("elide.arch") as? String) + ?: if (System.getProperty("os.arch") == "aarch64") "aarch64" else "x86_64" +val muslTarget = "$archTripleToken-unknown-linux-musl" +val gnuTarget = "$archTripleToken-unknown-linux-gnu" +val macTarget = "$archTripleToken-apple-darwin" +val winTarget = "$archTripleToken-pc-windows-gnu" val nativeTargetType = if (isRelease) "nativeOptimizedCompile" else "nativeCompile" val entrypoint = "elide.tool.cli.MainKt" val enablePkl = true -val enableWasm = true -val enablePython = true -val enableRuby = true -val enableLlvm = true -val enableJvm = true -val enableKotlin = true +val enablePython = false +val enableRuby = false +val enableLlvm = false +val enableJvm = false +val enableKotlin = false val enableSqlite = true -val enableCustomCompiler = false +val enableCustomCompiler = findProperty("elide.compiler") != null val enableNativeCryptoV2 = true val enableSqliteStatic = true +val enableStatic = false val enableStaticJni = true +val preferShared = true val enableToolchains = false val forceFfm = false +val enableClang = false val oracleGvm = true val oracleGvmLibs = oracleGvm val enableMosaic = false @@ -100,8 +120,6 @@ val enableDynamicPlugins = false val enableDeprecated = false val enableJit = true val enablePreinitializeAll = false -val enableTools = true -val enableProguard = false val enableExperimental = false val enableExperimentalLlvmBackend = false val enableExperimentalLlvmEdge = false @@ -112,14 +130,14 @@ val enableAuxCache = true val enableAuxCacheTool = false val enableJpms = false val enableConscrypt = false +val enableBouncycastle = false val enableEmbeddedBuilder = false val enableBuildReport = true val enableG1 = oracleGvm && !enableAuxCache val enablePreinit = true -val enablePgo = false +val enablePgo = true val enablePgoSampling = false val enablePgoInstrumentation = false -val enablePgoReport = true val enableJna = true val enableJnaStatic = false val enableSbom = oracleGvm @@ -136,6 +154,7 @@ val exclusions = listOfNotNull( // always exclude the jline native lib; we provide it ourselves libs.jline.native, + libs.jline.terminal.jna, // prefer jpms jna when enabled if (enableJna) null else libs.jna.jpms, @@ -179,13 +198,8 @@ private fun platformConfig(type: String = "resource"): String { } val rootPath: String = rootProject.layout.projectDirectory.asFile.path -val thirdPartyPath: String = rootProject.layout.projectDirectory.dir("third_party").asFile.path val sqliteLibPath: String = rootProject.layout.projectDirectory.dir("third_party/sqlite/install/lib").asFile.path -val nativesRootTemplate: (String) -> String = { version -> - "/tmp/elide-runtime/v$version/native" -} - val jvmOnlyCompileArgs: List = listOfNotNull( // Nothing at this time. ) @@ -315,9 +329,24 @@ val languagePluginPaths = if (!enableDynamicPlugins) emptyList() else listOf( project(":packages:$module").layout.buildDirectory.dir("native/nativeSharedCompile").get().asFile.path } -val targetPath = rootProject.layout.projectDirectory.dir("target/$nativesType") -val nativesPath = nativesRootTemplate(cliVersion) -val umbrellaNativesPath: String = rootProject.layout.projectDirectory.dir("target/$nativesType").asFile.path +val targetPath: String = when { + HostManager.hostIsLinux -> when (enableStatic) { + // if we are targeting a fully static environment (i.e. musl), we need to sub in the target name in the path as we + // are always technically cross-compiling. + true -> rootProject.layout.projectDirectory.dir("target/$muslTarget/$nativesType") + + // otherwise, we use gnu's target. + false -> rootProject.layout.projectDirectory.dir("target/$gnuTarget/$nativesType") + }.asFile.path + + HostManager.hostIsMac -> rootProject.layout.projectDirectory.dir("target/$macTarget/$nativesType").asFile.path + HostManager.hostIsMingw -> rootProject.layout.projectDirectory.dir("target/$winTarget/$nativesType").asFile.path + else -> error("Unsupported platform for target path") +} + +val nativesPath = targetPath + +val umbrellaNativesPath: String = targetPath val gvmResourcesPath: String = layout.buildDirectory.dir("native/nativeCompile/resources") .get() .asFile @@ -329,11 +358,9 @@ buildConfig { useKotlinOutput() buildConfigField("String", "ELIDE_RELEASE_TYPE", if (isRelease) "\"RELEASE\"" else "\"DEV\"") buildConfigField("String", "ELIDE_TOOL_VERSION", "\"$cliVersion\"") - buildConfigField("String", "NATIVES_PATH", "\"${nativesPath}\"") buildConfigField("String", "GVM_RESOURCES", "\"${gvmResourcesPath}\"") } -val modules: Configuration by configurations.creating val pklDependencies: Configuration by configurations.creating val classpathExtras: Configuration by configurations.creating { @@ -358,19 +385,9 @@ dependencies { api(libs.picocli) api(libs.guava) api(projects.packages.base) - api(libs.snakeyaml) api(mn.micronaut.inject) implementation(projects.packages.terminal) - - // Brotli - implementation(libs.brotli.native.osx) - implementation(libs.brotli.native.osx.amd64) - implementation(libs.brotli.native.osx.arm64) - implementation(libs.brotli.native.linux) - implementation(libs.brotli.native.linux.amd64) - implementation(libs.brotli.native.linux.arm64) - implementation(libs.brotli.native.windows) - implementation(libs.brotli.native.windows.amd64) + jvmOnly(libs.snakeyaml) // Native-image transitive compile dependencies nativeImageCompileOnly(libs.jakarta.validation) @@ -402,15 +419,12 @@ dependencies { implementation(mn.micronaut.picocli) implementation(kotlin("stdlib-jdk8")) implementation(libs.logback) - implementation(libs.bouncycastle) - implementation(libs.mosaic) runtimeOnly(mn.micronaut.runtime) implementation(libs.jline.reader) implementation(libs.jline.console) implementation(libs.jline.terminal.core) implementation(libs.jline.terminal.jni) - implementation(libs.jline.terminal.jna) implementation(libs.jline.terminal.ffm) implementation(libs.jline.builtins) implementation(libs.jline.terminal.jansi) { @@ -423,6 +437,8 @@ dependencies { } if (enableNativeCryptoV2) { api(project(":packages:tcnative")) + } else { + implementation(libs.netty.tcnative) } // GraalVM: Engines @@ -473,14 +489,12 @@ dependencies { runtimeOnly(mn.micronaut.graal) implementation(mn.netty.handler) - if (!enableNativeCryptoV2) { - implementation(libs.netty.tcnative) - } // JVM-only dependencies which are filtered for native builds. if (!enableJna) { jvmOnly(libs.jna.jpms) } else { + // we have to include _some_ support for JNA in order to support oshi et al. implementation(libs.jna.jpms) if (enableJnaStatic) { implementation(libs.jna.graalvm) @@ -554,7 +568,6 @@ val targetOs = when { } val targetArch: String = System.getProperty("os.arch", "unknown") -val targetTag = "$targetOs-$targetArch" signing { isRequired = properties["enableSigning"] == "true" @@ -591,7 +604,7 @@ micronaut { optimizeServiceLoading = true optimizeClassLoading = true optimizeNetty = true - possibleEnvironments = listOf("cli", "cloud", "gcp", "aws", "azure") + possibleEnvironments = listOf("cli") netty { enabled = true @@ -616,10 +629,14 @@ private fun List.onlyIf(flag: Boolean): List = if (flag) this else emp */ // Compiler environment -val cCompiler: String? = System.getenv("CC") +val cCompiler: String? = (findProperty("elide.compiler") as? String ?: System.getenv("CC")).also { + if (enableCustomCompiler) require(it != null) { "Custom compiler is enabled, but no compiler is set." } +} +val cLinker: String? = (findProperty("elide.linker") as? String ?: System.getenv("LD")) val cFlags: String? = System.getenv("CFLAGS") val cxxCompiler: String? = System.getenv("CXX") val cxxFlags: String? = System.getenv("CXXFLAGS") +val isClang: Boolean = cCompiler?.contains("clang") == true val commonGvmArgs = listOfNotNull( "-H:+UseCompressedReferences", @@ -682,12 +699,13 @@ val enabledFeatures = listOfNotNull( ) val enabledSecurityProviders = listOfNotNull( - "org.bouncycastle.jce.provider.BouncyCastleProvider", + onlyIf(enableBouncycastle, "org.bouncycastle.jce.provider.BouncyCastleProvider"), onlyIf(enableConscrypt, "org.conscrypt.OpenSSLProvider"), ) val preinitializedContexts = if (!enablePreinit) emptyList() else listOfNotNull( "js", + "ts", onlyIf(enablePreinitializeAll && enableRuby, "ruby"), onlyIf(enablePreinitializeAll && enablePython, "python"), onlyIf(enablePreinitializeAll && enableJvm, "java"), @@ -712,10 +730,13 @@ val experimentalLlvmEdgeArgs = listOfNotNull( "--native-compiler-options=$it" }) +val preinitContextsList = preinitializedContexts.joinToString(",") + val commonNativeArgs = listOfNotNull( - "--trace-object-instantiation=com.github.ajalt.mordant.rendering.TextStyles", // Debugging flags: // "--verbose", + // "-H:TempDirectory=/tmp/elide-native", + // "-H:+PlatformInterfaceCompatibilityMode", onlyIf(enableCustomCompiler && !cCompiler.isNullOrEmpty(), "--native-compiler-path=$cCompiler"), onlyIf(isDebug, "-H:+JNIVerboseLookupErrors"), onlyIf(!enableJit, "-J-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime"), @@ -730,12 +751,18 @@ val commonNativeArgs = listOfNotNull( "--enable-http", "--enable-https", "--install-exit-handlers", - "--enable-url-protocols=http,https,jar", + // @TODO breaks with old configs, and new configs can't use the agent. + // "--exact-reachability-metadata", + "--enable-url-protocols=http,https", "--color=always", "-H:+UnlockExperimentalVMOptions", "--link-at-build-time=elide", "--link-at-build-time=dev.elide", - "-H:-ReduceImplicitExceptionStackTraceInformation", + "--link-at-build-time=org.pkl", + "--link-at-build-time=kotlin", + "--link-at-build-time=kotlinx", + "--link-at-build-time=org.graalvm", + "--link-at-build-time=picocli", onlyIf(enableJna, "--enable-native-access=com.sun.jna,ALL-UNNAMED") ?: "--enable-native-access=ALL-UNNAMED", "-J--add-exports=org.graalvm.nativeimage.builder/com.oracle.svm.core.jdk=ALL-UNNAMED", "-J--add-exports=org.graalvm.nativeimage.builder/com.oracle.svm.hosted=ALL-UNNAMED", @@ -745,14 +772,24 @@ val commonNativeArgs = listOfNotNull( "-J--add-exports=org.graalvm.nativeimage.base/com.oracle.svm.util=ALL-UNNAMED", "-J--add-opens=org.graalvm.nativeimage.builder/com.oracle.svm.core.jdk=ALL-UNNAMED", "-J--add-exports=java.base/jdk.internal.module=ALL-UNNAMED", + "-H:+PreserveFramePointer", "-H:+ReportExceptionStackTraces", "-H:+AddAllCharsets", + "-H:-ReduceImplicitExceptionStackTraceInformation", "-H:MaxRuntimeCompileMethods=20000", - "-H:AdditionalSecurityProviders=${enabledSecurityProviders.joinToString(",")}", + "-H:ExcludeResources=META-INF/native/libumbrella.so", + "-H:ExcludeResources=META-INF/native/libumbrella.a", + "-H:ExcludeResources=kotlin/kotlin.kotlin_builtins", + "-H:ExcludeResources=META-INF/.*kotlin_module", + "-H:ExcludeResources=com/sun/jna/.*", + "-H:ExcludeResources=META-INF/native/libsqlite.*", + "-H:ExcludeResources=META-INF/micronaut/io.micronaut.core.graal.GraalReflectionConfigurer/.*", "-Delide.strict=true", "-Delide.js.vm.enableStreams=true", "-Delide.mosaic=$enableMosaic", "-Delide.staticJni=$enableStaticJni", + "-Delide.preferShared=$preferShared", + "-Delide.staticUmbrella=false", "-Delide.root=$rootPath", "-Delide.target=$targetPath", "-Delide.natives=$nativesPath", @@ -771,12 +808,12 @@ val commonNativeArgs = listOfNotNull( "-Dgraalvm.locatorDisabled=false", "-Dpolyglotimpl.DisableVersionChecks=false", onlyIf(enablePreinit, "-Dpolyglot.image-build-time.PreinitializeContextsWithNative=true"), - onlyIf(enablePreinit, "-Dpolyglot.image-build-time.PreinitializeContexts=${preinitializedContexts.joinToString(",")}"), + onlyIf(enablePreinit, "-Dpolyglot.image-build-time.PreinitializeContexts=$preinitContextsList"), onlyIf(enablePgoInstrumentation, "--pgo-instrument"), onlyIf(enablePgoSampling, "--pgo-sampling"), onlyIf(enablePgoInstrumentation && enablePgo, "-H:+BuildReportSamplerFlamegraph"), ).asSequence().plus( - languagePluginPaths.plus(listOf(nativesPath, umbrellaNativesPath)).filter { + languagePluginPaths.plus(listOf(umbrellaNativesPath)).filter { Files.exists(Path.of(it)) }.map { "-H:CLibraryPath=$it" @@ -787,22 +824,23 @@ val commonNativeArgs = listOfNotNull( listOf("--debug-attach").onlyIf(nativeImageBuildDebug) ).plus( nativeCompileJvmArgs +).plus( + listOf( + "-H:AdditionalSecurityProviders=${enabledSecurityProviders.joinToString(",")}", + ).onlyIf(enabledSecurityProviders.isNotEmpty()) ).toList() val debugFlags: List = listOfNotNull( "--verbose", + "-g", "-H:+SourceLevelDebug", - "-H:-DeleteLocalSymbols", - "-H:-RemoveUnusedSymbols", - "-H:+PreserveFramePointer", - // "-J-Xlog:library=info", - // "-H:-ReduceDCE", + // "-Dpolyglot.engine.TraceCache=true", + // "-J-Dpolyglot.engine.TraceCache=true", + // "-H:-DeleteLocalSymbols", // "-H:+PrintMethodHistogram", // "-H:+PrintPointsToStatistics", // "-H:+PrintRuntimeCompileMethods", // "-H:+ReportPerformedSubstitutions", -).plus( - listOf("-g").onlyIf(hostIsLinux) ).onlyIf(isDebug) val experimentalFlags = listOf( @@ -840,6 +878,20 @@ val experimentalFlags = listOf( // C compiler flags which are always included. val commonCFlags: List = listOf( "-DELIDE", + "-fstack-clash-protection", + "-fstack-protector-strong", + "-fexceptions", + "-ffunction-sections", + "-fdata-sections", +// "-fno-omit-frame-pointer", +// "-v", +// "-fno-strict-aliasing", +// "-fno-strict-overflow", +// "-fno-delete-null-pointer-checks", +// "-DELIDE", + // "-Wno-hardened", +).plus( + listOf("-fuse-ld=$cLinker").onlyIf(cLinker != null) ).plus( System.getenv("CFLAGS")?.ifEmpty { null }?.split(" ") ?: emptyList() ) @@ -849,25 +901,40 @@ val commonLinkerOptions: List = listOf() // CFlags for release mode. val releaseCFlags: List = listOf( + "-O3", + "-fPIC", + "-fPIE", "-flto", -).onlyIf(!HostManager.hostIsMac) // lto flag breaks macos builds +).plus( + listOf("-fuse-linker-plugin").onlyIf(!enableClang && !isClang) +).plus( + // Add protection flags for release. + when (targetArch) { + "x86_64", "amd64", "x86-64" -> listOf( + "-fcf-protection=full", + ) + "arm", "aarch64" -> listOf( + "-mbranch-protection=standard", + ) + else -> emptyList() + } +) // PGO profiles to specify in release mode. val profiles: List = listOf( - "js-exec.iprof", - "js-serve.iprof", + "js-path-fs.iprof", "js-sqlite.iprof", - "js-typescript.iprof", + "pkl-eval.iprof", ) // GVM release flags -val gvmReleaseFlags: List = listOf( - "-Os", +val gvmReleaseFlags: List = listOfNotNull( + onlyIf(!enablePgo, "-Os"), ) // Experimental C-compiler flags. val experimentalCFlags: List = listOf( - "-flto=thin", + // Nothing at this time. ) // Full release flags (for all operating systems and platforms). @@ -891,8 +958,8 @@ val releaseFlags: List = listOf( val jvmDefs = mutableMapOf( "elide.strict" to "true", "elide.natives" to nativesPath, - "elide.target" to targetPath.asFile.path, "elide.root" to rootPath, + "elide.target" to elideTarget.triple, "elide.graalvm.ee" to oracleGvm.toString(), "elide.mosaic" to enableMosaic.toString(), "elide.staticJni" to enableJnaStatic.toString(), @@ -947,6 +1014,7 @@ val initializeAtBuildtime: List = listOf( "elide.runtime.gvm.internals", "elide.runtime.gvm.internals.sqlite", "elide.runtime.gvm.internals.sqlite.SqliteModule", + "elide.runtime.lang.javascript.JavaScriptPrecompiler", "com.github.ajalt.mordant.internal.nativeimage.NativeImagePosixMppImpls", "tools.elide", "java.sql", @@ -961,7 +1029,6 @@ val initializeAtBuildtime: List = listOf( "sun.awt.resources.awt", "org.pkl.core.runtime.VmLanguageProvider", "elide.runtime.lang.typescript.internals.TypeScriptLanguageProvider", - "com.sun.jna.Library", ) val initializeAtBuildTimeTest: List = listOf( @@ -1260,14 +1327,33 @@ val darwinReleaseArgs = darwinOnlyArgs.toList() val linuxOnlyArgs = defaultPlatformArgs.plus( listOf( - "-H:NativeLinkerOption=-lm", - "-H:NativeLinkerOption=-lssl", - "-H:NativeLinkerOption=-lcrypto", - "-H:NativeLinkerOption=-lstdc++", + "-g", // always generate debug info on linux + "-H:NativeLinkerOption=-flto", + "-H:NativeLinkerOption=-Wl,--gc-sections", + "-H:NativeLinkerOption=-Wl,--emit-relocs", + "-H:ExcludeResources=.*dylib", + "-H:ExcludeResources=.*jnilib", + "-H:ExcludeResources=.*dll", + "-H:ExcludeResources=META-INF/native/libsqlitejdbc-linux-amd64.so", + "-H:ExcludeResources=lib/osx-aarch64/libbrotli.dylib", + "-H:ExcludeResources=META-INF/native/libnetty_transport_native_epoll_x86_64.so", + "-H:ExcludeResources=META-INF/native/libnetty_transport_native_kqueue_x86_64.jnilib", "--initialize-at-run-time=io.netty.channel.kqueue.Native", "--initialize-at-run-time=io.netty.channel.kqueue.Native", "--initialize-at-run-time=io.netty.channel.kqueue.KQueueEventLoop", - "--static-nolibc", + ).plus( + listOfNotNull( + onlyIf(enableStatic, "--libc=musl"), + onlyIf(enableStatic, "--static"), + onlyIf(!enableStatic, "--static-nolibc"), + ) + ).plus( + listOf( + "-H:NativeLinkerOption=-lm", + "-H:NativeLinkerOption=-lssl", + "-H:NativeLinkerOption=-lcrypto", + "-H:NativeLinkerOption=-lstdc++", + ).onlyIf(!enableStatic) ), ).plus( if (enableG1) listOf( @@ -1285,8 +1371,8 @@ val linuxOnlyArgs = defaultPlatformArgs.plus( ).plus(if (project.properties["elide.ci"] == "true") listOf( "-J-Xmx12g", ) else listOf( - "-J-Xmx22g", - "--parallelism=24", + "-J-Xmx36g", + "--parallelism=30", )) val linuxGvmReleaseFlags = listOf( @@ -1333,9 +1419,7 @@ fun nativeCliImageArgs( System.getProperty("java.library.path", "") .split(File.pathSeparator) .filter { it.isNotEmpty() } - ).distinct().plus(listOf( - targetPath, - )).joinToString( + ).distinct().joinToString( File.pathSeparator ).let { listOf( @@ -1399,6 +1483,9 @@ graalvmNative { trackReflectionMetadata = true enableExperimentalPredefinedClasses = true enableExperimentalUnsafeAllocationTracing = true + + val userCodeFilter = layout.projectDirectory.file("src/config/user-code-filter.json").asFile.path + enabled = ( (System.getenv("GRAALVM_AGENT") == "true" || project.properties.containsKey("agent")) && !gradle.startParameter.isProfile // profiler for build can't also be active @@ -1406,17 +1493,21 @@ graalvmNative { modes { standard {} + + conditional { + userCodeFilterPath = userCodeFilter + } } metadataCopy { inputTaskNames.addAll(listOf("run", "optimizedRun")) - outputDirectories.add("src/main/resources/META-INF/native-image") - mergeWithExisting = true + outputDirectories.add("src/main/resources/META-INF/native-image/dev/elide/elide-cli") + mergeWithExisting = false } } binaries { named("main") { - imageName = if (quickbuild) "elide.debug" else "elide" + imageName = "elide" fallback = false quickBuild = quickbuild sharedLibrary = false @@ -1492,38 +1583,7 @@ val excludedStatics = arrayOf( "plugin.xml", ) -interface TargetInfo { - val tag: String - - val resources: List - get() = listOf( - "META-INF/elide/embedded/runtime/*/*-$tag.*", - ) -} - -enum class ElideTarget(override val tag: String) : TargetInfo { - MACOS_AARCH64("darwin-aarch64"), - MACOS_AMD64("darwin-amd64"), - LINUX_AMD64("linux-amd64"), - WINDOWS_AMD64("windows-amd64"); -} - -fun resolveTarget(target: String? = properties["elide.targetOs"] as? String): ElideTarget = when { - target == "linux-amd64" -> ElideTarget.LINUX_AMD64 - target == "darwin-amd64" -> ElideTarget.MACOS_AMD64 - target == "darwin-aarch64" -> ElideTarget.MACOS_AARCH64 - target == "windows-amd64" -> ElideTarget.WINDOWS_AMD64 - hostIsLinux -> ElideTarget.LINUX_AMD64 - hostIsWindows -> ElideTarget.WINDOWS_AMD64 - hostIsMac -> when (System.getProperty("os.arch")) { - "aarch64" -> ElideTarget.MACOS_AARCH64 - else -> ElideTarget.MACOS_AMD64 - } - - else -> error("Failed to resolve target platform") -} - -fun hostTargetResources(): Array = resolveTarget().resources.toTypedArray() +fun hostTargetResources(): Array = TargetInfo.current(project).resources.toTypedArray() fun AbstractCopyTask.filterResources(targetArch: String? = null) { duplicatesStrategy = EXCLUDE @@ -1681,18 +1741,7 @@ fun Jar.applyJarSettings() { } tasks { - val ensureNatives by registering { - doLast { - val out = layout.buildDirectory.dir(nativesPath).get().asFile - if (!out.exists()) { - Files.createDirectories(out.toPath()) - } - } - } - nativeCompile { - dependsOn(ensureNatives) - doFirst { val args = nativeCliImageArgs(debug = quickbuild, release = !quickbuild, platform = targetOs) if (nativeImageBuildVerbose) { @@ -1702,8 +1751,6 @@ tasks { } nativeOptimizedCompile { - dependsOn(ensureNatives) - if (nativeImageBuildVerbose) doFirst { val args = nativeCliImageArgs(debug = quickbuild, release = !quickbuild, platform = targetOs) logger.lifecycle("Native Image args (release):\n${args.joinToString("\n")}") @@ -1711,16 +1758,19 @@ tasks { } processResources { + dependsOn( + ":packages:graalvm:buildRustNativesForHost", + ) filterResources() // add `[lib]umbrella.{so,dylib,jnilib,dll}` to the jar - from(rootProject.layout.projectDirectory.dir("target/${nativesType}")) { - include("libumbrella.so") - include("libumbrella.dylib") - include("libumbrella.jnilib") - include("umbrella.dll") - into("META-INF/native/") - } + // from(targetPath) { + // include("libumbrella.so") + // include("libumbrella.dylib") + // include("libumbrella.jnilib") + // include("umbrella.dll") + // into("META-INF/native/") + // } } jar { @@ -1752,7 +1802,6 @@ tasks { } named("run", JavaExec::class).configure { - dependsOn(ensureNatives) if (enableToolchains) javaLauncher = gvmLauncher jvmDefs.forEach { @@ -1782,10 +1831,6 @@ tasks { "org.graalvm.language.python.home", layout.buildDirectory.dir("native/$nativeTargetType/resources/python/python-home").get().asFile.path.toString(), ) - systemProperty( - "elide.natives", - nativesPath, - ) systemProperty( "java.library.path", listOf( @@ -1840,10 +1885,6 @@ tasks { "org.graalvm.language.python.home", layout.buildDirectory.dir("native/$nativeTargetType/resources/python/python-home").get().asFile.path.toString(), ) - systemProperty( - "elide.natives", - nativesPath, - ) systemProperty( "java.library.path", listOf( @@ -1870,8 +1911,6 @@ tasks { } optimizedRun { - dependsOn(ensureNatives) - systemProperty( "micronaut.environments", "dev", @@ -1884,15 +1923,10 @@ tasks { "org.graalvm.language.python.home", layout.buildDirectory.dir("native/$nativeTargetType/resources/python/python-home").get().asFile.path.toString(), ) - systemProperty( - "elide.natives", - nativesPath, - ) systemProperty( "java.library.path", listOf( umbrellaNativesPath, - nativesPath, sqliteLibPath, ).plus( System.getProperty("java.library.path", "").split(File.pathSeparator).filter { @@ -1986,3 +2020,13 @@ configurations.all { } } } + +listOf( + tasks.withType() +).forEach { + it.configureEach { + dependsOn( + ":packages:graalvm:natives", + ) + } +} diff --git a/packages/cli/profiles.zip b/packages/cli/profiles.zip index 7568134da..c640ded33 100644 Binary files a/packages/cli/profiles.zip and b/packages/cli/profiles.zip differ diff --git a/packages/cli/src/config/resource-config-linux-amd64.json b/packages/cli/src/config/resource-config-linux-amd64.json index 6988e7ea8..1f949a63e 100644 --- a/packages/cli/src/config/resource-config-linux-amd64.json +++ b/packages/cli/src/config/resource-config-linux-amd64.json @@ -16,7 +16,12 @@ { "pattern": "win32" }, { "pattern": "Win32" }, { "pattern": "\\Q**/*.dll\\E" }, - { "pattern": "\\Q**/*.dylib\\E" } + { "pattern": "\\Q**/*.dylib\\E" }, + { "pattern": "META-INF/native/libumbrella.*" }, + { "pattern": "META-INF/native/libnetty_tcnative_linux_x86_64.so" }, + { "pattern": "META-INF/native/libumbrella.so" }, + { "pattern": "META-INF/native/libsqlitejdbc*" }, + { "pattern": "org/fusesource/jansi/internal/native/.*" } ] }, "bundles": [ diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/ToolShellCommand.kt b/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/ToolShellCommand.kt index b0c3d6e66..1ed827644 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/ToolShellCommand.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/ToolShellCommand.kt @@ -138,9 +138,9 @@ private typealias ContextAccessor = () -> PolyglotContext private const val VERSION_INSTRINSIC_NAME = "__Elide_version__" // Whether to enable extended language plugins. - private const val ENABLE_JVM = true - private const val ENABLE_RUBY = true - private const val ENABLE_PYTHON = true + private const val ENABLE_JVM = false + private const val ENABLE_RUBY = false + private const val ENABLE_PYTHON = false private const val ENABLE_TYPESCRIPT = true private val logging: Logger by lazy { @@ -1784,55 +1784,55 @@ private typealias ContextAccessor = () -> PolyglotContext resourcesPath = GVM_RESOURCES } - RUBY -> ignoreNotInstalled { - install(elide.runtime.plugins.ruby.Ruby) { - logging.debug("Configuring Ruby VM") - resourcesPath = GVM_RESOURCES - executable = cmd - executableList = listOf(cmd).plus(args) - installIntrinsics(intrinsics, GraalVMGuest.RUBY, versionProp) - } - } - - PYTHON -> ignoreNotInstalled { - install(elide.runtime.plugins.python.Python) { - logging.debug("Configuring Python VM") - installIntrinsics(intrinsics, GraalVMGuest.PYTHON, versionProp) - resourcesPath = GVM_RESOURCES - executable = cmd - executableList = listOf(cmd).plus(args) - } - } - - // Secondary Engines: JVM - JVM -> ignoreNotInstalled { - install(elide.runtime.plugins.jvm.Jvm) { - logging.debug("Configuring JVM") - multithreading = !langs.contains(JS) - } - - install(elide.runtime.plugins.java.Java) { - logging.debug("Configuring Java") - } - } - - GROOVY -> logging.warn("Groovy runtime plugin is not yet implemented") - - KOTLIN -> install(elide.runtime.plugins.kotlin.Kotlin) { - val classpathDir = workdir.cacheDirectory() - .resolve("elide-kotlin-runtime") - .absolutePath - - logging.debug("Configuring Kotlin with classpath root $classpathDir") - guestClasspathRoot = classpathDir - } - - SCALA -> logging.warn("Scala runtime plugin is not yet implemented") - - // Secondary engines: LLVM - LLVM -> install(elide.runtime.plugins.llvm.LLVM) { - // Nothing at this time. - } +// RUBY -> ignoreNotInstalled { +// install(elide.runtime.plugins.ruby.Ruby) { +// logging.debug("Configuring Ruby VM") +// resourcesPath = GVM_RESOURCES +// executable = cmd +// executableList = listOf(cmd).plus(args) +// installIntrinsics(intrinsics, GraalVMGuest.RUBY, versionProp) +// } +// } +// +// PYTHON -> ignoreNotInstalled { +// install(elide.runtime.plugins.python.Python) { +// logging.debug("Configuring Python VM") +// installIntrinsics(intrinsics, GraalVMGuest.PYTHON, versionProp) +// resourcesPath = GVM_RESOURCES +// executable = cmd +// executableList = listOf(cmd).plus(args) +// } +// } +// +// // Secondary Engines: JVM +// JVM -> ignoreNotInstalled { +// install(elide.runtime.plugins.jvm.Jvm) { +// logging.debug("Configuring JVM") +// multithreading = !langs.contains(JS) +// } +// +// install(elide.runtime.plugins.java.Java) { +// logging.debug("Configuring Java") +// } +// } +// +// GROOVY -> logging.warn("Groovy runtime plugin is not yet implemented") +// +// KOTLIN -> install(elide.runtime.plugins.kotlin.Kotlin) { +// val classpathDir = workdir.cacheDirectory() +// .resolve("elide-kotlin-runtime") +// .absolutePath +// +// logging.debug("Configuring Kotlin with classpath root $classpathDir") +// guestClasspathRoot = classpathDir +// } +// +// SCALA -> logging.warn("Scala runtime plugin is not yet implemented") +// +// // Secondary engines: LLVM +// LLVM -> install(elide.runtime.plugins.llvm.LLVM) { +// // Nothing at this time. +// } else -> {} } diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/options/EngineJavaScriptOptions.kt b/packages/cli/src/main/kotlin/elide/tool/cli/options/EngineJavaScriptOptions.kt index 20e112fd5..f11578e55 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/options/EngineJavaScriptOptions.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/options/EngineJavaScriptOptions.kt @@ -19,7 +19,6 @@ import picocli.CommandLine.Option //import tools.elide.assets.EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel import elide.runtime.gvm.GuestLanguage import elide.runtime.plugins.js.JavaScriptConfig -import elide.runtime.plugins.js.JavaScriptVersion /** JavaScript engine options. */ @Introspected @ReflectiveAccess class EngineJavaScriptOptions : AbstractEngineOptions() { diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/output/Mosaic.kt b/packages/cli/src/main/kotlin/elide/tool/cli/output/Mosaic.inert similarity index 100% rename from packages/cli/src/main/kotlin/elide/tool/cli/output/Mosaic.kt rename to packages/cli/src/main/kotlin/elide/tool/cli/output/Mosaic.inert diff --git a/packages/cli/src/main/kotlin/elide/tool/control/AbstractScriptEngineFactory.kt b/packages/cli/src/main/kotlin/elide/tool/control/AbstractScriptEngineFactory.kt index 59af33830..63084794a 100644 --- a/packages/cli/src/main/kotlin/elide/tool/control/AbstractScriptEngineFactory.kt +++ b/packages/cli/src/main/kotlin/elide/tool/control/AbstractScriptEngineFactory.kt @@ -18,7 +18,6 @@ import org.graalvm.polyglot.* import java.io.* import javax.script.* import kotlin.collections.MutableMap.MutableEntry -import kotlin.concurrent.Volatile import elide.runtime.gvm.GraalVMGuest /** diff --git a/packages/cli/src/main/kotlin/elide/tool/engine/MacLinkageFeature.kt b/packages/cli/src/main/kotlin/elide/tool/engine/MacLinkageFeature.kt index d75983a0f..35e37a227 100644 --- a/packages/cli/src/main/kotlin/elide/tool/engine/MacLinkageFeature.kt +++ b/packages/cli/src/main/kotlin/elide/tool/engine/MacLinkageFeature.kt @@ -4,7 +4,7 @@ import com.oracle.svm.hosted.FeatureImpl.BeforeAnalysisAccessImpl import org.graalvm.nativeimage.hosted.Feature import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import org.graalvm.nativeimage.hosted.Feature.IsInConfigurationAccess -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature @VMFeature class MacLinkageFeature : Feature { private val macFrameworks = listOf( diff --git a/packages/cli/src/main/kotlin/elide/tool/engine/NativeEngine.kt b/packages/cli/src/main/kotlin/elide/tool/engine/NativeEngine.kt index 04e5b01c9..34a3c72aa 100644 --- a/packages/cli/src/main/kotlin/elide/tool/engine/NativeEngine.kt +++ b/packages/cli/src/main/kotlin/elide/tool/engine/NativeEngine.kt @@ -54,7 +54,6 @@ object NativeEngine { DARWIN -> "jnilib" LINUX -> "so" WINDOWS -> "dll" - else -> null } // Calculate the path to a native resource which needs to be loaded. @@ -166,7 +165,7 @@ object NativeEngine { allCandidatePaths, forceLoad = forceLoad, ) - } catch (err: Throwable) { + } catch (_: Throwable) { missingLibraries.add(it) false to false } @@ -263,6 +262,7 @@ object NativeEngine { ) // Load natives from the CWD while it is swapped in. + @Suppress("TooGenericExceptionCaught") @JvmStatic private fun loadAllNatives( platform: HostPlatform, natives: File, @@ -332,6 +332,7 @@ object NativeEngine { * @param workdir Working directory manager. * @param extraProps Extra VM properties to set. */ + @Suppress("UNUSED_PARAMETER") @JvmStatic fun load(workdir: WorkdirManager, extraProps: List>) { val natives = workdir.nativesDirectory() val platform = HostPlatform.resolve() diff --git a/packages/cli/src/main/kotlin/elide/tool/err/ErrPrinter.kt b/packages/cli/src/main/kotlin/elide/tool/err/ErrPrinter.kt index 836536b14..2506cdb57 100644 --- a/packages/cli/src/main/kotlin/elide/tool/err/ErrPrinter.kt +++ b/packages/cli/src/main/kotlin/elide/tool/err/ErrPrinter.kt @@ -15,7 +15,7 @@ import java.util.function.Supplier * Internal utility for formatting exceptions nicely. */ object ErrPrinter { - private const val ENABLE_COLOR_SUPPORT = true + private const val ENABLE_COLOR_SUPPORT = false internal const val DEFAULT_MAX_WIDTH = 120 private val classpathCiteRef = Regex("at ([a-zA-Z.:()0-9]*.)$") private val classFnSpec = Regex( diff --git a/packages/cli/src/main/kotlin/elide/tool/feature/ToolingUmbrellaFeature.kt b/packages/cli/src/main/kotlin/elide/tool/feature/ToolingUmbrellaFeature.kt index 410abc2c6..61de80766 100644 --- a/packages/cli/src/main/kotlin/elide/tool/feature/ToolingUmbrellaFeature.kt +++ b/packages/cli/src/main/kotlin/elide/tool/feature/ToolingUmbrellaFeature.kt @@ -12,11 +12,10 @@ */ package elide.tool.feature -import dev.elide.cli.bridge.CliNativeBridge import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import org.graalvm.nativeimage.hosted.Feature.IsInConfigurationAccess import org.graalvm.nativeimage.hosted.RuntimeJNIAccess.register -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.NativeLibraryFeature.NativeLibInfo import elide.runtime.feature.NativeLibraryFeature.NativeLibType.STATIC import elide.runtime.feature.engine.AbstractStaticNativeLibraryFeature diff --git a/packages/cli/src/main/resources/META-INF/native-image/agent-extracted-predefined-classes/gFztcU2kcJ6ldjyYSDynm8.classdata b/packages/cli/src/main/resources/META-INF/native-image/agent-extracted-predefined-classes/gFztcU2kcJ6ldjyYSDynm8.classdata new file mode 100644 index 000000000..63697132d Binary files /dev/null and b/packages/cli/src/main/resources/META-INF/native-image/agent-extracted-predefined-classes/gFztcU2kcJ6ldjyYSDynm8.classdata differ diff --git a/packages/cli/src/main/resources/META-INF/native-image/jni-config.json b/packages/cli/src/main/resources/META-INF/native-image/jni-config.json index fd5609af5..95cff0bf5 100644 --- a/packages/cli/src/main/resources/META-INF/native-image/jni-config.json +++ b/packages/cli/src/main/resources/META-INF/native-image/jni-config.json @@ -5,12 +5,6 @@ { "name":"[J" }, -{ - "name":"[Lcom.sun.management.internal.DiagnosticCommandArgumentInfo;" -}, -{ - "name":"[Lcom.sun.management.internal.DiagnosticCommandInfo;" -}, { "name":"[Ljava.lang.String;" }, @@ -77,7 +71,14 @@ "allDeclaredConstructors":true, "allPublicConstructors":true, "methods":[ - {"name":"","parameterTypes":[] } + {"name":"","parameterTypes":[] }, + {"name":"setId","parameterTypes":["java.lang.String"] }, + {"name":"setLang","parameterTypes":["java.lang.String"] }, + {"name":"setTool","parameterTypes":["java.lang.String"] }, + {"name":"setSource","parameterTypes":["java.lang.String"] }, + {"name":"setMessage","parameterTypes":["java.lang.String"] }, + {"name":"setAdvice","parameterTypes":["java.lang.String"] }, + {"name":"setRenderedMessage","parameterTypes":["java.lang.String"] } ] }, { diff --git a/packages/cli/src/main/resources/META-INF/native-image/predefined-classes-config.json b/packages/cli/src/main/resources/META-INF/native-image/predefined-classes-config.json new file mode 100644 index 000000000..7caee3820 --- /dev/null +++ b/packages/cli/src/main/resources/META-INF/native-image/predefined-classes-config.json @@ -0,0 +1,9 @@ +[ + { + "type":"agent-extracted", + "classes":[ + { "nameInfo":"com/oracle/truffle/runtime/generated/GeneratedModules", "hash":"gFztcU2kcJ6ldjyYSDynm8" } + ] + } +] + diff --git a/packages/cli/src/main/resources/META-INF/native-image/reachability-metadata.json b/packages/cli/src/main/resources/META-INF/native-image/reachability-metadata.json new file mode 100644 index 000000000..a6b2dfa72 --- /dev/null +++ b/packages/cli/src/main/resources/META-INF/native-image/reachability-metadata.json @@ -0,0 +1,2934 @@ +{ + "reflection": [ + { + "type": "[B" + }, + { + "type": "ch.qos.logback.classic.encoder.PatternLayoutEncoder", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.joran.SerializedModelConfigurator", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.jul.LevelChangePropagator", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.sift.MDCBasedDiscriminator", + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "setDefaultValue", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "setKey", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "ch.qos.logback.classic.sift.SiftingAppender", + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "setDiscriminator", + "parameterTypes": [ + "ch.qos.logback.core.sift.Discriminator" + ] + } + ] + }, + { + "type": "ch.qos.logback.classic.spi.LogbackServiceProvider" + }, + { + "type": "ch.qos.logback.core.ConsoleAppender", + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "setTarget", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "ch.qos.logback.core.OutputStreamAppender", + "methods": [ + { + "name": "setEncoder", + "parameterTypes": [ + "ch.qos.logback.core.encoder.Encoder" + ] + } + ] + }, + { + "type": "ch.qos.logback.core.encoder.Encoder" + }, + { + "type": "ch.qos.logback.core.encoder.LayoutWrappingEncoder", + "methods": [ + { + "name": "setParent", + "parameterTypes": [ + "ch.qos.logback.core.spi.ContextAware" + ] + } + ] + }, + { + "type": "ch.qos.logback.core.pattern.PatternLayoutEncoderBase", + "methods": [ + { + "name": "setPattern", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "ch.qos.logback.core.sift.Discriminator" + }, + { + "type": "ch.qos.logback.core.spi.ContextAware" + }, + { + "type": "ch.qos.logback.core.status.NopStatusListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.github.ajalt.mordant.terminal.terminalinterface.ffm.TerminalInterfaceProviderFfm" + }, + { + "type": "com.github.ajalt.mordant.terminal.terminalinterface.jna.TerminalInterfaceProviderJna" + }, + { + "type": "com.github.ajalt.mordant.terminal.terminalinterface.nativeimage.TerminalInterfaceProviderNativeImage" + }, + { + "type": "com.google.common.jimfs.SystemJimfsFileSystemProvider" + }, + { + "type": "elide.runtime.exec.$GuestExecutorFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.exec.$GuestExecutorFactory$Executor0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestIOConfiguration$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestVMConfiguration$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestVMEEConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestVMEESandboxConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestVMInspectConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$JsEsmConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$JsNpmConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.$IntrinsicsManager$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.$ElideIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortControllerIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortSignalIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.base64.$Base64Intrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.codec.$JsEncodingIntrinsics$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.console.$ConsoleIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoKey$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.fetch.$FetchIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.stream.$CoreStreamsIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLSearchParamsIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.webstreams.$ReadableStreamIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.$JsTimerExecutorProviderImpl$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.$JsTimerExecutorProviderImpl$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.$JsTimersIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.$JsTimersIntrinsic$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.JsTimersIntrinsic", + "fields": [ + { + "name": "execProvider" + } + ] + }, + { + "type": "elide.runtime.gvm.internals.sqlite.$ElideSqliteModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.sqlite.$ElideSqliteModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.testing.$ElideTestingModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.testing.$ElideTestingModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.vfs.$EmbeddedGuestVFSImpl$EmbeddedVFSConfigurationFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.vfs.$EmbeddedGuestVFSImpl$EmbeddedVFSConfigurationFactory$Spawn$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.vfs.$GuestVFSPolicy$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.vfs.$HostVFSImpl$HostVFSConfigurationFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.intrinsics.$BuiltinIntrinsicsResolver$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.intrinsics.$ServiceIntrinsicsResolver$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.intrinsics.js.err.$ValueErrorIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.lang.typescript.TypeScriptLanguageProvider" + }, + { + "type": "elide.runtime.node.asserts.$NodeAssertModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.asserts.$NodeAssertModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.asserts.$NodeAssertStrictModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.asserts.$NodeAssertStrictModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.buffer.$NodeBufferModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.buffer.$NodeBufferModuleFacade$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$IpcServer$graalvm1$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.cluster.$NodeClusterModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.cluster.$NodeClusterModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.console.$NodeConsoleModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.console.$NodeConsoleModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.crypto.$NodeCryptoModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.crypto.$NodeCryptoModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.dgram.$NodeDatagramModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.dgram.$NodeDatagramModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.diagnostics.$NodeDiagnosticsChannelModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.diagnostics.$NodeDiagnosticsChannelModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.dns.$NodeDNSModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.dns.$NodeDNSModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.dns.$NodeDNSPromisesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.dns.$NodeDNSPromisesModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.domain.$NodeDomainModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.domain.$NodeDomainModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.events.$NodeEventsModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.events.$NodeEventsModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.events.$NodeEventsModuleFacade$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.fs.$NodeFilesystemModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.fs.$NodeFilesystemModule$ProvidePromises1$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.fs.$NodeFilesystemModule$ProvideStd0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.fs.$VfsInitializerListener$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.http.$NodeHttpModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.http.$NodeHttpModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.http2.$NodeHttp2Module$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.http2.$NodeHttp2Module$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.https.$NodeHttpsModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.https.$NodeHttpsModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.inspector.$NodeInspectorModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.inspector.$NodeInspectorPromisesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.module.$NodeModulesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.module.$NodeModulesModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.net.$NodeNetworkModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.net.$NodeNetworkModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$CPUInfoData$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$CPUTimingsData$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NetworkInterfaceInfoData$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystem$BaseOS$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystem$Posix$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystem$Win32$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystemModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystemModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.path.$NodePathsModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.path.$NodePathsModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.perfHooks.$NodePerformanceHooksModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.perfHooks.$NodePerformanceHooksModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.process.$NodeProcessModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.process.$NodeProcessModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.querystring.$NodeQuerystringModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.querystring.$NodeQuerystringModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.readline.$NodeReadlineModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.readline.$NodeReadlineModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.readline.$NodeReadlinePromisesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.readline.$NodeReadlinePromisesModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamConsumersModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamConsumersModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamPromisesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamPromisesModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamWebModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamWebModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stringDecoder.$NodeStringDecoderModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stringDecoder.$NodeStringDecoderModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.test.$NodeTestModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.test.$NodeTestModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.url.$NodeURLModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.url.$NodeURLModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.worker.$NodeWorkerModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.worker.$NodeWorkerModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.zlib.$NodeZlib$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.zlib.$NodeZlibModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.zlib.NodeZlibModule", + "fields": [ + { + "name": "zlib" + } + ] + }, + { + "type": "elide.tool.cli.$Elide$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.AOTApplicationContextConfigurer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.AbstractSubcommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.AbstractToolCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.AotConstantPropertySources" + }, + { + "type": "elide.tool.cli.CliCommandInvocation", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.Elide", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.Elide$Companion$ToolConfigurator", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.EnvironmentPropertiesOptimizationLoader" + }, + { + "type": "elide.tool.cli.KnownMissingTypesOptimizationLoader" + }, + { + "type": "elide.tool.cli.NettyPropertiesAOTContextConfigurer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.PublishersOptimizationsLoader" + }, + { + "type": "elide.tool.cli.StaticServicesLoader" + }, + { + "type": "elide.tool.cli.ToolCommandBase", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.discord.$ToolDiscordCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.discord.ToolDiscordCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.help.$HelpCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.help.HelpCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.info.$ToolInfoCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.info.ToolInfoCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.pkl.ToolPklCommand", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$DebugConfig$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$EnvironmentConfig$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$GroovySettings$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$InspectorConfig$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$JvmSettings$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$KotlinSettings$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$LanguageSelector$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$PythonSettings$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$RubySettings$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$WasmSettings$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$DebugConfig", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$EnvironmentConfig", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$GroovySettings", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$InspectorConfig", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$JvmSettings", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$KotlinSettings", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$LanguageSelector", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$LanguageSettings", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$PythonSettings", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$RubySettings", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand$WasmSettings", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.tool.$ToolInvokeCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.tool.ToolInvokeCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.options.$AbstractEngineOptions$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.$AccessControlOptions$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.$CommonOptions$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.$EngineJavaScriptOptions$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.$LanguagePositionals$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.AbstractEngineOptions", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.options.AccessControlOptions", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.options.CommonOptions", + "allDeclaredFields": true, + "methods": [ + { + "name": "setDebug", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "setQuiet", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "setVerbose", + "parameterTypes": [ + "boolean" + ] + } + ] + }, + { + "type": "elide.tool.cli.options.EngineJavaScriptOptions", + "allDeclaredFields": true + }, + { + "type": "elide.tool.err.$DefaultStructuredErrorRecorder$DefaultMarkdownErrorRecorderProvider$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.err.$DefaultStructuredErrorRecorder$DefaultMarkdownErrorRecorderProvider$Get0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.err.$ErrorHandlerAcquireTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.err.$ErrorRecorderAcquireTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.err.$ErrorRecorderWriteTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.io.$RuntimeWorkdirManager$DefaultRuntimeWorkdirManagerProvider$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.io.$RuntimeWorkdirManager$DefaultRuntimeWorkdirManagerProvider$Get0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.project.$DefaultProjectManager$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.testing.$SanitySelfTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.transport.$EpollTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.transport.$NativeCryptoTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.transport.$NativeTransportTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": { + "proxy": [ + "com.github.ajalt.mordant.terminal.terminalinterface.jna.PosixLibC" + ] + } + } + ], + "resources": [ + { + "glob": "ElideTool.properties" + }, + { + "glob": "ElideTool_en.properties" + }, + { + "glob": "ElideTool_en_US.properties" + }, + { + "glob": "META-INF/graalvm/com.oracle.truffle.enterprise/version" + }, + { + "glob": "META-INF/graalvm/org.graalvm.polyglot/version" + }, + { + "glob": "META-INF/graalvm/org.graalvm.truffle/version" + }, + { + "glob": "META-INF/maven/org.xerial/sqlite-jdbc/VERSION" + }, + { + "glob": "META-INF/maven/org.xerial/sqlite-jdbc/pom.properties" + }, + { + "glob": "META-INF/micronaut/" + }, + { + "glob": "META-INF/native/libnetty_tcnative_linux_x86_64.so" + }, + { + "glob": "META-INF/native/libnetty_transport_native_epoll_x86_64.so" + }, + { + "glob": "META-INF/native/libnetty_transport_native_io_uring_x86_64.so" + }, + { + "glob": "META-INF/resources/engine/libtruffleattach/linux/amd64/sha256" + }, + { + "glob": "META-INF/services/ch.qos.logback.classic.spi.Configurator" + }, + { + "glob": "META-INF/services/com.aayushatharva.brotli4j.service.BrotliNativeProvider" + }, + { + "glob": "META-INF/services/com.github.ajalt.mordant.terminal.TerminalInterfaceProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.TruffleLanguage$Provider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.TruffleRuntimeAccess" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.impl.TruffleLocator" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.instrumentation.provider.TruffleInstrumentProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.library.DefaultExportProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.library.provider.DefaultExportProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.provider.InternalResourceProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.provider.TruffleLanguageProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.EngineCacheSupport" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.FloodControlHandler" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.LoopNodeFactory" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.TruffleTypes" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.jfr.EventFactory$Provider" + }, + { + "glob": "META-INF/services/io.micronaut.context.ApplicationContextConfigurer" + }, + { + "glob": "META-INF/services/io.micronaut.core.optim.StaticOptimizations$Loader" + }, + { + "glob": "META-INF/services/java.lang.System$LoggerFinder" + }, + { + "glob": "META-INF/services/java.nio.channels.spi.SelectorProvider" + }, + { + "glob": "META-INF/services/java.nio.file.spi.FileSystemProvider" + }, + { + "glob": "META-INF/services/java.time.zone.ZoneRulesProvider" + }, + { + "glob": "META-INF/services/java.util.spi.ResourceBundleControlProvider" + }, + { + "glob": "META-INF/services/org.graalvm.home.HomeFinder" + }, + { + "glob": "META-INF/services/org.graalvm.polyglot.impl.AbstractPolyglotImpl" + }, + { + "glob": "META-INF/services/org.pkl.core.StackFrameTransformer" + }, + { + "glob": "META-INF/services/org.pkl.core.module.ModuleKeyFactory" + }, + { + "glob": "META-INF/services/org.slf4j.spi.SLF4JServiceProvider" + }, + { + "glob": "com/sun/jna/linux-x86-64/libjnidispatch.so" + }, + { + "glob": "lib/linux-x86_64/libbrotli.so" + }, + { + "glob": "logback-test.scmo" + }, + { + "glob": "logback.scmo" + }, + { + "glob": "org/fusesource/jansi/jansi.properties" + }, + { + "glob": "org/pkl/commons/cli/PklCARoots.pem" + }, + { + "glob": "org/pkl/core/Release.properties" + }, + { + "glob": "org/pkl/core/stdlib/EvaluatorSettings.pkl" + }, + { + "glob": "org/pkl/core/stdlib/Project.pkl" + }, + { + "glob": "org/pkl/core/stdlib/base.pkl" + }, + { + "glob": "org/pkl/core/stdlib/reflect.pkl" + }, + { + "glob": "org/pkl/core/stdlib/semver.pkl" + }, + { + "module": "jdk.jfr", + "glob": "jdk/jfr/internal/types/metadata.bin" + } + ], + "bundles": [ + { + "name":"ElideTool", + "locales":["en-US"] + }, + { + "name":"org.pkl.core.errorMessages", + "locales":["en"] + }, + { + "name":"sun.text.resources.BreakIteratorInfo", + "locales":["und"] + }, + { + "name":"sun.text.resources.BreakIteratorResources", + "locales":["en", "en-US", "und"] + }, + { + "name":"sun.text.resources.cldr.FormatData", + "locales":["en", "en-US", "und"] + }, + { + "name":"sun.util.resources.cldr.CalendarData", + "locales":["und"] + }, + { + "name":"sun.util.resources.cldr.TimeZoneNames", + "locales":["en", "en-US", "und"] + }, + { + "name": "com.sun.tools.javac.resources.compiler", + "locales": ["en"] + }, + { + "name": "sun.tools.jar.resources.jar", + "locales": ["en"] + }, + { + "name": "com.sun.tools.javac.resources.javac", + "locales": ["en"] + } + ], + "serialization": [ + { + "type": "ch.qos.logback.classic.model.ConfigurationModel" + }, + { + "type": "ch.qos.logback.classic.model.ContextNameModel" + }, + { + "type": "ch.qos.logback.classic.model.LoggerContextListenerModel" + }, + { + "type": "ch.qos.logback.classic.model.LoggerModel" + }, + { + "type": "ch.qos.logback.classic.model.RootLoggerModel" + }, + { + "type": "ch.qos.logback.core.model.AppenderModel" + }, + { + "type": "ch.qos.logback.core.model.AppenderRefModel" + }, + { + "type": "ch.qos.logback.core.model.ComponentModel" + }, + { + "type": "ch.qos.logback.core.model.ImplicitModel" + }, + { + "type": "ch.qos.logback.core.model.Model" + }, + { + "type": "ch.qos.logback.core.model.NamedComponentModel" + }, + { + "type": "ch.qos.logback.core.model.NamedModel" + }, + { + "type": "ch.qos.logback.core.model.PropertyModel" + }, + { + "type": "ch.qos.logback.core.model.SerializeModelModel" + }, + { + "type": "ch.qos.logback.core.model.SiftModel" + }, + { + "type": "ch.qos.logback.core.model.StatusListenerModel" + }, + { + "type": "java.util.ArrayList" + } + ], + "jni": [ + { + "type": "[B" + }, + { + "type": "[J" + }, + { + "type": "[[J" + }, + { + "type": "com.sun.jna.Callback" + }, + { + "type": "com.sun.jna.CallbackReference", + "methods": [ + { + "name": "getCallback", + "parameterTypes": [ + "java.lang.Class", + "com.sun.jna.Pointer", + "boolean" + ] + }, + { + "name": "getFunctionPointer", + "parameterTypes": [ + "com.sun.jna.Callback", + "boolean" + ] + }, + { + "name": "getNativeString", + "parameterTypes": [ + "java.lang.Object", + "boolean" + ] + }, + { + "name": "initializeThread", + "parameterTypes": [ + "com.sun.jna.Callback", + "com.sun.jna.CallbackReference$AttachOptions" + ] + } + ] + }, + { + "type": "com.sun.jna.CallbackReference$AttachOptions" + }, + { + "type": "com.sun.jna.FromNativeConverter", + "methods": [ + { + "name": "nativeType", + "parameterTypes": [] + } + ] + }, + { + "type": "com.sun.jna.IntegerType", + "fields": [ + { + "name": "value" + } + ] + }, + { + "type": "com.sun.jna.JNIEnv" + }, + { + "type": "com.sun.jna.Platform", + "methods": [ + {"name":"","parameterTypes":[] } + ] + }, + { + "type": "com.sun.jna.Native", + "methods": [ + {"name":"","parameterTypes":[] }, + { + "name": "dispose", + "parameterTypes": [] + }, + { + "name": "fromNative", + "parameterTypes": [ + "com.sun.jna.FromNativeConverter", + "java.lang.Object", + "java.lang.reflect.Method" + ] + }, + { + "name": "fromNative", + "parameterTypes": [ + "java.lang.Class", + "java.lang.Object" + ] + }, + { + "name": "fromNative", + "parameterTypes": [ + "java.lang.reflect.Method", + "java.lang.Object" + ] + }, + { + "name": "nativeType", + "parameterTypes": [ + "java.lang.Class" + ] + }, + { + "name": "toNative", + "parameterTypes": [ + "com.sun.jna.ToNativeConverter", + "java.lang.Object" + ] + } + ] + }, + { + "type": "com.sun.jna.Native$ffi_callback", + "methods": [ + { + "name": "invoke", + "parameterTypes": [ + "long", + "long", + "long" + ] + } + ] + }, + { + "type": "com.sun.jna.NativeMapped", + "methods": [ + { + "name": "toNative", + "parameterTypes": [] + } + ] + }, + { + "type": "com.sun.jna.Pointer", + "fields": [ + { + "name": "peer" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "long" + ] + } + ] + }, + { + "type": "com.sun.jna.PointerType", + "fields": [ + { + "name": "pointer" + } + ] + }, + { + "type": "com.sun.jna.Structure", + "fields": [ + { + "name": "memory" + }, + { + "name": "typeInfo" + } + ], + "methods": [ + { + "name": "autoRead", + "parameterTypes": [] + }, + { + "name": "autoWrite", + "parameterTypes": [] + }, + { + "name": "getTypeInfo", + "parameterTypes": [] + }, + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.Class", + "long" + ] + } + ] + }, + { + "type": "com.sun.jna.Structure$ByValue" + }, + { + "type": "com.sun.jna.Structure$FFIType$FFITypes", + "fields": [ + { + "name": "ffi_type_double" + }, + { + "name": "ffi_type_float" + }, + { + "name": "ffi_type_longdouble" + }, + { + "name": "ffi_type_pointer" + }, + { + "name": "ffi_type_sint16" + }, + { + "name": "ffi_type_sint32" + }, + { + "name": "ffi_type_sint64" + }, + { + "name": "ffi_type_sint8" + }, + { + "name": "ffi_type_uint16" + }, + { + "name": "ffi_type_uint32" + }, + { + "name": "ffi_type_uint64" + }, + { + "name": "ffi_type_uint8" + }, + { + "name": "ffi_type_void" + } + ] + }, + { + "type": "com.sun.jna.WString", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "io.netty.channel.ChannelException" + }, + { + "type": "io.netty.channel.DefaultFileRegion", + "fields": [ + { + "name": "file" + }, + { + "name": "transferred" + } + ] + }, + { + "type": "io.netty.channel.epoll.LinuxSocket" + }, + { + "type": "io.netty.channel.epoll.Native" + }, + { + "type": "io.netty.channel.epoll.NativeDatagramPacketArray$NativeDatagramPacket", + "fields": [ + { + "name": "count" + }, + { + "name": "memoryAddress" + }, + { + "name": "recipientAddr" + }, + { + "name": "recipientAddrLen" + }, + { + "name": "recipientPort" + }, + { + "name": "recipientScopeId" + }, + { + "name": "segmentSize" + }, + { + "name": "senderAddr" + }, + { + "name": "senderAddrLen" + }, + { + "name": "senderPort" + }, + { + "name": "senderScopeId" + } + ] + }, + { + "type": "io.netty.channel.epoll.NativeStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.channel.unix.Buffer" + }, + { + "type": "io.netty.channel.unix.DatagramSocketAddress", + "methods": [ + { + "name": "", + "parameterTypes": [ + "byte[]", + "int", + "int", + "int", + "io.netty.channel.unix.DatagramSocketAddress" + ] + } + ] + }, + { + "type": "io.netty.channel.unix.DomainDatagramSocketAddress", + "methods": [ + { + "name": "", + "parameterTypes": [ + "byte[]", + "int", + "io.netty.channel.unix.DomainDatagramSocketAddress" + ] + } + ] + }, + { + "type": "io.netty.channel.unix.ErrorsStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.channel.unix.FileDescriptor" + }, + { + "type": "io.netty.channel.unix.LimitsStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.channel.unix.PeerCredentials", + "methods": [ + { + "name": "", + "parameterTypes": [ + "int", + "int", + "int[]" + ] + } + ] + }, + { + "type": "io.netty.channel.unix.Socket" + }, + { + "type": "io.netty.incubator.channel.uring.LinuxSocket" + }, + { + "type": "io.netty.incubator.channel.uring.Native" + }, + { + "type": "io.netty.incubator.channel.uring.NativeStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.internal.tcnative.Buffer" + }, + { + "type": "io.netty.internal.tcnative.CertificateCallbackTask", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "byte[]", + "byte[][]", + "io.netty.internal.tcnative.CertificateCallback" + ] + } + ] + }, + { + "type": "io.netty.internal.tcnative.CertificateVerifierTask", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "byte[][]", + "java.lang.String", + "io.netty.internal.tcnative.CertificateVerifier" + ] + } + ] + }, + { + "type": "io.netty.internal.tcnative.Library" + }, + { + "type": "io.netty.internal.tcnative.NativeStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.internal.tcnative.SSL" + }, + { + "type": "io.netty.internal.tcnative.SSLContext" + }, + { + "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodDecryptTask", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "byte[]", + "io.netty.internal.tcnative.AsyncSSLPrivateKeyMethod" + ] + } + ] + }, + { + "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodSignTask", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "int", + "byte[]", + "io.netty.internal.tcnative.AsyncSSLPrivateKeyMethod" + ] + } + ] + }, + { + "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodTask", + "fields": [ + { + "name": "resultBytes" + } + ] + }, + { + "type": "io.netty.internal.tcnative.SSLSession" + }, + { + "type": "io.netty.internal.tcnative.SSLTask", + "fields": [ + { + "name": "complete" + }, + { + "name": "returnValue" + } + ] + }, + { + "type": "java.io.FileDescriptor", + "fields": [ + { + "name": "fd" + } + ] + }, + { + "type": "java.io.IOException" + }, + { + "type": "java.lang.Boolean", + "fields": [ + { + "name": "TYPE" + }, + { + "name": "value" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "getBoolean", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "java.lang.Byte", + "fields": [ + { + "name": "TYPE" + }, + { + "name": "value" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "byte" + ] + } + ] + }, + { + "type": "java.lang.Character", + "fields": [ + { + "name": "TYPE" + }, + { + "name": "value" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "char" + ] + } + ] + }, + { + "type": "java.lang.Class", + "methods": [ + { + "name": "getClassLoader", + "parameterTypes": [] + }, + { + "name": "getComponentType", + "parameterTypes": [] + } + ] + }, + { + "type": "java.lang.ClassLoader", + "methods": [ + { + "name": "loadClass", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "java.lang.Double", + "fields": [ + { + "name": "TYPE" + }, + { + "name": "value" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "double" + ] + } + ] + }, + { + "type": "java.lang.Exception" + }, + { + "type": "java.lang.Float", + "fields": [ + { + "name": "TYPE" + }, + { + "name": "value" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "float" + ] + } + ] + }, + { + "type": "java.lang.IllegalArgumentException" + }, + { + "type": "java.lang.Integer", + "fields": [ + { + "name": "TYPE" + }, + { + "name": "value" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "int" + ] + } + ] + }, + { + "type": "java.lang.Long", + "fields": [ + { + "name": "TYPE" + }, + { + "name": "value" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "long" + ] + } + ] + }, + { + "type": "java.lang.NullPointerException" + }, + { + "type": "java.lang.Object", + "methods": [ + { + "name": "toString", + "parameterTypes": [] + } + ] + }, + { + "type": "java.lang.OutOfMemoryError" + }, + { + "type": "java.lang.RuntimeException" + }, + { + "type": "java.lang.Short", + "fields": [ + { + "name": "TYPE" + }, + { + "name": "value" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "short" + ] + } + ] + }, + { + "type": "java.lang.String", + "methods": [ + { + "name": "", + "parameterTypes": [ + "byte[]" + ] + }, + { + "name": "", + "parameterTypes": [ + "byte[]", + "java.lang.String" + ] + }, + { + "name": "getBytes", + "parameterTypes": [] + }, + { + "name": "getBytes", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "toCharArray", + "parameterTypes": [] + } + ] + }, + { + "type": "java.lang.System", + "methods": [ + { + "name": "getProperty", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "java.lang.Void", + "fields": [ + { + "name": "TYPE" + } + ] + }, + { + "type": "java.lang.reflect.Method", + "methods": [ + { + "name": "getParameterTypes", + "parameterTypes": [] + }, + { + "name": "getReturnType", + "parameterTypes": [] + } + ] + }, + { + "type": "java.net.InetSocketAddress", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.String", + "int" + ] + } + ] + }, + { + "type": "java.net.PortUnreachableException" + }, + { + "type": "java.nio.Buffer", + "fields": [ + { + "name": "limit" + }, + { + "name": "position" + } + ], + "methods": [ + { + "name": "limit", + "parameterTypes": [] + }, + { + "name": "position", + "parameterTypes": [] + } + ] + }, + { + "type": "java.nio.ByteBuffer", + "methods": [ + { + "name": "array", + "parameterTypes": [] + }, + { + "name": "arrayOffset", + "parameterTypes": [] + } + ] + }, + { + "type": "java.nio.CharBuffer", + "methods": [ + { + "name": "array", + "parameterTypes": [] + }, + { + "name": "arrayOffset", + "parameterTypes": [] + } + ] + }, + { + "type": "java.nio.DirectByteBuffer" + }, + { + "type": "java.nio.DoubleBuffer", + "methods": [ + { + "name": "array", + "parameterTypes": [] + }, + { + "name": "arrayOffset", + "parameterTypes": [] + } + ] + }, + { + "type": "java.nio.FloatBuffer", + "methods": [ + { + "name": "array", + "parameterTypes": [] + }, + { + "name": "arrayOffset", + "parameterTypes": [] + } + ] + }, + { + "type": "java.nio.IntBuffer", + "methods": [ + { + "name": "array", + "parameterTypes": [] + }, + { + "name": "arrayOffset", + "parameterTypes": [] + } + ] + }, + { + "type": "java.nio.LongBuffer", + "methods": [ + { + "name": "array", + "parameterTypes": [] + }, + { + "name": "arrayOffset", + "parameterTypes": [] + } + ] + }, + { + "type": "java.nio.ShortBuffer", + "methods": [ + { + "name": "array", + "parameterTypes": [] + }, + { + "name": "arrayOffset", + "parameterTypes": [] + } + ] + }, + { + "type": "java.nio.channels.ClosedChannelException", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "jdk.internal.loader.ClassLoaders$AppClassLoader" + }, + { + "type": "sun.management.VMManagementImpl", + "fields": [ + { + "name": "compTimeMonitoringSupport" + }, + { + "name": "currentThreadCpuTimeSupport" + }, + { + "name": "objectMonitorUsageSupport" + }, + { + "name": "otherThreadCpuTimeSupport" + }, + { + "name": "remoteDiagnosticCommandsSupport" + }, + { + "name": "synchronizerUsageSupport" + }, + { + "name": "threadAllocatedMemorySupport" + }, + { + "name": "threadContentionMonitoringSupport" + } + ] + }, + { + "type": "sun.nio.ch.FileChannelImpl", + "fields": [ + { + "name": "fd" + } + ] + } + ] +} diff --git a/packages/cli/src/main/resources/META-INF/native-image/reflect-config.json b/packages/cli/src/main/resources/META-INF/native-image/reflect-config.json index c2cce079e..c08143d73 100644 --- a/packages/cli/src/main/resources/META-INF/native-image/reflect-config.json +++ b/packages/cli/src/main/resources/META-INF/native-image/reflect-config.json @@ -122,6 +122,30 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true }, +{ + "name":"com.github.ajalt.clikt.core.BaseCliktCommand", + "queryAllDeclaredMethods": true, + "allDeclaredMethods": true, + "allDeclaredFields": true +}, +{ + "name":"elide.tool.cli.CliCommandInvocation", + "queryAllDeclaredMethods": true, + "allDeclaredMethods": true, + "allDeclaredFields": true +}, +{ + "name":" elide.tool.cli.cmd.pkl.ToolPklCommand", + "queryAllDeclaredMethods": true, + "allDeclaredMethods": true, + "allDeclaredFields": true +}, +{ + "name":"elide.tool.cli.cmd.tool.ToolInvokeCommand", + "queryAllDeclaredMethods": true, + "allDeclaredMethods": true, + "allDeclaredFields": true +}, { "name":"com.github.ajalt.mordant.internal.jna.PosixLibC$winsize", "allDeclaredFields":true @@ -181,6 +205,14 @@ "allPublicConstructors":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"com.sun.jna.Platform", + "allDeclaredMethods":true, + "allPublicMethods":true, + "allDeclaredConstructors":true, + "allPublicConstructors":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"com.sun.jna.platform.linux.Udev$UdevContext", "methods":[{"name":"","parameterTypes":[] }] @@ -779,8 +811,16 @@ } ] }, +{ + "name": "elide.runtime.node.asserts.NodeAssert", + "queryAllDeclaredMethods": true, + "allDeclaredMethods": true +}, { "name": "elide.runtime.node.zlib.NodeZlibModule", + "queryAllDeclaredMethods": true, + "allDeclaredMethods": true, + "allDeclaredFields": true, "fields": [ { "name": "zlib" diff --git a/packages/cli/src/main/resources/META-INF/native-image/resource-config.json b/packages/cli/src/main/resources/META-INF/native-image/resource-config.json index 583c076f0..c19dbe1cf 100644 --- a/packages/cli/src/main/resources/META-INF/native-image/resource-config.json +++ b/packages/cli/src/main/resources/META-INF/native-image/resource-config.json @@ -1,6 +1,8 @@ { "resources":{ "includes":[{ + "pattern":"\\QMETA-INF/services/com.aayushatharva.brotli4j.service.BrotliNativeProvider\\E" + },{ "pattern":"\\Q/lib/linux-x86_64/libbrotli.so\\E" },{ "pattern":"\\Q/lib/osx-aarch64/libbrotli.dylib\\E" @@ -20,8 +22,6 @@ "pattern":"\\QElideTool_en.properties\\E" }, { "pattern":"\\QElideTool_en_US.properties\\E" - }, { - "pattern":"\\Qcom/sun/jna/darwin-aarch64/libjnidispatch.jnilib\\E" }, { "pattern":"\\QMETA-INF/elide/embedded/runtime/js/facade.js\\E" }, { @@ -78,8 +78,6 @@ "pattern":"\\QMETA-INF/resources/libpython.sha256\\E" }, { "pattern":"\\QMETA-INF/resources/linux/amd64/native.sha256\\E" - }, { - "pattern":"\\QMETA-INF/resources/nfi-native/libnfi/darwin/aarch64/sha256\\E" }, { "pattern":"\\QMETA-INF/resources/ni.sha256\\E" }, { @@ -540,8 +538,6 @@ "pattern":"\\Qcom/oracle/graal/python/builtins/objects/module/Frozen__PHELLO___HAM_EGGS.bin\\E" }, { "pattern":"\\Qcom/oracle/graal/python/builtins/objects/module/Frozen__PHELLO___SPAM.bin\\E" - }, { - "pattern":"\\Qcom/sun/jna/linux-x86-64/libjnidispatch.so\\E" }, { "pattern":"\\Qgraalpy_versions\\E" }, { @@ -828,6 +824,24 @@ "pattern":"jdk.jfr:\\Qjdk/jfr/internal/types/metadata.bin\\E" }], "excludes":[{ + "pattern":"META-INF/*\\.kotlin_module" + },{ + "pattern":".*runtime\\.current\\.json.*" + },{ + "pattern":"META-INF/native/libumbrella.*" + },{ + "pattern":"META-INF/native/libnetty_tcnative_linux_x86_64\\.so" + },{ + "pattern":"META-INF/native/libumbrella\\.so" + },{ + "pattern":"META-INF/native/libsqlitejdbc*" + },{ + "pattern":"META-INF/elide/embedded/tools/tsc/typescript\\.js\\.gz" + },{ + "pattern":"org/fusesource/jansi/internal/native/.*" + },{ + "pattern":".*Windows.*" + },{ "pattern":".*\\.proto" }, { "pattern":"FreeBSD" diff --git a/packages/cli/src/test/kotlin/elide/tool/cli/ElideToolTest.kt b/packages/cli/src/test/kotlin/elide/tool/cli/ElideToolTest.kt index 41da96ca6..511fb4e4d 100644 --- a/packages/cli/src/test/kotlin/elide/tool/cli/ElideToolTest.kt +++ b/packages/cli/src/test/kotlin/elide/tool/cli/ElideToolTest.kt @@ -29,6 +29,8 @@ import elide.testing.annotations.TestCase /** Tests for the main CLI tool entrypoint. */ @TestCase class ElideToolTest { + private val testRuby = false + private val testPython = false private val rootProjectPath = Paths.get(System.getProperty("user.dir")) .parent .parent @@ -138,6 +140,7 @@ import elide.testing.annotations.TestCase } @Test fun testRootEntrypointExecutePyFile() { + Assumptions.assumeTrue(testPython) Assumptions.assumeTrue(Files.exists(testScriptsPath)) val scriptPath = testScriptsPath.resolve("hello.py").toAbsolutePath() Assumptions.assumeTrue(Files.exists(scriptPath)) @@ -150,6 +153,7 @@ import elide.testing.annotations.TestCase } @Test fun testRootEntrypointExecuteRbFile() { + Assumptions.assumeTrue(testRuby) Assumptions.assumeTrue(Files.exists(testScriptsPath)) val scriptPath = testScriptsPath.resolve("hello.rb").toAbsolutePath() Assumptions.assumeTrue(Files.exists(scriptPath)) @@ -175,6 +179,7 @@ import elide.testing.annotations.TestCase } @Test fun testRootEntrypointExecutePyFileWithRun() { + Assumptions.assumeTrue(testPython) Assumptions.assumeTrue(Files.exists(testScriptsPath)) val scriptPath = testScriptsPath.resolve("hello.py").toAbsolutePath() Assumptions.assumeTrue(Files.exists(scriptPath)) @@ -188,6 +193,7 @@ import elide.testing.annotations.TestCase } @Test fun testRootEntrypointExecuteRbFileWithRun() { + Assumptions.assumeTrue(testRuby) Assumptions.assumeTrue(Files.exists(testScriptsPath)) val scriptPath = testScriptsPath.resolve("hello.rb").toAbsolutePath() Assumptions.assumeTrue(Files.exists(scriptPath)) @@ -216,6 +222,7 @@ import elide.testing.annotations.TestCase } @Test fun testRootEntrypointExecutePyFileExplicit() { + Assumptions.assumeTrue(testPython) Assumptions.assumeTrue(Files.exists(testScriptsPath)) val scriptPath = testScriptsPath.resolve("hello.py").toAbsolutePath() Assumptions.assumeTrue(Files.exists(scriptPath)) @@ -231,6 +238,7 @@ import elide.testing.annotations.TestCase } @Test fun testRootEntrypointExecuteRbFileExplicit() { + Assumptions.assumeTrue(testRuby) Assumptions.assumeTrue(Files.exists(testScriptsPath)) val scriptPath = testScriptsPath.resolve("hello.rb").toAbsolutePath() Assumptions.assumeTrue(Files.exists(scriptPath)) diff --git a/packages/embedded/build.gradle.kts b/packages/embedded/build.gradle.kts index 4d18596f9..1efdad8f3 100644 --- a/packages/embedded/build.gradle.kts +++ b/packages/embedded/build.gradle.kts @@ -252,11 +252,16 @@ dependencies { implementation(projects.packages.base) implementation(projects.packages.engine) implementation(projects.packages.graalvm) - implementation(projects.packages.proto.protoProtobuf) + + // protobuf + api(libs.protobuf.java) + api(libs.protobuf.util) + api(libs.protobuf.kotlin) // language engines implementation(libs.graalvm.js.language) implementation(libs.graalvm.wasm.language) + implementation(projects.packages.graalvmJs) implementation(projects.packages.graalvmTs) implementation(projects.packages.graalvmPy) implementation(projects.packages.graalvmRb) diff --git a/packages/engine/api/engine.api b/packages/engine/api/engine.api index db5468522..25b5be46c 100644 --- a/packages/engine/api/engine.api +++ b/packages/engine/api/engine.api @@ -1,3 +1,6 @@ +public abstract interface annotation class elide/annotations/engine/VMFeature : java/lang/annotation/Annotation { +} + public abstract interface annotation class elide/runtime/core/DelicateElideApi : java/lang/annotation/Annotation { } @@ -174,6 +177,7 @@ public abstract interface class elide/runtime/core/PolyglotContext { public abstract fun leave ()V public abstract fun parse (Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value; public abstract fun set-HRLGfaQ (Ljava/lang/String;Ljava/lang/Object;)Z + public abstract fun unwrap ()Lorg/graalvm/polyglot/Context; } public abstract interface class elide/runtime/core/PolyglotContext$EvaluationOptions { @@ -659,6 +663,149 @@ public abstract interface class elide/runtime/exec/GuestExecutorProvider { public abstract fun executor ()Lelide/runtime/exec/GuestExecutor; } +public abstract interface class elide/runtime/feature/FrameworkFeature : org/graalvm/nativeimage/hosted/Feature { + public fun findClassesInJar (Ljava/net/JarURLConnection;Ljava/lang/String;)Ljava/util/List; + public abstract fun getDescription ()Ljava/lang/String; + public fun getMethodOrFail (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; + public fun getURL ()Ljava/lang/String; + public fun logging ()Lelide/runtime/Logger; + public fun registerClassForReflection (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V + public fun registerClassHierarchyForReflection (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V + public fun registerConstructorsForReflection (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V + public fun registerForReflectiveInstantiation (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V + public fun registerForUnsafeFieldAccess (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;[Ljava/lang/String;)V + public fun registerPackageForReflection (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V +} + +public abstract interface class elide/runtime/feature/NativeLibraryFeature : elide/runtime/feature/FrameworkFeature { +} + +public final class elide/runtime/feature/NativeLibraryFeature$NativeLibInfo : java/lang/Record { + public static final field Companion Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo$Companion; + public fun (Ljava/lang/String;Ljava/util/List;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;Lkotlin/Pair;ZLjava/util/List;)V + public synthetic fun (Ljava/lang/String;Ljava/util/List;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;Lkotlin/Pair;ZLjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun absoluteLibs ()Lkotlin/Pair; + public final fun absolutePath ()Ljava/nio/file/Path; + public final fun builtin ()Z + public final fun component1 ()Ljava/lang/String; + public final fun component10 ()Lkotlin/Pair; + public final fun component11 ()Z + public final fun component12 ()Ljava/util/List; + public final fun component2 ()Ljava/util/List; + public final fun component3 ()Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Z + public final fun component6 ()Z + public final fun component7 ()Z + public final fun component8 ()Z + public final fun component9 ()Ljava/nio/file/Path; + public final fun copy (Ljava/lang/String;Ljava/util/List;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;Lkotlin/Pair;ZLjava/util/List;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + public static synthetic fun copy$default (Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Ljava/lang/String;Ljava/util/List;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;Lkotlin/Pair;ZLjava/util/List;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + public final fun deps ()Ljava/util/List; + public final fun eager ()Z + public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I + public final fun initializer ()Z + public final fun linkName ()Ljava/lang/String; + public final fun name ()Ljava/lang/String; + public static final fun of (Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;Lkotlin/Pair;ZLjava/util/List;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + public final fun prefix ()Ljava/util/List; + public final fun registerJni ()Z + public final fun registerPrefix ()Z + public fun toString ()Ljava/lang/String; + public final fun type ()Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; +} + +public final class elide/runtime/feature/NativeLibraryFeature$NativeLibInfo$Companion { + public final fun of (Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;Lkotlin/Pair;ZLjava/util/List;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + public static synthetic fun of$default (Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo$Companion;Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;Lkotlin/Pair;ZLjava/util/List;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; +} + +public final class elide/runtime/feature/NativeLibraryFeature$NativeLibType : java/lang/Enum { + public static final field DUAL Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; + public static final field SHARED Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; + public static final field STATIC Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; + public static fun values ()[Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; +} + +public final class elide/runtime/feature/NativeLibraryFeature$UnpackedNative : java/lang/Record { + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/nio/file/Path;)V + public final fun arch ()Ljava/lang/String; + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/nio/file/Path; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/nio/file/Path;)Lelide/runtime/feature/NativeLibraryFeature$UnpackedNative; + public static synthetic fun copy$default (Lelide/runtime/feature/NativeLibraryFeature$UnpackedNative;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/nio/file/Path;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$UnpackedNative; + public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I + public final fun name ()Ljava/lang/String; + public final fun path ()Ljava/nio/file/Path; + public final fun resource ()Ljava/lang/String; + public fun toString ()Ljava/lang/String; +} + +public abstract class elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature : elide/runtime/feature/NativeLibraryFeature { + public fun ()V + public fun beforeAnalysis (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;)V + public final fun fields (Ljava/lang/Class;[Ljava/lang/String;)[Ljava/lang/reflect/Field; + public fun getRequiredFeatures ()Ljava/util/List; + protected final fun libraryNamed (Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;Lkotlin/Pair;ZLjava/util/List;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + public static synthetic fun libraryNamed$default (Lelide/runtime/feature/engine/AbstractStaticNativeLibraryFeature;Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;Lkotlin/Pair;ZLjava/util/List;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + public final fun method (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; + protected final fun nativeLibrary (Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + protected final fun nativeLibrary (Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + public static synthetic fun nativeLibrary$default (Lelide/runtime/feature/engine/AbstractStaticNativeLibraryFeature;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + public static synthetic fun nativeLibrary$default (Lelide/runtime/feature/engine/AbstractStaticNativeLibraryFeature;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; + public abstract fun nativeLibs (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;)Ljava/util/List; + protected final fun unpackLibrary (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Ljava/util/List; + public static synthetic fun unpackLibrary$default (Lelide/runtime/feature/engine/AbstractStaticNativeLibraryFeature;Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Ljava/util/List; + public fun unpackNatives (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;)Ljava/util/List; +} + +public class elide/runtime/gvm/GraalVMGuest : java/lang/Enum, elide/runtime/gvm/GuestLanguage { + public static final field JAVASCRIPT Lelide/runtime/gvm/GraalVMGuest; + public static final field JVM Lelide/runtime/gvm/GraalVMGuest; + public static final field PYTHON Lelide/runtime/gvm/GraalVMGuest; + public static final field RUBY Lelide/runtime/gvm/GraalVMGuest; + public static final field WASM Lelide/runtime/gvm/GraalVMGuest; + public fun getEngine ()Ljava/lang/String; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public fun getLabel ()Ljava/lang/String; + public fun getSymbol ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lelide/runtime/gvm/GraalVMGuest; + public static fun values ()[Lelide/runtime/gvm/GraalVMGuest; +} + +public abstract interface class elide/runtime/gvm/GuestLanguage { + public static final field Companion Lelide/runtime/gvm/GuestLanguage$Companion; + public abstract fun getEngine ()Ljava/lang/String; + public fun getInvocationModes ()Ljava/util/EnumSet; + public abstract fun getLabel ()Ljava/lang/String; + public fun getSupportsSSR ()Z + public fun getSupportsStreamingSSR ()Z + public abstract fun getSymbol ()Ljava/lang/String; +} + +public final class elide/runtime/gvm/GuestLanguage$Companion { + public final fun getJAVASCRIPT ()Lelide/runtime/gvm/GuestLanguage; + public final fun getJVM ()Lelide/runtime/gvm/GuestLanguage; + public final fun getPYTHON ()Lelide/runtime/gvm/GuestLanguage; + public final fun getRUBY ()Lelide/runtime/gvm/GuestLanguage; + public final fun getWASM ()Lelide/runtime/gvm/GuestLanguage; +} + +public final class elide/runtime/gvm/InvocationMode : java/lang/Enum { + public static final field ASYNC Lelide/runtime/gvm/InvocationMode; + public static final field STREAMING Lelide/runtime/gvm/InvocationMode; + public static final field SYNC Lelide/runtime/gvm/InvocationMode; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Lelide/runtime/gvm/InvocationMode; + public static fun values ()[Lelide/runtime/gvm/InvocationMode; +} + public abstract interface class elide/runtime/gvm/cfg/GuestRuntimeConfiguration : io/micronaut/core/util/Toggleable { } diff --git a/packages/engine/build.gradle.kts b/packages/engine/build.gradle.kts index 6a3cd5467..5859f241a 100644 --- a/packages/engine/build.gradle.kts +++ b/packages/engine/build.gradle.kts @@ -12,6 +12,7 @@ */ import elide.internal.conventions.kotlin.KotlinTarget import elide.internal.conventions.publishing.publish +import elide.toolchain.host.TargetInfo plugins { kotlin("jvm") @@ -56,8 +57,10 @@ dependencies { api(libs.graalvm.polyglot) api(libs.kotlinx.coroutines.core) api(libs.guava) + implementation(libs.kotlinx.atomicfu) implementation(libs.kotlinx.serialization.core) implementation(libs.kotlinx.serialization.json) + compileOnly(libs.graalvm.svm) testApi(projects.packages.base) testImplementation(projects.packages.test) @@ -73,10 +76,11 @@ val isRelease = !quickbuild && ( project.properties["elide.release"] == "true" || project.properties["elide.buildMode"] == "release" ) +val elideTarget = TargetInfo.current(project) val nativesType = if (isRelease) "release" else "debug" val jvmDefs = StringBuilder().apply { - append(rootProject.layout.projectDirectory.dir("target/$nativesType").asFile.path) + append(rootProject.layout.projectDirectory.dir("target/${elideTarget.triple}/$nativesType").asFile.path) System.getProperty("java.library.path", "").let { if (it.isNotEmpty()) { append(File.pathSeparator) diff --git a/packages/graalvm/src/main/kotlin/elide/annotations/internal/VMFeature.kt b/packages/engine/src/main/kotlin/elide/annotations/engine/VMFeature.kt similarity index 73% rename from packages/graalvm/src/main/kotlin/elide/annotations/internal/VMFeature.kt rename to packages/engine/src/main/kotlin/elide/annotations/engine/VMFeature.kt index e196bbfba..883858056 100644 --- a/packages/graalvm/src/main/kotlin/elide/annotations/internal/VMFeature.kt +++ b/packages/engine/src/main/kotlin/elide/annotations/engine/VMFeature.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -10,10 +10,14 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ -package elide.annotations.internal + +package elide.annotations.engine /** - * TBD. + * ## VM Feature + * + * Annotates a GraalVM Native Image Feature implementation; such classes configure the compiler and are inert at actual + * execution time. */ @MustBeDocumented @Retention(AnnotationRetention.SOURCE) diff --git a/packages/engine/src/main/kotlin/elide/runtime/core/PolyglotContext.kt b/packages/engine/src/main/kotlin/elide/runtime/core/PolyglotContext.kt index bee0d3710..b6b0c2820 100644 --- a/packages/engine/src/main/kotlin/elide/runtime/core/PolyglotContext.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/core/PolyglotContext.kt @@ -12,6 +12,7 @@ */ package elide.runtime.core +import org.graalvm.polyglot.Context import org.graalvm.polyglot.Source import java.net.URI @@ -205,6 +206,9 @@ public interface PolyglotContext { */ public fun leave() + /** @return The underlying GraalVM context. */ + public fun unwrap(): Context + /** Returns the value associated with a given context [element], or `null` if the element is not present. */ public operator fun get(element: PolyglotContextElement): T? diff --git a/packages/engine/src/main/kotlin/elide/runtime/diag/SourceLocation.kt b/packages/engine/src/main/kotlin/elide/runtime/diag/SourceLocation.kt index 51880f402..f3d136589 100644 --- a/packages/engine/src/main/kotlin/elide/runtime/diag/SourceLocation.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/diag/SourceLocation.kt @@ -26,7 +26,6 @@ import kotlinx.serialization.Serializable * @param column Column number in the source file where the diagnostic was triggered. */ @Serializable -@ConsistentCopyVisibility @JvmRecord public data class SourceLocation ( public val line: UInt, public val column: UInt, diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/FrameworkFeature.kt b/packages/engine/src/main/kotlin/elide/runtime/feature/FrameworkFeature.kt similarity index 82% rename from packages/graalvm/src/main/kotlin/elide/runtime/feature/FrameworkFeature.kt rename to packages/engine/src/main/kotlin/elide/runtime/feature/FrameworkFeature.kt index 0ec3c3e6b..4f9257a1e 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/FrameworkFeature.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/feature/FrameworkFeature.kt @@ -10,6 +10,8 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ +@file:Suppress("SpreadOperator") + package elide.runtime.feature import org.graalvm.nativeimage.hosted.Feature @@ -33,7 +35,7 @@ public interface FrameworkFeature : Feature { * @return Logger to use for this feature. */ public fun logging(): Logger { - return Logging.of(FrameworkFeature::class) + return Logging.Companion.of(FrameworkFeature::class) } /** @@ -47,16 +49,8 @@ public interface FrameworkFeature : Feature { /** * Returns the method of a class or fails if it is not present. */ - public fun getMethodOrFail( - clazz: Class<*>, methodName: String, vararg params: Class<*>? - ): Method { - try { - return clazz.getDeclaredMethod(methodName, *params) - } catch (e: NoSuchMethodException) { - throw RuntimeException( - "Failed to find method " + methodName + " for class " + clazz.name, e - ) - } + public fun getMethodOrFail(clazz: Class<*>, methodName: String, vararg params: Class<*>?): Method { + return requireNotNull(clazz.getDeclaredMethod(methodName, *params)) } /** @@ -132,9 +126,7 @@ public interface FrameworkFeature : Feature { /** * Registers a class for unsafe reflective field access. */ - public fun registerForUnsafeFieldAccess( - access: Feature.FeatureAccess, className: String, vararg fields: String - ) { + public fun registerForUnsafeFieldAccess(access: Feature.FeatureAccess, className: String, vararg fields: String) { val clazz = access.findClassByName(className) if (clazz != null) { RuntimeReflection.register(clazz) @@ -147,8 +139,8 @@ public interface FrameworkFeature : Feature { } } else { logging().warning( - "Failed to find " + className - + " on the classpath for unsafe fields access registration." + "Failed to find " + className + + " on the classpath for unsafe fields access registration." ) } } @@ -158,21 +150,17 @@ public interface FrameworkFeature : Feature { */ public fun registerPackageForReflection(access: Feature.FeatureAccess, packageName: String) { val classLoader = Thread.currentThread().contextClassLoader - try { - val path = packageName.replace('.', '/') - val resources = classLoader.getResources(path) - while (resources.hasMoreElements()) { - val url = resources.nextElement() - val connection = url.openConnection() - if (connection is JarURLConnection) { - val classes = findClassesInJar(connection, packageName) - for (className: String in classes) { - registerClassHierarchyForReflection(access, className) - } + val path = packageName.replace('.', '/') + val resources = classLoader.getResources(path) + while (resources.hasMoreElements()) { + val url = resources.nextElement() + val connection = url.openConnection() + if (connection is JarURLConnection) { + val classes = findClassesInJar(connection, packageName) + for (className: String in classes) { + registerClassHierarchyForReflection(access, className) } } - } catch (e: IOException) { - throw RuntimeException("Failed to load classes under package name.", e) } } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/NativeLibraryFeature.kt b/packages/engine/src/main/kotlin/elide/runtime/feature/NativeLibraryFeature.kt similarity index 87% rename from packages/graalvm/src/main/kotlin/elide/runtime/feature/NativeLibraryFeature.kt rename to packages/engine/src/main/kotlin/elide/runtime/feature/NativeLibraryFeature.kt index d68c1da61..8e61c2ead 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/NativeLibraryFeature.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/feature/NativeLibraryFeature.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -10,16 +10,17 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ + package elide.runtime.feature import java.nio.file.Path -import elide.runtime.feature.NativeLibraryFeature.NativeLibType.STATIC public interface NativeLibraryFeature : FrameworkFeature { /** Types of linking for native libraries. */ public enum class NativeLibType { SHARED, - STATIC + STATIC, + DUAL, } /** Native library info used at build-time. */ @@ -41,20 +42,23 @@ public interface NativeLibraryFeature : FrameworkFeature { val builtin: Boolean, val eager: Boolean, val absolutePath: Path?, + val absoluteLibs: Pair?, val initializer: Boolean, val deps: List, ) { public companion object { + @Suppress("LongParameterList") @JvmStatic public fun of( name: String, vararg layout: String, - type: NativeLibType = STATIC, + type: NativeLibType = NativeLibType.STATIC, linkName: String = name, prefix: Boolean, jni: Boolean, builtin: Boolean, eager: Boolean, absolutePath: Path?, + absoluteLibs: Pair?, initializer: Boolean, deps: List, ): NativeLibInfo = NativeLibInfo( @@ -67,6 +71,7 @@ public interface NativeLibraryFeature : FrameworkFeature { builtin = builtin, eager = eager, absolutePath = absolutePath, + absoluteLibs = absoluteLibs, initializer = initializer, deps = deps, ) diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature.kt b/packages/engine/src/main/kotlin/elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature.kt similarity index 61% rename from packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature.kt rename to packages/engine/src/main/kotlin/elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature.kt index 445bc1286..548431470 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -10,14 +10,14 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ + package elide.runtime.feature.engine import com.oracle.svm.core.jdk.NativeLibrarySupport import com.oracle.svm.core.jdk.PlatformNativeLibrarySupport -import com.oracle.svm.hosted.FeatureImpl.BeforeAnalysisAccessImpl +import com.oracle.svm.hosted.FeatureImpl import com.oracle.svm.hosted.jni.JNIFeature import org.graalvm.nativeimage.hosted.Feature -import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import java.io.FileNotFoundException import java.io.InputStream import java.lang.reflect.Field @@ -27,26 +27,32 @@ import java.nio.file.Files import java.nio.file.Path import java.util.LinkedList import kotlin.io.path.Path -import kotlin.io.path.absolutePathString import elide.runtime.feature.NativeLibraryFeature -import elide.runtime.feature.NativeLibraryFeature.* +import elide.runtime.feature.NativeLibraryFeature.NativeLibType.DUAL import elide.runtime.feature.NativeLibraryFeature.NativeLibType.SHARED import elide.runtime.feature.NativeLibraryFeature.NativeLibType.STATIC public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature { + private companion object { + private val preferShared = System.getProperty("elide.preferShared") == "true" + private val staticUmbrella = System.getProperty("elide.staticUmbrella") == "true" + } + + @Suppress("LongParameterList") protected fun libraryNamed( name: String, vararg layout: String, - type: NativeLibType = STATIC, + type: NativeLibraryFeature.NativeLibType = STATIC, linkName: String = name, builtin: Boolean = true, registerJni: Boolean = true, registerPrefix: Boolean = builtin, eager: Boolean = false, absolutePath: Path? = null, + absoluteLibs: Pair? = null, initializer: Boolean = false, deps: List = emptyList(), - ): NativeLibInfo = NativeLibInfo.of( + ): NativeLibraryFeature.NativeLibInfo = NativeLibraryFeature.NativeLibInfo.Companion.of( name, *layout, type = type, @@ -56,6 +62,7 @@ public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature eager = eager, linkName = linkName, absolutePath = absolutePath, + absoluteLibs = absoluteLibs, initializer = initializer, deps = deps, ) @@ -68,7 +75,7 @@ public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature requireNotNull(FileSystems.newFileSystem(jar, env)) { "JAR at path not found: '$jar'" }.use { try { return it.getPath(path).toUri().toURL().openStream() - } catch (fnf: FileNotFoundException) { + } catch (_: FileNotFoundException) { // ignore } } @@ -76,7 +83,7 @@ public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature error("Resource not found in any JAR: '$path' in JARs: '${jars.joinToString(", ")}'") } - private fun BeforeAnalysisAccess.scanForResource(jarToken: String, path: String): InputStream? { + private fun Feature.BeforeAnalysisAccess.scanForResource(jarToken: String, path: String): InputStream? { val candidates = applicationClassPath.filter { it.toString().contains(jarToken) } if (candidates.isEmpty()) { return null @@ -84,16 +91,16 @@ public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature return scanJarsForResource(candidates, path) } - protected fun BeforeAnalysisAccess.unpackLibrary( + protected fun Feature.BeforeAnalysisAccess.unpackLibrary( jar: String, name: String, arch: String, vararg path: String, renameTo: ((String) -> String)? = null, cbk: (() -> Unit)? = null, - ): List { - val nativesPath = requireNotNull(System.getProperty("elide.target")?.ifBlank { null }) - val unpacked: LinkedList = LinkedList() + ): List { + val nativesPath = requireNotNull(System.getProperty("elide.natives")?.ifBlank { null }) + val unpacked: LinkedList = LinkedList() for (candidate in path) { val stream = scanForResource(jar, candidate) ?: continue stream.use { @@ -103,8 +110,11 @@ public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature val filename = it.fileName val dylibName = filename.toString().replace(".jnilib", ".dylib") val parent = it.parent - if (parent != null) it.parent.resolve(dylibName) - else it.resolveSibling(dylibName) + if (parent != null) { + it.parent.resolve(dylibName) + } else { + it.resolveSibling(dylibName) + } }, ) .toFile() @@ -117,23 +127,23 @@ public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature target.outputStream().use { it.write(stream.readBytes()) } } cbk?.invoke() - unpacked.add(UnpackedNative(name, candidate, arch, target.toPath().toAbsolutePath())) + unpacked.add(NativeLibraryFeature.UnpackedNative(name, candidate, arch, target.toPath().toAbsolutePath())) } } return unpacked } protected fun nativeLibrary( - singular: NativeLibInfo? = null, - ): NativeLibInfo? { + singular: NativeLibraryFeature.NativeLibInfo? = null, + ): NativeLibraryFeature.NativeLibInfo? { return singular } protected fun nativeLibrary( - darwin: NativeLibInfo? = null, - linux: NativeLibInfo? = null, - windows: NativeLibInfo? = null, - ): NativeLibInfo? { + darwin: NativeLibraryFeature.NativeLibInfo? = null, + linux: NativeLibraryFeature.NativeLibInfo? = null, + windows: NativeLibraryFeature.NativeLibInfo? = null, + ): NativeLibraryFeature.NativeLibInfo? { return when (val os = System.getProperty("os.name", "unknown").lowercase().trim()) { "mac os x" -> darwin "linux" -> linux @@ -142,9 +152,9 @@ public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature } } - public abstract fun nativeLibs(access: BeforeAnalysisAccess): List + public abstract fun nativeLibs(access: Feature.BeforeAnalysisAccess): List - public open fun unpackNatives(access: BeforeAnalysisAccess): List { + public open fun unpackNatives(access: Feature.BeforeAnalysisAccess): List { // native libraries to unpack at build time return emptyList() } @@ -155,12 +165,17 @@ public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature ) } - override fun beforeAnalysis(access: BeforeAnalysisAccess) { + @Suppress("SpreadOperator", "ComplexCondition") + override fun beforeAnalysis(access: Feature.BeforeAnalysisAccess) { unpackNatives(access) super.beforeAnalysis(access) nativeLibs(access).forEach { - if (it == null) return@forEach // not supported on this platform + if (it == null) return@forEach // not supported on this platform + + // we should only load this library if we are not in static umbrella mode; in that mode, only the native umbrella + // library is loaded, and all other libraries are statically linked into that. + val shouldLoad = !staticUmbrella // register lib val libSupport = NativeLibrarySupport.singleton() @@ -169,25 +184,39 @@ public abstract class AbstractStaticNativeLibraryFeature : NativeLibraryFeature if (it.builtin) { libSupport.preregisterUninitializedBuiltinLibrary(it.linkName) } - if (it.registerJni) (access as BeforeAnalysisAccessImpl).nativeLibraries.let { nativeLibraries -> - if (it.registerPrefix) { - it.prefix.forEach { prefix -> - platformLibs.addBuiltinPkgNativePrefix(prefix.replace(".", "_")) + if (it.registerJni) { + (access as FeatureImpl.BeforeAnalysisAccessImpl).nativeLibraries.let { nativeLibraries -> + if (it.registerPrefix) { + it.prefix.forEach { prefix -> + platformLibs.addBuiltinPkgNativePrefix(prefix.replace(".", "_")) + } + } + if (shouldLoad) { + when (it.type) { + STATIC -> nativeLibraries.addStaticJniLibrary(it.name, *it.deps.toTypedArray()) + SHARED -> nativeLibraries.addDynamicNonJniLibrary(it.name) + DUAL -> if (preferShared) { + nativeLibraries.addDynamicNonJniLibrary(it.name) + } else { + nativeLibraries.addStaticJniLibrary(it.name, *it.deps.toTypedArray()) + } + } } } - when (it.type) { - STATIC -> nativeLibraries.addStaticJniLibrary(it.name, *it.deps.toTypedArray()) - SHARED -> nativeLibraries.addDynamicNonJniLibrary(it.name) - } - } else { - (access as BeforeAnalysisAccessImpl).nativeLibraries.let { nativeLibraries -> + } else if (shouldLoad) { + (access as FeatureImpl.BeforeAnalysisAccessImpl).nativeLibraries.let { nativeLibraries -> when (it.type) { STATIC -> nativeLibraries.addStaticNonJniLibrary(it.name, *it.deps.toTypedArray()) SHARED -> nativeLibraries.addDynamicNonJniLibrary(it.name) + DUAL -> if (preferShared) { + nativeLibraries.addDynamicNonJniLibrary(it.name) + } else { + nativeLibraries.addStaticJniLibrary(it.name, *it.deps.toTypedArray()) + } } } } - if (it.eager) { + if (shouldLoad && it.eager) { val absolute = it.absolutePath if (absolute != null) { libSupport.loadLibraryAbsolute(absolute.toFile()) diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/GraalVMGuest.kt b/packages/engine/src/main/kotlin/elide/runtime/gvm/GraalVMGuest.kt similarity index 98% rename from packages/graalvm/src/main/kotlin/elide/runtime/gvm/GraalVMGuest.kt rename to packages/engine/src/main/kotlin/elide/runtime/gvm/GraalVMGuest.kt index fed51e503..660443a40 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/GraalVMGuest.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/gvm/GraalVMGuest.kt @@ -10,9 +10,10 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ + package elide.runtime.gvm -import java.util.* +import java.util.EnumSet /** Enumerates known/supported GraalVM guest languages. */ public enum class GraalVMGuest ( diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/GuestLanguage.kt b/packages/engine/src/main/kotlin/elide/runtime/gvm/GuestLanguage.kt similarity index 72% rename from packages/graalvm/src/main/kotlin/elide/runtime/gvm/GuestLanguage.kt rename to packages/engine/src/main/kotlin/elide/runtime/gvm/GuestLanguage.kt index 339afee60..22403cbb0 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/GuestLanguage.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/gvm/GuestLanguage.kt @@ -10,41 +10,46 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ + package elide.runtime.gvm -import java.util.* +import java.util.EnumSet /** - * TBD. + * ## Guest Language + * + * Describes a guest language supported by Elide. Various implementations exist for this API, most notably GraalVM's + * languages via Truffle. */ public interface GuestLanguage { /** - * TBD. + * String symbol to use when referring to this language in the API. */ public val symbol: String /** - * TBD. + * Engine which this language is based on; for example, Kotlin and Scala are "java" engines, and TypeScript is a + * "js" engine. */ public val engine: String /** - * TBD. + * Label to show in UI circumstances for this language. */ public val label: String /** - * TBD. + * Whether this language supports server-side rendering (SSR) or not. */ public val supportsSSR: Boolean get() = false /** - * TBD. + * Whether this language supports streaming-style SSR. */ public val supportsStreamingSSR: Boolean get() = invocationModes.contains(InvocationMode.STREAMING) /** - * TBD. + * Invocation modes supported by this language. */ public val invocationModes: EnumSet get() = EnumSet.noneOf(InvocationMode::class.java) diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/InvocationMode.kt b/packages/engine/src/main/kotlin/elide/runtime/gvm/InvocationMode.kt similarity index 87% rename from packages/graalvm/src/main/kotlin/elide/runtime/gvm/InvocationMode.kt rename to packages/engine/src/main/kotlin/elide/runtime/gvm/InvocationMode.kt index b60fd8a11..ddf89429b 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/InvocationMode.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/gvm/InvocationMode.kt @@ -20,20 +20,17 @@ package elide.runtime.gvm */ public enum class InvocationMode { /** - * ### Invocation Mode: Synchronous. - * + * Invocation Mode: Synchronous. */ SYNC, /** - * ### Invocation Mode: Asynchronous. - * + * Invocation Mode: Asynchronous. */ ASYNC, /** - * ### Invocation Mode: Streaming - * + * Invocation Mode: Streaming */ STREAMING, } diff --git a/packages/graalvm-js/api/graalvm-js.api b/packages/graalvm-js/api/graalvm-js.api index c74feb3a8..43b1c3699 100644 --- a/packages/graalvm-js/api/graalvm-js.api +++ b/packages/graalvm-js/api/graalvm-js.api @@ -44,9 +44,41 @@ public class elide/runtime/lang/javascript/JSRealmPatcher { public static fun setModuleLoader (Lcom/oracle/truffle/js/runtime/JSRealm;Lcom/oracle/truffle/js/runtime/objects/JSModuleLoader;)V } +public final class elide/runtime/lang/javascript/JavaScriptCompilerConfig : elide/runtime/precompiler/Precompiler$Configuration { + public static final field Companion Lelide/runtime/lang/javascript/JavaScriptCompilerConfig$Companion; + public fun ()V + public fun (Z)V + public synthetic fun (ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Z + public final fun copy (Z)Lelide/runtime/lang/javascript/JavaScriptCompilerConfig; + public static synthetic fun copy$default (Lelide/runtime/lang/javascript/JavaScriptCompilerConfig;ZILjava/lang/Object;)Lelide/runtime/lang/javascript/JavaScriptCompilerConfig; + public fun equals (Ljava/lang/Object;)Z + public static final fun getDEFAULT ()Lelide/runtime/lang/javascript/JavaScriptCompilerConfig; + public final fun getSourceMaps ()Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class elide/runtime/lang/javascript/JavaScriptCompilerConfig$Companion { + public final fun getDEFAULT ()Lelide/runtime/lang/javascript/JavaScriptCompilerConfig; +} + public final class elide/runtime/lang/javascript/JavaScriptLang { public static final field INSTANCE Lelide/runtime/lang/javascript/JavaScriptLang; public final fun initialize ()V + public final fun precompiler ()Lelide/runtime/lang/javascript/JavaScriptPrecompiler; +} + +public final class elide/runtime/lang/javascript/JavaScriptPrecompiler : elide/runtime/precompiler/Precompiler$SourcePrecompiler { + public static final field INSTANCE Lelide/runtime/lang/javascript/JavaScriptPrecompiler; + public synthetic fun invoke (Lelide/runtime/precompiler/Precompiler$PrecompileSourceRequest;Ljava/lang/Object;)Ljava/lang/Object; + public fun invoke (Lelide/runtime/precompiler/Precompiler$PrecompileSourceRequest;Ljava/lang/String;)Ljava/lang/String; +} + +public final class elide/runtime/lang/javascript/JavaScriptPrecompiler$Provider : elide/runtime/precompiler/Precompiler$Provider { + public fun ()V + public fun get ()Lelide/runtime/lang/javascript/JavaScriptPrecompiler; + public synthetic fun get ()Ljava/lang/Object; } public final class elide/runtime/lang/javascript/NodeModuleName { @@ -93,6 +125,13 @@ public final class elide/runtime/lang/javascript/NodeModuleName { public static final field ZLIB Ljava/lang/String; } +public final class elide/runtime/lang/javascript/OxcParserFeature : elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature { + public fun ()V + public fun beforeAnalysis (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;)V + public fun getDescription ()Ljava/lang/String; + public fun nativeLibs (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;)Ljava/util/List; +} + public abstract interface class elide/runtime/lang/javascript/SyntheticJSModule : elide/runtime/lang/javascript/CommonJSModuleProvider, elide/runtime/lang/javascript/JSModuleProvider { public fun exports ()[Lelide/runtime/lang/javascript/SyntheticJSModule$ExportedSymbol; public abstract fun provide ()Ljava/lang/Object; diff --git a/packages/graalvm-js/build.gradle.kts b/packages/graalvm-js/build.gradle.kts index dce1b1e95..24d299e08 100644 --- a/packages/graalvm-js/build.gradle.kts +++ b/packages/graalvm-js/build.gradle.kts @@ -50,22 +50,33 @@ val gvmJarsRoot = rootProject.layout.projectDirectory.dir("third_party/oracle") val patchedLibs = files( gvmJarsRoot.file("graaljs.jar"), + gvmJarsRoot.file("truffle-api.jar"), ) -val patchedDependencies: Configuration by configurations.creating { - isCanBeResolved = true -} +val patchedDependencies: Configuration by configurations.creating { isCanBeResolved = true } dependencies { annotationProcessor(libs.graalvm.truffle.processor) api(projects.packages.engine) api(patchedLibs) api(libs.graalvm.truffle.api) + implementation(libs.kotlinx.atomicfu) patchedDependencies(patchedLibs) } configurations.all { - libs.graalvm.js.language.get().let { - exclude(group = it.group, module = it.name) + listOf( + libs.graalvm.js.language, + libs.graalvm.truffle.api, + ).forEach { + it.get().let { + exclude(group = it.group, module = it.name) + } + } +} + +graalvmNative { + agent { + enabled = false } } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JavaScriptCompilerConfig.kt b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptCompilerConfig.kt similarity index 87% rename from packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JavaScriptCompilerConfig.kt rename to packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptCompilerConfig.kt index 22484add9..2bda36297 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JavaScriptCompilerConfig.kt +++ b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptCompilerConfig.kt @@ -10,7 +10,7 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ -package elide.runtime.gvm.js +package elide.runtime.lang.javascript import elide.runtime.precompiler.Precompiler @@ -22,6 +22,6 @@ public data class JavaScriptCompilerConfig( ) : Precompiler.Configuration { public companion object { /** Default JavaScript compiler configuration. */ - public val DEFAULT: JavaScriptCompilerConfig = JavaScriptCompilerConfig() + @JvmStatic public val DEFAULT: JavaScriptCompilerConfig = JavaScriptCompilerConfig() } } diff --git a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptLang.kt b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptLang.kt index 030b11ebb..bc369d37d 100644 --- a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptLang.kt +++ b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptLang.kt @@ -25,6 +25,13 @@ public object JavaScriptLang { // Whether JavaScript has initialized yet. private val initialized = atomic(false) + /** + * Obtain an instance of the JavaScript precompiler. + * + * @return The JavaScript precompiler. + */ + public fun precompiler(): JavaScriptPrecompiler = JavaScriptPrecompiler + /** Initialize the JavaScript language layer. */ public fun initialize() { if (initialized.compareAndSet(expect = false, update = true)) { diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JavaScriptPrecompiler.kt b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptPrecompiler.kt similarity index 66% rename from packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JavaScriptPrecompiler.kt rename to packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptPrecompiler.kt index 5c53746de..b8aed9876 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JavaScriptPrecompiler.kt +++ b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptPrecompiler.kt @@ -10,9 +10,12 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ -package elide.runtime.gvm.js +package elide.runtime.lang.javascript +import org.graalvm.nativeimage.ImageInfo +import kotlinx.atomicfu.atomic import elide.annotations.API +import elide.runtime.core.lib.NativeLibraries import elide.runtime.diag.Diagnostics import elide.runtime.diag.DiagnosticsContainer import elide.runtime.precompiler.Precompiler @@ -28,17 +31,46 @@ private const val TOOL_PRECOMPILER = "precompiler" * * Bridges via JNI to the OXC parsing and code-generator tools. */ -@API public object JavaScriptPrecompiler : Precompiler.SourcePrecompiler { +@API +public object JavaScriptPrecompiler : Precompiler.SourcePrecompiler { + private const val JS_LIB = "js" + private const val EAGER_INIT = true + private val initialized = atomic(false) + @Volatile private var libDidLoad = false + + internal fun initialize() { + if (!initialized.value) { + synchronized(this) { + NativeLibraries.resolve(JS_LIB) { didLoad: Boolean -> + initialized.value = true + libDidLoad = didLoad + } + if (!libDidLoad) error( + "Failed to load JavaScript parser library ('libjs.so' / 'libjs.a')" + ) + } + } + } + + init { + if (EAGER_INIT && ImageInfo.inImageCode()) { + initialize() + } + } + @Suppress("TooGenericExceptionCaught") override fun invoke(req: PrecompileSourceRequest, input: String): String? = try { + if (!ImageInfo.inImageCode()) { + initialize() + } precompile(req.source.name, input).also { // after running the precompiler, consume all matching diagnostics (if present), and throw them back to the caller if (Diagnostics.dirty(LANG_TAG_JS)) Diagnostics.query(LANG_TAG_JS, TOOL_PRECOMPILER, true).let { diag -> - PrecompilerNotice.from(DiagnosticsContainer.from(diag)) + PrecompilerNotice.Companion.from(DiagnosticsContainer.Companion.from(diag)) } } - } catch (err: RuntimeException) { - throw PrecompilerError("Failed to precompile JavaScript source", err) + } catch (err: Throwable) { + throw PrecompilerError("Precompile failed: ${err.javaClass.simpleName} ${err.message}", err) } /** diff --git a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/OxcParserFeature.kt b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/OxcParserFeature.kt new file mode 100644 index 000000000..9802a94e7 --- /dev/null +++ b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/OxcParserFeature.kt @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2024-2025 Elide Technologies, Inc. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ +@file:Suppress("SpreadOperator") + +package elide.runtime.lang.javascript + +import org.graalvm.nativeimage.hosted.Feature +import kotlin.io.path.Path +import elide.annotations.engine.VMFeature +import elide.runtime.core.lib.NativeLibraries +import elide.runtime.feature.NativeLibraryFeature.NativeLibInfo +import elide.runtime.feature.engine.AbstractStaticNativeLibraryFeature + +/** + * ## OXC Parser Feature + * + * Configures native JavaScript/TypeScript parsing and compilation via Oxc. + */ +@VMFeature public class OxcParserFeature : AbstractStaticNativeLibraryFeature() { + private companion object { + private const val LIB_JS = "js" + private val precompiler = arrayOf( + "elide.runtime.lang.javascript.JavaScriptPrecompiler", + ) + + private val libjs_a = Path(System.getProperty("elide.natives")).resolve("lib$LIB_JS.a") + private val libjs_so = Path(System.getProperty("elide.natives")).resolve("lib$LIB_JS.so") + private val libjs_dylib = Path(System.getProperty("elide.natives")).resolve("lib$LIB_JS.dylib") + } + + override fun getDescription(): String = "Configures native JavaScript/TypeScript parsing via Oxc" + + override fun nativeLibs(access: Feature.BeforeAnalysisAccess): List = listOf( + nativeLibrary( + darwin = libraryNamed( + LIB_JS, + *precompiler, + builtin = true, + initializer = true, + absolutePath = libjs_a, + absoluteLibs = (libjs_a to libjs_dylib), + ), + linux = libraryNamed( + LIB_JS, + *precompiler, + builtin = true, + initializer = true, + absolutePath = libjs_a, + absoluteLibs = (libjs_a to libjs_so), + ), + ) + ) + + override fun beforeAnalysis(access: Feature.BeforeAnalysisAccess) { + super.beforeAnalysis(access) + NativeLibraries.resolve(LIB_JS) { didLoad: Boolean -> + assert(didLoad) { "Failed to load `libjs.so` at build-time" } + } + } +} diff --git a/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/facade.js b/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/facade.js similarity index 100% rename from packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/facade.js rename to packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/facade.js diff --git a/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/js.vfs.tar b/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/js.vfs.tar new file mode 100755 index 000000000..3e18dd90e Binary files /dev/null and b/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/js.vfs.tar differ diff --git a/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/polyfills.js b/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/polyfills.js similarity index 100% rename from packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/polyfills.js rename to packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/polyfills.js diff --git a/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.current.json b/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.current.json similarity index 72% rename from packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.current.json rename to packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.current.json index 929a6b285..1c0c3f37e 100644 --- a/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.current.json +++ b/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.current.json @@ -2,7 +2,7 @@ "engine": "v4", "language": "JAVASCRIPT", "vfs": [ - { "name": "js.modules.tar" } + { "name": "js.vfs.tar" } ], "artifacts": [], "image": {}, @@ -10,6 +10,6 @@ { "path": "polyfills.js" } ], "bundles": [ - { "path": "js.modules.tar" } + { "path": "js.vfs.tar" } ] } diff --git a/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.json.gz b/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.json.gz new file mode 100644 index 000000000..3a4cfbf0a Binary files /dev/null and b/packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.json.gz differ diff --git a/packages/graalvm-js/src/main/resources/META-INF/native-image/dev.elide/elide-graalvm-js/native-image.properties b/packages/graalvm-js/src/main/resources/META-INF/native-image/dev.elide/elide-graalvm-js/native-image.properties new file mode 100644 index 000000000..f8248c8e4 --- /dev/null +++ b/packages/graalvm-js/src/main/resources/META-INF/native-image/dev.elide/elide-graalvm-js/native-image.properties @@ -0,0 +1,14 @@ +# +# Copyright (c) 2024 Elide Technologies, Inc. +# +# Licensed under the MIT license (the "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://opensource.org/license/mit/ +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under the License. +# + +Args = --features=elide.runtime.lang.javascript.OxcParserFeature diff --git a/packages/graalvm-kt/build.gradle.kts b/packages/graalvm-kt/build.gradle.kts index d63a5a841..73de39342 100644 --- a/packages/graalvm-kt/build.gradle.kts +++ b/packages/graalvm-kt/build.gradle.kts @@ -63,6 +63,7 @@ dependencies { kapt(libs.graalvm.truffle.processor) implementation(projects.packages.graalvmJvm) + implementation(libs.kotlinx.atomicfu) implementation(libs.kotlin.scripting.jvm) implementation(libs.kotlin.scripting.jvm.host) implementation(libs.kotlin.scripting.compiler) diff --git a/packages/graalvm-ts/api/graalvm-ts.api b/packages/graalvm-ts/api/graalvm-ts.api index 6612820c1..d6cc1884b 100644 --- a/packages/graalvm-ts/api/graalvm-ts.api +++ b/packages/graalvm-ts/api/graalvm-ts.api @@ -19,9 +19,18 @@ public class elide/runtime/lang/typescript/TypeScriptLanguage : com/oracle/truff protected fun finalizeContext (Lcom/oracle/truffle/js/runtime/JSRealm;)V protected synthetic fun finalizeContext (Ljava/lang/Object;)V protected fun parse (Lcom/oracle/truffle/api/TruffleLanguage$ParsingRequest;)Lcom/oracle/truffle/api/CallTarget; + protected fun patchContext (Lcom/oracle/truffle/js/runtime/JSRealm;Lcom/oracle/truffle/api/TruffleLanguage$Env;)Z + protected synthetic fun patchContext (Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleLanguage$Env;)Z } -public class elide/runtime/lang/typescript/TypeScriptLanguage$TypeScriptLoaderFactory : elide/runtime/lang/javascript/DelegatedModuleLoaderRegistry$DelegateFactory { +public class elide/runtime/lang/typescript/TypeScriptLanguage$TypeScriptCompilerLoaderFactory : elide/runtime/lang/javascript/DelegatedModuleLoaderRegistry$DelegateFactory { + public fun (Lelide/runtime/lang/typescript/TypeScriptLanguage;)V + public fun invoke (Lcom/oracle/truffle/js/runtime/JSRealm;)Lcom/oracle/truffle/js/runtime/objects/JSModuleLoader; + public fun test (Lelide/runtime/lang/javascript/DelegatedModuleLoaderRegistry$DelegatedModuleRequest;)Z + public synthetic fun test (Ljava/lang/Object;)Z +} + +public class elide/runtime/lang/typescript/TypeScriptLanguage$TypeScriptPrecompiledLoaderFactory : elide/runtime/lang/javascript/DelegatedModuleLoaderRegistry$DelegateFactory { public fun (Lelide/runtime/lang/typescript/TypeScriptLanguage;)V public fun invoke (Lcom/oracle/truffle/js/runtime/JSRealm;)Lcom/oracle/truffle/js/runtime/objects/JSModuleLoader; public fun test (Lelide/runtime/lang/javascript/DelegatedModuleLoaderRegistry$DelegatedModuleRequest;)Z @@ -54,3 +63,10 @@ public final class elide/runtime/typescript/TypeScriptFeature : org/graalvm/nati public fun getDescription ()Ljava/lang/String; } +public final class elide/runtime/typescript/TypeScriptPrecompiler : elide/runtime/precompiler/Precompiler$SourcePrecompiler { + public static final field INSTANCE Lelide/runtime/typescript/TypeScriptPrecompiler; + public synthetic fun invoke (Lelide/runtime/precompiler/Precompiler$PrecompileSourceRequest;Ljava/lang/Object;)Ljava/lang/Object; + public fun invoke (Lelide/runtime/precompiler/Precompiler$PrecompileSourceRequest;Ljava/lang/String;)Ljava/lang/String; + public static final fun obtain ()Lelide/runtime/typescript/TypeScriptPrecompiler; +} + diff --git a/packages/graalvm-ts/build.gradle.kts b/packages/graalvm-ts/build.gradle.kts index 020f436e9..76ba13ff5 100644 --- a/packages/graalvm-ts/build.gradle.kts +++ b/packages/graalvm-ts/build.gradle.kts @@ -13,6 +13,7 @@ import elide.internal.conventions.kotlin.KotlinTarget import elide.internal.conventions.publishing.publish +import elide.toolchain.host.TargetInfo plugins { alias(libs.plugins.micronaut.graalvm) @@ -63,7 +64,45 @@ dependencies { testImplementation(project(":packages:graalvm", configuration = "testBase")) } +val elideTarget = TargetInfo.current(project) + +val quickbuild = ( + properties["elide.release"] != "true" || + properties["elide.buildMode"] == "dev" + ) + +val isRelease = !quickbuild && ( + properties["elide.release"] == "true" || + properties["elide.buildMode"] == "release" + ) + +val nativesType = if (isRelease) "release" else "debug" + +val umbrellaNativesPath: String = + rootProject.layout.projectDirectory.dir("target/${elideTarget.triple}/$nativesType") + .asFile + .path +val nativesPath = umbrellaNativesPath +val targetSqliteDir = rootProject.layout.projectDirectory.dir("third_party/sqlite/install") +val targetSqliteLibDir = targetSqliteDir.dir("lib") + +val javaLibPath = provider { + StringBuilder().apply { + append(nativesPath) + append(File.pathSeparator) + append(targetSqliteLibDir) + System.getProperty("java.library.path", "").let { + if (it.isNotEmpty()) { + append(File.pathSeparator) + append(it) + } + } + } +} + tasks { + checkNatives(test) + jar.configure { exclude("**/runtime.current.json") } @@ -73,6 +112,7 @@ tasks { maxParallelForks = 4 environment("ELIDE_TEST", "true") systemProperty("elide.test", "true") + systemProperty("java.library.path", javaLibPath.get()) } } diff --git a/packages/graalvm-ts/package.json b/packages/graalvm-ts/package.json index 99956e1d6..c413a6d09 100644 --- a/packages/graalvm-ts/package.json +++ b/packages/graalvm-ts/package.json @@ -6,6 +6,6 @@ "@typescript/vfs": "1.6.1", "esbuild": "0.25.0", "lz-string": "1.5.0", - "typescript": "5.7.3" + "typescript": "5.8.2" } } diff --git a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/AbstractTypeScriptLoader.java b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/AbstractTypeScriptLoader.java new file mode 100644 index 000000000..39f78beb8 --- /dev/null +++ b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/AbstractTypeScriptLoader.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2024-2025 Elide Technologies, Inc. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ +package elide.runtime.lang.typescript; + +import com.oracle.js.parser.ir.Module; +import com.oracle.truffle.api.TruffleFile; +import com.oracle.truffle.api.source.Source; +import com.oracle.truffle.api.strings.TruffleString; +import com.oracle.truffle.js.builtins.commonjs.NpmCompatibleESModuleLoader; +import com.oracle.truffle.js.runtime.JSException; +import com.oracle.truffle.js.runtime.JSRealm; +import com.oracle.truffle.js.runtime.objects.JSModuleData; +import com.oracle.truffle.js.runtime.objects.JSModuleRecord; +import com.oracle.truffle.js.runtime.objects.ScriptOrModule; +import java.io.IOException; +import org.jetbrains.annotations.NotNull; + +abstract class AbstractTypeScriptLoader extends NpmCompatibleESModuleLoader { + protected AbstractTypeScriptLoader(JSRealm realm) { + super(realm); + } + + @Override + @NotNull public JSModuleRecord resolveImportedModule( + ScriptOrModule referrer, com.oracle.js.parser.ir.Module.ModuleRequest moduleRequest) { + try { + return super.resolveImportedModule(referrer, moduleRequest); + } catch (JSException e1) { + var originalSpecifier = moduleRequest.getSpecifier().toJavaStringUncached(); + var specifier = originalSpecifier + ".ts"; + var specifierTS = + TruffleString.fromJavaStringUncached(specifier, TruffleString.Encoding.UTF_8); + var tsModuleRequest = + com.oracle.js.parser.ir.Module.ModuleRequest.create( + specifierTS, moduleRequest.getAttributes()); + + try { + return super.resolveImportedModule(referrer, tsModuleRequest); + } catch (JSException e2) { + specifier = originalSpecifier + "/index.ts"; + specifierTS = TruffleString.fromJavaStringUncached(specifier, TruffleString.Encoding.UTF_8); + tsModuleRequest = Module.ModuleRequest.create(specifierTS, moduleRequest.getAttributes()); + return super.resolveImportedModule(referrer, tsModuleRequest); + } + } + } + + @Override + @NotNull public JSModuleRecord loadModule(Source source, JSModuleData moduleData) { + return super.loadModule(source, moduleData); + } + + @Override + @NotNull protected JSModuleRecord loadModuleFromUrl( + ScriptOrModule referrer, + Module.ModuleRequest moduleRequest, + TruffleFile maybeModuleFile, + String maybeCanonicalPath) + throws IOException { + var maybeModuleFilePath = maybeModuleFile.getPath(); + //noinspection ConstantValue + if (maybeModuleFile != null + && maybeModuleFile.exists() + && maybeModuleFilePath.endsWith(".ts")) { + var canonicalPath = maybeModuleFile.getCanonicalFile().getPath(); + var maybeModuleMapEntry = moduleMap.get(canonicalPath); + if (maybeModuleMapEntry != null) { + return maybeModuleMapEntry; + } + + Source source = transpileModule(referrer, moduleRequest, maybeModuleFile, canonicalPath); + JSModuleData parsedModule = realm.getContext().getEvaluator().envParseModule(realm, source); + var module = new JSModuleRecord(parsedModule, this); + moduleMap.put(canonicalPath, module); + return module; + } + return super.loadModuleFromUrl(referrer, moduleRequest, maybeModuleFile, maybeCanonicalPath); + } + + @NotNull abstract Source transpileModule( + ScriptOrModule referrer, Module.ModuleRequest request, TruffleFile maybeFile, String name) + throws IOException; + + @NotNull abstract Source transpileSource(@NotNull Source sourceFile) throws IOException; +} diff --git a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptLanguage.java b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptLanguage.java index a5bdd1206..b6742e0ad 100644 --- a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptLanguage.java +++ b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptLanguage.java @@ -23,6 +23,8 @@ import com.oracle.truffle.js.runtime.JSRealm; import com.oracle.truffle.js.runtime.objects.JSModuleLoader; import elide.runtime.lang.javascript.DelegatedModuleLoaderRegistry; +import elide.runtime.typescript.TypeScriptPrecompiler; +import java.io.IOException; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import org.graalvm.polyglot.SandboxPolicy; @@ -56,6 +58,7 @@ TypeScriptLanguage.MODULE_MIME_TYPE }) public class TypeScriptLanguage extends TruffleLanguage { + private static final Boolean USE_NEXTGEN_TYPESCRIPT_PRECOMPILER = true; public static final String TEXT_MIME_TYPE = "text/typescript"; public static final String APPLICATION_MIME_TYPE = "application/typescript"; public static final String MODULE_MIME_TYPE = "application/typescript+module"; @@ -68,48 +71,114 @@ public class TypeScriptLanguage extends TruffleLanguage { @CompilerDirectives.CompilationFinal private volatile TypeScriptCompiler tsCompiler = null; + @CompilerDirectives.CompilationFinal private volatile TypeScriptPrecompiler tsPrecompiler = null; + + @CompilerDirectives.CompilationFinal + private volatile TypeScriptPrecompiledLoaderFactory tsLoaderFactory = null; + + @CompilerDirectives.CompilationFinal private volatile TypeScriptPrecompiledLoader tsLoader = null; + private final AtomicBoolean compilerInitialized = new AtomicBoolean(false); private Env env; - public class TypeScriptLoaderFactory implements DelegatedModuleLoaderRegistry.DelegateFactory { + @Deprecated + public class TypeScriptCompilerLoaderFactory + implements DelegatedModuleLoaderRegistry.DelegateFactory { @Override public @NotNull JSModuleLoader invoke(@NotNull JSRealm realm) { + assert tsCompiler != null; return new TypeScriptModuleLoader(realm, tsCompiler); } @Override public boolean test( DelegatedModuleLoaderRegistry.DelegatedModuleRequest delegatedModuleRequest) { - return false; + var src = delegatedModuleRequest.source(); + return ((src != null && src.hasCharacters() && ID.equals(src.getLanguage()))); } } - @Override - protected JSRealm createContext(Env currentEnv) { - CompilerAsserts.neverPartOfCompilation(); - var js = JavaScriptLanguage.getCurrentLanguage(); + public class TypeScriptPrecompiledLoaderFactory + implements DelegatedModuleLoaderRegistry.DelegateFactory { + @Override + public @NotNull JSModuleLoader invoke(@NotNull JSRealm realm) { + assert tsPrecompiler != null; + return new TypeScriptPrecompiledLoader(realm, tsPrecompiler); + } + + @Override + public boolean test( + DelegatedModuleLoaderRegistry.DelegatedModuleRequest delegatedModuleRequest) { + var src = delegatedModuleRequest.source(); + return ((src != null && src.hasCharacters() && ID.equals(src.getLanguage()))); + } + } + + private void initializeJsRealm(Env currentEnv) { LanguageInfo jsInfo = currentEnv.getInternalLanguages().get("js"); currentEnv.initializeLanguage(jsInfo); + } + + private @NotNull JSRealm createContextForTscBasedEngine(Env currentEnv) { + initializeJsRealm(currentEnv); var jsEnv = JavaScriptLanguage.getCurrentEnv(); if (!compilerInitialized.get()) { compilerInitialized.compareAndSet(false, true); - tsCompiler = TypeScriptCompiler.obtain(jsEnv); env = jsEnv; - DelegatedModuleLoaderRegistry.register(new TypeScriptLoaderFactory()); + tsCompiler = TypeScriptCompiler.obtain(jsEnv); + DelegatedModuleLoaderRegistry.register(new TypeScriptCompilerLoaderFactory()); } + var js = JavaScriptLanguage.getCurrentLanguage(); var ctx = JSEngine.createJSContext(js, jsEnv); return ctx.createRealm(jsEnv); } + private @NotNull JSRealm createContextForNativeEngine(Env currentEnv) { + initializeJsRealm(currentEnv); + var jsEnv = JavaScriptLanguage.getCurrentEnv(); + var js = JavaScriptLanguage.getCurrentLanguage(); + var ctx = JSEngine.createJSContext(js, jsEnv); + var realm = ctx.createRealm(jsEnv); + if (!compilerInitialized.get()) { + compilerInitialized.compareAndSet(false, true); + env = jsEnv; + tsPrecompiler = TypeScriptPrecompiler.obtain(); + tsLoader = new TypeScriptPrecompiledLoader(realm, tsPrecompiler); + tsLoaderFactory = new TypeScriptPrecompiledLoaderFactory(); + DelegatedModuleLoaderRegistry.register(tsLoaderFactory); + } + return realm; + } + + @Override + protected @NotNull JSRealm createContext(Env currentEnv) { + CompilerAsserts.neverPartOfCompilation(); + if (USE_NEXTGEN_TYPESCRIPT_PRECOMPILER) { + return createContextForNativeEngine(currentEnv); + } else { + return createContextForTscBasedEngine(currentEnv); + } + } + @Override protected void finalizeContext(JSRealm context) { super.finalizeContext(context); - tsCompiler.close(); + if (tsCompiler != null) { + tsCompiler.close(); + } } - @TruffleBoundary - @Override - protected CallTarget parse(ParsingRequest parsingRequest) { + private CallTarget parseWithNativeEngine(ParsingRequest parsingRequest) throws IOException { + assert tsPrecompiler != null; + List argumentNames = parsingRequest.getArgumentNames(); + Source tsSource = parsingRequest.getSource(); + Source jsSource = tsLoader.transpileSource(tsSource); + var parsed = (RootCallTarget) env.parseInternal(jsSource, argumentNames.toArray(new String[0])); + return parsed.getRootNode().getCallTarget(); + } + + private CallTarget parseWithTscEngine(ParsingRequest parsingRequest) { + assert tsCompiler != null; Source tsSource = parsingRequest.getSource(); Source jsSource = tsCompiler.compileToNewSource( @@ -118,4 +187,18 @@ protected CallTarget parse(ParsingRequest parsingRequest) { var parsed = (RootCallTarget) env.parseInternal(jsSource, argumentNames.toArray(new String[0])); return parsed.getRootNode().getCallTarget(); } + + @TruffleBoundary + @Override + protected CallTarget parse(ParsingRequest parsingRequest) throws IOException { + if (!USE_NEXTGEN_TYPESCRIPT_PRECOMPILER) { + return parseWithTscEngine(parsingRequest); + } + return parseWithNativeEngine(parsingRequest); + } + + @Override + protected boolean patchContext(JSRealm context, Env newEnv) { + return true; + } } diff --git a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptModuleLoader.java b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptModuleLoader.java index 54d47ccf7..210b92261 100644 --- a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptModuleLoader.java +++ b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptModuleLoader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -15,17 +15,14 @@ import com.oracle.js.parser.ir.Module; import com.oracle.truffle.api.TruffleFile; import com.oracle.truffle.api.source.Source; -import com.oracle.truffle.api.strings.TruffleString; -import com.oracle.truffle.js.runtime.JSException; import com.oracle.truffle.js.runtime.JSRealm; -import com.oracle.truffle.js.runtime.objects.DefaultESModuleLoader; -import com.oracle.truffle.js.runtime.objects.JSModuleData; -import com.oracle.truffle.js.runtime.objects.JSModuleRecord; import com.oracle.truffle.js.runtime.objects.ScriptOrModule; import java.io.IOException; import java.nio.charset.StandardCharsets; +import org.jetbrains.annotations.NotNull; -class TypeScriptModuleLoader extends DefaultESModuleLoader { +@Deprecated +class TypeScriptModuleLoader extends AbstractTypeScriptLoader { private final TypeScriptCompiler tsCompiler; public TypeScriptModuleLoader(JSRealm realm, TypeScriptCompiler tsCompiler) { @@ -34,57 +31,16 @@ public TypeScriptModuleLoader(JSRealm realm, TypeScriptCompiler tsCompiler) { } @Override - public JSModuleRecord resolveImportedModule( - ScriptOrModule referrer, Module.ModuleRequest moduleRequest) { - try { - return super.resolveImportedModule(referrer, moduleRequest); - } catch (JSException e1) { - var originalSpecifier = moduleRequest.getSpecifier().toJavaStringUncached(); - var specifier = originalSpecifier + ".ts"; - var specifierTS = - TruffleString.fromJavaStringUncached(specifier, TruffleString.Encoding.UTF_8); - var tsModuleRequest = Module.ModuleRequest.create(specifierTS, moduleRequest.getAttributes()); - - try { - return super.resolveImportedModule(referrer, tsModuleRequest); - } catch (JSException e2) { - specifier = originalSpecifier + "/index.ts"; - specifierTS = TruffleString.fromJavaStringUncached(specifier, TruffleString.Encoding.UTF_8); - tsModuleRequest = Module.ModuleRequest.create(specifierTS, moduleRequest.getAttributes()); - return super.resolveImportedModule(referrer, tsModuleRequest); - } - } - } - - @Override - protected JSModuleRecord loadModuleFromUrl( - ScriptOrModule referrer, - Module.ModuleRequest moduleRequest, - TruffleFile maybeModuleFile, - String maybeCanonicalPath) + @NotNull Source transpileModule( + ScriptOrModule referrer, Module.ModuleRequest request, TruffleFile maybeFile, String name) throws IOException { - var maybeModuleFilePath = maybeModuleFile.getPath(); - if (maybeModuleFile.exists() && maybeModuleFilePath.endsWith(".ts")) { - var canonicalPath = maybeModuleFile.getCanonicalFile().getPath(); - var maybeModuleMapEntry = moduleMap.get(canonicalPath); - if (maybeModuleMapEntry != null) { - return maybeModuleMapEntry; - } - - var content = new String(maybeModuleFile.readAllBytes(), StandardCharsets.UTF_8); - Source source = - tsCompiler.compileToNewSource( - content, moduleRequest.getSpecifier().toJavaStringUncached(), true, canonicalPath); - JSModuleData parsedModule = realm.getContext().getEvaluator().envParseModule(realm, source); - var module = new JSModuleRecord(parsedModule, this); - moduleMap.put(canonicalPath, module); - return module; - } - return super.loadModuleFromUrl(referrer, moduleRequest, maybeModuleFile, maybeCanonicalPath); + var content = new String(maybeFile.readAllBytes(), StandardCharsets.UTF_8); + return tsCompiler.compileToNewSource( + content, request.getSpecifier().toJavaStringUncached(), true, name); } @Override - public JSModuleRecord loadModule(Source source, JSModuleData moduleData) { - return super.loadModule(source, moduleData); + @NotNull Source transpileSource(@NotNull Source sourceFile) { + throw new UnsupportedOperationException("V1 TypeScript implementation only uses modules"); } } diff --git a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptPrecompiledLoader.java b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptPrecompiledLoader.java new file mode 100644 index 000000000..e1dbb0280 --- /dev/null +++ b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptPrecompiledLoader.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2024-2025 Elide Technologies, Inc. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ +package elide.runtime.lang.typescript; + +import com.oracle.js.parser.ir.Module; +import com.oracle.truffle.api.TruffleFile; +import com.oracle.truffle.api.source.Source; +import com.oracle.truffle.js.runtime.JSRealm; +import com.oracle.truffle.js.runtime.objects.ScriptOrModule; +import elide.runtime.lang.javascript.JavaScriptCompilerConfig; +import elide.runtime.precompiler.Precompiler; +import elide.runtime.typescript.TypeScriptPrecompiler; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import javax.annotation.Nullable; +import org.jetbrains.annotations.NotNull; + +class TypeScriptPrecompiledLoader extends AbstractTypeScriptLoader { + private final TypeScriptPrecompiler precompiler; + + public TypeScriptPrecompiledLoader(JSRealm realm, TypeScriptPrecompiler precompiler) { + super(realm); + this.precompiler = precompiler; + } + + @Override + @NotNull Source transpileModule( + ScriptOrModule referrer, Module.ModuleRequest request, TruffleFile maybeFile, String name) + throws IOException { + var path = Paths.get(maybeFile.getPath()); + var content = new String(maybeFile.readAllBytes(), StandardCharsets.UTF_8); + String transpiled = transpileSource(name, content, path); + return Source.newBuilder("js", transpiled, name).build(); + } + + @Override + @NotNull Source transpileSource(@NotNull Source sourceFile) throws IOException { + var name = sourceFile.getName(); + var path = sourceFile.getPath() != null ? Paths.get(sourceFile.getPath()) : null; + var chars = sourceFile.getCharacters(); + if (chars == null) { + if (path == null) { + throw new IllegalStateException("Source file has no path or characters"); + } + chars = Files.readString(path); + } + var transpiled = transpileSource(name, chars, path); + return Source.newBuilder("js", transpiled, name).build(); + } + + private @NotNull String transpileSource( + @NotNull String name, @NotNull CharSequence source, @Nullable Path path) { + var config = JavaScriptCompilerConfig.getDEFAULT(); + var info = new Precompiler.PrecompileSourceInfo(name, path); + var req = new Precompiler.PrecompileSourceRequest<>(info, config); + String transpiled = precompiler.invoke(req, (String) source); + assert transpiled != null; + return transpiled; + } +} diff --git a/packages/graalvm-ts/src/main/kotlin/elide/runtime/typescript/TypeScriptFeature.kt b/packages/graalvm-ts/src/main/kotlin/elide/runtime/typescript/TypeScriptFeature.kt index 8b2013851..49cae6c2f 100644 --- a/packages/graalvm-ts/src/main/kotlin/elide/runtime/typescript/TypeScriptFeature.kt +++ b/packages/graalvm-ts/src/main/kotlin/elide/runtime/typescript/TypeScriptFeature.kt @@ -16,6 +16,7 @@ package elide.runtime.typescript import org.graalvm.nativeimage.hosted.Feature import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import org.graalvm.nativeimage.hosted.RuntimeClassInitialization +import elide.annotations.engine.VMFeature import elide.runtime.lang.typescript.TypeScriptCompiler import elide.runtime.lang.typescript.TypeScriptLanguage @@ -24,7 +25,7 @@ import elide.runtime.lang.typescript.TypeScriptLanguage * * Configures the GraalVM Native Image compiler to support Elide's TypeScript layer. */ -public class TypeScriptFeature : Feature { +@VMFeature public class TypeScriptFeature : Feature { override fun getDescription(): String = "Enables TypeScript support in Elide" override fun beforeAnalysis(access: BeforeAnalysisAccess?) { diff --git a/packages/graalvm-ts/src/main/kotlin/elide/runtime/typescript/TypeScriptPrecompiler.kt b/packages/graalvm-ts/src/main/kotlin/elide/runtime/typescript/TypeScriptPrecompiler.kt new file mode 100644 index 000000000..5cc516032 --- /dev/null +++ b/packages/graalvm-ts/src/main/kotlin/elide/runtime/typescript/TypeScriptPrecompiler.kt @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024-2025 Elide Technologies, Inc. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + +package elide.runtime.typescript + +import kotlin.with +import elide.runtime.lang.javascript.JavaScriptCompilerConfig +import elide.runtime.lang.javascript.JavaScriptLang.precompiler +import elide.runtime.precompiler.Precompiler +import elide.runtime.precompiler.Precompiler.PrecompileSourceRequest + +/** + * ## TypeScript Precompiler + * + * Implements Elide's [Precompiler] interface for native TypeScript execution; this interface uses OXC via Elide's Rust + * layer to strip TypeScript types and transpile where necessary (e.g. TSX). + */ +public object TypeScriptPrecompiler : Precompiler.SourcePrecompiler { + override fun invoke(req: PrecompileSourceRequest, input: String): String? { + // use the regular js precompiler + return with(precompiler()) { invoke(req, input) } + } + + @JvmStatic public fun obtain(): TypeScriptPrecompiler = TypeScriptPrecompiler +} diff --git a/packages/graalvm-ts/src/test/kotlin/elide/runtime/lang/typescript/TypeScriptLanguageTest.kt b/packages/graalvm-ts/src/test/kotlin/elide/runtime/lang/typescript/TypeScriptLanguageTest.kt index 44aba747d..18f23c66d 100644 --- a/packages/graalvm-ts/src/test/kotlin/elide/runtime/lang/typescript/TypeScriptLanguageTest.kt +++ b/packages/graalvm-ts/src/test/kotlin/elide/runtime/lang/typescript/TypeScriptLanguageTest.kt @@ -5,6 +5,7 @@ import org.graalvm.polyglot.Engine import org.graalvm.polyglot.PolyglotAccess import org.graalvm.polyglot.Source import org.graalvm.polyglot.io.IOAccess +import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.assertDoesNotThrow import kotlin.test.* @@ -77,4 +78,13 @@ class TypeScriptLanguageTest { assertTrue(result.isNumber, "result should be a number") assertEquals(42, result.asInt(), "result should be 42") } + companion object { + @BeforeAll @JvmStatic fun load() { + try { + System.loadLibrary("js") + } catch (e: UnsatisfiedLinkError) { + throw IllegalStateException("Could not load library 'js'", e) + } + } + } } diff --git a/packages/graalvm/api/graalvm.api b/packages/graalvm/api/graalvm.api index 8ba943ae5..d4ff9b8a6 100644 --- a/packages/graalvm/api/graalvm.api +++ b/packages/graalvm/api/graalvm.api @@ -1,6 +1,3 @@ -public abstract interface annotation class elide/annotations/internal/VMFeature : java/lang/annotation/Annotation { -} - public final class elide/runtime/core/EngineFactoryKt { public static final fun PolyglotEngine (Lkotlin/jvm/functions/Function1;)Lelide/runtime/core/PolyglotEngine; public static synthetic fun PolyglotEngine$default (Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lelide/runtime/core/PolyglotEngine; @@ -37,6 +34,7 @@ public final class elide/runtime/core/internals/graalvm/GraalVMContext : elide/r public fun leave ()V public fun parse (Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value; public fun set-HRLGfaQ (Ljava/lang/String;Ljava/lang/Object;)Z + public fun unwrap ()Lorg/graalvm/polyglot/Context; } public final class elide/runtime/core/internals/graalvm/GraalVMEngine : elide/runtime/core/PolyglotEngine { @@ -75,105 +73,6 @@ public final class elide/runtime/core/internals/graalvm/GraalVMRuntimeKt { public static final fun isNativeImage (Lelide/runtime/core/HostRuntime;)Z } -public abstract interface class elide/runtime/feature/FrameworkFeature : org/graalvm/nativeimage/hosted/Feature { - public fun findClassesInJar (Ljava/net/JarURLConnection;Ljava/lang/String;)Ljava/util/List; - public abstract fun getDescription ()Ljava/lang/String; - public fun getMethodOrFail (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; - public fun getURL ()Ljava/lang/String; - public fun logging ()Lelide/runtime/Logger; - public fun registerClassForReflection (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V - public fun registerClassHierarchyForReflection (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V - public fun registerConstructorsForReflection (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V - public fun registerForReflectiveInstantiation (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V - public fun registerForUnsafeFieldAccess (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;[Ljava/lang/String;)V - public fun registerPackageForReflection (Lorg/graalvm/nativeimage/hosted/Feature$FeatureAccess;Ljava/lang/String;)V -} - -public abstract interface class elide/runtime/feature/NativeLibraryFeature : elide/runtime/feature/FrameworkFeature { -} - -public final class elide/runtime/feature/NativeLibraryFeature$NativeLibInfo : java/lang/Record { - public static final field Companion Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo$Companion; - public fun (Ljava/lang/String;Ljava/util/List;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;ZLjava/util/List;)V - public synthetic fun (Ljava/lang/String;Ljava/util/List;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;ZLjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun absolutePath ()Ljava/nio/file/Path; - public final fun builtin ()Z - public final fun component1 ()Ljava/lang/String; - public final fun component10 ()Z - public final fun component11 ()Ljava/util/List; - public final fun component2 ()Ljava/util/List; - public final fun component3 ()Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; - public final fun component4 ()Ljava/lang/String; - public final fun component5 ()Z - public final fun component6 ()Z - public final fun component7 ()Z - public final fun component8 ()Z - public final fun component9 ()Ljava/nio/file/Path; - public final fun copy (Ljava/lang/String;Ljava/util/List;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;ZLjava/util/List;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - public static synthetic fun copy$default (Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Ljava/lang/String;Ljava/util/List;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;ZLjava/util/List;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - public final fun deps ()Ljava/util/List; - public final fun eager ()Z - public fun equals (Ljava/lang/Object;)Z - public fun hashCode ()I - public final fun initializer ()Z - public final fun linkName ()Ljava/lang/String; - public final fun name ()Ljava/lang/String; - public static final fun of (Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;ZLjava/util/List;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - public final fun prefix ()Ljava/util/List; - public final fun registerJni ()Z - public final fun registerPrefix ()Z - public fun toString ()Ljava/lang/String; - public final fun type ()Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; -} - -public final class elide/runtime/feature/NativeLibraryFeature$NativeLibInfo$Companion { - public final fun of (Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;ZLjava/util/List;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - public static synthetic fun of$default (Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo$Companion;Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;ZLjava/util/List;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; -} - -public final class elide/runtime/feature/NativeLibraryFeature$NativeLibType : java/lang/Enum { - public static final field SHARED Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; - public static final field STATIC Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; - public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; - public static fun values ()[Lelide/runtime/feature/NativeLibraryFeature$NativeLibType; -} - -public final class elide/runtime/feature/NativeLibraryFeature$UnpackedNative : java/lang/Record { - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/nio/file/Path;)V - public final fun arch ()Ljava/lang/String; - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Ljava/lang/String; - public final fun component3 ()Ljava/lang/String; - public final fun component4 ()Ljava/nio/file/Path; - public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/nio/file/Path;)Lelide/runtime/feature/NativeLibraryFeature$UnpackedNative; - public static synthetic fun copy$default (Lelide/runtime/feature/NativeLibraryFeature$UnpackedNative;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/nio/file/Path;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$UnpackedNative; - public fun equals (Ljava/lang/Object;)Z - public fun hashCode ()I - public final fun name ()Ljava/lang/String; - public final fun path ()Ljava/nio/file/Path; - public final fun resource ()Ljava/lang/String; - public fun toString ()Ljava/lang/String; -} - -public abstract class elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature : elide/runtime/feature/NativeLibraryFeature { - public fun ()V - public fun beforeAnalysis (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;)V - public final fun fields (Ljava/lang/Class;[Ljava/lang/String;)[Ljava/lang/reflect/Field; - public fun getRequiredFeatures ()Ljava/util/List; - protected final fun libraryNamed (Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;ZLjava/util/List;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - public static synthetic fun libraryNamed$default (Lelide/runtime/feature/engine/AbstractStaticNativeLibraryFeature;Ljava/lang/String;[Ljava/lang/String;Lelide/runtime/feature/NativeLibraryFeature$NativeLibType;Ljava/lang/String;ZZZZLjava/nio/file/Path;ZLjava/util/List;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - public final fun method (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; - protected final fun nativeLibrary (Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - protected final fun nativeLibrary (Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - public static synthetic fun nativeLibrary$default (Lelide/runtime/feature/engine/AbstractStaticNativeLibraryFeature;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - public static synthetic fun nativeLibrary$default (Lelide/runtime/feature/engine/AbstractStaticNativeLibraryFeature;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo;ILjava/lang/Object;)Lelide/runtime/feature/NativeLibraryFeature$NativeLibInfo; - public abstract fun nativeLibs (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;)Ljava/util/List; - protected final fun unpackLibrary (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Ljava/util/List; - public static synthetic fun unpackLibrary$default (Lelide/runtime/feature/engine/AbstractStaticNativeLibraryFeature;Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Ljava/util/List; - public fun unpackNatives (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;)Ljava/util/List; -} - public final class elide/runtime/feature/engine/NativeSQLiteFeature : elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature { public fun ()V public fun beforeAnalysis (Lorg/graalvm/nativeimage/hosted/Feature$BeforeAnalysisAccess;)V @@ -262,56 +161,15 @@ public final class elide/runtime/gvm/ExecutionInputs$Empty : elide/runtime/gvm/E public fun allInputs ()[Ljava/lang/Object; } -public class elide/runtime/gvm/GraalVMGuest : java/lang/Enum, elide/runtime/gvm/GuestLanguage { - public static final field JAVASCRIPT Lelide/runtime/gvm/GraalVMGuest; - public static final field JVM Lelide/runtime/gvm/GraalVMGuest; - public static final field PYTHON Lelide/runtime/gvm/GraalVMGuest; - public static final field RUBY Lelide/runtime/gvm/GraalVMGuest; - public static final field WASM Lelide/runtime/gvm/GraalVMGuest; - public fun getEngine ()Ljava/lang/String; - public static fun getEntries ()Lkotlin/enums/EnumEntries; - public fun getLabel ()Ljava/lang/String; - public fun getSymbol ()Ljava/lang/String; - public static fun valueOf (Ljava/lang/String;)Lelide/runtime/gvm/GraalVMGuest; - public static fun values ()[Lelide/runtime/gvm/GraalVMGuest; -} - public abstract interface class elide/runtime/gvm/GuestError { } -public abstract interface class elide/runtime/gvm/GuestLanguage { - public static final field Companion Lelide/runtime/gvm/GuestLanguage$Companion; - public abstract fun getEngine ()Ljava/lang/String; - public fun getInvocationModes ()Ljava/util/EnumSet; - public abstract fun getLabel ()Ljava/lang/String; - public fun getSupportsSSR ()Z - public fun getSupportsStreamingSSR ()Z - public abstract fun getSymbol ()Ljava/lang/String; -} - -public final class elide/runtime/gvm/GuestLanguage$Companion { - public final fun getJAVASCRIPT ()Lelide/runtime/gvm/GuestLanguage; - public final fun getJVM ()Lelide/runtime/gvm/GuestLanguage; - public final fun getPYTHON ()Lelide/runtime/gvm/GuestLanguage; - public final fun getRUBY ()Lelide/runtime/gvm/GuestLanguage; - public final fun getWASM ()Lelide/runtime/gvm/GuestLanguage; -} - public abstract interface class elide/runtime/gvm/GuestScript : elide/runtime/gvm/ExecutableScript { } public abstract interface class elide/runtime/gvm/InvocationBindings { } -public final class elide/runtime/gvm/InvocationMode : java/lang/Enum { - public static final field ASYNC Lelide/runtime/gvm/InvocationMode; - public static final field STREAMING Lelide/runtime/gvm/InvocationMode; - public static final field SYNC Lelide/runtime/gvm/InvocationMode; - public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lelide/runtime/gvm/InvocationMode; - public static fun values ()[Lelide/runtime/gvm/InvocationMode; -} - public abstract interface class elide/runtime/gvm/MicronautRequestExecutionInputs : elide/runtime/gvm/RequestExecutionInputs { public fun path ()Ljava/lang/String; } @@ -1745,41 +1603,11 @@ public final class elide/runtime/gvm/js/JavaScript$Inputs { public static synthetic fun requestState$default (Lelide/ssr/type/RequestState;Ljava/lang/Object;ILjava/lang/Object;)Lelide/runtime/gvm/RequestExecutionInputs; } -public final class elide/runtime/gvm/js/JavaScriptCompilerConfig : elide/runtime/precompiler/Precompiler$Configuration { - public static final field Companion Lelide/runtime/gvm/js/JavaScriptCompilerConfig$Companion; - public fun ()V - public fun (Z)V - public synthetic fun (ZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Z - public final fun copy (Z)Lelide/runtime/gvm/js/JavaScriptCompilerConfig; - public static synthetic fun copy$default (Lelide/runtime/gvm/js/JavaScriptCompilerConfig;ZILjava/lang/Object;)Lelide/runtime/gvm/js/JavaScriptCompilerConfig; - public fun equals (Ljava/lang/Object;)Z - public final fun getSourceMaps ()Z - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final class elide/runtime/gvm/js/JavaScriptCompilerConfig$Companion { - public final fun getDEFAULT ()Lelide/runtime/gvm/js/JavaScriptCompilerConfig; -} - public final class elide/runtime/gvm/js/JavaScriptKt { public static final fun nullvalue ()Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject; public static final fun undefined ()Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject; } -public final class elide/runtime/gvm/js/JavaScriptPrecompiler : elide/runtime/precompiler/Precompiler$SourcePrecompiler { - public static final field INSTANCE Lelide/runtime/gvm/js/JavaScriptPrecompiler; - public synthetic fun invoke (Lelide/runtime/precompiler/Precompiler$PrecompileSourceRequest;Ljava/lang/Object;)Ljava/lang/Object; - public fun invoke (Lelide/runtime/precompiler/Precompiler$PrecompileSourceRequest;Ljava/lang/String;)Ljava/lang/String; -} - -public final class elide/runtime/gvm/js/JavaScriptPrecompiler$Provider : elide/runtime/precompiler/Precompiler$Provider { - public fun ()V - public fun get ()Lelide/runtime/gvm/js/JavaScriptPrecompiler; - public synthetic fun get ()Ljava/lang/Object; -} - public final class elide/runtime/gvm/js/JsError { public static final field INSTANCE Lelide/runtime/gvm/js/JsError; public final fun error (Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/Integer;[Lkotlin/Pair;)Ljava/lang/Void; @@ -3272,7 +3100,7 @@ public abstract interface class elide/runtime/intrinsics/js/node/childProcess/Ch public final class elide/runtime/intrinsics/js/node/childProcess/ExecOptions : java/lang/Record, elide/runtime/intrinsics/js/node/childProcess/IdentityProcOptions { public static final field Companion Lelide/runtime/intrinsics/js/node/childProcess/ExecOptions$Companion; - public synthetic fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component10 ()Ljava/lang/String; public final fun component11 ()Z @@ -3284,8 +3112,6 @@ public final class elide/runtime/intrinsics/js/node/childProcess/ExecOptions : j public final fun component7-FghU774 ()Lkotlin/time/Duration; public final fun component8 ()Ljava/lang/String; public final fun component9 ()I - public final fun copy-tL6_L-A (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;Z)Lelide/runtime/intrinsics/js/node/childProcess/ExecOptions; - public static synthetic fun copy-tL6_L-A$default (Lelide/runtime/intrinsics/js/node/childProcess/ExecOptions;Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZILjava/lang/Object;)Lelide/runtime/intrinsics/js/node/childProcess/ExecOptions; public fun cwdString ()Ljava/lang/String; public final fun cwdUrl ()Lelide/runtime/intrinsics/js/URL; public fun encoding ()Ljava/lang/String; @@ -3327,7 +3153,7 @@ public final class elide/runtime/intrinsics/js/node/childProcess/ExecOptions$Com public final class elide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions : java/lang/Record, elide/runtime/intrinsics/js/node/childProcess/IdentityProcOptions { public static final field Companion Lelide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions$Companion; - public synthetic fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/Object;Lelide/runtime/intrinsics/js/node/childProcess/StdioConfig;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/Object;Lelide/runtime/intrinsics/js/node/childProcess/StdioConfig;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component10 ()Ljava/lang/String; public final fun component11 ()I @@ -3341,8 +3167,6 @@ public final class elide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions public final fun component7 ()Ljava/lang/Integer; public final fun component8 ()Ljava/lang/Integer; public final fun component9-FghU774 ()Lkotlin/time/Duration; - public final fun copy-Xv9CPWA (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/Object;Lelide/runtime/intrinsics/js/node/childProcess/StdioConfig;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;Z)Lelide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions; - public static synthetic fun copy-Xv9CPWA$default (Lelide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions;Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/Object;Lelide/runtime/intrinsics/js/node/childProcess/StdioConfig;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZILjava/lang/Object;)Lelide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions; public fun cwdString ()Ljava/lang/String; public final fun cwdUrl ()Lelide/runtime/intrinsics/js/URL; public fun encoding ()Ljava/lang/String; @@ -3482,7 +3306,7 @@ public abstract interface class elide/runtime/intrinsics/js/node/childProcess/Pr public final class elide/runtime/intrinsics/js/node/childProcess/SpawnOptions : java/lang/Record, elide/runtime/intrinsics/js/node/childProcess/IdentityProcOptions { public static final field Companion Lelide/runtime/intrinsics/js/node/childProcess/SpawnOptions$Companion; - public synthetic fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/String;ZLjava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;ZLkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/String;ZLjava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;ZLkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun argv0 ()Ljava/lang/String; public final fun component1 ()Ljava/lang/String; public final fun component10 ()Z @@ -3499,8 +3323,6 @@ public final class elide/runtime/intrinsics/js/node/childProcess/SpawnOptions : public final fun component7 ()Ljava/lang/Integer; public final fun component8 ()Ljava/lang/Integer; public final fun component9 ()Ljava/lang/String; - public final fun copy-8zoS6qQ (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/String;ZLjava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;ZLkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;Z)Lelide/runtime/intrinsics/js/node/childProcess/SpawnOptions; - public static synthetic fun copy-8zoS6qQ$default (Lelide/runtime/intrinsics/js/node/childProcess/SpawnOptions;Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/String;ZLjava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;ZLkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZILjava/lang/Object;)Lelide/runtime/intrinsics/js/node/childProcess/SpawnOptions; public fun cwdString ()Ljava/lang/String; public final fun cwdUrl ()Lelide/runtime/intrinsics/js/URL; public final fun detached ()Z @@ -3545,7 +3367,7 @@ public final class elide/runtime/intrinsics/js/node/childProcess/SpawnOptions$Co public final class elide/runtime/intrinsics/js/node/childProcess/SpawnSyncOptions : java/lang/Record, elide/runtime/intrinsics/js/node/childProcess/IdentityProcOptions { public static final field Companion Lelide/runtime/intrinsics/js/node/childProcess/SpawnSyncOptions$Companion; - public synthetic fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/Object;Lelide/runtime/intrinsics/js/node/childProcess/StdioConfig;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/Object;Lelide/runtime/intrinsics/js/node/childProcess/StdioConfig;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component10 ()Ljava/lang/String; public final fun component11 ()I @@ -3559,8 +3381,6 @@ public final class elide/runtime/intrinsics/js/node/childProcess/SpawnSyncOption public final fun component7 ()Ljava/lang/Integer; public final fun component8 ()Ljava/lang/Integer; public final fun component9-FghU774 ()Lkotlin/time/Duration; - public final fun copy-Xv9CPWA (Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/Object;Lelide/runtime/intrinsics/js/node/childProcess/StdioConfig;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;Z)Lelide/runtime/intrinsics/js/node/childProcess/SpawnSyncOptions; - public static synthetic fun copy-Xv9CPWA$default (Lelide/runtime/intrinsics/js/node/childProcess/SpawnSyncOptions;Ljava/lang/String;Lelide/runtime/intrinsics/js/URL;Ljava/lang/Object;Lelide/runtime/intrinsics/js/node/childProcess/StdioConfig;Ljava/util/Map;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlin/time/Duration;Ljava/lang/String;ILjava/lang/String;ZILjava/lang/Object;)Lelide/runtime/intrinsics/js/node/childProcess/SpawnSyncOptions; public fun cwdString ()Ljava/lang/String; public final fun cwdUrl ()Lelide/runtime/intrinsics/js/URL; public fun encoding ()Ljava/lang/String; @@ -7821,6 +7641,7 @@ public final class elide/runtime/plugins/js/JavaScriptVersion : java/lang/Enum { public static final field ES2021 Lelide/runtime/plugins/js/JavaScriptVersion; public static final field ES2022 Lelide/runtime/plugins/js/JavaScriptVersion; public static final field ES2023 Lelide/runtime/plugins/js/JavaScriptVersion; + public static final field ES2024 Lelide/runtime/plugins/js/JavaScriptVersion; public static final field ES5 Lelide/runtime/plugins/js/JavaScriptVersion; public static final field ES6 Lelide/runtime/plugins/js/JavaScriptVersion; public static final field LATEST Lelide/runtime/plugins/js/JavaScriptVersion; diff --git a/packages/graalvm/build.gradle.kts b/packages/graalvm/build.gradle.kts index afcb2c2a8..6debf850d 100644 --- a/packages/graalvm/build.gradle.kts +++ b/packages/graalvm/build.gradle.kts @@ -20,11 +20,13 @@ import com.google.protobuf.gradle.id import com.google.protobuf.gradle.proto import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.konan.target.HostManager import kotlinx.benchmark.gradle.JvmBenchmarkTarget import kotlinx.benchmark.gradle.benchmark import elide.internal.conventions.kotlin.KotlinTarget import elide.internal.conventions.native.NativeTarget import elide.internal.conventions.publishing.publish +import elide.toolchain.host.TargetInfo plugins { kotlin("jvm") @@ -46,6 +48,24 @@ plugins { group = "dev.elide" version = rootProject.version as String +// Flags affecting this build script: +// +// - `elide.release`: true/false +// - `elide.buildMode`: `dev`, `release`, `debug` +// - `elide.target`: Known target, like `linux-amd64`, `linux-amd64-musl`, `darwin-amd64`, or `windows-amd64` +// - `elide.targetOs`: `darwin`, `linux`, `windows` +// - `elide.targetArch`: `amd64`, `arm64` +// - `elide.targetLibc`: `glibc` or `musl` +// - `elide.march`: `native`, `compatibility` +// - `elide.compiler`: Custom compiler name or path +// - `elide.linker`: Custom linker name or path +// +// Environment respected by this script: +// +// - `CC`: C compiler +// - `LD`: Linker +// - `CFLAGS`: C compiler flags + val oracleGvm = false val oracleGvmLibs = oracleGvm val enableJpms = false @@ -67,6 +87,7 @@ val edgeJvm = JavaVersion.toVersion(edgeJvmTarget) val ltsJvm = JavaVersion.toVersion(ltsJvmTarget) val selectedJvmTarget = if (enableEdge) edgeJvmTarget else ltsJvmTarget val selectedJvm = if (enableEdge) edgeJvm else ltsJvm +val elideTarget = TargetInfo.current(project) val jvmType: JvmVendorSpec = if (oracleGvm) JvmVendorSpec.matching("Oracle Corporation") else JvmVendorSpec.GRAAL_VM @@ -190,10 +211,6 @@ if (enableBenchmarks) kotlin { } } -val nativesRootTemplate: (String) -> String = { version -> - "/tmp/elide-runtime/v$version/native" -} - val stamp = (project.properties["elide.stamp"] as? String ?: "false").toBooleanStrictOrNull() ?: false val pkgVersion = if (stamp) { libs.versions.elide.asProvider().get() @@ -201,14 +218,33 @@ val pkgVersion = if (stamp) { "1.0-dev-${System.currentTimeMillis() / 1000 / 60 / 60 / 24}" } -val nativesPath = nativesRootTemplate(pkgVersion) -val umbrellaNativesPath: String = rootProject.layout.projectDirectory.dir("target/$pkgVersion").asFile.path +val umbrellaNativesPath: String = + rootProject.layout.projectDirectory.dir("target/${elideTarget.triple}/$nativesType").asFile.path +val nativesPath = umbrellaNativesPath +val targetSqliteDir = rootProject.layout.projectDirectory.dir("third_party/sqlite/install") +val targetSqliteLibDir = targetSqliteDir.dir("lib") + +val javaLibPath = provider { + StringBuilder().apply { + append(nativesPath) + append(File.pathSeparator) + append(targetSqliteLibDir) + System.getProperty("java.library.path", "").let { + if (it.isNotEmpty()) { + append(File.pathSeparator) + append(it) + } + } + } +} val jvmDefs = mapOf( "elide.natives" to nativesPath, + "elide.target" to elideTarget.triple, "org.sqlite.lib.path" to nativesPath, "org.sqlite.lib.exportPath" to nativesPath, "elide.nativeTransport.v2" to enableTransportV2.toString(), + "java.library.path" to javaLibPath.get(), ) val initializeAtRunTime = listOfNotNull( @@ -303,6 +339,8 @@ val sharedLibArgs = listOfNotNull( "-H:+JNI", "-Delide.staticJni=$enableStaticJni", "-J-Delide.staticJni=$enableStaticJni", + "-Delide.staticUmbrella=$enableStaticJni", + "-J-Delide.staticUmbrella=$enableStaticJni", "--enable-native-access=com.sun.jna,ALL-UNNAMED", "--initialize-at-build-time=", "--initialize-at-run-time=${initializeAtRunTime.joinToString(",")}", @@ -324,17 +362,7 @@ val sharedLibArgs = listOfNotNull( ) } ).plus( - StringBuilder().apply { - append(rootProject.layout.projectDirectory.dir("target/$nativesType").asFile.path) - append(File.pathSeparator) - append(nativesPath) - System.getProperty("java.library.path", "").let { - if (it.isNotEmpty()) { - append(File.pathSeparator) - append(it) - } - } - }.toString().let { + javaLibPath.get().toString().let { listOf( "-Djava.library.path=$it", "-J-Djava.library.path=$it", @@ -480,6 +508,7 @@ dependencies { api(projects.packages.ssr) api(projects.packages.engine) api(projects.packages.graalvmTs) + api(projects.packages.graalvmJs) api(projects.packages.graalvmWasm) // Protocol Dependencies @@ -618,8 +647,6 @@ dependencies { val testBase: Configuration by configurations.creating tasks { - checkNatives(test, build) - test { maxHeapSize = "2G" maxParallelForks = 2 @@ -631,17 +658,7 @@ tasks { systemProperty("elide.js.preloadModules", "false") systemProperty("elide.js.vm.enableStreams", "true") systemProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "4") - systemProperty("java.library.path", StringBuilder().apply { - append(rootProject.layout.projectDirectory.dir("target/$nativesType").asFile.path) - append(File.pathSeparator) - append(nativesPath) - System.getProperty("java.library.path", "").let { - if (it.isNotEmpty()) { - append(File.pathSeparator) - append(it) - } - } - }.toString()) + systemProperty("java.library.path", javaLibPath.get().toString()) if (enableToolchains) javaLauncher = gvmLauncher } @@ -713,17 +730,7 @@ tasks { if (enableBenchmarks) afterEvaluate { tasks.named("benchmarksBenchmark", JavaExec::class) { - systemProperty("java.library.path", StringBuilder().apply { - append(rootProject.layout.projectDirectory.dir("target/$nativesType").asFile.path) - append(File.pathSeparator) - append(nativesPath) - System.getProperty("java.library.path", "").let { - if (it.isNotEmpty()) { - append(File.pathSeparator) - append(it) - } - } - }.toString()) + systemProperty("java.library.path", javaLibPath.get().toString()) } } @@ -738,3 +745,61 @@ configurations.all { } } } + +val buildThirdPartyNatives by tasks.registering(Exec::class) { + workingDir = rootProject.layout.projectDirectory.asFile + + val buildForNative = when { + (findProperty("elide.native") as? String) != null -> "yes" + (findProperty("elide.arch") as? String) != null -> if (project.properties["elide.arch"] as String == "native") { + "yes" + } else "no" + else -> "no" + } + commandLine( + "make", + "-C", "third_party", + "RELEASE=yes", // third-party natives are always built in release mode + "NATIVE=$buildForNative" + ) + + outputs.upToDateWhen { targetSqliteDir.asFile.exists() } + outputs.dir(targetSqliteDir) +} + +val buildRustNativesForHost by tasks.registering(Exec::class) { + workingDir = rootProject.layout.projectDirectory.asFile + dependsOn(buildThirdPartyNatives) + + val targetInfo = TargetInfo.current(project) + executable = "cargo" + argumentProviders.add(CommandLineArgumentProvider { + listOfNotNull( + "--color=always", + "build", + if (isRelease) "--release" else null, + "--target", + targetInfo.triple, + ) + }) + + val targetDir = rootProject.layout.projectDirectory.dir("target/${targetInfo.triple}/$nativesType") + outputs.upToDateWhen { targetDir.asFile.exists() } + outputs.dir(targetDir) +} + +val natives by tasks.registering { + group = "build" + description = "Build natives via Make and Cargo" + dependsOn(buildThirdPartyNatives, buildRustNativesForHost) +} + +listOf( + tasks.build, + tasks.check, + tasks.test, +).forEach { + it.configure { + dependsOn(natives) + } +} diff --git a/packages/graalvm/detekt-baseline.xml b/packages/graalvm/detekt-baseline.xml index 3bb9c2925..9186bd1fc 100644 --- a/packages/graalvm/detekt-baseline.xml +++ b/packages/graalvm/detekt-baseline.xml @@ -2,7 +2,6 @@ - ComplexCondition:AbstractStaticNativeLibraryFeature.kt$AbstractStaticNativeLibraryFeature$!it.builtin && !it.registerPrefix && !it.registerJni && !it.eager ComplexCondition:NodeAssertTest.kt$NodeAssertTest$(left is Value && left.isNull) || (right is Value && right.isNull) ExplicitGarbageCollectionCall:EmbeddedGuestVFSImpl.kt$EmbeddedGuestVFSImpl$gc() ForbiddenComment:HostVFS.kt$HostVFS$// @TODO: OS-specific? configurable? @@ -26,8 +25,6 @@ LargeClass:URLIntrinsicTest.kt$URLIntrinsicTest : AbstractJsIntrinsicTest LongMethod:AbstractJsMapTest.kt$AbstractJsMapTest$@Suppress("ReplaceGetOrSet") protected open fun testMapGeneric(prefix: String, factory: () -> MapLike): List<DynamicTest> LongMethod:AbstractJsMapTest.kt$AbstractJsMapTest$protected open fun testMapMutable(prefix: String, factory: () -> MapLike): List<DynamicTest> - LongParameterList:AbstractStaticNativeLibraryFeature.kt$AbstractStaticNativeLibraryFeature$( name: String, vararg layout: String, type: NativeLibType = STATIC, linkName: String = name, builtin: Boolean = true, registerJni: Boolean = true, registerPrefix: Boolean = builtin, eager: Boolean = false, absolutePath: Path? = null, initializer: Boolean = false, deps: List<String> = emptyList(), ) - LongParameterList:NativeLibraryFeature.kt$NativeLibraryFeature.NativeLibInfo.Companion$( name: String, vararg layout: String, type: NativeLibType = STATIC, linkName: String = name, prefix: Boolean, jni: Boolean, builtin: Boolean, eager: Boolean, absolutePath: Path?, initializer: Boolean, deps: List<String>, ) MagicNumber:DebugConfig.kt$DebugConfig.DebugAdapterConfig$4711 MagicNumber:DebugConfig.kt$DebugConfig.InspectorConfig$4200 MagicNumber:FetchResponse.kt$FetchResponse$200 @@ -57,16 +54,8 @@ ReturnCount:GraalVMRuntime.kt$GraalVMRuntime.Companion$internal fun resolveVersion(source: String = System.getProperty(SYSTEM_JVM_VERSION)): Version? ReturnCount:NodePaths.kt$NodePaths.BasePaths$@Polyglot override fun format(pathObject: Any): String SpreadOperator:AbstractDelegateVFS.kt$AbstractDelegateVFS$(segments[0], *segments.drop(1).toTypedArray()) - SpreadOperator:AbstractStaticNativeLibraryFeature.kt$AbstractStaticNativeLibraryFeature$(it.name, *it.deps.toTypedArray()) SpreadOperator:EmbeddedGuestVFSImpl.kt$EmbeddedGuestVFSImpl.EmbeddedVFSFactory$(*supportedFeatures()) SpreadOperator:EmbeddedGuestVFSImpl.kt$EmbeddedGuestVFSImpl.EmbeddedVFSFactory$(views.first(), *(views.drop(1).toTypedArray())) - SpreadOperator:FrameworkFeature.kt$FrameworkFeature$(*clazz.declaredConstructors) - SpreadOperator:FrameworkFeature.kt$FrameworkFeature$(*clazz.declaredFields) - SpreadOperator:FrameworkFeature.kt$FrameworkFeature$(*clazz.declaredMethods) - SpreadOperator:NativeCryptoFeature.kt$NativeCryptoFeature$( "netty_tcnative_linux_$archTag", *tcnative, builtin = true, ) - SpreadOperator:NativeCryptoFeature.kt$NativeCryptoFeature$( "netty_tcnative_osx_$archTag", *tcnative, builtin = true, ) - SpreadOperator:NativeCryptoFeature.kt$NativeCryptoFeature$( "transport", *tcnative, builtin = true, initializer = true, absolutePath = Path(System.getProperty("elide.target")).resolve("libtransport.a"), ) - SpreadOperator:NativeCryptoFeature.kt$NativeCryptoFeature$(lib, *deps) SpreadOperator:NativeTransportFeature.kt$NativeTransportFeature$( "umbrella", *impl, builtin = true, ) SpreadOperator:NativeTransportFeature.kt$NativeTransportFeature$("epoll", "aarch64", *epollImpls) SpreadOperator:NativeTransportFeature.kt$NativeTransportFeature$("epoll", "x86-64", *epollImpls) @@ -80,7 +69,6 @@ SpreadOperator:SqliteModule.kt$SqliteDatabaseProxy$(query.asHostObject<Statement>(), *it.drop(1).toTypedArray()) SpreadOperator:SqliteModule.kt$SqliteDatabaseProxy$(query.asString(), *it.drop(1).toTypedArray()) SpreadOperator:SqliteModule.kt$SqliteDatabaseProxy$(query.asString(), *rest) - SwallowedException:AbstractStaticNativeLibraryFeature.kt$AbstractStaticNativeLibraryFeature$fnf: FileNotFoundException SwallowedException:FetchHeadersIntrinsic.kt$FetchHeadersIntrinsic$err: ClassCastException SwallowedException:GraalVMEngine.kt$GraalVMEngine$uoe: UnsupportedOperationException SwallowedException:NettyTransport.kt$NettyTransport$unsatisfied: UnsatisfiedLinkError @@ -96,14 +84,11 @@ ThrowsCount:URLSearchParamsIntrinsic.kt$private fun IURLSearchParams.pluckMember(key: String): Any TooGenericExceptionCaught:AbstractDelegateVFS.kt$AbstractDelegateVFS$thr: Throwable TooGenericExceptionCaught:AbstractGVMScript.kt$AbstractGVMScript$exc: Exception - TooGenericExceptionCaught:JavaScript.kt$JavaScript$err: Throwable TooGenericExceptionCaught:JsIterator.kt$JsIterator.JsIteratorImpl$err: Throwable TooGenericExceptionCaught:NodeEvents.kt$EventAwareRelay$e: Throwable TooGenericExceptionCaught:NodeStream.kt$AbstractReadable$e: Throwable TooGenericExceptionCaught:SqliteModule.kt$SqliteDatabaseProxy$err: Throwable TooGenericExceptionCaught:SqliteModule.kt$SqliteDatabaseProxy.SQLiteTransactionImpl$err: Throwable - TooGenericExceptionThrown:FrameworkFeature.kt$FrameworkFeature$throw RuntimeException( "Failed to find method " + methodName + " for class " + clazz.name, e ) - TooGenericExceptionThrown:FrameworkFeature.kt$FrameworkFeature$throw RuntimeException("Failed to load classes under package name.", e) UnusedParameter:GraalVMContext.kt$GraalVMContext$options: EvaluationOptions UnusedParameter:SqliteQueryRenderer.kt$SqliteQueryRenderer$ctx: QueryTemplateContext? = null UnusedParameter:SqliteQueryRenderer.kt$SqliteQueryRenderer$position: Int = -1 @@ -111,7 +96,6 @@ UnusedParameter:SqliteQueryRenderer.kt$SqliteQueryRenderer$subject: String UnusedParameter:VfsPlugin.kt$Vfs$@Suppress("unused_parameter") builder: PolyglotEngineBuilder UnusedPrivateMember:HttpServerAgent.kt$HttpServerAgent.Companion$private fun resolveLanguage(source: Source): GuestLanguage - UnusedPrivateMember:NativeCryptoFeature.kt$NativeCryptoFeature$private fun renameNativeCryptoLib(lib: String): String UnusedPrivateProperty:AbstractJsIntrinsicTest.kt$AbstractJsIntrinsicTest$private val testInject: Boolean = true diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMContext.kt b/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMContext.kt index ac074a804..b376e2c2e 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMContext.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMContext.kt @@ -57,6 +57,10 @@ import elide.runtime.core.PolyglotContext.EvaluationOptions context.leave() } + override fun unwrap(): Context { + return context + } + override operator fun get(element: PolyglotContextElement): T? { @Suppress("unchecked_cast") return elements[element] as? T } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/EngineFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/EngineFeature.kt index 5dffa2cf8..47ebc1c98 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/EngineFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/EngineFeature.kt @@ -15,7 +15,7 @@ package elide.runtime.feature import org.graalvm.nativeimage.hosted.Feature import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import org.graalvm.nativeimage.hosted.Feature.IsInConfigurationAccess -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.gvm.GuestLanguage /** diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/ProtocolBuffers.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/ProtocolBuffers.kt index 47a9e39f3..ddb4a9ce5 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/ProtocolBuffers.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/ProtocolBuffers.kt @@ -15,7 +15,7 @@ package elide.runtime.feature import org.graalvm.nativeimage.hosted.Feature import org.graalvm.nativeimage.hosted.RuntimeReflection import java.lang.reflect.Executable -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature /** * # Feature: Protocol Buffers diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/VirtualFilesystem.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/VirtualFilesystem.kt index 1bbf4470f..c43d6d306 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/VirtualFilesystem.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/VirtualFilesystem.kt @@ -13,7 +13,7 @@ package elide.runtime.feature import org.graalvm.nativeimage.hosted.Feature -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature /** GraalVM feature which enables reflection required for VFS (Virtual File System) services. */ @VMFeature diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeConsoleFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeConsoleFeature.kt index b7bfbef8f..4cc8cb90c 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeConsoleFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeConsoleFeature.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -15,7 +15,7 @@ package elide.runtime.feature.engine import org.graalvm.nativeimage.Platform import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import org.graalvm.nativeimage.hosted.Feature.IsInConfigurationAccess -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature /** Registers native library for Jansi. */ @VMFeature internal class NativeConsoleFeature : AbstractStaticNativeLibraryFeature() { diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeCryptoFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeCryptoFeature.kt index f7446cd19..f4e53550b 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeCryptoFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeCryptoFeature.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -10,6 +10,8 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ +@file:Suppress("SpreadOperator", "unused") + package elide.runtime.feature.engine import com.oracle.svm.hosted.FeatureImpl.BeforeAnalysisAccessImpl @@ -17,17 +19,17 @@ import org.graalvm.nativeimage.Platform import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import org.graalvm.nativeimage.hosted.Feature.IsInConfigurationAccess import kotlin.io.path.Path -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.NativeLibraryFeature.UnpackedNative /** Registers native crypto libraries for static JNI. */ @VMFeature internal class NativeCryptoFeature : AbstractStaticNativeLibraryFeature() { private companion object { - private const val STATIC_JNI = true private const val PROVIDED = "provided" private const val BORINGSSL_STATIC_JAR: String = "netty-tcnative-boringssl-static" private const val ARCH_PROP: String = "os.arch" private const val OS_PROP: String = "os.name" + private val staticJni = java.lang.Boolean.getBoolean("elide.staticJni") private val tcnative = arrayOf( "io.netty.handler.ssl.OpenSsl", @@ -38,6 +40,10 @@ import elide.runtime.feature.NativeLibraryFeature.UnpackedNative "io.netty.internal.tcnative.SSLContext", "io.netty.internal.tcnative.SSLSession", ) + + private val libtransport_a = Path(System.getProperty("elide.natives")).resolve("libtransport.a") + private val libtransport_dylib = Path(System.getProperty("elide.natives")).resolve("libtransport.dylib") + private val libtransport_so = Path(System.getProperty("elide.natives")).resolve("libtransport.so") } override fun getDescription(): String = "Registers native crypto libraries" @@ -47,9 +53,8 @@ import elide.runtime.feature.NativeLibraryFeature.UnpackedNative io.netty.internal.tcnative.Library.initialize(PROVIDED, null) } - override fun isInConfiguration(access: IsInConfigurationAccess?): Boolean { - return STATIC_JNI // static mode only; otherwise, standard JNI is used - } + // static mode only; otherwise, standard JNI is used + override fun isInConfiguration(access: IsInConfigurationAccess?): Boolean = staticJni private fun renameNativeCryptoLib(lib: String): String { val filename = lib.split("/").last().substringBeforeLast('.') @@ -64,7 +69,7 @@ import elide.runtime.feature.NativeLibraryFeature.UnpackedNative } } - override fun unpackNatives(access: BeforeAnalysisAccess): List = if (!STATIC_JNI) when { + override fun unpackNatives(access: BeforeAnalysisAccess): List = if (!staticJni) when { /* Dynamic JNI */ Platform.includedIn(Platform.LINUX::class.java) -> when (System.getProperty(ARCH_PROP)) { @@ -116,7 +121,7 @@ import elide.runtime.feature.NativeLibraryFeature.UnpackedNative "aarch64", "arm64" -> "aarch_64" else -> error("Unsupported architecture: $arch") }.let { archTag -> - when (STATIC_JNI) { + when (staticJni) { false -> listOf( nativeLibrary( darwin = libraryNamed( @@ -139,14 +144,16 @@ import elide.runtime.feature.NativeLibraryFeature.UnpackedNative *tcnative, builtin = true, initializer = true, - absolutePath = Path(System.getProperty("elide.target")).resolve("libtransport.a"), + absolutePath = libtransport_a, + absoluteLibs = (libtransport_a to libtransport_dylib), ), linux = libraryNamed( "transport", *tcnative, builtin = true, initializer = true, - absolutePath = Path(System.getProperty("elide.target")).resolve("libtransport.a"), + absolutePath = libtransport_a, + absoluteLibs = (libtransport_a to libtransport_so), ), ) ) diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeSQLiteFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeSQLiteFeature.kt index bb045a0fe..2e611b09b 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeSQLiteFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeSQLiteFeature.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -29,8 +29,7 @@ import org.sqlite.core.NativeDB import org.sqlite.jdbc3.JDBC3DatabaseMetaData import org.sqlite.util.LibraryLoaderUtil import org.sqlite.util.OSInfo -import java.sql.DriverManager -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.NativeLibraryFeature.NativeLibInfo import elide.runtime.feature.NativeLibraryFeature.NativeLibType.STATIC @@ -53,8 +52,6 @@ import elide.runtime.feature.NativeLibraryFeature.NativeLibType.STATIC ) else emptyList() private fun onDbReachable() { - val driver = DriverManager.getDriver("jdbc:sqlite:memory:") - requireNotNull(driver) { "Failed to resolve SQLite driver at build-time" } RuntimeJNIAccess.register(NativeDB::class.java) RuntimeJNIAccess.register(*fields( NativeDB::class.java, diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeTransportFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeTransportFeature.kt index 7ee041997..f3e7caf07 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeTransportFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeTransportFeature.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -16,10 +16,8 @@ import org.graalvm.nativeimage.Platform import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import org.graalvm.nativeimage.hosted.Feature.IsInConfigurationAccess import java.nio.file.Path -import kotlin.io.path.Path -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.NativeLibraryFeature.NativeLibInfo -import elide.runtime.feature.NativeLibraryFeature.UnpackedNative /** Registers native transport libraries for static JNI. */ @VMFeature internal class NativeTransportFeature : AbstractStaticNativeLibraryFeature() { diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/js/JavaScriptFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/js/JavaScriptFeature.kt index 7c9035b03..a29ec0d0c 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/js/JavaScriptFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/js/JavaScriptFeature.kt @@ -13,7 +13,7 @@ package elide.runtime.feature.js import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.core.DelicateElideApi import elide.runtime.core.PolyglotEngine import elide.runtime.feature.EngineFeature diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/js/node/NodeJsFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/js/node/NodeJsFeature.kt index d471546b9..b20fa1223 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/js/node/NodeJsFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/js/node/NodeJsFeature.kt @@ -14,7 +14,7 @@ package elide.runtime.feature.js.node import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import kotlin.reflect.KClass -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.FrameworkFeature import elide.runtime.gvm.internals.intrinsics.js.url.URLIntrinsic import elide.runtime.gvm.internals.intrinsics.js.url.URLSearchParamsIntrinsic @@ -36,16 +36,13 @@ import elide.runtime.node.http.NodeHttp import elide.runtime.node.http2.NodeHttp2 import elide.runtime.node.https.NodeHttps import elide.runtime.node.inspector.NodeInspector -import elide.runtime.node.inspector.NodeInspectorPromises import elide.runtime.node.module.NodeModules import elide.runtime.node.net.NodeNetwork -import elide.runtime.node.os.NodeOperatingSystem import elide.runtime.node.path.NodePaths import elide.runtime.node.perfHooks.NodePerformanceHooks import elide.runtime.node.process.NodeProcess import elide.runtime.node.querystring.NodeQuerystring import elide.runtime.node.readline.NodeReadline -import elide.runtime.node.readline.NodeReadlinePromises import elide.runtime.node.stream.NodeStream import elide.runtime.node.stream.NodeStreamConsumers import elide.runtime.node.stream.NodeStreamPromises diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/jvm/JvmFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/jvm/JvmFeature.kt index 483267409..51eba6d4e 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/jvm/JvmFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/jvm/JvmFeature.kt @@ -12,7 +12,7 @@ */ package elide.runtime.feature.jvm -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.EngineFeature import elide.runtime.gvm.GraalVMGuest diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/jvm/KotlinFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/jvm/KotlinFeature.kt index 2b360db9d..c00903fd3 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/jvm/KotlinFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/jvm/KotlinFeature.kt @@ -12,7 +12,7 @@ */ package elide.runtime.feature.jvm -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.EngineFeature import elide.runtime.gvm.GraalVMGuest diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/python/PythonFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/python/PythonFeature.kt index bb43bccd8..af7fc22cf 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/python/PythonFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/python/PythonFeature.kt @@ -12,7 +12,7 @@ */ package elide.runtime.feature.python -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.EngineFeature import elide.runtime.gvm.GraalVMGuest diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/ruby/RubyFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/ruby/RubyFeature.kt index b809963f4..efde98c11 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/ruby/RubyFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/ruby/RubyFeature.kt @@ -12,7 +12,7 @@ */ package elide.runtime.feature.ruby -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.EngineFeature import elide.runtime.gvm.GraalVMGuest diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/wasm/WebAssemblyFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/wasm/WebAssemblyFeature.kt index 702c08521..c58d56923 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/wasm/WebAssemblyFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/wasm/WebAssemblyFeature.kt @@ -12,7 +12,7 @@ */ package elide.runtime.feature.wasm -import elide.annotations.internal.VMFeature +import elide.annotations.engine.VMFeature import elide.runtime.feature.EngineFeature import elide.runtime.gvm.GraalVMGuest diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/ExecutableScript.kt b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/ExecutableScript.kt index ea831a9f1..830ea60c9 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/ExecutableScript.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/ExecutableScript.kt @@ -15,7 +15,6 @@ package elide.runtime.gvm import java.nio.charset.Charset import java.nio.charset.StandardCharsets import java.util.* -import elide.runtime.gvm.ExecutableScript.State /** * # Executable Script diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/sqlite/SqliteModule.kt b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/sqlite/SqliteModule.kt index e2dec435d..9df114994 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/sqlite/SqliteModule.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/sqlite/SqliteModule.kt @@ -41,7 +41,6 @@ import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withTimeout import kotlinx.io.files.FileNotFoundException -import kotlin.collections.ArrayList import kotlin.io.path.absolutePathString import elide.annotations.Factory import elide.annotations.Singleton diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/ExecOptions.kt b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/ExecOptions.kt index 6bc3f5a25..384401518 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/ExecOptions.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/ExecOptions.kt @@ -63,8 +63,8 @@ internal data object ExecDefaults { * @property windowsHide Whether to hide the process window. * @property timeout Timeout for the process, in seconds. */ -@ExposedCopyVisibility -@API @JvmRecord public data class ExecOptions private constructor ( +@ConsistentCopyVisibility +@API @JvmRecord public data class ExecOptions internal constructor ( override val cwdString: String? = null, public val cwdUrl: URL? = null, override val env: Map? = null, diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions.kt b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions.kt index 15f29cfb1..89014931e 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/ExecSyncOptions.kt @@ -64,8 +64,8 @@ internal data object ExecSyncDefaults { * @property windowsHide Whether to hide the process window. * @property timeout Timeout for the process, in seconds. */ -@ExposedCopyVisibility -@API @JvmRecord public data class ExecSyncOptions private constructor ( +@ConsistentCopyVisibility +@API @JvmRecord public data class ExecSyncOptions internal constructor ( override val cwdString: String? = null, public val cwdUrl: URL? = null, public val input: Any? = null, diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/SpawnOptions.kt b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/SpawnOptions.kt index 457a02e8b..f22807606 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/SpawnOptions.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/SpawnOptions.kt @@ -70,8 +70,8 @@ internal data object SpawnDefaults { * @property windowsHide Whether to hide the process window. * @property timeout Timeout for the process, in seconds. */ -@ExposedCopyVisibility -@API @JvmRecord public data class SpawnOptions private constructor ( +@ConsistentCopyVisibility +@API @JvmRecord public data class SpawnOptions internal constructor ( override val cwdString: String? = null, public val cwdUrl: URL? = null, public val argv0: String? = null, diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/SpawnSyncOptions.kt b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/SpawnSyncOptions.kt index 17ee63b7d..b560c3552 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/SpawnSyncOptions.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/node/childProcess/SpawnSyncOptions.kt @@ -64,8 +64,8 @@ internal data object SpawnSyncDefaults { * @property windowsHide Whether to hide the process window. * @property timeout Timeout for the process, in seconds. */ -@ExposedCopyVisibility -@API @JvmRecord public data class SpawnSyncOptions private constructor ( +@ConsistentCopyVisibility +@API @JvmRecord public data class SpawnSyncOptions internal constructor ( override val cwdString: String? = null, public val cwdUrl: URL? = null, public val input: Any? = null, diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScript.kt b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScript.kt index 7a02ea3d8..986e06aea 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScript.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScript.kt @@ -13,11 +13,6 @@ package elide.runtime.plugins.js import com.oracle.truffle.js.runtime.JSContextOptions -import org.graalvm.polyglot.Engine -import org.graalvm.polyglot.Source -import java.util.concurrent.atomic.AtomicBoolean -import elide.runtime.LogLevel.DEBUG -import elide.runtime.Logging import elide.runtime.core.DelicateElideApi import elide.runtime.core.EngineLifecycleEvent.* import elide.runtime.core.EnginePlugin.InstallationScope @@ -40,12 +35,6 @@ import elide.runtime.plugins.js.JavaScriptVersion.* private val resources: LanguagePluginManifest, private val environment: Environment? = null, ) { - // Whether modules have initialized. - private val modulesInitialized = AtomicBoolean(false) - - // Logger for the JavaScript plugin. - private val logging by lazy { Logging.of(JavaScript::class) } - private fun initializeContext(context: PolyglotContext) { // if applicable, install the env plugin bindings environment?.install(context, JavaScript) @@ -57,46 +46,6 @@ import elide.runtime.plugins.js.JavaScriptVersion.* initializeEmbeddedScripts(context, resources) } - private fun generateImports(name: String): Source = Source.newBuilder("js", StringBuilder().apply { - if (name.startsWith("elide:")) { - val modname = name.removePrefix("elide:") - append("import '$modname';") - append("require('$modname');") - } else { - append("import 'node:$name';") - append("require('node:$name');") - } - }.toString(), "__elide-internal-module-import_$name.mjs").apply { - cached(true) - interactive(false) - internal(true) - }.build() - - @Synchronized private fun finalizeContext(context: PolyglotContext) { - config.builtinModulesConfig.finalize() - if (EXPERIMENTAL_MODULE_PRELOADING && !modulesInitialized.get() && shouldPreloadModules) { - modulesInitialized.compareAndSet(false, true) - config.builtinModulesConfig.replacements().keys.asSequence().let { mods -> - try { - val logDebug = logging.isEnabled(DEBUG) - context.enter() - mods.forEach { name -> - if (logDebug) logging.debug("Preloading JS module '$name'") - - try { - context.evaluate(generateImports(name)) - } catch (err: Throwable) { - // log but otherwise ignore - logging.error("Failed to preload module '$name'", err) - } - } - } finally { - context.leave() - } - } - } - } - private fun configureContext(builder: PolyglotContextBuilder): Unit = with(builder) { enableOptions( "js.allow-eval", @@ -198,14 +147,10 @@ import elide.runtime.plugins.js.JavaScriptVersion.* public companion object Plugin : AbstractLanguagePlugin() { private const val JS_LANGUAGE_ID = "js" private const val JS_PLUGIN_ID = "JavaScript" - - private const val EXPERIMENTAL_MODULE_PRELOADING = false - private const val WASI_STD = "wasi_snapshot_preview1" private const val FUNCTION_CONSTRUCTOR_CACHE_SIZE: String = "256" private const val UNHANDLED_REJECTIONS: String = "handler" private const val DEBUG_GLOBAL: String = "__ElideDebug__" - private val shouldPreloadModules = System.getProperty("elide.js.preloadModules") != "false" override val languageId: String = JS_LANGUAGE_ID override val key: Key = Key(JS_PLUGIN_ID) @@ -230,7 +175,6 @@ import elide.runtime.plugins.js.JavaScriptVersion.* // subscribe to lifecycle events scope.lifecycle.on(ContextCreated, instance::configureContext) scope.lifecycle.on(ContextInitialized, instance::initializeContext) - scope.lifecycle.on(ContextFinalized, instance::finalizeContext) return instance } @@ -243,7 +187,8 @@ import elide.runtime.plugins.js.JavaScriptVersion.* ES2020, ES2021, ES2022, - ES2023 -> this.name.drop(2) + ES2023, + ES2024 -> this.name.drop(2) STABLE -> "stable" LATEST -> "latest" diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScriptVersion.kt b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScriptVersion.kt index 0e0325b6f..9240e8e89 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScriptVersion.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScriptVersion.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -24,6 +24,7 @@ import elide.runtime.core.DelicateElideApi ES2021, ES2022, ES2023, + ES2024, STABLE, LATEST, } diff --git a/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/js.modules.tar b/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/js.modules.tar deleted file mode 100755 index b7b18fc82..000000000 Binary files a/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/js.modules.tar and /dev/null differ diff --git a/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.json.gz b/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.json.gz deleted file mode 100644 index 7a1a16cc3..000000000 Binary files a/packages/graalvm/src/main/resources/META-INF/elide/embedded/runtime/js/runtime.json.gz and /dev/null differ diff --git a/packages/graalvm/src/main/resources/META-INF/services/elide.runtime.precompiler.Precompiler.Provider b/packages/graalvm/src/main/resources/META-INF/services/elide.runtime.precompiler.Precompiler.Provider index 7de718531..385ddc4dc 100644 --- a/packages/graalvm/src/main/resources/META-INF/services/elide.runtime.precompiler.Precompiler.Provider +++ b/packages/graalvm/src/main/resources/META-INF/services/elide.runtime.precompiler.Precompiler.Provider @@ -1 +1 @@ -elide.runtime.gvm.js.JavaScriptPrecompiler$Provider +elide.runtime.lang.javascript.JavaScriptPrecompiler$Provider diff --git a/packages/graalvm/src/test/kotlin/elide/runtime/intrinsics/js/JsGlobalsTest.kt b/packages/graalvm/src/test/kotlin/elide/runtime/intrinsics/js/JsGlobalsTest.kt index 6259f9e62..031cb3a54 100644 --- a/packages/graalvm/src/test/kotlin/elide/runtime/intrinsics/js/JsGlobalsTest.kt +++ b/packages/graalvm/src/test/kotlin/elide/runtime/intrinsics/js/JsGlobalsTest.kt @@ -25,7 +25,6 @@ import elide.runtime.core.DelicateElideApi import elide.runtime.core.PolyglotEngine import elide.runtime.core.PolyglotEngineConfiguration.HostAccess.ALLOW_ALL import elide.runtime.gvm.GraalVMGuest -import elide.runtime.gvm.GuestLanguage import elide.runtime.gvm.internals.IntrinsicsManager import elide.runtime.gvm.internals.intrinsics.js.AbstractJsIntrinsic import elide.runtime.gvm.js.AbstractJsTest diff --git a/packages/graalvm/src/test/kotlin/elide/runtime/javascript/NativeParserTest.kt b/packages/graalvm/src/test/kotlin/elide/runtime/javascript/NativeParserTest.kt index 665dbbb83..89336f1f5 100644 --- a/packages/graalvm/src/test/kotlin/elide/runtime/javascript/NativeParserTest.kt +++ b/packages/graalvm/src/test/kotlin/elide/runtime/javascript/NativeParserTest.kt @@ -14,18 +14,25 @@ package elide.runtime.javascript +import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.assertDoesNotThrow import kotlinx.coroutines.test.runTest import kotlin.test.* -import elide.runtime.gvm.js.JavaScriptCompilerConfig -import elide.runtime.gvm.js.JavaScriptPrecompiler +import elide.runtime.lang.javascript.JavaScriptCompilerConfig +import elide.runtime.lang.javascript.JavaScriptPrecompiler import elide.runtime.precompiler.Precompiler.PrecompileSourceInfo import elide.runtime.precompiler.Precompiler.PrecompileSourceRequest import elide.testing.annotations.Test class NativeParserTest { - init { - System.loadLibrary("umbrella") + companion object { + @BeforeAll @JvmStatic fun load() { + try { + System.loadLibrary("js") + } catch (e: UnsatisfiedLinkError) { + throw IllegalStateException("Could not load library 'js'", e) + } + } } // lowering javascript should just return the javascript diff --git a/packages/server/build.gradle.kts b/packages/server/build.gradle.kts index 425c42b92..b7724d5f4 100644 --- a/packages/server/build.gradle.kts +++ b/packages/server/build.gradle.kts @@ -103,9 +103,6 @@ dependencies { implementation(libs.graalvm.polyglot) implementation(mn.reactor) - // Crypto - implementation(libs.bouncycastle) - // KotlinX implementation(libs.kotlinx.serialization.json.jvm) implementation(libs.kotlinx.coroutines.core) @@ -119,24 +116,9 @@ dependencies { implementation(libs.protobuf.util) implementation(libs.protobuf.kotlin) - // Brotli (not in use yet) - // implementation(libs.brotli) - // implementation(libs.brotli.native.osx) - // implementation(libs.brotli.native.osx.amd64) - // implementation(libs.brotli.native.osx.arm64) - // implementation(libs.brotli.native.linux) - // implementation(libs.brotli.native.linux.amd64) - // implementation(libs.brotli.native.linux.arm64) - // implementation(libs.brotli.native.windows) - // implementation(libs.brotli.native.windows.amd64) - // Micronaut implementation(mn.micronaut.aop) implementation(mn.micronaut.http.netty) - implementation(mn.micronaut.jackson.databind) - - // General - implementation(libs.reactivestreams) // Runtime implementation(mn.micronaut.http.server) diff --git a/packages/server/src/main/kotlin/elide/server/runtime/jvm/SecurityProviderConfigurator.kt b/packages/server/src/main/kotlin/elide/server/runtime/jvm/SecurityProviderConfigurator.kt index f11758881..18abccd79 100644 --- a/packages/server/src/main/kotlin/elide/server/runtime/jvm/SecurityProviderConfigurator.kt +++ b/packages/server/src/main/kotlin/elide/server/runtime/jvm/SecurityProviderConfigurator.kt @@ -13,8 +13,6 @@ package elide.server.runtime.jvm -import org.bouncycastle.jce.provider.BouncyCastleProvider -import java.security.Security import java.util.concurrent.atomic.AtomicBoolean /** Initializes JVM security providers at server startup. */ @@ -24,10 +22,10 @@ public object SecurityProviderConfigurator { // Register security providers at JVM startup time. @JvmStatic @Synchronized private fun registerProviders() { - Security.insertProviderAt( - BouncyCastleProvider(), - 0, - ) + // Security.insertProviderAt( + // org.bouncycastle.jce.provider.BouncyCastleProvider(), + // 0, + // ) } /** diff --git a/packages/sqlite/build.gradle.kts b/packages/sqlite/build.gradle.kts index ef69a5bfc..00b6ec532 100644 --- a/packages/sqlite/build.gradle.kts +++ b/packages/sqlite/build.gradle.kts @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.konan.target.HostManager import elide.internal.conventions.publishing.publish +import elide.toolchain.host.TargetInfo plugins { `java-library` @@ -56,13 +57,13 @@ dependencies { } val buildModeStr = (findProperty("elide.buildMode") as? String)?.ifBlank { null } ?: "debug" -// val buildMode = when (buildModeStr) { -// "dev", "debug" -> "debug" -// "release" -> "release" -// else -> error("Unsupported build mode: '$buildModeStr'") -// } + val buildMode = when (buildModeStr) { + "dev", "debug" -> "debug" + "release" -> "release" + else -> error("Unsupported build mode: '$buildModeStr'") + } // @TODO: build mode fixes -val buildMode = "debug" +//val buildMode = "debug" val libPostfix = when { HostManager.hostIsMac -> "dylib" HostManager.hostIsLinux -> "so" @@ -92,21 +93,17 @@ val platformLibFileName = StringBuilder().apply { append(libPostfix) }.toString() +val elideTarget = TargetInfo.current(project) + val sqliteJdbcLib = rootProject .layout .projectDirectory - .file("target/$buildMode/$sqliteJdbcLibName") - -val checkNative by tasks.registering { - doFirst { - if (!sqliteJdbcLib.asFile.exists()) { - throw IllegalStateException("SQLite JDBC native library not found at '$sqliteJdbcLib'") - } - } -} + .file("target/${elideTarget.triple}/$buildMode/$sqliteJdbcLibName") val copyNative by tasks.registering(Copy::class) { - dependsOn(checkNative) + dependsOn( + ":packages:graalvm:natives", + ) from(sqliteJdbcLib) { rename { platformLibFileName } } @@ -114,6 +111,7 @@ val copyNative by tasks.registering(Copy::class) { inputs.file(sqliteJdbcLib) outputs.file(layout.buildDirectory.file("native-libs/$platformLibFileName")) } +checkNatives(copyNative) val mountNative by tasks.registering(Copy::class) { dependsOn(copyNative) @@ -138,5 +136,4 @@ tasks.processResources { tasks.jar { archiveClassifier = currentPlatform - dependsOn(checkNative) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bbb8c7caf..5b57467a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,8 +28,8 @@ importers: specifier: 8.5.3 version: 8.5.3 preact: - specifier: 10.26.2 - version: 10.26.2 + specifier: 10.26.4 + version: 10.26.4 react: specifier: 19.0.0 version: 19.0.0 @@ -37,8 +37,8 @@ importers: specifier: 19.0.0 version: 19.0.0(react@19.0.0) typescript: - specifier: 5.7.3 - version: 5.7.3 + specifier: 5.8.2 + version: 5.8.2 web-streams-polyfill: specifier: 3.3.3 version: 3.3.3 @@ -48,7 +48,7 @@ importers: version: 1.9.4 '@commitlint/cli': specifier: 19.7.1 - version: 19.7.1(@types/node@22.13.5)(typescript@5.7.3) + version: 19.7.1(@types/node@22.13.8)(typescript@5.8.2) '@commitlint/config-conventional': specifier: 19.7.1 version: 19.7.1 @@ -65,17 +65,17 @@ importers: specifier: 3.15.12 version: 3.15.12 '@types/node': - specifier: 22.13.5 - version: 22.13.5 + specifier: 22.13.8 + version: 22.13.8 '@typescript-eslint/eslint-plugin': - specifier: 8.24.1 - version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.25.0 + version: 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) '@typescript-eslint/parser': - specifier: 8.24.1 - version: 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.25.0 + version: 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) commitlint: specifier: 19.7.1 - version: 19.7.1(@types/node@22.13.5)(typescript@5.7.3) + version: 19.7.1(@types/node@22.13.8)(typescript@5.8.2) esbuild: specifier: 0.25.0 version: 0.25.0 @@ -132,7 +132,7 @@ importers: dependencies: '@typescript/vfs': specifier: 1.6.1 - version: 1.6.1(typescript@5.7.3) + version: 1.6.1(typescript@5.8.2) esbuild: specifier: 0.25.0 version: 0.25.0 @@ -140,8 +140,8 @@ importers: specifier: 1.5.0 version: 1.5.0 typescript: - specifier: 5.7.3 - version: 5.7.3 + specifier: 5.8.2 + version: 5.8.2 packages/test: {} @@ -606,8 +606,8 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@22.13.5': - resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==} + '@types/node@22.13.8': + resolution: {integrity: sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==} '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -615,51 +615,51 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.24.1': - resolution: {integrity: sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==} + '@typescript-eslint/eslint-plugin@8.25.0': + resolution: {integrity: sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.24.1': - resolution: {integrity: sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==} + '@typescript-eslint/parser@8.25.0': + resolution: {integrity: sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.24.1': - resolution: {integrity: sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==} + '@typescript-eslint/scope-manager@8.25.0': + resolution: {integrity: sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.24.1': - resolution: {integrity: sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==} + '@typescript-eslint/type-utils@8.25.0': + resolution: {integrity: sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.24.1': - resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==} + '@typescript-eslint/types@8.25.0': + resolution: {integrity: sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.24.1': - resolution: {integrity: sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==} + '@typescript-eslint/typescript-estree@8.25.0': + resolution: {integrity: sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.24.1': - resolution: {integrity: sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==} + '@typescript-eslint/utils@8.25.0': + resolution: {integrity: sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.24.1': - resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==} + '@typescript-eslint/visitor-keys@8.25.0': + resolution: {integrity: sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/vfs@1.6.1': @@ -2155,8 +2155,8 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - preact@10.26.2: - resolution: {integrity: sha512-0gNmv4qpS9HaN3+40CLBAnKe0ZfyE4ZWo5xKlC1rVrr0ckkEvJvAQqKaHANdFKsGstoxrY4AItZ7kZSGVoVjgg==} + preact@10.26.4: + resolution: {integrity: sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -2506,8 +2506,8 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} hasBin: true @@ -2693,11 +2693,11 @@ snapshots: '@chevrotain/utils@11.0.3': {} - '@commitlint/cli@19.7.1(@types/node@22.13.5)(typescript@5.7.3)': + '@commitlint/cli@19.7.1(@types/node@22.13.8)(typescript@5.8.2)': dependencies: '@commitlint/format': 19.5.0 '@commitlint/lint': 19.7.1 - '@commitlint/load': 19.6.1(@types/node@22.13.5)(typescript@5.7.3) + '@commitlint/load': 19.6.1(@types/node@22.13.8)(typescript@5.8.2) '@commitlint/read': 19.5.0 '@commitlint/types': 19.5.0 tinyexec: 0.3.2 @@ -2744,15 +2744,15 @@ snapshots: '@commitlint/rules': 19.6.0 '@commitlint/types': 19.5.0 - '@commitlint/load@19.6.1(@types/node@22.13.5)(typescript@5.7.3)': + '@commitlint/load@19.6.1(@types/node@22.13.8)(typescript@5.8.2)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 '@commitlint/resolve-extends': 19.5.0 '@commitlint/types': 19.5.0 chalk: 5.4.1 - cosmiconfig: 9.0.0(typescript@5.7.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.13.5)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) + cosmiconfig: 9.0.0(typescript@5.8.2) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.13.8)(cosmiconfig@9.0.0(typescript@5.8.2))(typescript@5.8.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -3019,7 +3019,7 @@ snapshots: '@types/conventional-commits-parser@5.0.1': dependencies: - '@types/node': 22.13.5 + '@types/node': 22.13.8 '@types/debug@4.1.12': dependencies: @@ -3047,7 +3047,7 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@22.13.5': + '@types/node@22.13.8': dependencies: undici-types: 6.20.0 @@ -3055,87 +3055,87 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.24.1 - '@typescript-eslint/type-utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.1 + '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.25.0 + '@typescript-eslint/type-utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.25.0 eslint: 9.21.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@typescript-eslint/scope-manager': 8.24.1 - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.1 + '@typescript-eslint/scope-manager': 8.25.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.25.0 debug: 4.4.0 eslint: 9.21.0(jiti@2.4.2) - typescript: 5.7.3 + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.24.1': + '@typescript-eslint/scope-manager@8.25.0': dependencies: - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/visitor-keys': 8.24.1 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/visitor-keys': 8.25.0 - '@typescript-eslint/type-utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.8.2) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) debug: 4.4.0 eslint: 9.21.0(jiti@2.4.2) - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.24.1': {} + '@typescript-eslint/types@8.25.0': {} - '@typescript-eslint/typescript-estree@8.24.1(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.25.0(typescript@5.8.2)': dependencies: - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/visitor-keys': 8.24.1 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/visitor-keys': 8.25.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.1 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.24.1 - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.25.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.8.2) eslint: 9.21.0(jiti@2.4.2) - typescript: 5.7.3 + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.24.1': + '@typescript-eslint/visitor-keys@8.25.0': dependencies: - '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/types': 8.25.0 eslint-visitor-keys: 4.2.0 - '@typescript/vfs@1.6.1(typescript@5.7.3)': + '@typescript/vfs@1.6.1(typescript@5.8.2)': dependencies: debug: 4.4.0 - typescript: 5.7.3 + typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -3361,9 +3361,9 @@ snapshots: commander@7.2.0: {} - commitlint@19.7.1(@types/node@22.13.5)(typescript@5.7.3): + commitlint@19.7.1(@types/node@22.13.8)(typescript@5.8.2): dependencies: - '@commitlint/cli': 19.7.1(@types/node@22.13.5)(typescript@5.7.3) + '@commitlint/cli': 19.7.1(@types/node@22.13.8)(typescript@5.8.2) '@commitlint/types': 19.5.0 transitivePeerDependencies: - '@types/node' @@ -3403,21 +3403,21 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@22.13.5)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.13.8)(cosmiconfig@9.0.0(typescript@5.8.2))(typescript@5.8.2): dependencies: - '@types/node': 22.13.5 - cosmiconfig: 9.0.0(typescript@5.7.3) + '@types/node': 22.13.8 + cosmiconfig: 9.0.0(typescript@5.8.2) jiti: 2.4.2 - typescript: 5.7.3 + typescript: 5.8.2 - cosmiconfig@9.0.0(typescript@5.7.3): + cosmiconfig@9.0.0(typescript@5.8.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.7.3 + typescript: 5.8.2 cross-spawn@7.0.6: dependencies: @@ -4888,7 +4888,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.26.2: {} + preact@10.26.4: {} prelude-ls@1.2.1: {} @@ -5258,9 +5258,9 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.0.1(typescript@5.7.3): + ts-api-utils@2.0.1(typescript@5.8.2): dependencies: - typescript: 5.7.3 + typescript: 5.8.2 tslib@2.8.1: {} @@ -5273,7 +5273,7 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typescript@5.7.3: {} + typescript@5.8.2: {} undici-types@6.20.0: {} diff --git a/settings.gradle.kts b/settings.gradle.kts index be40a9a2f..f962c43d8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -195,7 +195,6 @@ if (buildAuxImage == "true") { include( ":crates:base", ":crates:builder", - ":crates:compression", ":crates:deps", ":crates:diag", ":crates:entry", @@ -265,9 +264,7 @@ if (buildPlugins == "true") { if (buildBenchmarks == "true") { include( - ":benchmarks:core", - ":benchmarks:graalvm", - ":benchmarks:server", + ":benchmarks:bench-graalvm", ) } diff --git a/third_party/Makefile b/third_party/Makefile index 2f44ad81a..933fc9d45 100644 --- a/third_party/Makefile +++ b/third_party/Makefile @@ -18,16 +18,17 @@ RELOCK ?= no CUSTOM_ZLIB ?= no NATIVE ?= no RELEASE ?= no +MUSL ?= no USE_NINJA ?= yes -ENABLE_CCACHE ?= yes -ENABLE_SCCACHE ?= yes +ENABLE_CCACHE ?= no +ENABLE_SCCACHE ?= no ELIDE_ROOT ?= $(realpath $(shell pwd)/..) MACOS_MIN_VERSION ?= 12.3 -NATIVE_TOOLS ?= sqlite boringssl apr +NATIVE_TOOLS ?= sqlite apr LANGS ?= pkl -REQUIRED ?= zlib sqlite boringssl apr +REQUIRED ?= zlib sqlite apr ifeq ($(RELEASE),yes) TARGET_ROOT ?= $(ELIDE_ROOT)/target/release @@ -90,21 +91,19 @@ endif GRADLE ?= ./gradlew -CFLAGS_BASE_ALL ?=-g -O2 -fPIC -fPIE -fno-omit-frame-pointer -DELIDE -DHAVE_OPENSSL -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS $(CFLAGS) +CFLAGS_BASE_ALL ?=$(shell cat ../tools/cflags/base | xargs) $(CFLAGS) CFLAGS_BASE_STRICT ?= -Werror -fsanitize=bounds -fsanitize-undefined-trap-on-error +CFLAGS_BASE_GCC ?=$(CFLAGS_BASE_ALL) $(shell cat ../tools/cflags/gcc | xargs) +CFLAGS_BASE_CLANG ?=$(CFLAGS_BASE_ALL) $(shell cat ../tools/cflags/clang | xargs) -CFLAGS_BASE_GCC ?=$(CFLAGS_BASE_ALL) -CFLAGS_BASE_GCC += -Wall -Wextra -Wpedantic -Wformat=2 -Wformat-overflow=2 -Wformat-truncation=2 -Wformat-security -Wnull-dereference -Wstack-protector -Wtrampolines -Walloca -Wvla -Warray-bounds=2 -Wimplicit-fallthrough=3 -Wtraditional-conversion -Wshift-overflow=2 -Wcast-qual -Wstringop-overflow=4 -Wconversion -Warith-conversion -Wlogical-op -Wduplicated-cond -Wduplicated-branches -Wformat-signedness -Wshadow -Wstrict-overflow=4 -Wundef -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wstack-usage=1000000 -Wcast-align=strict -CFLAGS_BASE_GCC += -fstack-protector-strong -fstack-clash-protection -fhardened -fstrict-flex-arrays=3 -fno-delete-null-pointer-checks -fno-strict-overflow -fno-strict-aliasing -fexceptions -CFLAGS_BASE_GCC += -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wl,-z,separate-code - -CFLAGS_BASE_CLANG ?=$(CFLAGS_BASE_ALL) -CFLAGS_BASE_CLANG += -fstack-protector-strong -fno-delete-null-pointer-checks -fno-strict-overflow -fno-strict-aliasing -fexceptions - -ifeq ($(CC),gcc) +ifeq ($(COMPILER),gcc) CFLAGS_BASE += $(CFLAGS_BASE_GCC) -else ifeq ($(CC),cc) +else ifeq ($(COMPILER),clang) CFLAGS_BASE += $(CFLAGS_BASE_CLANG) + USE_LD ?= lld +else + # default to baseline flags + CFLAGS_BASE += $(CFLAGS_BASE_ALL) endif ifeq ($(UNAME_P),x86_64) @@ -113,6 +112,11 @@ else ifeq ($(UNAME_P),arm) CFLAGS_BASE += -mbranch-protection=standard endif +ifneq ($(USE_LD),) +LD = $(USE_LD) +CFLAGS_BASE += -fuse-ld=$(USE_LD) +endif + ASMFLAGS_BASE ?=-Wa,--noexecstack $(ASMFLAGS) LDFLAGS_BASE ?= $(LDFLAGS) @@ -122,14 +126,15 @@ endif ifeq ($(RELEASE),yes) CMAKE_BUILD_TYPE ?= Release -ifeq ($(OS),Darwin) -CFLAGS_BASE += -O3 -CFLAGS_LTO ?= -flto=thin -LDFLAGS_BASE += -flto=thin + +ifeq ($(COMPILER),clang) +CFLAGS_BASE += -O3 -flto=thin else -CFLAGS_BASE += -O3 +CFLAGS_BASE += -O3 -flto=auto endif + else +CFLAGS_BASE += -O1 -g -flto=thin CMAKE_BUILD_TYPE ?= Debug endif @@ -148,7 +153,7 @@ else CFLAGS_BASE += -march=native -mtune=native endif else -CFLAGS_BASE += -mtune=generic +CFLAGS_BASE += -mtune=native ifeq ($(UNAME_P),x86_64) CFLAGS_BASE += -march=x86-64-v3 endif @@ -181,8 +186,17 @@ else RULE ?= @ endif +ifeq ($(MUSL),yes) +TARGET_FLAGS += --host=x86_64-linux-musl +export CC = x86_64-linux-musl-gcc +CC_INJECTED = $(CC) +endif + all: $(ALL_LIBS) +effective-cflags: + @echo "$(CFLAGS_BASE)" + pkl: apple/pkl/build apple/pkl/build: @@ -193,14 +207,14 @@ apple/pkl/build: apr: apache/apr/.libs CFLAGS_APR ?= -CFLAGS_APR +=$(CFLAGS_BASE) $(CFLAGS_LTO) -I$(ELIDE_ROOT)/third_party/google/boringssl/include -Wno-macro-redefined -Wno-tautological-type-limit-compare -LDFLAGS_APR ?=-L$(ELIDE_ROOT)/third_party/google/boringssl/build -lssl -lcrypto +CFLAGS_APR +=$(CFLAGS_BASE) -w +LDFLAGS_APR ?=-lssl -lcrypto LDFLAGS_APR +=$(LDFLAGS_BASE) # APR does not link with LLD. APR_PREFIX = CC="$(CC_INJECTED)" CXX="$(CXX)" LD="ld" CFLAGS="$(CFLAGS_APR)" LDFLAGS="$(LDFLAGS_APR)" -apache/apr/.libs: google/boringssl/build +apache/apr/.libs: @echo "" @echo "Building apache/apr..." $(RULE)cd apache/apr && ./buildconf \ @@ -211,6 +225,7 @@ apache/apr/.libs: google/boringssl/build --enable-threads \ --enable-posix-shm \ --enable-sysv-shm \ + $(TARGET_FLAGS) \ && $(APR_PREFIX) make clean-apr: @@ -219,7 +234,8 @@ clean-apr: boringssl: google/boringssl/build CMAKE_BORINGSSL ?= -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_LINKER=$(LD) $(EXTRA_CMAKE_FLAGS) -ifeq ($(OS),Darwin) + +ifeq ($(RELEASE),yes) CMAKE_BORINGSSL += -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON endif @@ -237,12 +253,13 @@ google/boringssl/build: $(RULE)cd google/boringssl && mkdir build && cd build \ && $(BORINGSSL_PREFIX) $(CMAKE) $(CMAKE_BORINGSSL) -DCMAKE_INSTALL_PREFIX=$(TARGET_ROOT) .. \ && $(BORINGSSL_PREFIX) $(CMAKE_BUILD) \ - && ./ssl_test \ - && cd .. \ && echo "BoringSSL is ready." +ifeq ($(MUSL),no) + $(RULE)cd google/boringssl/build && ./ssl_test && echo "BoringSSL test complete." +endif CFLAGS_ZLIB ?= -CFLAGS_ZLIB +=$(CFLAGS_BASE) $(CFLAGS_BASE_STRICT) -std=c11 +CFLAGS_ZLIB +=$(CFLAGS_BASE) $(CFLAGS_BASE_STRICT) -std=c11 -w LDFLAGS_ZLIB ?= LDFLAGS_ZLIB +=$(LDFLAGS_BASE) ZLIB_PREFIX = CC="$(CC_INJECTED)" CXX="$(CXX)" LD="$(LD)" CFLAGS="$(CFLAGS_ZLIB)" LDFLAGS="$(LDFLAGS_ZLIB)" @@ -258,20 +275,50 @@ $(TARGET_ROOT)/lib/libz.a: @echo "" @echo "Configuring zlib..." $(RULE)cd $(ZLIB_SRC) \ - && $(ZLIB_PREFIX) ./configure $(ZLIB_CONFIGURE) \ + && $(ZLIB_PREFIX) ./configure $(TARGET_FLAGS) $(ZLIB_CONFIGURE) \ && $(ZLIB_PREFIX) $(MAKE) \ && $(ZLIB_PREFIX) $(MAKE) install -SQLITE3_CONFIGURE ?=--enable-all --enable-memsys5 --enable-update-limit --enable-debug --enable-static --enable-shared -CFLAGS_SQLITE3 ?=$(CFLAGS_BASE) -fPIC -O2 - -SQLITE3_SETTINGS += -DSQLITE_CORE=1 -DSQLITE_DEFAULT_FILE_PERMISSIONS=0666 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS=1 -DSQLITE_ENABLE_API_ARMOR=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_DBSTAT_VTAB=1 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_ENABLE_MATH_FUNCTIONS=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_STAT4=1 -DSQLITE_HAVE_ISNAN=1 -DSQLITE_MAX_ATTACHED=125 -DSQLITE_MAX_COLUMN=32767 -DSQLITE_MAX_FUNCTION_ARG=127 -DSQLITE_MAX_LENGTH=2147483647 -DSQLITE_MAX_MMAP_SIZE=1099511627776 -DSQLITE_MAX_PAGE_COUNT=4294967294 -DSQLITE_MAX_SQL_LENGTH=1073741824 -DSQLITE_MAX_VARIABLE_NUMBER=250000 -DSQLITE_THREADSAFE=1 - -ifeq ($(OS),Darwin) -CFLAGS_SQLITE3 +=$(CFLAGS_BASE) -Wno-array-bounds -Wno-format-nonliteral -Wno-array-bounds-pointer-arithmetic -Wno-assign-enum -Wno-implicit-fallthrough -Wno-tautological-constant-in-range-compare $(SQLITE3_SETTINGS) -else -CFLAGS_SQLITE3 += -endif +SQLITE3_CONFIGURE ?=--enable-all +SQLITE3_CONFIGURE += --enable-memsys5 +SQLITE3_CONFIGURE += --enable-update-limit +SQLITE3_CONFIGURE += --disable-debug +SQLITE3_CONFIGURE += --enable-static +SQLITE3_CONFIGURE += --enable-shared + +SQLITE3_FLAGS =SQLITE_CORE=1 +SQLITE3_FLAGS += SQLITE_DEFAULT_FILE_PERMISSIONS=0666 +SQLITE3_FLAGS += SQLITE_DEFAULT_MEMSTATUS=0 +SQLITE3_FLAGS += SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS=1 +SQLITE3_FLAGS += SQLITE_ENABLE_API_ARMOR=1 +SQLITE3_FLAGS += SQLITE_ENABLE_COLUMN_METADATA=1 +SQLITE3_FLAGS += SQLITE_ENABLE_DBSTAT_VTAB=1 +SQLITE3_FLAGS += SQLITE_ENABLE_FTS3=1 +SQLITE3_FLAGS += SQLITE_ENABLE_FTS3_PARENTHESIS=1 +SQLITE3_FLAGS += SQLITE_ENABLE_FTS5=1 +SQLITE3_FLAGS += SQLITE_ENABLE_LOAD_EXTENSION=1 +SQLITE3_FLAGS += SQLITE_ENABLE_MATH_FUNCTIONS=0 +SQLITE3_FLAGS += SQLITE_ENABLE_RTREE=1 +SQLITE3_FLAGS += SQLITE_ENABLE_STAT4=1 +SQLITE3_FLAGS += SQLITE_HAVE_ISNAN=1 +SQLITE3_FLAGS += SQLITE_MAX_ATTACHED=25 +SQLITE3_FLAGS += SQLITE_MAX_COLUMN=32767 +SQLITE3_FLAGS += SQLITE_MAX_FUNCTION_ARG=127 +SQLITE3_FLAGS += SQLITE_MAX_LENGTH=2147483647 +SQLITE3_FLAGS += SQLITE_MAX_MMAP_SIZE=1099511627776 +SQLITE3_FLAGS += SQLITE_MAX_PAGE_COUNT=4294967294 +SQLITE3_FLAGS += SQLITE_MAX_SQL_LENGTH=1073741824 +SQLITE3_FLAGS += SQLITE_MAX_VARIABLE_NUMBER=250000 +SQLITE3_FLAGS += SQLITE_THREADSAFE=1 + +SQLITE3_SETTINGS ?=$(foreach flag,$(SQLITE3_FLAGS),-D$(flag)) + +# Force -O3 for sqlite. +CFLAGS_SQLITE3 ?=$(CFLAGS_BASE) -fPIC -w -O3 + +sqlite-settings: + @echo "Flags: $(SQLITE3_FLAGS)" + @echo "Settings: $(SQLITE3_SETTINGS)" LDFLAGS_SQLITE3 ?= LDFLAGS_SQLITE3 +=$(LDFLAGS_BASE) @@ -287,15 +334,12 @@ sqlite-clean: sqlite/Makefile: @echo "" @echo "Configuring sqlite3..." - $(RULE)cd sqlite && $(SQLITE3_PREFIX) ./configure --prefix=`pwd`/install $(SQLITE3_CONFIGURE) + $(RULE)cd sqlite && $(SQLITE3_PREFIX) ./configure --prefix=`pwd`/install $(TARGET_FLAGS) $(SQLITE3_CONFIGURE) $(SQLITE3_FLAGS) sqlite/sqlite3.c: sqlite/Makefile @echo "" @echo "Building sqlite3..." - $(RULE)cd sqlite \ - && $(SQLITE3_PREFIX) $(MAKE) OPTS="$(SQLITE3_SETTINGS)" sqlite3.c \ - && $(SQLITE3_PREFIX) $(MAKE) OPTS="$(SQLITE3_SETTINGS)" \ - && $(SQLITE3_PREFIX) $(MAKE) OPTS="$(SQLITE3_SETTINGS)" install + $(RULE)cd sqlite && $(SQLITE3_PREFIX) $(MAKE) sqlite3.c install GVM_BUILD_PREFIX ?= JAVA_HOME="$$HOME/.mx/jdks/$(LABS_JDK)/Contents/Home" diff --git a/third_party/oracle/graaljs.jar b/third_party/oracle/graaljs.jar index 41cae5169..7ed7c7175 100644 Binary files a/third_party/oracle/graaljs.jar and b/third_party/oracle/graaljs.jar differ diff --git a/third_party/oracle/truffle-api.jar b/third_party/oracle/truffle-api.jar new file mode 100644 index 000000000..02eccc285 Binary files /dev/null and b/third_party/oracle/truffle-api.jar differ diff --git a/third_party/oracle/truffle-js-snapshot-tool.jar b/third_party/oracle/truffle-js-snapshot-tool.jar deleted file mode 100644 index 357741c04..000000000 Binary files a/third_party/oracle/truffle-js-snapshot-tool.jar and /dev/null differ diff --git a/tools/cflags/base b/tools/cflags/base new file mode 100644 index 000000000..aeb9f25c1 --- /dev/null +++ b/tools/cflags/base @@ -0,0 +1,16 @@ +-g +-O3 +-fPIC +-fPIE +-fstack-clash-protection +-fstack-protector-strong +-fexceptions +-ffunction-sections +-fdata-sections +-fno-omit-frame-pointer +-fno-strict-aliasing +-fno-strict-overflow +-fno-delete-null-pointer-checks +-DELIDE +-DHAVE_OPENSSL +-Wno-hardened diff --git a/tools/cflags/clang b/tools/cflags/clang new file mode 100644 index 000000000..824e128a4 --- /dev/null +++ b/tools/cflags/clang @@ -0,0 +1 @@ +-flto diff --git a/tools/cflags/gcc b/tools/cflags/gcc new file mode 100644 index 000000000..adb126ae2 --- /dev/null +++ b/tools/cflags/gcc @@ -0,0 +1,44 @@ +-flto=auto +-fuse-linker-plugin +-fstrict-flex-arrays=3 +-ffunction-sections +-fdata-sections +-Wall +-Wextra +-Wpedantic +-Wformat=2 +-Wformat-overflow=2 +-Wformat-truncation=2 +-Wformat-security +-Wnull-dereference +-Wstack-protector +-Wtrampolines +-Walloca +-Wvla +-Warray-bounds=2 +-Wimplicit-fallthrough=3 +-Wtraditional-conversion +-Wshift-overflow=2 +-Wcast-qual +-Wstringop-overflow=4 +-Wconversion +-Warith-conversion +-Wlogical-op +-Wduplicated-cond +-Wduplicated-branches +-Wformat-signedness +-Wshadow +-Wstrict-overflow=4 +-Wundef +-Wstrict-prototypes +-Wswitch-default +-Wswitch-enum +-Wstack-usage=1000000 +-Wcast-align=strict +-Wno-unused-variable +-Wl,-z,relro +-Wl,-z,now +-Wl,-z,noexecstack +-Wl,-z,separate-code +-Wl,--emit-relocs +-Wa,--noexecstack diff --git a/tools/elide-build/src/main/kotlin/elide/toolchain/host/HostToolchain.kt b/tools/elide-build/src/main/kotlin/elide/toolchain/host/HostToolchain.kt new file mode 100644 index 000000000..96badae9d --- /dev/null +++ b/tools/elide-build/src/main/kotlin/elide/toolchain/host/HostToolchain.kt @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2024 Elide Technologies, Inc. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + +package elide.toolchain.host + +import org.gradle.api.Project +import org.jetbrains.kotlin.konan.target.HostManager + +private const val ELIDE_TARGET = "elide.target" +private const val ELIDE_OS = "elide.targetOs" +private const val ELIDE_ARCH = "elide.targetArch" +private const val ELIDE_LIBC = "elide.targetLibc" + +private const val ARM64 = "arm64" +private const val AMD64 = "amd64" +private const val X86_64 = "x86_64" +private const val AARCH64 = "arch64" +private const val GNU = "gnu" +private const val MUSL = "musl" +private const val MSVC = "msvc" +private const val APPLE = "apple" +private const val DARWIN = "darwin" +private const val LINUX = "linux" +private const val WINDOWS = "windows" +private const val LINUX_AMD64_MUSL = "$LINUX-$AMD64-$MUSL" +private const val LINUX_AMD64_GNU = "$LINUX-$AMD64" +private const val LINUX_AARCH64_MUSL = "$LINUX-$AARCH64-$MUSL" +private const val LINUX_AARCH64_GNU = "$LINUX-$AARCH64" +private const val DARWIN_AARCH64 = "$DARWIN-$AARCH64" +private const val DARWIN_AMD64 = "$DARWIN-$AMD64" +private const val WINDOWS_AMD64 = "$WINDOWS-$AMD64" + +private fun Project.getProp(name: String): String? = (properties[name] as? String)?.ifBlank { null } + +/** + * Describes information about a native target supported by Elide. + * + * Target info is typically implemented by a [ElideTarget] enumerated instance; such instances only exist for targets + * supported by Elide. + */ +public interface TargetInfo { + public val os: String + public val arch: String + public val libc: String + + public val tag: String get() = "$os-$arch" + + public val triple: String + + public val resources: List + get() = listOf( + "META-INF/elide/embedded/runtime/*/*-$tag.*", + ) + + public companion object { + private fun defaultLibcFor(os: String): String = when (os) { + DARWIN -> APPLE + LINUX -> GNU + WINDOWS -> MSVC + else -> error("Unsupported OS: $os") + } + + /** + * Resolve the current platform's target info. + */ + public fun current(project: Project): TargetInfo = project.resolveTarget() + + /** + * Resolve the current platform's target info. + */ + public fun Project.from( + os: String = System.getProperty("os.name").lowercase(), + arch: String = System.getProperty("os.arch").lowercase(), + libc: String = defaultLibcFor(os), + ): TargetInfo = findTarget( + os, + arch, + libc, + ) + } +} + +/** + * Supported Elide target environments. + * + * Describes each supported native environment and its characteristics and capabilities; each instance exists at the + * intersection of an [os], [arch], and [libc] implementation. + * + * Information provided by instances include: + * + * - [os]: The target operating system. + * - [arch]: The target micro-architecture. + * - [libc]: The target C standard library implementation. + * - [tag]: A shorthand identifier for the target; this is an Elide-specific value which ends up in release tarballs. + * - [triple]: The LLVM target triple for the target; used for Rust and C/C++ compilation. + * - [resources]: Resources inclusions for this target with regard to final JARs and native images. + */ +public enum class ElideTarget( + override val os: String, + override val arch: String, + override val libc: String, +) : TargetInfo { + MACOS_AARCH64(DARWIN, AARCH64, APPLE), + MACOS_AMD64(DARWIN, AMD64, APPLE), + LINUX_AMD64_GNU(LINUX, AMD64, GNU), + LINUX_AMD64_MUSL(LINUX, AMD64, MUSL), + LINUX_AARCH64_GNU(LINUX, AARCH64, GNU), + LINUX_AARCH64_MUSL(LINUX, AARCH64, MUSL), + WINDOWS_AMD64(WINDOWS, AMD64, MSVC); + + // x86_64-unknown-linux-gnu + // x86_64-unknown-linux-musl + // x86_64-apple-darwin + // aarch64-apple-darwin + // x86_64-pc-windows-msvc + override val triple: String get() = when (this) { + LINUX_AMD64_MUSL, + LINUX_AMD64_GNU, + LINUX_AARCH64_GNU, + LINUX_AARCH64_MUSL -> "${canonicalArch(arch)}-unknown-$os-$libc" + MACOS_AARCH64, + MACOS_AMD64 -> "${canonicalArch(arch)}-$APPLE-$os" + WINDOWS_AMD64 -> "${canonicalArch(arch)}-pc-$os-$libc" + } + + private companion object { + private fun canonicalArch(arch: String): String = when (arch) { + AMD64, X86_64 -> X86_64 + AARCH64, ARM64 -> AARCH64 + else -> error("Unsupported architecture: $arch") + } + } +} + +private fun Project.findTarget(os: String, arch: String, libc: String): ElideTarget { + return when (val assembled = ElideTarget.entries.find { it.os == os && it.arch == arch && it.libc == libc }) { + // ---- 3. Then we should take after the host. + null -> when { + // Only AMD64 is supported on Windows. + HostManager.hostIsMingw -> ElideTarget.WINDOWS_AMD64 + + // Linux supports multiple libc implementations and architectures. + HostManager.hostIsLinux -> when (val linuxLibc = getProp(ELIDE_LIBC) ?: GNU) { + GNU -> when (System.getProperty("os.arch").lowercase().trim()) { + AARCH64 -> ElideTarget.LINUX_AARCH64_GNU + else -> ElideTarget.LINUX_AMD64_GNU + } + MUSL -> when (System.getProperty("os.arch").lowercase().trim()) { + AARCH64 -> ElideTarget.LINUX_AARCH64_MUSL + else -> ElideTarget.LINUX_AMD64_MUSL + } + else -> error("Unsupported libc: $linuxLibc") + } + + // macOS supports only two architectures and no variance in libc. + HostManager.hostIsMac -> when (System.getProperty("os.arch")) { + AARCH64 -> ElideTarget.MACOS_AARCH64 + else -> ElideTarget.MACOS_AMD64 + } + + else -> error( + "Only macOS, Linux, and Windows are supported for Elide." + ) + } + + else -> assembled + } +} + +/** + * Resolve target information for native builds; this includes the target operating system, micro-architecture, and libc + * implementation. + * + * If a target is specified explicitly with `elide.target`, this takes precedence. Otherwise, the target is assembled + * from piecemeal properties listed below (and defaults, where needed). If no properties are specified at all, defaults + * result in a host-targeted build. + * + * This code does not contemplate flags like `march` and `mtune` directly; for example, no consideration is made for + * symbolic architecture targets like `native`. + * + * @param target The target string to resolve. + * @return The resolved target information. + */ +public fun Project.resolveTarget(target: String? = getProp(ELIDE_TARGET)): ElideTarget = when (target) { + // ---- 1. Is the target specified explicitly? + + LINUX_AMD64_MUSL -> ElideTarget.LINUX_AMD64_MUSL + LINUX_AMD64_GNU -> ElideTarget.LINUX_AMD64_GNU + LINUX_AARCH64_MUSL -> ElideTarget.LINUX_AARCH64_MUSL + LINUX_AARCH64_GNU -> ElideTarget.LINUX_AARCH64_GNU + DARWIN_AMD64 -> ElideTarget.MACOS_AMD64 + DARWIN_AARCH64 -> ElideTarget.MACOS_AARCH64 + WINDOWS_AMD64 -> ElideTarget.WINDOWS_AMD64 + + // ---- 2. Is the target specified piecemeal? + + else -> findTarget( + getProp(ELIDE_OS) ?: System.getProperty("os.name").lowercase(), + getProp(ELIDE_ARCH) ?: System.getProperty("os.arch"), + getProp(ELIDE_LIBC) ?: GNU, + ) +} diff --git a/tools/elide-build/src/main/kotlin/org/gradle/kotlin/dsl/ElideConventionsDsl.kt b/tools/elide-build/src/main/kotlin/org/gradle/kotlin/dsl/ElideConventionsDsl.kt index 7be2068a0..3cf766e23 100644 --- a/tools/elide-build/src/main/kotlin/org/gradle/kotlin/dsl/ElideConventionsDsl.kt +++ b/tools/elide-build/src/main/kotlin/org/gradle/kotlin/dsl/ElideConventionsDsl.kt @@ -20,8 +20,13 @@ import java.nio.file.Files import java.nio.file.Path import elide.internal.conventions.ElideBuildExtension import elide.internal.conventions.ElideConventionPlugin +import elide.toolchain.host.TargetInfo -public fun Project.checkNatives(vararg needs: TaskProvider<*>, enforce: Boolean = true) { +public fun Project.checkNatives( + vararg needs: TaskProvider<*>, + enforce: Boolean = true, + targetInfo: TargetInfo = TargetInfo.current(project), +) { val quickbuild = ( project.properties["elide.release"] != "true" || project.properties["elide.buildMode"] == "dev" @@ -33,10 +38,15 @@ public fun Project.checkNatives(vararg needs: TaskProvider<*>, enforce: Boolean val checkNative by tasks.registering { group = "build" description = "Check native libraries required for build/test" + mustRunAfter( + ":packages:graalvm:natives" + ) doFirst { val targetRoot = Path.of( - rootProject.layout.projectDirectory.dir("target").asFile.path - ).resolve(if (isRelease) "release" else "debug") + rootProject.layout.projectDirectory.dir( + "target/${targetInfo.triple}/${if (isRelease) "release" else "debug"}" + ).asFile.path + ) val sqliteLibRoot = rootProject.layout.projectDirectory.dir("third_party/sqlite/install/lib").asFile.toPath() val ext = when { diff --git a/tools/scripts/build-release-debug.sh b/tools/scripts/build-release-debug.sh index ee0dc0b4c..fe08be966 100755 --- a/tools/scripts/build-release-debug.sh +++ b/tools/scripts/build-release-debug.sh @@ -42,7 +42,7 @@ root=$(pwd) echo "- Building release root (variant: $variant / platform: $platform)..." pushd packages/cli/build/native/nativeCompile \ && mkdir -p "$archive_prefix-$version-$platform/" \ - && cp -fr elide.debug $root/packages/cli/packaging/content/* ./*.{so,dylib,dll} resources "$archive_prefix-$version-$platform/" + && cp -fr elide $root/packages/cli/packaging/content/* ./*.{so,dylib,dll} resources "$archive_prefix-$version-$platform/" echo "- Building tar package (variant: $variant / platform: $platform)..." tar -cf "$archive_prefix-$version-$platform.tar" "$archive_prefix-$version-$platform/" diff --git a/tools/scripts/sqlite.ts b/tools/scripts/sqlite.ts new file mode 100644 index 000000000..bd322631e --- /dev/null +++ b/tools/scripts/sqlite.ts @@ -0,0 +1,10 @@ +const { Database } = require("elide:sqlite") + +const db: Database = new Database() +db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT);") +db.exec("INSERT INTO test (name) VALUES ('foo');") +const query = db.query("SELECT * FROM test LIMIT 1;") +const result = query.get() +const name = result.name +console.info(`Name: "${name}"`) +console.info("Done.") diff --git a/tools/third_party/README.md b/tools/third_party/README.md deleted file mode 100644 index 6d081c7ef..000000000 --- a/tools/third_party/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Third-party Tools - -This directory contains tools from third parties which are used within the Elide codebase. diff --git a/tools/umbrella/Cargo.toml b/tools/umbrella/Cargo.toml index 61e5e3481..daaa3e6e5 100644 --- a/tools/umbrella/Cargo.toml +++ b/tools/umbrella/Cargo.toml @@ -15,57 +15,41 @@ default = [ "lib", "all", "entry", + "oro", ] +allocator = [ + "jemalloc", + "mimalloc", +] +mimalloc = [] all = [ "js", "jvm", ] diag = [] -js = ["orogene"] +js = ["oro"] jvm = [] lib = ["jni/default"] entry = ["jni/invocation"] -python = ["ruff"] -jemalloc = [] +python = [] +uv = ["tokio"] +oro = ["tokio", "orogene"] +oxc = [] +ruff = [] +jemalloc = ["tikv-jemallocator"] ruby = [] wasm = [] -biome = [ - "biome_diagnostics", - "biome_diagnostics_categories", - "biome_diagnostics_macros", - "biome_formatter", - "biome_css_formatter", - "biome_json_formatter", - "biome_js_formatter", - "biome_markup", - "biome_console", - "biome_suppression", - "biome_unicode_table", -] -experimental = [ - "oxc", - "biome", - "ruby", - "biome", - "uv", -] +biome = [] +experimental = ["ruby"] [lints.rust] dead_code = "allow" [dependencies] ## Local -base = { workspace = true } -deps = { workspace = true } diag = { workspace = true } entry = { workspace = true } -js = { workspace = true } -model = { workspace = true } posix = { workspace = true } -project = { workspace = true } -protocol = { workspace = true } -sqlite = { workspace = true } -substrate = { workspace = true } terminal = { workspace = true } transport = { workspace = true } @@ -73,39 +57,21 @@ transport = { workspace = true } anyhow = { workspace = true } clap = { workspace = true, features = ["derive", "string", "wrap_help"] } console-subscriber = { workspace = true } -colored = { workspace = true } java_native = { workspace = true } jni = { workspace = true, default-features = false } jni-sys = { workspace = true } miette = { workspace = true } mimalloc = { workspace = true } serde = { workspace = true } -tikv-jemallocator = { workspace = true } -tokio = { workspace = true } +tikv-jemallocator = { workspace = true, optional = true } +tokio = { workspace = true, optional = true } typeshare = { workspace = true } ## Orogene orogene = { workspace = true, optional = true } -## Oxc -oxc = { workspace = true, optional = true } - -## Astral -ruff = { workspace = true, optional = true } -uv = { workspace = true, optional = true } - -## Biome -biome_console = { workspace = true, optional = true } -biome_css_formatter = { workspace = true, optional = true } -biome_diagnostics = { workspace = true, optional = true } -biome_diagnostics_categories = { workspace = true, optional = true } -biome_diagnostics_macros = { workspace = true, optional = true } -biome_formatter = { workspace = true, optional = true } -biome_js_formatter = { workspace = true, optional = true } -biome_json_formatter = { workspace = true, optional = true } -biome_markup = { workspace = true, optional = true } -biome_suppression = { workspace = true, optional = true } -biome_unicode_table = { workspace = true, optional = true } - [build-dependencies] builder = { workspace = true } + +[package.metadata.cargo-machete] +ignored = ["anyhow", "entry", "oxc", "sqlite"] diff --git a/tools/umbrella/build.rs b/tools/umbrella/build.rs index 1e80ccc7e..0a101781d 100644 --- a/tools/umbrella/build.rs +++ b/tools/umbrella/build.rs @@ -4,8 +4,9 @@ fn main() { match target_os() { TargetOs::Linux => { println!("cargo:rustc-link-lib=dylib=stdc++"); - println!("cargo:rustc-link-lib=static=ssl"); - println!("cargo:rustc-link-lib=static=crypto"); + println!("cargo:rustc-link-lib=dylib=ssl"); + println!("cargo:rustc-link-lib=dylib=z"); + println!("cargo:rustc-link-lib=dylib=crypto"); } TargetOs::Darwin => { println!("cargo:rustc-link-lib=dylib=c++"); diff --git a/tools/umbrella/src/lib.rs b/tools/umbrella/src/lib.rs index 526dba0c1..aa386c6e1 100644 --- a/tools/umbrella/src/lib.rs +++ b/tools/umbrella/src/lib.rs @@ -20,9 +20,18 @@ extern crate core; static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; #[cfg(all( + feature = "allocator", + target_env = "musl" +))] +#[global_allocator] +static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; + +#[cfg(all( + feature = "allocator", feature = "jemalloc", not(target_os = "windows"), not(target_os = "openbsd"), + not(target_env = "musl"), any( target_arch = "x86_64", target_arch = "aarch64", @@ -32,23 +41,26 @@ static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; #[global_allocator] static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; +#[cfg(feature = "orogene")] use clap::Args as ClapArgs; -use clap::Command; + +#[cfg(feature = "orogene")] +use miette::Result; + use java_native::{jni, on_load, on_unload}; use jni::JNIEnv; use jni::objects::{JClass, JObjectArray, JString}; use jni::sys::{JavaVM, jint, jobjectArray, jstring}; use jni_sys::JNI_VERSION_21; -use miette::Result; use std::collections::HashMap; use std::ffi::{OsStr, c_void}; use std::sync::OnceLock; + +#[cfg(feature = "orogene")] use tokio::runtime::Runtime; pub use diag; -pub use js; pub use posix; -pub use sqlitejdbc; pub use terminal; pub use transport; @@ -99,6 +111,9 @@ pub fn initialize_elide_native(_env: Option) -> u32 { fn tool_map() -> &'static HashMap<&'static str, &'static ToolInfo> { static TOOL_MAP: OnceLock> = OnceLock::new(); TOOL_MAP.get_or_init(|| { + #[cfg(not(any(feature = "biome", feature = "orogene", feature = "oxc", feature = "ruff", feature = "uv")))] + let m = HashMap::new(); + #[cfg(any(feature = "biome", feature = "orogene", feature = "oxc", feature = "ruff", feature = "uv"))] let mut m = HashMap::new(); #[cfg(feature = "biome")] m.insert("biome", &BIOME_INFO); @@ -114,9 +129,11 @@ fn tool_map() -> &'static HashMap<&'static str, &'static ToolInfo> { }) } +#[cfg(any(feature = "orogene", feature = "uv"))] static RUNTIME: OnceLock = OnceLock::new(); /// Obtain the active Tokio runtime; if one is not already initialized, a new one will be created. +#[cfg(any(feature = "orogene", feature = "uv"))] fn obtain_runtime() -> &'static Runtime { RUNTIME.get_or_init(|| { tokio::runtime::Builder::new_multi_thread() @@ -148,7 +165,7 @@ fn run_ruff_entry(args: Vec) -> ExitStatus { #[cfg(feature = "orogene")] pub fn run_oro_with_args(args: Vec) -> Result<()> { - let cmd = Command::new("orogene"); + let cmd = clap::Command::new("orogene"); let again = Orogene::augment_args(cmd); // Execute the future, blocking the current thread until completion @@ -260,18 +277,26 @@ fn decode_tool_args(mut env: JNIEnv, args: JObjectArray) -> Vec( env: JNIEnv<'local>, _class: JClass<'local>, args: JObjectArray<'local>, ) -> jint { - #[cfg(feature = "orogene")] match run_oro_with_args(decode_tool_args(env, args)) { Ok(_) => 0, Err(_) => 1, } - #[cfg(not(feature = "orogene"))] +} + +#[cfg(not(feature = "orogene"))] +#[jni("dev.elide.cli.bridge.CliNativeBridge")] +pub fn runOrogene<'local>( + _env: JNIEnv<'local>, + _class: JClass<'local>, + _args: JObjectArray<'local>, +) -> jint { return -1; }