Releases: AllDotPy/Ryx
🚀 Ryx v0.1.4 — Scale Without Limits: Multi-Database Routing is Here!
Experience the perfect blend of Django-style elegance and Rust-powered performance.
We are thrilled to announce the release of Ryx v0.1.4, a milestone update that transforms how you handle data. Whether you are managing a simple app or a massive distributed system, Ryx now gives you the power to scale your infrastructure without changing your coding style.
🌟 The Headline: Multi-Database Support
Stop letting a single database be your bottleneck. v0.1.4 introduces a sophisticated routing engine that lets you distribute your data across multiple pools seamlessly.
Scale your architecture in seconds:
- Explicit Control: Need to hit a read-replica? Just add
.using("read_replica")to your query. - Model-Level Defaults: Assign specific models to dedicated databases via
Model.Meta.database. - Dynamic Routing: Implement a
BaseRouterto define complex, automated routing logic based on your application's state.
⚡ Why Ryx?
Ryx isn't just another ORM; it's a performance beast. By moving the heavy lifting to a Rust core (powered by sqlx), we provide:
- Blazing Fast Execution: Minimal overhead between your Python code and the database.
- Type-Safe Stability: Rust's memory safety ensures your connection pools are rock-solid.
- Familiar API: Get the productivity of a high-level ORM with the speed of a compiled language.
🛠️ What else is new?
- Multi-DB Transactions: Start atomic operations on specific databases. Our smart nesting logic automatically handles
SAVEPOINTson the same DB and independent transactions across different ones. - Zero-Config Migration: Upgrading is seamless.
ryx_core.setupnow accepts both single URLs and alias dictionaries for full backward compatibility. - Enhanced Docs: A brand new guide to get you up and running with multi-db architectures in minutes.
Stop compromising between developer happiness and system performance.
Upgrade to v0.1.4 today and unleash the full potential of your data.
pip install ryx --upgrade
#RyxORM #Rust #Python #Performance #DatabaseRouting #OpenSource
🚀 Ryx v0.1.3: Engineering Excellence & Modular Power
We are excited to announce the release of Ryx v0.1.3!
While this version might look like a "maintenance" release on the surface, under the hood, we've performed a major architectural transformation to ensure Ryx remains the fastest and most reliable Django-style ORM for Python.
🛠 The Big Move: Introducing ryx-query
We have officially decoupled our query engine from the PyO3 layer into a standalone Rust crate: ryx-query.
Why does this matter?
By separating the SQL compilation logic from the Python bindings, we've achieved:
- Pure Rust Performance: The compiler now runs in a lean, PyO3-free environment.
- Rock-Solid Stability: A modular architecture makes testing, auditing, and extending the query engine significantly easier.
- Future-Proofing: This foundation paves the way for advanced optimizations and potential multi-language support.
⚡ Blazing Fast & Verified
We didn't just move the code; we proved it's fast. We've integrated Criterion benchmarks, and the results are stunning. Our query compiler is now operating at a scale where "milliseconds" are a distant memory:
- Simple Lookups: ~248 nanoseconds ⚡
- Complex Query Trees: ~1.03 microseconds 🚀
🛡 Better DX (Developer Experience)
No more cryptic errors. We've overhauled our error propagation system. By introducing a dedicated QueryError type, Ryx now provides more precise and actionable feedback when a lookup or field is misused, mapping them seamlessly to Python's ValueError and RuntimeError.
📦 What's in the box?
- Modular Architecture: Query engine extracted to
ryx-query. - Performance Suite: Added industry-standard benchmarks for SQL compilation.
- Refined Error Handling: Precise mapping from Rust compiler errors to Python exceptions.
- Version Bump: Project updated to v0.1.3.
🤝 Get Involved
Ryx is growing fast, and we want you to be part of it! Whether you are a Python enthusiast or a Rustacean, check out our contributing guidelines and help us build the future of Python database access.
Try it out today!
pip install ryx (or your preferred installation method)
Full Changelog: v0.1.2...v0.1.3
Ryx v0.1.2: Your Django ORM Just Got a Supercharged CLI 🔥
What if your ORM had a CLI that actually gets you?
We've completely rebuilt the Ryx CLI from the ground up. Here's what you'll discover:
🚀 New "wait, that's it?" Features:
--planfor migrate: See what would happen before you commit--ipythonshell: Full syntax highlighting + tab completions that actually work- YAML/TOML config files: Finally ditch that messy
ryx_settings.py - Plugin system: Roll your own custom commands
- 8+ new CLI flags across all commands
🤔 But here's the cool part:
Ryx is a Django-style Python ORM powered by Rust's sqlx. It's fast. Like, really fast.
Try it:
pip install ryx
# Run interactive shell (Just like Django's shell)
ryx --url sqlite:///dev.db shell --ipythonYour move. 🔽
Documentation: https://ryx.alldotpy.com
Full changelog: github.com/AllDotPy/Ryx/releasesFull Changelog: v0.1.1...v0.1.2
🚀 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🚀 Ryx v0.1.0 — First Release!
Django-style Python ORM. Powered by Rust.
We are thrilled to announce the very first release of Ryx. It combines the ergonomic query API you love from Django with the raw, async performance of a compiled Rust core.
✨ Highlights
- ⚡ Rust Engine: Async
sqlxcore, zero GIL blocking, compiled performance. - 🐍 Python API: Familiar
.filter(),Qobjects, aggregations, and relationships. - 🛠️ Full Stack: Migrations, CLI, Validation, Signals, and 30+ Field types.
- 🗄️ Multi-Backend: PostgreSQL, MySQL, and SQLite support.
⚡️ Quick Start
import ryx
from ryx import Model, CharField, Q
class Post(Model):
title = CharField(max_length=200)
active = BooleanField(default=True)
await ryx.setup("postgres://user:pass@localhost/db")
# Query like Django, run like Rust
posts = await Post.objects.filter(
Q(active=True) | Q(title__startswith="Draft")
).order_by("-title").limit(10)📦 Installation
pip install ryx🔗 Links
Built from scratch with ❤️. If you find this interesting, please leave a ⭐ — it helps a lot!