refactor(rust): give float columns their own raw model - #1599
refactor(rust): give float columns their own raw model#1599CommanderStorm wants to merge 1 commit into
Conversation
Performance ComparisonPerformance Comparison
|
| zoom | tiles | prev_total | curr_total | delta_total | avg_delta | pct | best | worst |
|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 71471 | 71471 | 0 | 0.0 | 0.0 | ||
| 1 | 4 | 220986 | 220986 | 0 | 0.0 | 0.0 | ||
| 2 | 16 | 615003 | 615003 | 0 | 0.0 | 0.0 | ||
| 3 | 64 | 1653851 | 1653851 | 0 | 0.0 | 0.0 | ||
| 4 | 256 | 3828904 | 3828904 | 0 | 0.0 | 0.0 | ||
| 5 | 1024 | 9716821 | 9716821 | 0 | 0.0 | 0.0 | ||
| 6 | 4096 | 32401914 | 32401914 | 0 | 0.0 | 0.0 | ||
| ALL | 5461 | 48508950 | 48508950 | 0 | 0.0 | 0.0 |
Top 3 improvements
Top 3 degradations
2c6e23b to
a97f6d2
Compare
a97f6d2 to
7b5e8e8
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## stack-v2-encoding-families #1599 +/- ##
================================================================
- Coverage 73.40% 70.06% -3.34%
================================================================
Files 338 108 -230
Lines 35333 18953 -16380
Branches 3649 0 -3649
================================================================
- Hits 25935 13279 -12656
+ Misses 8205 5674 -2531
+ Partials 1193 0 -1193 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR refactors the Rust decoder’s raw property model so float columns (F32/F64) no longer use RawScalar and instead use a dedicated RawFloats type with an encoding enum, aligning floats with the “encoding carries stream set” pattern used by strings.
Changes:
- Introduce
RawFloats/RawFloatsEncodingand switchRawProperty::{F32,F64}to use it. - Update v01/v02 layer parsing to construct float properties via
RawFloats::single(...). - Update decoding + analysis + iterator plumbing to handle the new float raw model.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| rust/mlt-core/src/decoder/root02.rs | Switch v02 float property parsing from RawScalar::new to RawFloats::single. |
| rust/mlt-core/src/decoder/root01.rs | Switch v01 float property parsing from RawScalar::new to RawFloats::single. |
| rust/mlt-core/src/decoder/property/model.rs | Add RawFloats and RawFloatsEncoding; change RawProperty float variants to use the new type. |
| rust/mlt-core/src/decoder/property/decode.rs | Add float decoding helper on RawFloats and route RawProperty::{F32,F64} decode through it. |
| rust/mlt-core/src/decoder/mod.rs | Re-export the new float raw model types from the decoder module. |
| rust/mlt-core/src/decoder/iterators.rs | Update property-name iteration to accommodate float variants no longer being RawScalar. |
| rust/mlt-core/src/decoder/analyze.rs | Add Analyze impls for float raw model and update RawProperty stream enumeration accordingly. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
7b5e8e8 to
17f1b57
Compare
17f1b57 to
a666f36
Compare
a666f36 to
a20b293
Compare
a20b293 to
450ada5
Compare
450ada5 to
65829db
Compare
65829db to
534abef
Compare
534abef to
391d6de
Compare
391d6de to
5a59982
Compare
c7a828d to
fa9c4d8
Compare
fa9c4d8 to
0f181d5
Compare
0f181d5 to
384f7e0
Compare
384f7e0 to
ce1c8b7
Compare
ce1c8b7 to
248820e
Compare
2d80114 to
4a6b740
Compare
`RawScalar` holds exactly one `RawStream`, which is all a float column has needed so far, but a dictionary-encoded one needs two. Floats therefore move to a per-encoding enum carrying each variant's stream set, the shape string columns already use. No wire change, and no public API break: neither `RawProperty` nor `RawScalar` is exported, and both are reachable only through the `__private` test and bench feature. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4a6b740 to
299e1e7
Compare
Float columns move off
RawScalar, which holds exactly one stream, onto a per-encoding enum carrying each variant's stream set, so a dictionary-encoded column can hold two. No wire changes