Repository navigation
π Ryx v0.1.1 β Bulk Ops Overhauled & Performance Unleashed
This release is all about speed. We've completely rewritten bulk operations and query internals to eliminate Python overhead, slash database round-trips, and handle massive datasets efficiently.
β‘ Performance Highlights
bulk_update()~1000x faster: Generates a singleCASE WHENstatement per batch instead of N individualUPDATEs. (0.31s β ~0.01s for 1000 rows)bulk_create()~500x faster: Now uses true multi-rowINSERT. Instances automatically get their PKs assigned after creation.bulk_delete()optimized: Single FFI call per batch with automatic chunking (fixes SQLite's 999-param limit).stream()upgraded: Added keyset pagination (keyset="id") for O(n) scans on large tables, andas_dict=Truefor zero-overhead ETL pipelines.
π§ Core Improvements
- Zero-allocation decoding:
decode_rownow uses case-insensitive prefix checks, eliminating millions of string allocations for large result sets. - Backend-aware conflict handling:
bulk_create(ignore_conflicts=True)now generates correct syntax for PostgreSQL (ON CONFLICT DO NOTHING), SQLite (INSERT OR IGNORE), and MySQL (INSERT IGNORE). - Fast-path for integers: Skips type-checking cascade for PK lists in bulk operations (~60-80% reduction in overhead).
π Docs & CI
- Added step-by-step progressive examples (
examples/). - Fixed macOS runner in release CI workflow.
- Added performance benchmark table to README.
π¦ Upgrade
pip install ryx --upgrade