Updates on the new compiler / interpreter in 0.7.

Just a quick update to let you guys know that I was hard at work with PPL (hence my less active posts here).
As a lot of you have read in a previous email, I rewrote the compiler and the interpreter in total C code instead of using the dynamic compiler to solve a really agravating problem with memory addressing.
Tests shows that the new interpreter is the same speed (faster in some cases) as the old interpreter and is obviously more portable and I can now make PPL compatible with SH3 and MIPS.
After a few weeks of head bashing, I finally found out why PPL was slowing down in some weird situations. Each time a proc or a func was called, PPL created new variables to memory dynamically and freed them after the proc or func exited. This proves to be a very bad design decision when done automatically (by the garbage collector). What I do now is I keep the variables (not the content that is allocated by the user but the internal variable structure content which is about 76 bytes per variable) in memory at all time and reuse them when needed. This technic improves the speed and also it's great for game development. Games need to run at the same speed all along. Memory will not get fragmented as much, therefore speed won't suffer.
I still have to work on the issue of structures. They are still running at variable speed. This should be fixed soon, now that I found out about the bad memory allocation in PPL.
Hope this post makes sense.
As a lot of you have read in a previous email, I rewrote the compiler and the interpreter in total C code instead of using the dynamic compiler to solve a really agravating problem with memory addressing.
Tests shows that the new interpreter is the same speed (faster in some cases) as the old interpreter and is obviously more portable and I can now make PPL compatible with SH3 and MIPS.
After a few weeks of head bashing, I finally found out why PPL was slowing down in some weird situations. Each time a proc or a func was called, PPL created new variables to memory dynamically and freed them after the proc or func exited. This proves to be a very bad design decision when done automatically (by the garbage collector). What I do now is I keep the variables (not the content that is allocated by the user but the internal variable structure content which is about 76 bytes per variable) in memory at all time and reuse them when needed. This technic improves the speed and also it's great for game development. Games need to run at the same speed all along. Memory will not get fragmented as much, therefore speed won't suffer.
I still have to work on the issue of structures. They are still running at variable speed. This should be fixed soon, now that I found out about the bad memory allocation in PPL.
Hope this post makes sense.