Releases: pedrosakuma/SbeSourceGenerator
Release list
v1.8.0
What's Changed
- docs: improve navigation and consolidate redundant docs by @pedrosakuma in #169
- perf: per-schema granularity in incremental generator pipeline (#170) by @pedrosakuma in #172
- feat: accurate source locations for schema diagnostics (#171) by @pedrosakuma in #173
- Release 1.8.0: per-schema incremental granularity (#170) + accurate diagnostic locations (#171) by @pedrosakuma in #174
Full Changelog: v1.7.0...v1.8.0
v1.7.0
What's Changed
- Release 1.7.0: declarative semantic-type registry (#166) + partial generated types (#167) by @pedrosakuma in #168
Full Changelog: v1.6.1...v1.7.0
v1.6.1
What's Changed
- fix(#164): aliased encodingType, duplicate hintName cascade, BCL collision; v1.6.1 by @pedrosakuma in #165
Full Changelog: v1.6.0...v1.6.1
v1.6.0 — Direct varData properties on DataReader
Added
-
Direct properties for top-level
<data>(varData) on{Msg}DataReader(#162): Each top-level varData field is now also exposed as a property returning the variable-length composite (e.g.VarStringEncoding) computed directly from the buffer. Zero allocation, no callback, no closure capture.if (NewOrderData.TryParse(buffer, out var reader)) { foreach (ref readonly var leg in reader.Legs) { /* ... */ } var coid = reader.ClientOrderId.VarData; // ReadOnlySpan<byte>, zero-alloc }
Each access is stateless — the start offset is recomputed from the buffer by chaining the existing
Skip{Group}helpers (O(1) per simple group) plusSkipData{Prev}for any prior varData. Safe regardless of access order, before/after iterating groups, and across multiple reads. For repeated reads, cache the returned value locally.Gating: emitted only when all top-level groups are simple (no nested groups, no group-level varData) — same gate as the foreach enumerators added in #156. Also valid for messages with only varData and no groups. When a varData name collides with a reserved member of the reader struct, the direct property is silently skipped for that field; it remains reachable via
ReadGroups. -
Benchmark
GroupForeachVsCallbackBenchmarksvalidating the perf premise of the v1.5.0 foreach enumerator API (#156).
Full changelog: v1.5.0...v1.6.0
What's Changed
- bench: foreach vs ReadGroups callback decode benchmark (#156) by @pedrosakuma in #161
- docs: reflect v1.4 / v1.5 features (foreach, AsTrimmedSpan, header helpers) by @pedrosakuma in #160
- feat: direct varData properties (#162) + foreach vs callback bench (#156) by @pedrosakuma in #163
Full Changelog: v1.5.0...v1.6.0
v1.5.0
What's Changed
- feat: foreach-style enumerator for top-level groups (#156) by @pedrosakuma in #158
- test: foreach enumerator coverage for mixed group + varData (#156 follow-up) by @pedrosakuma in #159
Full Changelog: v1.4.0...v1.5.0
v1.4.0
What's Changed
- feat: DevEx P0 quick wins — TryFormat, AsTrimmedSpan, header helpers by @pedrosakuma in #157
Full Changelog: v1.3.0...v1.4.0
v1.3.0
What's Changed
- feat: expose Buffer/Block on {Msg}DataReader (#151) by @pedrosakuma in #152
Full Changelog: v1.2.1...v1.3.0
v1.2.1
What's Changed
- fix: restore widest-version base struct alias (#149) by @pedrosakuma in #150
Full Changelog: v1.2.0...v1.2.1
v1.2.0
What's Changed
- feat: consumer improvements v1.1.0 (#131-#137) by @pedrosakuma in #138
- fix: resolve CS8656 regression with composite struct fields (#139) by @pedrosakuma in #140
- fix: remaining CS8656 on OptionalType Value + TreatWarningsAsErrors (#139) by @pedrosakuma in #141
- feat(v1.2.0): consumer ergonomics (#144 #145 #146 #147) + cleanups by @pedrosakuma in #148
Full Changelog: v1.0.2...v1.2.0