From 9664798c3db94643c3bbfd78962cae3a9c7f58a2 Mon Sep 17 00:00:00 2001 From: Abdessattar Sassi <457645+abdes@users.noreply.github.com> Date: Sun, 6 Mar 2022 14:45:41 +0400 Subject: [PATCH] chore: update changelog and release 2.0.0 --- CHANGELOG.md | 137 +++++++++++++++++++++++++++++++++++++++++++++++++ CMakeLists.txt | 4 +- common | 2 +- 3 files changed, 140 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 825c32f..2835abe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1,138 @@ # Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## 2.0.0 (2022-03-06) + +This is a major refactoring of the `asap` family of projects and as such +introduces several breaking changes. The following detailed change log is not +entirely relevant as many of the modules have been extracted in the final stage +out of `common` into their own projects. The history is here for continuity from +the old `asap` projects. + +### ⚠ BREAKING CHANGES + +* The state machine library is now in its own separate module to keep the common +module as small as possible. The api can be used via instead +of previously <. +* Using exceptions to report completion or events not being consumed results +in significant overhead on the FSM due to exception handling and a loss of +performance. Changes were made to the API and implementation to make state +`OnLeave` and `OnEnter` return a Status and to let the action `Execute` +method also return a status. +* The logging `Registry` is now implemented as a singleton class and +therefore it needs to be accessed via its instance() method. All other +methods in its interface are not static anymore. +* Prefix the options with `ASAP_` to make them unique and avoid clashing +with other projects that may use the generic `OPTION_xxx` names. +Additionally, the build presets now always activate building of tests and +examples except in release builds where examples are not built. +* This option is no longer relevant as we believe that 3rd party dependencies +should be installed using their own projects. In the wrostcase scenario, +they should be explicitly added as install instructions to the project in a +visible and documented way. +* The project requires C++17 as it is widely available in compilers now. +Logical traits such as conjunction, disjunction and negation are available +from the standard include. +* major redesign of the cmake build system, many macros and +functions have been changed and the build system overall has been +simplified. +Refer to the documentation for more information. +* `catch2` has been replaced by Google Test/Mock, which +provide more features, less compiler earnings and are more popular. +Catch2 or any other framework can still be easily added and used to an +`asap` based project. +* `hedley` was removed from `common` and was replaced by a much +lighter new file `compilers.h`. +* `nowide` was removed from `common` and will be replaced by +the standalone boost nowide library when needed. +* `filesystem` footprint is too large to be included by default in `asap` +starter project. It will be provided separately and a mechanism to easily add it into an +`asap` based project will be implemented in a future update. +* logging is in a new module: asap::logging. + +Many modules would want to only get the basic common functionality +without pulling extra 3rd party dependencies such as spdlog, fmt etc... +For this reason, the logging functionality is taken out of the common +submodule and moved to logging submodule. +* logging is in a new module: asap::logging. + +Many modules would want to only get the basic common functionality +without pulling extra 3rd party dependencies such as spdlog, fmt etc... +For this reason, the logging functionality is taken out of the common +submodule and moved to logging submodule. + +### Features + +* add gsl library ([9b982f1](http://github.com/abdes/asap/commit/9b982f17aeb9362619cf871ed9bbedb65344ab43)) +* add support for .editorconfig ([5a7a689](http://github.com/abdes/asap/commit/5a7a6892f7c05798e79c6f81e9eef3b0a6256ca1)) +* add support for CMake presets ([bdcfa4d](http://github.com/abdes/asap/commit/bdcfa4d6a0cfffe0026af39b635c6dcd4e61e3a8)) +* add support for Conventional Commits and auto Changelog ([7b827fa](http://github.com/abdes/asap/commit/7b827fab2ae28ba903c69ab5acdf249cb3e55d85)) +* contract checking api (assertions) ([c691446](http://github.com/abdes/asap/commit/c691446fd18242840e62529f1aabdaf8480b7ec6)) +* doxygen snippets from `test` or `examples` source directories ([85b8000](http://github.com/abdes/asap/commit/85b8000e91dd105c0f90a62b1824957b68ce9c03)) +* lightweight mixin support library ([84b4ae8](http://github.com/abdes/asap/commit/84b4ae85033ec105ab5ce8cccbb9d5991c39146e)) +* msvc build on windows ([d7eccb8](http://github.com/abdes/asap/commit/d7eccb8b2bb69353b984080746294b3efa88785d)) +* overload pattern for variant visitation on the fly ([53ea7cc](http://github.com/abdes/asap/commit/53ea7cc74e89913cbf59eda2e30bd36c356e6acd)) +* provide a way to distinguish between debug and release builds via preprocessor define ([bbd84a2](http://github.com/abdes/asap/commit/bbd84a2c32c9833f79b442e202b647f93946b105)) +* replace cmake compiler detection with hedley ([8bf0a3d](http://github.com/abdes/asap/commit/8bf0a3d53fcdba65497491cbd63c1dcffcba8467)) +* State Machine implementation library ([55278fa](http://github.com/abdes/asap/commit/55278fab0559512679a4c9ecf1f5dd04e192e1b4)) +* text wrapping module ([8cece41](http://github.com/abdes/asap/commit/8cece41e3c63c9ccae9888cb694cb821f43dfdca)) + + +### Bug Fixes + +* "-Wreserved-identifier" only if not APPLE ([05fac12](http://github.com/abdes/asap/commit/05fac12d37978c6651c299e6ad1cc64dfed88fa0)) +* adjust doc target names to work in renamed projects ([60acc65](http://github.com/abdes/asap/commit/60acc65fcc8d529a69f3617d792376be3e54b6ce)) +* always use top level build dir for output ([1b01db2](http://github.com/abdes/asap/commit/1b01db2402bc52944646bcde3cf525315a4e0e1b)) +* cmake option was placed in the wrong command ([b634b15](http://github.com/abdes/asap/commit/b634b153db975a8bc8715e82f7fafdc214504cfa)) +* cmake require c++ 14 in all modules ([f05c9a6](http://github.com/abdes/asap/commit/f05c9a63e97dbcbef3e7d8188a04e719e2247d62)) +* configure compilation database for clangd when using cmake presets ([7493c24](http://github.com/abdes/asap/commit/7493c240ce97396040d9a7bd09cb32ed56ea2340)) +* contract api docs now in contract module ([d3366bd](http://github.com/abdes/asap/commit/d3366bd846d66486b2fcf98f36fd741452be8516)) +* **doc:** wrong chapter title in logging module page ([5966912](http://github.com/abdes/asap/commit/59669122d3ea8565878667e6f09b124bc7da1b99)) +* doxygen and sphinx target conflict with modules ([02375ff](http://github.com/abdes/asap/commit/02375ff4a33e34a8e0cb9307ef4eb6de3271e945)) +* doxygen doc generation uses wrong module info ([8833474](http://github.com/abdes/asap/commit/8833474402c523a3f2eda10b8927da46989f4bba)) +* export members instead of whole class to accomodate MSVC STL in DLL restrictions ([eb504b8](http://github.com/abdes/asap/commit/eb504b85f6ac5dafd84002c25655e7ba97e57980)) +* generate doc only if project is master ([82190fa](http://github.com/abdes/asap/commit/82190fa6562f5e51dbbab660bcab8dc265e99a0b)) +* hardcode `asap` in places where we should not use the custom project name ([7f81298](http://github.com/abdes/asap/commit/7f81298b31e5a235bf4bce4778525a2e4594befa)) +* include CTest module ([4cffc36](http://github.com/abdes/asap/commit/4cffc3680e217a8ede659fd030306ea2243b013c)) +* keep `src` even when empty for doxygen not to complain ([be28f42](http://github.com/abdes/asap/commit/be28f429eddde8f258a08e84722e4fcaf975b384)) +* make ctest work again ([0f3cac0](http://github.com/abdes/asap/commit/0f3cac0d85e5c38bf076aa663bb4decd3430f319)) +* make doxygen targets sub-project friendly ([546fe73](http://github.com/abdes/asap/commit/546fe73ded53721dddbac311e9db41e4146b8ad2)) +* make gtest work again ([3ce658c](http://github.com/abdes/asap/commit/3ce658c5f1eb216a3286717e7f80827b96ff3b49)) +* make sphinx targets sub-project friendly ([024cc77](http://github.com/abdes/asap/commit/024cc77d17ed134ed5f3f4eea32226b07b05aad6)) +* match Clang and Apple Clang for compiler options ([7e1e123](http://github.com/abdes/asap/commit/7e1e12317b62099bb58ce5dd4adfdbf1a759ad03)) +* merge changes from upstream asap ([8eabccd](http://github.com/abdes/asap/commit/8eabccddfc9f5ffdb80f48f3b76076943dd59c22)) +* need to hardoce `asap` when linking `common` ([e038a70](http://github.com/abdes/asap/commit/e038a702ce8727fa1a6c8b3a45cb4bb211281db5)) +* only add clang-format/tidy targets if master project ([060f082](http://github.com/abdes/asap/commit/060f082714e039eb4c2c2e198b5caed74690e8af)) +* only add sanitizers if building tests ([c98881c](http://github.com/abdes/asap/commit/c98881c3ec555067b8876e78ddd594c788d0cb1e)) +* only install files if requested to install ([9caaf9b](http://github.com/abdes/asap/commit/9caaf9b47e138be3f9845d6d58ebc21ff8dfa83b)) +* paragraph marks surrounded by white spaces not properly tokenized ([7dc72f8](http://github.com/abdes/asap/commit/7dc72f8d3f5319c283d0e8bd0b0a1b04cc7d4687)) +* put noexcept specifications where it makes sense ([f1c1036](http://github.com/abdes/asap/commit/f1c1036f7088d1318f31b596b4838dc2c807bc4b)) +* remove axiom from the contrcat check apis ([5000c96](http://github.com/abdes/asap/commit/5000c9697e89e369c1f4dc5bdd11dc4efa2878fe)) +* remove reference to thread local ([f912630](http://github.com/abdes/asap/commit/f912630220900ed556d7dd6c2609ef17242b56df)) +* remove trailing comma ([3d8ca08](http://github.com/abdes/asap/commit/3d8ca08a1ddc39856d606cdea67a307eafae7cce)) +* removed reference to thread local ([7152ae8](http://github.com/abdes/asap/commit/7152ae876a9aa90fb361314a29d60ebcf2e44aba)) +* reorganize third_party modules for use of FetchContent ([cc65bc2](http://github.com/abdes/asap/commit/cc65bc2219dbe38197107bae71252444994e118c)) +* undefined symbol in release build due to inlining of function ([e45a8eb](http://github.com/abdes/asap/commit/e45a8eb088767bf3a702a169f04346c082f1472c)) +* use clang pragma when clang is the compiler ([4ad38e4](http://github.com/abdes/asap/commit/4ad38e42c4657640259640e60c8c38292aed9ce1)) +* use correct path for the master docs ([2322694](http://github.com/abdes/asap/commit/2322694cecbf4931812fee7dc24384f90235290f)) +* use correct tagets for doc builds ([559558e](http://github.com/abdes/asap/commit/559558e8eac3043eef19986cc2ae6d6dfd937be8)) +* use correct tagets for doc builds ([0d7049f](http://github.com/abdes/asap/commit/0d7049f1c22ba808dd62922995f5ee23cb0641f1)) +* use correct url for logo image ([96d1e01](http://github.com/abdes/asap/commit/96d1e01d971bd2f33faaebfc060082023f3a5209)) +* use correct url for master index page ([a56c327](http://github.com/abdes/asap/commit/a56c327ff3d7ab14d7a499fc4997279efd2647fe)) +* use lower case META_PROJECT_ID ([311e433](http://github.com/abdes/asap/commit/311e433e8698ff6385c2cda256bff83982596ed0)) +* use lower-case name for sphinx ([f3005b5](http://github.com/abdes/asap/commit/f3005b5bd4055b16a57cdcb3af70a2f32b1c5809)) +* use separate sphinx cache dir for each module ([03f36fc](http://github.com/abdes/asap/commit/03f36fc96c78c51b441feb9a7b9c70d19a2125c7)) +* wrong variable used for target name ([829f351](http://github.com/abdes/asap/commit/829f351d22b384ddc060ae2df47ff9e801089dd2)) +* clean the logging API implementation ([25535c7](http://github.com/abdes/asap/commit/25535c76c0586d53f7c6c55db250a251f0c5390b)) +* convert git submodule to local module ([4e32e8a](http://github.com/abdes/asap/commit/4e32e8a6d1152413af12c7013ee759eca5e2d51d)) +* convert unit testing to gtest/gmock ([b99c8d0](http://github.com/abdes/asap/commit/b99c8d0a315bb8200ca9cec93c9d5f64880c9271)) +* extract fsm module out of common ([0269f2d](http://github.com/abdes/asap/commit/0269f2d6949c063f8c4c3b300b46aca76ff398b1)) +* make the options to build tests and examples unique ([3a35b79](http://github.com/abdes/asap/commit/3a35b79ec23c0c4828832d6bf81f433d53b17fc9)) +* move logging functionality to separate module ([0d1ca72](http://github.com/abdes/asap/commit/0d1ca7276bb38962c6d6cbdc604d949ca18d05cc)) +* move logging functionality to separate module ([46f4dd9](http://github.com/abdes/asap/commit/46f4dd96edb1148e0772a1539b989fd80f3821e4)) +* redesign cmake build system ([31ce14a](http://github.com/abdes/asap/commit/31ce14a301ac2e725b7760581e696f089225b161)) +* remove filesystem submodule ([e2089ae](http://github.com/abdes/asap/commit/e2089ae7707c1448c78db23db2f53cbfab461599)) +* remove logical traits backport ([5ed0fe6](http://github.com/abdes/asap/commit/5ed0fe6e9e03399e640221a285f87a1a8a015cd1)) +* remove OPTION_SELF_CONTAINED cmake cache variable ([3c4e0e5](http://github.com/abdes/asap/commit/3c4e0e55b3dc92eb5ea9ede076c726658a964a34)) +* restrict exceptions to error reporting ([014b96b](http://github.com/abdes/asap/commit/014b96bdafa644e047b0b174f84063cea7908e03)) diff --git a/CMakeLists.txt b/CMakeLists.txt index b95b535..542395a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,8 +38,8 @@ set(META_AUTHOR_ORGANIZATION "The Authors") set(META_GITHUB_REPO "https://github.com/asap-projects/asap-common") set(META_AUTHOR_DOMAIN "https://github.com/asap-projects") set(META_AUTHOR_MAINTAINER "Abdessattar Sassi") -set(META_VERSION_MAJOR "1") -set(META_VERSION_MINOR "2") +set(META_VERSION_MAJOR "2") +set(META_VERSION_MINOR "0") set(META_VERSION_PATCH "0") set(META_VERSION_REVISION "${GIT_REV}") set(META_VERSION "${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}") diff --git a/common b/common index 51488d7..48698f9 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 51488d71c021ec2446766492fc5ed47b33f2b0c6 +Subproject commit 48698f9885616d10c327251dbc050b5dc013bbb4