Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Releases: irmen/prog8

version 12.0.1

16 Dec 18:30

Choose a tag to compare

Bug fix release

  • fixed long--
  • fixed various long comparisons
  • fixed long - byte
  • fixed pointer dereference division
  • fixed diskio lf_start_list_dirs() and lf_start_list_files() not processing the pattern argument
  • struct types are now always available in the generated assembly code
  • $80000000 is now parsed as a valid long value -2147483648
  • added missing cx16.r0r1sl (etc etc) that map longs on the cx16 virtual registers (1 long per pair so 8 total)
  • implemented several missing struct and long code gen paths
  • old 'animals' example has been deleted because it is superseded by the new version that is using pointers
  • several other bugfixes and tweaks

Full Changelog: v12.0...v12.0.1

version 12.0

23 Nov 14:48

Choose a tag to compare

Major new version 12.0

docs: https://prog8.readthedocs.io/

New features:

long datatype

Native support for a 32 bits signed integer. See https://prog8.readthedocs.io/en/latest/variables.html#integers-bytes-words-longs

structs

Groups multiple fields together. See https://prog8.readthedocs.io/en/latest/structpointers.html#structs

(typed) pointers

Can point to structs, and other types.
We already had untyped pointers (in the form of plain uword addresses) but with typed pointers the compiler knows what it actually points to. This saves a lot of casts or byte manipulations and is a requirement to deal with structs. See https://prog8.readthedocs.io/en/latest/structpointers.html#structs-and-pointers

Other changes

This is a Major new language version with many changes and additions,, some small some large. Some are not backwards compatible and will require changes to existing code.

Some libraries have been changed as well

For the Commander X16, the compiler is up to date with the latest additions available in the recent ROM v49 release (extapi's and such).

I will try to add more specific descriptions of important changes to this change log later, but it is a LOT to work through. In the meantime, here is the complete list of commits since the last release:
Full Changelog: v11.4.1...v12.0

Version 12.0 Beta 5

15 Oct 16:30

Choose a tag to compare

Version 12.0 Beta 5 Pre-release
Pre-release

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

04 Oct 21:03

Choose a tag to compare

Version 12.0 Beta 4 Pre-release
Pre-release

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

27 Sep 13:05

Choose a tag to compare

Version 12.0 Beta 3 Pre-release
Pre-release

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

18 Sep 19:20

Choose a tag to compare

Version 12.0 Beta 2 Pre-release
Pre-release

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 in on.. call and 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

11 Sep 21:03

Choose a tag to compare

Version 12.0 Beta 1 Pre-release
Pre-release

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

24 Jul 21:07

Choose a tag to compare

Bugfix release.

Fixes lack of 0-initialization of zeropage variables in certain situations which could lead to them containing garbage values instead.

version 11.4

29 Jun 10:16
1b420f7

Choose a tag to compare

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 .. goto and on .. call statements to create an efficient jump table
  • floats can now be cast to integers (truncating)
  • sizeof supports 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() and cx16.joysticks_getall() convenience routines for handling joystick in any port
  • added doublebuffering routines to monogfx library, 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

11 May 20:39

Choose a tag to compare

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