-
Notifications
You must be signed in to change notification settings - Fork 48
Description
I'd like us to make progress in some of these areas in 2025. Feel free to propose more areas!
Python feature support
Add support for missing Python features. At least these are important:
- Missing asyncio features
- Real support for generator expressions
- Descriptors
- The final unsupported dunders (at least those that are commonly used)
Robustness and safety
- Fix bugs, focusing on deviations from CPython semantics.
- Fix type and memory safety issues.
- Improve testing.
Examples include safe # type: ignore
comments and detecting stack overflows.
Consider adapting parts of the CPython test suite. Compile more open source code as regression tests.
Peak performance
Support low-level features such as packed arrays and faster string/bytes parsing and building. This will improve the maximum performance achievable with mypyc.
Reduce overhead of other fundamental operations, such as list
operations, reference counting, boxing/unboxing and async functions.
Support free threading (no-GIL CPython builds)
Now that CPython is adding free threading support, it would great for mypyc to also support it.
Multiple subinterpreters
Support multiple subinterpreters with separate GILs on Python 3.12 (#993).
Usability
Improve usability. This includes improvements to the command line interface, and error handling and messages.
Explore ways to make it easier for users to replace "slow" operations in code being compiled with "fast"operations. It's impractical to make all Python operations fast when compiled, but currently it's also too difficult to learn which operations to avoid.
Performance bottlenecks
Address some of the worst performance bottlenecks in generated code. Focus particularly on cases where performance is worse than CPython, and cases where we generate inefficient code for common use cases.
Compilation speed
Improve compilation speed through incremental compilation, parallel compilation, making mypyc faster, generating smaller C code, etc.