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
.sor.Sinstead 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
asand GNUld, soASFLAGSandEXTRA_LDFLAGSnow map to the standard binutils tooling. - Toolchain metadata is now
.ld-based, withlinker_script.ldfor programs.
New Features
- Upgraded the supported compiler stack to LLVM/Clang v19.
- Reworked the build flow around GNU binutils/GAS and added the
cedev-objhelper to inspect ELF outputs and generate CRT/libload metadata. - Added LZ4 decompression routines in the runtime and corresponding
lz4/lz4hccompression modes inconvimg. - Added direct 8ek app output support across the toolchain, including
.8ekoutput, application linker support, application descriptions, and emitted relocations (seeAPPLICATIONmakefile 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,_Complexfloating-point helpers,cxa_guardsupport, 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/fputcnull-stream handling. - Fixed
(v)asprintfbehavior for zero-length output. - Fixed
atof(f)return values. - Fixed
LIB_ALLOCATORandLIB_PRINTFlinking, and improved circularLIB_*dependency handling. - Fixed several application-build issues while bringing
.8eksupport online. - Fixed assumptions about the target environment, especially around the
__TICE__define, making the toolchain more usable beyond strictly CE-specific targets. - Fixed
convbininvocation in the top-levellibstarget. - Fixed Windows path handling and other tooling issues across
convbinandconvimg. - Fixed fontlib_SetFont ignore line spacing parameter option to always ignore.
Improvements
- Made the toolchain's
memcpy/memmovethe default implementation. - Added assembly include files for <errno.h> <fenv.h> and <math.h> in the toolchain sources
- Optimized
calloc,bsszeroing,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.