From dc47cd83b170fe15110bacb66b83e0f80bfdc221 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Wed, 20 Aug 2025 09:33:26 +0300 Subject: [PATCH] Update CHANGELOG --- CHANGELOG.md | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 238 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a1de4c8b..5bd406681 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,243 @@ # Changelog +## 0.1.4 -- 2025-08-20 + +### Added +* bindings/rust: Add method (Pekka Enberg) +* Add helper to convert io::clock::Instant to useable format (Preston Thorpe) +* bindings/javascript: Add TypeScript declarations to package (Pekka Enberg) +* add missing closing tag (Glauber Costa) +* add metrics and implement the .stats command (Glauber Costa) +* Add bench-sqlite script and makefile command (Preston Thorpe) +* Fix simulator docker build by adding new sync directory (Preston Thorpe) +* core/mvcc: schema_did_change support and find last valid version (Pere Diaz Bou) +* Add list databases and open database commands to the MCP server (Glauber Costa) +* Add documentation and rename functions (Mikaël Francoeur) +* Add io_yield macros to reduce boilerplate (Preston Thorpe) +* Add --keep-files flag to allow for inspection of files for successful simulator runs (Preston Thorpe) +* core/printf: support for the %i operand (Luiz Gustavo) +* Add parser to Dockerfiles for cargo chef (Jussi Saurio) +* Add framework for testing extensions in TCL (Piotr Rżysko) +* Fix WAL initialization to last committed frame (Nikita Sivukhin) +* sim: add Property::TableHasExpectedContent (Jussi Saurio) +* Properly implement CLI command (Preston Thorpe) +* docs: add Claude Code MCP integration guide (Braden Wong) +* Add assertion for expected write amount in writev callback (Preston Thorpe) +* sim: add Property::ReadYourUpdatesBack (Jussi Saurio) +* Add support for unlikely(X) (bit-aloo) +* Implement normal views (Glauber Costa) +* turso-sync: support checkpoint (Nikita Sivukhin) +* bindings/javascript: Add async connect() function (Pekka Enberg) +* Direct schema mutation – add RenameColumn instruction (Levy A.) +* Implement Aggregations for DBSP views (Glauber Costa) +* stop silently ignoring unsupported features in incremental view where clauses (Jussi Saurio) +* turso-sync: support updates and schema changes (Nikita Sivukhin) +* turso-cdc: add updates column for cdc table (Nikita Sivukhin) +* docs: improve README initialization section clarity (Braden Wong) +* Add support for Full checkpoint mode in the WAL (Preston Thorpe) +* Add support for PRAGMA freelist_count (bit-aloo) +* Initial pass on incremental view maintenance with DBSP (Glauber Costa) +* SQLite C API improvements: add bind_text and bind_blob (Danawan Bimantoro) +* perf/clickbench: enable rest of queries since we support DISTINCT and REGEXP_REPLACE (Jussi Saurio) +* Add table name to the delete bytecode (Glauber Costa) +* Initial pass on incremental view maintenance with DBSP (Glauber Costa) +* docs: fix CLI command and add homebrew install instructions for MacOS (Mattia) +* Reimplement LimboRwLock in the WAL (Preston Thorpe) +* BufferPool: add arena backed pool to support fixed opcodes and coalescing (Preston Thorpe) +* translate: return parse errors for unsupported features instead of silently ignoring (Jussi Saurio) +* Add query only pragma (bit-aloo) +* Direct schema mutation – add instruction (Levy A.) +* Add .clone CLI command to copy database files (Preston Thorpe) +* PageContent: make read_x/write_x methods private and add dedicated methods (Jussi Saurio) +* SQLite C API improvements: add basic bind and column functions (Danawan Bimantoro) +* javascript: Implement Statement.iterate() (Pekka Enberg) +* Fix panic on loading extension on brand new connection (Preston Thorpe) +* implement the MaxPgCount opcode (Glauber Costa) +* Direct schema mutation – add instruction (Levy A.) +* Add regexp capture (bit-aloo) +* Add load_insn macro for compiler hint in vdbe::execute hot path (Preston Thorpe) +* test/fuzz: add ALTER TABLE column ops to tx isolation fuzz test (Jussi Saurio) +* core/mvcc: implement exists (Pere Diaz Bou) +* tests/fuzz_transactions: add tests for fuzzing transactions with MVCC (Pere Diaz Bou) +* perf/btree: implement fast algorithm for defragment_page (Jussi Saurio) +* bindings/rust: add with_mvcc option, open with path too! (Pere Diaz Bou) +* core/mvcc: implement seeking operations with rowid (Pere Diaz Bou) +* bindings/rust: add with_mvcc option (Pere Diaz Bou) +* Add bitmap to track pages in arenas (Preston Thorpe) +* Direct schema mutation – add instruction (Levy A.) +* core/mvcc: fix new rowid on restart (Pere Diaz Bou) +* Implement JavaScript bindings with minimal Rust core (Pekka Enberg) +* test/fuzz/transactions: add "PRAGMA wal_checkpoint" to txn isolation fuzz test (Jussi Saurio) +* Support the OFFSET clause for Compound select (meteorgan) +* Introduce some state machines in preparation for IO Completions refactor (Pedro Muniz) +* Add cli Dockerfile (Pere Diaz Bou) +* Implement the Cast opcode (Glauber Costa) +* Support VALUES clauses for compound select (meteorgan) +* fix: add packages to sim/antithesis dockerfiles for cargo-chef (Jussi Saurio) +* Add vector_concat and vector_slice support (bit-aloo) +* bindings/rust: Add Connection::execute_batch() (Rohith Suresh) +* bindings/java: Throw UnsupportedOperationException for unimplemented … (Pekka Enberg) +* turso-sync package: initial commit (Nikita Sivukhin) + +### Updated +* JavaScript improvements (Pekka Enberg) +* bindings/javascript: Rename to (Pekka Enberg) +* Small pager cleanups (Jussi Saurio) +* Do not begin or end transactions in nested statement (Jussi Saurio) +* make the MCP server instructions more visible on the README (Glauber Costa) +* FaultyQuery enabled by default (Pedro Muniz) +* hide our age (Glauber Costa) +* make sure our responses are compliant with MCP (Glauber Costa) +* Move sync code to own directory (Pekka Enberg) +* Refactor: use regular save/restore context mechanism for delete balancing (Jussi Saurio) +* Improve handling of inserts with column names (Wallys Ferreira) +* emit SetCookie when creating a view (Glauber Costa) +* unify halts (Glauber Costa) +* Update stale in memory wal header after restarting log (Preston Thorpe) +* sync-engine: Use SQL over HTTP instead of WAL push (Nikita Sivukhin) +* Convert SQLite parser in Rust by hand (Lâm Hoàng Phúc) +* Ensure we fsync the db file in all paths that we checkpoint (Preston Thorpe) +* Revive async io extension PR (Preston Thorpe) +* sim: reduce frequency of compound selects and complex joins (Jussi Saurio) +* Use BufferPool owned by Database instead of a static global (Jussi Saurio) +* sync-engine: avoid unnecessary WAL push (Nikita Sivukhin) +* use virtual root page for sqlite_schema (Mikaël Francoeur) +* io_uring: Gracefully handle submission queue overflow (Preston Thorpe) +* Disable unused variables in cargo clippy for CI (Pedro Muniz) +* Refactor: atomic ordering (Preston Thorpe) +* Document the I/O model (Pedro Muniz) +* disable checkpoint: adjust semantic (Nikita Sivukhin) +* SDK: enable indices everywhere (Nikita Sivukhin) +* Manual updates (Pekka Enberg) +* Wait for I/O completions (Pedro Muniz) +* IO Cleanups to use and (Pedro Muniz) +* move our dbsp-based views to materialized views (Glauber Costa) +* More State machines (Pedro Muniz) +* Rename page -> slot for arenas + buffer pool (Preston Thorpe) +* Unify JavaScript package README files (Pekka Enberg) +* simple README with warning (Nikita Sivukhin) +* core/wal: Minor checkpointing cleanups and optimizations (Preston Thorpe) +* perf/btree: optimize op_column (Jussi Saurio) +* Update PERF.md with mobibench instructions (Preston Thorpe) +* Handle single, double and unquoted strings in values clause (Mikaël Francoeur) +* Use rusqlite 0.37 with bundled SQLite everywhere (Jussi Saurio) +* Feat/pragma module list (Lucas Forato) +* remove turso-sync as now we have turso-sync-engine (Nikita Sivukhin) +* Sorter IO Completions (Pedro Muniz) +* Simulator should delete files after a successful run (Pedro Muniz) +* turso-sync: js package (Nikita Sivukhin) +* global allocator should not be set for library, only for executables (Pedro Muniz) +* Evaluate WHERE conditions after LEFT JOIN (Piotr Rżysko) +* Btree cache usable space (Jussi Saurio) +* Rename JavaScript package to (Pekka Enberg) +* perf: a few small insert optimizations (Jussi Saurio) +* javascript: Organize test cases better (Pekka Enberg) +* only allow multiples of 64 for performance in arena bitmap (Preston Thorpe) +* btree: Use correct byte offsets for page 1 in defragmentation (Jussi Saurio) +* bench/insert: use PRAGMA synchronous=full (Jussi Saurio) +* JavaScript improvements (Pekka Enberg) +* turso-sync: rewrite (Nikita Sivukhin) +* bench/insert: use locking_mode EXCLUSIVE and journal_mode=WAL for sqlite (Jussi Saurio) +* IO More State Machine (Pedro Muniz) +* refactor/btree: cleanup write/delete/balancing states (Jussi Saurio) +* cdc: emit entries for schema changes (Nikita Sivukhin) +* Coll seq (Glauber Costa) +* Remove RefCell from Buffer in IO trait methods and PageContents (Preston Thorpe) +* Remove Clone impl for Buffer and PageContent (Preston Thorpe) +* More state machine + Return IO in places where completions are created (Pedro Muniz) +* cleanup: remove unused page uptodate flag (Jussi Saurio) +* Relax I/O configuration attribute to cover all Unixes (Pedro Muniz) +* Update defragment page to defragment in-place (João Severo) +* Integrate virtual tables with optimizer (Piotr Rżysko) +* Reprepare Statements when Schema changes (Pedro Muniz) +* More State Machines in preparation for tracking IO Completions (Pedro Muniz) +* coalesce any adjacent buffers from writev calls into fewer iovecs (Preston Thorpe) +* extend raw WAL API with few more methods (Nikita Sivukhin) +* Use pwrite for single buffer pwritev call in unix IO (Preston Thorpe) +* hide dangerous methods behind conn_raw_api feature (Nikita Sivukhin) +* preserve files in IO memory backend (Nikita Sivukhin) +* Improve SQLite3 TCL test suite (Pekka Enberg) +* Make completions idempotent (Preston Thorpe) +* perf/btree: skip seek in move_to_rightmost() if we are already on rightmost page (Jussi Saurio) +* perf/pager: dont clear page cache on commit (Jussi Saurio) +* Rename liblimbo_sqlite3 to libturso_sqlite3 (Pekka Enberg) +* core: Fold HeaderRef to pager module (Pekka Enberg) +* perf/vdbe: remove eager cloning in op_comparison (Jussi Saurio) +* Update cargo-dist to the latest official version (Hiroaki Yutani) +* bindings/rust: Enhance API by removing verbosity (Diego Reis) +* use state machine for NoConflict opcode (Mikaël Francoeur) +* state_machine: remove State associated type (Pere Diaz Bou) +* Single quotes inside a string literal have to be doubled in (Diego Reis) +* core/mvcc: Move commit_txn() to generic state machinery (Pere Diaz Bou) +* bindings/javascript: Reduce VM/native crossing overhead (Pekka Enberg) +* Enable indexes by default (Jussi Saurio) +* perf/btree: improve performance of rowid() function (Jussi Saurio) +* core/mvcc: Persist changes through pager on commit (Pere Diaz Bou) +* Open a temporary on-disk file for ephemeral tables (Jussi Saurio) +* Force Sqlite to parse schema on connection benchmark (Levy A.) +* more compat police (Glauber Costa) +* Bury limbo-wasm (Diego Reis) +* IN queries (Glauber Costa) +* IN queries (Glauber Costa) +* vdbe: Disallow checkpointing in transaction (Jussi Saurio) +* Serverless JavaScript driver improvements (Pekka Enberg) +* Direct `DatabaseHeader` reads and writes – `with_header` and `with_header_mut` (Levy A.) +* refactor/btree: simplify get_next_record()/get_prev_record() (Jussi Saurio) +* Accumulate/batch vectored writes when backfilling during checkpoint (Preston Thorpe) +* remove non-existent opcode (Glauber Costa) +* skip invalid inputs in cosine distance prop test (bit-aloo) +* core/mvcc: Switch to parking_lot RwLock (Pekka Enberg) +* Rewrite the WAL (Preston Thorpe) +* turso-sync: bidirectional sync for local db (Nikita Sivukhin) +* Change more function signatures to return Completions (Pedro Muniz) +* Clean up conversion between InsnFunctionStepResult and StepResult (Diego Reis) +* core/mvcc: simplify mvcc cursor types (Pere Diaz Bou) +* bindings/javascript: Run tests serially (Diego Reis) +* Javascript testing cleanups (Pekka Enberg) +* Javascript API improvements (Pekka Enberg) +* Change function signatures to return IO Completions (Pedro Muniz) + +### Fixed +* Fix page locked panic (Pedro Muniz) +* Remove assertions from Completion::complete() and Completion::error() (Jussi Saurio) +* Completion Error (Pedro Muniz) +* fix/sim: prevent sim from trying to create an existing table or index (Jussi Saurio) +* Fail simulator on parse errors (Jussi Saurio) +* fix pragma table_info for views (Glauber Costa) +* Fix two issues in simulator (Jussi Saurio) +* Fix distinct order by (Jussi Saurio) +* Fix UPDATE: Do not use an index for iteration if that index is going to be updated (Jussi Saurio) +* Fix non-4096 page sizes (Jussi Saurio) +* fix: Handle fresh INSERTs in materialized view incremental maintenance (Glauber Costa) +* Fix: do computations on usable_space as usize, not as u16 (Jussi Saurio) +* Sync engine fixes (Nikita Sivukhin) +* Fix tables renaming to existing index and rename indexed columns on (Levy A.) +* Fix max_frame determination and comments in WAL checkpointing (Preston Thorpe) +* turso-sync: fix schema bug (Nikita Sivukhin) +* Fix: Rename clickbench output file limbo/turso (Henrik Ingo) +* Reprepare fix on write statement (Pedro Muniz) +* Fix view processing in the VDBE (Jussi Saurio) +* Fix performance regression in prepare (Piotr Rżysko) +* Fix JavaScript bindings packaging (Nikita Sivukhin) +* bench/insert: fix expected return value from pragma (Jussi Saurio) +* Fix segfault on schema update for virtual tables (Preston Thorpe) +* core/btree: fix re-entrancy bug in insert_into_page() (Jussi Saurio) +* Fix performance regression (Jussi Saurio) +* fix/wal: remove start_pages_in_frames_hack to prevent checkpoint data loss (Jussi Saurio) +* fix/core/translate: ALTER TABLE DROP COLUMN: ensure schema cookie is updated even when target table is empty (Jussi Saurio) +* io_uring: setup plumbing for Fixed opcodes (Preston Thorpe) +* JavaScript serverless driver fixes (Pekka Enberg) +* Fix vector deserialization alignment and blob/text empty mismatch (bit-aloo) +* fix/wal: reset ongoing checkpoint state when checkpoint fails (Jussi Saurio) +* Fix parser error for repetition in row values (Diego Reis) +* fix/wal: only rollback WAL if txn was write + fix start state for WalFile (Jussi Saurio) +* fix/bindings/rust: return errors instead of swallowing them and returning None (Jussi Saurio) +* fix/wal: make db_changed check detect cases where max frame happens to be the same (Jussi Saurio) +* fix/wal: reset page cache when another connection checkpointed in between (Jussi Saurio) +* Fix merge script to prevent incorrectly marking merged contributor PRs as closed (Preston Thorpe) +* Fix concat_ws to match sqlite behavior (bit-aloo) +* bindings/rust: return errors instead of vibecoded numbers (Jussi Saurio) + ## 0.1.3 -- 2025-07-29 ### Added