This page describes possible Summer of Code projects related to the Python 3 JIT, developed originally under the name "Unladen Swallow".
Contact: Collin Winter <collinwinter@google.com>
Develop a JIT-accelerated regex engine: pick up, extend existing work if applicable; make necessary improvements to the common benchmark suite; make necessary improvements to Python's correctness tests; implement JIT acceleration for 50% of regexes in benchmark suite; zero correctness regressions; zero performance regressions; demonstrate 25% performance improvement in regex benchmarks.
Convert JIT output from stack machine to register machine (reference, reference); demonstrate improvement in generated LLVM IR; demonstrate improvement in performance across relevant benchmarks; make necessary improvements to benchmark suite.
- Optimize looping constructs; expose Python-level loops to LLVM's loop optimization passes; avoid allocating objects on the heap in the fast path; be able to bail back to the interpreter seamlessly; make necessary improvements to Python's correctness tests; demonstrate performance improvements across relevant benchmarks.
- Develop tools for exposing JIT data to developers for performance debugging; annotate source code with gathered types; annotate source code with bail sites; enable developers to answer the questions, "how do I make this application faster?", "why did my application slow down?"; integrate with existing tools like cProfile, or develop new tools as appropriate.
Develop/extend comprehensive suite of fuzz testing tools for Python; pyfuzz for source-level fuzzing; fusil for API fuzzing; new fuzzer for bytecode; set up continuous fuzzing infrastructure; build dashboard for fuzzing efforts; fix any bugs uncovered by fuzzing efforts.