Releases: alexveden/cex
Releases · alexveden/cex
v0.17.0
0.17.0
2025-10-15
Changes / improvements
- Added WASM support via emscripten compiler
- Added -
#define cex$enable_minimalallowing to use only bare minimum on CEX functionality, and selectively re-enable some of the parts. This opens opportunities for CEX embedded portability: freestanding example.
- Removed: (breaking)
io.fileno- removed, it's non-standard and platform specific function - Added
cex$is_freestandingmacro
Fixes
- Fixed memory alignment for HeapAllocator bug when system malloc() returns non 16-byte aligned ptr
v0.16.0
0.16.0
2025-09-09
Note
This release contains many breaking changes, however I've probably polished core namespaces enough and expect them to be more stable in the future.
Changes / improvements
- refactor: (breaking) renamed test$NOOPT to test$noopt
- refactor: (breaking) sbuf - removed redundant code grow() and update_len(), shrink() refactored
- refactor: (breaking) - removed sbuf.create_temp() - just use sbuf.create(128, tmem$)
- refactor: (breaking) refactored sbuf - made exc checking optional + added sbuf.validate() + sizes now are usize (size_t)
- example: added CEX pre-compilation example
- refactor: (breaking) io.fread/io.fwrite - changed API for convenience
- refactor: (breaking) C23 compatible unreachable() + C23 tests passed
- refactor: (breaking) moved json namespace to lib/json/ - currently it's never used in CEX core
- refactor: _Static_asserts are renamed to static_asserts for C23 compatibility
- refactor: (breaking) renamed
varintoautofor C23 compatibility - refactor: (breaking) retired arr$slice functionality
- refactor: (breaking) made all macros for code generation with cg$ prefix
- doc: added ./cex build-docs command + full documentation in a single HTML
- feat: ./cex help -o file.txt foo$ - export full output to file
- feat: ./cex help foo$ - added __foo$ document placeholder if there is no
foonamespace struct - ci: windows 2019 retired
Fixes
- fix: cexy process fixed multiline docstrings
- fix: dup() function case on windows in test$ running module
- fix: sbuf added more NULL resilience checks
- fix: CexParser - broken CEX_NAMESPACE handling after refactoring + incorrect skipping of private entities with
_ - fix: ./cex help --filter - always using default
- fix: ./cex stats still use cex.h for statistics outside cex.h project
- fix: ./cex stats - cex.h still included in LOC stats for side projects
latest
v0.15.0
0.14.0
2025-06-05
Changes / improvements
- Added fuzzer support (LibFuzzer + AFL++)
- Added
./cex fuzz run ...command - uassert() now emits __builtin_trap() instead of abort() for better call stack
- Added fuzz tests for core elements of CEX
./cex test run test/file.c- test always rebuilt when called as single file
Fixes
- CexParser - various fuzzer driven fixes
- str.match - various fuzzer driven fixes
- json - various fuzzer driven fixes
v0.13.0
2025-05-16
Changes / improvements
- (breaking)
cexy.src_changed()- refactored with array length argument - (breaking)
os.cmd.create()- refactored arguments supporting pointer/length instead of arr$(char*) - Examples: new
Building Lua + Lua Module in CEXexample - Examples: new
Building SQLite Program From Sourceexample e$except_trueadded handler when OK state is 0, and other is error- (breaking)
os.fm.remove_tree()- attempt for removing non existing path will lead toError.not_found cexy app create- refactored structure of new app (added argparse)cexy.app.find_app_target_src- refactored arguments- Examples: added building/linking with system libs
cexy- Added support of vcpkg libs- Examples: added building/linking with vcpkg libs
- refactor!: removed all const qualifiers from the cex project
- feat: added __builtin_unreachable() after assert/panic
Fixes
os.match- fixed[A-Z+]*pattern invalid match at the beginning./cex help- now includes./cex.hif its a symlink- fix(cexy): fix cexy.src_include_changed() was not searching relative to src file
- fix(cexy): pkgconf fixed include dirs flags before linker
- fix: mingw warning visibility attribute not supported in this configuration
- fix(cexy): compile flags failed if pkgconf failed (now just prints an error)
- fix(cexy): help skipping build/ and tests/ dirs entirely
- fix(cexy): help incorrectly handled forward-declared types
- fix(cexy): ./cex process all - ignores build/ and tests/ now
v0.12.0
Changes / improvements
- Code base cleanup
- refactor(cexy)!: removed
cexy$cc_args_release/debug- now it'scexy$cc_args(controlled by cex -DSOME_CONF config) - Added Valgrind to CI (extra memory leak check, uninitialized variables check, file handle leaks checks) + available on non x86 architectures
os.path.abs()- getting absolute path from any other pathcex help- added code syntax colors in terminaljson- added new JSON parser/builder into cex.h corestr$convert()- typesafe generic macro for converting char*/str_s to any basic numeric typecex stats- added new command for calculating project lines of code + quality statscexy$pkgconf_libs- new universal way of using dependencies in CEXY build system (tests and apps). Uses system (or custom)pkgconfcommand for resolving library settings and compiler args.cexy$pkgconf_libs- required libs now checked incex config, user will receive diagnostic error if anything is missing./cex- addedcompile_flags.txtgeneration for clangd LSP/tooling (if that file exists)./cex help <cex_namspace>- added macro constants + alphabetical sortingos.timer()- implemented high-performance timer (cross-platform)
Fixes
- Fixed memleaks after program destruction - hanging tmem$ last page (Valgrind issue)
- Fixed memleaks for test runner - list of tests were not cleaned up (Valgrind issue)
AllocatorArena- assertion in scope exit with some nested scopes patterncex test create- new tests now include#define CEX_TEST+ compiler arg removed
v0.11.0
0.11.0 Change list
2025-05-03
Changes / improvements
os.cmd.exists()- added function for checking if command exists in PATHos.fs.copy_tree(src_dir, dst_dir)- added recursive copy of files between folderscexy.utils.git_lib_fetch()- fetching/updating arbitrary Git lib (e.g. single header lib) from gitcexy.utils.git_hash()- getting current git hash of the current repocex- addedcex libfetchcommand- Added Alpine Linux support (multiarch + libc musl) + CI
- Added tests for multiple architectures (including big endian): x86_64 (native), x86 (native), aarch64, armhf, armv7, loongarch64, ppc64le, riscv64, and s390x
cexy.utils.pkgconf() / cexy$pkgconf- system dependency resolving utility function- Added automatic timestamp generation in cex version when bundling
- Removed redundant
cexy$vars, renamedcexy$cc_args_test
Fixes
str.match()- fixedstr.match(s, "*(abc|def)")pattern handlingstr.match()- fixedstr.slice.match(s, "[a-Z]")when using on slice viewcex.h- bare project fixed windows specific lock/initialization issue when building new proj
0.10.0 Change list
2025-04-27
Changes / improvements
- Added 32-bit support + CI tests
- Added MacOS support + CI tests
- Added Windows support + CI tests
os.get_last_error()- unified Win32/POSIX string-line error (CEX Exception format)- CEX
sprintffamily added more resilient error handling for%s/%S io.file.size()- reimplemented, more cross-platform compatibilityhm$- implementedchar*key copy mode + arena mode- Implemented
cexybuild system (self rebuild, test runner, code process, help) os.platform...- new namespace added for platform specific actions (OS Type, Arch Type)argparse- refactored core, added support for commands- Memory management refactored - AllocatorArena / AllocatorHeap added,
mem$scope()added os.fs...- OS file system capabilities full refactoringos.cmd...- OS commands/subprocess running capabilities (subprocess launch, getting output of process, in-screen interactive command launching)CexParser- implemented C code parser (code gen, help retrieval, build system helper)cg$- code generation tools addedstr.slice...- CEX string refactoring (added str_s slice, view only strings with length)str.match()- simple but powerful pattern matching for strings (used in os/file wildcards also).os.fs.find()- recursive file search with pattern matchingio- fully refactored io namespace (more compatible with C now + added helpers)- CEX test engine - fully refactored test suite/generation/runner
- Refactored dynamic arrays / hashmaps - type safe + generic, based on STB DS + Allocators
Fixes
str.copy()- reimplemented in safer (simpler BSD style)strlcpy()AllocatorHeap- fixed aligned realloc