Skip to content

SDK v12.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 13 Feb 03:54
· 139 commits to main since this release
3729744

Breaking changes

  • llvm-mos/llvm-mos@9a4523b -- Make all types prefer int to short
    • This follows AVR, and it make int promotions work more like expected.
      • size_t is now unsigned int, was unsigned short
      • ptrdiff_t is now signed int, was signed short
      • intptr_t is now signed int, was signed short
      • char16_t is now unsigned int, was unsigned short
      • wint_t is now signed long, was unsigned long (now accomodates a -1
        WEOF)
  • 1475f49 -- Targets should now implement the default SIGABRT handler __sigabrt() instead of abort(). abort() now invokes raise() as required by the standard.
  • ea8aea8 - Break character conversion out of __putchar into __char_conv
    • __putchar now simply outputs to the target equivalent of file descriptor
      zero; it no longer converts to the target character set. Accordingly, __putchar now replaces __chrout on most targets; __chrout has been removed. Character conversion functionality has been moved to a new __char_conv.
  • 72e3379 -- Translate to shifted PETSCII at runtime; shift on startup if translation used.
    • This is likely to be a bit controversal; see the commit message for a detailed rationale. The jist is that the language of the standard essentially requires that outputting characters in our execution character set (ASCII) to the screen display their normal representation, as far as is possible. For the C64, that means shifting the character set. Accordingly, we do this in a constructor tied to the inclusion of __char_conv.
  • 597971d -- Translate to ATASCII control codes
  • Similar to the above, but probably less controversal. ASCII '\t', '\a', and '\b' are now translated at runtime to their ATASCII equivalents.
  • #300 - Normalize Atari cartridge target naming - @cwedgwood
    • atari5200-super is now atari5200-supercart (Super Cart cartridge)
    • atari8-stdcart is now atari8-cart-std (Standard cartridge)
    • atari8-xegs is now atari8-cart-xegs (XEGS catridge)
    • atari-mega is now atari8-cart-megacart (Megacart cartridge)

New features

  • llvm-mos/llvm-mos#442 - Lower fptoui.sat and fptosi.sat saturating float to integer intrinsics
    • Lowers them to fmax and fmin, which aren't yet implemented. Still, the compiler no longer crashes.
  • 8d67b8d -- Add a stub for getenv
  • 81161eb -- Add a stub for 'system'
  • 1475f49 -- Add a minimal <signal.h>
  • c0f1c7a -- Add qsort
  • 2f99463 -- Add bsearch
  • 543b5a9 -- Finish <string.h> (add strcspn and strstr).
  • #294 - Add all remaining RP6502 OS calls -- @rumbledethumps

Bug fixes

  • llvm-mos/llvm-mos@981c2b6 -- Correct handling of aliases to globals allocated to zero page
  • llvm-mos/llvm-mos#422 -- Replace CMPTerm then BR with a new family of CmpBr pseudo-instructions
    • This fixes a longstanding ugly fragility in the backend, but it required rewriting quite a few routines.
  • 90f616f -- Fix xregn varargs UB in RP6502 target
  • c49a529 -- Remove incorrectly coped .ifdef __ATARIXL__ from atari.inc
  • 3e94be4 -- Nonstandard strtox were prefixed with an underscore
  • 543b5a9 -- strrev in <string.h> has been renamed to _strrev to match Microsoft's current recommendations, and since it's not a standard function.
  • #296 -- Don't allow inline of Atari __putchar, since it uses RTS trick - @cwedgwood
  • #297 -- Use HATABS for Atari __putchar - @cwedgwood
  • #305 -- Add C++ extern "C" to <rp6502.h> - @rumbledethumps
  • #295 -- Remove va_start warning from RP6502 xregn - @rumbledethumps