Conversation
- Deleted multiple sequential interface headers to streamline the codebase and eliminate unused functionality. - Updated `cpp_core.h` to remove references to the deleted headers, enhancing organization and maintainability. These changes are part of ongoing refactoring efforts to improve header management and code clarity.
- Introduced `CMakePresets.json` to define build configurations for GCC, Clang, and MSVC compilers. - Added toolchain files for GCC (`gcc-toolchain.cmake`), Clang (`clang-toolchain.cmake`), and MSVC (`msvc-toolchain.cmake`) to specify compiler settings and flags. - Each toolchain file sets the C++ standard to C++23 and includes appropriate compiler flags for different build types (Debug and Release). These additions enhance the build system's flexibility and support for multiple compilers, facilitating easier project setup and configuration.
- Increased minimum CMake version requirement to 3.30. - Enabled export of compile commands and added support for C++23 modules in CMake configuration. - Introduced a new static library `hello_module` with a simple module implementation and a corresponding test executable. - Updated `.gitignore` to include `compile_commands.json` for better build management. These changes enhance the build system's capabilities and introduce modular programming support.
- Deleted the line setting CMAKE_SYSTEM_PROCESSOR in the GCC, Clang, and MSVC toolchain files to simplify configuration. - This change streamlines the toolchain setup without affecting the build process. These modifications enhance the clarity and maintainability of the CMake configuration.
There was a problem hiding this comment.
Pull Request Overview
This PR performs a major refactoring that removes the sequential dispatch system and introduces C++23 module support with new build infrastructure.
- Removes entire sequential dispatch queue infrastructure (9 internal headers, 14 interface headers)
- Adds C++23 module test with
hellomodule and example usage - Introduces compiler-specific toolchain files (GCC, Clang, MSVC) and CMake presets for multi-compiler builds
- Updates CMake minimum version from 3.14 to 3.30 to support C++23 modules
Reviewed Changes
Copilot reviewed 32 out of 33 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| test/main.cpp | New test file demonstrating C++23 module import syntax |
| test/hello.cxx | New C++23 module implementation with simple add function |
| include/cpp_core/internal/sequential/*.h | Removed internal sequential dispatch implementation files |
| include/cpp_core/interface/sequential/*.h | Removed public sequential API wrapper functions |
| include/cpp_core/interface/sequential.h | Removed aggregated sequential interface header |
| include/cpp_core.h | Removed include of deleted sequential.h header |
| cmake/msvc-toolchain.cmake | New MSVC toolchain with C++23 configuration |
| cmake/gcc-toolchain.cmake | New GCC toolchain with C++23 configuration |
| cmake/clang-toolchain.cmake | New Clang toolchain with C++23 configuration |
| CMakePresets.json | New presets file defining build configurations for all three compilers |
| CMakeLists.txt | Updated minimum version to 3.30, added module test targets and compile commands export |
| .gitignore | Added compile_commands.json to ignored files |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Mqxx
left a comment
There was a problem hiding this comment.
Since we are using C++ Modules, consider renaming the include folder in project root to src.
Mqxx
left a comment
There was a problem hiding this comment.
Also consider renaming serialGetPortsInfo into serialGetDevices
the C-API headers are still normal headers, so no modules in this repo |
will use |
…hain files - Introduced a new script `get_version_from_git.cmake` to automatically determine versioning from Git tags, replacing manual version settings. - Updated `CMakeLists.txt` to utilize the new versioning system and removed redundant version definitions. - Simplified toolchain files for GCC, Clang, and MSVC by removing unnecessary settings and ensuring consistent C++ standard enforcement. - Updated `cpp_core_config.cmake.in` to set version variables for parent projects. These changes improve the maintainability and clarity of the CMake configuration while ensuring accurate versioning based on Git history.
- Updated the description to reflect the library's purpose as a header-only API definition for cross-platform serial communication. - Enhanced the features section to highlight key functionalities, including C++23 compatibility and centralized version information. - Improved instructions for obtaining platform-specific bindings and clarified versioning details. - Removed the outdated overview documentation file to streamline the repository. These changes aim to provide clearer guidance and improve the overall presentation of the library's capabilities.
44a351b to
e34925f
Compare
- Introduced a new header file `serial_list_ports.h` to provide a function for enumerating available serial ports on the system. - Updated `serial.h` to include the new `serial_list_ports.h` header, enhancing the library's capabilities for serial communication. These changes expand the API to facilitate easier access to serial port information.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 37 out of 38 changed files in this pull request and generated 5 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Mqx <[email protected]>
No description provided.