Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.7.5] - 2025-12-15

Fixed

[0.7.0] - 2025-12-09

Added

Changed

Fixed

[0.6.0] - 2025-11-30

Fixed

Added

Changed

Technical Details

Sync Performance Before:

Sync Performance After:

Key Insight: According to Turso documentation: "Writes are sent to the remote primary database by default, then the local database updates automatically once the remote write succeeds." Manual sync is only needed when explicitly pulling down changes from remote (e.g., after reconnecting to an existing replica).

Migration Notes

This is a non-breaking change for normal usage. However, if you were relying on automatic sync behaviour after writes in embedded replica mode, you may now need to explicitly call EctoLibSql.Native.sync/1 when you need to ensure remote data is pulled down (e.g., after reconnecting to an existing local database).

Recommended Actions:

  1. Review code that uses embedded replicas with sync: true
  2. Add explicit sync() calls after reconnecting to existing local databases if you need to pull down remote changes
  3. Remove any redundant manual sync() calls after write operations

[0.5.0] - 2025-11-27

Changed

Fixed

Added

Technical Details

Before 0.5.0:

After 0.5.0:

Migration Guide

This is a non-breaking change for normal Ecto usage. Your existing code will continue to work exactly as before, but is now significantly more stable.

What Changed:

Recommended Actions:

  1. Review error handling in code that uses EctoLibSql.Native functions directly
  2. Ensure supervision strategies are in place for database operations
  3. Consider adding retry logic for transient errors (connection timeouts, etc.)

Notes

This release represents a major stability improvement for production deployments. The refactoring ensures that ecto_libsql handles errors the "Elixir way" - returning error tuples that can be supervised, rather than panicking at the Rust level and crashing the VM.

[0.4.0] - 2025-11-19

Changed

Migration Guide

To upgrade from 0.3.0 to 0.4.0, update your dependencies and module references:

# mix.exs - Update dependency
def deps do
[
# Old: {:libsqlex, "~> 0.3.0"}
{:ecto_libsql, "~> 0.4.0"}
]
end
# config/config.exs - Update adapter reference
config :my_app, MyApp.Repo,
# Old: adapter: Ecto.Adapters.LibSqlEx
adapter: Ecto.Adapters.LibSql
# Code - Update module references
# Old: alias LibSqlEx.{Query, Result}
alias EctoLibSql.{Query, Result}
# Old: LibSqlEx.Native.vector_type(128, :f32)
EctoLibSql.Native.vector_type(128, :f32)

All functionality remains identical; only names have changed.

[0.3.0] - 2025-11-17

Added

Changed

Notes

This release makes LibSqlEx a full-featured Ecto adapter, bringing it on par with other database adapters in the Elixir ecosystem. Users can now:

The adapter supports all three connection modes:

  1. Local SQLite databases
  2. Remote-only Turso connections
  3. Remote replica mode (local + cloud sync)

Breaking Changes

None - this is purely additive functionality.

Known Limitations

SQLite/libSQL has some limitations compared to PostgreSQL:

These are SQLite limitations, not LibSqlEx limitations, and are well-documented in the migration guide.

[0.2.0] - Previous Release

Added

[0.1.0] - Initial Release

Added