Library Metadata

The sources for each library, or possibly a number of related libraries, is contained in a sub-module of the Boost super-project. Each sub-module must contain a file which describes the libraries that it contains. This is located at meta/libraries.json.

Json Objects

If the sub-module contains a single library, libraries.json should contain a single object, for example:

{
    "key": "unordered",
    "name": "Unordered",
    "authors": [
        "Daniel James"
    ],
    "maintainers": [
        "Daniel James <dnljms -at- gmail.com>"
    ],
    "description": "Unordered associative containers.",
    "std": [
        "tr1"
    ],
    "category": [
        "Containers"
    ],
    "cxxstd": "03"
}

Multiple Libraries

If the sub-module contains multiple libraries, libraries.json should contain a list of objects, for example:

[
    {
        "key": "algorithm",
        "name": "Algorithm",
        "authors": [
            "Marshall Clow"
        ],
        "description": "A collection of useful generic algorithms.",
        "category": [
            "Algorithms"
        ],
        "maintainers": [
            "Marshall Clow <marshall -at- idio.com>"
        ],
        "cxxstd": "03"
    },
    {
        "key": "algorithm/minmax",
        "name": "Min-Max",
        "authors": [
            "Hervé Brönnimann"
        ],
        "description": "Standard library extensions for simultaneous min/max and min/max element computations.",
        "documentation": "minmax/",
        "category": [
            "Algorithms"
        ],
        "maintainers": [
            "Marshall Clow <marshall -at- idio.com>"
        ],
        "cxxstd": "03"
    },
    {
        "key": "algorithm/string",
        "name": "String Algo",
        "authors": [
            "Pavol Droba"
        ],
        "description": "String algorithms library.",
        "documentation": "string/",
        "category": [
            "Algorithms",
            "String"
        ],
        "maintainers": [
            "Marshall Clow <marshall -at- idio.com>"
        ],
        "cxxstd": "03"
    }
]

Json Fields

All meta files should contain key, name, description, authors, maintainers, and category. The other fields are optional.

key

This is a unique identifier for the library, typically the path to it from the libs directory.

boost-version

The Boost version where the library was first added, such as: "boost-version": "1.33.0".

name

Human friendly name of the library.

status

Used for libraries with special statuses, currently can have the value deprecated for deprecated libraries, and hidden for libraries which shouldn’t be displayed to the user. Hidden libraries include detail and winapi, both of which are hidden because they are used as components of other libraries, and not intended as stand-alone libraries themselves.

The library coroutine is marked as "deprecated", though this does not mean full deprecation as this library is part of the Boost super-project, and will be tested each time the super-project is tested.

authors

Strings containing the names of the authors.

description

A brief description of the purpose of the library.

maintainers

One, or more, strings containing both the names and, usually, email addresses of the maintainers.

std

This is now an unused field.

category

A list of one or more of the Categories that the library belongs to.

documentation

Path to the documentation, defaults to the root of the module.

cxxstd

The minimum C++ standard compilation level at which all, or the large majority, of the functionality in the library is usable. The possible values are:

  • 98 = C++98

  • 03 = C++03

  • 11 = C++11

  • 14 = C++14

  • 17 = C++17

  • 20 = C++20

  • 23 = C++23

The level only indicates the minimum level, which means that the functionality of the library can be used when compiling at that level or at a higher level. There may be some functionality in the library which will need a higher C++ standard compilation level than is indicated by this value, but the information about that specific functionality will be provided for the end-user within the documentation for that library. If a library does not have this field it indicates that the end-user will have to read the library documentation to understand what C++ standard compilation level is needed to use the library.

Note that 11 and 14 are commonly set minimum levels.

Categories

A library can be in one or more categories. The string is not case-sensitive. In some cases, the string used to describe the category on our website is slightly more descriptive than the string used in the category field.

Metadata Category Website Category

Algorithms

Algorithms

Concurrent

Concurrent Programming

Containers

Containers

Correctness

Correctness and testing

Data

Data structures

Domain

Domain Specific

Emulation

Language Features Emulation

Error-handling

Error handling and recovery

Function-objects

Function objects and higher-order programming

Generic

Generic Programming

Image-processing

Image processing

IO

Input/Output

Inter-language

Inter-language support

Iterators

Iterators

Math

Math and numerics

Memory

Memory

Metaprogramming

Template Metaprogramming

Miscellaneous

Miscellaneous

Parsing

Parsing

Patterns

Patterns and Idioms

Preprocessor

Preprocessor Metaprogramming

Programming

Programming Interfaces

State

State Machines

String

String and text processing

System

System

Workarounds

Broken compiler workarounds

See Also