Skip to content

Releases: AllDotPy/Ryx

🚀 Ryx v0.1.4 — Scale Without Limits: Multi-Database Routing is Here!

09 Apr 16:33
18edfc1

Choose a tag to compare

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 BaseRouter to 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 SAVEPOINTs on the same DB and independent transactions across different ones.
  • Zero-Config Migration: Upgrading is seamless. ryx_core.setup now 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

08 Apr 17:24
6987a10

Choose a tag to compare

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 🔥

06 Apr 15:45
3c01773

Choose a tag to compare

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:

  • --plan for migrate: See what would happen before you commit
  • --ipython shell: 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 --ipython

Your 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

05 Apr 20:05
2d38e4c

Choose a tag to compare

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 single CASE WHEN statement per batch instead of N individual UPDATEs. (0.31s → ~0.01s for 1000 rows)
  • bulk_create() ~500x faster: Now uses true multi-row INSERT. 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, and as_dict=True for zero-overhead ETL pipelines.

🔧 Core Improvements

  • Zero-allocation decoding: decode_row now 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!

04 Apr 00:48
5bf691d

Choose a tag to compare

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 sqlx core, zero GIL blocking, compiled performance.
  • 🐍 Python API: Familiar .filter(), Q objects, 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!