Skip to content

fix(signals): drop empty carved module reexport - #3784

Merged
ryansolid merged 2 commits into
solidjs:nextfrom
everton-dgn:fix/signals-empty-reexport
Oct 5, 2026
Merged

ryansolid merged 2 commits into
solidjs:nextfrom
everton-dgn:fix/signals-empty-reexport

Conversation

@everton-dgn

@everton-dgn everton-dgn commented Oct 4, 2026 •

Copy link
Copy Markdown

The Signals entrypoint reexports carved.ts, which no longer exports anything. TypeScript reports TS2306 during the build.

Remove that reexport and retain the module itself. The public exports are unchanged across all six development, production, and observe entrypoints.

Validation:

  • build:js succeeds and no longer reports TS2306.
  • Declaration generation passes.
  • All 22 distribution-artifact tests pass.
  • Export names match the original build: 90 for each core entrypoint and 8 for each attribution entrypoint.

The current base still reports test-type warnings addressed separately by #3781.

CodSpeed reports a 15.99% slowdown in reconcile: deep tree, 10 of ~12k paths subscribed, with a warning that the baseline and head ran in different environments. The benchmark, its configuration, the workflow, and the lockfile are unchanged. A Vite probe confirms the same 90 source exports before and after this change; the removed module only declares an unused function during import, before the measured loop.

Local wall-time measurements had 12% to 29% relative error and cannot settle that report. A fresh comparison is still needed. I tried rerunning the benchmark workflow, but GitHub rejected it because this account lacks the required repository rights. The functional CI and size checks passed.

@changeset-bot

changeset-bot Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 5631a97

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 12 packages
Name Type
@solidjs/signals Patch
test-integration Patch
@solidjs/web Patch
@solidjs/babel-plugin Patch
@solidjs/compiler Patch
@solidjs/diagnostics Patch
@solidjs/element Patch
@solidjs/h Patch
@solidjs/html Patch
solid-js Patch
@solidjs/universal Patch
todos-server-example Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@codspeed

codspeed Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 188 untouched benchmarks


Comparing everton-dgn:fix/signals-empty-reexport (5631a97) with next (1a3f87f)

Open in CodSpeed

@everton-dgn

Copy link
Copy Markdown
Author

I traced the flagged benchmark between 1b9ceb6 and bcc035c. It runs against the source/dev build. After normalizing checkout paths and source-map URLs, the transformed benchmark and its store/core dependencies are identical. The only module changes are the removed carved.ts import and re-export in src/index.ts; carved.ts has no exports or top-level calls.

This narrows the difference to module loading before the measured callback. It does not rule out an effect on heap state or GC, so I have not treated the alert as a false positive. CodSpeed also reports different runtime environments for this comparison.

Could a maintainer rerun the base and head benchmarks in the same environment? My attempt to rerun the workflow was rejected because it requires repository admin rights. I have kept the fix scoped to the empty re-export while that measurement is pending.

@everton-dgn

everton-dgn commented Oct 5, 2026 •

Copy link
Copy Markdown
Author

I updated the branch with next in 5631a97, using a normal merge. This brings in #3776, so the benchmark now measures the built package. The diff against next is still just the changeset and the removed empty re-export.

I compared next with the merged head under CodSpeed 4.19.1 on Linux ARM64, using Node 24.21.0 and the unmodified 5.4.0 Vitest plugin. Independent builds produced identical output for all 79 files in dist. The sparse benchmark counted 5,503,094 and 5,503,067 instructions on next, versus 5,502,969 and 5,503,120 on the head. Across the three listened-paths cases, the differences were below 0.05%.

The Signals suite also passed: 4,892 tests, with two expected failures and two skipped tests. The build no longer reports TS2306 for carved.ts; the existing test-file TypeScript warnings remain.

The fresh CodSpeed run passed against next 1a3f87f. CodSpeed now reports 188 unchanged benchmarks, and all seven PR checks are green.

@ryansolid
ryansolid merged commit 6be6c51 into solidjs:next Oct 5, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants