All the latest Robyn releases, right here.

v0.44.0 - [🚨BREAKING] - Add a new way of using websockets - implement broadcasts and sends

What's Changed

  • fix: websockets by @sansyrox in https://github.com/sparckles/Robyn/pull/620
  • docs: add docs for request.json by @sansyrox in https://github.com/sparckles/Robyn/pull/641
  • docs: add docs for architecture by @sansyrox in https://github.com/sparckles/Robyn/pull/645
  • docs: add docs for framework performance comparison by @sansyrox in https://github.com/sparckles/Robyn/pull/647
  • docs: add docs for plugins by @sansyrox in https://github.com/sparckles/Robyn/pull/648
@websocket.on("message")
async def message(ws: WebSocketConnector, msg: str) -> str:
    global websocket_state
    websocket_id = ws.id
    state = websocket_state[websocket_id]
    resp = ""
    if state == 0:
        resp = "Whaaat??"
        await ws.async_broadcast("This is a broadcast message")
        ws.sync_send_to(websocket_id, "This is a message to self")
    elif state == 1:
        resp = "Whooo??"
    elif state == 2:
        resp = "*chika* *chika* Slim Shady."
    websocket_state[websocket_id] = (state + 1) % 3

    return resp

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.43.0...v0.44.0

v0.43.0 - Breaking 🚨 - Replace `url` parameter in the `app.start` and fix app router headers

What's Changed

  • fix: pass response headers from app to router by @IdoKendo in https://github.com/sparckles/Robyn/pull/625
  • Replace url parameter in the app.start by @carlosm27 in https://github.com/sparckles/Robyn/pull/614

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.42.2...v0.43.0

v0.42.2 - fix minor issue with --create flag

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.42.1...v0.42.2

  • Fix Typo - https://github.com/sparckles/Robyn/commit/bb0b8e23be5fa2a7eb148c7cd5ad52623db50a78

v0.42.1 - expose Url objects for test clients and performance improvements

What's Changed

  • Update README.md by @tushar5526 in https://github.com/sparckles/Robyn/pull/634
  • feat: enable lazy evaluation for logger by @IdoKendo in https://github.com/sparckles/Robyn/pull/633
  • feat: add Request and Url objects constructors to enable easier testing by @IdoKendo in https://github.com/sparckles/Robyn/pull/630

New Contributors

  • @tushar5526 made their first contribution in https://github.com/sparckles/Robyn/pull/634

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.42.0...v0.42.1

v0.42.0 - add `request.json()` with startup performance improvements

What's Changed

  • DOCS: fixes broken link to resources on README by @github-education in https://github.com/sparckles/Robyn/pull/628
  • fix: remove redundant Arc by @IdoKendo in https://github.com/sparckles/Robyn/pull/626
  • feat: add request.json() method by @IdoKendo in https://github.com/sparckles/Robyn/pull/629

New Contributors

  • @github-education made their first contribution in https://github.com/sparckles/Robyn/pull/628

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.41.1...v0.42.0

v0.41.1 - Improved logging and adding a --version flag

What's Changed

  • docs: add new docs website by @sansyrox in https://github.com/sparckles/robyn/pull/608
  • feat: log routes when the router is populated by @carlosm27 in https://github.com/sparckles/robyn/pull/609
  • feat: add a --version flag by @sansyrox in https://github.com/sparckles/robyn/pull/619

Full Changelog: https://github.com/sparckles/robyn/compare/v0.41.0...v0.41.1

v0.41.0 - Replace body with description parameter and reduce wheel size

What's Changed

  • chore: decrease .whl filesize by @IdoKendo in https://github.com/sparckles/robyn/pull/603
  • fix: replace body with description by @sansyrox in https://github.com/sparckles/robyn/pull/604

Full Changelog: https://github.com/sparckles/robyn/compare/v0.40.0...v0.41.0

v0.40.0 - allow adding routes without using decorator

What's Changed

  • docs(README): Replace sansyrox with sparckles by @sansyrox in https://github.com/sparckles/robyn/pull/598
  • feat: allow adding routes without using decorator by @IdoKendo in https://github.com/sparckles/robyn/pull/592
  • ci: drop sun and ibm support by @sansyrox in https://github.com/sparckles/robyn/pull/601
  • Add proper condition for installing uvloop by @banipreetr in https://github.com/sparckles/robyn/pull/595

New Contributors

  • @banipreetr made their first contribution in https://github.com/sparckles/robyn/pull/595

Full Changelog: https://github.com/sparckles/robyn/compare/v0.39.0...v0.40.0

v0.39.0 - Breaking - Replace body with description parameter in the Response object

What's Changed

  • Feat/398 use poetry by @IdoKendo in https://github.com/sparckles/robyn/pull/512
  • feat: Improved the Current CLI. by @Mr-Sunglasses in https://github.com/sparckles/robyn/pull/556
  • ci: sync release and preview release actions by @sansyrox in https://github.com/sparckles/robyn/pull/581
  • Replace body with description parameter in Response object by @carlosm27 in https://github.com/sparckles/robyn/pull/580
  • chore: remove python3.7 support by @sansyrox in https://github.com/sparckles/robyn/pull/591
  • docs: add robyn-rate-limits to plugins doc by @IdoKendo in https://github.com/sparckles/robyn/pull/596

Full Changelog: https://github.com/sparckles/robyn/compare/v0.38.0...v0.39.0

v0.38.0 - An improved CLI for create-robyn-app

What's Changed

  • Feat/398 use poetry by @IdoKendo in https://github.com/sparckles/robyn/pull/512
  • feat: Improved the Current CLI. by @Mr-Sunglasses in https://github.com/sparckles/robyn/pull/556
  • ci: sync release and preview release actions by @sansyrox in https://github.com/sparckles/robyn/pull/581

https://github.com/sparckles/robyn/assets/29942790/afcfb08e-1f43-43d1-879c-b23e876527df

Full Changelog: https://github.com/sparckles/robyn/compare/v0.37.0...v0.38.0

v0.37.0 - faster jsonification - implement a rust based json serializations

What's Changed

  • Typo Fix in Docs by @ruslan-korneev in https://github.com/sparckles/robyn/pull/563
  • chore: fix pyproject implementation style by @sansyrox in https://github.com/sparckles/robyn/pull/522
  • feat: faster jsonification by @sansyrox in https://github.com/sparckles/robyn/pull/571

New Contributors

  • @ruslan-korneev made their first contribution in https://github.com/sparckles/robyn/pull/563

Full Changelog: https://github.com/sparckles/robyn/compare/v0.36.2...v0.37.0

v0.36.2 - Fixes Robyn CLI Docker Support

What's Changed

  • Fix Robyn CLI Docker Support - https://github.com/sparckles/robyn/commit/cc25de91cb6a261753392730e800d99e6ac0a1f7

Full Changelog: https://github.com/sparckles/robyn/compare/v0.36.0...v0.36.2

v0.36.0 - Add authentication Support

What's Changed

  • feat: add authentication support by @AntoineRR in https://github.com/sparckles/robyn/pull/501

Full Changelog: https://github.com/sparckles/robyn/compare/v0.35.1...v0.36.0

v0.35.1 - make returning text from websocket messages optional

What's Changed

  • make returning text from websocket messages optional by @urjitbhatia in https://github.com/sansyrox/robyn/pull/545

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.35.0...v0.35.1

v0.35.0 - Add ability to share client messages and add --open flag to open browser on successful start

What's Changed

  • Adds ability to share messages from client with py by @urjitbhatia in https://github.com/sansyrox/robyn/pull/537
  • feat: add --open flag to open browser on successful start of the server by @IdoKendo in https://github.com/sansyrox/robyn/pull/517

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.34.0...v0.35.0

v0.34.0 - Make web sockets standard compliant and allow middlewares to return Response objects

What's Changed

  • Don't respond with pong when a pong message is received. by @urjitbhatia in https://github.com/sansyrox/robyn/pull/536
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sansyrox/robyn/pull/540
  • feat: allow before middlewares to return Response objects by @AntoineRR in https://github.com/sansyrox/robyn/pull/534

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.33.0...v0.34.0

v0.33.0 - Adds ip_addr field in the request object and add const style http enums

What's Changed

  • feat: add ip_addr field to Request object by @IdoKendo in https://github.com/sansyrox/robyn/pull/530
  • feat: Migrated Enum style error codes to constants style by @Mr-Sunglasses in https://github.com/sansyrox/robyn/pull/533

New Contributors

  • @Mr-Sunglasses made their first contribution in https://github.com/sansyrox/robyn/pull/533

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.32.0...v0.33.0

v0.32.0 - Implement SubRouters

We're proud to announce the addition of SubRouters to Robyn. This feature allows developers to create subrouters, providing a convenient way to group routes together.

The functionality of SubRouters extends to both normal routes and web sockets, acting as a smaller-scale replica of the main router. SubRouters can be utilized in exactly the same way as the main router, with the minor prerequisite of adding the SubRouter to the main router.

We hope you enjoy the increased flexibility this feature brings to your routing capabilities in Robyn! As always, we look forward to your feedback.

What's Changed

  • Update features.md - change query param syntax by @urjitbhatia in https://github.com/sansyrox/robyn/pull/520
  • Comply with pyproject definition by @Kludex in https://github.com/sansyrox/robyn/pull/521
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sansyrox/robyn/pull/523
  • Routers by @Noborita9 and @sansyrox in https://github.com/sansyrox/robyn/pull/497

New Contributors

  • @urjitbhatia made their first contribution in https://github.com/sansyrox/robyn/pull/520

Sample Usage

SubRouters

You can create subrouters in Robyn. This is useful when you want to group routes together.

Subrouters can be used for both normal routes and web sockets. They are basically a mini version of the main router and can be used in the same way.

The only caveat is that you need to add the subrouter to the main router.

from robyn import Robyn, SubRouter

app = Robyn(__file__)

sub_router = SubRouter("/sub_router")

@sub_router.get("/hello")
def hello():
    return "Hello, world"

web_socket = SubRouter("/web_socket")

@web_socket.message()
async def hello():
    return "Hello, world"

app.add_sub_router(sub_router)

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.31.0...v0.32.0

v0.31.0 - Add a global exception handler decorator

What's Changed

  • feat: add app.exception decorator to handle errors by @IdoKendo in https://github.com/sansyrox/robyn/pull/510

New Contributors

  • @IdoKendo made their first contribution in https://github.com/sansyrox/robyn/pull/510

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.30.0...v0.31.0

v0.30.0 - BIRTHDAY RELEASE 🎂 - Add Global Middlewares

What's Changed

  • feat: add global middlewares, which are middleware executed before or… by @AntoineRR in https://github.com/sansyrox/robyn/pull/498
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sansyrox/robyn/pull/516

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.29.0...v0.30.0

v0.29.0 - Add docker support in create robyn app

What's Changed

  • documentation update by @yednapg in https://github.com/sansyrox/robyn/pull/493
  • Feat: Cli improvements by @Oluwaseun241 in https://github.com/sansyrox/robyn/pull/481

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.28.4...v0.29.0

v0.28.4 - Fix binary file uploading, improve error tracebacks and improve logging

What's Changed

  • added discord link by @yednapg in https://github.com/sansyrox/robyn/pull/488
  • ✨ feat: display traceback for execute_http_function by @mirecl in https://github.com/sansyrox/robyn/pull/478
  • ✨ feat: display Robyn version on start app by @mirecl in https://github.com/sansyrox/robyn/pull/479
  • feat: fix binary file uploading by @sansyrox in https://github.com/sansyrox/robyn/pull/491
  • feat: improve logging by @sansyrox in https://github.com/sansyrox/robyn/pull/490
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sansyrox/robyn/pull/489

New Contributors

  • @yednapg made their first contribution in https://github.com/sansyrox/robyn/pull/488

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.28.3...v0.28.4

v0.28.3 - implement --docs flag for Robyn cli

What's Changed

  • feat: implement docs flag for robyn cli by @sansyrox in https://github.com/sansyrox/robyn/pull/475

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.28.2...v0.28.3

v0.28.2 - Fixes crashing on incorrect PAYLOAD Environment variable

What's Changed

  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sansyrox/robyn/pull/467
  • 🔥Fix incorrect set data in ROBYN_MAX_PAYLOAD_SIZE by @mirecl in https://github.com/sansyrox/robyn/pull/474

New Contributors

  • @mirecl made their first contribution in https://github.com/sansyrox/robyn/pull/474

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.28.1...v0.28.2

v0.28.1 - fix event handlers

What's Changed

  • fix: event handlers not being registered by @sansyrox in https://github.com/sansyrox/robyn/pull/468

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.28.0...v0.28.1

v0.28.0 - Create Robyn CLI - Start a new backend project in a jiffy

What's Changed

  • feat: Robyn CLI by @Oluwaseun241 in https://github.com/sansyrox/robyn/pull/466

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.27.0...v0.28.0

[BREAKING CHANGE ] - v0.27.0 - rename params -> path params and allow cors!

What's Changed

  • Rename params with path_params by @carlosm27 in https://github.com/sansyrox/robyn/pull/460
  • docs: remove test pypi instructions from pr template by @sansyrox in https://github.com/sansyrox/robyn/pull/462
  • feat: Implement global CORS by @sansyrox in https://github.com/sansyrox/robyn/pull/458
  • feat: allow configurable payload sizes by @sansyrox in https://github.com/sansyrox/robyn/pull/465

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.26.1...v0.27.0

v0.26.1 - Fix hot reloading with the `--dev` flag

What's Changed

  • fix(dev): fix hot reloading with dev flag by @AntoineRR in https://github.com/sansyrox/robyn/pull/446
  • docs: Add docs for v0.26.0 by @sansyrox in https://github.com/sansyrox/robyn/pull/451

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.26.0...v0.26.1

v0.26.0 - Better interfaces, improved performance, and benchmarking + many new contributors! ✨

What's Changed

  • feat: Robyn providing status codes by @carlosm27 in https://github.com/sansyrox/robyn/pull/429
  • feat: Allow global level Response headers by @ParthS007 in https://github.com/sansyrox/robyn/pull/410
  • added star-history by @hemangjoshi37a in https://github.com/sansyrox/robyn/pull/434
  • Install the CodeSee workflow. by @codesee-maps in https://github.com/sansyrox/robyn/pull/438
  • Replace integer status codes with Enum values of StatusCodes by @Noborita9 in https://github.com/sansyrox/robyn/pull/436
  • feat: Implement performance benchmarking by @sansyrox in https://github.com/sansyrox/robyn/pull/443
  • fix: Implement auto installation of uvloop on linux arm by @sansyrox in https://github.com/sansyrox/robyn/pull/445
  • chore: update rust dependencies by @AntoineRR in https://github.com/sansyrox/robyn/pull/444
  • feat: expose request/connection info by @r3b-fish in https://github.com/sansyrox/robyn/pull/441
  • feat: get rid of intermediate representations of requests and responses by @AntoineRR in https://github.com/sansyrox/robyn/pull/397

New Contributors

  • @ParthS007 made their first contribution in https://github.com/sansyrox/robyn/pull/410
  • @hemangjoshi37a made their first contribution in https://github.com/sansyrox/robyn/pull/434
  • @codesee-maps made their first contribution in https://github.com/sansyrox/robyn/pull/438
  • @Noborita9 made their first contribution in https://github.com/sansyrox/robyn/pull/436
  • @r3b-fish made their first contribution in https://github.com/sansyrox/robyn/pull/441

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.25.0...v0.26.0

v0.25.0 - Implement views, welcome new contributors and Dark mode! 🖤

What's Changed

  • fix(test): fix tests on windows by @AntoineRR in https://github.com/sansyrox/robyn/pull/400
  • docs: Update PyPi metadata by @sansyrox in https://github.com/sansyrox/robyn/pull/401
  • fix: various improvements around the dev flag by @AntoineRR in https://github.com/sansyrox/robyn/pull/388
  • chore(ci): fix rust ci warnings by @AntoineRR in https://github.com/sansyrox/robyn/pull/408
  • fix: fixed CONTRIBUTE.md link into docs/README.md file, changing it f… by @Kop3sh in https://github.com/sansyrox/robyn/pull/411
  • fix: Fix Windows tests by @sansyrox in https://github.com/sansyrox/robyn/pull/402
  • Fix docs: support version by @Oluwaseun241 in https://github.com/sansyrox/robyn/pull/404
  • chore: improve issue templates by @AntoineRR in https://github.com/sansyrox/robyn/pull/413
  • docs: add dark mode to website by @AntoineRR in https://github.com/sansyrox/robyn/pull/416
  • style(landing_page): fix the style of github logo on the landing page by @sansyrox in https://github.com/sansyrox/robyn/pull/419
  • better way to compare type by @jmishra01 in https://github.com/sansyrox/robyn/pull/421
  • feat: Add view controllers by @mikaeelghr in https://github.com/sansyrox/robyn/pull/407
  • docs: improve readme by @AntoineRR in https://github.com/sansyrox/robyn/pull/418
  • fix: Add proper headers to the templates return types by @sansyrox in https://github.com/sansyrox/robyn/pull/427
  • docs: Add documentation for views by @sansyrox in https://github.com/sansyrox/robyn/pull/424

New Contributors

  • @Kop3sh made their first contribution in https://github.com/sansyrox/robyn/pull/411
  • @Oluwaseun241 made their first contribution in https://github.com/sansyrox/robyn/pull/404
  • @jmishra01 made their first contribution in https://github.com/sansyrox/robyn/pull/421
  • @mikaeelghr made their first contribution in https://github.com/sansyrox/robyn/pull/407

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.24.1...v0.25.0

Special Thanks to @AntoineRR for implementing the sick dark mode on the docs website! 🔥