v0.38.2 - DataFrameV2 performance and clarity improvements (2026-03-23)¶
What Changed?¶
This release improves the internal quality of the DataFrameV2 (src/v2) module.
It includes a bug fix for empty-range handling, a performance improvement in drop, and design notes for future optimization opportunities.
No public API changes; fully backward compatible.
What's New¶
Main Feature: DataFrameV2 internal improvements¶
What it does:
Fixes an ambiguous code path in fromRange when header=false and the input is empty, optimizes column lookup in drop using a Set, and documents intentional design decisions as TODO/inline comments.
How to use it: No changes required. Existing code continues to work as before.
Added¶
- Inline TODO comments documenting the column-oriented → row-oriented conversion overhead in
filter,withColumn, andgroupBy - Inline comment in
LazyDataFrame._opsexplaining the intentional immutability-first design for spread copy
Changed¶
DataFrame.drop: replacedArray.includes(O(n×k)) withSet.has(O(n+k)) for column lookup
Fixed¶
DataFrame.fromRangewithheader=false: added explicit early return for empty arrays, removing reliance onfromArraysto silently discard an empty generated header list
Is It Safe to Upgrade?¶
- Breaking Changes: No
- Backward Compatible: Yes
All changes are internal. No public API, behavior, or output is affected.
Release Details¶
- Date: 2026-03-23
- Version: v0.38.2
- gaslamp: clasp version 83
- pilotlamp: clasp version 40
- Files Changed: 1 (
src/v2/frame.ts) - Commits:
a8e46a2docs(v2): add comment explaining intentional spread copy in LazyDataFrame._opse4e52e3fix(v2): add early return for empty arrays in DataFrame.fromRange with header=false387e529perf(v2): use Set for O(1) lookup in DataFrame.drop2a76967perf(v2): add TODO notes for mapToRows conversion overhead in filter/withColumn/groupBy
Known Issues¶
filter/withColumn/groupByperform column-oriented → row-oriented conversion on every call (see TODO comments). UseLazyDataFrame.collect()to batch operations and reduce overhead.
Next Steps¶
- Continue DataFrameV2 review: remaining items from the 2026-03-22 stability review