A proof of concept for an experimental structured concurrency framework written in Python
Go to file
Mattia Giambirtone e1485d9317
Reformat with black
2024-02-23 13:13:47 +01:00
.idea Fixed minor timeout issues 2024-02-23 13:13:46 +01:00
structio Reformat with black 2024-02-23 13:13:47 +01:00
tests Fixed socket locking issues 2024-02-23 13:13:46 +01:00
.gitignore Fix multiprocessing support on Windows 2024-02-23 13:13:45 +01:00
LICENSE Initial commit 2023-05-15 18:15:45 +02:00
README.md Update README with notes about OS (in)compatibility 2024-02-23 13:13:47 +01:00
requirements.txt sniffio support 2024-02-23 13:13:41 +01:00
setup.py Update setup.py with correct project URL 2024-02-23 13:13:47 +01:00

README.md

structio - What am I even doing?

A proof of concept for an experimental structured concurrency framework written in Python

Disclaimer

This library is highly experimental and currently in alpha stage (it doesn't even have a proper version number yet, that's how alpha it is), so it's not production ready (and probably never will be). If you want the fancy structured concurrency paradigm in a library that works today, consider trio, from which structio is heavily inspired (curio is also worth looking into, although technically it doesn't implement SC).

Why?

This library (and its predecessors) is just a way for me to test my knowledge and make sure I understand the basics of structured concurrency and building solid coroutine runners so that I can implement the paradigm in my own programming language. For more info, see here.

P.S.: structio is only thoroughly tested for Linux: While Windows/macOS support is one of the goals of the project, I currently don't have enough time to dedicate to the quirks of the I/O subsystem of each OS. All features that don't rely on I/O (timeouts, events, queues, memory channels, etc.) are cross-platform, but things like sockets behave very differently depending on the platform, and it'll take some time for me to apply the necessary fixes for each of them. File I/O (in its current form using threads), as well as asynchronous threads and processes should work, but there's no guarantee