Releases: CE-Programming/toolchain
CE C/C++ Toolchain (v15.0)
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.
CE C/C++ Toolchain (v14.2)
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)
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)
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.