rusty_sheet v0.1.0 Release Notes
π Major Upgrade Highlights
β‘ Dramatic Performance Improvements
- 10x+ Performance Boost: Reading millions of rows in xlsx files improved from 140+ seconds to under 13 seconds (tested on MacBook M1)
- Deep optimization for large file reading operations
π― Simplified API Design
Data Range Parameter Simplification
- β Removed:
start_row,start_col,end_row,end_colparameters - β
Added:
rangeparameter with Excel format support (e.g.,"A1:C3") - π No more manual column letter to number conversion
Field Type Definition Optimization
- β Removed: Full type definition requirement in
fieldsparameter - β Added: Automatic field type detection
- β
Added:
columnsparameter for incremental field type overrides - π Example:
columns=Map {'id': 'bigint'}- only specify fields that need overrides
π Intelligent Type Analysis
- Automatic Field Type Detection: Default behavior analyzes data types automatically
- New
analyze_sheetFunction: View automatically detected field types - New
analyze_rowsParameter: Control how many rows to analyze for type detection (default 10)
π Enhanced Data Type Support
- ISO 8601 Duration Support: Automatically parsed as
intervaltype - Standardized Null Handling: Removed
empty_as_nullparameter, empty cells default tonull
π οΈ Developer Experience Improvements
- Precise Error Location: Enhanced error messages for quick problem cell identification
- Build Optimization: Removed custom duckdb-rs submodule, significantly reduced compile time
- Memory Optimization: Fixed memory leak issues, improved stability
β οΈ Breaking Changes
This version contains major API changes. Upgrading from previous versions requires code modifications. See migration guide for details.
π¦ Installation and Usage
-- Example: Using the new range parameter
SELECT * FROM read_excel('data.xlsx', range='A1:C100');
-- Example: Automatic type detection + incremental type override
SELECT * FROM read_excel('data.xlsx', columns=Map {'id': 'bigint'});
-- Example: View automatically detected field types
SELECT * FROM analyze_sheet('data.xlsx');