Introducing Community Extensions #6852
everettVT
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
We're formalizing a pattern several of you have already started building: community extensions. These are reusable libraries that add domain-specific functionality on top of Daft without requiring every specialized function, datatype, or integration to live in core.
A few that already exist:
daft-lance— Lance file compaction, scalar indexing, column merging, REST catalog opsdaft-h3— H3 geospatial indexingdaft-html— HTML parsing,html_to_text, CSS selector extractiondaft-geo— geospatial prototype with extension-backedPoint2D/Point3DdatatypesPython UDF extensions
Package reusable logic with
@daft.func,@daft.func.batch,@daft.cls, and@daft.method.batch. Good for orchestrating Python ecosystems, external services, ML models, GPUs, or domain-specific workflows. This is howdaft-lancedistributes Lance tasks, and how Daft's owndaft.functions.aimodule (prompt,embed_text,classify_image, etc.) is built.Native ABI extensions
For lower-level vectorized performance, ship a pip-installable package that bundles a shared library implementing the Arrow C Data Interface. Register scalar functions, aggregate functions, expression wrappers, and extension-backed datatypes. Rust has the most ergonomic SDK today via
daft-ext; C++ works via the raw ABI. Any Arrow implementation that can export a C ABI is feasible.Examples:
examples/hello— minimal Rust extensionexamples/dvector— pgvector-style vector distance functionsexamples/hello_cpp— pure C++ extensionStewardship
We encourage contributors to own and maintain extensions in their own repositories and organizations. Most extensions don't need to live under
daft-engine, and keeping them separate keeps iteration fast. Projects with significant adoption, active maintenance, and clear ecosystem alignment may move underdaft-engineover time.Build something and add it to the list!
Beta Was this translation helpful? Give feedback.
All reactions