-
Notifications
You must be signed in to change notification settings - Fork 74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PSA: Moving away from JIT #798
Comments
Merged
Merged
With the next release being on its way #825 I consider migration from JIT to be complete. |
7 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just wanted to share the plans for the nearest future: after lots of discussions and considerations, we decided to move away from JIT to a more classical model.
Just a few words on how everything works right now: Mull extract LLVM Bitcode from an executable, mutates some LLVM instructions, compiles the bitcode into machine code, and feeds the machine code to a JIT engine for further execution.
This approach works pretty well, sometimes. But often it just fails for some odd reasons.
During the years JIT was the biggest driving force behind the development, but it was also the major source of frustration:
I'm only slightly exaggerating: the issues I mentioned can be solved, but it becomes a question of trade-offs. In the end, we are not building a JIT engine, we are building a tool for mutation testing.
Short summary of the pros and cons of moving away from JIT.
What we lose:
What we gain:
The intention so far is not to rewrite Mull from scratch, but gradually migrate to a new model while preserving APIs where possible.
There is no ETA, and there is no clear and detailed plan at the moment. I do have a rough idea of what needs to be done, but it is too rough to be shared in a productive way.
Do not hesitate to drop any questions or thoughts below.
The text was updated successfully, but these errors were encountered: