Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/docs
diff options
context:
space:
mode:
authorLeitwolf2026-10-24 20:29:24 +0300
committerGitHub2026-10-24 20:29:24 +0300
commit13f81a480a93807c14dddb5abdb97355ced4d4c5 (patch)
treecd2055cb2eeb0bdef1d5bed1d39d9569df6f5b97 /docs
parent4f1c759cffcb14bd6511e1d7c5fbace682e24f2d (diff)
parenta2edf60b9f410d26485ac7c0492870a0905f9545 (diff)
downloadcatch3-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.md10
-rw-r--r--docs/commercial-users.md26
-rw-r--r--docs/contributing.md396
-rw-r--r--docs/deprecations.md92
-rw-r--r--docs/migrate-v2-to-v3.md2
-rw-r--r--docs/opensource-users.md162
-rw-r--r--docs/release-notes.md2206
-rw-r--r--docs/release-process.md69
-rw-r--r--docs/why-catch.md62
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.15.3](#3153)<br>
-[3.15.2](#3152)<br>
-[3.15.1](#3151)<br>
-[3.15.0](#3150)<br>
-[3.14.0](#3140)<br>
-[3.13.0](#3130)<br>
-[3.12.0](#3120)<br>
-[3.11.0](#3110)<br>
-[3.10.0](#3100)<br>
-[3.9.1](#391)<br>
-[3.9.0](#390)<br>
-[3.8.1](#381)<br>
-[3.8.0](#380)<br>
-[3.7.1](#371)<br>
-[3.7.0](#370)<br>
-[3.6.0](#360)<br>
-[3.5.4](#354)<br>
-[3.5.3](#353)<br>
-[3.5.2](#352)<br>
-[3.5.1](#351)<br>
<