Releases: irmen/prog8
Version 12.0 Beta 6
Last v12 beta release. No more changes will be made before the final release, only bugfixes (if bugs are discovered in the next couple of weeks).
Version 12.0 Beta 5
5th beta release of Prog 12
most important changes this time: a whole bunch of bug fixes and implementations for many missing long operations.
Version 12.0 Beta 4
4th beta release for prog8 version 12
big new feature: support for long integer values as native data type (32 bits signed integer)
also fixed the build process for gradle 9 build tool version.
Version 12.0 Beta 3
3rd and hopefully last beta release of the upcoming v12.0 prog8 compiler.
changes since beta 2:
- assigning to an array indexed pointer is now possible. This requires the use of explicit pointer dereference though:
pointer[index]^^.field = value - added pointer array initializer size check
- various other additions and bugfixes not related to pointers perse, see the commit list v12.0-beta2...v12.0-beta3
Version 12.0 Beta 2
2nd beta release of the upcoming version 12 of the prog8 compiler.
changes since BETA 1:
- updated syntax highlighting files
- fixed a bug with
defer, a bug inon.. calland a couple of other bugfixes - added the
offsetof()builtin function to give you the byte offset of a field in its struct definition - better and more complete code generation for pointer operations
- you can now put struct initializers in array literals, to statically initialize a whole bunch of structs in one go. The array will also be statically initialized with the pointers to each of the initialized struct instances. This is all placed as fixed data into the program and no code is needed to construct it.
- struct initializers can now be written in short form where the struct pointer type prefix is omitted:
^^Node ptr = [1,2,3]instead of^^Node ptr = ^^Node : [1,2,3]. The compiler will figure out the correct type. This also works for the struct initializer arrays mentioned above. So you can write:
^^Node[] nodes = [
[1,2,3],
[4,5,6],
[5,6,7],
[] ; unintialized (cleared to 0) struct instance
]
Version 12.0 Beta 1
First official test release of Prog8 version 12.0.
The major new features in this version are:
- support for structs
- support for typed pointers to simple data types and structs
Detailed documentation of those features can be found in the documentation: https://prog8.readthedocs.io/en/latest/structpointers.html
A summary of other changes will follow soon, but the focus really has been on adding structs and pointers to the language. Much effort has been spent to make sure that existing programs still compile to equal (or better) code than with the version 11 release of the compiler.
version 11.4.1
version 11.4
Breaking changes:
- '\n' (newline character) is now encoded as char code 13 in various encodings such as ISO (used to be 10)
This means that when printed, such newlines will now properly go to the next line in these encodings too (ISO variants, KATAKANA). code that reads text files and checks for line endings using '\n' may have to be changed to explicitly test for the byte value that represents the new line character in the file. There is a new strings.find_eol() routine to make this a bit easier
New features:
- added a basic Foenix256 custom compiler target
- added boolean typed versions of the cx16.r0-r15 virtual registers:
cx16.r0bL,cx16.r0bH, etc. - added
on .. gotoandon .. callstatements to create an efficient jump table - floats can now be cast to integers (truncating)
sizeofsupports more argument forms such as sizeof(float)- added a -timings command line flag to print some more detailed internal compilation step times
- added the missing kernal routines for the c128 target such as
c128.PRIMM() - added
strings.find_eol() - added
cx16.joysticks_detect()andcx16.joysticks_getall()convenience routines for handling joystick in any port - added doublebuffering routines to
monogfxlibrary, in both lores and hires mode, to allow for flicker free animation. See the upated cobra-mk3 example. - the fileselector now supports joystick control to scroll and select a file
- add sys.get_as_returnaddress() for low-level stack fiddling purposes
Bugfixes:
- fixed build error (of the compiler itself) on case-insensitive filesystems such as Mac OS
- fix codegen for word*128 expressions
- fix signed byte comparisons in case of overflowing values
- fix wrong address calculation for &wordarray[i] where i is a variable
- fix missing cmp #0 when asmsub call is part of a boolean expression
- fixed forloop codegen over non-split word arrays of length >= 64 elements
- fixed monogfx INVERT draw mode
- fix compiler crash on for x in wordvar
- fix splitting of array decl and initializer for non numeric types
- various fixes in the IR and virtual target
- fixed wrong order of 64tass command line arguments
Other changes:
- various optimizations
- various documentation improvements
version 11.3.2
Prog8 version 11.3.2
Fixed
- allow bitwise operation between different types as long as they're the same size. (11.3.1 broke this)
- various bugs around word-indexing combined with address-of: &buffer[2000]
- code gen error for certain goto array[index] where sometimes the first entry was taken regardless of index
other changes
- documentation tweaks
v11.3.1
Bug fix release for C64 mostly.
goto array[idx]now assembles correctly again on C64 (or more specifically, on 6502 cpu targets)- fix
strings.hash()to correctly assemble on C64 and other targets with a "full zeropage" - fix const evaluation of bitwise expressions (&, |, ^, <<, >>) with signed numbers
- fix Java version incompatibility with Java versions older than 21
other improvements:
- the
math.randrange()family of routines are now much faster - some redundant variable initialization was removed so programs are now smaller
- a bit stricter assignment type compatibility checking
- added
-versionswitch to just print the compiler version string and license - fixed some IR problems