Repository navigation
V2.4
This release focuses on modernizing the codebase while preparing it for future development with GCC 15, Link Time Optimization (LTO), and C++23. The main themes are improved build infrastructure, centralized debug configuration, cleaner C++ code, enhanced type safety, and numerous maintenance and formatting improvements across the project.
Highlights
- Added full Link Time Optimization (LTO) support across firmware and libraries.
- Centralized debug configuration with compile-time control and per-module logging.
- Improved build system and linker configuration.
- Continued migration toward modern C++ coding practices.
- Reduced compiler warnings and improved type safety.
- General code cleanup, formatting consistency, and maintainability improvements.
Build System
- Added shared linker configuration.
- Enabled LTO for firmware and libraries.
- Updated toolchain to use gcc, gcc-ar, gcc-ranlib, and gcc-nm.
- Improved linker scripts and binary generation.
- Excluded RAM-only sections from generated binary images.
Debug
- Introduced centralized debug configuration.
- Replaced scattered NDEBUG handling with compile-time configuration.
- Added per-module debug headers and logging.
- Migrated debug location reporting to std::source_location.
- Improved debug dump and bit-print utilities.
- Renamed stack debug configuration to CONFIG_DEBUG_STACK.
Common / Runtime
- Added printf format attributes.
- Added strnlen.
- Moved optimized memset implementation into its own translation unit.
- Removed obsolete custom new header.
- Updated project contact information.
- General header cleanup and modernization.
Network
- Improved type safety by replacing C-style casts with static_cast.
- Replaced NULL checks with nullptr.
- Fixed numerous printf format warnings.
- Cleaned up IGMP, TCP, UDP and IP utility implementations.
- Minor NTP client formatting improvements.
Flash
- Improved flash programming implementation consistency.
- Fixed flash size logging format specifiers.
- Initialized DMA configuration structures before use.
- Cleaned up GD32 flash code implementation and internal state naming.
Storage
- Cleaned up StoreDevice implementations.
- Reduced unnecessary debug output.
- Improved formatting consistency.
Status LED
- Added API to query the status LED lock state.
- Modernized implementation and initialization.
Software Timers
- Improved API naming and readability.
- Internal cleanup without functional changes.
General
- Improved const correctness.
- Added [[nodiscard]] where appropriate.
- Improved formatting consistency throughout the codebase.
- Applied numerous small refactorings and maintenance improvements with no functional changes.