Skip to content

SwiftCollections v4.0.3

Choose a tag to compare

@mrdav30 mrdav30 released this 07 May 15:26
· 63 commits to main since this release

Patch release focused on serialization alignment, diagnostics reuse, and low-level performance cleanup.

Highlights

  • Migrated state-backed JSON serialization to Chronicler v0.2.0.

    • Collection JSON still preserves the existing { "State": ... } shape.
    • State-backed collection types now implement Chronicler’s explicit IStateBacked<TState> contract.
    • Replaced SwiftCollections’ local state JSON converter implementation with Chronicler’s StateJsonConverterFactory.
  • Added shared diagnostics primitives under SwiftCollections.Diagnostics.

    • Includes reusable DiagnosticLogger, typed interpolated diagnostic handlers, and channel logging extensions.
    • Supports disabled-level interpolation skipping so expensive formatted values are not evaluated when logging is off.
  • Improved hashing/null-guard internals.

    • Avoids value-type boxing in generic null guards.
    • Adds allocation-free integer hash-combine overloads for common hot paths.
  • Added public netstandard2.1 interpolated string handler attribute shims so downstream libraries can rely on SwiftCollections instead of carrying local copies.

Dependency Updates

  • Added Chronicler.Core / Chronicler.Core.Lean 0.2.0.
  • Updated System.Text.Json for netstandard2.1 from 10.0.5 to 10.0.7.

CI & Tests

  • CI now builds and tests Release configuration.
  • Added coverage for Chronicler JSON round trips, diagnostics behavior, hash helpers, and collection edge cases.
  • Stabilized flaky diagnostics-related tests.

Compatibility Notes

  • Existing serialized JSON payload shape is preserved.
  • Code that directly referenced SwiftStateJsonConverter or SwiftStateJsonConverterFactory should migrate to Chronicler’s StateJsonConverter / StateJsonConverterFactory.