Document number:

ISO/IEC/JTC1/SC22/WG21/D2716R0

Date:

2022-11-11

Audience:

SG15

Reply-to:

René Ferdinand Rivera Morell - grafikrobot at gmail dot com - B2 Maintainer

1. Abstract

This proposes an initial collection of definitions used in the C++ tooling ecosystem. The definitions herein should provide minimal coverage for well understood tools, processes, and concepts currently used in the ecosystem.

2. Revision History

2.1. Revision 0 (November 2022)

Initial text.

3. Motivation

We need a common language to refer to the many components and aspects of the ecosystem. With a shared understanding of components like: compilers, linkers, analyzers, debuggers, package managers, preprocessors, source files, object files, library files, shared library files, executables, and more, we can subsequently formulate specifications for them.

4. Wording

Wording is new and meant for a prospective C++ Ecosystem Internal Standard as proposed in P2656R0. [1]

Add a "Terms and definitions" chapter with the following content.

4.1. Terms and definitions [intro.defs]

For the purposes of this document, the terms and definitions given in:

 — ISO/IEC 2382, [2]

 — ISO/IEC/IEEE 24765, [3]

 — and the following apply.

ISO and IEC maintain terminology databases for use in standardization at the following addresses:

 — ISO Online browsing platform: available at https://www.iso.org/obp

 — IEC Electropedia: available at https://www.electropedia.org/

Terms that are used only in a small portion of this document are defined where they are used and italicized where they are defined.

4.1.1. build executor [defns.bldexec]

build tool that executes a set of commands in order to complete a build

[ Note 1: Examples: ninja, make, bazel.  — end note ]

4.1.2. build tool [defns.bldtool]

tool used primarily for building software

[ Note 1: Examples: compiler, build executor, build system.  — end note ]

4.1.3. build system [defns.bldsys]

tool which models a build of a set of sources into a set of artifacts

[ Note 1: Such a tool may be a build executor itself or write out a plan for another build executor to perform. Examples: cmake, meson, bazel, gn, build2, B2.  — end note ]

4.1.4. sanitizer [defns.san]

4.1.5. analyzer [defns.anlzr]

tool that diagnoses coding flaws in software programs

[ Note 1: Analyzers may include static analysis tools, tools within a compiler suite, or tools in other contexts.  — end note ]

[ Note 2: This definition is compatible with the matching one in ISO/IEC TS 17961:2013. [4]  — end note ]

4.1.6. static analyzer [defns.stan]

analyzer that operates on software source code without executing it

[ Note 1: This definition is compatible with the matching one in ISO/IEC TS 17961:2013. [5]  — end note ]


1. C++ Ecosystem Internal Standard (https://wg21.link/P2656R0)
2. ISO/IEC 2382:2015(en) Information technology — Vocabulary (https://www.iso.org/obp/ui#iso:std:iso-iec:2382:ed-1:v2:en)
3. ISO/IEC/IEEE 24765:2017(en) Systems and software engineering — Vocabulary (https://www.iso.org/obp/ui#iso:std:iso-iec-ieee:24765:ed-2:v1:en)
4. ISO/IEC TS 17961:2013(en) Information technology — Programming languages, their environments and system software interfaces — C secure coding rules (https://www.iso.org/obp/ui#iso:std:iso-iec:ts:17961:ed-1:v1:en:term:4.1)
5. ISO/IEC TS 17961:2013(en) Information technology — Programming languages, their environments and system software interfaces — C secure coding rules (https://www.iso.org/obp/ui#iso:std:iso-iec:ts:17961:ed-1:v1:en:term:4.13)