2024-07-22 21:24:44 -07:00
|
|
|
# Semantic Versioning for `sqlite-vec`
|
|
|
|
|
|
2024-07-31 12:55:03 -07:00
|
|
|
`sqlite-vec` is pre-v1, so according to the rules of
|
|
|
|
|
[Semantic Versioning](https://semver.org/), so "minor" release like "0.2.0" or
|
|
|
|
|
"0.3.0" may contain breaking changes.
|
2024-07-22 21:24:44 -07:00
|
|
|
|
2024-07-31 12:55:03 -07:00
|
|
|
But what exactly counts as a "breaking change" in a SQLite extension? The line
|
|
|
|
|
isn't so clear, unforetunately. Here are a all the surfaces that COULD count as
|
|
|
|
|
a "breaking change":
|
2024-07-22 21:24:44 -07:00
|
|
|
|
|
|
|
|
- SQL functions and columns on virtual tables
|
|
|
|
|
- The C API (extension entrypoints)
|
|
|
|
|
- "Bindings" like the official `pip` and `npm` packages
|
|
|
|
|
- Release assets like the pre-compile extensions
|
|
|
|
|
|
|
|
|
|
## What counts as a "breaking change"?
|
|
|
|
|
|
|
|
|
|
### Changes to SQL functions
|
|
|
|
|
|
|
|
|
|
- Re-naming or removing an SQL function
|
|
|
|
|
- Changing the number of required SQL parameters
|
|
|
|
|
|
|
|
|
|
### Changes to SQL virtual tables
|
|
|
|
|
|
|
|
|
|
- The number of
|
|
|
|
|
|
|
|
|
|
### Changes to the C API
|
|
|
|
|
|
2024-07-31 12:55:03 -07:00
|
|
|
Currently there is no "official" C API for `sqlite-vec`. However, there are
|
|
|
|
|
entrypoints defined in C that C developers or developers using FFI can call. Any
|
2024-07-22 21:24:44 -07:00
|
|
|
|
|
|
|
|
### Compile-time options
|
|
|
|
|
|
|
|
|
|
The removal of any compile time options
|
|
|
|
|
|
|
|
|
|
## When is `v1.0` coming?
|
|
|
|
|
|
|
|
|
|
In a few months! The main problems I want to solve before `v1.0` include:
|
|
|
|
|
|
|
|
|
|
- Metadata columns
|
|
|
|
|
- Metadata filtering
|
|
|
|
|
- ANN indexing
|
|
|
|
|
- Quantization + pre-transformations
|
|
|
|
|
|
2024-07-31 12:55:03 -07:00
|
|
|
Once those items are complete, I will likely create a `v1.0` release, along with
|
|
|
|
|
renaming the `vec0` virtual table modile to `vec1`. And if future major releases
|
|
|
|
|
are required, a `v2.0` major releases will be made with new `vec2` virtual
|
|
|
|
|
tables and so on.
|
2024-07-22 21:24:44 -07:00
|
|
|
|
2024-07-31 12:55:03 -07:00
|
|
|
Ideally, only a `v1` major release would be required. But who knows what the
|
|
|
|
|
future has in store with vector search!
|
2024-07-22 21:24:44 -07:00
|
|
|
|
2024-07-31 12:55:03 -07:00
|
|
|
In general, I will try my best to maximize stability and limit the number of
|
|
|
|
|
breaking changes for future `sqlite-vec` versions.
|