Page 15 of 39
Prog8 language and compiler topic
Posted: Sat Nov 06, 2021 11:13 pm
by desertfish
Version 7.2 of the Prog8 compiler has just been released
https://github.com/irmen/prog8/releases/tag/v7.2 Documentation is here
https://prog8.readthedocs.io This is mainly a version with performance optimizations.
Various parts of the code generator now create faster code, and sometimes also smaller code.
Depending on your source code, you can observe pretty significant gains in resulting program size (tens to hundreds of bytes smaller).
Other fixes:
PETSCII block drawing character mapping was updated to now correctly separate certain box line characters
Fixed type casting errors related to certain const propagation
str
is now allowed as a parameter type in subroutines (it is passed by reference/address)
compiler no longer crashes when an input file doesn't exist
gradle builds now automatically run installDist task after build
updated to Kotlin 1.5.31
Prog8 language and compiler topic
Posted: Mon Nov 08, 2021 10:39 am
by borgar
Very nice. My only currently working project (
https://www.commanderx16.com/forum/index.php?/files/file/182-petaxian/) still compiles and run fine though there is no reason to rebuild and upload yet.
I have made the Git project public (
https://github.com/cyborgar/Petaxian) in case anyone want to look at a bit larger Prog8 code example compared to the mostly smaller examples coming with the compiler. I have organized code in multiple files/modules. Though there is no code protection this does require explicit references when crossing modules and that helps a lot with visibility.
I have (slowly) started on another clone game (this one is going to copy liberally from Llamasoft's Gridrunner) but I've just gotten started. I'm going to focus on getting it to work on C64 before I'll probably port it to CX16.
Prog8 language and compiler topic
Posted: Wed Nov 10, 2021 9:48 pm
by desertfish
For comparison
Petaxian compiled with prog8 7.0: 19639 bytes
Petaxian compiled with prog8 7.2: 19405 bytes
234 bytes of overhead removed
update: Petaxian compiled with prog8 7.3: 19258 bytes
another 147 bytes of overhead removed by producing more efficient code
Prog8 language and compiler topic
Posted: Sun Nov 14, 2021 10:26 pm
by desertfish
Version 7.3 has just been released
https://github.com/irmen/prog8/releases/tag/v7.3 Docs are here as always
https://prog8.readthedocs.io/ More improvements in generated code efficiency, resulting in smaller code that runs faster. (see the post above this one for an indication of savings you might see)
Also added a few small new quality of life features.
fixed operator not
priority: it is now higher prio than and/or/xor
!
fixed division of signed bytes by 2
added new cos and sin builtin functions cosr8 sinr8 cosr16 sinr16
, and also their unsigned valued siblings. These make it easier to deal with arcs of degrees 0-359 rather than 0-255 of the existing trig functions.
added signed versions of the cx16 virtual registers: r0s - r15s
including the L and H byte variants of them.
less temporary variables generated and used
more optimizations to expression evaluations
compiler no longer uses cx16 R15 virtual register as tempvar
unit tests now use KoTest as test framework.
Prog8 language and compiler topic
Posted: Tue Nov 16, 2021 11:16 pm
by desertfish
While I was boasting about the reduced code size of the compiled Petaxian game, I now discovered that a bug has crept in in 7.3 that now makes the sound glitch out on the C64 build of Petaxian. I will investigate and fix this soon, hopefully.
Weirdly enough the game still works fine with sound on the X16 build.
update: found the bug and fixed it for 7.4, there was a new optimizer added that was too aggressive in removing double-stores
Prog8 language and compiler topic
Posted: Tue Nov 30, 2021 10:00 pm
by desertfish
Version 7.4.1 has been released
https://github.com/irmen/prog8/releases/tag/v7.4.1 Documentation as always here
https://prog8.readthedocs.io Even more improvements in generated code efficiency, resulting in smaller code that runs faster.
improved code generation.
optimizer is now smarter about accesses to memory mapped IO that shouldn't be optimized away
performance improvements in the compiler itself, updated to Kotlin 1.6
fixed some illegal instructions in the conv module on c64 target
other bugfixes
documentation improvements
Prog8 language and compiler topic
Posted: Fri Dec 10, 2021 2:57 pm
by desertfish
Version 7.5 has been released
https://github.com/irmen/prog8/releases/tag/v7.5 Documentation as always here:
https://prog8.readthedocs.io/ Some new features and more optimizations have been added.
added diskio.load_raw() to load headerless files
added cx16diskio with load() and load_raw() that are HIRAM bank-aware
added cx16.getrambank() / getrombank()
fix grammar problem: \x and \u escape sequences now work properly in character literals
fix grammar problem: scoped variables such as cx16.r0-r15 are now allowed as loop variable in for loops
cx16.r0-r15 are now properly considered to be already in zeropage on X16 if you use them as pointers
allow using ubyte[] as subroutine parameter type
some other bugfixes and optimizations
Prog8 language and compiler topic
Posted: Sun Dec 12, 2021 1:20 am
by yock1960
Is anyone using this on a Windows machine? I've tried two different systems now, Win10 & Win7, started with Java 11, moved to the open source Java and all I get are can't access jar file errors. The entire reason that I like working with 'old' 8bit systems is simplicity!
Prog8 language and compiler topic
Posted: Sun Dec 12, 2021 9:58 am
by borgar
Sure. I use this on WIndows 7 (old stationary pc) and Windows 10 (laptop). Never had any problems getting this to work.
BTW, I have just set up a few small bat scripts to compile and/or run stuff. This on I use just to build the Petaxian code, I have variants that can take program name as argument, build for C64 instead for XC16 etc.
SET PATH=%PATH%;..
SET jar=..\prog8compiler-7.5-all.jar
IF %computername%==BIFROST (
SET javap="C:\Program Files\OpenJDK\jdk-11.0.9.1-hotspot\bin\java.exe"
) ELSE (
SET javap="C:\Program Files\OpenJDK\jdk-11.0.8.10-hotspot\bin\java.exe"
)
%javap% -jar %jar% -srcdirs cx16 -target cx16 petaxian.p8
..\cmdrx16v38\x16emu.exe -joy1 SNES -run -prg petaxian.prg
Prog8 language and compiler topic
Posted: Sun Dec 12, 2021 2:06 pm
by yock1960
On 12/12/2021 at 4:58 AM, borgar said:
Sure. I use this on WIndows 7 (old stationary pc) and Windows 10 (laptop). Never had any problems getting this to work.
BTW, I have just set up a few small bat scripts to compile and/or run stuff. This on I use just to build the Petaxian code, I have variants that can take program name as argument, build for C64 instead for XC16 etc.
SET PATH=%PATH%;..
SET jar=..\prog8compiler-7.5-all.jar
IF %computername%==BIFROST (
SET javap="C:\Program Files\OpenJDK\jdk-11.0.9.1-hotspot\bin\java.exe"
) ELSE (
SET javap="C:\Program Files\OpenJDK\jdk-11.0.8.10-hotspot\bin\java.exe"
)
%javap% -jar %jar% -srcdirs cx16 -target cx16 petaxian.p8
..\cmdrx16v38\x16emu.exe -joy1 SNES -run -prg petaxian.prg
Thanks Borgar! I thought about this, but I thought that after 60+ years of computing, we shouldn't have to do this type of thing anymore! But I guess that's just grumpy old me!
?