PThorpe92
0a56d23402
Use u64 for file offsets in IO and calculate such offsets in u64
2025-08-28 09:44:00 -04:00
Avinash Sajjanshetty
9e663c7f46
Add IOContext to carry encryption/checksum ctx
2025-08-27 21:33:05 +05:30
Pekka Enberg
22c9cb6618
s/PerConnEncryptionContext/EncryptionContext/
2025-08-24 08:17:20 +03:00
Pekka Enberg
1b89273f10
Merge 'refactor encryption module and make it configurable' from Avinash Sajjanshetty
...
Previously, the encryption module had hardcoded a lot of things. This
refactor makes it slightly nice and makes it configurable.
Right now cipher algorithm is assumed and hardcoded, I will make that
configurable in the upcoming PR
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com >
Closes #2722
2025-08-24 08:16:28 +03:00
Pekka Enberg
2c68613709
bindings/javascript: Fix blob type handling
2025-08-22 14:17:40 +03:00
Avinash Sajjanshetty
3090545167
use encryption ctx instead of encryption key
2025-08-21 22:36:32 +05:30
Avinash Sajjanshetty
40a209c000
simplify feature flag usage for encryption
2025-08-20 12:49:38 +05:30
Avinash Sajjanshetty
fc3b76de1b
fix Database storage for WASM bindings
2025-08-20 11:47:25 +05:30
Pekka Enberg
387d384394
javascript: Implement Statement.columns()
2025-08-19 16:35:44 +03:00
Pekka Enberg
5002539b04
javascript: Implement safe integers
2025-08-19 16:35:44 +03:00
Pekka Enberg
6b59bcd51e
javascript: Fix Statement.get() for boundary values
2025-08-19 16:35:44 +03:00
PThorpe92
cc2fed3297
Remove copy_to API from file IO trait
2025-08-14 21:31:13 -04:00
PThorpe92
3c088dda59
Update callsites of copy_to Database impl
2025-08-14 21:31:13 -04:00
Jussi Saurio
c75e4c1092
Fix non-4096 page sizes by making WAL header lazy
2025-08-14 12:40:58 +03:00
Jussi Saurio
ee58b7bd86
Add fn read_header() to DatabaseStorage trait
2025-08-14 12:40:58 +03:00
Nikita Sivukhin
bfa33a27e2
enable indices in database JS sdk
2025-08-13 15:55:40 +04:00
Pekka Enberg
7a09eb0d4c
Merge 'Fix JavaScript bindings packaging' from Nikita Sivukhin
...
This PR configure `#entry-point` import alias for javascript bindings in
order to use `browser.js` napi-rs generated file in browser context.
Also, this PR forces napi-rs to emit `index.js` entrypoint using ESM and
also use typescript for writing our wrapper code around napi-rs
bindings.
In order to make behaviour consistent when lib is imported through ESM
or CommonJS this PR also replace default export of `Database` by named
on. The problem is that `export default Database` will be logically
equivalent to `modules.export.default = Database` which is not the same
thing as `modules.export = Database` and this will need to access
additional `.default` field with CommonJs style imports (e.g. `new
require('@tursodatabase/turso').default(...)`). In order to remove this
difference - I just replaced default export with named one.
Closes #2488
2025-08-08 10:42:21 +03:00
PThorpe92
04b40b4cf5
Impl copy_to for Database impl in JS bindings
2025-08-07 16:27:08 -04:00
Nikita Sivukhin
1a2a1a9ca4
adjust javascript turso bindings for reuse in turso-sync-js package
2025-08-07 16:28:02 +04:00
Pekka Enberg
fa6c925751
bindings/javascript: Switch from RefCell to Cell
2025-08-07 07:47:10 +03:00
Pekka Enberg
6ad50f4581
bindings/javascript: Fix prepare() error message format
2025-08-06 09:13:22 +03:00
Pekka Enberg
79412ea2cc
bindings/javascript: Improve error when prepare() called after close()
2025-08-06 07:48:15 +03:00
PThorpe92
f6a68cffc2
Remove RefCell from IO and Page apis
2025-08-05 16:24:49 -04:00
Pekka Enberg
358c0bfc27
cargo fmt
2025-08-01 17:17:01 +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
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
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
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
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
pedrocarlo
3831e0db39
convert must_use compile warnings to unused_variables to track locations where we need to refactor in the future
2025-07-28 16:09:26 -03:00
pedrocarlo
d30c7d54c8
change all Arc<Completion> to Completion
2025-07-28 15:32:45 -03:00
pedrocarlo
7789c569a0
make Completion implementation contain an inner Arc<CompletionInner> so that we can must_use the Completion struct
2025-07-28 15:31:42 -03:00
pedrocarlo
3104e3fee5
adjust DatabaseStorage trait to return completions
2025-07-28 15:31:42 -03:00
Diego Reis
bab10909c3
Disable extension loading for wasm
...
We should enable it later when wasm become more mature
2025-07-28 14:49:07 -03:00
Pekka Enberg
edbbeefed5
bindings/javascript: Fix Database.close()
...
We need to drop reference to `turso_core::Database` for this to work.
2025-07-28 19:13:53 +03:00
Levy A.
cbb618f0ad
feat(javascript): add tracing_subscriber
2025-07-27 21:24:39 -03:00
Diego Reis
0f95cf7751
bind/js: Switch to napi v3
2025-07-25 11:45:57 -03:00
Jussi Saurio
1f55726acf
claude sonnet forgot to run clippy when implementing mcp server
2025-07-18 17:15:39 +03:00
Pekka Enberg
81d386d6c4
Merge 'bindings/js: support iterator, and more kinds of params' from Mikaël Francoeur
...
This PR fixes 3 tests that check param binding and iteration.
-----
as part of https://github.com/tursodatabase/turso/issues/1900
Closes #2097
2025-07-18 16:25:01 +03:00
pedrocarlo
dc5f73887e
refactor to require Arc<Completion> in file traits so that we can delay IO calls correctly
2025-07-17 12:24:43 -03:00
Mikaël Francoeur
cf13911839
support more params format and iterable
2025-07-17 09:46:15 -04:00
Diego Reis
21882d1db3
bind/js: Fix presentation mode disabling logic
2025-07-16 15:07:12 -03:00
Mikaël Francoeur
68134fa186
support named bind parameters
2025-07-14 15:36:12 -04:00
Mikaël Francoeur
e25064959b
return info object
2025-07-14 14:35:48 -04:00
Jussi Saurio
a48b6d049a
Another post-rebase clippy round with 1.88.0
2025-07-12 19:10:56 +03:00