{"_id":"@benchguard/win32-x64","_rev":"3-d50930e1bb9eee66f131ba60f01069aa","name":"@benchguard/win32-x64","dist-tags":{"bootstrap":"0.0.0-bootstrap.0","latest":"0.1.1"},"versions":{"0.0.0-bootstrap.0":{"name":"@benchguard/win32-x64","version":"0.0.0-bootstrap.0","license":"MIT OR Apache-2.0","_id":"@benchguard/win32-x64@0.0.0-bootstrap.0","maintainers":[{"name":"mrwinrock","email":"mrwinrock11@gmail.com"}],"homepage":"https://github.com/MrWinRock/benchguard#readme","bugs":{"url":"https://github.com/MrWinRock/benchguard/issues"},"os":["win32"],"cpu":["x64"],"dist":{"shasum":"4393df059a7d7defde780b2228363bfbd0671f05","tarball":"https://registry.npmjs.org/@benchguard/win32-x64/-/win32-x64-0.0.0-bootstrap.0.tgz","fileCount":5,"integrity":"sha512-ZyCyemWQPNmLgq2OEbOvTYEyUebe+bRTUmENYiz/3TTi52uhR0XbToPngD8cbWsnVitp0pO3ZdCtOdqk+lE0Cw==","signatures":[{"sig":"MEUCICXDWzjLo+MlEVc229P3jfkHAjEpSEP2DIyx9wqj+dyJAiEAuGDWLRb42ve0nR0nYK+DSHFLeHrmo7OaMThXzOgneP4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1106983},"gitHead":"4c9d02bbac67374c74881601465b29f2943305e4","_npmUser":{"name":"mrwinrock","email":"mrwinrock11@gmail.com"},"repository":{"url":"git+https://github.com/MrWinRock/benchguard.git","type":"git","directory":"npm/win32-x64"},"_npmVersion":"11.16.0","description":"BenchGuard native binary for Windows x64","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/win32-x64_0.0.0-bootstrap.0_1785315507577_0.09165716520009215","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@benchguard/win32-x64","version":"0.1.0","license":"MIT OR Apache-2.0","_id":"@benchguard/win32-x64@0.1.0","maintainers":[{"name":"mrwinrock","email":"mrwinrock11@gmail.com"}],"homepage":"https://github.com/MrWinRock/benchguard#readme","bugs":{"url":"https://github.com/MrWinRock/benchguard/issues"},"os":["win32"],"cpu":["x64"],"dist":{"shasum":"1737cf586116bf4a7514da1ee4c947503659e002","tarball":"https://registry.npmjs.org/@benchguard/win32-x64/-/win32-x64-0.1.0.tgz","fileCount":5,"integrity":"sha512-31PYIaOdCDHXSHf0oyHxjhmvmXVQZKH74Tis5pv8nSKcJ5gyYzvh2mQCsPczpkkJq8XJJsoS2VxswV/6syMkQQ==","signatures":[{"sig":"MEUCIFcHtkIRZ2oc+CjrXQ0DdUcz3o/FbqIgT8wRyEaQs+gEAiEAr8yy9i+kv+91D/B1lQfsqafskrQYXAQzfQFrOmjX684=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@benchguard%2fwin32-x64@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1106971},"gitHead":"b1754718f3c88808b6d573f58a010c18310fe9c8","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7aea4497-07d8-42c9-bfb5-ca5110ed9f72"}},"repository":{"url":"git+https://github.com/MrWinRock/benchguard.git","type":"git","directory":"npm/win32-x64"},"_npmVersion":"11.16.0","description":"BenchGuard native binary for Windows x64","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/win32-x64_0.1.0_1785327147656_0.8239885536913512","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@benchguard/win32-x64","version":"0.1.1","description":"BenchGuard native binary for Windows x64","os":["win32"],"cpu":["x64"],"publishConfig":{"access":"public"},"license":"MIT OR Apache-2.0","repository":{"type":"git","url":"git+https://github.com/MrWinRock/benchguard.git","directory":"npm/win32-x64"},"gitHead":"745b6676ca882590c62b9679434b7e2cf6bb076e","_id":"@benchguard/win32-x64@0.1.1","bugs":{"url":"https://github.com/MrWinRock/benchguard/issues"},"homepage":"https://github.com/MrWinRock/benchguard#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-0TYrMzqJM2sENndURqWWCfoPOh63TlDxN/K8L5/z5+IoqJJfUdhTBq9veoFzjf6Rf22tZ+gFBWDz3dOXWSiWsw==","shasum":"24946869721aa8fc67750ddcad47a94d63f158f6","tarball":"https://registry.npmjs.org/@benchguard/win32-x64/-/win32-x64-0.1.1.tgz","fileCount":5,"unpackedSize":1126679,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@benchguard%2fwin32-x64@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQChAIH6pa4L12ZiyZfLyv0XjKTkNxlxW+WZGnscuobaCwIhAMI4P97HFFyqD4yVeV/Fsh7D6jQOa2IrQoBamaOfeegZ"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7aea4497-07d8-42c9-bfb5-ca5110ed9f72"}},"directories":{},"maintainers":[{"name":"mrwinrock","email":"mrwinrock11@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/win32-x64_0.1.1_1785336221734_0.3456768311808103"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-29T08:58:27.466Z","modified":"2026-07-29T14:43:42.232Z","0.0.0-bootstrap.0":"2026-07-29T08:58:27.718Z","0.1.0":"2026-07-29T12:12:27.815Z","0.1.1":"2026-07-29T14:43:41.871Z"},"bugs":{"url":"https://github.com/MrWinRock/benchguard/issues"},"license":"MIT OR Apache-2.0","homepage":"https://github.com/MrWinRock/benchguard#readme","repository":{"type":"git","url":"git+https://github.com/MrWinRock/benchguard.git","directory":"npm/win32-x64"},"description":"BenchGuard native binary for Windows x64","maintainers":[{"name":"mrwinrock","email":"mrwinrock11@gmail.com"}],"readme":"# BenchGuard\n\nBenchGuard is a native Rust command-line tool that records the performance of\nany executable command and fails when a later run exceeds a committed budget.\nIt gives application startup, build steps, code generators, and other\ndeveloper workflows one portable `benchguard.json` baseline instead of\nrequiring a language-specific benchmark harness.\n\nBenchGuard v0.1 supports x86-64 Windows and Linux. It measures wall time,\nmanaged-scope CPU time, and peak memory, produces human or JSON reports, and\nuses stable exit codes for CI.\n\n> Release status: v0.1.1 is being prepared through the\n> [release checklist](docs/releasing.md). The install commands below use the\n> latest published package once that process completes.\n\n## Install\n\nChoose one installation method after v0.1 has been published:\n\n```console\nnpm install --global @benchguard/cli\nbenchguard --version\n```\n\nRun without a global install:\n\n```console\nnpx @benchguard/cli help\n```\n\nInstall the Rust crate:\n\n```console\ncargo install benchguard --locked\n```\n\nTo install the current checkout before publication:\n\n```console\ncargo install --path . --locked\n```\n\nPrebuilt archives for `x86_64-unknown-linux-gnu` and\n`x86_64-pc-windows-msvc`, plus `SHA256SUMS`, are attached to each GitHub\nRelease. Verify the checksum, extract the archive, and place `benchguard` (or\n`benchguard.exe`) on `PATH`.\n\nThe npm package is only an installer and launcher. All measurements run in the\nsame native Rust binary used by Cargo and release archives. npm requires\nNode.js 18 or newer; the standalone binary does not require Node.js.\n\n## Five-minute quick start\n\nFrom your project directory, choose a stable command whose performance matters.\nFor example, record an npm production build:\n\n```console\nbenchguard record npm-build --runs 10 --max-time +10% npm run build\nbenchguard check npm-build\nbenchguard list\nbenchguard help record\n```\n\nRecord Bun builds as a separate benchmark when you use Bun:\n\n```console\nbenchguard record bun-build --runs 10 --max-time +10% bun run build\nbenchguard check bun-build\n```\n\n`record` runs two unmeasured warm-ups and ten measured runs by default, then\nwrites `benchguard.json`. Commit that file with the code it describes.\n`check` reuses the stored command, settings, and budgets unless you override\nthem for that invocation. `list` reads the file without executing the target.\n\nCommon options have short aliases:\n\n- `-r, --runs <COUNT>`: measured runs; record default `10`.\n- `-w, --warmup <COUNT>`: unmeasured runs; record default `2`.\n- `-t, --timeout <DURATION>`: per-run timeout, such as `500ms` or `2s`.\n- `-f, --file <PATH>`: baseline file; default `benchguard.json`.\n\nBudgets use descriptive long options: `--max-time`, `--max-cpu`, and\n`--max-memory`. Values are non-negative percentages such as `+10%`. Add\n`--format json` to `record`, `check`, or `list` for machine-readable output.\nUse `benchguard help`, `benchguard help record`, or `<command> --help` for the\ncomplete current interface.\n\nPut every BenchGuard option before the target command. The separator `--` is\noptional, but remains supported when you prefer it; after the target starts,\nall remaining tokens—including hyphenated target arguments—belong to that\ntarget.\n\n## Use in CI\n\nRecord a baseline on the same operating system and CPU architecture used by\nCI, commit `benchguard.json`, and run:\n\n```yaml\n- name: Install BenchGuard\n  run: cargo install benchguard --locked\n- name: Enforce performance budgets\n  run: benchguard check startup\n```\n\nDo not compare a Windows baseline with Linux or one CPU architecture with\nanother; BenchGuard rejects that comparison with exit code `2`. Keep runner\nhardware and background load as stable as practical. See [CI guidance](docs/ci.md)\nfor a complete workflow and baseline-update policy.\n\n## Commands are executed directly\n\nThe target is preserved as an executable plus an exact argument array.\nBenchGuard does not invoke a shell:\n\n```console\nbenchguard record arguments my-app \"two words\" \"\"\nbenchguard record legacy-arguments -- my-app \"two words\" \"\"\n```\n\nPipes, redirects, wildcard expansion, and environment expansion require an\nexplicit shell:\n\n```console\nbenchguard record pipeline bash -c 'producer | consumer'\nbenchguard record pipeline powershell -Command \"producer | consumer\"\n```\n\nOnly use explicit shell execution with commands you trust; the chosen shell,\nnot BenchGuard, interprets that string.\n\nDuring warm-up and measured runs, the target's standard input, output, and\nerror are connected to the operating system null device. BenchGuard does not\ncapture or replay target output in v0.1. This keeps human and JSON reports\ndeterministic, including when the target fails or times out.\n\n## How checks are decided\n\nFor every successful measured run BenchGuard records:\n\n- wall-clock duration in nanoseconds;\n- CPU time in nanoseconds for the platform-managed execution scope;\n- peak resident/working-set memory in bytes for that scope; and\n- the target exit status.\n\nThe baseline stores minimum, maximum, mean, population standard deviation,\np50, p95, sample count, and median. The median is the comparison value because\nit is less sensitive to isolated noise than the mean.\n\nA metric regresses only when its increase is strictly greater than both the\nconfigured relative budget and its absolute noise floor. The default floors\nare 1 ms for wall time, 1 ms for CPU time, and 1 MiB for peak memory. A metric\nwithout a budget is reported as `unbudgeted` and cannot fail a check.\nWall-time coefficient of variation above 10% produces a warning but does not\nchange the exit code.\n\nHuman reports automatically scale durations from nanoseconds through seconds\nand memory from bytes through GiB. Use `--color auto` (the default),\n`--color always`, or `--color never` to control terminal color. In automatic\nmode, BenchGuard colors only interactive terminals and honors `NO_COLOR` when\nit is present. JSON output is never colored and continues to use integer\nnanoseconds and bytes.\n\nOn Windows, BenchGuard uses a Job Object for CPU and cleanup and samples the\naggregate current working set of active Job members every 5 ms. On Linux v0.1\nit samples processes observed in the target session/process group every 5 ms\nand cleans up that process group. A process that starts and exits between\nsamples may be missed on either platform; a Linux descendant that deliberately\nleaves the group may also be missed. Memory values therefore describe the\nsampled managed scope, not commit charge or exhaustive descendant accounting.\n\n## Exit codes\n\n| Code | Meaning |\n|---:|---|\n| `0` | All configured budgets passed, or the command only reported unbudgeted metrics. |\n| `1` | At least one configured performance budget regressed. |\n| `2` | Configuration, baseline, launch, target exit, timeout, measurement, platform, or internal error. |\n\nAny failed warm-up or measured run aborts the operation. A failed `record`\nleaves an existing baseline byte-for-byte unchanged. Timeouts terminate the\nplatform-managed process scope before returning.\n\n## Compatibility and format\n\n`benchguard.json` schema v1 stores integer nanoseconds and bytes, the exact\ncommand argument array, settings, budgets, platform, version, and timestamp.\nComparisons require the same operating system and CPU architecture. See the\n[baseline and report JSON reference](docs/json-format.md).\n\nmacOS, ARM, Git-aware baseline selection, confidence tests, a TUI, hosted\nhistory, and plugins are not part of v0.1.\n\n## Contributing and security\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for local checks, commit conventions,\nplatform backend guidance, and the private vulnerability-reporting process.\nCommunity participation follows the [Code of Conduct](CODE_OF_CONDUCT.md).\n\nBenchGuard is dual-licensed under [MIT](LICENSE-MIT) or\n[Apache-2.0](LICENSE-APACHE), at your option.\n","readmeFilename":"README.md"}