| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| Marten 9.18.0 source code.tar.gz | 2026-07-22 | 18.3 MB | |
| Marten 9.18.0 source code.zip | 2026-07-22 | 20.1 MB | |
| README.md | 2026-07-22 | 3.3 kB | |
| Totals: 3 Items | 38.4 MB | 0 | |
Marten 9.18.0 focuses on raw-JSON streaming endpoints for ASP.NET Core, server-side LINQ Select() projection, and continued event-store observability work.
ASP.NET Core streaming & pagination
StreamPaged<T>— stream a paged JSON envelope (pageNumber/pageSize/totalItemCount/pageCount/hasNextPage/hasPreviousPage/items) in a single round trip via acount(*) OVER()window column (#5014). Test coverage hardened to pin the camelCase wire contract, page-past-end behavior, and filtered totals (#5028).StreamPagedByCursor<T>— keyset ("seek") pagination that costs the same regardless of depth, using an opaque continuation cursor (#5016). Now streams the raw, already-persisteddatacolumn byte-identical toStreamMany/StreamPaged(no hydrate + re-serialize) by reading the next cursor's ORDER BY key values off the same reader; a malformed client-supplied cursor now returns a clean 400 instead of a 500 (#5033).- ETag /
If-None-Match(304) conditional-request support onStreamOne<T>andStreamAggregate<T>(#5015).StreamOne<T>now reads the document'smt_versioninline in the same single round trip (no follow-up metadata query), and thewhere T : notnullconstraint tightening was reversed (#5030).
LINQ
- Simple
Select()projections (x => new Dto { A = x.A, B = x.Nested.B }) now translate to a server-sidejsonb_build_object(...)expression that is streamable as raw JSON, instead of hydrating the full document and projecting on the client (#5017). Value-preserving conversions — widening numerics (int→long/decimal), boxing toobject, nullable wrapping,enum→integral underEnumStorage.AsInteger— stay translatable and streamable; only lossy/computed conversions fall back (#5032). - DCB tag operators usable in
Where()over events (#5004). AggregateToMany()LINQ operator — run an event query through a multi-stream projection (#5003).
Event store, projections & daemon
- Marten.TimescaleDB extension — projection + document hypertables (#4995).
- Extended-progression telemetry: batched per-flush heartbeat writes (#5008); fixed a shutdown telemetry race in
extended_progression_batch_write(#5023);running_on_nodewrite-path regression coverage (#5001 / [#5007]). The cross-reporunning_on_nodepopulation under Wolverine-managed distribution is completed via JasperFx 2.34.0 + Wolverine. - Tenant-scoped event/tag explorer reads —
ReadStreamAsync/GetRecentStreamsAsyncoverrides honor tenancy (#5020, [#5025]), plus aMultiStreamProjectionstepthrough via the instrumented fold inEventStoreExplorer(#5002). - HighWaterHealthCheck scoped to owned databases, with per-tenant and
ExternallyManageddaemon support (#4992). - Surface JasperFx's application-assembly-reuse warning (GH-3521) at startup (#5000).
Multi-tenancy & infrastructure
- Token-capable maintenance connection for tenant database provisioning (#5006).
- Docs: connecting to Azure Database for PostgreSQL with Entra ID / managed identity (#4993).
Dependencies
- JasperFx / JasperFx.Events 2.34.0, Weasel 9.17.0.
Full changelog: https://github.com/JasperFx/marten/compare/V9.17.0...V9.18.0