Skip to content

Commit ca795f2

Browse files
committed
Merge remote-tracking branch 'upstream/master' into feature/audio-examples
2 parents e597e0d + a0fd724 commit ca795f2

File tree

105 files changed

+5720
-2792
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+5720
-2792
lines changed

.clang-tidy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ Checks: '
3030
-misc-include-cleaner,
3131
-modernize-use-trailing-return-type,
3232
-modernize-use-designated-initializers,
33+
-portability-avoid-pragma-once,
3334
-readability-identifier-length,
3435
-readability-isolate-declaration,
3536
-readability-magic-numbers,

.devcontainer/README.md

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
# GitHub Codespaces Integration for mp-units
22

3-
This repository is configured to work seamlessly with GitHub Codespaces, providing a
4-
complete development environment with all compilers and tools pre-installed. The environment
5-
is built on [custom `trainiteu/mp-units` Docker image](https://github.com/train-it-eu/docker-images/blob/main/mp-units/Dockerfile)
3+
This repository is configured to work seamlessly with GitHub Codespaces.
4+
It provides a complete development environment with all compilers and tools pre-installed.
5+
The environment is built on a [custom `trainiteu/mp-units` Docker image](https://github.com/train-it-eu/docker-images/blob/main/mp-units/Dockerfile)
66
which extends the build tool ecosystem with **mp-units**-specific requirements.
77

88
## Docker Image Hierarchy
99

1010
The development environment is built on a layered Docker image stack:
1111

12-
1. **[`trainiteu/ubuntu`](https://github.com/train-it-eu/docker-images/blob/main/ubuntu/Dockerfile)**: Ubuntu 25.04 (Plucky Puffin) base with essential development tools
13-
2. **[`trainiteu/cpp`](https://github.com/train-it-eu/docker-images/blob/main/cpp/Dockerfile)**: Adds CMake, Ninja, Python with pipx for tool management
14-
3. **[`trainiteu/cpp-conan`](https://github.com/train-it-eu/docker-images/blob/main/cpp-conan/Dockerfile)**: Adds Conan 2.x and base compiler profiles
15-
4. **[`trainiteu/mp-units`](https://github.com/train-it-eu/docker-images/blob/main/mp-units/Dockerfile)**: **mp-units-specific extensions** including:
16-
- Extended compiler matrix (GCC 12-15, Clang 16-20)
12+
1. **[`trainiteu/ubuntu`](https://github.com/train-it-eu/docker-images/blob/main/ubuntu/Dockerfile)**:
13+
Ubuntu 25.04 (Plucky Puffin) base with essential development tools
14+
2. **[`trainiteu/cpp`](https://github.com/train-it-eu/docker-images/blob/main/cpp/Dockerfile)**:
15+
Adds CMake, Ninja, and Python with pipx for tool management
16+
3. **[`trainiteu/cpp-conan`](https://github.com/train-it-eu/docker-images/blob/main/cpp-conan/Dockerfile)**:
17+
Adds Conan 2.x and base compiler profiles
18+
4. **[`trainiteu/mp-units`](https://github.com/train-it-eu/docker-images/blob/main/mp-units/Dockerfile)**:
19+
**mp-units-specific extensions** including:
20+
- Extended compiler matrix (GCC 12-15, Clang 16-21)
1721
- Python documentation ecosystem via pipx
1822
- Pre-configured Conan remotes and profiles for all compiler combinations
1923
- Development aliases and optimized build configuration
@@ -52,7 +56,8 @@ The development environment is built on a layered Docker image stack:
5256

5357
3. **Wait for setup**: The container will build automatically (usually 3-5 minutes)
5458

55-
This option provides the same development environment as Codespaces but runs locally on your machine, offering:
59+
This option provides the same development environment as Codespaces while running locally on
60+
your machine. It offers:
5661
- **Full offline development** (after initial setup)
5762
- **Better performance** on powerful local machines
5863
- **Direct file system access** for easier integration with local tools
@@ -64,8 +69,8 @@ The development environment includes all compilers and tools used for comprehens
6469

6570
- **Base OS**: Ubuntu 25.04 (Plucky Puffin)
6671
- **GCC**: 12, 13, 14, 15
67-
- **Clang**: 16, 17, 18, 19, 20
68-
- **Standard Library**: libc++-18 for maximum compatibility
72+
- **Clang**: 16, 17, 18, 19, 20, 21
73+
- **Standard Library**: libc++-18 for backward compatibility with clang-16
6974
- **Build Tools**: CMake, Ninja, Conan package manager
7075
- **Code Quality**: clang-format, clang-tidy, include-what-you-use
7176
- **Documentation**: MkDocs with Material theme
@@ -79,17 +84,17 @@ The development environment includes all compilers and tools used for comprehens
7984
The following Conan profiles are pre-configured:
8085

8186
- `gcc12`, `gcc13`, `gcc14`, `gcc15`
82-
- `clang16`, `clang17`, `clang18`, `clang19`, `clang20`
87+
- `clang16`, `clang17`, `clang18`, `clang19`, `clang20`, `clang21`
8388

8489
### Multi-Compiler Testing Script
8590

86-
The Codespace includes a comprehensive testing script at `.devcontainer/check_all.sh`:
91+
The Codespace includes a comprehensive testing script at `.devcontainer/check_all.sh`.
8792

8893
```bash
8994
# Available script options
90-
./.devcontainer/check_all.sh install # Install dependencies for all configurations and provide CMake Presets
91-
./.devcontainer/check_all.sh build # Build with all compiler configurations
92-
./.devcontainer/check_all.sh create # Create Conan packages with all configurations
95+
./.devcontainer/check_all.sh install # Install dependencies for all release configurations and provide CMake Presets
96+
./.devcontainer/check_all.sh build # Build release with all compiler configurations
97+
./.devcontainer/check_all.sh create # Create release Conan packages with all configurations
9398
./.devcontainer/check_all.sh -d create # Include debug builds
9499
```
95100

@@ -114,9 +119,9 @@ The `.devcontainer/api_reference.sh` script automates the generation of API docu
114119
```
115120

116121
By default, the script performs both setup and build operations. Use the `-s` flag
117-
to perform setup only (during development container initialization). The script runs
118-
automatically during Codespace initialization to ensure the API documentation setup
119-
is ready.
122+
to perform setup only (done already during development container initialization).
123+
The script runs automatically during Codespace initialization to ensure the
124+
API documentation setup is ready.
120125

121126
The `-d` parameter allows you to specify a custom directory for API documentation
122127
dependencies. By default, dependencies are stored in `../api_reference_deps` relative
@@ -159,8 +164,9 @@ For current machine specifications and pricing, see:
159164
- [GitHub Pricing Calculator](https://github.com/pricing/calculator?feature=codespaces)
160165

161166
**Usage Recommendations:**
162-
- **2-core**: Suitable for documentation, small changes, single compiler testing
163-
- **4-core**: **Recommended** for most mp-units development - good balance of performance and free usage
167+
- **2-core**: Suitable for documentation, small changes, and single-profile testing
168+
- **4-core**: **Recommended** for most mp-units development — good balance of performance
169+
and free usage
164170
- **8-core+**: Best for intensive development sessions or when you need maximum build speed
165171

166172

@@ -171,7 +177,7 @@ For current machine specifications and pricing, see:
171177
1. **Start with single profile**: Test your changes with one compiler first
172178

173179
```bash
174-
conan create . -pr clang20 -c user.mp-units.build:all=True -b missing
180+
conan create . -pr clang21 -c user.mp-units.build:all=True -b missing
175181
```
176182

177183
2. **Test compatibility**: Check the oldest compilers that may have different C++20 support
@@ -196,7 +202,9 @@ For current machine specifications and pricing, see:
196202

197203
## Getting Help
198204

199-
- Check the [mp-units documentation](https://mpusz.github.io/mp-units/) for project-specific information
200-
- Refer to the [GitHub Codespaces documentation](https://docs.github.com/en/codespaces) for platform help
205+
- Check the [mp-units documentation](https://mpusz.github.io/mp-units/)
206+
for project-specific information
207+
- Refer to the [GitHub Codespaces documentation](https://docs.github.com/en/codespaces)
208+
for platform help
201209
- Use the [discussion forums](https://github.com/mpusz/mp-units/discussions) or
202210
[issues](https://github.com/mpusz/mp-units/issues) in the repository for development questions

.github/FUNDING.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# These are supported funding model platforms
2+
3+
github: [mpusz]
4+
# patreon: # Replace with a single Patreon username
5+
# open_collective: # Replace with a single Open Collective username
6+
# ko_fi: # Replace with a single Ko-fi username
7+
# tidelift: # Replace with a single Tidelift package-name
8+
# community_bridge: # Replace with a single Community Bridge project-name
9+
# liberapay: # Replace with a single Liberapay username
10+
# issuehunt: # Replace with a single IssueHunt username
11+
# otechie: # Replace with a single Otechie username
12+
# lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name
13+
# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
name: 🐛 Bug Report
2+
description: Create a bug report to help us improve mp-units
3+
title: "[Bug]: "
4+
labels: ["bug", "triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thank you for taking the time to file a bug report! Please fill out this form as completely as possible.
10+
11+
**💡 Not sure if this is a bug?** Consider asking in [Discussions](https://github.com/mpusz/mp-units/discussions) first for help and clarification.
12+
13+
- type: textarea
14+
id: description
15+
attributes:
16+
label: Bug Description
17+
description: A clear and concise description of what the bug is.
18+
placeholder: Describe the issue you're experiencing...
19+
validations:
20+
required: true
21+
22+
- type: textarea
23+
id: reproduction
24+
attributes:
25+
label: Steps to Reproduce
26+
description: Steps to reproduce the behavior
27+
placeholder: |
28+
1. Include minimal code example
29+
2. Compilation command used
30+
3. Error message received
31+
value: |
32+
```cpp
33+
// Minimal reproducible example
34+
```
35+
validations:
36+
required: true
37+
38+
- type: input
39+
id: compiler_explorer
40+
attributes:
41+
label: 🚀 Compiler Explorer Link (Recommended)
42+
description: |
43+
Please provide a Compiler Explorer link demonstrating the issue if possible.
44+
This helps us reproduce and understand the problem quickly!
45+
placeholder: "https://godbolt.org/z/your-example-link"
46+
47+
- type: dropdown
48+
id: compiler
49+
attributes:
50+
label: Compiler
51+
description: Which compiler are you using?
52+
options:
53+
- GCC 12
54+
- GCC 13
55+
- GCC 14
56+
- GCC 15
57+
- Clang 16
58+
- Clang 17
59+
- Clang 18
60+
- Clang 19
61+
- Clang 20
62+
- Clang 21
63+
- MSVC 194
64+
- Apple Clang 15
65+
- Apple Clang 16
66+
- Other (specify in additional context)
67+
validations:
68+
required: true
69+
70+
- type: dropdown
71+
id: std_version
72+
attributes:
73+
label: C++ Standard
74+
description: Which C++ standard are you targeting?
75+
options:
76+
- C++20
77+
- C++23
78+
- C++26
79+
validations:
80+
required: true
81+
82+
- type: input
83+
id: mp_units_version
84+
attributes:
85+
label: mp-units Version
86+
description: Which version of mp-units are you using?
87+
placeholder: "e.g., 2.4.0, master, commit hash"
88+
validations:
89+
required: true
90+
91+
- type: checkboxes
92+
id: build_config
93+
attributes:
94+
label: Build Configuration
95+
description: Select all that apply to your build configuration
96+
options:
97+
- label: Using Conan
98+
- label: Using CMake directly
99+
- label: Header-only mode
100+
- label: C++ modules enabled
101+
- label: Freestanding mode
102+
- label: Debug build
103+
- label: Release build
104+
105+
- type: textarea
106+
id: additional_context
107+
attributes:
108+
label: Additional Context
109+
description: Add any other context about the problem here (compiler flags, build system configuration, etc.)
110+
111+
- type: checkboxes
112+
id: checklist
113+
attributes:
114+
label: Checklist
115+
description: Please confirm the following
116+
options:
117+
- label: I have read the documentation and checked existing issues
118+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: ❓ Ask Questions
4+
url: https://github.com/mpusz/mp-units/discussions
5+
about: For questions, help, discussions, and community support
6+
- name: 📖 Documentation
7+
url: https://mpusz.github.io/mp-units/
8+
about: Comprehensive documentation with tutorials and examples
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: 📚 Documentation Issue
2+
description: Report an issue with documentation or request documentation improvements
3+
title: "[Docs]: "
4+
labels: ["documentation", "triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Help us improve the mp-units documentation! Please describe the documentation issue or enhancement.
10+
11+
- type: dropdown
12+
id: doc_type
13+
attributes:
14+
label: Documentation Type
15+
description: What type of documentation issue is this?
16+
options:
17+
- Error/Inaccuracy in existing docs
18+
- Missing documentation
19+
- Unclear/Confusing explanation
20+
- Broken link or formatting
21+
- Example code issue
22+
- API reference issue
23+
- Tutorial improvement
24+
- Installation instructions
25+
- Migration guide
26+
- Other
27+
validations:
28+
required: true
29+
30+
- type: input
31+
id: page_url
32+
attributes:
33+
label: Page URL
34+
description: If applicable, provide the URL of the documentation page
35+
placeholder: "https://mpusz.github.io/mp-units/..."
36+
37+
- type: textarea
38+
id: description
39+
attributes:
40+
label: Issue Description
41+
description: Describe the documentation issue or improvement needed
42+
placeholder: The documentation says... but it should say...
43+
validations:
44+
required: true
45+
46+
- type: textarea
47+
id: location
48+
attributes:
49+
label: Location
50+
description: Where in the documentation is this issue? (section, paragraph, code example, etc.)
51+
52+
- type: textarea
53+
id: suggested_fix
54+
attributes:
55+
label: Suggested Fix
56+
description: If you have suggestions for how to fix or improve this documentation, please share them
57+
58+
- type: textarea
59+
id: additional_context
60+
attributes:
61+
label: Additional Context
62+
description: Any other context about the documentation issue
63+
64+
- type: checkboxes
65+
id: checklist
66+
attributes:
67+
label: Checklist
68+
description: Please confirm the following
69+
options:
70+
- label: I have checked that this documentation issue doesn't already exist
71+
required: true

0 commit comments

Comments
 (0)