Skip to content

Conversation

@gatesn
Copy link
Contributor

@gatesn gatesn commented Jul 1, 2025

Adds the same vtable machinery as arrays and layouts already use. It uses the "Encoding" naming scheme from arrays and layouts. I don't particularly like it, but it's consistent. Open to renames later.

Further, adds an expression registry to the Vortex session that will be used for deserialization.

Expressions only decide their "options" serialization. So in theory, can support many container formats, not just proto, provided each expression can deserialize their own options format.

gatesn added 3 commits July 1, 2025 20:35
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
@a10y
Copy link
Contributor

a10y commented Jul 2, 2025

If we're doing this, we should probably revive #3492 as well and just push more of the public API to go through the session object, so the session owns all of the vtables and everything that needs to do dynamic dispatch borrows from it

gatesn added 20 commits July 2, 2025 11:53
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
@gatesn gatesn added the changelog/chore A trivial change label Jul 4, 2025
@gatesn gatesn changed the title Extensible expression serde VortexExpr VTables Jul 4, 2025
@gatesn gatesn marked this pull request as ready for review July 4, 2025 11:04
@gatesn gatesn requested a review from a10y July 4, 2025 11:04
@codspeed-hq
Copy link

codspeed-hq bot commented Jul 4, 2025

CodSpeed Performance Report

Merging #3713 will not alter performance

Comparing ngates/expr-serde (f592e04) with develop (1570a70)

Summary

✅ 793 untouched benchmarks

@0ax1
Copy link
Contributor

0ax1 commented Jul 4, 2025

image

"Guys, @gatesn is back"

@lwwmanning lwwmanning added changelog/feature A new feature and removed changelog/chore A trivial change labels Jul 4, 2025
@gatesn gatesn enabled auto-merge (squash) July 5, 2025 10:35
@gatesn
Copy link
Contributor Author

gatesn commented Jul 5, 2025

Or we go in the direction of making ComputeFns extensible, and not expressions... #3453


#[derive(Debug, Clone, Eq, Hash)]
#[allow(clippy::derived_hash_with_manual_eq)]
#[derive(Debug, Clone, Hash)]
Copy link
Contributor

Choose a reason for hiding this comment

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

Why no Eq?

use crate::{ExprRef, IntoExpr, VTable};

pub type ExprId = ArcRef<str>;
pub type ExprEncodingRef = ArcRef<dyn ExprEncoding>;
Copy link
Contributor

Choose a reason for hiding this comment

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

The encoding for an array made a logical sense in my mind, encoding for expression is very forced analogy. We can rename it later

@gatesn gatesn merged commit ee8121d into develop Jul 8, 2025
33 checks passed
@gatesn gatesn deleted the ngates/expr-serde branch July 8, 2025 09:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/feature A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants