Skip to content

V2.4

Choose a tag to compare

@vanvught vanvught released this 24 Jul 07:15
· 29 commits to main since this release

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.