Skip to content

SqliteVec: drop net462 and netstandard2.0 support - #63

Merged
adamsitnik merged 1 commit into
mainfrom
sqlitevec/drop-net462-netstandard2.0
Oct 9, 2026
Merged

adamsitnik merged 1 commit into
mainfrom
sqlitevec/drop-net462-netstandard2.0

Conversation

@adamsitnik

Copy link
Copy Markdown
Contributor

Summary

Drops net462 and netstandard2.0 support from the SqliteVec provider.

Why

Fixes #62. sqlite3_load_extension is stubbed out in SQLitePCLRaw's net471 (.NET Framework) and netstandard2.0 provider assets, so the vec0 extension can never load when the package is consumed as net462 or netstandard2.0 — regardless of CPU architecture. Only the net8.0 SQLitePCLRaw asset (resolved by our net8.0/net10.0 targets) works correctly.

This was confirmed two ways:

  • Running MEVD/test/SqliteVec.ConformanceTests locally on net472: fails with BadImageFormatException (default build resolves a win-x86 native asset while the host runs x64) and, once that's worked around with PlatformTarget=x64, fails again with SQLite Error 1: '' from the stubbed sqlite3_load_extension.
  • An independent standalone net472 console app that installs the packed NuGet package directly (no test harness involved) reproduces the exact same two failures.
  • dotnet/extensions hits the same issue and works around it by forcing PlatformTarget=x64 for non-.NETCoreApp TFMs, then explicitly skipping their only Sqlite-related test on Full Framework ("We don't run Sqlite tests on Full Framework due to some native dependency issues").

Changes

  • SqliteVec.csproj: TargetFrameworks → net10.0;net8.0; version bumped to 1.0.3-preview.
  • SqliteVec.ConformanceTests.csproj: drop net472, now net10.0 only.
  • Removed the now-always-true #if NET / #else conditionals (and their Full Framework/.NET Standard fallbacks) from the provider source, since NET is defined for all remaining TFMs.

Testing

  • dotnet build MEVD/MEVD.slnf -c Release: 0 warnings/errors.
  • SqliteVec.UnitTests: 38/38 passed.
  • SqliteVec.ConformanceTests: 207/207 passed (net10.0).

sqlite3_load_extension is stubbed out in SQLitePCLRaw's .NET Framework
(net471) and .NET Standard (netstandard2.0) provider assets, so vec0
can never load when consumed as net462 or netstandard2.0 -- confirmed
via MEVD/test/SqliteVec.ConformanceTests and an independent standalone
net472 repro (#62). Only the net8.0 SQLitePCLRaw
asset (resolved by our net8.0/net10.0 targets) works correctly.

- Drop net462/netstandard2.0 from TargetFrameworks; keep net10.0;net8.0.
- Remove the now-always-true "#if NET" conditionals (and their "#else"
  .NET Framework/.NET Standard fallbacks) from the provider source,
  since NET is defined for all remaining TFMs.
- Drop net472 from SqliteVec.ConformanceTests (was net10.0 plus the
  shared NetFrameworkTfm property).
- Bump package version to 1.0.3-preview.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: dc4fb29c-b28c-4a98-85a7-d15fbb0629d1

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The framework changes are consistent, focused, tested, and include the required provider version update.

0 open findings

What changed in this PR

Drops unsupported SqliteVec target frameworks and removes obsolete compatibility branches.

Changes:

  • Restricts SqliteVec to .NET 8 and .NET 10.
  • Updates conformance tests to .NET 10.
  • Bumps the package version and simplifies framework-specific code.
File Description
SqliteVec.ConformanceTests.csproj Removes .NET Framework testing.
SqliteVec.csproj Drops unsupported TFMs and bumps version.
SqliteVectorStore.cs Removes obsolete conditional return types.
SqlitePropertyMapping.cs Unconditionally supports modern date/time types.
SqliteModelBuilder.cs Simplifies supported-type validation.
SqliteMapper.cs Removes the legacy vector-mapping fallback.
SqliteFilterTranslator.cs Removes obsolete date/time conditionals.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@adamsitnik
adamsitnik merged commit 11eca6b into main Oct 9, 2026
18 checks passed
@adamsitnik
adamsitnik deleted the sqlitevec/drop-net462-netstandard2.0 branch October 9, 2026 09:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: SQLitePCLRaw stubs sqlite3_load_extension on .NET Framework, so vec0 cannot load

2 participants