You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This RFC scopes out the work for porting portions of the Daft codebase into Rust for the 0.1.0 release.
RFC Details
Motivation
Python as a language is a great user-interface for data scientists and users due to its dynamic typing and ecosystem of open-sourced libraries. However for implementing Daft itself, Python has several limitations.
Problem
Lack of pattern matching: until Python 3.10, Python lacks good structural matching. This makes several modules difficult to implement and extend (query optimizer, expression optimization, operator type resolution).
Kernels: Daft currently relies heavily on PyArrow kernels, some custom C++ kernels and sometimes casting to types such as Pandas/Polars where PyArrow is buggy or insufficient. Having an easy way to define our own kernels is key to unlock future project velocity.
Packaging: packaging is a nightmare - relying on Polars/Pandas/Numpy/PyArrow for kernel execution makes Daft very heavy to install
Solution
Rust's support for pattern matching will give us robust tooling for building out more complex query optimizations and type resolution.
Moving to Rust gives us access to the excellent Arrow2 (https://github.com/jorgecarleitao/arrow2) library, which we can further extend with our own Rust kernels as required.
With Rust, we can build and package our code in a self-contained wheel and remove many of Daft's external dependencies
This is a WIP to be scoped out into issues for the refactoring of the following modules:
Execution (Blocks and vPartitions)
LogicalPlan
Expressions
Expression Types and Operators
Query optimizer
User Experience
The Daft interface from a user perspective is unchanged except:
Building Daft from source will now require the Rust compiler
Daft no longer builds against the Arrow C++ codebase, which fixes a lot of packaging and distribution issues
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
[RFC] Rust refactors
RFC Summary
This RFC scopes out the work for porting portions of the Daft codebase into Rust for the 0.1.0 release.
RFC Details
Motivation
Python as a language is a great user-interface for data scientists and users due to its dynamic typing and ecosystem of open-sourced libraries. However for implementing Daft itself, Python has several limitations.
Problem
Solution
This is a WIP to be scoped out into issues for the refactoring of the following modules:
User Experience
The Daft interface from a user perspective is unchanged except:
Blocking
This issue blocks the following:
Beta Was this translation helpful? Give feedback.
All reactions