Skip to content

Releases: ZeroAlloc-Net/ZeroAlloc.Mapping

v1.6.0

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 24 May 14:00
7fbfad0

1.6.0 (2026-05-24)

Features

  • mapping: v1.5 — DeepClone + CycleSafe full integration (B12) (#19) (8397193)

v1.5.0

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 23 May 12:54
ff9b4a3

1.5.0 (2026-05-23)

Features

  • v1.4 — IQueryable projections, cycle-safe mapping, deep-clone (B3 + B6 + B11) (#17) (0240dcf)

v1.4.1

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 12 May 12:45
cdda1a4

1.4.1 (2026-05-12)

Documentation

  • readme: replace placeholder with full README showcasing benchmarks (#14) (fa0517c)

v1.4.0

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 10 May 06:33
b1309d3

1.4.0 (2026-05-10)

Features

  • bench: add AutoMapper profile (9cb6eac)
  • bench: add hand-written baseline mappers (d3bb876)
  • bench: add Mapperly mapper definitions (381b781)
  • bench: add shared model fixtures (58873de)
  • bench: add ZeroAlloc.Mapping mapper definitions (76baee7)
  • bench: Collection scenario (40fed2c)
  • bench: FlatConversion scenario (6873a35)
  • bench: FlatIdentity scenario (ed18d4d)
  • bench: Flattening scenario (f532c09)
  • bench: import-benchmarks.ps1 splices BDN results into performance.md (f138ea1)
  • bench: parity check across all four mappers (bde4d0e)
  • bench: Polymorphic scenario (1c0f7a0)
  • bench: restore string→int Parse coverage to ConvSrc (9bfbf76)
  • bench: TryMap scenario (547b896)
  • bench: UpdateInPlace scenario (6a485e1)

Bug Fixes

  • bench: drop misleading TryMap try/catch wrap; align Sanity input with bench (7347d74)
  • bench: import script — strip full project prefix in title, fix ${timestamp} braces, retry locked file writes (002573a)
  • bench: order import-benchmarks output by narrative, not alphabet (dcb609e)

Documentation

  • performance: add Benchmarks section with sentinels (6330509)
  • performance: caveats, AutoMapper licensing, FlatIdentity noise note (b2c2f44)
  • performance: import first benchmark run (5fab55a)
  • performance: re-import after TryMap source fix and narrative-ordering script (848aa44)
  • plans: benchmark harness design + implementation plan (0efd159)

v1.3.1

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 09 May 11:20
3331435

1.3.1 (2026-05-09)

Documentation

  • advanced: MappingError tree + Result integration + edge cases (a63416e)
  • basic-mapping: property matching + 5 conversion paths + customisation (3d9a24a)
  • basic-mapping: replace non-existent [StrictDestinationMapping] with real [StrictSourceMapping] (b2dade4)
  • collections: auto-emitted overloads + nested-element + [SkipCollectionOverloads] (9be42a0)
  • cookbook: 01 command-to-domain with smart-ctor OrderId (8ac2f79)
  • cookbook: 02 domain-to-dto with [ReverseMap] (c231d46)
  • cookbook: 03 fallible mapping with smart-ctor value objects (f4ef2d2)
  • cookbook: 04 flattening nested DTOs (!. vs ?. chain rules) (1c172a9)
  • cookbook: 05 polymorphic domain hierarchies (PaymentMethod example) (9e7bef3)
  • cookbook: 06 collection pipelines + EF Core update-in-place (db3dffb)
  • cookbook: match recipe 05 dispatcher message to snapshot verbatim (f240ec9)
  • culture-and-strict: [MappingCulture] + [StrictSourceMapping] + [CaseInsensitiveMapping] (953065f)
  • diagnostics: ZAMP001-016 reference with trigger + fix examples (7af2c3d)
  • flattening: dotted [MapProperty] paths + null-handling rules + ZAMP005 (95a346e)
  • getting-started: 5-minute install + first mapping walkthrough (03a5449)
  • hooks: [BeforeMap]/[AfterMap] + variance + TryMap error-code split (2ad97f5)
  • hooks: quote frontmatter description starting with [ — YAML parser fix (6674ba4)
  • index: replace v1 placeholder with full Docusaurus index (3e980fa)
  • performance: zero-alloc internals + allocation-budget table + AOT (63984ec)
  • plans: website docs launch design — full Mediator-parity doc set + submodule wiring (7b6826c)
  • plans: website docs launch implementation plan — 25 tasks across 7 phases (b0c5964)
  • polymorphic: switch dispatcher + ZAMP013/014/015 + degenerate-pair guard (2152153)
  • reverse-mapping: [ReverseMap] desugar + ZAMP009 safety guard (1af7412)
  • testing: snapshot pattern + allocation gates + generator harness (ccdaae1)
  • update-in-place: void Map(TSrc, TDst) overload + ZAMP012 (5a7721b)
  • website launch — Mediator-parity doc set (14 pages + 6 cookbook) (eb919ea)

v1.3.0

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 08 May 19:28
d6f3773

1.3.0 (2026-05-08)

Features

  • generator: auto-emit 4 collection overloads per [Map<,>] (9803d71)
  • generator: auto-emit 4 fallible collection overloads per [TryMap<,>] (65c6c13)
  • generator: ZAMP016 detects duplicate [MappingCulture] across partial parts (d7f5b11)
  • runtime: [SkipCollectionOverloads] opt-out marker + model wiring (117879d)
  • v1.3 — auto-collection overloads + ZAMP016 (0a10cd9)

Bug Fixes

  • generator: polymorphic-pair guard + tighten TryMap skip-overloads test (c32a960)

Documentation

  • backlog: prune items graduated into v1.3 (B8, B15) (f89014b)
  • plans: v1.3 design — B8 auto-collection overloads + B15 ZAMP016 (3c674cf)
  • plans: v1.3 implementation plan — 7 tasks across 4 phases (3359c3a)

Tests

  • certify: allocation budgets + AOT smoke for v1.3 collection overloads (2f1024a)

v1.2.0

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 08 May 14:15
198c3b7

1.2.0 (2026-05-08)

Features

  • generator: [MappingCulture] class marker overrides InvariantCulture default (fa09915)
  • generator: [PolymorphicMap<,>] / [PolymorphicTryMap<,>] dispatchers + ZAMP013/014/015 (b311feb)
  • generator: update-in-place void-overload Map(TSrc, TDst) + ZAMP012 (25fd4fc)
  • v1.2 — update-in-place, [MappingCulture], polymorphic dispatch (4f12c66)

Bug Fixes

  • generator: PropertyMatcher walks inheritance chain for inherited properties (ca71366)
  • generator: update-in-place handles dotted flattening + mixed-settability ZAMP012 (8c183fc)

Code Refactoring

  • generator: cleanups + ZAMP015 false-positive fix from final review (6b06f6f)

Documentation

  • backlog: B15 — duplicate [MappingCulture] across partial parts (v1.3 candidate) (86fecf7)
  • backlog: prune items graduated into v1.2 (B2, B5, B9) (09d6bbb)
  • plans: v1.2 design — B5 update-in-place, B9 MappingCulture, B2 polymorphic (01da16e)
  • plans: v1.2 implementation plan — 6 tasks across 6 phases (bf5bf8d)

Tests

  • certify: allocation budgets + AOT smoke + reflection tests for v1.2 features (65547bf)

v1.1.0

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 08 May 08:32
0e839a5

1.1.0 (2026-05-08)

Features

  • generator: hook param matching uses Compilation.ClassifyConversion (assignable-from) (7f3ba06)

Bug Fixes

  • generator: explicit [MapProperty] rename overrides [Obsolete] auto-skip (1d225c2)
  • generator: hook exceptions in [TryMap] surface as mapping.hook.threw (df4a671)
  • post-v1 review follow-ups (hook variance, hook.threw code, Obsolete+rename, +tests) (4a41344)

Tests

  • generator: pin hook src-type matching (regression test for 7f071d3) (2ef9029)
  • runtime: reflection coverage for v1-extension attributes (2df6ef0)

v1.0.0

Choose a tag to compare

@MarcelRoozekrans MarcelRoozekrans released this 08 May 05:05
55420e2

1.0.0 (2026-05-07)

Features

  • certify: AOT smoke + allocation gate (lifted from Authorization pattern) (d6a92f0)
  • generator: [BeforeMap] / [AfterMap] hooks emitted inline (396d922)
  • generator: [CaseInsensitiveMapping] opt-in + ZAMP011 ambiguity guard (52bfec1)
  • generator: [MapProperty] flattening via dotted source path + ZAMP005 segment-walk (271e974)
  • generator: [MapProperty]/[MapValue]/[MapperIgnore{Source,Target}] support (693326a)
  • generator: [ReverseMap<,>] desugars to bidirectional [Map<,>] + ZAMP009 guard (bad1b85)
  • generator: [StrictSourceMapping] opt-in + ZAMP010 unconsumed-source diagnostic (1ba7c60)
  • generator: [TryMap] emission with try/catch + tree-recursive MappingError (0b5fea8)
  • generator: collection-element loop + nested-mapper chain (9f8ae68)
  • generator: conversion resolver — cast, ctor, Parse, static factory (7786cc3)
  • generator: diagnostics ZAMP001-ZAMP008 + clean-source negative-control (615353b)
  • generator: discover [Map<,>]/[TryMap<,>] classes + stub emission (f4f20b0)
  • generator: flat [Map] emission via primary-ctor + property matcher (aca5483)
  • generator: silent skip of [Obsolete] source/destination members (d7d0eb0)
  • runtime: [MapProperty] / [MapValue] / [MapperIgnore{Source,Target}] (37b7e16)
  • runtime: generic [Map<,>] and [TryMap<,>] class-level attributes (d493ed9)
  • runtime: MappingError record struct with tree-recursive Children (589e1fb)
  • v1.0.0 scaffold + runtime + generator + AOT gate (3467626)

Bug Fixes

  • generator: hooks fire only when source/destination types match (7f071d3)
  • generator: ZAMP011 message accuracy + skip [Obsolete] in ambiguity scan (48c4563)

Code Refactoring

  • generator: IsObsolete uses Name+namespace check; add ZAMP001 negative-control test (3d847f1)

Documentation

  • backlog: prune items graduated into v1 (B1, B4, B10, B12, B13, B14) (6a3afe0)
  • backlog: seed B1-B14 deferred-from-v1 items with graduation signals (5b6d348)
  • plans: v1 extensions design — B1, B4, B10, B12, B13, B14 (98d1cc7)
  • plans: v1 extensions implementation plan — 9 tasks across 9 phases (72d48f7)
  • plans: zeroalloc.mapping design (c152559)
  • plans: zeroalloc.mapping v1 implementation plan (f69e2ae)

Tests

  • certify: allocation budgets + AOT smoke for v1 extensions (7521345)