On Friday, 4 November 2016 at 10:59:25 UTC, Marc Schütz wrote:

In this case better make sure to remove the resulting dead code from the old interpreter, otherwise it will become and unmaintainable mess in the long run.

If you ask me the old interpreter is already an unmaintainble mess. It will not be possible to remove code since the old interpreter and the new one do not share any common state or code-paths. Therefore all evaluation-capabilty the old interpreter has must be retained otherwise it would not be useful anymore.

I thought about it some more, and decided that I will replace the old interpreter completely in the long run. However in order to get something release before 2017, I have to rely on it being there.

I recently lost 3 days of work because of my git-skills.
Now I am working on simplyfing the cases the interpreter can get into. Before I would do some optimisation to avoid temporaries and the like. Since I now have the llvm-backend to verify the code is correct it's no longer crucial in order to be able to debug. This simplification will (hopefully) finally enable me to proper handling of boolean-expressions. I suspect that most of the invalid code I generated came from a bug in the "temporaries-avoidance optimisation"

Also I will put some effort into documenting the new engine better.
However code-gen bugs take priority over documentation.

Reply via email to