Skip to content

Latest commit

 

History

History
162 lines (119 loc) · 7.81 KB

File metadata and controls

162 lines (119 loc) · 7.81 KB

Changelog

All notable changes to this community fork will be documented in this file.

[0.2.4-alpha] - 2026-01-03

Added

  • Lua binding with IEEE 754 compliant float serialization (#237)
    • bindings/lua/sqlite_vec.lua provides load(), serialize_f32(), and serialize_json() functions
    • Lua 5.1+ compatible with lsqlite3
    • IEEE 754 single-precision float encoding with round-half-to-even (banker's rounding)
    • Proper handling of special values: NaN, Inf, -Inf, -0.0, subnormals
    • Example script and runner in /examples/simple-lua/

[0.2.3-alpha] - 2025-12-29

Added

  • Android 16KB page support (#254)

    • Added LDFLAGS support to Makefile for passing linker-specific flags
    • Enables Android 15+ compatibility via -Wl,-z,max-page-size=16384
    • Required for Play Store app submissions on devices with 16KB memory pages
  • Improved shared library build and installation (#149)

    • Configurable install paths via INSTALL_PREFIX, INSTALL_LIB_DIR, INSTALL_INCLUDE_DIR, INSTALL_BIN_DIR
    • Hidden internal symbols with -fvisibility=hidden, exposing only public API
    • EXT_CFLAGS captures user-provided CFLAGS and CPPFLAGS
  • Optimize/VACUUM integration test and documentation

    • Added test demonstrating optimize command with VACUUM for full space reclamation

Fixed

  • Linux linking error with libm (#252)
    • Moved -lm flag from CFLAGS to LDLIBS at end of linker command
    • Fixes "undefined symbol: sqrtf" errors on some Linux distributions
    • Linker now correctly resolves math library symbols

Documentation

  • Fixed incomplete KNN and Matryoshka guides (#208, #209)
    • Completed unfinished sentence describing manual KNN method trade-offs
    • Added paper citation and Matryoshka naming explanation

[0.2.2-alpha] - 2025-12-02

Added

  • GLOB operator for text metadata columns (#191)

    • Standard SQL pattern matching with * (any characters) and ? (single character) wildcards
    • Case-sensitive matching (unlike LIKE)
    • Fast path optimization for prefix-only patterns (e.g., 'prefix*')
    • Full pattern matching with sqlite3_strglob() for complex patterns
  • IS/IS NOT/IS NULL/IS NOT NULL operators for metadata columns (#190)

    • Note: sqlite-vec metadata columns do not currently support NULL values. These operators provide syntactic compatibility within this limitation.
    • IS behaves like = (all metadata values are non-NULL)
    • IS NOT behaves like != (all metadata values are non-NULL)
    • IS NULL always returns false (no NULL values exist in metadata)
    • IS NOT NULL always returns true (all metadata values are non-NULL)
    • Works on all metadata types: INTEGER, FLOAT, TEXT, and BOOLEAN

Fixed

  • All compilation warnings eliminated
    • Fixed critical logic bug: metadataInIdx type corrected from size_t to int (prevented -1 wrapping to SIZE_MAX)
    • Fixed 5 sign comparison warnings with proper type casts
    • Fixed 7 uninitialized variable warnings by adding initializers and default cases
    • Clean compilation with -Wall -Wextra (zero warnings)

[0.2.1-alpha] - 2025-12-02

Added

  • LIKE operator for text metadata columns (#197)
    • Standard SQL pattern matching with % and _ wildcards
    • Case-insensitive matching (SQLite default)

Fixed

  • Locale-dependent JSON parsing (#241)

    • Custom locale-independent float parser fixes JSON parsing in non-C locales
    • No platform dependencies, thread-safe
  • musl libc compilation (Alpine Linux)

    • Removed non-portable preprocessor macros from vendored sqlite3.c

[0.2.0-alpha] - 2025-11-28

Added

  • Distance constraints for KNN queries (#166)

    • Support GT, GE, LT, LE operators on the distance column in KNN queries
    • Enables cursor-based pagination: WHERE embedding MATCH ? AND k = 10 AND distance > 0.5
    • Enables range queries: WHERE embedding MATCH ? AND k = 100 AND distance BETWEEN 0.5 AND 1.0
    • Works with all vector types (float32, int8, bit)
    • Compatible with partition keys, metadata, and auxiliary columns
    • Comprehensive test coverage (15 tests)
    • Fixed variable shadowing issues from original PR
    • Documented precision handling and pagination caveats
  • Optimize command for space reclamation (#210)

    • New special command: INSERT INTO vec_table(vec_table) VALUES('optimize')
    • Reclaims disk space after DELETE operations by compacting shadow tables
    • Rebuilds vector chunks with only valid rows
    • Updates rowid mappings to maintain data integrity
  • Cosine distance support for binary vectors (#212)

    • Added distance_cosine_bit() function for binary quantized vectors
    • Enables cosine similarity metric on bit-packed vectors
    • Useful for memory-efficient semantic search
  • ALTER TABLE RENAME support (#203)

    • Implement vec0Rename() callback for virtual table module
    • Allows renaming vec0 tables with standard SQL: ALTER TABLE old_name RENAME TO new_name
    • Properly renames all shadow tables and internal metadata
  • Language bindings and package configurations for GitHub installation

    • Go CGO bindings (bindings/go/cgo/) with Auto() and serialization helpers
    • Python package configuration (pyproject.toml, setup.py) for pip install git+...
    • Node.js package configuration (package.json) for npm install vlasky/sqlite-vec
    • Ruby gem configuration (sqlite-vec.gemspec) for gem install from git
    • Rust crate configuration (Cargo.toml, src/lib.rs) for cargo add --git
    • All packages support installing from main branch or specific version tags
    • Documentation in README with installation table for all languages
  • Python loadable extension support documentation

    • Added note about Python requiring --enable-loadable-sqlite-extensions build flag
    • Recommended using uv for virtual environments (uses system Python with extension support)
    • Documented workarounds for pyenv and custom Python builds

Fixed

  • Memory leak on DELETE operations (#243)

    • Added vec0Update_Delete_ClearRowid() to clear deleted rowids
    • Added vec0Update_Delete_ClearVectors() to clear deleted vector data
    • Prevents memory accumulation from deleted rows
    • Vectors and rowids now properly zeroed out on deletion
  • CI/CD build infrastructure (#228)

    • Upgraded deprecated ubuntu-20.04 runners to ubuntu-latest
    • Added native ARM64 builds using ubuntu-24.04-arm
    • Removed cross-compilation dependencies (gcc-aarch64-linux-gnu)
    • Fixed macOS link flags for undefined symbols

Original Version

This fork is based on asg017/sqlite-vec v0.1.7-alpha.2.

All features and functionality from the original repository are preserved. See the original documentation for complete usage information.


Notes

This is a community-maintained fork created to merge pending upstream PRs and provide continued support while the original author is unavailable. Once development resumes on the original repository, users are encouraged to switch back.

All original implementation credit goes to Alex Garcia.