Pekka Enberg
edd45ff7b8
Improve MVCC DX by dropping --experimental-mvcc flag
...
The DX is right now pretty terrible:
```
penberg@vonneumann turso % cargo run -- hello.db
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.15s
Running `target/debug/tursodb hello.db`
Turso v0.4.0-pre.18
Enter ".help" for usage hints.
Did you know that Turso supports live materialized views? Type .manual materialized-views to learn more.
This software is in BETA, use caution with production data and ensure you have backups.
turso> PRAGMA journal_mode = 'experimental_mvcc';
× Invalid argument supplied: MVCC is not enabled. Enable it with `--experimental-mvcc` flag in the CLI or by setting the MVCC option in `DatabaseOpts`
turso>
```
To add insult to the injury, many SDKs don't even have a way to enable
MVCC via database options. Therefore, let's remove the flag altogether.
2025-12-19 12:59:42 +02:00
Pekka Enberg
3009ae14e0
Turso 0.4.0-pre.18
2025-12-19 09:57:09 +02:00
Nikita Sivukhin
5f002f9441
fix another bug 🤦
2025-12-17 15:54:05 +04:00
Nikita Sivukhin
07c7f90aea
propagate partial sync settings in the web
2025-12-17 15:44:34 +04:00
Pekka Enberg
a0bd11c035
Merge 'No tempfiles on wasm' from Nikita Sivukhin
...
We now can attempt to create temp file in WASM for sorter and hash join
which will result in crash:
```
stderr | promise.test.ts > sorter-wasm
thread '<unnamed>' panicked at library/std/src/sys/pal/wasi/os.rs:125:5:
stderr | promise.test.ts > sorter-wasm
no filesystem on wasm
stderr | promise.test.ts > sorter-wasm
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
This PR make simple adjustment to always use in-memory IO for temp files
in WASM
Closes #4256
2025-12-17 12:23:09 +02:00
Pekka Enberg
7fd4b0ed63
Turso 0.4.0-pre.17
2025-12-17 10:18:19 +02:00
Nikita Sivukhin
fb568b9ead
add test with huge hash join
2025-12-17 12:18:16 +04:00
Pekka Enberg
8eeec6811b
Merge 'fix bug in the sync engine wasm implementation' from Nikita Sivukhin
...
- We do unnecessary clone of the underlying DB object which we will
never be able to close explicitly
- For language with GC this means that user has no control over object
lifetime
Closes #4242
2025-12-17 10:07:09 +02:00
Nikita Sivukhin
8b781b6646
add tests with sorter which will attempt to create tempfile in wasm
2025-12-17 11:05:04 +04:00
Nikita Sivukhin
b373c60b3d
fix bug in the sync engine wasm implementation
...
- we do unnecessary clone of the underlying DB object which we will never be able to close explicitly
2025-12-16 14:03:07 +04:00
Nikita Sivukhin
5ab69bcf20
rename speculative load to prefetch (docs already uses this terminology)
2025-12-16 13:59:39 +04:00
Pekka Enberg
574c8258b0
Turso 0.4.0-pre.16
2025-12-15 09:58:23 +02:00
Pekka Enberg
944664a16e
Turso 0.4.0-pre.15
2025-12-15 09:12:29 +02:00
Nikita Sivukhin
bbb483b311
run get(...) to completion - otherwise INSERT ... RETURNING will be executed incorrectly
...
- dirty fix, the proper fix is to use primitives from sdk-kit
2025-12-12 17:37:04 +04:00
Preston Thorpe
73289c6325
Merge 'Go driver' from Nikita Sivukhin
...
This PR brings back go driver to the turso monorepo and adds sync
support for the golang.
It depends on the pre-compiled binaries at
https://github.com/tursodatabase/turso-go-platform-libs repository
There is a CI which trigger build on the turso-go-platform-libs repo in
case when release tag is published
Reviewed-by: Preston Thorpe <preston@turso.tech>
Closes #4085
2025-12-11 09:52:15 -05:00
Pekka Enberg
b6d4e5ff69
Turso 0.4.0-pre.14
2025-12-11 14:33:40 +02:00
Pekka Enberg
8f4c2f558d
Turso 0.4.0-pre.13
2025-12-11 13:34:47 +02:00
Nikita Sivukhin
78eac5083b
fix js field names for consistency with other drivers
2025-12-11 15:14:48 +04:00
Pekka Enberg
b0400a3ed6
Turso 0.4.0-pre.12
Build & publish @tursodatabase/database / db-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / db-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-apple-darwin - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-wasm32-wasip1-threads - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / Test DB bindings on Linux-x64-gnu - node@20 (push) Blocked by required conditions
Build & publish @tursodatabase/database / Test DB bindings on browser@20 (push) Blocked by required conditions
Build & publish @tursodatabase/database / Publish (push) Blocked by required conditions
Python / configure-strategy (push) Waiting to run
Python / test (push) Blocked by required conditions
Python / lint (push) Waiting to run
Python / linux (x86_64) (push) Waiting to run
Python / macos-arm64 (aarch64) (push) Waiting to run
Python / sdist (push) Waiting to run
Python / Release (push) Blocked by required conditions
Rust / cargo-fmt-check (push) Waiting to run
Rust / build-native (blacksmith-4vcpu-ubuntu-2404) (push) Waiting to run
Rust / build-native (macos-latest) (push) Waiting to run
Rust / build-native (windows-latest) (push) Waiting to run
Rust / clippy (push) Waiting to run
Rust / simulator (push) Waiting to run
Rust / test-limbo (push) Waiting to run
Rust / test-sqlite (push) Waiting to run
Rust Benchmarks+Nyrkiö / bench (push) Waiting to run
Rust Benchmarks+Nyrkiö / clickbench (push) Waiting to run
Rust Benchmarks+Nyrkiö / tpc-h-criterion (push) Waiting to run
Rust Benchmarks+Nyrkiö / tpc-h (push) Waiting to run
Rust Benchmarks+Nyrkiö / vfs-bench-compile (push) Waiting to run
2025-12-11 12:58:26 +02:00
Nikita Sivukhin
91115a0d90
fix js naming
2025-12-11 14:43:28 +04:00
Pekka Enberg
a0123f62e5
Turso 0.4.0-pre.11
2025-12-10 16:14:58 +02:00
Pekka Enberg
1ce09b26ea
Turso 0.4.0-pre.10
2025-12-10 15:09:56 +02:00
Pekka Enberg
01fc636da4
Turso 0.4.0-pre.9
2025-12-09 14:55:30 +02:00
Pekka Enberg
d2e26f944c
Turso 0.4.0-pre.8
2025-12-09 14:39:23 +02:00
Nikita Sivukhin
17d433afaf
add concurrency test
2025-12-09 14:50:01 +04:00
Nikita Sivukhin
617aa2d713
add comments
2025-12-09 14:41:56 +04:00
Nikita Sivukhin
82b677f7d0
fix test
2025-12-09 14:10:15 +04:00
Nikita Sivukhin
dca6d0e05c
fix bindings
2025-12-09 13:14:25 +04:00
Jussi Saurio
826ca4d44d
chore: remove experimental_indexes feature flags
2025-12-08 13:00:37 +02:00
Nikita Sivukhin
510a61b5eb
Merge branch 'main' into sync-sdk-kit
2025-12-03 21:16:15 +04:00
Pekka Enberg
2e3161942e
Turso 0.4.0-pre.7
2025-12-03 10:47:06 +02:00
Pekka Enberg
0352247783
Turso 0.4.0-pre.6
2025-12-03 10:05:01 +02:00
Pekka Enberg
34964680ca
Turso 0.4.0-pre.5
Rust Benchmarks+Nyrkiö / tpc-h-criterion (push) Waiting to run
Build & publish @tursodatabase/database / db-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / db-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-apple-darwin - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-wasm32-wasip1-threads - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / Test DB bindings on Linux-x64-gnu - node@20 (push) Blocked by required conditions
Build & publish @tursodatabase/database / Test DB bindings on browser@20 (push) Blocked by required conditions
Build & publish @tursodatabase/database / Publish (push) Blocked by required conditions
Python / configure-strategy (push) Waiting to run
Python / test (push) Blocked by required conditions
Python / lint (push) Waiting to run
Python / linux (x86_64) (push) Waiting to run
Python / macos-arm64 (aarch64) (push) Waiting to run
Python / sdist (push) Waiting to run
Python / Release (push) Blocked by required conditions
Rust / cargo-fmt-check (push) Waiting to run
Rust / build-native (blacksmith-4vcpu-ubuntu-2404) (push) Waiting to run
Rust / build-native (macos-latest) (push) Waiting to run
Rust / build-native (windows-latest) (push) Waiting to run
Rust / clippy (push) Waiting to run
Rust / simulator (push) Waiting to run
Rust / test-limbo (push) Waiting to run
Rust / test-sqlite (push) Waiting to run
Rust Benchmarks+Nyrkiö / bench (push) Waiting to run
Rust Benchmarks+Nyrkiö / clickbench (push) Waiting to run
Rust Benchmarks+Nyrkiö / tpc-h (push) Waiting to run
Rust Benchmarks+Nyrkiö / vfs-bench-compile (push) Waiting to run
2025-12-03 09:39:38 +02:00
Nikita Sivukhin
5bb5bae01c
Merge branch 'main' into sync-sdk-kit
2025-12-02 17:28:06 +04:00
Nikita Sivukhin
ae603000e1
implement simple turso-sync bindings for python
2025-12-02 17:18:46 +04:00
Nikita Sivukhin
8df7f7e416
adjust python bindings
2025-12-02 16:03:06 +04:00
Nikita Sivukhin
65ec20a562
small renames
2025-12-01 22:53:39 +04:00
Pekka Enberg
730836f3f3
Turso 0.4.0-pre.4
Build & publish @tursodatabase/database / db-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / db-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-apple-darwin - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-aarch64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-wasm32-wasip1-threads - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-pc-windows-msvc - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / sync-bindings-x86_64-unknown-linux-gnu - node@20 (push) Waiting to run
Build & publish @tursodatabase/database / Test DB bindings on Linux-x64-gnu - node@20 (push) Blocked by required conditions
Build & publish @tursodatabase/database / Test DB bindings on browser@20 (push) Blocked by required conditions
Build & publish @tursodatabase/database / Publish (push) Blocked by required conditions
Python / sdist (push) Waiting to run
Python / Release (push) Blocked by required conditions
Python / configure-strategy (push) Waiting to run
Python / test (push) Blocked by required conditions
Python / lint (push) Waiting to run
Python / linux (x86_64) (push) Waiting to run
Python / macos-arm64 (aarch64) (push) Waiting to run
Rust / cargo-fmt-check (push) Waiting to run
Rust / build-native (blacksmith-4vcpu-ubuntu-2404) (push) Waiting to run
Rust / build-native (macos-latest) (push) Waiting to run
Rust / build-native (windows-latest) (push) Waiting to run
Rust / clippy (push) Waiting to run
Rust / simulator (push) Waiting to run
Rust / test-limbo (push) Waiting to run
Rust / test-sqlite (push) Waiting to run
Rust Benchmarks+Nyrkiö / bench (push) Waiting to run
Rust Benchmarks+Nyrkiö / clickbench (push) Waiting to run
Rust Benchmarks+Nyrkiö / tpc-h-criterion (push) Waiting to run
Rust Benchmarks+Nyrkiö / tpc-h (push) Waiting to run
Rust Benchmarks+Nyrkiö / vfs-bench-compile (push) Waiting to run
2025-12-01 19:49:10 +02:00
Nikita Sivukhin
3cad64e5e4
rename weird ProtocolIo to the SyncEngineIo
2025-11-28 21:40:52 +04:00
Pekka Enberg
9bf6e6efd9
Merge 'use i64 for registers p1,p2,p3,p5 in EXPLAIN output' from Mikaël Francoeur
...
To avoid overflows, use i64 for p1,p2,p3,p5 in EXPLAIN output. This
matches SQLite's behaviour (https://github.com/sqlite/sqlite/blob/master
/src/vdbeaux.c#L2460-L2476).
I also changed the column type string for p4, there was a preexisting
mismatch between the value type and the explicit type string.
Closes https://github.com/tursodatabase/turso/issues/3944
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>
Closes #3961
2025-11-23 09:47:22 +02:00
Pekka Enberg
b5c5666a49
Turso 0.4.0-pre.3
2025-11-22 09:56:18 +02:00
Pekka Enberg
687d9faf37
Turso 0.4.0-pre.2
2025-11-19 09:40:08 +02:00
Mikaël Francoeur
e65fbfe6f6
use i64 for register values p1,p2,p3,p5
2025-11-16 09:58:05 -05:00
Pekka Enberg
1f79fbc22c
Merge 'Partial sync basic' from Nikita Sivukhin
...
This PR implements basic support for partial sync. Right now the scope
is limited to only `:memory:` IO and later will be properly expanded to
the file based IO later.
The main addition is `PartialDatabaseStorage` which make request to the
remote server for missing local pages on demand.
The main change is that now tursodatabase JS bindings accept optional
"external" IO event loop which in case of sync will drive `ProtocolIo`
internal work associated with remote page fetching tasks.
Closes #3931
2025-11-13 16:38:04 +02:00
Nikita Sivukhin
72089d2682
adjust compilation
2025-11-12 16:30:50 +04:00
Nikita Sivukhin
41d7d5af49
adjust tests
2025-11-12 16:15:54 +04:00
Nikita Sivukhin
2d517f9fd7
use sparse io fir partial sync in case when file is used
2025-11-12 14:20:26 +04:00
Nikita Sivukhin
d519945098
make ArenaBuffer unsafe Send + Sync
2025-11-12 10:54:40 +04:00
Nikita Sivukhin
02275a6fa1
fix js bindings
2025-11-12 10:53:25 +04:00
Nikita Sivukhin
98db727a99
integrate extra io stepping logic to the JS bindings
2025-11-12 10:53:25 +04:00