Skip to content

Version Packages - #868

Merged
mattiamanzati merged 1 commit into
mainfrom
changeset-release/main
Oct 16, 2026
Merged

mattiamanzati merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@effect/tsgo@0.53.3

Patch Changes

  • 1ab5264: effect-tsgo diagnostics now reports a diagnostic's related locations. They used to be dropped in every format, so missingEffectContext never showed which layer could provide the missing service and apiStabilityLeak never showed where the unstable declaration lives.

    With --format json, each diagnostic that has related locations gets a relatedInformation array. Each entry has the same location fields as the diagnostic, plus its own code and message. Diagnostics without related locations are unchanged.

    {
      "line": 23,
      "column": 3,
      "code": 377004,
      "name": "missingEffectContext",
      "message": "This Effect requires a service that is missing from the expected Effect context: `Db | Fs`.",
      "relatedInformation": [
        {
          "file": ".../src/index.ts",
          "start": 662,
          "length": 14,
          "line": 22,
          "column": 3,
          "endLine": 22,
          "endColumn": 17,
          "code": 377059,
          "message": "Adjusting this layer composition could provide the missing service."
        }
      ]
    }

    With --format pretty, the related locations are printed under the diagnostic, each with its own code snippet, as tsc --pretty does:

    src/index.ts:23:3 - error effect(missingEffectContext): This Effect requires a service that is missing from the expected Effect context: `Db | Fs`.
    
    23   Effect.runPromise
         ~~~~~~~~~~~~~~~~~
    
      src/index.ts:22:3 - Adjusting this layer composition could provide the missing service.
        22   Effect.provide(live),
             ~~~~~~~~~~~~~~
    

    The ~ markers in pretty output are also aligned again on lines 10 and above. They used to sit one column to the left of the code.

  • 4672ba1: Make globalDate and globalDateInEffect do less work per file. Their shared walker used to look up the Effect context flags of every node it visited, although only call expressions (Date.now()) and new expressions (new Date()) can produce a diagnostic. It now looks up the flags only on those two node kinds, like globalFetch, globalConsole, globalTimers, globalRandom and cryptoRandomUUID already do.

    Reported diagnostics are unchanged.

  • b5df4e9: Speed up apiStabilityLeak by reusing one stability analysis per file.

    The rule used to allocate a fresh analysis, with its maps and work queues, for every export of a file. It now keeps one analysis per file and resets it before each export. The reset analysis behaves exactly like a fresh one, so the reported diagnostics are unchanged. A published surface that a later export reads from the shared cache is no longer queued for publication again, and a published surface without retained findings no longer allocates a findings map.

    On packages/effect of effect 4.0.5 with every rule enabled, the rule allocates 252 MB → 140 MB.

  • d3b53a7: Make the Effect diagnostics write less to the checker's per-node caches. Rules run on the checker goroutine right after each file is checked, and on the Effect monorepo most of their cost was cache traffic (map misses, nil inserts, map growth) and the garbage collection it caused, not type computation.

    • Reference checks such as "is this node Effect.gen?" no longer probe or fill the symbol cache for statements, blocks, clauses and tokens, which can never resolve to a symbol.
    • The analysis that tracks whether code runs inside Effect.gen, Effect.fn or an Effect thunk stores an entry only where the answer changes, about 2% of nodes, instead of two entries for every node of every file.
    • Type lookups reject nodes that can never have a type before touching the cache, the strict Effect type check caches only types named Effect, and whether a file has been checked is asked once per file instead of on every query.

    Reported diagnostics are unchanged.

@effect/tsgo-darwin-arm64@0.53.3

@effect/tsgo-darwin-x64@0.53.3

@effect/tsgo-linux-arm@0.53.3

@effect/tsgo-linux-arm64@0.53.3

@effect/tsgo-linux-x64@0.53.3

@effect/tsgo-win32-arm64@0.53.3

@effect/tsgo-win32-x64@0.53.3

@github-actions
github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from 5f9206b to 0b11be0 Compare October 16, 2026 15:30
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 0b11be0 to 54f8a01 Compare October 16, 2026 15:50
@mattiamanzati
mattiamanzati merged commit 9ae40d0 into main Oct 16, 2026
@mattiamanzati
mattiamanzati deleted the changeset-release/main branch October 16, 2026 16:08
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