Skip to content

v0.4.2

Compare
Choose a tag to compare
@ISSOtm ISSOtm released this 09 Dec 16:03
· 1145 commits to master since this release

New:

  • We have a website! Accordingly, HTML documentation is no longer distributed in the source or in the release artifacts below. All old documentation links now redirect to the latest release's documentation
  • You may also have noticed the repo has been moved to gbdev instead of rednex! Don't worry, the same people are in charge.
  • /* Block comments! */
  • Whitespace is now allowed between the brackets in [bc], [de] and [hl], also allowing [\1] to work.
  • The second number argument to INCBIN can now be omitted, going up to the end of the file
  • The argument to rb and rw is now optional, defaulting to 1
  • RGBASM and RGBLINK can both use stdin as input, and stdout as output (support yet to come to RGBFIX)
  • zsh completion scripts are available in the contrib/ folder. (If you want to make bash ones, apply in #620)

Changes:

  • Nested macros are now invalid, but a workaround is possible
  • The lexer has been fully rewritten, which should make additions to it easier, and improve performance
  • Removed arbitrary limits on charmap size and name length
  • STRSUB will no longer warn when taking 0 characters at the end of the string
  • RGBLINK will no longer report errors stemming from other errors
  • RGBASM is now able to write more jrs without relying on RGBLINK, leading to smaller .o files and faster linking
  • INCBIN should produce a slightly more useful error message
  • A bunch of quality-of-life improvements for downstream packagers, especially using CMake
  • Assertions have been removed from release builds, improving performance slightly
  • charmaps now allocate memory as nodes are allocated, greatly reducing their size (by a factor of ~8)
  • Documentation now mentions that SHIFT updates _NARG

Fixes:

  • Two 6+ year-old crashing bugs have been fixed. They were thankfully rare, but should no longer be a problem now.
  • LOAD blocks could produce incorrect output when at the beginning or end of a section
  • __FILE__ caused syntax errors if the file name contained a quote
  • jr in certain circumstances could crash RGBLINK
  • Fixed inconsistent version numbering between the Makefile and the CMakeLists
  • Documentation failed to mention SECTION FRAGMENT
  • Documentation incorrectly listed bit 7 of symbol type as being the unionized section flag, and failed to mention the section fragment flag
  • Documentation erroneously used to claim that symbol names could begin with a digit
  • Error out when using align outside of a SECTION, or when using shift outside of a macro... instead of crashing
  • Fixed a potential RGBASM crash with very large expressions
  • Fixed overwriting a builtin symbol succeeding after insisting enough
  • Fixed a crash when subtracting two invalid labels
  • Fixed using _NARG outside of a macro crashing RGBASM

Note to Windows users

Release 0.4.1's binaries were compiled with MSVC instead of MinGW, giving apparently better results. Unfortunately, there is currently a problem with MSVC (not that we can do anything about it, yay!), so the binaries below are MinGW again. 0.4.3 should be compiled with MSVC again, though.