Releases: CE-Programming/toolchain
CE C/C++ Toolchain (v14.0)
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
sscanfandvsscanf - Wide-character and C95 additions:
wint_t,<wctype.h>,<cfenv>, numerouswmem*andwcs*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,ldexpfbehavior fixes, andscalbln(f/l). - IO and tooling fixes:
fclosecorrectness,stdio.hcleanup/rename helpers,fileiocperformance and docs,gfx_AllocSpritebug 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.
- Assembly implementations:
- String utilities:
sscanf/vsscanf.strlcat,stpncpy,memmem,memrmem,strrstr,strspn,strcspn,strpbrk,strchrnul.
- Wide-character and locale:
wint_t,<wctype.h>, C95wmem*functions,wcslen/wcsnlen.
- C/C++ headers and types:
<cfenv>;PRI24andSCN24in<inttypes.h>.<cstdarg>added; fixes for(c)stddefunder C89/C++98.- Expanded
<type_traits>. - C++
<complex>added.
- Math/FP:
- Assembly
dtof,(u)lltod,logbf; optimizedilogbf,copysignl. - Implemented
scalbln(f/l). fminf/fmaxfin assembly.
- Assembly
- Testing/tooling/infra:
- lots of tests for the above!
git-blame-ignore-revsadded.- updated some CI things
Fixed
fclosecorrectness;stdio.hcleanup andrenamealias.- Fix and optimize clipping behavior for
gfx_HorizLineandgfx_VertLine(by @calc84maniac, fixes #673). - Fixed
fontlib_GetGlyphWidth. gfx_AllocSpritereturn value bug.ti_Alloc(String/Equ)now handlesNULLfrom allocator;nonnullattributes added.ti_SetArchiveStatusprototype/declaration corrected.errno/perrorstrings updated; additionalerrnodefines for compatibility (partially by @coco875, see #640).- Replaced broken OS
strspn/strcspn/strpbrkwith in-house implementations (by @calc84maniac, fixes #646). - some float handling edge cases, and
endptrforstrto(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_bimprovements and cycle count fixes. memmoveoptimized; zero-filling incallocfaster under__TICE__.- File I/O:
fileiocoptimized. - i48/i64 routines: implemented
i48div, optimizedi48divand 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)
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
- Windows: CEdev-Windows-nightly.zip
- Linux: CEdev-Linux-nightly.tar.gz
- macOS intel: CEdev-macOS-intel-nightly.dmg
- macOS arm: CEdev-macOS-arm-nightly.dmg
CE Libraries
- Libraries Group: clibs.8xg
- Libraries Zip: clibs_separately_in_zip.zip
CE C/C++ Toolchain (v13.0)
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
CEdev/bin/ (toolchain install) folder.
Changelog
-
New features
- Added new LCDDRVCE library (to interact with the ST7789 LCD controller) by @calc84maniac
- Added
long double/float64support 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
fprintfandasprintf@ZERICO2005 - Added
boot_sprintf,boot_vsprintfet al by @calc84maniac, @ZERICO2005 - Implemented
strlcpyby @nitinseshadri - Implemented
memccpyby @calc84maniac - Implemented
stpcpy,mempcpy, andmemrchrby @ZERICO2005 - Implemented bit operations under
<ez80_builtin.h>,<bit>, and<stdbit.h>by @calc84maniac, @ZERICO2005
-
Fixes
- Fixed cursor image bugs and improved LCD cursor behavior by @nitinseshadri
- Fixed missing
__fremCRT routine by @calc84maniac - Fixed C++
absoverloads by @ZERICO2005 - Fixed conformance/behaviour of
<math.h>and<cmath>headers by @ZERICO2005 - Fixed floating-point bugs in math routines by @ZERICO2005
-
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
nanoprintfversion (with long double support) by @ZERICO2005 - Optimized
strcmp,strncmp,strlcpy,strlen,memcpy, andmemsetby @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)
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
-
New features
- Added convbin support for bundles by @mateoconlechuga
- Added
isblankfunction by @mateoconlechuga - Added
_fpclassifyfand_isnormalfby @ZERICO2005 - Added both intel+arm macOS releases by @adriweb
-
Bugfixes
- Fixed
_isinffunction by @runer112 - Fixed
__ftollABI and left shift amount by @calc84maniac - Fixed graphx line clipping issue (#353) by @mateoconlechuga
- Fixed
msd_Closemsddrvce freezing issue (#477) by @mateoconlechuga - Fixed multiple issues with
inchar/outcharandfget/fputfunctions by @mateoconlechuga - Fixed some memory leaks in convimg by @mateoconlechuga
- Fixed
-
Improvements:
- Optimized all
isxxxxxctype.h functions by @calc84maniac / @mateoconlechuga - The
incharfunction now returnsintto support EOF by @mateoconlechuga
- Optimized all
For a breakdown of changes, please see the changelog file.
CE C/C++ Toolchain (v12.0)
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
-
New features
- Added optimized 48-bit runtime routines by @calc84maniac / @fundudeone
- Added strftime implementation by @mateoconlechuga
- Added flip and rotate options for tilesets to convimg by @mateoconlechuga
- Added support for different memory allocators by @mateoconlechuga
-
Bugfixes
- Exit functions are no longer read-only by @commandblockguy
- Fixed off-by-one localtime day calculation (#469) by @mateoconlechuga
- Fixed clipped text respecting multiple transparent colors (#353) by @mateoconlechuga
- Fixed stop token in os_RunPrgm by @mateoconlechuga
- Fixed initializer_list definition by @jacobly0
- Fixed write crash in fileioc (#461) by @mateoconlechuga
- Fixed floating point multiply bug by @calc84maniac
- Fixed incorrect sign compare in __lcmpzero by @calc84maniac
- Fixed bug in fatdrvce that could corrupt the root directory when creating a file by @mateoconlechuga
- Fixed ldexpf behaviour for NaN and Inf by @ZERICO2005
- Fixed duplicated OS_TOK_STAT_F define by @adriweb
- Fixed some repository submodule issues by @myclevorname
- Fixed color quantization for unique colors in convimg by @mateoconlechuga
-
Improvements:
- Fixes/improvements for str[n]casecmp by @calc84maniac
- Fixes/improvements for GetStringInput by @calc84maniac
- Fix skipping of large USB transfers by @jacobly0
- Ensure interface is set in MSDDRVCE by @mateoconlechuga
- Optimize 24-bit and 32-bit and/or/xor operations by @calc84maniac
- Optimize malloc implementation by @calc84maniac
- CI macos improvements by @adriweb
- Greatly optimized the fatdrvce fat_SetFileBlockOffset function by @mateoconlechuga
- Enforce fatdrvce to only support uppercase filenames by @mateoconlechuga
- Added prefix and suffix options for convimg by @JonasVdS18
For a breakdown of changes, please see the changelog file.
CE C/C++ Toolchain (v11.2)
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
-
New features
- Add back dedicated timer functions by @mateoconlechuga
- Use timer 1 for clock and related functions by @mateoconlechuga
-
Bugfixes
- Fix sprintf/vsprintf/snprintf/vsprintf bounds checking by @mateoconlechuga
- Fixes for convimg (palette generation) by @mateoconlechuga
-
Improvements:
- Add framerate limiting example by @commandblockguy
- Ensure tools are compiled statically by @mateoconlechuga
- Improve macOS deployment tools by @adriweb
- Minor documentation improvements by @mateoconlechuga
For a breakdown of changes, please see the changelog file.
CE C/C++ Toolchain (11.1)
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
- Changes fatdrvce API to make it easier to use by @mateoconlechuga
- Adds
os_GetTokenInputto get tokenized input from the OS by @mateoconlechuga - Support hex string for fixed colors in convimg by @mateoconlechuga
-
Bugfixes
- Fixes
os_GetStringInputto support more menus by @mateoconlechuga - Add some pointer checks to usbdrvce examples by @adriweb
- Change
OS_MATRIX_ELEMENTto row-major by @Nikhil-42 - Fix 1-wide
gfx_Rectangle_NoClipcalls by @runer112 - Numerous fixes in both convbin and convimg by @mateoconlechuga
- Fixes
-
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.
CE C/C++ Toolchain (11.0)
The v11.0 toolchain includes support for working with USB devices! 🎉

These libraries took a long time to get to this point, and still are being worked on, so give them a try and report any issues you may encounter. Join our Discord/IRC chat in order to ask questions, or provide input on what you would like to see in terms of documentation for interfacing with these libraries.
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
- Add usbdrvce library for interfacing with the USB port by @jacobly0
- Add srldrvce library for interfacing with serial-based devices by @commandblockguy
- Add msddrvce and fatdrvce libraries for interfacing with mass storage devices by @mateoconlechuga
- Fix fileioc library
ti_ArchiveHasRoomand addti_ArchiveHasRoomVarfunction by @mateoconlechuga - Fix defines for OS_VAR_Z and OS_VAR_THETA by @commandblockguy
- Update convimg to support more conversion options by @mateoconlechuga
- Fix convimg option
max-entriesby @mateoconlechuga - Ensure spaces aren't provided in the program name by @mateoconlechuga
- Optimize utility function in fileioc by @jacobly0
- Optimize 24-bit right shift for much lower maximum runtime by @calc84maniac
- Improve macOS codesigning and nightly builds by @adriweb
- Update documentation for os_GetCSC and os_GetKey by @RealStoneSword
- Optimize __ishl for bounded execution time for larger shifts by @calc84maniac
For a breakdown of changes, please see the changelog file.
CE C/C++ Toolchain (10.2)
The v10.2 toolchain includes some new features, improvements, and bugfixes! 🎉
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
CE Libraries
Download the latest CE Libraries to fully utilize the CE C/C++ Toolchain.
These libraries add runtime support for fast graphics, file access, keypad integration, and more.
Documentation for the libraries can be found here.
Changelog
- Add
os_Evalandos_EvalVarfor direct evaluation of equations by @mateoconlechuga - Fix comparison of int32_t and int64_t by @runer112.
- Fix
printfwhen printing certain floating point values by @mateoconlechuga. - Add automated DMG code signing / notarization for nightly macOS builds by @adriweb.
- Fix printing of
int32_tby @jacobly0. - Fix
gfx_FloodFillissue on bottom on screen wrapping by @mateoconlechuga. - Updated and improved
convfontsupport with text-based fonts by @drdnar. - Change the type of CLOCKS_PER_SECOND to match clock_t by @commandblockguy.
- Deprecate
TI_REAL_TYPEandti_Ansstyle of macros by @mateoconlechuga. - Deprecate
sk_key_tandti_var_ttypedefs by @mateoconlechuga. - Compiler fix for missing register class check by @jacobly0.
- Added comments for 8XP programs in
convbinby @mateoconlechuga. - Added transparent pixel support in
convimgby @mateoconlechuga. - General documentation updates and improvements.
For a much more detailed list of changes, please see the changelog file.
CE C/C++ Toolchain (10.1)
The toolchain v10.1 is a bugfix release over v10.0, along with some new features 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
CE Libraries
Download the latest 'Standard' CE Libraries to fully utilize the CE C Toolchain.
These libraries add runtime support for fast graphics, file access, keypad integration, and more.
Documentation for the libraries can be found here.
Changelog
- Fixes invalid jump targets generated by the compiler by @jacobly0.
- Fixes
strcasecmpcompilation. - Fixes
make debugwhen LTO is enabled. - Adds
byteswap.hheader file as standard. - Added
zx0compression option for generating compressed programs viaconvbinby @mateoconlechuga. - Added
zx0compression option for images converted withconvimg. - Moves C++ includes to separate include directory to ensure no C include overlap.
- Added optional LibLoad library support via
LIBLOAD_OPTIONALmakefile option. - Implement optimized
lbswapandllbswapby @runer112 in #386 - Documentation updates and improvements.
For a much more detailed list of changes, please see the changelog file.