Skip to content

rusty_sheet v0.1.0 Release Notes

Choose a tag to compare

@redraiment redraiment released this 13 Aug 05:26
· 19 commits to main since this release

πŸš€ 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_col parameters
  • βœ… Added: range parameter 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 fields parameter
  • βœ… Added: Automatic field type detection
  • βœ… Added: columns parameter 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_sheet Function: View automatically detected field types
  • New analyze_rows Parameter: Control how many rows to analyze for type detection (default 10)

πŸ“Š Enhanced Data Type Support

  • ISO 8601 Duration Support: Automatically parsed as interval type
  • Standardized Null Handling: Removed empty_as_null parameter, empty cells default to null

πŸ› οΈ 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');