blob: a486a9b5e1acdb30de4025b623462489584dbe15 [file] [log] [blame]
.. _docs-glossary:
========
Glossary
========
This glossary defines terms that have specific meanings in the context of
Pigweed.
.. _docs-glossary-facade:
------
Facade
------
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:
* :ref:`docs-facades`
.. _docs-glossary-module:
------
Module
------
A Pigweed module is an open source library that addresses a common need for
embedded software developers. For example, :ref:`module-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
<https://cs.opensource.google/pigweed/pigweed>`_ 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:
* :ref:`List of modules <docs-module-guides>`
* :ref:`docs-module-structure`
* :ref:`docs-concepts-embedded-development-libraries`