CHANGELOG
=========
v2.7 (2026-02-01)
-----------------
New Features:
- Closures and Function Pointers (#14): Support for first-class function
references. Use @ operator to get a SUB address (@SubName), BIND to
create closures with pre-bound arguments (BIND(@SubName, arg1, ...)),
and INVOKE to call through a function pointer or closure
(INVOKE ptr&(args)). BIND behaves a little bit like the Curry pattern
in functional programming.
See docs/ref.guide for more details.
- Callback SUB (#28): New CALLBACK modifier for SUBs that can be invoked
via the AmigaOS CallHookPtr() function. Syntax:
SUB name(ADDRESS, ADDRESS, ADDRESS) CALLBACK
Use @ to get the address for a Hook's h_Entry field (@MyCallback).
- MUI Submodule (#23): MUI (Magic User Interface) support via the MUI.b
submodule. Provides high-level BASIC wrappers for creating modern
Amiga GUIs with windows, buttons, lists, menus, tabs, and more.
Documentation: docs/MUI-Submod.guide. Includes 7 example programs,
including a FileViewer example that uses a custom class.
Note: This is a beta release - usable but more features will come.
Report bugs or feature requests on GitHub.
- Filled Circle/Ellipse (#15): CIRCLE command now supports trailing F
flag for drawing filled circles and ellipses. Syntax:
CIRCLE [STEP] (x,y),radius[,color[,start,end[,aspect[,F]]]]
Fill uses AreaEllipse() and respects active PATTERN.
- GADGET SETATTR Expressions (#20): GADGET SETATTR now accepts variables
and expressions for tag values, not just constants. Enables dynamic
gadget updates based on runtime values.
- Graphics Double Buffering: New include file and example for
double-buffered graphics programming. See examples/gfx/dbuf_demo.b.
Changes:
- 68020 Code Generation Default (#24): The compiler now generates 68020
native instructions by default. Use OPTION 2- in source to disable
68020 code generation for 68000 compatibility.
- Module Command Uses vasm: The module compilation command now uses vasm
assembler instead of the legacy assembler.
- Enhanced bas script. It now accepts a list of submods for linking.
And is overall a bit smarter.
Bug Fixes:
- Fix Library Closing (#25): Fixed issue with LIBRARY CLOSE not properly
closing opened Amiga shared libraries.
- Fix EXTERNAL Module Bugs (#29): Fixed bugs with uninitialized A4
register when using EXTERNAL modules, which caused crashes and
incorrect behavior with shared variables and arrays.
- Fixed Typos (#18, #26): Corrected various typos in source and
documentation.
Testing:
- New test categories: closures, callback
- Added SUB tests with SHARED variable access
------------------------------------------------------------------------------
v2.6 (2026-01-26)
-----------------
New Features:
- GadTools Gadget Integration: Full support for GadTools-based gadgets
with modern Amiga look and feel. New syntax:
GADGET id, status, label$, (x1,y1)-(x2,y2), kind [, TAG=value ...]
- Gadget Kinds: Support for BUTTON, CHECKBOX, INTEGER, STRING, LISTVIEW,
MX (mutual exclude), CYCLE, PALETTE, SCROLLER, SLIDER, TEXT, and
NUMBER gadgets.
- GADGET FONT: New syntax to set font for GadTools gadgets:
GADGET FONT name$, size
- GADGET SETATTR/GETATTR: Runtime modification and querying of gadget
attributes via tags.
- ASSERT statement: Runtime assertion checking for defensive programming.
Syntax: ASSERT expression [, "message"]
Prints "ASSERT FAILED: <message>" and exits on failure; passes through
silently when the condition is true. Implemented as an assembly-level
runtime library function (assert.s in db.lib).
- 68020 native code generation: When compiling with the -2 flag or
OPTION 2+ in source, the compiler emits native 68020 instructions
(muls.l, divs.l, divsl.l) for long multiply, divide, and modulo
instead of calling library routines (lmul, ace_ldiv, ace_lrem).
Emits "machine 68020" assembler directive for vasm.
Documentation:
- txt2guide.rb: Ruby script to auto-generate AmigaGuide documentation
from text sources (ref.txt, ace.txt).
Testing:
- GadTools test suite: New 'gtgadgets' test category for GadTools gadgets.
- Legacy gadgets tests: Separate 'legacygadgets' category for original
BOOPSI gadgets.
- Assert test suite: New 'assert' test category with ok and fail cases.
- 68020 arithmetic test: opt020 test case validating native 68020 code
generation for multiply, divide, and modulo operations.
------------------------------------------------------------------------------
v2.5 (2026-01-22)
-----------------
New Features:
- AGA Screen Support (modes 7-12): Full support for AGA chipset screens
with up to 256 colors (8-bit depth).
Toolchain Changes:
- vasm/vlink replaces legacy assembler/linker: Uses vasm and vlink as
the standard toolchain instead of a68k/blink.
Bug Fixes:
- FFP/vbcc floating-point compatibility fix: Fixed FFP handling in
runtime library (sleep_for_secs and float routines) for vbcc
compatibility.
Build System:
- GNU Makefile build system: New Makefile-ace and Makefile-lib in
src/make/ replacing legacy AmigaDOS build scripts.
- Rebuilt runtime libraries: Fresh db.lib and startup.lib compiled
with the new toolchain.
Project Housekeeping:
- Directory restructured: prgs/ renamed to examples/, build scripts
moved to src/make/, test infrastructure organized under verify/.
- Test suite added: 35 test cases covering syntax, arithmetic, floats,
and control flow, run via ARexx runner on emulated Amiga.
- Documentation consolidated: Single README.md, .doc files renamed
to .txt.
|