Skip to content

Version 0.6.3 - #4

Merged
marcobambini merged 1 commit into
mainfrom
version-0.6.3
Oct 11, 2026
Merged

marcobambini merged 1 commit into
mainfrom
version-0.6.3

Conversation

@marcobambini

Copy link
Copy Markdown
Member

Cosa fa

Porta MW_VERSION a 0.6.3 (src/multiwriter.h), aggiorna l'esempio di mw_version() nel README.md e chiude la sezione Unreleased del CHANGELOG.md come ## 0.6.3 - 2026-10-11, con le voci delle PR #1, #2 e #3. Segue lo schema di d29a82e (Version 0.6.2).

Cosa contiene la 0.6.3

Fixed

  • Rebase: una policy di conflitto propria dello statement (INSERT/UPDATE OR ..., ON CONFLICT di un UPSERT) non è nelle row image; la transazione viene rifiutata (SQLITE_BUSY) invece di essere rebasata con la policy dello schema.
  • Rebase: colonna ANY di una tabella STRICT senza affinità (1 e 1.0 valori diversi); decodifica degli interi negativi senza shift di un valore negativo.
  • synchronous=NORMAL/OFF: il commit ritorna quando il suo record è nel file.
  • PRAGMA synchronous: il livello dell'engine segue SQLite, anche per i database attaccati.
  • Modalità processi: un record illeggibile non cancella più i segmenti successivi.
  • Row diff: un'allocazione che fallisce rifiuta la transazione.
  • Log: un commit coperto da un fsync già in volo non è più rifiutato quando il log fallisce nel frattempo.

Changed: test/sanitize.sh, mw_procs (kill dopo gli inserimenti, non a tempo).
Added: nove test nuovi.

Da sapere prima del merge

  • Costo in NORMAL e OFF: circa -25% di commit al secondo misurato con mw_bench (206k → 157k tx/s, 16 connessioni su 8 thread, p50 da 35 a 48 µs). È dichiarato nel changelog; se lo ritieni una modifica di comportamento da segnalare con una versione minore, la 0.7.0 è una scelta legittima: in quel caso basta cambiare numero e titolo.
  • Il merge su main pubblica una release: il job release costruisce gli artefatti per tutte le piattaforme, aggiorna Package.swift con un commit [auto-update] e crea tag e release 0.6.3. Non si annulla in modo pulito.
  • Il tag non va pushato a mano: lo crea la CI (tags-ignore: '**' nel workflow).
  • Fallimento isolato non chiarito: mw_serial ("small index of versions", due epoch non spiegati) è fallito una volta su linux-x86_64 e non si è ripetuto al rilancio. Non so se sia una rarità preesistente del collaudo o un effetto delle PR Fix rebase conflicts, log and ATTACH durability, recovery and row diff OOM #1/Log: a commit covered by the fsync in flight is not refused when the log fails #2; riproduzione su Linux a 2 CPU ancora non fatta.

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@marcobambini
marcobambini merged commit 1ed60ef into main Oct 11, 2026
@marcobambini
marcobambini deleted the version-0.6.3 branch October 11, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant