Skip to content

SDK v10.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 17 Jan 00:05
· 183 commits to main since this release

Breaking changes

  • llvm-mos/llvm-mos@2550bb7 - Make (u)int16_t (unsigned) int, not (unsigned) short.
    • This has a very fine distinction with little to no runtime effect, but it now follows AVR, and it makes the e.g. PRI16d format specifier just d rather than hd. Code is very unlikely to break, but it still seems possible.

New features

  • Implemented the all max-width functions in <inttypes.h> (except the wide character versions).
  • a1a8d22 - Implement the strtox family of instructions using PDCLib.
  • 546bf8b - Define MB_CUR_MAX from <stdlib.h> in line with other clang targets.
  • eaf7bd5 - Implement atox family of functions using PDCLib.
  • 08494f6 - Implement rand and srand using a 16-bit xorshift.
    • The implementation is a tradeoff; it's relatively small and fast, and its statistical properties are good for each bit of the output, but it has a short period of 65536. The standard puts no requirements on period, and this is the smallest PRNG I could find with good quality output within its period. We could use a 16-bit add-only LCG, which may be smaller but has worse behavior, or a 32-bit xorshift, which would provide a non-permutation in the low 16 bits returned by rand() and a POSIX compliant 2^32 period, but it would be considerably slower and larger.

Bug fixes

  • llvm-mos/llvm-mos@10e7734 - Define __STDC_HOSTED__ to 0; we're not yet a hosted implementation.
  • 2f0c6cd - Define __STDC_NO_COMPLEX__ to 1, since <complex.h> is unavailable.
  • 885708d - Define __STDC_NO_ATOMICS__ to 1, since atomics are not yet supported.

Miscellaneous