Version 10.0
This is a BIG release. Many things got changed, improved or fixed.
Breaking changes:
-
additional rules for symbol prefixing to avoid name clashes in the generated assembly code. Details here https://prog8.readthedocs.io/en/latest/technical.html#symbol-prefixing-in-generated-assembly-code
-
push
,pushw
,pop
andpopw
are no longer builtin functions but regular inlined subroutines insys
. -
some floating point routines have been renamed to make the names more consistent:
floats.rndf -> floats.rnd floats.parse_f -> floats.parse floats.rndseedf -> floats.rndseed floats.print_f -> floats.print floats.str_f -> floats.tostr
-
some type casting rules have been tweaked. You may have to add or remove type casts in certain places.
-
boolean logical "and" and "or" expressions are now evaluated with McCarthy / short-circuit evaluation.
This means that not every term in the expression will be evaluated if the result can already be determined!
This should normally not cause any problems because it is bad practice to write code that depends on
the order of evaluation of the terms, but sometimes we can't help ourselves.
New features:
- improved diskio error handling and file not found errors.
- you can now use Python-style negative array indexing to count from the end of the array.
- allow efficient containment check in range expression at runtime (
if x in 10 to 100
) - rol, ror, rol2, ror2, any() and reverse() are now supported on split word arrays
- optimizer now replaces variables by compile time constants if possible
- improved the const optimizer
- cx16: added all remaining romsubs for the kernal audio routines (including an example program for it)
- cx16: added the romsubs for the three X16Edit kernal entry points.
- cx16: added several Vera register aliases that are memory mapped words (such as VERA_ADDR)
- cx16: added
verafx.copy()
for fast vram to vram copy ("blitting") - cx16: added
palette.get_color()
andpalette.default_colors_16[]
- cx16: added
sprites.set_mousepointer_image()
,sprites.set_mousepointer_hand()
andsprites.get_data_ptr()
- cx16: added
cx16.cpu_is_65816()
to test for presence of the 65816 cpu vs the 6502 cpu - cx16: added celluar automatons code example
- added
string.isspace()
andstring.isprint()
andstring.contains()
. - added
call
builtin function for efficient indirect subroutine call (indirect JSR) - added
cbm.CLEARST()
- added
-varsgolden
compiler option to put variables into golden ram at $0400 - added
-slabshigh
and-slabsgolden
to do the same for memory() slabs as for variables - added
-printast1
and-printast2
command line options to dump the internal parse trees (useful for debugging purposes) - added
-check
compiler option to only quickly syntax check a program - added
%option ignore_unused
directive to suppress warnings about unused stuff, useful when writing libraries - added
floats.push()
andfloats.pop()
to push and pop floating point numbers on the cpu stack - added
math.crc16()
andmath.crc32()
to compute checksums
Other
Many, many bug fixes and other improvements have been made.
Check the commit list for all the details: v9.7...v10.0
donation: If you'd like to buy me a hot coffee or spicy pizza, you can do so at ko-fi.com/irmen