Repository navigation
JasperFx 2.80.1, and drop the jasperfx#942 workaround (#423) - #424
Merged
Merged
Conversation
- Bump the JasperFx packages (and the AOT smoke's source generator) to 2.80.1. - jasperfx#942: ValueTypeInfo.CreateWrapper / UnWrapper now fall back to reflection in a native image, so Fisher's local copy of that fallback (ValueTypeDelegates) is deleted and StrongTypedIdentification calls ValueTypeInfo directly. Pinned back to 2.79.2 with the copy deleted, the native smoke fails at ValueTypeInfo.CreateWrapper; on 2.80.1 it passes. - A strong-typed AGGREGATE id still cannot run natively: JasperFxSingleStreamProjectionBase's identity sources (IEvent/StreamAction.CreateAggregateIdentitySource) CompileFast unconditionally. Filed as jasperfx#950. The refusal now names #950, and the native smoke asserts it. A statically closed Snapshot<T, TId> was built and measured against 2.80.1, and is parked rather than shipped, as in #398. - jasperfx#943: GuidOptimisticConcurrencyCompliance's five mapped-version facts skipped unless the fixture opted in. Fisher has the route (fisher#245), so the fixture replays MappedVersionMembers and sets SupportsMappedConcurrencyMember; all five pass, and dropping the replay fails four. - jasperfx#944: DocumentSearchCompliance's four hierarchy facts are green on the bump alone. Closes #423 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 4, 2026
Merged
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.
Closes #423.
What's in it
ValueTypeInfo.CreateWrapper/UnWrapperfall back to reflection in a native image since 2.80.0. SoValueTypeDelegatesis deleted andStrongTypedIdentificationcallsValueTypeInfodirectly.GuidOptimisticConcurrencyCompliancefacts over a mapped version member. They were skipped on the bump, because they gate onSupportsMappedConcurrencyMember. Fisher has had that route since Guid document optimistic concurrency only works inside one session: a cross-session Store(doc) carrying its version always throws #245, so the fixture now replaysMappedVersionMembersand opts in.DocumentSearchCompliancehierarchy facts were green on the bump alone.ResilientEventLoaderwrapping) needed nothing. Nothing in Fisher matches onEventLoaderException, and the dead-letter and skip suites stay green.What it does not do: strong-typed aggregate ids in a native image
#423 asked to lift that refusal. It isn't lifted, because #942 fixed only half of it.
JasperFxSingleStreamProjectionBase's constructor also callsIEvent.CreateAggregateIdentitySource<TId>()andStreamAction.CreateAggregateIdentitySource<TId>(). Both stillCompileFast()for any wrapper id, and that's measured: a natively publishedreadonly record struct PodId(Guid)aggregate throwsPlatformNotSupportedExceptionfrom that constructor on 2.80.1.Filed as jasperfx#950. The refusal now names #950 instead of #942, and the native smoke asserts it. A statically closed
Snapshot<T, TId>()/LiveStreamAggregation<T, TId>()was built and measured, and is parked on a local branch rather than shipped, following #398's precedent of not shipping API that can't do its job natively. It's the one open item of #412.Verification
ValueTypeInfo.CreateWrapperfromStrongTypedIdentification, so the smoke covers the path.check_scoreboard.pyagrees for both TFMs, andcheck_no_leaked_databases.py --sinceis clean.🤖 Generated with Claude Code