Skip to content

Releases: CE-Programming/toolchain

CE C/C++ Toolchain (v15.0)

02 May 18:21

Choose a tag to compare

v15.0 is a major release!

This version is now built around LLVM/Clang v19 (instead of v15) and the move from the fasmg-based assembling+linking to a GNU binutils/GAS one, for user programs, making the toolchain more maintainable, more standard, more portable, and much faster than before. On top of that foundation, this release expands the runtime and standard library and brings a large round of fixes, optimizations, and automatic tests.

Shout out to @mateoconlechuga , @Sightem , @ZERICO2005, and @calc84maniac for making all this possible!


Getting Started

Check out the CE C/C++ Toolchain Documentation.

Downloads

Windows: CEdev-Windows.zip
Linux: CEdev-Linux.tar.gz
macOS (intel): CEdev-macOS-intel.dmg
macOS (arm): CEdev-macOS-arm.dmg


Migration Notes

  • Assembly source files must now be written in GNU Assembler syntax and should use .s or .S instead of fasmg-style .asm. The documentation was updated for the new assembly model, so check it out!
  • The assembly and link stages now go through GNU as and GNU ld, so ASFLAGS and EXTRA_LDFLAGS now map to the standard binutils tooling.
  • Toolchain metadata is now .ld-based, with linker_script.ld for programs.

New Features

  • Upgraded the supported compiler stack to LLVM/Clang v19.
  • Reworked the build flow around GNU binutils/GAS and added the cedev-obj helper to inspect ELF outputs and generate CRT/libload metadata.
  • Added LZ4 decompression routines in the runtime and corresponding lz4 / lz4hc compression modes in convimg.
  • Added direct 8ek app output support across the toolchain, including .8ek output, application linker support, application descriptions, and emitted relocations (see APPLICATION makefile flag). Proper installer support for real on-calc app distribution remains outside the toolchain scope for now.
  • Expanded libc/CRT/C++ runtime support with strtok_r, strsep, _Complex floating-point helpers, cxa_guard support, improved <fenv.h> / <cfenv> conformance, and constructor/destructor priority handling.
  • Add overlap support for gfx_CopyRectangle.

Fixes

  • Fixed atexit, on_exit, and _Exit.
  • Fixed long-double softfloat ABI issues and additional floating-point corner cases.
  • Fixed fgetc / fputc null-stream handling.
  • Fixed (v)asprintf behavior for zero-length output.
  • Fixed atof(f) return values.
  • Fixed LIB_ALLOCATOR and LIB_PRINTF linking, and improved circular LIB_* dependency handling.
  • Fixed several application-build issues while bringing .8ek support online.
  • Fixed assumptions about the target environment, especially around the __TICE__ define, making the toolchain more usable beyond strictly CE-specific targets.
  • Fixed convbin invocation in the top-level libs target.
  • Fixed Windows path handling and other tooling issues across convbin and convimg.
  • Fixed fontlib_SetFont ignore line spacing parameter option to always ignore.

Improvements

  • Made the toolchain's memcpy / memmove the default implementation.
  • Added assembly include files for <errno.h> <fenv.h> and <math.h> in the toolchain sources
  • Optimized calloc, bss zeroing, strerror, perror, nanoprintf, libload, random, and many CRT integer helper routines.
  • Added or improved fallback CRT routines that avoid shadow-register or interrupt-sensitive behavior for several multiplication and division paths.
  • Optimized ZX0/ZX7 decompression paths and added LZ4-backed asset workflows.
  • Optimized graphx circle routines and text entry points.
  • Optimized fatdrvce cluster and sector lookup/traversal.
  • Optimized multiply high routines.

CE C/C++ Toolchain (v14.2)

18 Jan 00:06

Choose a tag to compare

Minor release over v14.1, and it is the last toolchain version to be based on:

  • clang v15 compiler (next will have v19)
  • fasmg assembler/linker (next will have standard binutils-based tooling)

Getting Started

Check out the CE C/C++ Toolchain Documentation.

Downloads

Windows: CEdev-Windows.zip
Linux: CEdev-Linux.tar.gz
macOS (intel): CEdev-macOS-intel.dmg
macOS (arm): CEdev-macOS-arm.dmg


Changes:

  • [convimg] fix appvar output

CE C/C++ Toolchain (v14.1)

07 Jan 15:05

Choose a tag to compare

Minor release over v14.0, and it is the last toolchain version to be based on:

  • clang v15 compiler (next will have v17)
  • fasmg assembler/linker (next will have standard binutils-based tooling)

Getting Started

Check out the CE C/C++ Toolchain Documentation.

Downloads

Windows: CEdev-Windows.zip
Linux: CEdev-Linux.tar.gz
macOS (intel): CEdev-macOS-intel.dmg
macOS (arm): CEdev-macOS-arm.dmg


Changes:

  • [libc] fix some issues with asctime
  • [libc] fix some issues with standard allocator
  • [tests] fix text_flipped example
  • Optimizations to GraphX's gfx_FillRect
  • Optimizations to libload

CE C/C++ Toolchain (v14.0)

22 Dec 08:56

Choose a tag to compare

The v14.0 toolchain adds many functions, fixes bugs, and applies optimizations here and there.
Merry Christmas! 🎄

This release is brought to you in particular thanks to @ZERICO2005 who did almost all of the work!

Highlights:

  • Massive expansion of libc functionality: strto*, atoi/atol/atoll, strlcat, memmem, memrmem, strrstr, stpncpy, strspn/strcspn/strpbrk, etc., many implemented/optimized in handwritten assembly.
  • Added sscanf and vsscanf
  • Wide-character and C95 additions: wint_t, <wctype.h>, <cfenv>, numerous wmem* and wcs* helpers.
  • C++ library updates: added <complex>, improvements to <type_traits>, fixes to C++98 headers.
  • Math and floating-point: new/optimized dtof, (u)lltod, logbf, ldexpf behavior fixes, and scalbln(f/l).
  • IO and tooling fixes: fclose correctness, stdio.h cleanup/rename helpers, fileioc performance and docs, gfx_AllocSprite bug fix.

Getting Started

Check out the CE C/C++ Toolchain Documentation.

Downloads

Windows: CEdev-Windows.zip
Linux: CEdev-Linux.tar.gz
macOS (intel): CEdev-macOS-intel.dmg
macOS (arm): CEdev-macOS-arm.dmg


Changelog

Added

  • String/number conversion:
    • Assembly implementations: strtol/strtoul, strtoll/strtoull, atoi/atol/atoll.
    • New helpers: __strtoi, __strtoui.
  • String utilities:
    • sscanf/vsscanf.
    • strlcat, stpncpy, memmem, memrmem, strrstr, strspn, strcspn, strpbrk, strchrnul.
  • Wide-character and locale:
    • wint_t, <wctype.h>, C95 wmem* functions, wcslen/wcsnlen.
  • C/C++ headers and types:
    • <cfenv>; PRI24 and SCN24 in <inttypes.h>.
    • <cstdarg> added; fixes for (c)stddef under C89/C++98.
    • Expanded <type_traits>.
    • C++ <complex> added.
  • Math/FP:
    • Assembly dtof, (u)lltod, logbf; optimized ilogbf, copysignl.
    • Implemented scalbln(f/l).
    • fminf/fmaxf in assembly.
  • Testing/tooling/infra:
    • lots of tests for the above!
    • git-blame-ignore-revs added.
    • updated some CI things

Fixed

  • fclose correctness; stdio.h cleanup and rename alias.
  • Fix and optimize clipping behavior for gfx_HorizLine and gfx_VertLine (by @calc84maniac, fixes #673).
  • Fixed fontlib_GetGlyphWidth.
  • gfx_AllocSprite return value bug.
  • ti_Alloc(String/Equ) now handles NULL from allocator; nonnull attributes added.
  • ti_SetArchiveStatus prototype/declaration corrected.
  • errno/perror strings updated; additional errno defines for compatibility (partially by @coco875, see #640).
  • Replaced broken OS strspn/strcspn/strpbrk with in-house implementations (by @calc84maniac, fixes #646).
  • some float handling edge cases, and endptr for strto(f/d/ld), fixed.
  • <fenv.h> function-macros fixed; introduced <cfenv>.
  • convimg: fix transparent-index and palette-offset (by @mateoconlechuga)
  • Misc. docs fixes

Performance and Optimizations

  • Multiplication helpers: inlined/optimized __llmul_b, __llmul_add_b_overflow; llmulu_b improvements and cycle count fixes.
  • memmove optimized; zero-filling in calloc faster under __TICE__.
  • File I/O: fileioc optimized.
  • i48/i64 routines: implemented i48div, optimized i48div and i64 bitwise ops; added cycle counts and formatting for i48 CRT routines.
  • ZX0 decompressor optimized using eZ80 instructions.
  • Misc. size opts

The next release should also be major, as @mateoconlechuga is working on some standard-ification of the toolchain tools especially linking-wise, and @Sightem on fixing newer LLVM compiler rebase efforts (v15 -> v17). Stay tuned!

CE C/C++ Toolchain (nightly)

13 Aug 22:41
f2b9c52

Choose a tag to compare

Pre-release

Important

This is where all the latest development happens! (build is from the master branch)
Use only if you want a bleeding-edge toolchain (but mostly stable) or encounter any bugs as they might be squashed here.

This release is automatically updated.
Documentation is versioned per release; you can find the master branch docs here. Use the sidebar's bottom selector to switch versions.

Downloads

CE Libraries

CE C/C++ Toolchain (v13.0)

04 Sep 03:47

Choose a tag to compare

The v13.0 toolchain is quite a big release: it includes lots of new features, fixes, improvements and optimizations! 🎉

We would like to thank @ZERICO2005 in particular who's worked on it a lot for a few months!

Getting Started

Check out the CE C/C++ Toolchain Documentation.

Downloads

Windows: CEdev-Windows.zip
Linux: CEdev-Linux.tar.gz
macOS (intel): CEdev-macOS-intel.dmg
macOS (arm): CEdev-macOS-arm.dmg

⚠️ For macOS: we fixed a compiler-launch issue you may encounter in this toolchain release. You can download the fixed binaries here and replace the files in your CEdev/bin/ (toolchain install) folder.

Changelog

  • New features

    • Added new LCDDRVCE library (to interact with the ST7789 LCD controller) by @calc84maniac
    • Added long double/float64 support and routines by @ZERICO2005
    • Added CRT routines for 32/24/16bit * 8bit unsigned multiplication by @ZERICO2005
    • Added clipped gfx_RotatedScaled(Transparent)Sprite by @ZERICO2005
    • Added missing <c*> C++ headers @ZERICO2005
    • Implemented some C++ headers: <algorithm>, <concepts>, <memory>, <numbers> <source_location>, <version> by @ZERICO2005
    • Implemented some C headers: <complex.h>,<stdckdint.h>, <tgmath.h> by @ZERICO2005
    • Added fprintf and asprintf @ZERICO2005
    • Added boot_sprintf, boot_vsprintf et al by @calc84maniac, @ZERICO2005
    • Implemented strlcpy by @nitinseshadri
    • Implemented memccpy by @calc84maniac
    • Implemented stpcpy, mempcpy, and memrchr by @ZERICO2005
    • Implemented bit operations under <ez80_builtin.h>, <bit>, and <stdbit.h> by @calc84maniac, @ZERICO2005
  • Fixes

  • Improvements

    • Updated (rebased) clang compiler from 15.0.0 to 15.0.7 (producing overall better code) by @adriweb
    • Various compiler optimizations and misc. improvements by @calc84maniac
    • Updated convimg submodule (adds multithreading support for increased speed) by @mateoconlechuga
    • Expanded C++ <type_traits> by @ZERICO2005
    • Implemented compile time evaluation of floating-point classification routines by @ZERICO2005
    • Updated nanoprintf version (with long double support) by @ZERICO2005
    • Optimized strcmp, strncmp, strlcpy, strlen, memcpy, and memset by @ZERICO2005, @calc84maniac
    • Optimized frexpf, ilogbf, ldexpf, modff, truncf, and others by @ZERICO2005, @calc84maniac
    • Improved precision and accuracy of log1pf @parisseb
    • Optimized sinf/cosf, and ensured that the result will be [-1,+1] by @ZERICO2005
    • Improved precision and accuracy of erf, atan2, acosh, and others by @ZERICO2005
    • Optimized GraphX clipping and added SMC for parameters by @calc84maniac
    • Optimized various GraphX routines by @ZERICO2005
    • Added __TICE__ define by @ZERICO2005

CE C/C++ Toolchain (v12.1)

26 Oct 19:10

Choose a tag to compare

The v12.1 toolchain includes some new features, bugfixes, and improvements! 🎉
Thanks to all the contributors!

This is primarily a bugfix release over 12.0, as well as supplying both native intel&ARM binaries for macOS!

Getting Started

Check out the CE C/C++ Toolchain Documentation.

Downloads

Windows: CEdev-Windows.zip
Linux: CEdev-Linux.tar.gz
macOS (intel): CEdev-macOS-intel.dmg
macOS (arm): CEdev-macOS-arm.dmg

Changelog

For a breakdown of changes, please see the changelog file.

CE C/C++ Toolchain (v12.0)

06 Oct 18:00

Choose a tag to compare

The v12.0 toolchain includes some new features, bugfixes, and improvements! 🎉
Thanks to all the contributors!

Most notable is support for 48-bit routines using int48_t and uint48_t, first proposed by @fundudeone and heavily optimized and improved by @calc84maniac! These types can be used in place of int64_t and uint64_t for better performance and size.

Getting Started

Check out the CE C/C++ Toolchain Documentation.

Downloads

Windows: CEdev-Windows.zip
Linux: CEdev-Linux.tar.gz
macOS: CEdev-macOS.dmg

Changelog

For a breakdown of changes, please see the changelog file.

CE C/C++ Toolchain (v11.2)

24 Aug 15:43

Choose a tag to compare

The v11.2 toolchain includes some new features, bugfixes, and improvements! 🎉
Thanks to all the contributors!

Getting Started

Check out the CE C/C++ Toolchain Documentation.

Downloads

Windows: CEdev-Windows.zip
Linux: CEdev-Linux.tar.gz
macOS: CEdev-macOS.dmg

Changelog

For a breakdown of changes, please see the changelog file.

CE C/C++ Toolchain (11.1)

20 May 01:45

Choose a tag to compare

The v11.1 toolchain includes some new features, bugfixes, and improvements! 🎉
Thanks to all the contributors!

Getting Started

Check out the CE C/C++ Toolchain Documentation.

Downloads

Windows: CEdev-Windows.zip
Linux: CEdev-Linux.tar.gz
macOS: CEdev-macOS.dmg

Changelog

  • New features

  • Bugfixes

  • Improvements:

    • Add comments for symbols to grahpx source code by @TIny-Hacker
    • Improve error for long variable names by @mateoconlechuga
    • Add VS Code IDE documentation by @commandblockguy
    • Add names to some anonymous structures by @adriweb
    • Update fasmg-ez80 support by @jacobly0
    • Add more info about system values by @adriweb
    • Allow for overriding of source file extensions by @mateoconlechuga
    • Default example binaries to archive by @LogicalJoe

For a breakdown of changes, please see the changelog file.