Files
codegraph/codegraph-kernel/Cargo.toml
T
Colby Mchenry c58f0417c6 fix(swift): a call written after try! links what it calls on Windows (#2683)
The Windows kernels read the `!` of every `try!` as a logical not, so
`try! Message2(data: d)` became a call of `! Message2` that never resolves,
and a call through a receiver lost it: `try! Settings.Defaults.load()` was a
bare `load`.

The cause is the grammar's C, not the walker. tree-sitter-swift 0.7.3's
external scanner steps aside for the `!` of `try!` through a 64-bit mask
whose entry is built as `1UL << FAKE_TRY_BANG`, bit 32. `unsigned long` is 32
bits on Windows and MSVC folds the overflowing shift to 0 (warning C4293),
so the scanner never stepped aside: `try` parsed alone, then a prefix `!` on
the callee. macOS and Linux have 64-bit longs, and clang's wasm32 build folds
the shift to bit 31 (`_directive_endif`, valid at every expression start),
so the wasm and the other kernels have always read `try!` right.

The kernel now compiles the crate tarball's src/ itself, from
codegraph-kernel/grammars/swift, with upstream 0.7.4's one-line fix (`1ULL`),
as it already does for the Kotlin, Lua, Scala and Dart grammars. The patch and
its provenance are in docs/grammars/tree-sitter-swift.patch and .md. parser.c
is unchanged, so the node-kind and field tables still match the wasm, which
is untouched.

TortureTry.swift pins calls after try!, try? and try on both engines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 21:49:17 +00:00

78 lines
3.2 KiB
TOML

[package]
name = "codegraph-kernel"
version = "0.1.0"
edition = "2021"
license = "MIT"
publish = false
description = "Native extraction kernel for CodeGraph — tree-sitter parse+extract with one JS boundary crossing per file"
[lib]
crate-type = ["cdylib"]
[dependencies]
napi = { version = "3", default-features = false, features = ["napi8"] }
napi-derive = "3"
tree-sitter = "0.25"
sha2 = "0.10"
regex = "1"
# Grammars — MUST stay revision-matched with the wasm grammars the fallback
# path loads (tree-sitter-wasms npm package / src/extraction/wasm/). The
# kernel-grammar-parity test asserts node-kind-table equality at test time;
# bump these together with the wasm side or that gate fails.
tree-sitter-typescript = "0.23"
tree-sitter-javascript = "0.25"
tree-sitter-java = "0.23"
tree-sitter-python = "0.23"
tree-sitter-go = "0.23"
# Pinned exact: the vendored wasm (src/extraction/wasm/) was built from these
# tags' checked-in parser.c, sha-matched against these registry tarballs
# (R7a prep, #1345). A patch bump here without re-vendoring breaks the match.
tree-sitter-c = "=0.24.2"
tree-sitter-cpp = "=0.23.4"
tree-sitter-rust = "=0.24.2"
# csharp: the vendored wasm (#717) predates the kernel and was verified
# table-identical to this crate's tarball (ABI 15, STATE_COUNT 8053, node-kind
# and field tables — csharp checklist header). Bump crate + wasm together.
tree-sitter-c-sharp = "=0.23.5"
# ruby: content bump, ABI stays 14 (the v0.23.1 tag predates the ABI-15
# generator) — kernel-grammar-parity asserts same-revision, not same-ABI.
tree-sitter-ruby = "=0.23.1"
# php: the walker calls LANGUAGE_PHP (the full HTML-interleaving variant the
# wasm ships) — NEVER LANGUAGE_PHP_ONLY, which errors on leading HTML.
tree-sitter-php = "=0.24.2"
# swift: NOT a crate dep — the kernel compiles tree-sitter-swift 0.7.3's
# tarball src/ itself (grammars/swift, build.rs), with a one-line scanner fix
# the crate's own build lacks on Windows (`try!`; docs/grammars/
# tree-sitter-swift.md). The vendored wasm is built from the same tarball.
# r: the vendored wasm IS r-lib v1.2.0 and this crate's tarball ships both
# generated artifacts sha-identical to the tag (parser.c 6221657347…,
# scanner.c 1209d11076… — r checklist §Grammar prep). ABI 14 (the tag
# predates the ABI-15 generator) — parity asserts same-revision, not
# same-ABI (ruby precedent). Bump crate + wasm together.
tree-sitter-r = "=1.2.0"
# luau: the vendored wasm IS tree-sitter-grammars v1.2.0 and this crate's
# tarball ships parser.c/scanner.c sha-identical to the tag (8f25bc17… /
# a157bb52… — lua-luau checklist §Grammar prep). ABI 14. Lua itself is
# vendored C (build.rs) — its v0.4.1 revision is not on crates.io.
tree-sitter-luau = "=1.2.0"
# tree-sitter-language: the version-agnostic LanguageFn shim for the vendored
# grammar C (kotlin, lua, scala, dart, swift — see build.rs).
tree-sitter-language = "0.1"
# Stack-bounds queries for the walker stack guard (src/stack.rs, #1581):
# pthread_getattr_np / pthread_get_stackaddr_np. Already in the lock file
# transitively; Windows uses a hand-declared kernel32 extern instead.
[target.'cfg(unix)'.dependencies]
libc = "0.2"
[build-dependencies]
napi-build = "2"
cc = "1"
[profile.release]
lto = true
codegen-units = 1
strip = "symbols"