Repository navigation
Upgrade Changesets to v3 and the benchmark harness to tinybench 6 - #259
Merged
Merged
Conversation
Contributor
Type performanceMeasured with TypeScript 6.0.3 and
Marginal instantiations are measured against the matching setup without that API call:
Check times (informational)
Type instantiations are the comparison metric. Check time varies with runner load and is informational only. |
Contributor
Runtime performanceMedian of 5 independent benchmark processes on Pull request baseline
Process runtime reference points
Effect Machine change from base
Process runtime reference change from base
Regression guardNo large, noise-adjusted throughput or heap regressions detected. Versions and interpretation
Higher throughput is better; lower heap is better. Variability is the median absolute deviation across independent processes, relative to their median. Small differences on shared GitHub-hosted hardware remain informational; the required guard rejects only large changes beyond the measured noise allowance. |
Bench.run now warms each task up itself and samples are retained explicitly. Read statistics from the task's latency result while keeping the report schema and definitions unchanged: median, p95, and p99 still come from the sorted batch samples and mean throughput is still 1000 / mean latency. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@changesets/cli 3 no longer prints the publish lines that changesets/action@v1 parsed, and changesets/action@v2 requires CLI v3, so both move together. Use the renamed version-script, publish-script, and github-token inputs; the action now passes CHANGESETS_OUTPUT to the publish script to detect published packages. Point the config schema at @changesets/config 4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SandroMaglione
force-pushed
the
changesets-3-and-tinybench-6
branch
from
November 1, 2026 09:59
636c96b to
00f947a
Compare
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.
Summary
Two dependency majors that each need code or workflow changes, in separate commits.
tinybench 2.9.0 → 6.2.2 (runtime benchmark harness)
Benchno longer haswarmup().Bench.run()now warms each task up right before measuring it, using the samewarmupTime/warmupIterations. The explicitbench.warmup()call is removed.retainSamples: true, which is now set.task.result.latencyand are discriminated byresult.state. The harness throws onerroredand on any state other thancompleted.medianBatchMilliseconds,p95BatchMilliseconds, andp99BatchMillisecondsstill use the harness's ownpercentileover the sorted samples. tinybench 2.9'sp99used the same index formula; tinybench 6'slatency.p99interpolates, so the harness does not use it.meanThroughputisoperations * 1000 / latency.mean. In 2.9,hzwas defined as exactly1000 / mean. tinybench 6'sthroughput.meanis a different estimator, so the harness does not use it.relativeMarginOfErrorislatency.rme(percent, Student t), andsampleCountis the retained sample count.node_modulesand are measured the same way. I reproduced the workflow locally: I ran the PR harness against an isolatedgit archiveoforigin/main(which still installs tinybench 2.9.0) and against this branch, three full interleaved runs each.compare-runtime-performance.mjs --checkread all the reports and returned exit 0 with "No large, noise-adjusted throughput or heap regressions detected." Quick-mode runs are too noisy to judge. The CI comparison is authoritative.@changesets/cli 2.31.0 → 3.0.3, with
changesets/actionv1 → v2.1.2These two have to move together:
New tag:lines thatchangesets/action@v1parses to setpublished. Under v1,publishedwould stayfalse, sodeploy-websiteand GitHub releases and tags would silently stop.changesets/action@v2refuses CLI v2.release.ymlchanges:version→version-scriptandpublish→publish-script.GITHUB_TOKENenv is replaced by thegithub-tokeninput. v2 fails if aGITHUB_TOKENenv differs from the input.v2tag, so the action is pinned tov2.1.2.publishedoutput name is unchanged, sodeploy-websitekeeps working.CHANGESETS_OUTPUTto the publish script.pnpm release→changeset publishinherits it, and CLI v3 reads it (process.env.CHANGESETS_OUTPUT) to report published packages.github-actions[bot]. The release PR is still authored bygithub-actions[bot]onchangeset-release/main, so thechangeset-policyexemption still matches. Trusted publishing (id-token: write,registry-url) is unchanged; v2 only dropped its ownNPM_TOKEN.npmrchandling, which this repo does not use.CLI v3 changes I checked against this repo:
$schemanow points at@changesets/config@4.0.1. All keys in use (changelog: "@changesets/cli/changelog",commit,fixed,linked,access,baseBranch,updateInternalDependencies,ignore) are in the v4 schema, and@changesets/cli/changelogis still exported. There was noprettierkey to migrate.publishConfig.provenance, not in the Changesets config. CLI v3 still publishes withpnpm publishfrom the package directory, sopublishConfig(provenance,access, and the devtoolsexportsoverride) keeps applying.pnpm version-packageswith a sample changeset bumped all four packages to 0.47.0 and wrote all four changelogs.changeset publish-planlisted the four at 0.47.0 onlatest.changeset packproduced tarballs whereworkspace:^becomes^0.47.0and the devtoolspublishConfig.exportsis applied.format: "auto"now detects dprint (dprint fmt --allow-no-files). New changeset files come out dprint-clean:changeset add --emptywrites---\n\n---, which v2 did not.packages/**/CHANGELOG.md, so v3 leaves them as written. Code samples keep the repo's no-semicolon style, and blank lines inside a list entry carry the two-space indent.autofollows it.changeset tag→git-tag;status --sinceMasterremoved; private packages are no longer versioned by default (the root is private and unnamed); Yarn Classic dropped; andchangeset versionexits 1 when there are no changesets. The action only runsversion-scriptwhen changesets exist, and a scratch run with only an empty changeset exited 0. Engines are Node^22.11 || ^24 || >=26and pnpm>=10; the repo uses Node 24 and pnpm 10.17.1.release.ymlonly runs on pushes tomain, so the action itself cannot run here. I checked the inputs, outputs, and token handling against the v2.1.2action.ymlandsrc/index.ts/src/run.ts. Watch the first release run after merging.Changeset
The PR includes an empty changeset (
.changeset/changesets-3-and-tinybench-6.md, written by CLI v3'schangeset add --empty) only becausecheck-changeset.mjsrequires one for rootpackage.jsonchanges. It releases nothing.Validation
pnpm checkpassed in 4:22: 92 files / 901 tests, tstyche 1334 assertions, consumer, all pack checks, docs, andcheck:ci(31 tests).pnpm changeset --help,changeset status,changeset add --empty,pnpm version-packages(scratch and on this branch, then reverted),changeset publish-plan, andchangeset packall ran with CLI v3.🤖 Generated with Claude Code