Skip to content

Releases: sparckles/Robyn

v0.88.0 - sessions, binary websockets & templating ergonomics

Choose a tag to compare

@sansyrox sansyrox released this 25 Jun 01:01

Highlights

  • First-party sessions — signed-cookie sessions via request.session (#945, #1411)
  • Binary WebSocket frames — binary frames are forwarded to your message handler (#1148, #1416)
  • render() templating shortcut — render a local templates/ folder without constructing JinjaTemplate by hand; engine-agnostic with Jinja2 as the default (#1223, #1418)
  • Hot reload fixed for module launchespython -m ... now relaunches correctly on file changes (#654, #1417)
  • Batch of quick-win fixes (#1415) — resolves #1099, #1147, #1273, #495, #470, #1192
  • Docs — single-page cheatsheet (#1062, #1414) and a bilingual (EN/ZH) templating refresh
  • CI — lint no longer builds the Rust extension (#1413)

Full Changelog: v0.87.0...v0.88.0

v0.87.0 - sub-routers, middleware chains & binary streaming

Choose a tag to compare

@sansyrox sansyrox released this 21 Jun 01:14

Sub-routers grow up, middleware can be chained, and streaming handles binary + async data correctly.

✨ Features

  • Modern SubRouter syntax with nested-prefix fixes and cleanups (#1404)
  • Async authenticate() and automatic SubRouter auth-handler inheritance — sub-routers can configure their own auth or inherit the parent app's (#1407)
  • Multiple middlewares per route (middleware chains) (#1405)
  • Consolidated OpenAPI/Swagger fixes with per-route documentation flags (#1403)

🐛 Fixes

  • StreamingResponse now supports bytes (binary downloads / application/octet-stream) and async DB access inside generators; generator errors now propagate to the logs instead of silently truncating the stream (#1412 — closes #1236, #1219)
  • Cast bare before_request returns and handle OPTIONS under static mounts (#1409 — fixes #793, #1130)

📚 Docs

  • Document catch-all / wildcard (*path) routes (#1410)

Full Changelog: v0.86.0...v0.87.0

v0.86.0 - smoother request & response ergonomics

Choose a tag to compare

@sansyrox sansyrox released this 16 Jun 18:30

A round of quality-of-life fixes and FastAPI-parity papercuts, consolidated in #1399.

Fixes & features

  • request.json() now parses both str and bytes bodies — previously a bytes body raised a raw error (#1335)
  • Path-param warning no longer fires when handlers read params via request / request.path_params (#1336)
  • Response(body=...) alias for the confusingly-named description= — both work, and headers is now optional (#1337)
  • New request type aliases RequestMethod, RequestBody, RequestURL, importable from robyn and robyn.types (#1077)

Docs

  • Documented the new type aliases and the Response body= alias (English + 中文)

Big thanks to @ahmadmahmoody, whose fixes were consolidated (with authorship preserved) into this release. 🙏

Full Changelog: v0.85.0...v0.86.0

v0.85.0 - make robyn even faster in json payloads

Choose a tag to compare

@sansyrox sansyrox released this 29 Apr 22:20

What's Changed

  • fix: share contextvars Context across before/handler/after hooks (#1380) by @sansyrox in #1382
  • fix: improve OpenAPI schema generation for complex types by @sansyrox in #1377
  • perf: skip Python Response wrapping for bare dict/list/str/bytes returns by @sansyrox in #1384

Full Changelog: v0.83.0...v0.84.0

v0.83.0 - introduce testing client

Choose a tag to compare

@sansyrox sansyrox released this 13 Apr 22:30

What's Changed

  • docs: add dedicated static files page and fix file-uploads SEO by @sansyrox in #1358
  • docs: add comprehensive response return styles reference by @sansyrox in #1357
  • feat: forward WebSocket binary frames to Python message handler by @sansyrox in #1353
  • fix: replace panicking unwrap() calls with proper error handling in WebSocket code by @sansyrox in #1352
  • perf: avoid unnecessary response body clone in IntoPyObject by @sansyrox in #1351
  • fix(website): reduce excessive GitHub API requests from docs site by @sansyrox in #1360
  • fix(ci): remove Python 3.14 from linux-cross preview matrix by @sansyrox in #1362
  • fix: replace unused pydantic import with importlib.util.find_spec by @sansyrox in #1343
  • feat: add in-process TestClient for fast unit testing by @sansyrox in #1344

Full Changelog: v0.82.1...v0.83.0

v0.82.1 - fix cors regression

Choose a tag to compare

@sansyrox sansyrox released this 28 Mar 15:57

What's Changed

  • feat: speed up CI with caching, reduced matrix, and path filters by @sansyrox in #1338
  • feat(website): comprehensive SEO overhaul and blog scaffold by @sansyrox in #1340
  • fix: enable default autoescape for Jinja2 templates by @RinZ27 in #1321
  • chore: add Granian attribution to asyncio.rs by @sansyrox in #1342
  • fix: prevent CORS header duplication on middleware early-return responses by @sansyrox in #1347

New Contributors

Full Changelog: v0.82.0...v0.82.1

v0.82.0 - make robyn 200% faster

Choose a tag to compare

@sansyrox sansyrox released this 21 Mar 17:48

What's Changed

Full Changelog: v0.81.0...v0.82.0

v0.81.0 - integrate pydantic

Choose a tag to compare

@sansyrox sansyrox released this 13 Mar 21:42

What's Changed

New Contributors

Full Changelog: v0.80.0...v0.81.0

v0.80.0 - easy access query params and deprecate old websockets

Choose a tag to compare

@sansyrox sansyrox released this 06 Mar 00:21

What's Changed

Full Changelog: v0.78.0...v0.80.0

v0.79.0 - websocket bugs and json handling

Choose a tag to compare

@sansyrox sansyrox released this 22 Feb 00:26

What's Changed

Full Changelog: v0.78.0...v0.79.0