Published my first PyPI package today, called lafleur.
#lafleur is a specialized CPython JIT fuzzer that uses a coverage-guided, evolutionary approach. It executes test cases, observes their effect on the JIT's state by analyzing verbose trace logs, and uses that feedback to guide its mutations, becoming smarter at finding interesting code paths over time.
Let me know if you use it or have any questions.
https://pypi.org/project/lafleur/
https://github.com/devdanzin/lafleur
![Screen shot of an abridged log of lafleur running, displaying the new messages for the timing fuzzing mode:
[TIMING] Running timed trial with JIT=False.
[TIMING] Running timed trial with JIT=True.
[~] Timing slowdown ratio (JIT/non-JIT) is 0.881.
The screen shot has a dark gray background and the text is a mix of white, green, red, purple and yellow, in a mess of coloring because the text editor identified this content as a Python script.
Full text of the image is:
--- Fuzzing Session #226 ---
[+] Calculating corpus scores for parent selection...
[+] Selected parent for BREADTH session: 523.py (Score: 248.51)
[...]
[TIMING] Running timed trial with JIT=False.
[TIMING] Running timed trial with JIT=True.
[NEW RELATIVE EDGE] '('EXECUTING', '_START_OF_HARNESS_->_SET_IP')' in harness 'f1'
[~] Timing slowdown ratio (JIT/non-JIT) is 0.881.](https://files.mastodon.social/media_attachments/files/115/367/765/525/405/481/small/d552701462e9c291.png)