Skip to content

Replicant 1.3.0

Choose a tag to compare

@palermo-git palermo-git released this 29 Sep 00:49

The casting-contract release. Full details in the CHANGELOG and ADR-0008.

Fixed

  • Multidimensional arrays of every casted type now deliver nested terms instead of halting (numeric[][], timestamptz[][], jsonb[][], …; only int[]/float[] recursed before).
  • interval[] is no longer silently corrupted to integers (the "2 mons 3 days" → 2 prefix-clause trap).
  • The array parser is quote-aware and strict where Postgres is strict (braces inside quoted elements are element data; empty elements error; unquoted NULLABLE-style elements are ordinary text).
  • money is locale-honest — strict C/en-US shapes deliver a Decimal; any other lc_monetary form delivers the original string, never a silently-wrong Decimal.
  • timetz delivers the raw string (fraction + offset preserved).
  • Signed type_modifier (-1 stays -1), strict malformed-frame decoding (TRUNCATE lengths, TYPE NUL), clean terminating halt on a missing snapshot window, streaming-gated ack buffers, honest fault attribution for keyless backfill I/O faults.

Changed

  • ⚠ Replicant.lsn_from_string/1 returns {:ok, lsn} | {:error, :invalid_lsn} (was a raise). Unwrap the tuple on upgrade.

Added

  • The complete third-party reference set: a 30-event telemetry table, a halt-reason operator guide, and the value-casting contract (usage-rules); README casting section; ADR-0008; the full getting-started Livebook tour with a live casting demo whose values its CI asserts on every push.