v0.28.9 - DataFrame Submodule Reorganization (2026-03-22)¶
What Changed?¶
This release completes the internal reorganization of the DataFrame submodule directory structure,
modeled after pandas/polars conventions. All major method implementations have been moved from
core/dataframe.ts into their respective submodules. The public API is fully backward compatible.
What's New¶
Main Feature: DataFrame Submodule Delegation¶
What it does:
Method implementations previously living in the large core/dataframe.ts file are now fully
delegated to specialized submodules. Each submodule owns the logic for its domain:
| Submodule | Methods |
|---|---|
analysis/statistics.ts |
describe, transform, fillna, pivot, melt |
analysis/operations.ts |
join, concat, concatVertical, concatHorizontal |
transformation/manipulation.ts |
sort |
How to use it:
No changes needed. All public methods on DataFrame work exactly as before.
Code example:
TypeScript
// All of these delegate to the appropriate submodule internally
const stats = df.describe();
const sorted = df.sort("age");
const joined = df1.join(df2, { on: "id" });
const filled = df.fillna(0);
const pivoted = df.pivot({ index: "date", columns: "metric", values: "value" });
Added¶
analysis/groupby.ts—GroupedDataFrameandDataFrameGrouping(moved fromgroup/)analysis/operations.ts—join,concat,concatVertical,concatHorizontalimplementationsdisplay/display.ts—DataFrameDisplay(moved fromoutput/display.ts)io/readers.ts—DataFrameInitializationHelpers(moved frominitialization/helpers.ts)io/writers.ts—DataFrameOutputConversion(moved fromoutput/conversion.ts)reshape/reshape.ts—DataFrameStructuralTransformations(moved fromtransformation/structure.ts)torch/expression/—Expressionsubmodule directory (moved fromtorch/expression.ts)
Changed¶
core/dataframe.ts— all delegated methods reduced to 1-line delegate callstransformation/columns.ts— renamed fromtransformation/basic.tstransformation/rows.ts—DataFrameSlicingmoved fromoutput/slicing.tsanalysis/statistics.ts—describe,transform,fillna,pivot,meltnow fully implemented here_syncSubmodules()— new private method consolidating allupdateReferencescalls- Docstrings updated: removed false
@throws Method not yet implemented, added missing@exampletags, converted old JSDoc style to TypeDoc style
Fixed¶
joinandconcatdocstrings incorrectly documented@throws Method not yet implementedfillnaTypeDoc@paramname mismatch (optionsvs_options)- Non-null assertions (
!) indescribe()replaced with null-safe checks
Is It Safe to Upgrade?¶
- Breaking Changes: No
- Backward Compatible: Yes
All public methods on DataFrame retain the same signatures and behavior.
Internal submodule class names and file paths changed, but these are not part of the public API.
Release Details¶
- Date: 2026-03-22
- Version: v0.28.9
- gaslamp: -
- pilotlamp: -
- Files Changed: 30+
- Commits:
163204crefactor(torch/dataframe): consolidate updateReferences calls into _syncSubmodules()edc2e70refactor(torch): move Expression to expression/ submoduleb4aac9erefactor(torch/dataframe): move readers/writers to io/ submodulea601212refactor(torch/dataframe): move DataFrameSlicing from output/ to transformation/rows.ts435eb0arefactor(torch/dataframe): move DataFrameDisplay to display/ and remove empty output/a746d09refactor(torch/dataframe): rename transformation/basic.ts to transformation/columns.ts4fae6f1refactor(torch/dataframe): move GroupedDataFrame from group/ to analysis/groupby.tsa9691f7refactor(torch/dataframe): move DataFrameStructuralTransformations to reshape/856b652refactor(dataframe): move describe() implementation to DataFrameStatisticseaa65aarefactor(dataframe): move sort() implementation to DataFrameManipulation1681df1refactor(dataframe): move join/concat implementations to DataFrameOperationsdd11f97refactor(dataframe): move transform/fillna/pivot/melt to DataFrameStatistics4a2cd65docs(dataframe): update docstrings for delegated methods6b5246bdocs(api): regenerate TypeDoc API docs and fix fillna @param name mismatch
Known Issues¶
transpose()is still not implemented (throwsnot yet implemented)combine/directory for advanced join operations is deferred to a future release
Next Steps¶
- Implement
transpose()inreshape/ - Consider
DataFrameStateshared object pattern to eliminateupdateReferencesentirely - Add
combine/submodule for advanced join/merge operations