github gbdev/rgbds v1.0.0-rc1

latest release: v1.0.0-rc2
pre-releaseone month ago

RGBDS's major version number is finally going to increment from 0 to 1! As of this release, we'll stick to semantic versioning, so that any future breaking changes will require a major version update, new features will be a minor version, and bug fixes will be a patch version. That should make it easier to manage RGBDS version compatibility for assembly projects. (And if a "version 2.0" does eventually come after this one, it might be rewritten in Rust.)

This is a release candidate to help people test it out early, and make sure we won't need to release a 1.0.1 bugfix immediately afterwards.

Removed

  • Treating multi-value strings as numbers, and the rgbasm -Wnumeric-string warning about doing so
  • ldio [c], a/ldio a, [c], and ld [c], a/ld a, [c] (use ldh [c], a/ldh a, [c] instead)
  • ldh [$xx], a/ldh a, [$xx] (use ldh [$FFxx], a/ldh a, [$FFxx] instead)

Deprecated

  • Treating single-value strings as numbers (use 'c'haracter constants or the CHARVAL function instead)
  • 1-indexed string functions STRIN, STRRIN, STRSUB, and CHARSUB (use 0-indexed STRFIND, STRRFIND, STRSLICE, and STRCHAR instead)
  • rgbfix -O/--overwrite (use the -Wno-overwrite diagnostic flag instead)

Added

  • Error/warning output is $\normalsize{\textsf{\color{#ff0000}c\color{#ff8000}o\color{#cccc00}l\color{#00aa00}o\color{#00aaaa}r\color{#4444ff}f\color{#6600cc}u\color{#ff00aa}l}}$ by default when sent to a terminal; control it with --color always/never/auto, or the NO_COLOR or FORCE_COLOR environment variables
  • Add a question mark after macro?, rept?, for?, include? or macro invocations like my_mac?, to "silence" them, excluding them from error/warning location backtraces
  • :: can join db/dw/dl/ds directives as well as instructions onto one line
  • CHARVAL(str), without an index argument, gets the numeric value of a single-character string
  • OPT allows an optional dash before flags to be more like the CLI (e.g. OPT -Wno-obsolete)
  • -B/--backtrace configures location backtraces for error/warning messages in RGBASM and RGBLINK
  • -v/--verbose has multiple levels for RGBASM and RGBLINK too, not just RGBGFX
    (RGBFIX's functionality is too simple to need verbose debug output, and it uses the -v flag for something else already)
  • rgbasm -Wexport-undefined warns when you EXPORT an undefined symbol (enabled by -Wall)
  • rgblink -Wtruncation supports warning levels =0, =1, or =2, same as rgbasm -Wtruncation
  • rgbgfx -c auto explicitly specifies to use the automatic palette generation algorithm
  • rgbgfx -c dmg is short for rgbgfx -c dmg=e4

Changed

  • Underscores in integer constants can go after the base prefix, between digits, or before the fixed-point q suffix, but cannot be multiple in a row or trailing
  • Too-large integer constants get evaluated as 0
  • rgbasm -Wlarge-constant is enabled by default instead of by -Wall
  • Reformatted and rephrased some error messages; in particular, location traces are now indented and have one file location per line

Fixed

  • Division and modulo were off by one for very large negative numbers
  • Exporting an undefined symbol is now an error
  • Line numbers after using "nested" macros were incorrect
    Macros can be "nested" by defining the inner macro within an EQUS and expanding it
  • Interpolation would fail after an empty string literal (""{example})
  • q could be repeated in fixed-point format specs (e.g. STRFMT("%qqq16f", 3.14q16))
  • Character literals would be misread after invalid "garbage" characters
  • "while expanding symbol" error backtrace was printing the symbol's contents instead of its name
  • Too-large integer constants would print a -Wlarge-constant error for every subsequent digit
  • RGBASM's Bash completion script supports -MC
  • RGBLINK supports .rel object files generated by SDCC 4.4.0 and later (XL4 instead of XL3)

Thanks to @Rangi42 and @ISSOtm for the work done for this release.

Don't miss a new rgbds release

NewReleases is sending notifications on new releases.