Welcome to Pydrofoil’s documentation!

Pydrofoil is an experimental emulator-generator for ISA models written in Sail. It can generate emulators for RISC-V, ARM, CHERIoT based on their respective Sail models. The Pydrofoil-generated emulators achieve fast performance by doing dynamic binary translation (aka just-in-time compilation) from guest instructions into host machine instructions. It’s built on top of the RPython meta-jit compiler and reuses all its optimizations, backends, etc. Performance is typically an order of magnitude better than the emulators generated by Sail.

To get started with the RISC-V emulator, please consult Building Pydrofoil from source.

To read a more thorough description of how the project works, please refer to our 2025 ECOOP paper. To cite this work, please use the following BibTex snippet:

@InProceedings{bolztereick_et_al:LIPIcs.ECOOP.2025.3,
  author =  {Bolz-Tereick, CF and Panayi, Luke and McKeogh, Ferdia and Spink, Tom and Berger, Martin},
  title =   {{Pydrofoil: Accelerating Sail-Based Instruction Set Simulators}},
  booktitle =       {39th European Conference on Object-Oriented Programming (ECOOP 2025)},
  pages =   {3:1--3:31},
  series =  {Leibniz International Proceedings in Informatics (LIPIcs)},
  ISBN =    {978-3-95977-373-7},
  ISSN =    {1868-8969},
  year =    {2025},
  volume =  {333},
  editor =  {Aldrich, Jonathan and Silva, Alexandra},
  publisher =       {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
  address = {Dagstuhl, Germany},
  URL =             {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2025.3},
  URN =             {urn:nbn:de:0030-drops-232962},
  doi =             {10.4230/LIPIcs.ECOOP.2025.3},
  annote =  {Keywords: Instruction set architecture, processor, domain-specific language, just-in-time compilation, meta-tracing}
}