Skip to content

Update Effect to beta 105 - #39

Merged
SandroMaglione merged 1 commit into
mainfrom
codex/update-effect-beta-105
Aug 8, 2026
Merged

Update Effect to beta 105#39
SandroMaglione merged 1 commit into
mainfrom
codex/update-effect-beta-105

Conversation

@SandroMaglione

@SandroMaglione SandroMaglione commented Aug 8, 2026

Copy link
Copy Markdown
Member

Summary

  • Update the Effect peer and development runtime from 4.0.0-beta.102 to 4.0.0-beta.105.
  • Keep @effect/vitest, @effect/atom-react, pnpm overrides, examples, lockfiles, and installation documentation aligned with the runtime version.
  • Adapt state-construction validation to the new SchemaIssue.Issue failure while preserving the public SchemaError cause shape.
  • Migrate the removed test-only Schema.TaggedErrorClass API to Schema.TaggedError.

Changeset

  • Added or updated for a library or package-metadata change
  • Not required because this PR does not change src/ or package.json

Validation

  • pnpm check
  • Relevant example checks, when examples changed
  • Reviewed the automated type-performance report, when the public TypeScript API or inference changed
  • Reviewed the automated runtime-performance report, when runtime behavior changed

Local validation included pnpm perf:types, every example's own pnpm check, and five interleaved runtime benchmark processes against the current main revision. Public inference budgets remained stable. The GitHub benchmark improved all six throughput scenarios by 10.9–26.4% with low variability, while heap usage stayed within 0.4% of the baseline.

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Type performance

Measured with TypeScript 6.0.3 and skipLibCheck=true.

Scenario Base PR Difference
Effect only 55 55 0 (0.0%)
Import effect-machine 55 55 0 (0.0%)
Machine.defineStates (3 states) 2,965 2,965 0 (0.0%)
Machine.make (3 states, 2 events) 8,731 8,731 0 (0.0%)
machine.handle (3 states, 2 transitions) 23,634 23,634 0 (0.0%)
machine.handle (depth 8) 113,023 113,023 0 (0.0%)
machine.handle (depth 12) 125,661 125,661 0 (0.0%)
machine.handle (depth 16) 141,003 141,003 0 (0.0%)
machine.handle (depth 24) 179,799 179,799 0 (0.0%)
machine.handle (wide depth 16) 210,137 210,137 0 (0.0%)
machine.handle (parallel/history/choice) 128,876 128,880 +4 (+0.0%)
machine.handle (4 successive calls) 129,498 129,498 0 (0.0%)
machine exact input/output/error/services 107,371 107,375 +4 (+0.0%)
execution adapter readiness 122,890 122,890 0 (0.0%)

Marginal instantiations are measured against the matching setup without that API call:

Scenario Base PR Difference
Import effect-machine 0 0 0
Machine.defineStates (3 states) 2,910 2,910 0 (0.0%)
Machine.make (3 states, 2 events) 5,758 5,758 0 (0.0%)
machine.handle (3 states, 2 transitions) 14,903 14,903 0 (0.0%)
machine.handle (depth 8) 105,546 105,546 0 (0.0%)
machine.handle (depth 12) 116,984 116,984 0 (0.0%)
machine.handle (depth 16) 131,126 131,126 0 (0.0%)
machine.handle (depth 24) 167,522 167,522 0 (0.0%)
machine.handle (wide depth 16) 198,169 198,169 0 (0.0%)
machine.handle (parallel/history/choice) 110,514 110,514 0 (0.0%)
machine.handle (4 successive calls) 114,497 114,497 0 (0.0%)
machine exact input/output/error/services 95,819 95,819 0 (0.0%)
execution adapter readiness 96,968 96,968 0 (0.0%)
Check times (informational)
Scenario Base PR
Effect only 0.02s 0.02s
Import effect-machine 0.02s 0.02s
Machine.defineStates (3 states) 0.07s 0.07s
Machine.make (3 states, 2 events) 0.11s 0.11s
machine.handle (3 states, 2 transitions) 0.18s 0.16s
machine.handle (depth 8) 0.38s 0.38s
machine.handle (depth 12) 0.41s 0.41s
machine.handle (depth 16) 0.52s 0.44s
machine.handle (depth 24) 0.57s 0.50s
machine.handle (wide depth 16) 0.55s 0.55s
machine.handle (parallel/history/choice) 0.46s 0.46s
machine.handle (4 successive calls) 0.43s 0.45s
machine exact input/output/error/services 0.39s 0.39s
execution adapter readiness 0.40s 0.40s

Type instantiations are the comparison metric. Check time varies with runner load and is informational only.

@SandroMaglione
SandroMaglione force-pushed the codex/update-effect-beta-105 branch from b6cf81e to defa47f Compare August 8, 2026 09:11
@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Runtime performance

Median of 5 independent benchmark processes on AMD EPYC 7763 64-Core Processor with Node v24.18.0.

Pull request baseline

Scenario Effect Machine XState 5 XState 6 alpha
Plan counter transitions 33,969 transitions/s 134,228 transitions/s 123,178 transitions/s
Drain burst with terminal fence 22,035 increments/s 399,842 increments/s 112,108 increments/s
Drain burst with a change observer 19,600 increments/s 397,637 increments/s 112,130 increments/s
Lookup and send to one child 19,625 increments/s 393,569 increments/s 107,400 increments/s
Start and stop a machine 7,450 machines/s 185,529 machines/s 73,073 machines/s
Start and stop a parent with one child 3,003 families/s 67,714 families/s 26,603 families/s
Memory profile Effect Machine XState 5 XState 6 alpha
Idle machine 23.5 KiB 3.8 KiB 6.1 KiB
Idle parent with one child 73.8 KiB 5.5 KiB 8.8 KiB

Effect Machine change from base

Metric Base Base variability PR PR variability Difference
Plan counter transitions 26,866 transitions/s 0.6% MAD 33,969 transitions/s 0.3% MAD +26.4%
Drain burst with terminal fence 18,162 increments/s 1.3% MAD 22,035 increments/s 0.7% MAD +21.3%
Drain burst with a change observer 16,424 increments/s 1.9% MAD 19,600 increments/s 2.0% MAD +19.3%
Lookup and send to one child 16,672 increments/s 1.7% MAD 19,625 increments/s 0.2% MAD +17.7%
Start and stop a machine 6,716 machines/s 0.3% MAD 7,450 machines/s 0.5% MAD +10.9%
Start and stop a parent with one child 2,673 families/s 0.6% MAD 3,003 families/s 0.1% MAD +12.4%
Idle machine heap per unit 23.6 KiB 0.0% MAD 23.5 KiB 0.0% MAD -0.3%
Idle parent with one child heap per unit 73.5 KiB 0.0% MAD 73.8 KiB 0.0% MAD +0.4%
Versions and interpretation
  • Effect Machine: 0.3.0
  • XState 5: 5.32.5
  • XState 6 alpha: 6.0.0-alpha.27

Higher throughput is better; lower heap is better. Variability is the median absolute deviation across independent processes, relative to their median. Runtime measurements on shared GitHub-hosted hardware remain informational, so small differences should be confirmed across multiple workflow runs.

@SandroMaglione
SandroMaglione merged commit e60b9d7 into main Aug 8, 2026
9 checks passed
@SandroMaglione
SandroMaglione deleted the codex/update-effect-beta-105 branch August 8, 2026 09:18
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.

1 participant