build2/0.17.0

[full]

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
version 0.17.0
license MIT
repository https://pkg.cppget.org/1/alpha
download build2-0.17.0.tar.gz
sha256 2b1e57fc65771a31526e3a359b3b5e8879e79b89abebe34028847f98413e21d0
project build2
url build2.org
doc-url build2.org/doc.xhtml
src-url git.build2.org/cgit/build2/tree/
topics build systembuild toolchain

Depends (1)

libbutl ^0.17.0

Requires (1)

c++14

Builds

toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-static_O3
timestamp 2024-07-23 05:50:26 UTC (12:37:30 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-O3
timestamp 2024-07-23 05:46:03 UTC (12:41:53 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew
timestamp 2024-07-23 05:38:44 UTC (12:49:12 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
timestamp 2024-07-23 00:45:26 UTC (17:42:30 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 2024-07-23 00:39:58 UTC (17:47:58 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
timestamp 2024-07-23 00:37:43 UTC (17:50:13 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 2024-07-23 00:36:07 UTC (17:51:49 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
timestamp 2024-07-22 19:49:50 UTC (22:38:06 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
timestamp 2024-07-22 19:49:32 UTC (22:38:24 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
timestamp 2024-07-22 19:16:42 UTC (23:11:14 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-O3
timestamp 2024-07-22 19:16:19 UTC (23:11:37 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18
timestamp 2024-07-22 19:12:14 UTC (23:15:42 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
timestamp 2024-07-22 19:11:38 UTC (23:16:18 hours 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 2024-07-22 18:56:20 UTC (23:31:36 hours 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 2024-07-22 18:55:24 UTC (23:32:33 hours 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 2024-07-22 18:53:45 UTC (23:34:12 hours 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 2024-07-22 18:49:50 UTC (23:38:06 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-O3
timestamp 2024-07-22 18:48:16 UTC (23:39:40 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18
timestamp 2024-07-22 18:45:14 UTC (23:42:43 hours 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 2024-07-22 18:45:01 UTC (23:42:55 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_fedora_39-gcc_13-bindist
timestamp 2024-07-22 18:44:15 UTC (23:43:41 hours 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 2024-07-22 18:41:34 UTC (23:46:22 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2024-07-22 18:31:26 UTC (23:56:31 hours 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 2024-07-22 18:31:04 UTC (23:56:53 hours 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 2024-07-22 18:28:44 UTC (23:59:12 hours ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2024-07-22 18:27:18 UTC (01 00:00: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.8-static_O2
timestamp 2024-07-22 18:25:27 UTC (01 00:02:29 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 2024-07-22 18:24:47 UTC (01 00:03:09 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 2024-07-22 18:24:29 UTC (01 00:03:27 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2024-07-22 18:21:54 UTC (01 00:06:02 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2024-07-22 18:21:02 UTC (01 00:06:55 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 2024-07-22 18:19:59 UTC (01 00:07:58 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_15.0
timestamp 2024-07-22 18:15:57 UTC (01 00:11: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.10
timestamp 2024-07-22 18:15:28 UTC (01 00:12:28 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 2024-07-22 18:13:34 UTC (01 00:14:23 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 2024-07-22 18:04:13 UTC (01 00:23:44 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 2024-07-22 17:57:52 UTC (01 00:30:04 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 2024-07-22 17:57:14 UTC (01 00:30:42 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18-O3
timestamp 2024-07-22 17:17:58 UTC (01 01:09:58 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 2024-07-22 17:16:52 UTC (01 01:11:04 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 2024-07-22 17:16:24 UTC (01 01:11:32 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_17
timestamp 2024-07-22 17:14:51 UTC (01 01:13:05 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18
timestamp 2024-07-22 17:13:10 UTC (01 01:14:46 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd13.3
tgt config freebsd_13-clang_17
timestamp 2024-07-22 17:12:48 UTC (01 01:15:08 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 2024-07-22 17:10:58 UTC (01 01:16:58 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 2024-07-22 14:00:36 UTC (01 04:27:20 days ago)
result warning (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13
timestamp 2024-07-22 12:19:22 UTC (01 06:08:34 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17_libc++
timestamp 2024-07-22 12:18:52 UTC (01 06:09:04 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17
timestamp 2024-07-22 12:17:34 UTC (01 06:10:22 days ago)
result success | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
timestamp 2024-07-22 12:05:59 UTC (01 06:21:57 days ago)
result warning (update) | 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 2024-07-22 10:57:57 UTC (01 07:29:59 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 2024-07-22 10:57:33 UTC (01 07:30:24 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 2024-07-22 10:55:55 UTC (01 07:32:01 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 2024-07-22 10:55:42 UTC (01 07:32:15 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 2024-07-22 10:55:33 UTC (01 07:32:24 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.1
tgt config windows_10-msvc_15.9
timestamp 2024-07-22 10:55:27 UTC (01 07:32:29 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 2024-07-22 10:55:06 UTC (01 07:32:51 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_9-clang_8.0_libc++
timestamp 2024-07-22 10:54:55 UTC (01 07:33:01 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_rhel_9.2-gcc_11-bindist
timestamp 2024-07-22 10:54:55 UTC (01 07:33:01 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 2024-07-22 10:54:51 UTC (01 07:33:05 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 2024-07-22 10:54:41 UTC (01 07:33:15 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_ubuntu_16.04-clang_3.7_libc++
timestamp 2024-07-22 10:54:33 UTC (01 07:33:23 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 2024-07-22 10:54:29 UTC (01 07:33:27 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 2024-07-22 10:54:23 UTC (01 07:33:33 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 2024-07-22 10:54:15 UTC (01 07:33:42 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 2024-07-22 10:54:00 UTC (01 07:33:56 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 2024-07-22 10:53:53 UTC (01 07:34:03 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 2024-07-22 10:53:49 UTC (01 07:34:07 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 2024-07-22 10:53:41 UTC (01 07:34:16 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 2024-07-22 10:53:36 UTC (01 07:34:21 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_11-gcc_12.1
timestamp 2024-07-22 10:53:23 UTC (01 07:34:34 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 2024-07-22 10:53:21 UTC (01 07:34:36 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 2024-07-22 10:53:11 UTC (01 07:34:45 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 2024-07-22 10:53:06 UTC (01 07:34:50 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 2024-07-22 10:53:01 UTC (01 07:34:55 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 2024-07-22 10:52:49 UTC (01 07:35:07 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 2024-07-22 10:52:40 UTC (01 07:35:16 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 2024-07-22 10:52:40 UTC (01 07:35:16 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 2024-07-22 10:52:32 UTC (01 07:35:24 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 2024-07-22 10:52:26 UTC (01 07:35:30 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 2024-07-22 10:52:25 UTC (01 07:35:32 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 2024-07-22 10:52:13 UTC (01 07:35:43 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 2024-07-22 10:52:05 UTC (01 07:35:51 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_10-gcc_9.3
timestamp 2024-07-22 10:51:59 UTC (01 07:35:57 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 2024-07-22 10:51:07 UTC (01 07:36:49 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 2024-07-22 10:50:51 UTC (01 07:37:05 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 2024-07-22 10:50:48 UTC (01 07:37:09 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 2024-07-22 10:50:37 UTC (01 07:37:19 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-static_O3
timestamp 2024-07-15 08:38:51 UTC (08 09:49:05 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-O3
timestamp 2024-07-15 08:37:58 UTC (08 09:49:58 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0
timestamp 2024-07-15 08:37:06 UTC (08 09:50:50 days ago)
result success | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_fedora_40-gcc_14-bindist
timestamp 2024-07-14 17:44:41 UTC (09 00:43:15 days ago)
result success | log | rebuild

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