blob: b82ecfbb72f2b1318544436bfc17eb1c7a2277e0 [file] [edit]
.. _docs-glossary:
========
Glossary
========
This glossary defines terms that have specific meanings in the context of
Pigweed.
.. _docs-glossary-development-host:
----------------
Development host
----------------
The computer that you develop software on.
.. _docs-glossary-informed-poll:
-------------
Informed poll
-------------
The informed poll programming model is the core design philosophy behind
``pw_async2``. The central idea is that asynchronous work is encapsulated in
objects called :cc:`Tasks <pw::async2::Task>`. Instead of registering
callbacks for different events, a central :cc:`Dispatcher
<pw::async2::Dispatcher>` *polls* these tasks to see if they can make progress.
The polling is *informed* because the task coordinates with its event source
regarding when it's ready to make more progress. The event source notifies the
dispatcher when the task is ready to proceed and therefore should be polled
again.
Learn more:
* :doc:`pw_async2/informed_poll`
.. _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`
.. _docs-glossary-committers:
------------------
Pigweed committers
------------------
People who have write access to :ref:`docs-glossary-upstream`.
I.e. people who can run Pigweed's tryjobs, approve code reviews,
and merge code into upstream Pigweed.
.. _docs-glossary-upstream:
----------------
Upstream Pigweed
----------------
.. _main repository: https://cs.opensource.google/pigweed/Pigweed
Pigweed's `main repository`_.