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 )
66which extends the build tool ecosystem with ** mp-units** -specific requirements.
77
88## Docker Image Hierarchy
99
1010The 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
53573 . ** 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
7984The 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
116121By 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
121126The ` -d ` parameter allows you to specify a custom directory for API documentation
122127dependencies. 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:
1711771 . ** 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
1771832 . ** 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
0 commit comments