Everything belonging to the v4 TypeScript engine moves to the master-v4 branch: apps/, packages/, build-utils/, changesets, pnpm workspace, turbo, the Node.js CI workflow and the ts-* release jobs. What remains is the Rust workspace under rust/, the npm wrapper and platform packages, the GitHub Action, Docker image, flake, skills, benchmark and fixtures/. - rust.yml gains a smoke job that runs the release binary against fixtures/ (json, sarif, html) and asserts clones and reporters - release.yml keeps only the Rust jobs; pnpm removed from every workflow; audit.yml keeps cargo audit + cargo deny; dependabot drops the root npm entry - root package.json becomes a thin private package depending on the exact jscpd@5 version so the pre-commit hook keeps installing the binary; sync-version.mjs keeps it in step - .pre-commit-hooks.yaml used v4-only flags that the v5 CLI rejects; fixed - FORMATS.md is now generated from the Rust tokenizer (224 formats) - README, docs, CONTRIBUTING, SECURITY, package and crate descriptions, benchmark and skills rewritten for v5 on its own terms: no v5-vs-v4 speed multipliers anywhere, a single "Looking for v4?" pointer to master-v4
Benchmark Tools
This directory contains all third-party tools required by the benchmark script. Install each tool by following the instructions below, then run ./benchmark.sh from the parent directory.
Quick Install
cd tools/
npm install
This installs jscpd-rs and Fallow (the only tools distributed via npm). The remaining tools must be installed manually.
Tools
jscpd@5 (local build)
The jscpd v5 Rust binary, built from the rust/ directory in this repository.
cd ../../rust/
cargo build --release
The binary is expected at ../../rust/target/release/jscpd.
jscpd-rs (npm)
Installed in tools/node_modules/ via npm install. The npm package downloads a prebuilt Rust binary for the current platform.
npm install
Binary: node_modules/.bin/jscpd-rs
Fallow dupes
Installed in tools/node_modules/ via npm install. Fallow is a Rust-based code intelligence tool; the dupes subcommand performs structural clone detection for TypeScript/JavaScript projects.
npm install
Binary: node_modules/.bin/fallow
Note: Fallow must run from inside the target directory (it has no path argument). The benchmark script
cds into the fixtures directory before invoking it.
PMD CPD
Install via Homebrew (macOS) or download from pmd.github.io.
brew install pmd
PMD requires a Java runtime (8+). The pmd command must be on $PATH.
Note: The benchmark runs PMD CPD for all 34 supported languages individually and sums the results. This takes ~30 seconds.
Duplo
A prebuilt macOS arm64 binary is included at tools/duplo. To replace it:
- Download from github.com/dlidstrom/Duplo/releases
- Place the binary at
tools/duplo chmod +x tools/duplo
# Verify
./duplo -help
Simian
A prebuilt JAR is included at tools/simian.jar. To replace it:
- Download from simian.quandarypeak.com
- Place the JAR at
tools/simian.jar
Requires a Java runtime:
java -jar tools/simian.jar -help