This glossary defines terms that have specific meanings in the context of Pigweed.


A facade is an API contract of a module that must be satisfied at compile-time, i.e. a swappable dependency that changes the implementation of an API at compile-time.

Learn more:


A Pigweed module is an open source library that addresses a common need for embedded software developers. For example, pw_string provides an API for string operations that is both safe and suitable for resource-constrained embedded systems.

Modules are Pigweed’s core products. Every directory that starts with pw_ in the root directory of the upstream Pigweed repository represents a single module.

Modules are modular in the sense that you can use one module in your project without always needing to depend on the rest of the entire Pigweed codebase. Some modules may depend on other modules, however. The key idea of their modularity is that they’re not tied to any “core” or platform layer.

Other general rules about modules:

  • They strive to minimize policy decisions such as whether or not allocation is required, buffer sizing limits, etc. Projects have control over these decisions.

  • They don’t instantiate any static objects.

Learn more: