Nikita Sivukhin
0adb40534c
hind dangerous methods behind conn_raw_api feature
2025-08-04 12:40:28 +04:00
Diego Reis
31eb4403ad
Add integration tests for query_row and get
2025-08-01 16:00:32 -03:00
Diego Reis
8a47b9d5a4
Address PR's comments
2025-08-01 16:00:32 -03:00
Diego Reis
572d3bd4ce
Simplify Rust API verbosity by implementing Row.get() and
...
Statement.query_row()
2025-08-01 16:00:32 -03:00
Diego Reis
adb81dd6ce
Separate Row and Rows in its own file
2025-08-01 16:00:32 -03:00
Pekka Enberg
9a1ead44f1
Merge 'bindings/javascript: Reduce VM/native crossing overhead' from Pekka Enberg
...
Before:
```
penberg@vonneumann perf % node perf-turso.js
cpu: Apple M1
runtime: node v22.16.0 (arm64-darwin)
benchmark time (avg) (min … max) p75 p99 p999
----------------------------------------------------------------------- -----------------------------
• Statement
----------------------------------------------------------------------- -----------------------------
Statement.get() bind parameters 1'525 ns/iter (1'482 ns … 1'720 ns) 1'534 ns 1'662 ns 1'720 ns
summary for Statement
Statement.get() bind parameters
penberg@vonneumann perf % bun perf-turso.js
cpu: Apple M1
runtime: bun 1.2.15 (arm64-darwin)
benchmark time (avg) (min … max) p75 p99 p999
----------------------------------------------------------------------- -----------------------------
• Statement
----------------------------------------------------------------------- -----------------------------
Statement.get() bind parameters 1'198 ns/iter (1'157 ns … 1'495 ns) 1'189 ns 1'456 ns 1'495 ns
summary for Statement
Statement.get() bind parameters
```
After:
```
benchmark time (avg) (min … max) p75 p99 p999
----------------------------------------------------------------------- -----------------------------
• Statement
----------------------------------------------------------------------- -----------------------------
Statement.get() bind parameters 1'206 ns/iter (1'180 ns … 1'402 ns) 1'208 ns 1'365 ns 1'402 ns
summary for Statement
Statement.get() bind parameters
penberg@vonneumann perf % bun perf-turso.js
cpu: Apple M1
runtime: bun 1.2.15 (arm64-darwin)
benchmark time (avg) (min … max) p75 p99 p999
----------------------------------------------------------------------- -----------------------------
• Statement
----------------------------------------------------------------------- -----------------------------
Statement.get() bind parameters 1'019 ns/iter (980 ns … 1'360 ns) 1'005 ns 1'270 ns 1'360 ns
summary for Statement
Statement.get() bind parameters
```
Closes #2391
2025-08-01 19:18:33 +03:00
Pekka Enberg
f1794b6270
bindings/javascript: Add INSERT benchmark too
2025-08-01 18:17:13 +03:00
Pekka Enberg
d4633415a7
Merge 'Enable indexes by default' from Jussi Saurio
...
Enables indexes by default in Rust and Python bindings + the CLI, while
leaving the feature flag in place.
Comments out a single ALTER TABLE test that fails due to #2390
Closes #2389
2025-08-01 17:36:35 +03:00
Pekka Enberg
358c0bfc27
cargo fmt
2025-08-01 17:17:01 +03:00
Pekka Enberg
1db0637a5e
bindings/javascript: Improve benchmark
2025-08-01 16:55:04 +03:00
Pekka Enberg
94efe9dd46
bindings/javascript: Reduce VM/native crossing overhead
...
Before:
```
penberg@vonneumann perf % node perf-turso.js
cpu: Apple M1
runtime: node v22.16.0 (arm64-darwin)
benchmark time (avg) (min … max) p75 p99 p999
----------------------------------------------------------------------- -----------------------------
• Statement
----------------------------------------------------------------------- -----------------------------
Statement.get() bind parameters 1'525 ns/iter (1'482 ns … 1'720 ns) 1'534 ns 1'662 ns 1'720 ns
summary for Statement
Statement.get() bind parameters
penberg@vonneumann perf % bun perf-turso.js
cpu: Apple M1
runtime: bun 1.2.15 (arm64-darwin)
benchmark time (avg) (min … max) p75 p99 p999
----------------------------------------------------------------------- -----------------------------
• Statement
----------------------------------------------------------------------- -----------------------------
Statement.get() bind parameters 1'198 ns/iter (1'157 ns … 1'495 ns) 1'189 ns 1'456 ns 1'495 ns
summary for Statement
Statement.get() bind parameters
```
After:
```
benchmark time (avg) (min … max) p75 p99 p999
----------------------------------------------------------------------- -----------------------------
• Statement
----------------------------------------------------------------------- -----------------------------
Statement.get() bind parameters 1'206 ns/iter (1'180 ns … 1'402 ns) 1'208 ns 1'365 ns 1'402 ns
summary for Statement
Statement.get() bind parameters
penberg@vonneumann perf % bun perf-turso.js
cpu: Apple M1
runtime: bun 1.2.15 (arm64-darwin)
benchmark time (avg) (min … max) p75 p99 p999
----------------------------------------------------------------------- -----------------------------
• Statement
----------------------------------------------------------------------- -----------------------------
Statement.get() bind parameters 1'019 ns/iter (980 ns … 1'360 ns) 1'005 ns 1'270 ns 1'360 ns
summary for Statement
Statement.get() bind parameters
```
2025-08-01 16:45:03 +03:00
Pekka Enberg
a51c35c979
bindings/javascript: Fix silly typo in package.json
2025-08-01 16:04:59 +03:00
Jussi Saurio
86b1232268
chore: enable indexes by default
2025-08-01 15:44:56 +03:00
Pekka Enberg
a67b0a8a1d
Merge 'chore: move tx isolation fuzz test to 'tests'' from Jussi Saurio
...
Closes #2383
2025-08-01 13:50:04 +03:00
Pekka Enberg
994a0e0852
Turso 0.1.4-pre.1
2025-08-01 13:38:12 +03:00
Pekka Enberg
38dbf75364
Merge 'Implement JavaScript bindings with minimal Rust core' from Pekka Enberg
...
This rewrites the JavaScript bindings completely by exposing only
primitive operations from Rust NAPI-RS code. For example, there is
prepare(), bind(), and step(), but high level interfaces like all() and
get() are implemented in JavaScript.
We're doing this so that we can implement async interfaces in the
JavaScript layer instead of having to bring in Tokio.
Closes #2372
2025-08-01 13:35:33 +03:00
Jussi Saurio
addb067416
chore: move tx isolation fuzz test to 'tests'
2025-08-01 13:02:05 +03:00
Pekka Enberg
773e4eed90
bindings/javascript: Add micro-benchmarks
2025-08-01 12:09:05 +03:00
Pekka Enberg
845fc13d6e
bindings/javascript: Remove test suite
...
We have `testing/javascript` to test both the native bindings and
serverless driver, so let's use that instead.
2025-08-01 12:09:05 +03:00
Jussi Saurio
24c8c3430f
test/fuzz/tx: add 'PRAGMA wal_checkpoint' to tx isolation fuzzer
2025-08-01 11:28:38 +03:00
Jussi Saurio
3b27d25b20
Merge 'Introduce some state machines in preparation for IO Completions refactor' from Pedro Muniz
...
Closes #2348
2025-08-01 10:13:14 +03:00
Pekka Enberg
02db72cc2c
Implement JavaScript bindings with minimal Rust core
...
This rewrites the JavaScript bindings completely by exposing only
primitive operations from Rust NAPI-RS code. For example, there is
prepare(), bind(), and step(), but high level interfaces like all() and
get() are implemented in JavaScript.
We're doing this so that we can implement async interfaces in the
JavaScript layer instead of having to bring in Tokio.
2025-08-01 09:03:14 +03:00
pedrocarlo
543cdb3e2c
underscoring completions and IOResult to avoid warning messages
2025-07-31 11:51:17 -03:00
Diego Reis
e1c799dee4
Bury limbo-wasm
...
Probably an unseen mistake from some rebase
2025-07-31 11:04:44 -03:00
Jussi Saurio
6e2218c3ed
fix/bindings/rust: return errors instead of swallowing them and returning None
2025-07-31 11:57:17 +03:00
PThorpe92
ef69df7258
Apply review suggestions
2025-07-30 19:42:53 -04:00
PThorpe92
88445328a5
Handle partial writes for pwritev calls in io_uring and fix JS bindings
2025-07-30 19:42:50 -04:00
PThorpe92
d189f66328
Add pwritev to wasm/js api
2025-07-30 19:42:48 -04:00
Jussi Saurio
73b56f3917
test/fuzz/tx-isolation: unignore test
2025-07-30 17:25:49 +03:00
Jussi Saurio
d4043595cd
test/fuzz/tx-isolation: clippy
2025-07-30 15:02:16 +03:00
Jussi Saurio
d5b0d284e6
bindings/rust: add tx isolation fuzz test
2025-07-30 14:58:03 +03:00
PThorpe92
2c3a9fe5ef
Finish wal transaction handling and add more wal and chkpt testing
2025-07-30 14:10:10 +03:00
PThorpe92
9c75872827
Make writing wal header able to be sync
2025-07-30 14:05:18 +03:00
PThorpe92
dcf346b9b0
Update apparently very old branch to new api
2025-07-30 13:48:05 +03:00
PThorpe92
272a63b562
Fix truncate impl in JS bindings
2025-07-30 13:48:05 +03:00
PThorpe92
bbb47fd58a
Add truncate method to wasm bindings module
2025-07-30 13:48:05 +03:00
Pekka Enberg
2443b8db3c
Merge 'bindings/rust: Add Connection::execute_batch()' from Rohith Suresh
...
Fixes #2184
Closes #2215
2025-07-30 10:19:03 +03:00
Pekka Enberg
d72ba0c153
Merge 'bindings/java: Throw UnsupportedOperationException for unimplemented …' from Pekka Enberg
...
…methods
Closes #2329
2025-07-29 19:07:51 +03:00
Pekka Enberg
76cbb71b53
Merge 'bindings/rust: return errors instead of vibecoded numbers' from Jussi Saurio
...
Good vibes only.
Fixes #2327
Closes #2328
2025-07-29 19:07:47 +03:00
RS2007
282222a39f
feat: execute_batch working
2025-07-29 21:24:33 +05:30
RS2007
8affc9d436
Prototyping execute_batch
2025-07-29 21:24:22 +05:30
Pekka Enberg
669f02f17c
bindings/java: Throw UnsupportedOperationException for unimplemented methods
2025-07-29 17:47:35 +03:00
Jussi Saurio
72bf4a714a
bindings/rust: return errors instead of vibecoded numbers
2025-07-29 17:45:15 +03:00
Diego Reis
a35a490188
Force ava tests to run serially
2025-07-29 11:05:37 -03:00
Pekka Enberg
f48b22a52f
Merge 'Javascript API improvements' from Pekka Enberg
...
Various improvements:
- Make promise API the default for `@tursodatabase/turso`
- Add a compatibility test suite for database, serverless, and better-
sqlite3
- Improve serverless driver a bit to be more compatible.
Closes #2322
2025-07-29 15:55:53 +03:00
Pekka Enberg
795081b868
binding/javascript: Promise API by default
...
The JavaScript API is promise-based by default, but with a `sync`
variant that tracks `better-sqlite3` API for compatibility.
2025-07-29 14:32:37 +03:00
Nikita Sivukhin
76cc8c05a5
add conversion method
2025-07-29 14:41:10 +04:00
Pekka Enberg
8adc807cd7
Merge 'Change function signatures to return IO Completions' from Pedro Muniz
...
Changes a couple of function signatures to return `Completion`. Also, I
changed `Completion` to be internally `Arc` to abstract the `Arc`
implementation detail, and to be able to attach a `#[must_use]` to the
`Completion` struct, so that cargo check can show us where we are not
tracking completions in the code. I also attached a `#[must_use]` to
`IOResult` so that we can see the places that we are not propagating or
waiting for I/O, demonstrating locations where functions should be
reentrant and are not.
Also, while we are with this refactor in progress I want to relax the
Clippy CI lint on unused_variables.
Closes #2309
2025-07-29 12:41:14 +03:00
Pekka Enberg
94dc780669
Turso 0.1.3
2025-07-29 12:37:18 +03:00
Pekka Enberg
2d2f416e2c
Revert "bindings/javascript: Add optional dependencies"
...
This reverts commit 9d7a77efde . It does
not work because the native packages don't yet exists at that point.
Let's fix the Github workflows instead.
2025-07-29 12:36:12 +03:00