build2 build system
This package contains the build2 build system.
build2 is an open source, cross-platform toolchain for building and packaging
C++ code. Its aim is a modern build system and dependency manager for the C++
language that provide a consistent, out of the box interface across multiple
platforms and compilers. For more information see:
https://build2.org/
See the NEWS file for the user-visible changes from the previous release.
See the LICENSE file for the distribution conditions.
See the INSTALL file... More
Depends (1)
Requires (1)
Reviews
Builds
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-O3 |
| timestamp |
2025-11-09 15:23:45 UTC (01:13:24 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++ |
| timestamp |
2025-11-09 15:08:02 UTC (01:29:07 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-O3 |
| timestamp |
2025-11-09 14:31:23 UTC (02:05:47 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-static_O3 |
| timestamp |
2025-11-09 14:16:55 UTC (02:20:14 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18 |
| timestamp |
2025-11-09 14:10:19 UTC (02:26:51 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-static_O3 |
| timestamp |
2025-11-09 09:56:14 UTC (06:40:55 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_fedora_40-gcc_14-bindist |
| timestamp |
2025-11-09 05:15:20 UTC (11:21:49 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_rhel_8-gcc_8-bindist |
| timestamp |
2025-11-08 23:39:25 UTC (16:57:45 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-ndebug_O3 |
| timestamp |
2025-11-08 19:29:21 UTC (21:07:49 hours ago) |
| result |
warning (update) | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.1 |
| tgt config |
windows_10-msvc_15.9 |
| timestamp |
2025-11-08 11:03:36 UTC (01 05:33:33 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_11-clang_14.0_libc++ |
| timestamp |
2025-11-08 10:48:43 UTC (01 05:48:27 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_11-clang_13.0_libc++ |
| timestamp |
2025-11-08 10:47:38 UTC (01 05:49:31 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-clang_12.0_libc++ |
| timestamp |
2025-11-08 10:47:30 UTC (01 05:49:39 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_11-gcc_11.3 |
| timestamp |
2025-11-08 10:46:59 UTC (01 05:50:11 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_11-clang_13.0 |
| timestamp |
2025-11-08 10:46:12 UTC (01 05:50:57 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_rhel_9-gcc_11-bindist |
| timestamp |
2025-11-08 10:23:16 UTC (01 06:13:53 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-ndebug_O3 |
| timestamp |
2025-11-08 04:41:53 UTC (01 11:55:17 days ago) |
| result |
warning (update) | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_9-clang_8.0_libc++ |
| timestamp |
2025-11-07 19:17:17 UTC (01 21:19:53 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_9-clang_7.0_libc++ |
| timestamp |
2025-11-07 19:12:14 UTC (01 21:24:56 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_9-gcc_8.4 |
| timestamp |
2025-11-07 19:08:40 UTC (01 21:28:30 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_8-gcc_4.9 |
| timestamp |
2025-11-07 19:08:36 UTC (01 21:28:34 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_9-clang_6.0_libc++ |
| timestamp |
2025-11-07 19:03:16 UTC (01 21:33:53 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_11-gcc_10.2-bindist |
| timestamp |
2025-11-07 19:01:32 UTC (01 21:35:37 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-clang_9.0_libc++ |
| timestamp |
2025-11-07 18:58:49 UTC (01 21:38:21 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_9-gcc_7.4 |
| timestamp |
2025-11-07 18:56:03 UTC (01 21:41:06 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-clang_11.0_libc++ |
| timestamp |
2025-11-07 18:55:36 UTC (01 21:41:33 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_9-clang_8.0 |
| timestamp |
2025-11-07 18:52:41 UTC (01 21:44:29 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-clang_9.0 |
| timestamp |
2025-11-07 18:52:29 UTC (01 21:44:40 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_9-clang_6.0 |
| timestamp |
2025-11-07 18:48:51 UTC (01 21:48:18 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_9-clang_7.0 |
| timestamp |
2025-11-07 18:44:00 UTC (01 21:53:09 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-clang_10.0_libc++ |
| timestamp |
2025-11-07 18:35:54 UTC (01 22:01:15 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_11-clang_14.0 |
| timestamp |
2025-11-07 18:32:55 UTC (01 22:04:15 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-clang_12.0 |
| timestamp |
2025-11-07 18:30:15 UTC (01 22:06:55 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-clang_11.0 |
| timestamp |
2025-11-07 18:27:30 UTC (01 22:09:40 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-gcc_10.2 |
| timestamp |
2025-11-07 18:24:32 UTC (01 22:12:37 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-clang_10.0 |
| timestamp |
2025-11-07 18:22:20 UTC (01 22:14:49 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-O3 |
| timestamp |
2025-11-07 18:13:32 UTC (01 22:23:38 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-msvc_17.10-O2 |
| timestamp |
2025-11-07 17:28:11 UTC (01 23:08:58 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-msvc_17.10 |
| timestamp |
2025-11-07 16:59:03 UTC (01 23:38:06 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-msvc_17.10-static_O2 |
| timestamp |
2025-11-07 16:55:20 UTC (01 23:41:49 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14 |
| timestamp |
2025-11-07 16:54:10 UTC (01 23:42:59 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-static_O3 |
| timestamp |
2025-11-07 14:54:24 UTC (02 01:42:45 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.0 |
| tgt config |
windows_10-msvc_14.3 |
| timestamp |
2025-11-07 14:24:55 UTC (02 02:12:15 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-clang_14.0_llvm_msvc_17.2_lld |
| timestamp |
2025-11-07 14:24:03 UTC (02 02:13:06 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.2 |
| tgt config |
windows_10-msvc_16.11 |
| timestamp |
2025-11-07 14:03:26 UTC (02 02:33:44 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.2 |
| tgt config |
windows_10_devmode-msvc_16.11 |
| timestamp |
2025-11-07 14:01:29 UTC (02 02:35:41 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_16.0_libc++ |
| timestamp |
2025-11-07 13:33:31 UTC (02 03:03:39 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_16.0 |
| timestamp |
2025-11-07 13:29:25 UTC (02 03:07:44 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_15.0_libc++ |
| timestamp |
2025-11-07 13:25:03 UTC (02 03:12:06 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_15.0 |
| timestamp |
2025-11-07 13:12:49 UTC (02 03:24:21 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_ubuntu_22.04-gcc_11-bindist |
| timestamp |
2025-11-07 13:09:26 UTC (02 03:27:43 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-freebsd13.3 |
| tgt config |
freebsd_13-clang_17 |
| timestamp |
2025-11-07 06:34:22 UTC (02 10:02:48 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_13 |
| timestamp |
2025-11-07 06:23:07 UTC (02 10:14:02 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_17_libc++ |
| timestamp |
2025-11-07 06:03:32 UTC (02 10:33:37 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_17 |
| timestamp |
2025-11-07 05:24:55 UTC (02 11:12:15 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-clang_18_llvm_msvc_17.10-O2 |
| timestamp |
2025-11-07 04:54:47 UTC (02 11:42:23 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_13.2_mingw_w64-O2 |
| timestamp |
2025-11-07 04:47:51 UTC (02 11:49:19 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-msvc_17.8-O2 |
| timestamp |
2025-11-07 04:40:13 UTC (02 11:56:56 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-gcc_12-bindist |
| timestamp |
2025-11-07 04:33:31 UTC (02 12:03:38 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-clang_18_llvm_msvc_17.10 |
| timestamp |
2025-11-07 04:19:22 UTC (02 12:17:48 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_13.2_mingw_w64 |
| timestamp |
2025-11-07 04:16:25 UTC (02 12:20:44 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-freebsd14.1 |
| tgt config |
freebsd_14-clang_18-O3 |
| timestamp |
2025-11-07 04:10:59 UTC (02 12:26:11 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-freebsd14.1 |
| tgt config |
freebsd_14-clang_18 |
| timestamp |
2025-11-07 03:53:54 UTC (02 12:43:15 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-msvc_17.8-static_O2 |
| timestamp |
2025-11-07 03:52:18 UTC (02 12:44:51 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-clang_18_llvm_msvc_17.10-static_O2 |
| timestamp |
2025-11-07 03:51:37 UTC (02 12:45:32 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-clang_17_msvc_msvc_17.10 |
| timestamp |
2025-11-07 03:50:24 UTC (02 12:46:46 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-freebsd14.1 |
| tgt config |
freebsd_14-clang_18-static_O3 |
| timestamp |
2025-11-07 03:46:10 UTC (02 12:50:59 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-msvc_17.8 |
| timestamp |
2025-11-07 03:40:54 UTC (02 12:56:15 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_13.2_mingw_w64-static_O2 |
| timestamp |
2025-11-07 03:40:50 UTC (02 12:56:19 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_ubuntu_24.04-gcc_13-bindist |
| timestamp |
2025-11-07 03:33:47 UTC (02 13:03:22 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_17_libc++ |
| timestamp |
2025-11-07 03:26:19 UTC (02 13:10:50 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_17 |
| timestamp |
2025-11-07 03:21:24 UTC (02 13:15:46 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-gcc_13.1 |
| timestamp |
2025-11-07 03:20:24 UTC (02 13:16:45 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-O3 |
| timestamp |
2025-11-02 22:00:47 UTC (06 18:36:23 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14 |
| timestamp |
2025-11-02 21:52:20 UTC (06 18:44:49 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-static_O3 |
| timestamp |
2025-11-02 21:51:42 UTC (06 18:45:28 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_10-gcc_9.3 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_11-gcc_12.1 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_18 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-O3 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-static_O3 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++ |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-O3 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-static_O3 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_fedora_39-gcc_13-bindist |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_ubuntu_16.04-clang_3.7_libc++ |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-apple-darwin22.5.0 |
| tgt config |
macos_13-clang_15.0 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0-O3 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0-static_O3 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew-O3 |
| result |
unbuilt |
| toolchain |
public-0.17.0 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew-static_O3 |
| result |
unbuilt |
Changes
Version 0.17.0
* C++20 modules support improvements:
- Named modules support in Clang, including automatic building of the
`std` and `std.compat` standard library modules from libc++ with Clang
18 or later.
- Named modules support in MSVC, including automatic building of the `std`
and `std.compat` standard library modules.
Note: if combining the standard library modules importation with the
standard library headers inclusion, MSVC 17.10 or later is recommended.
- Modules support can now be enabled for any std.cxx value greater or
equal 20 (including `latest`).
- The "C++ Modules Support" section in the manual has been updated to
match the current state of the implementation.
* The `latest` and `experimental` cxx.std values are now mapped to C++26
from GCC 14 and Clang 18.
* The 23 and 2x c.std values are now mapped to /std:clatest starting from
MSVC 17.9. In particular, this option enables C23 typeof support.
* /Zc:preprocessor is now added for the `experimental` cxx.std value from
MSVC 17.9.
* New string_set buildfile value type.
This exposes the std::set<std::string> type to buildfiles.
New functions:
$size(<string-set>)
Subscript returns true if the value is present and false otherwise (so
it is mapped to std::set::contains()). For example:
set = [string_set] a b c
if ($set[b])
...
Note that append (+=) and prepend (=+) have the same semantics
(std::set::insert()). For example:
set = [string_set] a b
set += c b # a b c
set =+ d b # a b c d
Example of iteration:
set = [string_set] a b c
for k: $set
...
* New string_map buildfile value type.
This exposes the std::map<std::string,std::string> type to buildfiles.
New functions:
$size(<string-map>)
$keys(<string-map>)
Subscript can be used to look up a value by key. The result is [null] if
there is no value associated with the specified key. For example:
map = [string_map] a@1 b@2 c@3
b = ($map[b]) # 2
if ($map[z] == [null])
...
Note that append (+=) is overriding (like std::map::insert_or_assign())
while prepend (=+) is not (like std::map::insert()). In a sense, whatever
appears last (from left to right) is kept, which is consistent with what
we expect to happen when specifying the same key repeatedly in a literal
representation. For example:
map = [string_map] a@0 b@2 a@1 # a@1 b@2
map += b@0 c@3 # a@1 b@0 c@3
map =+ b@1 d@4 # a@1 b@0 c@3 d@4
Example of iteration:
map = [string_map] a@1 b@2 c@3
for p: $map
{
k = $first($p)
v = $second($p)
}
While the subscript is mapped to key lookup only, index-based access can
be implemented (with a bit of overhead) using the $keys() function:
map = [string_map] a@1 b@2 c@3
keys = $keys($m)
for i: $integer_sequence(0, $size($keys))
{
k = ($keys[$i])
v = ($map[$k])
}
* New JSON buildfile value types.
New types:
json
json_array
json_object
New functions:
$json.value_type(<json>)
$json.value_size(<json>)
$json.member_{name,value}(<json-member>)
$json.object_names(<json-object>)
$json.array_size(<json-array>)
$json.array_find(<json-array>, <json>)
$json.array_find_index(<json-array>, <json>)
$json.load(<path>)
$json.parse(<text>)
$json.serialize(<json>[, <indentation>])
See "JSON Functions" in the manual for details.
For example, to load a JSON value from a file:
j = $json.load($src_base/board.json)
Or to construct it in a buildfile:
j = [json] one@1 two@([json] 2 3 4) three@([json] x@1 y@-1)
This can also be done incrementally with append/prepend:
j = [json_object]
j += one@1
j += two@([json] 2 3 4)
j += three@([json] x@1 y@-1)
Instead of using this JSON-like syntax, one can also specify valid JSON
input text:
j = [json] '{"one":1, "two":[2, 3, 4], "three":{"x":1, "y":-1}'
Besides the above set of functions, other handy ways to access components
in a JSON value are iteration and subscript. For example:
for m: $j
print $member_name($m) $member_value($m)
print ($j[three])
A subscript can be nested:
print ($j[two][1])
print ($j[three][x])
While a JSON value can be printed directly like any other value, the
representation will not be pretty-printed. As a result, for complex
JSON values, printing a serialized representation might be a more
readable option:
info $serialize($j)
* New json_map and json_set buildfile value types.
These expose the std::map<json_value,json_value> and std::set<json_value>
types to buildfiles.
New functions:
$size(<json-set>)
$size(<json-map>)
$keys(<json-map>)
... More