Conversation
Python CI/CD (unix, microsoft) now skips runs when only Rust-port files change (crates/, Cargo manifests, docs/, Justfile). New rust.yml runs fmt + clippy -D warnings + the full test suite (including golden parity) on Linux/macOS/Windows with autocrlf disabled so byte-level goldens hold. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
generate_legacy_goldens.py captures the Python implementation's outputs: per-fixture components, token/line counts, full tree renders, and v1-scope tree renders (deferred-language extractors stubbed). These are the behavioral contract for the Rust port's parity suite. diff_components.py is the dev-loop diff tool. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
tree_plus_core: model, deterministic rich-compatible renderer, natural sort (natsort os_sorted parity), fnmatch-compatible ignores, amortized globs, wc-parity counting, and component extraction: - tree-sitter extractors for Rust, Python, JS/TS, C/C++ with formatters that reproduce the legacy output (golden-parity tested, including catastrophic.c) and salvage ERROR regions on invalid syntax - regex extractors (LazyLock, linear-time engine only) for markers, Markdown/RST/txt, .env, requirements, Makefile/Justfile, Angular - native parsers for JSON/JSONL/YAML/TOML/CSV and SQLite (feature) tree_plus_cli: clap binary as tree_plus + tprs alias (PATH collision with the Python entry point), legacy flags, footer parity, real terminal-width detection. Parallel traversal with rayon behind a deterministic sort; arbitrary bytes never panic (robustness suite); criterion benches included. 55-85x faster than the Python implementation end to end. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Plus a Justfile with install (tprs), test, lint, goldens, and bench recipes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
type struct/interface headers and column-0 func signatures, matching
legacy parse_go exactly (golden-parity tested, including the multiline
method signature fixture). Legacy quirks preserved: `func f() {}` and
generic type headers are skipped, raw tabs kept in signatures.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ritus CI runs stable clippy, which flags collapsible_match patterns the local nightly toolchain accepted. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Owner
Author
|
CI status:
🤖 Generated with Claude Code |
Two distinct overflows surfaced by running tprs on the Linux kernel: 1. Tree-sitter extractor visitors (C/C++, Rust, Python, TypeScript, Go) recursed on AST depth. arch/x86/kernel/cpu/microcode/intel-ucode-defs.h is a headerless initializer-list fragment that parses as a deeply nested ERROR tree and blew rayon's 2 MiB worker stacks. All visitors now traverse with explicit heap stacks; emission order is unchanged (golden parity suite still passes byte-for-byte). The C/C++ extractor threads deferred work (record closers, template field suppression, ERROR salvage) through a Work queue to preserve legacy ordering. 2. Rayon work-stealing nests from_folder frames on a worker while it waits in join, leaving too little headroom for tree-sitter's C frames on big trees (drivers/ segfaulted in ts_subtree_retain). from_seeds now runs in a dedicated pool with 16 MiB worker stacks. Adds a regression test extracting deeply nested inputs for all six tree-sitter languages on a 512 KiB thread, and records Linux-kernel benchmarks in docs/performance.md (101k files: concise 0.50 s, full 12.4 s; linux/kernel subdir ~56x faster than the Python CLI). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…4s / 1.5GB) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Rust rewrite of tree_plus for the declared version-1 scope (local filesystem mode), preserving the Python implementation's observable behavior via golden parity tests.
crates/tree_plus_core: model, deterministic rich-compatible renderer, natural sort (natsort os_sorted parity), fnmatch ignores + amortized globs, wc-parity counting, component extraction (extract_components, theparse_filerename)catastrophic.c, 191/191 components)crates/tree_plus_cli:tree_plus+tprsalias (avoids PATH collision with the Python entry point)rust.yml(fmt, clippy -D warnings, tests on Linux/macOS/Windows)Testing
Performance (docs/performance.md)
Notes for review
🤖 Generated with Claude Code