{
  "schema_version": "1.0",
  "id": "c",
  "name": "C",
  "as_of": "2026-09-03",
  "scope": "A representative architecture graph for modern C from standards and translation through ABIs, runtimes, kernels, embedded systems, robotics, autonomous vehicles, and multimedia. Components expose durable interfaces and trust boundaries; inclusion is not a popularity ranking or endorsement.",
  "stable": {
    "version": "C23",
    "released": "2024-10-31",
    "edition": "ISO/IEC 9899:2024",
    "source_id": "iso-c23"
  },
  "narrative_source_ids": [
    "ritchie-history",
    "wg14-projects",
    "kernel-home",
    "cisa-memory-safety",
    "ffmpeg-download"
  ],
  "layers": [
    {
      "id": "standards-contracts",
      "label": "Standards & contracts",
      "class": "s-static",
      "description": "Language semantics, operating-system interfaces, binary contracts, coding rules, and modular avionics interfaces."
    },
    {
      "id": "source-build",
      "label": "Source & build",
      "class": "s-dynamic",
      "description": "Translation units, headers, build graphs, dependency metadata, and package acquisition."
    },
    {
      "id": "compiler-binary",
      "label": "Compiler & binary",
      "class": "s-gc",
      "description": "Preprocessing, compilation, assembly, linking, object formats, and target-specific code generation."
    },
    {
      "id": "runtime-assurance",
      "label": "Runtime & assurance",
      "class": "s-ownership",
      "description": "Hosted and embedded C libraries, debuggers, runtime instrumentation, and static analysis."
    },
    {
      "id": "kernel-lowlevel",
      "label": "Kernel & low level",
      "class": "s-manual",
      "description": "Linux configuration and build, core subsystems, device interfaces, eBPF, and machine emulation."
    },
    {
      "id": "embedded-realtime",
      "label": "Embedded & real time",
      "class": "s-neutral",
      "description": "Processor interfaces, board startup, interrupts, RTOS kernels, device models, and qualification-oriented systems."
    },
    {
      "id": "robotics-autonomy",
      "label": "Robotics & autonomy",
      "class": "s-static",
      "description": "C middleware seams, deterministic executors, autopilot stacks, and vehicle communication protocols."
    },
    {
      "id": "media",
      "label": "Media & signal paths",
      "class": "s-dynamic",
      "description": "FFmpeg tools and libraries, graph-based transforms, architecture-specific DSP, and hardware acceleration."
    }
  ],
  "components": [
    {
      "id": "iso-c",
      "name": "ISO C",
      "short": "C23 semantics",
      "layer": "standards-contracts",
      "status": "standard",
      "map": true,
      "role": "Defines the abstract machine, translation units, types, expressions, library surface, conformance, and portability boundaries; it does not define a platform ABI or build system.",
      "source_ids": ["iso-c23", "wg14-projects"]
    },
    {
      "id": "posix",
      "name": "POSIX",
      "short": "OS C API",
      "layer": "standards-contracts",
      "status": "standard",
      "map": true,
      "role": "Adds portable operating-system interfaces such as processes, files, threads, signals, and sockets around the ISO C base on conforming systems.",
      "source_ids": ["posix-2024"]
    },
    {
      "id": "platform-abi",
      "name": "Platform ABI",
      "short": "calls + layout",
      "layer": "standards-contracts",
      "status": "standard",
      "map": true,
      "role": "Fixes calling convention, register use, data layout, stack rules, object-file conventions, relocations, and dynamic-linking contracts for a target platform.",
      "source_ids": ["x86-psabi", "arm-aapcs", "riscv-psabi"]
    },
    {
      "id": "assurance-rules",
      "name": "Assurance rules",
      "short": "MISRA + CERT",
      "layer": "standards-contracts",
      "status": "standard",
      "map": true,
      "role": "Restricts or disciplines C for predictable, safe, secure, and reviewable code; compliance requires process, evidence, and controlled deviations, not only a linter switch.",
      "source_ids": ["misra-c", "cert-c"]
    },
    {
      "id": "face",
      "name": "FACE",
      "short": "avionics seams",
      "layer": "standards-contracts",
      "status": "standard",
      "map": false,
      "role": "Defines architectural segments and interfaces for portable airborne software components across general-purpose, safety, and security profiles.",
      "source_ids": ["face-standard"]
    },
    {
      "id": "mosa",
      "name": "DoD MOSA",
      "short": "open modules",
      "layer": "standards-contracts",
      "status": "standard",
      "map": false,
      "role": "Frames modular, loosely coupled defense-system architectures around open interfaces, replaceable components, conformance, and life-cycle sustainment.",
      "source_ids": ["dod-mosa"]
    },
    {
      "id": "source-headers",
      "name": "Sources + headers",
      "short": ".c + .h units",
      "layer": "source-build",
      "status": "project-code",
      "map": true,
      "role": "Organizes declarations and definitions into translation units; textual inclusion makes header ownership, macro state, feature-test macros, and include order architectural concerns.",
      "source_ids": ["iso-c23"]
    },
    {
      "id": "make",
      "name": "Make",
      "short": "dependency graph",
      "layer": "source-build",
      "status": "build-tool",
      "map": true,
      "role": "Expresses file-oriented targets, prerequisites, recipes, and incremental rebuild rules; many systems expose or build a higher-level generator above it.",
      "source_ids": ["gnu-make"]
    },
    {
      "id": "cmake",
      "name": "CMake",
      "short": "build generator",
      "layer": "source-build",
      "status": "build-tool",
      "map": true,
      "role": "Models targets, usage requirements, tests, installation, and export metadata, then generates native build-system inputs for multiple platforms.",
      "source_ids": ["cmake-docs"]
    },
    {
      "id": "meson",
      "name": "Meson + Ninja",
      "short": "fast builds",
      "layer": "source-build",
      "status": "build-tool",
      "map": true,
      "role": "Provides a declarative project model commonly executed by Ninja, with explicit cross files and dependency objects for native and cross builds.",
      "source_ids": ["meson-docs", "ninja-manual"]
    },
    {
      "id": "pkg-config",
      "name": "pkg-config",
      "short": "compile/link flags",
      "layer": "source-build",
      "status": "build-tool",
      "map": false,
      "role": "Publishes compiler and linker metadata for installed libraries through .pc files; it describes an installation but does not resolve or fetch source packages.",
      "source_ids": ["pkg-config-guide"]
    },
    {
      "id": "dependency-manager",
      "name": "Dependency managers",
      "short": "Conan + vcpkg",
      "layer": "source-build",
      "status": "community-choice",
      "map": false,
      "role": "Acquires and builds versioned native dependencies and integrates them with build systems; system packages, vendoring, submodules, Conan, and vcpkg imply different provenance contracts.",
      "source_ids": ["conan-docs", "vcpkg-docs"]
    },
    {
      "id": "preprocessor",
      "name": "Preprocessor",
      "short": "tokens + macros",
      "layer": "compiler-binary",
      "status": "official-tool",
      "map": true,
      "role": "Performs inclusion, conditional selection, and macro replacement before the C front end; generated tokens and configuration choices form the effective program.",
      "source_ids": ["gcc-cpp"]
    },
    {
      "id": "gcc",
      "name": "GCC",
      "short": "GNU compiler",
      "layer": "compiler-binary",
      "status": "implementation",
      "map": true,
      "role": "Implements ISO and GNU C dialects, target code generation, optimization, LTO, inline assembly constraints, diagnostics, and a compiler-driver interface to assembler and linker.",
      "source_ids": ["gcc-manual", "gcc-asm"]
    },
    {
      "id": "clang-llvm",
      "name": "Clang / LLVM",
      "short": "LLVM toolchain",
      "layer": "compiler-binary",
      "status": "implementation",
      "map": true,
      "role": "Supplies a C front end, LLVM IR pipeline, target backends, LTO, integrated assembler options, diagnostics, and an alternative full toolchain for Linux and other platforms.",
      "source_ids": ["clang-docs", "kernel-llvm"]
    },
    {
      "id": "assembler",
      "name": "Assembler",
      "short": ".s/.S to object",
      "layer": "compiler-binary",
      "status": "official-tool",
      "map": true,
      "role": "Encodes instructions, directives, sections, symbols, and relocations into target object files from compiler output or hand-written assembly.",
      "source_ids": ["binutils-as"]
    },
    {
      "id": "msvc",
      "name": "MSVC",
      "short": "Windows C",
      "layer": "compiler-binary",
      "status": "implementation",
      "map": false,
      "role": "Implements Microsoft's C dialect and Windows compiler, linker, object, debug, and runtime conventions; portability must separate ISO behavior from platform contracts.",
      "source_ids": ["msvc-c"]
    },
    {
      "id": "linker",
      "name": "Linker",
      "short": "symbols + layout",
      "layer": "compiler-binary",
      "status": "official-tool",
      "map": false,
      "role": "Resolves symbols and relocations, selects archive members, lays out sections, applies linker scripts, and emits executables, shared objects, modules, or firmware images.",
      "source_ids": ["binutils-ld", "linker-scripts"]
    },
    {
      "id": "object-format",
      "name": "ELF / COFF",
      "short": "binary contract",
      "layer": "compiler-binary",
      "status": "external-boundary",
      "map": false,
      "role": "Carries sections, symbols, relocations, visibility, debug information, and loader metadata between compilers, assemblers, linkers, loaders, debuggers, and analysis tools.",
      "source_ids": ["elf-gabi", "pe-coff"]
    },
    {
      "id": "glibc",
      "name": "glibc",
      "short": "GNU libc",
      "layer": "runtime-assurance",
      "status": "implementation",
      "map": true,
      "role": "Provides the ISO C and POSIX-facing user-space runtime on GNU systems, including startup, allocation, threads, dynamic linking integration, locale, I/O, and system-call wrappers.",
      "source_ids": ["glibc-manual"]
    },
    {
      "id": "musl",
      "name": "musl",
      "short": "small libc",
      "layer": "runtime-assurance",
      "status": "implementation",
      "map": true,
      "role": "Implements a compact Linux libc with strong static-linking support and standards-oriented interfaces, representing a different compatibility and deployment tradeoff from glibc.",
      "source_ids": ["musl-about"]
    },
    {
      "id": "embedded-libc",
      "name": "Embedded libc",
      "short": "newlib + picolibc",
      "layer": "runtime-assurance",
      "status": "implementation",
      "map": true,
      "role": "Supplies freestanding and bare-metal C library pieces that are retargeted to board I/O, allocation, process, and termination hooks rather than assuming a hosted Unix process.",
      "source_ids": ["newlib", "picolibc"]
    },
    {
      "id": "debuggers",
      "name": "GDB / LLDB",
      "short": "source + machine",
      "layer": "runtime-assurance",
      "status": "analysis-tool",
      "map": true,
      "role": "Correlates machine state and debug information with C source, supports breakpoints and unwinding, and often reaches remote embedded targets through a debug server.",
      "source_ids": ["gdb-manual", "lldb-docs"]
    },
    {
      "id": "sanitizers",
      "name": "Sanitizers",
      "short": "runtime checks",
      "layer": "runtime-assurance",
      "status": "analysis-tool",
      "map": false,
      "role": "Instruments selected undefined behavior, memory access, data race, leak, and control-flow properties in test builds; coverage and platform support vary and absence of a finding is not proof.",
      "source_ids": ["clang-asan", "clang-ubsan"]
    },
    {
      "id": "static-analysis",
      "name": "Static analysis",
      "short": "paths + rules",
      "layer": "runtime-assurance",
      "status": "analysis-tool",
      "map": false,
      "role": "Checks paths, data flow, API contracts, and coding-rule subsets without executing the program; project modeling and deviation handling determine useful coverage.",
      "source_ids": ["clang-analyzer", "cert-c"]
    },
    {
      "id": "linux-kernel",
      "name": "Linux kernel",
      "short": "GNU C11 core",
      "layer": "kernel-lowlevel",
      "status": "platform",
      "map": true,
      "role": "Runs privileged core services and hardware management. The current documentation specifies GNU C11 for C code, alongside supported Rust, and no user-space libc is available inside the kernel.",
      "source_ids": ["kernel-home", "kernel-language"]
    },
    {
      "id": "kconfig-kbuild",
      "name": "Kconfig + kbuild",
      "short": "select + assemble",
      "layer": "kernel-lowlevel",
      "status": "build-tool",
      "map": true,
      "role": "Turns configuration symbols, architecture rules, generated headers, C and assembly objects, archives, linker scripts, and post-link steps into vmlinux, modules, and boot images.",
      "source_ids": ["kernel-kbuild", "kernel-kconfig"]
    },
    {
      "id": "kernel-subsystems",
      "name": "Kernel subsystems",
      "short": "VFS/net/mm/sched",
      "layer": "kernel-lowlevel",
      "status": "project-code",
      "map": true,
      "role": "Provides scheduler, memory management, VFS, networking, block, security, synchronization, and other shared internal contracts above architecture-specific primitives.",
      "source_ids": ["kernel-core-api"]
    },
    {
      "id": "drivers-modules",
      "name": "Drivers + modules",
      "short": "hardware boundary",
      "layer": "kernel-lowlevel",
      "status": "project-code",
      "map": true,
      "role": "Binds buses and devices to kernel subsystem interfaces; code may be built in or loaded as a module but remains in the kernel protection domain.",
      "source_ids": ["kernel-driver-api", "kernel-modules"]
    },
    {
      "id": "ebpf",
      "name": "eBPF",
      "short": "verified VM ISA",
      "layer": "kernel-lowlevel",
      "status": "platform",
      "map": false,
      "role": "Loads restricted programs through a verifier and JIT/interpreter path for tracing, networking, and security hooks; its instruction and helper contracts differ from native C even when source is written in C.",
      "source_ids": ["kernel-bpf"]
    },
    {
      "id": "qemu",
      "name": "QEMU",
      "short": "system emulation",
      "layer": "kernel-lowlevel",
      "status": "analysis-tool",
      "map": false,
      "role": "Emulates complete machines or user-mode targets for cross-platform bring-up, kernel and firmware testing, debugging, and CI before or alongside hardware-in-the-loop.",
      "source_ids": ["qemu-system"]
    },
    {
      "id": "cmsis",
      "name": "CMSIS",
      "short": "Arm core APIs",
      "layer": "embedded-realtime",
      "status": "standard",
      "map": true,
      "role": "Standardizes processor-core access, device support, driver and RTOS interfaces, DSP/NN libraries, debug access, and pack-based delivery across Arm microcontrollers.",
      "source_ids": ["cmsis-overview"]
    },
    {
      "id": "bsp-startup-isr",
      "name": "BSP + startup + ISR",
      "short": "reset to main",
      "layer": "embedded-realtime",
      "status": "project-code",
      "map": true,
      "role": "Owns reset entry, vector tables, clocks, memory initialization, linker layout, interrupt handlers, peripheral access, and the board-specific seam between C and assembly.",
      "source_ids": ["cmsis-startup", "linker-scripts"]
    },
    {
      "id": "freertos",
      "name": "FreeRTOS",
      "short": "small RTOS",
      "layer": "embedded-realtime",
      "status": "platform",
      "map": true,
      "role": "Provides a priority scheduler, tasks, queues, notifications, semaphores, timers, memory-allocation choices, and portable architecture layers for constrained microcontrollers.",
      "source_ids": ["freertos-kernel"]
    },
    {
      "id": "zephyr",
      "name": "Zephyr",
      "short": "configured RTOS",
      "layer": "embedded-realtime",
      "status": "platform",
      "map": true,
      "role": "Combines an RTOS kernel, device-driver model, devicetree, Kconfig, CMake/west builds, networking, security, and safety-oriented project processes across many boards.",
      "source_ids": ["zephyr-docs", "zephyr-devicetree"]
    },
    {
      "id": "rtems",
      "name": "RTEMS",
      "short": "real-time executive",
      "layer": "embedded-realtime",
      "status": "platform",
      "map": false,
      "role": "Provides a real-time executive with Classic and POSIX APIs, BSP and driver layers, multiprocessor support, and documented engineering artifacts for critical systems.",
      "source_ids": ["rtems-docs"]
    },
    {
      "id": "nuttx",
      "name": "NuttX",
      "short": "POSIX RTOS",
      "layer": "embedded-realtime",
      "status": "platform",
      "map": false,
      "role": "Provides a small POSIX-oriented RTOS, board and driver model, configuration system, and protected or flat build modes; it is PX4's primary flight-controller RTOS.",
      "source_ids": ["nuttx-docs", "px4-architecture"]
    },
    {
      "id": "ros2-rcl",
      "name": "ROS 2 rcl",
      "short": "C client core",
      "layer": "robotics-autonomy",
      "status": "official-library",
      "map": true,
      "role": "Provides the public C client-library core used by language-specific clients, while remaining independent of a concrete middleware implementation.",
      "source_ids": ["ros2-interfaces"]
    },
    {
      "id": "ros2-rmw",
      "name": "ROS 2 rmw",
      "short": "middleware seam",
      "layer": "robotics-autonomy",
      "status": "official-library",
      "map": true,
      "role": "Defines a C interface between ROS client libraries and replaceable DDS, RTPS, Zenoh, or other middleware implementations.",
      "source_ids": ["ros2-interfaces"]
    },
    {
      "id": "micro-ros-rclc",
      "name": "micro-ROS rclc",
      "short": "deterministic C",
      "layer": "robotics-autonomy",
      "status": "domain-project",
      "map": true,
      "role": "Adds a C convenience and executor layer for resource-constrained robotics, including controlled callback ordering and trigger conditions for real-time patterns.",
      "source_ids": ["rclc-docs", "ros2-executors"]
    },
    {
      "id": "px4",
      "name": "PX4",
      "short": "flight stack",
      "layer": "robotics-autonomy",
      "status": "domain-project",
      "map": true,
      "role": "Structures an autonomous vehicle as drivers, uORB messaging, estimation, control, navigation, communication, and actuator paths over NuttX or POSIX platforms.",
      "source_ids": ["px4-architecture", "px4-uorb"]
    },
    {
      "id": "ardupilot",
      "name": "ArduPilot",
      "short": "autopilot suite",
      "layer": "robotics-autonomy",
      "status": "domain-project",
      "map": false,
      "role": "Implements vehicle applications over shared libraries and a hardware abstraction layer, targeting embedded boards and simulation environments.",
      "source_ids": ["ardupilot-overview"]
    },
    {
      "id": "mavlink",
      "name": "MAVLink",
      "short": "vehicle protocol",
      "layer": "robotics-autonomy",
      "status": "standard",
      "map": false,
      "role": "Defines compact messages and generated C interfaces across flight controllers, companion computers, payloads, and ground stations; transport and system safety remain separate concerns.",
      "source_ids": ["mavlink-guide"]
    },
    {
      "id": "ffmpeg",
      "name": "FFmpeg tools",
      "short": "ffmpeg + ffprobe",
      "layer": "media",
      "status": "domain-project",
      "map": true,
      "role": "Provides command-line orchestration for ingest, probing, decode, filter, encode, mux, streaming, device I/O, and hardware acceleration over the FFmpeg libraries.",
      "source_ids": ["ffmpeg-download", "ffmpeg-docs"]
    },
    {
      "id": "libavformat",
      "name": "libavformat",
      "short": "demux + mux + I/O",
      "layer": "media",
      "status": "official-library",
      "map": true,
      "role": "Maps protocols and container formats to timestamped compressed packets and writes packets back to containers or streams.",
      "source_ids": ["ffmpeg-modules", "libavformat-docs"]
    },
    {
      "id": "libavcodec",
      "name": "libavcodec",
      "short": "decode + encode",
      "layer": "media",
      "status": "official-library",
      "map": true,
      "role": "Transforms compressed packets and coded data into decoded frames, or frames into encoded packets, while exposing codec capabilities and hardware contexts.",
      "source_ids": ["ffmpeg-modules"]
    },
    {
      "id": "libavfilter",
      "name": "libavfilter",
      "short": "frame graph",
      "layer": "media",
      "status": "official-library",
      "map": true,
      "role": "Builds graph-based audio and video frame transformations with explicit pads, links, negotiation, scheduling, and source/sink boundaries.",
      "source_ids": ["ffmpeg-modules"]
    },
    {
      "id": "libavutil-convert",
      "name": "Utility + conversion libs",
      "short": "avutil/swscale/swr",
      "layer": "media",
      "status": "official-library",
      "map": false,
      "role": "Provides common frames, buffers, pixel and sample metadata plus video scaling/color conversion and audio resampling/mixing services.",
      "source_ids": ["ffmpeg-modules"]
    },
    {
      "id": "optimized-dsp",
      "name": "SIMD assembly",
      "short": "x86/Arm/RISC-V",
      "layer": "media",
      "status": "project-code",
      "map": false,
      "role": "Implements measured codec, transform, pixel, and audio kernels in target intrinsics or assembly behind runtime CPU dispatch and scalar C fallbacks.",
      "source_ids": ["ffmpeg-checkasm", "ffmpeg-developer"]
    },
    {
      "id": "hardware-accel",
      "name": "Hardware acceleration",
      "short": "device codecs",
      "layer": "media",
      "status": "external-boundary",
      "map": false,
      "role": "Moves selected decode, encode, mapping, or filtering work through platform APIs and device surfaces, introducing format, lifetime, synchronization, and fallback boundaries.",
      "source_ids": ["ffmpeg-hwaccel"]
    }
  ],
  "relationships": [
    {"id":"c-specifies-source","from":"iso-c","to":"source-headers","kind":"specifies","label":"defines translation units, declarations, definitions, preprocessing tokens, and library contracts","source_ids":["iso-c23"]},
    {"id":"posix-extends-c","from":"posix","to":"iso-c","kind":"extends","label":"adopts the C language and library while adding operating-system interfaces","source_ids":["posix-2024"]},
    {"id":"abi-constrains-codegen","from":"platform-abi","to":"gcc","kind":"configures","label":"constrains target calling convention, layout, symbols, and relocation behavior","source_ids":["x86-psabi","arm-aapcs","riscv-psabi"]},
    {"id":"assurance-constrains-source","from":"assurance-rules","to":"source-headers","kind":"checks","label":"restricts risky constructs and requires documented project rules and deviations","source_ids":["misra-c","cert-c"]},
    {"id":"face-applies-posix","from":"face","to":"posix","kind":"depends-on","label":"uses selected operating-system and language interfaces within architectural profiles","source_ids":["face-standard"]},
    {"id":"mosa-frames-face","from":"mosa","to":"face","kind":"integrates-with","label":"uses standards-based severable interfaces as a defense modularity mechanism","source_ids":["dod-mosa","face-standard"]},
    {"id":"make-builds-source","from":"make","to":"source-headers","kind":"builds","label":"models prerequisites and recipes for translation-unit outputs","source_ids":["gnu-make"]},
    {"id":"cmake-generates-make","from":"cmake","to":"make","kind":"generates","label":"can generate native Makefile build graphs","source_ids":["cmake-docs"]},
    {"id":"meson-generates-ninja","from":"meson","to":"source-headers","kind":"builds","label":"generates and executes a target graph, commonly through Ninja","source_ids":["meson-docs","ninja-manual"]},
    {"id":"pkgconfig-feeds-build","from":"pkg-config","to":"cmake","kind":"configures","label":"supplies installed dependency compiler and linker metadata","source_ids":["pkg-config-guide","cmake-docs"]},
    {"id":"dependency-feeds-build","from":"dependency-manager","to":"cmake","kind":"integrates-with","label":"acquires native dependencies and exports build-system integration","source_ids":["conan-docs","vcpkg-docs"]},
    {"id":"source-enters-cpp","from":"source-headers","to":"preprocessor","kind":"preprocesses","label":"feeds source files, included headers, macro state, and conditional configuration","source_ids":["iso-c23","gcc-cpp"]},
    {"id":"cpp-feeds-gcc","from":"preprocessor","to":"gcc","kind":"invokes","label":"produces the token stream parsed and analyzed by the GNU C front end","source_ids":["gcc-cpp","gcc-manual"]},
    {"id":"cpp-feeds-clang","from":"preprocessor","to":"clang-llvm","kind":"invokes","label":"produces the token stream parsed and lowered by Clang","source_ids":["clang-docs"]},
    {"id":"gcc-emits-assembly","from":"gcc","to":"assembler","kind":"lowers-to","label":"emits target instructions as assembly text or integrated assembler input","source_ids":["gcc-manual","binutils-as"]},
    {"id":"clang-emits-object","from":"clang-llvm","to":"assembler","kind":"lowers-to","label":"lowers LLVM IR to target instructions and object representation","source_ids":["clang-docs"]},
    {"id":"msvc-emits-object","from":"msvc","to":"object-format","kind":"produces","label":"emits Windows COFF objects and debug information under Microsoft target contracts","source_ids":["msvc-c","pe-coff"]},
    {"id":"assembler-emits-object","from":"assembler","to":"object-format","kind":"produces","label":"encodes sections, symbols, instructions, and relocations","source_ids":["binutils-as","elf-gabi"]},
    {"id":"object-enters-linker","from":"object-format","to":"linker","kind":"links","label":"supplies relocatable objects, archives, shared objects, symbols, and metadata","source_ids":["binutils-ld","elf-gabi"]},
    {"id":"linker-emits-image","from":"linker","to":"object-format","kind":"produces","label":"emits a linked executable, shared object, module, or firmware image","source_ids":["binutils-ld","linker-scripts"]},
    {"id":"glibc-implements-c-posix","from":"glibc","to":"posix","kind":"implements","label":"implements ISO C and POSIX-facing user-space facilities on GNU systems","source_ids":["glibc-manual","posix-2024"]},
    {"id":"musl-implements-c-posix","from":"musl","to":"posix","kind":"implements","label":"implements ISO C and POSIX interfaces for Linux with a different deployment contract","source_ids":["musl-about"]},
    {"id":"embedded-libc-implements-c","from":"embedded-libc","to":"iso-c","kind":"implements","label":"implements selected hosted and freestanding library facilities for embedded targets","source_ids":["newlib","picolibc"]},
    {"id":"debugger-reads-object","from":"debuggers","to":"object-format","kind":"inspects","label":"reads symbols, debug information, unwind metadata, registers, and process or target state","source_ids":["gdb-manual","lldb-docs"]},
    {"id":"sanitizers-instrument-clang","from":"sanitizers","to":"clang-llvm","kind":"extends","label":"adds compiler instrumentation and runtime checks to selected builds","source_ids":["clang-asan","clang-ubsan"]},
    {"id":"analyzer-checks-source","from":"static-analysis","to":"source-headers","kind":"checks","label":"models paths and coding contracts without executing the target","source_ids":["clang-analyzer","cert-c"]},
    {"id":"kbuild-configures-kernel","from":"kconfig-kbuild","to":"linux-kernel","kind":"builds","label":"selects objects and generates vmlinux, modules, and architecture boot products","source_ids":["kernel-kbuild","kernel-kconfig"]},
    {"id":"kbuild-invokes-compilers","from":"kconfig-kbuild","to":"gcc","kind":"invokes","label":"drives supported C compilers with kernel and architecture flags","source_ids":["kernel-kbuild","kernel-language"]},
    {"id":"kbuild-invokes-assembler","from":"kconfig-kbuild","to":"assembler","kind":"invokes","label":"builds hand-written and preprocessed architecture assembly alongside C","source_ids":["kernel-kbuild"]},
    {"id":"kbuild-invokes-linker","from":"kconfig-kbuild","to":"linker","kind":"invokes","label":"uses architecture linker scripts and ordered built-in archives for vmlinux and modules","source_ids":["kernel-kbuild"]},
    {"id":"kernel-contains-subsystems","from":"linux-kernel","to":"kernel-subsystems","kind":"provides-api","label":"hosts shared scheduling, memory, VFS, networking, block, and security contracts","source_ids":["kernel-core-api"]},
    {"id":"drivers-use-subsystems","from":"drivers-modules","to":"kernel-subsystems","kind":"implements","label":"implements bus and device operations exposed by kernel subsystems","source_ids":["kernel-driver-api"]},
    {"id":"modules-link-kernel","from":"drivers-modules","to":"linux-kernel","kind":"loads-into","label":"loads built modules into the same privileged kernel address space","source_ids":["kernel-modules"]},
    {"id":"ebpf-hooks-kernel","from":"ebpf","to":"linux-kernel","kind":"executes","label":"runs verified bytecode through interpreter or JIT at selected kernel hooks","source_ids":["kernel-bpf"]},
    {"id":"qemu-runs-kernel","from":"qemu","to":"linux-kernel","kind":"runs-on","label":"emulates target hardware for kernel boot and subsystem testing","source_ids":["qemu-system"]},
    {"id":"cmsis-specifies-bsp","from":"cmsis","to":"bsp-startup-isr","kind":"provides-api","label":"standardizes core headers, startup expectations, interrupt names, and device support seams","source_ids":["cmsis-overview","cmsis-startup"]},
    {"id":"bsp-mixes-c-asm","from":"bsp-startup-isr","to":"assembler","kind":"integrates-with","label":"combines C initialization and handlers with reset stubs, vector entries, and privileged instructions","source_ids":["cmsis-startup","binutils-as"]},
    {"id":"bsp-controls-link","from":"bsp-startup-isr","to":"linker","kind":"configures","label":"defines memory regions, section placement, entry point, stacks, heaps, and image layout","source_ids":["linker-scripts","cmsis-startup"]},
    {"id":"freertos-uses-bsp","from":"freertos","to":"bsp-startup-isr","kind":"runs-on","label":"depends on a processor port, interrupt/tick setup, stacks, and board services","source_ids":["freertos-kernel"]},
    {"id":"zephyr-generates-bsp","from":"zephyr","to":"bsp-startup-isr","kind":"configures","label":"combines board, SoC, devicetree, Kconfig, and driver information into a firmware build","source_ids":["zephyr-docs","zephyr-devicetree"]},
    {"id":"rtems-uses-bsp","from":"rtems","to":"bsp-startup-isr","kind":"runs-on","label":"ports executive services through CPU, BSP, and device-driver layers","source_ids":["rtems-docs"]},
    {"id":"nuttx-uses-bsp","from":"nuttx","to":"bsp-startup-isr","kind":"runs-on","label":"binds configured OS services to architecture, board, and driver implementations","source_ids":["nuttx-docs"]},
    {"id":"embedded-libc-serves-rtos","from":"embedded-libc","to":"freertos","kind":"integrates-with","label":"retargets library I/O, allocation, and process hooks to the selected firmware environment","source_ids":["newlib","freertos-kernel"]},
    {"id":"debugger-reaches-bsp","from":"debuggers","to":"bsp-startup-isr","kind":"inspects","label":"uses remote probes or stubs to inspect registers, memory, threads, and symbols on target","source_ids":["gdb-manual","cmsis-overview"]},
    {"id":"ros-rcl-uses-rmw","from":"ros2-rcl","to":"ros2-rmw","kind":"depends-on","label":"implements common client behavior over the replaceable middleware C interface","source_ids":["ros2-interfaces"]},
    {"id":"rclc-extends-rcl","from":"micro-ros-rclc","to":"ros2-rcl","kind":"extends","label":"adds C convenience functions and executor policies over the common client layer","source_ids":["rclc-docs"]},
    {"id":"rclc-runs-rtos","from":"micro-ros-rclc","to":"freertos","kind":"runs-on","label":"supports resource-constrained real-time deployments over an RTOS integration","source_ids":["rclc-docs","freertos-kernel"]},
    {"id":"px4-runs-nuttx","from":"px4","to":"nuttx","kind":"runs-on","label":"uses NuttX as its primary flight-controller RTOS and POSIX-like runtime boundary","source_ids":["px4-architecture"]},
    {"id":"px4-publishes-uorb","from":"px4","to":"ros2-rmw","kind":"integrates-with","label":"bridges versioned vehicle topics toward external ROS 2 and DDS-compatible systems","source_ids":["px4-uorb","ros2-interfaces"]},
    {"id":"px4-speaks-mavlink","from":"px4","to":"mavlink","kind":"communicates-via","label":"exchanges telemetry, commands, parameters, and mission messages with external systems","source_ids":["px4-architecture","mavlink-guide"]},
    {"id":"ardupilot-uses-mavlink","from":"ardupilot","to":"mavlink","kind":"communicates-via","label":"uses generated protocol messages for vehicle and ground-system communication","source_ids":["ardupilot-overview","mavlink-guide"]},
    {"id":"ardupilot-uses-hal","from":"ardupilot","to":"bsp-startup-isr","kind":"integrates-with","label":"uses AP_HAL implementations to isolate vehicle and shared-library code from ChibiOS, Linux, ESP32, and board-specific services","source_ids":["ardupilot-overview"]},
    {"id":"ffmpeg-orchestrates-format","from":"ffmpeg","to":"libavformat","kind":"invokes","label":"opens inputs and outputs and transfers compressed packets through format contexts","source_ids":["ffmpeg-docs","libavformat-docs"]},
    {"id":"ffmpeg-orchestrates-codec","from":"ffmpeg","to":"libavcodec","kind":"invokes","label":"selects and drives decoders and encoders for packet/frame conversion","source_ids":["ffmpeg-docs","ffmpeg-modules"]},
    {"id":"ffmpeg-orchestrates-filter","from":"ffmpeg","to":"libavfilter","kind":"invokes","label":"constructs and schedules audio/video filter graphs between decode and encode","source_ids":["ffmpeg-docs","ffmpeg-modules"]},
    {"id":"format-feeds-codec","from":"libavformat","to":"libavcodec","kind":"produces","label":"demultiplexes container streams into compressed packets consumed by codecs","source_ids":["libavformat-docs","ffmpeg-modules"]},
    {"id":"codec-feeds-filter","from":"libavcodec","to":"libavfilter","kind":"produces","label":"decodes packets into frames consumed by filter graphs","source_ids":["ffmpeg-modules"]},
    {"id":"filter-uses-utils","from":"libavfilter","to":"libavutil-convert","kind":"depends-on","label":"uses common buffers and frame metadata plus negotiated scale/resample conversions","source_ids":["ffmpeg-modules"]},
    {"id":"codec-dispatches-dsp","from":"libavcodec","to":"optimized-dsp","kind":"executes","label":"dispatches hot kernels to architecture-specific optimized implementations when supported","source_ids":["ffmpeg-checkasm","ffmpeg-developer"]},
    {"id":"filter-dispatches-dsp","from":"libavfilter","to":"optimized-dsp","kind":"executes","label":"uses optimized pixel, audio, and transform functions behind library interfaces","source_ids":["ffmpeg-checkasm"]},
    {"id":"dsp-obeys-abi","from":"optimized-dsp","to":"platform-abi","kind":"implements","label":"must preserve the calling, stack, register, symbol, and unwind contract seen by C callers","source_ids":["x86-psabi","arm-aapcs","riscv-psabi"]},
    {"id":"codec-uses-hardware","from":"libavcodec","to":"hardware-accel","kind":"accelerates","label":"maps supported codecs and frame surfaces onto external device APIs","source_ids":["ffmpeg-hwaccel"]},
    {"id":"hardware-returns-frames","from":"hardware-accel","to":"libavfilter","kind":"integrates-with","label":"shares or transfers device-backed frames across filter and encode boundaries","source_ids":["ffmpeg-hwaccel"]},
    {"id":"sanitizers-check-ffmpeg","from":"sanitizers","to":"ffmpeg","kind":"checks","label":"instruments portable C paths in dedicated test builds while assembly and device code need separate coverage","source_ids":["clang-asan","ffmpeg-developer"]},
    {"id":"qemu-runs-rtos","from":"qemu","to":"zephyr","kind":"runs-on","label":"provides emulated machines for repeatable RTOS and driver tests where supported","source_ids":["qemu-system","zephyr-docs"]},
    {"id":"face-constrains-rtos","from":"face","to":"rtems","kind":"integrates-with","label":"places portable avionics components above defined operating-system and transport service segments","source_ids":["face-standard","rtems-docs"]},
    {"id":"mosa-governs-interfaces","from":"mosa","to":"platform-abi","kind":"extends","label":"treats well-defined, testable technical interfaces as life-cycle modularity boundaries","source_ids":["dod-mosa"]},
    {"id":"assurance-checks-bsp","from":"assurance-rules","to":"bsp-startup-isr","kind":"checks","label":"applies restricted-language, traceability, analysis, and controlled-deviation practices to critical low-level code","source_ids":["misra-c","faa-do178"]},
    {"id":"kernel-obeys-abi","from":"linux-kernel","to":"platform-abi","kind":"implements","label":"defines additional internal conventions but still relies on architecture object, register, entry, and toolchain contracts","source_ids":["kernel-language","kernel-asm-annotations"]}
  ],
  "domains": [
    {
      "id": "hosted-native",
      "label": "Hosted native software",
      "component_ids": ["iso-c","posix","cmake","meson","pkg-config","dependency-manager","gcc","clang-llvm","msvc","glibc","musl","debuggers","sanitizers","static-analysis"],
      "fit": "C supplies a stable source and binary interface, direct OS access, predictable data layout, and extensive mature libraries for tools, runtimes, databases, interpreters, and performance-sensitive components.",
      "boundary": "Select the language dialect, supported ABIs, libc and deployment baseline, ownership rules, dependency provenance, error model, concurrency model, and memory-safety mitigation plan.",
      "source_ids": ["iso-c23","posix-2024","cisa-memory-safety"]
    },
    {
      "id": "linux-kernel",
      "label": "Linux kernel and drivers",
      "component_ids": ["linux-kernel","kconfig-kbuild","kernel-subsystems","drivers-modules","ebpf","gcc","clang-llvm","assembler","linker","object-format","qemu"],
      "fit": "GNU C extensions, explicit layout, intrinsics and assembly interoperation fit privileged code that must express hardware operations, concurrency, cache behavior, and architecture-specific fast paths.",
      "boundary": "Kernel APIs are internal contracts, not a stable general in-kernel ABI. Record context rules, locking, lifetime, allocation mode, user-copy validation, DMA ownership, barriers, configuration reachability, and C/Rust/assembly seams.",
      "source_ids": ["kernel-language","kernel-kbuild","kernel-core-api","kernel-driver-api"]
    },
    {
      "id": "bare-metal",
      "label": "Bare-metal firmware",
      "component_ids": ["cmsis","bsp-startup-isr","embedded-libc","gcc","clang-llvm","assembler","linker","object-format","debuggers","static-analysis"],
      "fit": "Freestanding C can map fixed registers, interrupt vectors, memory sections, and startup state without requiring an operating system or managed runtime.",
      "boundary": "Make the memory map, initialization order, clock tree, interrupt priorities, stack/heap budgets, MMIO volatility, concurrency with ISRs/DMA, update/rollback path, and reset/fault behavior explicit.",
      "source_ids": ["iso-c23","cmsis-overview","cmsis-startup","linker-scripts"]
    },
    {
      "id": "rtos",
      "label": "RTOS and real-time control",
      "component_ids": ["freertos","zephyr","rtems","nuttx","cmsis","bsp-startup-isr","embedded-libc","debuggers","qemu"],
      "fit": "C is the common API and porting layer for schedulers, interrupt-safe primitives, drivers, protocol stacks, and deterministic control tasks across constrained processors.",
      "boundary": "Analyze worst-case execution and blocking, task and ISR priorities, queue capacity, stack watermarks, allocation policy, clock/time bases, priority inversion, watchdog coverage, and overload behavior.",
      "source_ids": ["freertos-kernel","zephyr-docs","rtems-docs","nuttx-docs"]
    },
    {
      "id": "defense-avionics",
      "label": "Defense, avionics, and high assurance",
      "component_ids": ["assurance-rules","face","mosa","rtems","bsp-startup-isr","static-analysis","debuggers","platform-abi"],
      "fit": "C remains common in long-lived real-time and avionics platforms because toolchains, analyzers, qualified processes, board support, and binary interfaces are deeply established.",
      "boundary": "A language subset is one control, not the safety case. Trace hazards to requirements and tests; govern tool qualification, object-code verification, partitioning, open interfaces, configuration data, deviations, provenance, and sustainment evidence.",
      "source_ids": ["mil-std-882e","faa-do178","face-standard","dod-mosa","misra-c"]
    },
    {
      "id": "robotics",
      "label": "Robotics middleware",
      "component_ids": ["ros2-rcl","ros2-rmw","micro-ros-rclc","freertos","zephyr","posix","sanitizers","static-analysis"],
      "fit": "C forms a language-neutral middleware seam and supports small deterministic clients that connect microcontrollers to a broader ROS 2 graph.",
      "boundary": "Separate transport QoS from executor scheduling; budget callbacks and queues; own message memory; handle discovery loss and stale data; isolate hard real-time loops from best-effort perception and logging paths.",
      "source_ids": ["ros2-interfaces","rclc-docs","ros2-executors"]
    },
    {
      "id": "drones-autonomy",
      "label": "Drones and autonomous vehicles",
      "component_ids": ["px4","ardupilot","mavlink","nuttx","ros2-rcl","ros2-rmw","qemu","bsp-startup-isr"],
      "fit": "C and adjacent C++ code integrate sensor drivers, estimation and control loops, real-time scheduling, generated messaging, simulation, and constrained flight-controller hardware.",
      "boundary": "Keep safety-critical flight control, navigation, communications, payload, and companion-computer concerns partitioned. Define authority, arming/failsafe states, timing, stale-data behavior, protocol trust, simulation equivalence, and hardware-in-the-loop evidence.",
      "source_ids": ["px4-architecture","px4-uorb","ardupilot-overview","mavlink-guide"]
    },
    {
      "id": "multimedia",
      "label": "FFmpeg and multimedia",
      "component_ids": ["ffmpeg","libavformat","libavcodec","libavfilter","libavutil-convert","optimized-dsp","hardware-accel","gcc","clang-llvm","assembler","sanitizers"],
      "fit": "C's ABI reach, explicit buffers and strides, vectorizable loops, portable fallbacks, and assembly interoperability fit high-throughput codecs and cross-platform media pipelines.",
      "boundary": "Model packets versus frames, timestamps and time bases, ownership/reference counts, negotiated formats, thread safety, untrusted bitstreams, filter backpressure, device-frame transfers, CPU dispatch, and scalar fallback coverage.",
      "source_ids": ["ffmpeg-download","ffmpeg-modules","ffmpeg-developer","ffmpeg-hwaccel"]
    },
    {
      "id": "assembly-interop",
      "label": "C and assembly interoperability",
      "component_ids": ["platform-abi","gcc","clang-llvm","assembler","linker","object-format","bsp-startup-isr","optimized-dsp","debuggers"],
      "fit": "C supplies structured control and portable fallbacks while assembly supplies reset/entry paths, privileged instructions, atomics, context switches, exact instruction sequences, and measured SIMD kernels.",
      "boundary": "The contract is the ABI plus compiler constraints: declare inputs, outputs, clobbers and memory effects; preserve registers and stack alignment; expose symbols deliberately; avoid assuming source order; test every ISA variant against a reference path.",
      "source_ids": ["gcc-asm","binutils-as","x86-psabi","arm-aapcs","riscv-psabi","ffmpeg-checkasm"]
    }
  ],
  "decisions": [
    {"id":"dialect-contract","question":"Which C contract is the project actually using?","default":"Name an ISO baseline and every required extension, platform API, ABI, and freestanding or hosted assumption in the build configuration.","tradeoff":"A newer standard adds facilities but does not replace kernel dialects, vendor extensions, compiler support matrices, or certification baselines.","source_ids":["iso-c23","kernel-language"]},
    {"id":"c-vs-safer-language","question":"Which components still justify memory-unsafe C?","default":"Keep C where hardware, ABI, timing, footprint, qualified tooling, or installed-base constraints are real; prefer memory-safe languages for new higher-level components and isolate the seam.","tradeoff":"Migration cost is real, but sanitizers and coding rules mitigate rather than eliminate spatial, temporal, and concurrency memory hazards.","source_ids":["cisa-memory-safety","nsa-memory-safety"]},
    {"id":"abi-boundary","question":"What crosses the binary boundary?","default":"Use fixed-width or explicitly versioned types, clear ownership, opaque handles, explicit error values, symbol visibility policy, and ABI tests for every supported target.","tradeoff":"Exposing compiler-dependent layout, bit-fields, variadics, inline functions, allocator ownership, or long-lived structs makes independent evolution expensive.","source_ids":["x86-psabi","arm-aapcs","riscv-psabi"]},
    {"id":"assembly-placement","question":"Where should assembly live?","default":"Prefer compiler intrinsics or isolated out-of-line .S routines behind a C reference implementation; use extended inline asm only when its operand and clobber contract is the right abstraction.","tradeoff":"Assembly buys exact instructions and access to privileged or vector features, but multiplies ISA, ABI, optimizer, unwind, sanitizer, and test obligations.","source_ids":["gcc-asm","binutils-as","ffmpeg-checkasm"]},
    {"id":"kernel-context","question":"What execution context owns this kernel code?","default":"Document process, softirq, hardirq, NMI, workqueue, or atomic context together with sleepability, lifetime, locking, user-copy, and allocation constraints.","tradeoff":"A function signature alone cannot express kernel context; hidden context coupling produces deadlocks, use-after-free, priority inversions, and invalid blocking.","source_ids":["kernel-core-api","kernel-driver-api"]},
    {"id":"real-time-policy","question":"What is the real-time scheduling and memory policy?","default":"Define priorities, periods/deadlines, bounded queues, allocation phases, ISR handoff, maximum blocking, stack budgets, watchdog response, and overload shedding before selecting APIs.","tradeoff":"An RTOS provides mechanisms, not schedulability; dynamic allocation, logging, unbounded protocol work, and shared locks can invalidate the timing case.","source_ids":["freertos-kernel","ros2-executors","rtems-docs"]},
    {"id":"assurance-case","question":"What evidence makes critical C acceptable?","default":"Trace system hazards and requirements to architecture, code, analysis, tests, coverage, configuration, tool evidence, deviations, binary/object checks, and controlled release artifacts.","tradeoff":"MISRA or CERT findings are inputs to an assurance case, not a certificate that the system is safe, secure, temporally correct, or fit for its operational environment.","source_ids":["mil-std-882e","faa-do178","misra-c","cert-c"]},
    {"id":"robotics-execution","question":"Where is determinism enforced in a robotics graph?","default":"Keep the bounded sense-plan-act path on an analyzed executor/task schedule and bridge asynchronously to discovery, visualization, logging, and best-effort services.","tradeoff":"Middleware QoS can bound transport behavior but cannot by itself bound callback execution, shared-resource contention, or end-to-end control latency.","source_ids":["ros2-executors","rclc-docs","ros2-interfaces"]},
    {"id":"drone-partition","question":"How are flight-critical and mission functions partitioned?","default":"Keep estimator/control/actuation authority on the flight controller; treat companion computers, payloads, radio links, and ground stations as explicit, degradable trust boundaries.","tradeoff":"A richer companion platform accelerates development, but timing, link loss, command authority, stale data, and recovery behavior must remain safe without it.","source_ids":["px4-architecture","mavlink-guide","dod-mosa"]},
    {"id":"ffmpeg-dataflow","question":"Where are FFmpeg's packet, frame, and device boundaries?","default":"Draw the demux-decode-filter-encode-mux graph with time bases, negotiated formats, buffer ownership, thread boundaries, and hardware upload/download edges.","tradeoff":"Zero-copy and hardware paths reduce movement but couple device formats and lifetimes; portable scalar and software paths remain essential for correctness and coverage.","source_ids":["ffmpeg-modules","libavformat-docs","ffmpeg-hwaccel"]},
    {"id":"dependency-provenance","question":"How are native dependencies reproduced and audited?","default":"Pin source identity and revisions, preserve checksums or signatures, record build options and patches, generate an SBOM, and rebuild in a controlled toolchain environment.","tradeoff":"System packages, vendoring, submodules, Conan, and vcpkg shift who owns updates and ABI compatibility; no mechanism establishes maintainer trust by itself.","source_ids":["conan-docs","vcpkg-docs","pkg-config-guide"]}
  ],
  "milestones": [
    {"id":"bcpl","year":1967,"label":"BCPL","detail":"A typeless systems language supplies the lineage from which B and C evolve.","source_ids":["ritchie-history"]},
    {"id":"b","year":1969,"label":"B on early Unix","detail":"Thompson's B adapts the BCPL model to the PDP-7 environment used by early Unix.","source_ids":["ritchie-history"]},
    {"id":"c-origin","year":1972,"label":"C emerges","detail":"Ritchie's typed successor develops alongside Unix; 1972 is the most creative period.","source_ids":["ritchie-history"]},
    {"id":"unix-rewrite","year":1973,"label":"Unix in C","detail":"The kernel rewrite demonstrates that a high-level systems language can retain access to machine facilities.","source_ids":["ritchie-history"]},
    {"id":"kr-c","year":1978,"label":"K&R C","detail":"The first edition of The C Programming Language becomes the de facto portable description.","source_ids":["ritchie-history"]},
    {"id":"c89","year":1989,"label":"ANSI C","detail":"X3.159 standardizes prototypes, the library, preprocessing, and the language understood as C89.","source_ids":["wg14-projects"]},
    {"id":"c90","year":1990,"label":"ISO C90","detail":"ISO/IEC 9899:1990 internationalizes the ANSI language baseline.","source_ids":["wg14-projects"]},
    {"id":"c99","year":1999,"label":"C99","detail":"Adds inline functions, variable-length arrays, complex arithmetic, designated initializers, restrict, and a larger library.","source_ids":["wg14-projects"]},
    {"id":"c11","year":2011,"label":"C11","detail":"Adds atomics and a memory model, threads, generic selection, anonymous members, and optional bounds-checking interfaces.","source_ids":["wg14-projects"]},
    {"id":"c17","year":2018,"label":"C17","detail":"A defect-correction release consolidates the C11 line without a comparable feature wave.","source_ids":["wg14-projects"]},
    {"id":"c23","year":2024,"label":"C23 published","detail":"ISO/IEC 9899:2024 becomes the fifth edition and the current C standard.","source_ids":["iso-c23","wg14-projects"]},
    {"id":"current-pressure","year":2025,"label":"Memory-safety roadmaps","detail":"Government guidance intensifies pressure to isolate or replace high-risk memory-unsafe components while acknowledging constrained legacy and low-level cases.","source_ids":["cisa-memory-safety","nsa-memory-safety"]},
    {"id":"snapshot","year":2026,"label":"C at the systems seam","detail":"Linux 7.x, FFmpeg 9, RTOS, robotics, and avionics ecosystems still depend on C interfaces while adding safer-language and stronger-assurance boundaries.","source_ids":["kernel-home","ffmpeg-download","ros2-interfaces","face-standard"]}
  ],
  "sources": [
    {"id":"iso-c23","title":"ISO/IEC 9899:2024 — Programming languages — C","publisher":"ISO","url":"https://www.iso.org/standard/82075.html"},
    {"id":"wg14-projects","title":"C project status and milestones","publisher":"ISO/IEC JTC 1/SC 22/WG14","url":"https://www9.open-std.org/JTC1/SC22/WG14/www/projects.html"},
    {"id":"ritchie-history","title":"The Development of the C Language","publisher":"Bell Labs / Dennis M. Ritchie","url":"https://www.bell-labs.com/usr/dmr/www/chist.pdf"},
    {"id":"posix-2024","title":"POSIX.1-2024, The Open Group Base Specifications Issue 8","publisher":"The Open Group / IEEE","url":"https://pubs.opengroup.org/onlinepubs/9799919799/"},
    {"id":"x86-psabi","title":"System V Application Binary Interface AMD64 Architecture Processor Supplement","publisher":"x86-64 psABI project","url":"https://gitlab.com/x86-psABIs/x86-64-ABI"},
    {"id":"arm-aapcs","title":"Procedure Call Standard for the Arm 64-bit Architecture","publisher":"Arm","url":"https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst"},
    {"id":"riscv-psabi","title":"RISC-V ELF psABI Document","publisher":"RISC-V International","url":"https://riscv-non-isa.github.io/riscv-elf-psabi-doc/"},
    {"id":"misra-c","title":"MISRA C:2025 — Guidelines for the use of the C language in critical systems","publisher":"The MISRA Consortium","url":"https://misra.org.uk/product/misra-c2025/"},
    {"id":"cert-c","title":"SEI CERT C Coding Standard","publisher":"Carnegie Mellon Software Engineering Institute","url":"https://wiki.sei.cmu.edu/confluence/display/c"},
    {"id":"face-standard","title":"FACE Technical Standard and corresponding documents","publisher":"The Open Group FACE Consortium","url":"https://www.opengroup.org/face/docsandtools"},
    {"id":"dod-mosa","title":"Modular Open Systems Approach","publisher":"U.S. Department of Defense, OUSD(R&E)","url":"https://www.cto.mil/sea/mosa/"},
    {"id":"mil-std-882e","title":"MIL-STD-882E Change 1 — System Safety","publisher":"U.S. Department of Defense ASSIST","url":"https://quicksearch.dla.mil/qsDocDetails.aspx?ident_number=36027"},
    {"id":"faa-do178","title":"AC 20-115D — Airborne Software Development Assurance Using ED-12() and DO-178()","publisher":"U.S. Federal Aviation Administration","url":"https://www.faa.gov/airports/resources/advisory_circulars/index.cfm/go/document.information/documentNumber/20-115D"},
    {"id":"gnu-make","title":"GNU Make Manual","publisher":"GNU Project","url":"https://www.gnu.org/software/make/manual/make.html"},
    {"id":"cmake-docs","title":"CMake Documentation","publisher":"Kitware","url":"https://cmake.org/cmake/help/latest/"},
    {"id":"meson-docs","title":"The Meson Build System","publisher":"Meson project","url":"https://mesonbuild.com/"},
    {"id":"ninja-manual","title":"Ninja Manual","publisher":"Ninja project","url":"https://ninja-build.org/manual.html"},
    {"id":"pkg-config-guide","title":"Guide to pkg-config","publisher":"freedesktop.org","url":"https://people.freedesktop.org/~dbn/pkg-config-guide.html"},
    {"id":"conan-docs","title":"Conan 2 documentation","publisher":"Conan project","url":"https://docs.conan.io/2/"},
    {"id":"vcpkg-docs","title":"vcpkg documentation","publisher":"Microsoft","url":"https://learn.microsoft.com/en-us/vcpkg/"},
    {"id":"gcc-cpp","title":"The C Preprocessor","publisher":"GNU Project","url":"https://gcc.gnu.org/onlinedocs/cpp/"},
    {"id":"gcc-manual","title":"Using the GNU Compiler Collection","publisher":"GNU Project","url":"https://gcc.gnu.org/onlinedocs/gcc/"},
    {"id":"gcc-asm","title":"Extended Asm — Assembler Instructions with C Expression Operands","publisher":"GNU Project","url":"https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html"},
    {"id":"clang-docs","title":"Clang documentation","publisher":"LLVM Project","url":"https://clang.llvm.org/docs/"},
    {"id":"msvc-c","title":"C language reference","publisher":"Microsoft","url":"https://learn.microsoft.com/en-us/cpp/c-language/c-language-reference?view=msvc-170"},
    {"id":"binutils-as","title":"Using as — GNU Assembler","publisher":"GNU Project","url":"https://sourceware.org/binutils/docs/as/"},
    {"id":"binutils-ld","title":"LD — GNU Linker","publisher":"GNU Project","url":"https://sourceware.org/binutils/docs/ld.html"},
    {"id":"linker-scripts","title":"Linker Scripts","publisher":"GNU Project","url":"https://sourceware.org/binutils/docs/ld/Scripts.html"},
    {"id":"elf-gabi","title":"System V ABI — Generic ABI","publisher":"Xinuos","url":"https://gabi.xinuos.com/"},
    {"id":"pe-coff","title":"PE Format","publisher":"Microsoft","url":"https://learn.microsoft.com/en-us/windows/win32/debug/pe-format"},
    {"id":"glibc-manual","title":"The GNU C Library Reference Manual","publisher":"GNU Project","url":"https://sourceware.org/glibc/manual/latest/html_mono/libc.html"},
    {"id":"musl-about","title":"About musl","publisher":"musl libc project","url":"https://musl.libc.org/about.html"},
    {"id":"newlib","title":"The Newlib Homepage","publisher":"Newlib project","url":"https://sourceware.org/newlib/"},
    {"id":"picolibc","title":"Picolibc C library for embedded systems","publisher":"Picolibc project","url":"https://github.com/picolibc/picolibc"},
    {"id":"gdb-manual","title":"Debugging with GDB","publisher":"GNU Project","url":"https://sourceware.org/gdb/current/onlinedocs/gdb.html"},
    {"id":"lldb-docs","title":"LLDB documentation","publisher":"LLVM Project","url":"https://lldb.llvm.org/"},
    {"id":"clang-asan","title":"AddressSanitizer","publisher":"LLVM Project","url":"https://clang.llvm.org/docs/AddressSanitizer.html"},
    {"id":"clang-ubsan","title":"UndefinedBehaviorSanitizer","publisher":"LLVM Project","url":"https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html"},
    {"id":"clang-analyzer","title":"Clang Static Analyzer","publisher":"LLVM Project","url":"https://clang.llvm.org/docs/ClangStaticAnalyzer.html"},
    {"id":"kernel-home","title":"The Linux Kernel Archives","publisher":"Linux Kernel Organization","url":"https://www.kernel.org/"},
    {"id":"kernel-language","title":"Programming Language","publisher":"Linux kernel documentation","url":"https://www.kernel.org/doc/html/latest/process/programming-language.html"},
    {"id":"kernel-llvm","title":"Building Linux with Clang/LLVM","publisher":"Linux kernel documentation","url":"https://docs.kernel.org/kbuild/llvm.html"},
    {"id":"kernel-kbuild","title":"Linux Kernel Makefiles","publisher":"Linux kernel documentation","url":"https://docs.kernel.org/kbuild/makefiles.html"},
    {"id":"kernel-kconfig","title":"Kconfig Language","publisher":"Linux kernel documentation","url":"https://docs.kernel.org/kbuild/kconfig-language.html"},
    {"id":"kernel-core-api","title":"Core API Documentation","publisher":"Linux kernel documentation","url":"https://docs.kernel.org/core-api/index.html"},
    {"id":"kernel-driver-api","title":"The Linux driver implementer's API guide","publisher":"Linux kernel documentation","url":"https://docs.kernel.org/driver-api/index.html"},
    {"id":"kernel-modules","title":"Building External Modules","publisher":"Linux kernel documentation","url":"https://docs.kernel.org/kbuild/modules.html"},
    {"id":"kernel-bpf","title":"BPF Documentation","publisher":"Linux kernel documentation","url":"https://docs.kernel.org/bpf/index.html"},
    {"id":"kernel-asm-annotations","title":"Assembler Annotations","publisher":"Linux kernel documentation","url":"https://docs.kernel.org/core-api/asm-annotations.html"},
    {"id":"qemu-system","title":"System Emulation Introduction","publisher":"QEMU Project","url":"https://www.qemu.org/docs/master/system/introduction.html"},
    {"id":"cmsis-overview","title":"CMSIS Introduction","publisher":"Arm","url":"https://arm-software.github.io/CMSIS_6/latest/General/index.html"},
    {"id":"cmsis-startup","title":"Using CMSIS in Embedded Applications","publisher":"Arm","url":"https://arm-software.github.io/CMSIS_5/Core/html/using_pg.html"},
    {"id":"freertos-kernel","title":"FreeRTOS kernel fundamentals","publisher":"Amazon Web Services / FreeRTOS","url":"https://docs.aws.amazon.com/freertos/latest/userguide/dev-guide-freertos-kernel.html"},
    {"id":"zephyr-docs","title":"Zephyr Project Documentation","publisher":"Zephyr Project","url":"https://docs.zephyrproject.org/latest/"},
    {"id":"zephyr-devicetree","title":"Devicetree access from C/C++","publisher":"Zephyr Project","url":"https://docs.zephyrproject.org/latest/build/dts/api-usage.html"},
    {"id":"rtems-docs","title":"RTEMS Documentation","publisher":"RTEMS Project","url":"https://docs.rtems.org/docs/main/"},
    {"id":"nuttx-docs","title":"Apache NuttX Documentation","publisher":"Apache Software Foundation","url":"https://nuttx.apache.org/docs/latest/"},
    {"id":"ros2-interfaces","title":"Internal ROS 2 interfaces","publisher":"Open Robotics","url":"https://docs.ros.org/en/rolling/Concepts/About-Internal-Interfaces.html"},
    {"id":"ros2-executors","title":"ROS 2 Executors","publisher":"Open Robotics","url":"https://docs.ros.org/en/rolling/Concepts/Intermediate/About-Executors.html"},
    {"id":"rclc-docs","title":"rclc — ROS client library in C","publisher":"Open Robotics / micro-ROS","url":"https://docs.ros.org/en/rolling/p/rclc/"},
    {"id":"px4-architecture","title":"PX4 Architectural Overview","publisher":"PX4 / Dronecode Foundation","url":"https://docs.px4.io/main/en/concept/architecture"},
    {"id":"px4-uorb","title":"uORB Messaging","publisher":"PX4 / Dronecode Foundation","url":"https://docs.px4.io/main/en/middleware/uorb"},
    {"id":"ardupilot-overview","title":"Learning ArduPilot — Introduction","publisher":"ArduPilot Project","url":"https://ardupilot.org/dev/docs/learning-ardupilot-introduction.html"},
    {"id":"mavlink-guide","title":"MAVLink Developer Guide","publisher":"MAVLink Project","url":"https://mavlink.io/en/"},
    {"id":"ffmpeg-download","title":"Download FFmpeg","publisher":"FFmpeg Project","url":"https://ffmpeg.org/download.html"},
    {"id":"ffmpeg-docs","title":"FFmpeg Documentation","publisher":"FFmpeg Project","url":"https://ffmpeg.org/ffmpeg.html"},
    {"id":"ffmpeg-modules","title":"FFmpeg library modules","publisher":"FFmpeg Project","url":"https://ffmpeg.org/doxygen/trunk/modules.html"},
    {"id":"libavformat-docs","title":"Libavformat Documentation","publisher":"FFmpeg Project","url":"https://ffmpeg.org/libavformat.html"},
    {"id":"ffmpeg-developer","title":"FFmpeg Developer Documentation","publisher":"FFmpeg Project","url":"https://ffmpeg.org/developer.html"},
    {"id":"ffmpeg-checkasm","title":"checkasm — for all your assembly checking needs","publisher":"FFmpeg Project","url":"https://ffmpeg.org/doxygen/trunk/md_tests_checkasm_ext_README.html"},
    {"id":"ffmpeg-hwaccel","title":"FFmpeg Hardware Acceleration","publisher":"FFmpeg Project","url":"https://ffmpeg.org/ffmpeg.html#Hardware-Acceleration"},
    {"id":"cisa-memory-safety","title":"Product Security Bad Practices","publisher":"CISA and FBI","url":"https://www.cisa.gov/sites/default/files/2025-01/joint-guidance-product-security-bad-practices-508c_0.pdf"},
    {"id":"nsa-memory-safety","title":"Memory Safe Languages: Reducing Vulnerabilities in Modern Software Development","publisher":"NSA and CISA","url":"https://www.nsa.gov/Press-Room/Press-Releases-Statements/Press-Release-View/Article/4223298/nsa-and-cisa-release-csi-highlighting-importance-of-memory-safe-languages-in-so/"}
  ]
}
