-
Notifications
You must be signed in to change notification settings - Fork 168
Description
Hi 👋
I've been working on the new C API for extensions in duckdb/duckdb (see duckdb/duckdb#12682). TLDR: we've added a header to duckdb which contains basically a struct of function pointers with most of the C API. This struct is then passed to a loadable extension on load. This is basically the same mechanism that sqlite has.
Goals
One of the goals of this API is to be able to write clean pure-rust extensions for DuckDB that can be used across multiple duckdb versions. Basically I want an extension template like https://github.com/duckdb/extension-template
, but than in pure-rust based on this new C API.
Now that that PR is merged, I would like to get started on this.
Approach
Good for me, rusqlite, the repo this one is based on, is way ahead of us and already has support for sqlite's variant of the extension api struct since rusqlite/rusqlite#1362.
So in theory, all we need to do is copy (the parts we like) of rusqlite for this to generate the loadable extensions. Then tie everything together for the
The catch
The main catch is my Rust knowledge is pretty minimal. Therefore this will also be a bit of a rust-learning-experience for me. However, given the fact that it's mostly a copy-and-paste exercise from rusqlite, this should be fine? ;)
finally, any help or advice is very welcome!