github gbdev/rgbds v0.4.2-pre

latest releases: v1.0.0, v1.0.0-rc2, v1.0.0-rc1...
pre-release5 years ago

This is a pre-release! Do not expect this to be fully stable yet; please read the explanation at the end of the changelog.

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.
  • 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 to the end of the file

Changes:

  • The lexer has been fully rewritten, which should make additions to it easier, and improve performance
  • Removed arbitrary limits on charmap number and length of name
  • STRSUB will no longer warn when talking 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)

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 number 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

Why a pre-release?

The lexer, which is the core component of RGBASM, has been fully rewritten. Being also a very low-level piece of code, it's prone to crashing. The rewrite may also have changed some behavior (here is a known incompatibility). This pre-release is essentially to test the waters: see if anything breaks, assess how to handle it, and make 0.4.2 a good and stable release.

Why rewrite it? Didn't it work fine?

In short, the old lexer worked "fine" if you didn't look at it the wrong way. It was also hard to edit, and blocked a bunch of issues, 6 open at the time of writing. Further, the performance wasn't great, and we're hoping to improve it with this release.

It sucks! Stuff broke and it's slow!

Alright, we'd love to hear back about that. Check the "issues" tab near the top of the page for anything similar to your problem, otherwise open a new issue. We'd preferably need the code that you ran RGBASM on, so that we can see why it's slow.

⚠️ ATTENTION WINDOWS USERS ⚠️

RGBDS does not ship the Visual C++ runtime libraries anymore; if you don't have the 2019 ones (you should get an error message about some vcruntime DLL missing), you can install them from Microsoft's website.

Don't miss a new rgbds release

NewReleases is sending notifications on new releases.