Files
apk d790c6c1d3 chore: make master v5-only
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
2026-09-02 10:15:10 +02:00
..
2026-09-02 10:15:10 +02:00

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:

  1. Download from github.com/dlidstrom/Duplo/releases
  2. Place the binary at tools/duplo
  3. chmod +x tools/duplo
# Verify
./duplo -help

Simian

A prebuilt JAR is included at tools/simian.jar. To replace it:

  1. Download from simian.quandarypeak.com
  2. Place the JAR at tools/simian.jar

Requires a Java runtime:

java -jar tools/simian.jar -help