Skip to content

Adopt JasperFx 2.37.3 - #5129

Merged
jeremydmiller merged 1 commit into
masterfrom
chore/jasperfx-2.37.3
Aug 3, 2026
Merged

Adopt JasperFx 2.37.3#5129
jeremydmiller merged 1 commit into
masterfrom
chore/jasperfx-2.37.3

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Picks up JasperFx/jasperfx#611, which is the reason 2.37.3 exists.

What changes for Marten users

JasperFx.Events.SourceGenerator now discovers an EventProjection's published document types semantically rather than syntactically. Discovery used to match only GenericNameSyntax, so inside an explicit ApplyAsync override:

operations.Store<AuditRecord>(record);   // registered AuditRecord
operations.Store(record);                // registered NOTHING

Nothing at the call site says so, and nothing fails at runtime — storage is provisioned on demand — so only the ahead-of-time surfaces came up short: schema creation, AllKnownDocumentTypes(), rebuild teardown. Same #4166 behaviour, now correct for both spellings.

This is behaviour-changing, in the good direction, and belongs in the release notes. A projection using the non-generic spelling will start registering document types it silently skipped before. The visible effects are that those types now appear in AllKnownDocumentTypes() and get their storage created up front.

Also carried:

  • Store<object>(...) no longer registers object itself as a document type. object and string render through ToDisplayString() as their C# keywords, not System.Object/System.String, so they slipped past the old name-prefix check; registrability is now a SpecialType/TypeKind question.
  • New JFXEVT005 (Info) for a call that binds to the projection's own session but whose document type cannot be named — object, dynamic, an open type parameter. Info rather than Warning so it cannot break a TreatWarningsAsErrors build over a legitimate call.

Verification

net9.0, against the published packages:

  • EventSourcingTests 1614 / 0 / 7
  • DaemonTests 260 / 0 / 0

One transient DaemonTests failure appeared on the first of three runs and I could not identify it — the run output was not captured, and two subsequent full runs were clean at 260/0/0. Recording it rather than omitting it; I have no evidence tying it to this bump, and a registration change would present deterministically rather than intermittently.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VpDCvJcBDZerieJB4JEHde

#611: JasperFx.Events.SourceGenerator now discovers an EventProjection's
published document types semantically rather than syntactically.

Discovery previously matched only GenericNameSyntax, so an explicit ApplyAsync
override writing

    operations.Store<AuditRecord>(record);

registered AuditRecord while the equally valid

    operations.Store(record);

compiled and registered nothing at all. Nothing at the call site says so and
nothing fails at runtime -- storage is provisioned on demand -- so only the
ahead-of-time surfaces came up short: schema creation, AllKnownDocumentTypes,
rebuild teardown. This is the same marten#4166 behaviour, now correct for both
spellings.

Behaviour-changing for the better, and worth a release note: an ApplyAsync
override using the non-generic spelling starts registering document types it
silently skipped before.

Also carried: Store<object>(...) no longer registers `object` itself as a
document type (object/string render through ToDisplayString() as C# keywords and
slipped past the old name-prefix check), and a new JFXEVT005 Info diagnostic for
a call that binds to the projection's session but whose document type cannot be
named.

net9.0: EventSourcingTests 1614/0/7, DaemonTests 260/0/0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VpDCvJcBDZerieJB4JEHde
@jeremydmiller
jeremydmiller merged commit 197e0f0 into master Aug 3, 2026
10 checks passed
@jeremydmiller
jeremydmiller deleted the chore/jasperfx-2.37.3 branch August 3, 2026 00:54
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