You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+17-1Lines changed: 17 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [0.9.1] - 2026-05-07
9
+
10
+
### Fixed
11
+
12
+
-**PRAGMA Statement Routing** - PRAGMA statements are now correctly routed through the `query()` path rather than the execute path, fixing incorrect behaviour when reading PRAGMA values (e.g. `PRAGMA journal_mode`, `PRAGMA synchronous`) via the Ecto adapter.
13
+
14
+
### Changed
15
+
16
+
-**Upstream Status Notice** - Added a note to the README and Hex documentation about Turso's transition away from libSQL toward their new Turso library (a full SQLite rewrite in Rust). `ecto_libsql` will continue to receive bug fixes and security updates; see the README for more context.
-**CI Toolchain** - Replaced `erlef/setup-beam` with `mise` for Elixir/OTP version management; updated to current Elixir/OTP versions; applied `zizmor` GitHub Actions security hardening.
19
+
20
+
### Security
21
+
22
+
- Acknowledged three additional `rustls-webpki` 0.102.x advisories (RUSTSEC-2026-0049, RUSTSEC-2026-0098, RUSTSEC-2026-0099, RUSTSEC-2026-0104) in `cargo deny` - all are transitive via libsql's pinned `rustls 0.22.x` dependency and cannot be resolved until libsql updates upstream.
23
+
8
24
## [0.9.0] - 2026-02-02
9
25
10
26
### Added
@@ -16,7 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
32
17
33
-**`Repo.exists?` Generates Valid SQL** - Fixed empty SELECT clause generating invalid SQL (`SELECT FROM "users"` instead of `SELECT 1 FROM "users"`), causing syntax errors. (Thanks [@ricardo-valero](https://github.com/ricardo-valero) for [PR #69](https://github.com/ocean/ecto_libsql/pull/69)!)
2.**Define the Rust NIF** with `#[rustler::nif(schedule = "DirtyIo")]`— use `safe_lock` (never `.unwrap()`) — see [Error Handling](#error-handling-patterns)
228
-
3.**Add Elixir wrapper** in `lib/ecto_libsql/native.ex`— NIF stub + safe wrapper using `EctoLibSql.State`
2.**Define the Rust NIF** with `#[rustler::nif(schedule = "DirtyIo")]`- use `safe_lock` (never `.unwrap()`) - see [Error Handling](#error-handling-patterns)
228
+
3.**Add Elixir wrapper** in `lib/ecto_libsql/native.ex`- NIF stub + safe wrapper using `EctoLibSql.State`
229
229
4.**Add tests** in both Rust (`native/ecto_libsql/src/tests/`) and Elixir (`test/`)
230
230
5.**Update documentation** in `USAGE.md` and `CHANGELOG.md`
Copy file name to clipboardExpand all lines: README.md
+4-1Lines changed: 4 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,14 +4,17 @@
4
4
5
5
`ecto_libsql` is an (unofficial) Elixir [Ecto](https://github.com/elixir-ecto/ecto) database adapter for [LibSQL](https://github.com/tursodatabase/libsql) database files, and databases hosted on [Turso](https://turso.tech/), built with Rust NIFs. It supports local libSQL/SQLite files, remote replica with synchronisation, and remote only Turso databases.
6
6
7
+
> [!NOTE]
8
+
> **Upstream status:**[Turso is now closer to transitioning away from libSQL](https://turso.tech/blog/sync-benchmark) (their fork of SQLite) in favour of their new [Turso](https://turso.tech/turso) library - their full rewrite of SQLite in Rust. Activity on the [libSQL repository](https://github.com/tursodatabase/libsql) has slowed significantly as a result. We are monitoring the situation. `ecto_libsql` will continue to receive bug fixes and security updates, but is likely to transition to maintenance mode as the Elixir/Turso ecosystem matures. For those interested in using the new Turso library, [turso_ex](https://github.com/bytebottom/turso_ex) is an early-stage Elixir adapter currently under development.
9
+
7
10
## Installation
8
11
9
12
Add `ecto_libsql` to your dependencies in `mix.exs`:
Copy file name to clipboardExpand all lines: RELEASE_PROCESS.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ git push
16
16
17
17
## 2. Create the GitHub release (triggers CI)
18
18
19
-
The CI workflow triggers on tags matching `*.*.*`. The tag must match the version in `mix.exs` exactly — no `v` prefix, as the `base_url` in `native.ex` uses the raw version string.
19
+
The CI workflow triggers on tags matching `*.*.*`. The tag must match the version in `mix.exs` exactly - no `v` prefix, as the `base_url` in `native.ex` uses the raw version string.
This step is critical — the checksum file must be in the package so Hex.pm users can verify the downloaded NIFs.
57
+
This step is critical - the checksum file must be in the package so Hex.pm users can verify the downloaded NIFs.
58
58
59
59
## 6. Publish the GitHub release
60
60
@@ -72,7 +72,7 @@ mix hex.publish
72
72
73
73
## Key Gotchas
74
74
75
-
-**Tag format**: Use `0.9.1` not `v0.9.1`— the `base_url` in `native.ex` is `releases/download/#{version}`, so the tag and version must match exactly.
75
+
-**Tag format**: Use `0.9.1` not `v0.9.1`- the `base_url` in `native.ex` is `releases/download/#{version}`, so the tag and version must match exactly.
76
76
-**Checksum before publish**: Always regenerate and commit the checksum file *before*`mix hex.publish`. Without it, users get integrity errors when installing.
77
-
-**`--ignore-unavailable`**: Use with caution — only after confirming all 6 CI target builds have succeeded and all 6 release artefacts are present; otherwise it can mask missing binaries.
77
+
-**`--ignore-unavailable`**: Use with caution - only after confirming all 6 CI target builds have succeeded and all 6 release artefacts are present; otherwise it can mask missing binaries.
78
78
-**Test run option**: The `workflow_dispatch` trigger on the release workflow has a `test_only` input that skips the `gh release upload` step, useful for testing the build matrix without creating a real release.
0 commit comments