Skip to main content
menu
Pigweed
Overview
expand_more
Pigweed overview
Mission & philosophies
Glossary
FAQs
Quickstart
expand_more
Overview
First-time setup
Install Bazel
Bazel quickstart
Bazel integration
CMake integration
Static and runtime analysis
GitHub Actions
Zephyr quickstart
Tour
expand_more
Overview
0. Expectations and prerequisites
1. Setup
2. Explore build targets
3. Build an app
4. Explore C++ code intelligence
5. Run host tests
6. Static and runtime analysis
7. Run the host app
8. Flash your Pico
9. Run on-device tests
10. Communicate with your Pico over RPC
11. Automate common workflows
12. Communicate with your Pico over the Web Serial API
13. Run factory workflows at your desk
14. Use Bazel’s cloud features
15. Run the air quality monitor app
16. Handle crashes and view snapshots
17. Wrapping up
Source code
Modules
expand_more
Overview
Module Structure
Facades & backends
pw_alignment
pw_allocator
pw_analog
pw_android_toolchain
pw_arduino_build
pw_assert
pw_async
pw_async2
pw_atomic
pw_base64
pw_bloat
pw_blob_store
pw_bluetooth
pw_bluetooth_hci
pw_bluetooth_proxy
pw_bluetooth_profiles
pw_bluetooth_sapphire
pw_boot
pw_buf
pw_build
pw_build_android
pw_build_info
pw_build_mcuxpresso
pw_bytes
pw_channel
pw_change
pw_checksum
pw_chre
pw_chrono
pw_cli
pw_cli_analytics
pw_clock_tree
pw_compilation_testing
pw_config_loader
pw_console
pw_containers
pw_cpu_exception
pw_crypto
pw_digital_io
pw_display
pw_dma_mcuxpresso
pw_docgen
pw_doctor
pw_elf
pw_emu
pw_enum
pw_env_setup
pw_env_setup_zephyr
pw_file
pw_flatbuffers
pw_format
pw_fortifier
pw_function
pw_fuzzer
pw_grpc
pw_hdlc
pw_hex_dump
pw_i2c
pw_ide
pw_interrupt
pw_intrusive_ptr
pw_json
pw_kernel
pw_kvs
pw_libc
pw_libcxx
pw_log
pw_malloc
pw_memory
pw_metric
pw_module
pw_multibuf
pw_multisink
pw_numeric
pw_package
pw_perf_test
pw_persistent_ram
pw_polyfill
pw_preprocessor
pw_presubmit
pw_protobuf
pw_protobuf_compiler
pw_random
pw_result
pw_ring_buffer
pw_router
pw_rpc
pw_rpc_transport
pw_rust
pw_sensor
pw_snapshot
pw_software_update
pw_span
pw_spi
pw_status
pw_stm32cube_build
pw_stream
pw_string
pw_symbolizer
pw_sync
pw_sys_io
pw_system
pw_target_runner
pw_thread
pw_time
pw_tls_client
pw_tokenizer
pw_toolchain
pw_trace
pw_transfer
pw_uart
pw_unit_test
Zephyr backend tests
pw_uuid
pw_varint
pw_watch
pw_web
pw_work_queue
Contributing
expand_more
Contributing guide
Build systems reference
Code reviews (Gerrit)
Code review guidelines
Issue tracker
Report a vulnerability
SEEDs
Infra
Embedded C++ Guide
Style guides
Code of conduct
Docs contributors
Testing Guide
More
expand_more
Build systems & toolchain
Targets
OS abstraction layers
Third-party modules
Community & news
Security
Reference
search
light_mode
dark_mode
toc
Home
/
Security
/
2026 Security Bulletins
Back to top
Collapse Sidebar
Expand Sidebar
Section Navigation
Report a vulnerability
Agentic threat model
Handling false positives
2026 Security Bulletins
July 2026
August 2026
Site Navigation
Overview
Pigweed overview
Mission & philosophies
Glossary
FAQs
Quickstart
Overview
First-time setup
Install Bazel
Bazel quickstart
Bazel integration
CMake integration
Static and runtime analysis
GitHub Actions
Zephyr quickstart
Tour
Overview
0. Expectations and prerequisites
1. Setup
2. Explore build targets
3. Build an app
4. Explore C++ code intelligence
5. Run host tests
6. Static and runtime analysis
7. Run the host app
8. Flash your Pico
9. Run on-device tests
10. Communicate with your Pico over RPC
11. Automate common workflows
12. Communicate with your Pico over the Web Serial API
13. Run factory workflows at your desk
14. Use Bazel’s cloud features
15. Run the air quality monitor app
16. Handle crashes and view snapshots
17. Wrapping up
Source code
Modules
Overview
Module Structure
Facades & backends
pw_alignment
C/C++ API reference
Source code
Issues
pw_allocator
Guides
Design & roadmap
Backends
Zephyr
Source code
Issues
Code size analysis
pw_allocator threat model
C/C++ API reference
Source code
Issues
pw_analog
C/C++ API reference
Source code
Issues
pw_android_toolchain
Source code
Issues
pw_arduino_build
Source code
Issues
pw_assert
Backends
Basic
Source code
Issues
Pigweed logging
Source code
Issues
Fuchsia
Source code
Issues
Tokenized
Source code
Issues
Trap
Source code
Issues
Zephyr
Source code
Issues
Rust API reference
Source code
Issues
pw_async
Backends
Basic
C/C++ API reference
Source code
Issues
Fuchsia
Source code
Issues
C/C++ API reference
Source code
Issues
pw_async2
Why pw_async2?
Quickstart
Informed poll
Codelab
1. Run a task
2. Call an async function
3. Create and wake a Future
4. Use a state machine
5. Communicate between tasks
Guides
Dispatcher
Code size analysis
Coroutines
Futures
Channels
Tasks
C/C++ API reference
Source code
Issues
pw_atomic
Source code
Issues
pw_base64
Rust API reference
C/C++ API reference
Source code
Issues
pw_bloat
pw_bloat threat model
C/C++ API reference
Source code
Issues
pw_blob_store
Source code
Issues
pw_bluetooth
C/C++ API reference
Source code
Issues
pw_bluetooth_hci
Source code
Issues
pw_bluetooth_proxy
Crash recovery
pw_bluetooth_proxy threat model
C/C++ API reference
Source code
Issues
pw_bluetooth_profiles
Source code
Issues
pw_bluetooth_sapphire
Fuchsia development
Size report
C/C++ API reference
Source code
Issues
pw_boot
Backends
Cortex-M
Source code
Issues
pw_boot threat model
Source code
Issues
pw_buf
Source code
Issues
pw_build
GN / Ninja
Python GN Templates
Bazel
Rules
Compatibility constraints
Helper targets, macros, and templates
Project Builder
Python API Reference
Linker Scripts
Workflows Launcher
Workflows build drivers
pw_build threat model
Rust API reference
C/C++ API reference
Source code
Issues
pw_build_android
Source code
Issues
pw_build_info
Source code
Issues
pw_build_mcuxpresso
Source code
Issues
pw_bytes
Code size analysis
Design & roadmap
Quickstart & guides
pw_bytes Python package
Rust API reference
C/C++ API reference
Source code
Issues
pw_channel
Quickstart & guides
Design
C/C++ API reference
Source code
Issues
pw_change
Source code
Issues
pw_checksum
Source code
Issues
pw_chre
C/C++ API reference
Source code
Issues
pw_chrono
Backends
embOS
Source code
Issues
FreeRTOS
Source code
Issues
RP2040
Source code
Issues
STL
Source code
Issues
ThreadX
Source code
Issues
Zephyr
Source code
Issues
C/C++ API reference
Source code
Issues
pw_cli
API Reference
pw_cli threat model
Source code
Issues
pw_cli_analytics
Source code
Issues
pw_clock_tree
Examples
Implementations
MCUXpresso
C/C++ API reference
Source code
Issues
C/C++ API reference
Source code
Issues
pw_compilation_testing
Source code
Issues
pw_config_loader
API Reference
Source code
Issues
pw_console
User Guide
Embedding Guide
Plugin Guide
Manual Test Procedure
Built-in CLI Tools
Internal Design
pw_console threat model
Source code
Issues
pw_containers
Lists
Maps
Queues
Sets
Vectors
Utilities
Using items with multiple containers
C/C++ API reference
Source code
Issues
pw_cpu_exception
Backends
Cortex-M
Source code
Issues
RISCV
Source code
Issues
Source code
Issues
pw_crypto
pw_crypto threat model
C/C++ API reference
Source code
Issues
pw_digital_io
Backends
Linux
Source code
Issues
MCUXpresso
C/C++ API reference
Source code
Issues
RP2040
Source code
Issues
Zephyr
Source code
Issues
C/C++ API reference
Source code
Issues
pw_display
API reference
C/C++ API reference
Source code
Issues
pw_dma_mcuxpresso
Source code
Issues
pw_docgen
Source code
Issues
pw_doctor
Source code
Issues
pw_elf
pw_elf Python package
C/C++ API reference
Source code
Issues
pw_emu
Get started & guides
CLI reference
API reference
Configuration
Design
SEED-0108
Source code
Issues
pw_enum
Source code
Issues
pw_env_setup
Bazel CIPD Module Extension
Source code
Issues
pw_env_setup_zephyr
Source code
Issues
pw_file
Source code
Issues
pw_flatbuffers
Source code
Issues
pw_format
Rust API reference
Source code
Issues
pw_fortifier
Source code
Issues
pw_function
C/C++ API reference
Source code
Issues
pw_fuzzer
Concepts
Adding Fuzzers Using FuzzTest
Adding Fuzzers Using LibFuzzer
Using OSS-Fuzz
Source code
Issues
pw_grpc
Source code
Issues
pw_hdlc
Get started & guides
API reference
Design & roadmap
Code size analysis
RPC over HDLC example
Router
C/C++ API reference
Source code
Issues
pw_hex_dump
C/C++ API reference
Source code
Issues
pw_i2c
Quickstart and guides
Implementations
Linux
C/C++ API reference
Source code
Issues
MCUXpresso
Source code
Issues
Pico SDK
Source code
Issues
Zephyr RTOS
Source code
Issues
C/C++ API reference
Source code
Issues
pw_ide
Bazel
Getting Started
Code intelligence
Rust code intelligence
Extension enforcement
Commands Reference
Troubleshooting
Bootstrap
Legacy support via CLI
Contributing
Development
Manual Test Procedure
Design
C/C++ code intelligence
Projects
Source code
Issues
pw_interrupt
Backends
Cortex-M
Source code
Issues
FreeRTOS
Source code
Issues
Zephyr
Source code
Issues
Fake (test-only)
C/C++ API reference
Source code
Issues
pw_intrusive_ptr
Source code
Issues
pw_json
C/C++ API reference
Source code
Issues
pw_kernel
Quickstart
Tour
Design
Guides
Upstream
Source code
Issues
pw_kvs
Guides
On-disk format and design
Code size analysis
pw_kvs threat model
C/C++ API reference
Source code
Issues
pw_libc
Source code
Issues
pw_libcxx
Source code
Issues
pw_log
The pw_log protobuf
Tokenized log arguments
API reference
Backends
Android
Source code
Issues
Basic
Source code
Issues
Fuchsia
Source code
Issues
Null
Source code
Issues
RPC
String
Source code
Issues
Tokenized
C/C++ API reference
Source code
Issues
Zephyr
Source code
Issues
Rust API reference
C/C++ API reference
Source code
Issues
pw_malloc
Backends
Freelist
Source code
Issues
FreeRTOS
Source code
Issues
C/C++ API reference
Source code
Issues
pw_memory
Source code
Issues
pw_metric
Source code
Issues
pw_module
Source code
Issues
pw_multibuf
Usage examples
Concepts
Design
Code size analysis
C/C++ API reference
Source code
Issues
pw_multisink
Source code
Issues
pw_numeric
C/C++ API reference
Source code
Issues
pw_package
Source code
Issues
pw_perf_test
C/C++ API reference
Source code
Issues
pw_persistent_ram
C/C++ API reference
Source code
Issues
pw_polyfill
C/C++ API reference
Source code
Issues
pw_preprocessor
C/C++ API reference
Source code
Issues
pw_presubmit
Code formatting
pigweed.json configuration options
Source code
Issues
pw_protobuf
Extended size report
C/C++ API reference
Source code
Issues
pw_protobuf_compiler
Source code
Issues
pw_random
Backends
Fuchsia
Source code
Issues
C/C++ API reference
Source code
Issues
pw_result
C/C++ API reference
Source code
Issues
pw_ring_buffer
Source code
Issues
pw_router
Source code
Issues
pw_rpc
Integration & setup
Creating services
C++ client & server
C++ with Nanopb
C++ with pw_protobuf
C++ with raw RPC
C/C++ API reference
Python client
TypeScript client
Java client
Benchmarking
Wire protocol
Design
Serial & HDLC example
Source code
Issues
pw_rpc_transport
Source code
Issues
pw_rust
Source code
Issues
pw_sensor
Python package
Source code
Issues
pw_snapshot
Setting up a Snapshot Pipeline
Module Usage
Snapshot Proto Format
Design Discussion
Source code
Issues
pw_software_update
Get started
Design
Guide
CLI reference
pw_software_update threat model
Source code
Issues
pw_span
C/C++ API reference
Source code
Issues
pw_spi
Backends
Linux
Source code
Issues
MCUXpresso
Source code
Issues
RP2040
Source code
Issues
Zephyr
Source code
Issues
C/C++ API reference
Source code
Issues
pw_status
Get started & guides
Reference
Rust API reference
C/C++ API reference
Source code
Issues
pw_stm32cube_build
Source code
Issues
pw_stream
Backends
UART (Linux)
C/C++ API reference
Source code
Issues
UART (MCUXpresso)
Source code
Issues
Rust API reference
C/C++ API reference
Source code
Issues
Python
pw_string
Get Started & Guides
Design & Roadmap
Code Size Analysis
C/C++ API reference
Source code
Issues
pw_symbolizer
Source code
Issues
pw_sync
Backends
Bare Metal
Source code
Issues
embOS
Source code
Issues
FreeRTOS
Source code
Issues
STL
Source code
Issues
ThreadX
Source code
Issues
Zephyr
Source code
Issues
C/C++ API reference
Source code
Issues
pw_sys_io
Backends
Ambiq Suite SDK
Source code
Issues
Arduino
Source code
Issues
LM3S6965EVB
Source code
Issues
STM32F429
Source code
Issues
Emcraft SF2
Source code
Issues
MCUXpresso
Source code
Issues
RP2040
Source code
Issues
Standard I/O
Source code
Issues
STM32Cube
Source code
Issues
Zephyr
Source code
Issues
C/C++ API reference
Source code
Issues
pw_system
Console CLI reference
Python Console APIs
C/C++ API reference
Source code
Issues
pw_target_runner
Go
Source code
Issues
pw_thread
Backends
embOS
Source code
Issues
FreeRTOS
Source code
Issues
STL
Source code
Issues
ThreadX
Source code
Issues
Zephyr
Source code
Issues
Rust API reference
C/C++ API reference
Source code
Issues
pw_time
Rust API reference
Source code
Issues
pw_tls_client
Backends
BoringSSL
Source code
Issues
MbedTLS
Source code
Issues
Source code
Issues
pw_tokenizer
Get started
Tokenization
Token databases
Detokenization
API reference
Rust API reference
C/C++ API reference
Source code
Issues
pw_toolchain
Bazel build system integrations
GN build system integrations
pw_toolchain threat model
C/C++ API reference
Source code
Issues
pw_trace
Backends
Tokenized
C/C++ API reference
Source code
Issues
Source code
Issues
pw_transfer
C/C++ API reference
Source code
Issues
pw_uart
Backends
MCUXpresso
Source code
Issues
C/C++ API reference
Source code
Issues
pw_unit_test
Zephyr backend tests
Source code
Issues
pw_uuid
C/C++ API reference
Source code
Issues
pw_varint
Rust API reference
C/C++ API reference
Source code
Issues
pw_watch
How-to guide
CLI reference
Source code
Issues
pw_web
Manual Test Procedure
Log viewer
Python shell
Source code
Issues
pw_work_queue
C/C++ API reference
Source code
Issues
Contributing
Contributing guide
Build systems reference
Code reviews (Gerrit)
Code review guidelines
Issue tracker
Report a vulnerability
SEEDs
0001: The SEED Process
0002: SEED Template
0101: pigweed.json
0102: Consistent Module Documentation
0103: pw_protobuf: Past, present, and future
0104: Display Support
0105: Nested Tokens and Tokenized Log Arguments
0106: Project template
0107: Pigweed Communications
0108: Emulators Frontend
0109: Communication Buffers
0110: Memory Allocation Interfaces
0111: Make Bazel Pigweed’s Primary Build System
0112: Async Poll Model
0113: Add modular Bazel C/C++ toolchain API
0114: Channels
0115: Sensors
0116: Sockets
0117: I3C
0118: Sensor Read API
0119: Sensors
0120: Sensor Configuration
0121: Pigweed project server
0122: Organize Pigweed code samples
0123: Sprout Bazel C++ toolchain API into a separate repository
0124: Interfaces for Retrieving Size Information from Multisink
0125: Statistics Database
0126: Key-Value Store Interfaces
0127: Sensor Reading
0128: Abstracting Thread Creation
0129: Support PW_ASSERT with non-argument message
0130: Update Sphinx theme
0132: pw_usb
0133: pw_wakelock
0134: Unify pw_build, pw_presubmit, and the pw tool with Workflows
Infra
Managing the Bazel lockfile
CI/CQ Intro
Rollers
Glossary
Embedded C++ Guide
Style guides
Bazel
C++
Commit message
CLI
Protobuf
Python
reStructuredText
Doxygen
Writing
Code of conduct
Docs contributors
Build system
Doxygen
Module docs contributor guidelines
Code examples
Website updates
Changelog guide for contributors
Testing Guide
C++ Type Equivalence Classes
Build systems & toolchain
Build systems & toolchain
Overview
Bazel
Bazel
Install Bazel
Get Started With Pigweed And Bazel
Using Pigweed in an existing Bazel project
Add Pigweed as a dependency
Use Pigweed modules
Manage external dependencies in a Bazel project
Set up a MCU platform
Pigweed Bazel build compatibility patterns
GN / Ninja
GN / Ninja
Pigweed’s GN Python Build
CMake
Quickstart
Integration guide
API reference
Toolchain
Size optimizations
Targets
Targets
Android
Ambiq Apollo4
Ambiq Apollo4 with pw_system
Arduino
docs
Emcraft SmartFusion2
Fuchsia
host
Host Device Simulator
lm3s6965evb-qemu
mimxrt595-evk
mimxrt595-evk-freertos
pw_rp2350
Raspberry Pi RP2040 and RP2350
Upstream Pigweed
stm32f429i-disc1
stm32f429i-disc1: STM32Cube
OS abstraction layers
OS abstraction layers
Zephyr
Setup
Advantages & differences
Zephyr backend modules
Allocator
Assert
Chrono
Env setup
Interrupt
Log
Sync
SPI
Sys IO
Thread
FreeRTOS
Setup
Advantages & differences
FreeRTOS backend modules
Chrono
Interrupt
Malloc
Sync
Thread
ThreadX
Setup
Advantages & differences
ThreadX backend modules
Chrono
Sync
Thread
embOS
Setup
Advantages & differences
embOS backend modules
Chrono
Sync
Thread
STL (Linux, MacOS, Windows, Fuchsia)
STL backend modules
Chrono
Sync
Thread
Bare metal
Bare metal backend modules
Sync
Third-party modules
Abseil C++
BoringSSL
crates.io dependencies
Docker
Emboss
Fuchsia libraries
FuzzTest
GoogleTest
LLVM compiler-rt
LLVM libc
LLVM libcxx
Nanopb
Perfetto
TinyUSB
Community & news
Community & news
Issue tracker
Mailing list
Chat room (Discord)
Code of conduct
Blog
Pigweed Blog
#1: Kudzu
#2: Feature flags in Bazel
#3: Pigweed SDK launch
#4: Fixed Point Arithmetic as a Replacement for Soft Floats
#5: C++20 coroutines without heap allocation
#6: Shaping a better future for Bazel C/C++ toolchains
#7: BazelCon 2024
#8: Migrating pigweed.dev to Bazel
#9: Satisfying Bazel's relative paths requirement in C++ toolchains
RSS feed
Showcase projects
Showcase projects
Kudzu
What's new
Index
July 2026
June 2026
May 2026
April 2026
March 2026
Security
Report a vulnerability
Agentic threat model
Handling false positives
2026 Security Bulletins
July 2026
August 2026
Reference
2026 Security Bulletins
#
July 2026
August 2026