diff options
| author | Leitwolf | 2026-10-24 20:29:24 +0300 |
|---|---|---|
| committer | GitHub | 2026-10-24 20:29:24 +0300 |
| commit | 13f81a480a93807c14dddb5abdb97355ced4d4c5 (patch) | |
| tree | cd2055cb2eeb0bdef1d5bed1d39d9569df6f5b97 /docs | |
| parent | 4f1c759cffcb14bd6511e1d7c5fbace682e24f2d (diff) | |
| parent | a2edf60b9f410d26485ac7c0492870a0905f9545 (diff) | |
| download | catch3-13f81a480a93807c14dddb5abdb97355ced4d4c5.tar.gz | |
Merge pull request #16 from Progmasoft/chore/remove-upstream-leftovers
Remove what Catch2's maintainers left that is not ours
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/Readme.md | 10 | ||||
| -rw-r--r-- | docs/commercial-users.md | 26 | ||||
| -rw-r--r-- | docs/contributing.md | 396 | ||||
| -rw-r--r-- | docs/deprecations.md | 92 | ||||
| -rw-r--r-- | docs/migrate-v2-to-v3.md | 2 | ||||
| -rw-r--r-- | docs/opensource-users.md | 162 | ||||
| -rw-r--r-- | docs/release-notes.md | 2206 | ||||
| -rw-r--r-- | docs/release-process.md | 69 | ||||
| -rw-r--r-- | docs/why-catch.md | 62 |
9 files changed, 109 insertions, 2916 deletions
diff --git a/docs/Readme.md b/docs/Readme.md index 5d21ef7f..65268c99 100644 --- a/docs/Readme.md +++ b/docs/Readme.md @@ -50,10 +50,6 @@ engine, not a claim that Catch3 is an official Catch2 release. * [Thread safety of the compatibility engine](thread-safety.md#top) **Other:** -* [Why the Catch2 compatibility base?](why-catch.md#top) -* [Migrating from v2 to v3](migrate-v2-to-v3.md#top) -* [Historical Catch2 open-source users](opensource-users.md#top) -* [Historical Catch2 commercial users](commercial-users.md#top) -* [Upstream contribution guide (historical)](contributing.md#top) -* [Upstream release notes (historical)](release-notes.md#top) -* [Upstream deprecations (historical)](deprecations.md#top) +* [Release notes](release-notes.md#top) +* [Contributing](contributing.md#top) +* [Migrating from Catch2 v2 to v3](migrate-v2-to-v3.md#top) diff --git a/docs/commercial-users.md b/docs/commercial-users.md deleted file mode 100644 index 44df8c52..00000000 --- a/docs/commercial-users.md +++ /dev/null @@ -1,26 +0,0 @@ -<a id="top"></a> - -> **Upstream history:** This page is retained from Catch2 for provenance and compatibility. It does not describe Catch3 release policy or Progmasoft support. See [Catch3 documentation](Readme.md#top) for current guidance. - -# Commercial users of Catch2 - -Catch2 is also widely used in proprietary code bases. This page contains -some of them that are willing to share this information. - -If you want to add your organisation, please check that there is no issue -with you sharing this fact. - - - Bloomberg - - [Bloomlife](https://bloomlife.com) - - [Inscopix Inc.](https://www.inscopix.com/) - - Locksley.CZ - - [Makimo](https://makimo.pl/) - - NASA - - [Nexus Software Systems](https://nexwebsites.com) - - [UX3D](https://ux3d.io) - - [King](https://king.com) - - ---- - -[Home](Readme.md#top) diff --git a/docs/contributing.md b/docs/contributing.md index e67ea237..ba8fe371 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,378 +1,100 @@ <a id="top"></a> - -> **Upstream history:** This page is retained from Catch2 for provenance and compatibility. It does not describe Catch3 release policy or Progmasoft support. See [Catch3 documentation](Readme.md#top) for current guidance. - -# Contributing to Catch2 +# Contributing to Catch3 **Contents**<br> -[Using Git(Hub)](#using-github)<br> -[Testing your changes](#testing-your-changes)<br> -[Writing documentation](#writing-documentation)<br> -[Writing code](#writing-code)<br> -[CoC](#coc)<br> -[Using LLMs when contributing](#using-llms-when-contributing)<br> - - -So you want to contribute something to Catch2? That's great! Whether it's -a bug fix, a new feature, support for additional compilers - or just -a fix to the documentation - all contributions are very welcome and very -much appreciated. Of course so are bug reports, other comments, and -questions, but generally it is a better idea to ask questions in our -[Discord](https://discord.gg/4CWS9zD), than in the issue tracker. - - -This page covers some guidelines and helpful tips for contributing -to the codebase itself. - -## Using Git(Hub) - -Ongoing development happens in the `devel` branch for Catch2 v3, and in -`v2.x` for maintenance updates to the v2 versions. - -Commits should be small and atomic. A commit is atomic when, after it is -applied, the codebase, tests and all, still works as expected. Small -commits are also preferred, as they make later operations with git history, -whether it is bisecting, reverting, or something else, easier. - -_When submitting a pull request please do not include changes to the -amalgamated distribution files. This means do not include them in your -git commits!_ - -When addressing review comments in a MR, please do not rebase/squash the -commits immediately. Doing so makes it harder to review the new changes, -slowing down the process of merging a MR. Instead, when addressing review -comments, you should append new commits to the branch and only squash -them into other commits when the MR is ready to be merged. We recommend -creating new commits with `git commit --fixup` (or `--squash`) and then -later squashing them with `git rebase --autosquash` to make things easier. +[Where to start](#where-to-start)<br> +[Building and testing](#building-and-testing)<br> +[Two parts, two sets of rules](#two-parts-two-sets-of-rules)<br> +[Tests](#tests)<br> +[Documentation](#documentation)<br> +[Code of Conduct](#code-of-conduct)<br> +Progmasoft maintains Catch3. Issues and pull requests are welcome on +[Progmasoft/catch3](https://github.com/Progmasoft/catch3); pull requests go +to the `devel` branch. Report security problems privately, as described in +[SECURITY.md](../SECURITY.md), not in a public issue. -## Testing your changes +## Where to start -_Note: Running Catch2's tests requires Python3_ +Open an issue before a large change, so that the direction can be agreed +first. A pull request should do one thing, say why in its description and +come with the tests that show it works. -Catch2 has multiple layers of tests that are then run as part of our CI. -The most obvious one are the unit tests compiled into the `SelfTest` -binary. These are then used in "Approval tests", which run (almost) all -tests from `SelfTest` through a specific reporter and then compare the -generated output with a known good output ("Baseline"). By default, new -tests should be placed here. +## Building and testing -To configure a Catch2 build with just the basic tests, use the `basic-tests` -preset, like so: +Bazel is the main build. With [Bazelisk](https://github.com/bazelbuild/bazelisk): ``` -# Assuming you are in Catch2's root folder - -cmake -B basic-test-build -S . -DCMAKE_BUILD_TYPE=Debug --preset basic-tests +bazelisk test //tests/... ``` -However, not all tests can be written as plain unit tests. For example, -checking that Catch2 orders tests randomly when asked to, and that this -random ordering is subset-invariant, is better done as an integration -test using an external check script. Catch2 integration tests are written -using CTest, either as a direct command invocation + pass/fail regex, -or by delegating the check to a Python script. - -Catch2 is slowly gaining more and more types of tests, currently Catch2 -project also has buildable examples, "ExtraTests", and CMake config tests. -Examples present a small and self-contained snippets of code that -use Catch2's facilities for specific purpose. Currently they are assumed -passing if they compile. - -ExtraTests then are expensive tests, that we do not want to run all the -time. This can be either because they take a long time to run, or because -they take a long time to compile, e.g. because they test compile time -configuration and require separate compilation. - -Finally, CMake config tests test that you set Catch2's compile-time -configuration options through CMake, using CMake options of the same name. - -These test categories can be enabled one by one, by passing -`-DCATCH_BUILD_EXAMPLES=ON`, `-DCATCH_BUILD_EXTRA_TESTS=ON`, and -`-DCATCH_ENABLE_CONFIGURE_TESTS=ON` when configuring the build. - -Catch2 also provides a preset that promises to enable _all_ test types, -`all-tests`. - -The snippet below will build & run all tests, in `Debug` compilation mode. - -<!-- snippet: catch2-build-and-test --> -<a id='snippet-catch2-build-and-test'></a> -```sh -# 1. Regenerate the amalgamated distribution (some tests are built against it) -./tools/scripts/generateAmalgamatedFiles.py - -# 2. Configure the full test build -cmake -B debug-build -S . -DCMAKE_BUILD_TYPE=Debug --preset all-tests - -# 3. Run the actual build -cmake --build debug-build +On Windows, point Bazel at Git's bash first: +`BAZEL_SH="C:\Program Files\Git\usr\bin\bash.exe"`. -# 4. Run the tests using CTest -ctest -j 4 --output-on-failure -C Debug --test-dir debug-build -``` -<sup><a href='/tools/scripts/buildAndTest.sh#L6-L19' title='File snippet `catch2-build-and-test` was extracted from'>snippet source</a> | <a href='#snippet-catch2-build-and-test' title='Navigate to start of snippet `catch2-build-and-test`'>anchor</a></sup> -<!-- endSnippet --> - -For convenience, the above commands are in the script `tools/scripts/buildAndTest.sh`, and can be run like this: +CMake builds every test, including the extra tests that check compile-time +configurations: -```bash -cd Catch2 -./tools/scripts/buildAndTest.sh ``` - -A Windows version of the script is available at `tools\scripts\buildAndTest.cmd`. - -If you added new tests, you will likely see `ApprovalTests` failure. -After you check that the output difference is expected, you should -run `tools/scripts/approve.py` to confirm them, and include these changes -in your commit. - - -## Writing documentation - -If you have added new feature to Catch2, it needs documentation, so that -other people can use it as well. This section collects some technical -information that you will need for updating Catch2's documentation, and -possibly some generic advise as well. - - -### Technicalities - -First, the technicalities: - -* If you have introduced a new document, there is a simple template you -should use. It provides you with the top anchor mentioned to link to -(more below), and also with a backlink to the top of the documentation: -```markdown -<a id="top"></a> -# Cool feature - -> [Introduced](https://github.com/catchorg/Catch2/pull/123456) in Catch2 X.Y.Z - -Text that explains how to use the cool feature. - - ---- - -[Home](Readme.md#top) +cmake --preset basic-tests -GNinja -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON +cmake --build build +ctest --test-dir build -j ``` -* Crosslinks to different pages should target the `top` anchor, like this -`[link to contributing](contributing.md#top)`. - -* We introduced version tags to the documentation, which show users in -which version a specific feature was introduced. This means that newly -written documentation should be tagged with a placeholder, that will -be replaced with the actual version upon release. There are 2 styles -of placeholders used through the documentation, you should pick one that -fits your text better (if in doubt, take a look at the existing version -tags for other features). - * `> [Introduced](link-to-issue-or-PR) in Catch2 X.Y.Z` - this - placeholder is usually used after a section heading - * `> X (Y and Z) was [introduced](link-to-issue-or-PR) in Catch2 X.Y.Z` - - this placeholder is used when you need to tag a subpart of something, - e.g. a list - -* For pages with more than 4 subheadings, we provide a table of contents -(ToC) at the top of the page. Because GitHub markdown does not support -automatic generation of ToC, it has to be handled semi-manually. Thus, -if you've added a new subheading to some page, you should add it to the -ToC. This can be done either manually, or by running the -`updateDocumentToC.py` script in the `scripts/` folder. +Meson, Xmake and Premake builds exist as well and are checked in CI. -### Contents +Before you push, run the repository checks: -Now, for some content tips: - -* Usage examples are good. However, having large code snippets inline -can make the documentation less readable, and so the inline snippets -should be kept reasonably short. To provide more complex compilable -examples, consider adding new .cpp file to `examples/`. - -* Don't be afraid to introduce new pages. The current documentation -tends towards long pages, but a lot of that is caused by legacy, and -we know that some of the pages are overly big and unfocused. - -* When adding information to an existing page, please try to keep your -formatting, style and changes consistent with the rest of the page. - -* Any documentation has multiple different audiences, that desire -different information from the text. The 3 basic user-types to try and -cover are: - * A beginner to Catch2, who requires closer guidance for the usage of Catch2. - * Advanced user of Catch2, who want to customize their usage. - * Experts, looking for full reference of Catch2's capabilities. - - -## Writing code - -If want to contribute code, this section contains some simple rules -and tips on things like code formatting, code constructions to avoid, -and so on. - -### C++ standard version - -Catch2 currently targets C++14 as the minimum supported C++ version. -Features from higher language versions should be used only sparingly, -when the benefits from using them outweigh the maintenance overhead. - -Example of good use of polyfilling features is our use of `conjunction`, -where if available we use `std::conjunction` and otherwise provide our -own implementation. The reason it is good is that the surface area for -maintenance is quite small, and `std::conjunction` can directly use -compiler built-ins, thus providing significant compilation benefits. - -Example of bad use of polyfilling features would be to keep around two -sets of metaprogramming in the stringification implementation, once -using C++14 compliant TMP and once using C++17's `if constexpr`. While -the C++17 would provide significant compilation speedups, the maintenance -cost would be too high. - - -### Formatting - -To make code formatting simpler for the contributors, Catch2 provides -its own config for `clang-format`. However, because it is currently -impossible to replicate existing Catch2's formatting in clang-format, -using it to reformat a whole file would cause massive diffs. To keep -the size of your diffs reasonable, you should only use clang-format -on the newly changed code. - - -### Progmasoft-authored code - -The code under `src/Progmasoft/` and `tests/Progmasoft/` is not derived -from Catch2 and follows -[Progmasoft C++ Style](https://github.com/Progmasoft/progmasoft-cpp): -its naming, its formatting profile, its language and documentation -rules. The code derived from Catch2 keeps the upstream style described -on this page, so that changes from upstream still apply cleanly. - -Progmasoft-authored code deviates from the guide where the Catch2 API -requires it: - -* It lives in the namespace `Progmasoft::Catch3`, with helpers in - `Progmasoft::Catch3::Detail`. -* It may throw, because a failed assertion is reported by an exception, - as everywhere in Catch2. Exceptions stay inside the library and never - cross into the code under test. - - -### Code constructs to watch out for - -This section is a (sadly incomplete) listing of various constructs that -are problematic and are not always caught by our CI infrastructure. - - -#### Naked exceptions and exceptions-related function - -If you are throwing an exception, it should be done via `CATCH_ERROR` -or `CATCH_RUNTIME_ERROR` in `internal/catch_enforce.hpp`. These macros will handle -the differences between compilation with or without exceptions for you. -However, some platforms (IAR) also have problems with exceptions-related -functions, such as `std::current_exceptions`. We do not have IAR in our -CI, but luckily there should not be too many reasons to use these. -However, if you do, they should be kept behind a -`CATCH_CONFIG_DISABLE_EXCEPTIONS` macro. - - -#### Avoid `std::move` and `std::forward` - -`std::move` and `std::forward` provide nice semantic name for a specific -`static_cast`. However, being function templates they have surprisingly -high cost during compilation, and can also have a negative performance -impact for low-optimization builds. - -You should be using `CATCH_MOVE` and `CATCH_FORWARD` macros from -`internal/catch_move_and_forward.hpp` instead. They expand into the proper -`static_cast`, and avoid the overhead of `std::move` and `std::forward`. - - -#### Unqualified usage of functions from C's stdlib - -If you are using a function from C's stdlib, please include the header -as `<cfoo>` and call the function qualified. The common knowledge that -there is no difference is wrong, QNX and VxWorks won't compile if you -include the header as `<cfoo>` and call the function unqualified. - - -#### User-Defined Literals (UDL) for Catch2' types - -Due to messy standardese and ... not great ... implementation of -`-Wreserved-identifier` in Clang, avoid declaring UDLs as -```cpp -Approx operator "" _a(long double); ``` -and instead declare them as -```cpp -Approx operator ""_a(long double); +python tools/scripts/checkLicense.py +python tools/scripts/checkConvenienceHeaders.py +python tools/scripts/checkDuplicateFilenames.py ``` -Notice that the second version does not have a space between the `""` and -the literal suffix. - - - -### New source file template - -If you are adding new source file, there is a template you should use. -Specifically, every source file should start with the licence header: -```cpp - - // Copyright Catch2 Authors - // Distributed under the Boost Software License, Version 1.0. - // (See accompanying file LICENSE.txt or copy at - // https://www.boost.org/LICENSE_1_0.txt) - - // SPDX-License-Identifier: BSL-1.0 -``` +A change to anything under `src/` also regenerates the single-file +distribution with `python tools/scripts/generateAmalgamatedFiles.py`. -The include guards for header files should follow the pattern `{FILENAME}_INCLUDED`. -This means that for file `catch_matchers_foo.hpp`, the include guard should -be `CATCH_MATCHERS_FOO_HPP_INCLUDED`, for `catch_generators_bar.hpp`, the include -guard should be `CATCH_GENERATORS_BAR_HPP_INCLUDED`, and so on. +## Two parts, two sets of rules -### Adding new `CATCH_CONFIG` option +`src/catch2` is the compatibility engine taken from Catch2. Its public API is +what Catch3 promises to keep: code that compiles against Catch2's headers +must keep compiling. It stays under the Boost Software License 1.0, keeps the +`Catch2 Authors` header and follows the style of the surrounding Catch2 code. +Code that includes only its headers needs C++14. -When adding new `CATCH_CONFIG` option, there are multiple places to edit: - * `CMake/CatchConfigOptions.cmake` - this is used to generate the - configuration options in CMake, so that CMake frontends know about them. - * `docs/configuration.md` - this is where the options are documented - * `src/catch2/catch_user_config.hpp.in` - this is template for generating - `catch_user_config.hpp` which contains the materialized configuration - * `BUILD.bazel` - Bazel does not have configuration support like CMake, - and all expansions need to be done manually - * other files as needed, e.g. `catch2/internal/catch_config_foo.hpp` - for the logic that guards the configuration +`src/Progmasoft` holds what Progmasoft adds: the runner, the results model, +property testing and snapshots. It is licensed `MPL-2.0 WITH +AdditionRef-Progmasoft-Exception-1.1`, follows the +[Progmasoft C++ Style](https://github.com/Progmasoft/progmasoft-cpp), is +C++20, reports recoverable errors with `Expected` rather than exceptions, and +is formatted with the `.clang-format` beside it. +`tools/scripts/checkLicense.py` checks that every source file carries the +header of its part. -## CoC -This project has a [CoC](../CODE_OF_CONDUCT.md). Please adhere to it -while contributing to Catch2. +## Tests +`tests/SelfTest` tests the compatibility engine; `tests/ExtraTests` tests +compile-time configurations and the runner's behaviour around them; +`tests/Progmasoft` tests the Progmasoft code, and the runner's integration +tests there start a fixture binary whose tests misbehave on purpose. A bug fix +comes with a test that fails without it. -## Using LLMs when contributing -I do not care whether you used LLM for your contribution. What I care -about is the quality of the contribution, not whether you made it through -prompting LLM, letting GAs run wild, dictated it into the computer, wrote -it using your nose or used butterflies to flip the correct bits. +## Documentation -The flipside of this is that I am also not going to iterate your LLM for -you. If a PR looks LLM generated and does not pass the muster to be merged -as-is, I am going to close it. +User documentation lives in `docs/`. A new page is linked from +[the documentation index](Readme.md#top), and a page with sections gets a table +of contents; `python tools/scripts/updateDocumentToC.py` keeps them current. +A user-visible change gets a line in [the release notes](release-notes.md#top). ------------ +## Code of Conduct -_This documentation will always be in-progress as new information comes -up, but we are trying to keep it as up to date as possible._ +Everyone who takes part follows the [Code of Conduct](../CODE_OF_CONDUCT.md). --- diff --git a/docs/deprecations.md b/docs/deprecations.md deleted file mode 100644 index 82f044cc..00000000 --- a/docs/deprecations.md +++ /dev/null @@ -1,92 +0,0 @@ -<a id="top"></a> - -> **Upstream history:** This page is retained from Catch2 for provenance and compatibility. It does not describe Catch3 release policy or Progmasoft support. See [Catch3 documentation](Readme.md#top) for current guidance. - -# Deprecations and incoming changes - -This page documents current deprecations and upcoming planned changes -inside Catch2. The difference between these is that a deprecated feature -will be removed, while a planned change to a feature means that the -feature will behave differently, but will still be present. Obviously, -either of these is a breaking change, and thus will not happen until -at least the next major release. - - -### `ParseAndAddCatchTests.cmake` - -The CMake/CTest integration using `ParseAndAddCatchTests.cmake` is deprecated, -as it can be replaced by `Catch.cmake` that provides the function -`catch_discover_tests` to get tests directly from a CMake target via the -command line interface instead of parsing C++ code with regular expressions. - - -### `CATCH_CONFIG_BAZEL_SUPPORT` - -Catch2 supports writing the Bazel JUnit XML output file when it is aware -that is within a bazel testing environment. Originally there was no way -to accurately probe the environment for this information so the flag -`CATCH_CONFIG_BAZEL_SUPPORT` was added. This now deprecated. Bazel has now had a change -where it will export `BAZEL_TEST=1` for purposes like the above. Catch2 -will now instead inspect the environment instead of relying on build configuration. - -### `IEventLister::skipTest( TestCaseInfo const& testInfo )` - -This event (including implementations in derived classes such as `ReporterBase`) -is deprecated and will be removed in the next major release. It is currently -invoked for all test cases that are not going to be executed due to the test run -being aborted (when using `--abort` or `--abortx`). It is however -**NOT** invoked for test cases that are [explicitly skipped using the `SKIP` -macro](skipping-passing-failing.md#top). - - -### Non-const function for `TEST_CASE_METHOD` - -> Deprecated in Catch2 3.7.0 - -Currently, the member function generated for `TEST_CASE_METHOD` is -not `const` qualified. In the future, the generated member function will -be `const` qualified, just as `TEST_CASE_PERSISTENT_FIXTURE` does. - -If you are mutating the fixture instance from within the test case, and -want to keep doing so in the future, mark the mutated members as `mutable`. - - -### Section-only filtering with `-c/--section` - -> Deprecated in Catch2 3.13.0 - -Currently, if you use only `-c/--section` parameters to decide which -sections to enter, the filtering ignores generators completely. In the -future, using only `-c/--section` will behave the same way as if you -specified the filters through the new `-p/--path-filter` parameter, which -means that generators are taken into account. - - -### Reporter event handling functions without noexcept - -> Deprecated in Catch2 3.16.1 - -Catch2 does not try to support reporters throwing from arbitrary -`fooStarting` or `fooEnded` test running event. For legacy reasons, the -event listener interface is declared without `noexcept`, but in the future -it will be changed to use `noexcept` to make this limitation explicit. - - -### Generator interfaces - -#### Defaulted `UntypedGeneratorBase::isFinite()` - -> Deprecated in Catch2 3.13.0 - -The `UntypedGeneratorBase` currently provides a default implementation -for `isFinite` that always returns `true`. This was done to keep backwards -compatibility with pre-existing generators, as infinite generators can -be diagnosed as errors in some cases. - -In the future, all generators will be expected to override `isFinite`. - - - ---- - -[Home](Readme.md#top) diff --git a/docs/migrate-v2-to-v3.md b/docs/migrate-v2-to-v3.md index b0ad3fc6..7255fdeb 100644 --- a/docs/migrate-v2-to-v3.md +++ b/docs/migrate-v2-to-v3.md @@ -22,7 +22,7 @@ The result of this move is a significant improvement in compilation times, e.g. the inclusion overhead of Catch2 in the common case has been reduced by roughly 80%. The improved ease of maintenance also led to various runtime performance improvements and the introduction of new features. -For details, look at [the release notes of 3.0.1](release-notes.md#301). +For details, look at [the release notes of Catch2 3.0.1](https://github.com/catchorg/Catch2/blob/devel/docs/release-notes.md#301). _Note that we still provide one header + one translation unit (TU) distribution but do not consider it the primarily supported option. You diff --git a/docs/opensource-users.md b/docs/opensource-users.md deleted file mode 100644 index 97e8f9ba..00000000 --- a/docs/opensource-users.md +++ /dev/null @@ -1,162 +0,0 @@ -<a id="top"></a> - -> **Upstream history:** This page is retained from Catch2 for provenance and compatibility. It does not describe Catch3 release policy or Progmasoft support. See [Catch3 documentation](Readme.md#top) for current guidance. - -# Open Source projects using Catch2 - -Catch2 is great for open source. It is licensed under the [Boost Software -License (BSL)](../LICENSE.txt), has no further dependencies and supports -two file distribution. - -As a result, Catch2 is used for testing in many different Open Source -projects. This page lists at least some of them, even though it will -obviously never be complete (and does not have the ambition to be -complete). Note that the list below is intended to be in alphabetical -order, to avoid implications of relative importance of the projects. - -_Please only add projects here if you are their maintainer, or have the -maintainer's explicit consent._ - - -## Libraries & Frameworks - -### [accessorpp](https://github.com/wqking/accessorpp) -C++ library for implementing property and data binding. - -### [alpaka](https://github.com/alpaka-group/alpaka) -A header-only C++14 abstraction library for accelerator development. - -### [ApprovalTests.cpp](https://github.com/approvals/ApprovalTests.cpp) -C++11 implementation of Approval Tests, for quick, convenient testing of legacy code. - -### [args](https://github.com/Taywee/args) -A simple header-only C++ argument parser library. - -### [Azmq](https://github.com/zeromq/azmq) -Boost Asio style bindings for ZeroMQ. - -### [Cataclysm: Dark Days Ahead](https://github.com/CleverRaven/Cataclysm-DDA) -Post-apocalyptic survival RPG. - -### [ChaiScript](https://github.com/ChaiScript/ChaiScript) -A, header-only, embedded scripting language designed from the ground up to directly target C++ and take advantage of modern C++ development techniques. - -### [ChakraCore](https://github.com/Microsoft/ChakraCore) -The core part of the Chakra JavaScript engine that powers Microsoft Edge. - -### [Clara](https://github.com/philsquared/Clara) -A, single-header-only, type-safe, command line parser - which also prints formatted usage strings. - -### [Couchbase-lite-core](https://github.com/couchbase/couchbase-lite-core) -The next-generation core storage and query engine for Couchbase Lite. - -### [cppcodec](https://github.com/tplgy/cppcodec) -Header-only C++11 library to encode/decode base64, base64url, base32, base32hex and hex (a.k.a. base16) as specified in RFC 4648, plus Crockford's base32. - -### [DtCraft](https://github.com/twhuang-uiuc/DtCraft) -A High-performance Cluster Computing Engine. - -### [eventpp](https://github.com/wqking/eventpp) -C++ event library for callbacks, event dispatcher, and event queue. With eventpp you can easily implement signal and slot mechanism, publisher and subscriber pattern, or observer pattern. - -### [forest](https://github.com/xorz57/forest) -Template Library of Tree Data Structures. - -### [Fuxedo](https://github.com/fuxedo/fuxedo) -Open source Oracle Tuxedo-like XATMI middleware for C and C++. - -### [HIP CPU Runtime](https://github.com/ROCm-Developer-Tools/HIP-CPU) -A header-only library that allows CPUs to execute unmodified HIP code. It is generic and does not assume a particular CPU vendor or architecture. - -### [Inja](https://github.com/pantor/inja) -A header-only template engine for modern C++. - -### [LLAMA](https://github.com/alpaka-group/llama) -A C++17 template header-only library for the abstraction of memory access patterns. - -### [libcluon](https://github.com/chrberger/libcluon) -A single-header-only library written in C++14 to glue distributed software components (UDP, TCP, shared memory) supporting natively Protobuf, LCM/ZCM, MsgPack, and JSON for dynamic message transformations in-between. - -### [MNMLSTC Core](https://github.com/mnmlstc/core) -A small and easy to use C++11 library that adds a functionality set that will be available in C++14 and later, as well as some useful additions. - -### [nanodbc](https://github.com/lexicalunit/nanodbc/) -A small C++ library wrapper for the native C ODBC API. - -### [Nonius](https://github.com/libnonius/nonius) -A header-only framework for benchmarking small snippets of C++ code. - -### [OpenALpp](https://github.com/Laguna1989/OpenALpp) -A modern OOP C++14 audio library built on OpenAL for Windows, Linux and web (emscripten). - -### [polymorphic_value](https://github.com/jbcoe/polymorphic_value) -A polymorphic value-type for C++. - -### [Ppconsul](https://github.com/oliora/ppconsul) -A C++ client library for Consul. Consul is a distributed tool for discovering and configuring services in your infrastructure. - -### [Reactive-Extensions/ RxCpp](https://github.com/Reactive-Extensions/RxCpp) -A library of algorithms for values-distributed-in-time. - -### [SFML](https://github.com/SFML/SFML) -Simple and Fast Multimedia Library. - -### [SOCI](https://github.com/SOCI/soci) -The C++ Database Access Library. - -### [TextFlowCpp](https://github.com/philsquared/textflowcpp) -A small, single-header-only, library for wrapping and composing columns of text. - -### [thor](https://github.com/xorz57/thor) -Wrapper Library for CUDA. - -### [toml++](https://github.com/marzer/tomlplusplus) -A header-only TOML parser and serializer for modern C++. - -### [Trompeloeil](https://github.com/rollbear/trompeloeil) -A thread-safe header-only mocking framework for C++14. - -### [wxWidgets](https://www.wxwidgets.org/) -Cross-Platform C++ GUI Library. - -### [xmlwrapp](https://github.com/vslavik/xmlwrapp) -C++ XML parsing library using libxml2. - -## Applications & Tools - -### [App Mesh](https://github.com/laoshanxi/app-mesh) -A high available cloud native micro-service application management platform implemented by modern C++. - -### [ArangoDB](https://github.com/arangodb/arangodb) -ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. - -### [Cytopia](https://github.com/CytopiaTeam/Cytopia) -Cytopia is a free, open source retro pixel-art city building game with a big focus on mods. It utilizes a custom isometric rendering engine based on SDL2. - -### [d-SEAMS](https://github.com/d-SEAMS/seams-core) -Open source molecular dynamics simulation structure analysis suite of tools in modern C++. - -### [Giada - Your Hardcore Loop Machine](https://github.com/monocasual/giada) -Minimal, open-source and cross-platform audio tool for live music production. - -### [MAME](https://github.com/mamedev/mame) -MAME originally stood for Multiple Arcade Machine Emulator. - -### [Newsbeuter](https://github.com/akrennmair/newsbeuter) -Newsbeuter is an open-source RSS/Atom feed reader for text terminals. - -### [PopHead](https://github.com/SPC-Some-Polish-Coders/PopHead) -A 2D, Zombie, RPG game which is being made on our own engine. - -### [raspigcd](https://github.com/pantadeusz/raspigcd) -Low level CLI app and library for execution of GCODE on Raspberry Pi without any additional microcontrollers (just RPi + Stepsticks). - -### [SpECTRE](https://github.com/sxs-collaboration/spectre) -SpECTRE is a code for multi-scale, multi-physics problems in astrophysics and gravitational physics. - -### [Standardese](https://github.com/foonathan/standardese) -Standardese aims to be a nextgen Doxygen. - ---- - -[Home](Readme.md#top) diff --git a/docs/release-notes.md b/docs/release-notes.md index 2ba3b663..9f5a1b31 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,2187 +1,73 @@ <a id="top"></a> -> **Upstream history:** This page is retained from Catch2 for provenance and compatibility. It does not describe Catch3 release policy or Progmasoft support. See [Catch3 documentation](Readme.md#top) for current guidance. - - # Release notes -**Contents**<br> -[3.16.1](#3161)<br> -[3.16.0](#3160)<br> -[3.1 |