This is related to the completely rewritten backend compiler module (1.2.7 undergone an entire new preprocessor which now allows function inlining -using complex macros with parameter substitution). Now it's time to fix backend when I realised the bug I introduced in 1.2.6
This means I have to re-check almost every expression case in every context for every type (array, assignation, evaluation, etc for UByte, Byte, Uinteger, Integer, Ulong, Long, Fixed, Float, String)
Currently I've finished both 8 & 16 bits types (and probably strings). Because they're used most frequently.
But It will take time to check & fix every case. The other good news is that now I've switched to Mercurial and start using Unitary Testing so once a fix is done, it won't be undone again with subsecuent fixes onwards (as it happened before!). Test where introduced in 1.2.6. So, in short:
- 1.2.6 - Start unitary testing
- 1.2.7 - Heavy refactoring to introduce the new zxbpp (I'm very proud of )
- 1.2.8 - Fix the bug (and a subtle silent bug introduced ), and optimize the backend. Faster and shorter code. Some other code refactoring towards 2.x branch.
- 1.2.9 - Introduce READ, DATA, RESTORE to enhance compatibilty.
They aren't not so small steps, so they take some time to recode. The idea is to move towards 2.x to implement other nice features (insted of stop here and rewrite a new compiler from scratch).
PS: I think fsin.bas should be renamed to fmath.bas since it contains many math functions (even sqrt?). It you think it's ready it can be packaged with the compiler from now on.