Skip to content

Instantly share code, notes, and snippets.

@kgriffs
Last active May 10, 2021 22:23
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kgriffs/a719c84aa33069d8dcf98b925135da39 to your computer and use it in GitHub Desktop.
Save kgriffs/a719c84aa33069d8dcf98b925135da39 to your computer and use it in GitHub Desktop.
Falcon 3.0 Roadmap

Falcon 3.0 Roadmap

3.0.0a1

  • Review/Merge the ASGI implementation - PR #1573
  • Review/Merge native form parsing (WSGI only) - PR #1549
  • Fix doc formatting issue (see also comment on PR #1566)
  • Get tests to pass on Windows
  • Add windows gate to Travis CI

3.0.0a2

  • Tweak ASGI and form interfaces (if needed) based on alpha tester feedback
  • Finish ASGI Docs (including Changelog snippets)
  • Finish multipart form parsing docs
  • Add async support for multipart form parsing
  • Review/Merge PR backlog

3.0.0a3

  • ASGI WebSocket impl. + docs - PR #1741
  • Tweak ASGI and form interfaces (if needed) based on alpha tester feedback
  • Review/Merge PR backlog

3.0.0b1

  • ASGI tutorial
  • Implement and merge remaining items from the 3.0 milestone in the issue tracker (delay low-priority items to 3.1/4.0 as needed)
  • Semi-final performance testing and optimization
  • Semi-final changelog updates
  • Render changelog news fragments (so far)

3.0.0bx

  • Bug fixes
  • Final performance testing and optimization
  • Final changelog updates
  • Review/Merge PR backlog (or delay community PRs to 3.x/4.x as needed)

3.0.0rc1

  • Critical bug fixes and non-invasive documentation improvements ONLY
  • Render changelog news fragments to changelog and remove fragment files
  • Finalize "Contributors to this Release" section in the changelog
  • Add release summary to changelog

3.0.0

  • Stable release!
  • Update sponsors on falconframework.org - #1838
  • Update benchmarks on falconframework.org - #1822
  • Update colors and/or layout on falconframework.org so people know something has changed (i.e., 3.0) - #1028
@vytas7
Copy link

vytas7 commented Apr 3, 2021

Hi @btegs,
And sorry for the confusion, we'll check the docs.

But the answer is that we are shipping wheels for all popular platforms and architectures, so normally you shouldn't need to cythonize manually that way.

@btegs
Copy link

btegs commented Apr 3, 2021

Hi @btegs,
And sorry for the confusion, we'll check the docs.

But the answer is that we are shipping wheels for all popular platforms and architectures, so normally you shouldn't need to cythonize manually that way.

Sounds good. Btw have you tried Poetry before? I find it handy when I mix it with pyenv, install the Python version I want, then use either a local or global .python-version and run poetry new project1 to keep everything organized and manage my packages in the .toml file.

@vytas7
Copy link

vytas7 commented Apr 3, 2021

I've tried Poetry briefly, but haven't looked more in depth. It is listed as one of the alternatives if/when we decide to proceed with PEP 517. Poetry looks to be the most solid option for managing dependencies by a country mile, but, OTOH, Falcon has no hard dependencies on any third party library.

Resorting to pip install --no-binary :all: ... is still needed in case the wheel is unavailable, which might happen in the following scenarios:

  • No wheel is available for the interpreter in question, e.g., Python 3.10 is released and our stable release won't have a wheel for that.
  • No wheel is available for the architecture in question, like i386 etc.
  • It is desirable to deploy a version other than a release on PyPi, e.g., the latest GitHub snapshot etc.

Btw regarding Falcon 3.0 + Cython, there are some good news, and some worse:

  • ➕ (Blowing my own 🎺 here) we are now offering pure Cython code for certain parts of the framework, like decoding a query string. On CPython, this can outperform the std lib by an order of magnitude for percent-encoded query strings.
  • ➖ Parts of our ASGI code are not cythonized, as we haven't found any way to utilize a cythonized coroutine in any ASGI server. It seems that wrapping it in another Python async task degrades the performance to worse than pure Python. We'll circle back on this in 3.1: maybe there is a way to speed up coroutines with Cython in a more usable way, or maybe we could offer patches to the popular uvicorn (or other ASGI servers) to somehow remove the said barrier, if at all possible. FWIW, to that end, we have also tried Cython 3.0 alpha, and while that offered a slight improvement, it did not eliminate the issue.

@vytas7
Copy link

vytas7 commented Apr 3, 2021

Btw, absent critical bugs, the plan is to ship a stable release on Monday or Tuesday (6th/7th April). :shipit:

@btegs
Copy link

btegs commented Apr 4, 2021

Btw, absent critical bugs, the plan is to ship a stable release on Monday or Tuesday (6th/7th April). :shipit:

Awesome!

@kgriffs
Copy link
Author

kgriffs commented Apr 5, 2021

@kgriffs
Copy link
Author

kgriffs commented May 10, 2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment