Libraries (modules)#

Name

Status

Description

Languages

pw_alignment

stable

Natural object alignment, guaranteed

C++17

pw_allocator

unstable

Flexible, safe, and measurable memory allocation

C++17

pw_analog

stable

Analog-to-digital converter libraries and utilities

C++

pw_android_toolchain

unstable

GN toolchains for the Android NDK

GN

pw_arduino_build

stable

Main function wrapper and build utilities for Arduino

C++, GN

pw_assert

stable

Flexible crash triggering and handling

C, C++

pw_assert_basic

pw_assert_log

pw_assert_tokenized

pw_assert_trap

pw_assert_zephyr

pw_async

deprecated

Portable APIs for asynchronous code

C++

pw_async2

experimental

Cooperative async tasks for embedded

C++17

pw_async2_basic

pw_async2_epoll

pw_async_basic

pw_base64

stable

Base64 encoding, decoding, and validating

C, C++

pw_bloat

stable

Utilities for generating binary size reports

C++, GN

pw_blob_store

stable

Flash-backed persistent storage for data blobs

C++

pw_bluetooth

unstable

Host-layer Bluetooth Low Energy APIs and utilities

C++

pw_bluetooth_hci

stable

Bluetooth Host Controller Interface utilities

C++

pw_bluetooth_profiles

unstable

Bluetooth profiles built on top of pw_bluetooth

C++

pw_bluetooth_proxy

unstable

Lightweight proxy for augmenting Bluetooth functionality

C++17

pw_bluetooth_sapphire

unstable

Battle-tested Bluetooth with rock-solid reliability

C++17

pw_boot

stable

Simplified booting for C++ targets

C++

pw_boot_cortex_m

stable

ARM Cortex-M backend for pw_boot

C, C++

pw_build

stable

Integrations for Bazel, GN, and CMake

Bazel, CMake, GN

pw_build_android

unstable

Utilities for using Pigweed in Android platform

C++20

pw_build_info

stable

Generate, embed, and parse build-related information

Bazel, CMake, GN

pw_build_mcuxpresso

stable

Utilities for building NXP MCUXpresso SDK targets

Bazel, GN

pw_bytes

stable

Utilities for manipulating binary data

C++

pw_channel

experimental

Async, zero-copy API for sending and receiving bytes or datagrams

C++

pw_checksum

stable

Checksum calculation API

C, C++

pw_chre

experimental

Android Context Hub Runtime Environment backend

C++

pw_chrono

stable

Portable std::chrono for constrained embedded devices

C, C++

pw_chrono_embos

pw_chrono_freertos

pw_chrono_rp2040

pw_chrono_stl

pw_chrono_threadx

pw_chrono_zephyr

pw_cli

stable

Enhance and accelerate custom command-line tooling

Python

pw_clock_tree

unstable

Clock tree management for embedded devices

C++17

pw_clock_tree_mcuxpresso

unstable

NXP MCUXpresso SDK implementation for pw_clock_tree

C++17

pw_compilation_testing

pw_config_loader

pw_console

stable

Multi-purpose pluggable interactive console for dev & manufacturing

Python

pw_containers

pw_cpu_exception

pw_cpu_exception_cortex_m

pw_cpu_exception_risc_v

pw_crypto

pw_digital_io

pw_digital_io_linux

unstable

Digital I/O interface for Linux userspace

C++17

pw_digital_io_mcuxpresso

pw_digital_io_rp2040

pw_dma_mcuxpresso

unstable

DMA helpers for MCUXpresso SDK

C++17

pw_docgen

stable

Documentation generator for Pigweed-based projects

GN

pw_doctor

pw_emu

experimental

Flexible emulators frontend

Python, CLI

pw_env_setup

pw_env_setup_zephyr

experimental

Zephyr utilities

pw_file

pw_format

experimental

String formatting

Rust

pw_function

stable

Embedded-friendly std::function

C++17

pw_fuzzer

unstable

Better C++ code through easier fuzzing

C++17, C++20

pw_grpc

unstable

pw_rpc over gRPC

C++17, C++20

pw_hdlc

stable

Simple, robust, and efficient serial communication

Python, C++17, TypeScript

pw_hex_dump

stable

Handy hexdump utilities

C++17

pw_i2c

stable

Cross-platform I2C API with interactive debugging

C++17

pw_i2c_linux

stable

Linux userspace implementation for pw_i2c

C++17

pw_i2c_mcuxpresso

stable

NXP MCUXpresso SDK implementation for pw_i2c

C++17

pw_i2c_rp2040

stable

Raspberry Pi Pico SDK implementation for pw_i2c

C++17

pw_ide

stable

Code editor and IDE support for Pigweed projects

C++, CLI, Python, VS Code

pw_interrupt

pw_interrupt_cortex_m

pw_interrupt_xtensa

pw_interrupt_zephyr

pw_intrusive_ptr

pw_json

stable

Simple, efficient C++ JSON serialization

C++17

pw_kvs

stable

Lightweight, persistent key-value store

C++17

pw_libc

pw_libcxx

pw_log

stable

Robust and portable logging for embedded projects

C++, Java, Python

pw_log_android

unstable

Android logging backend

C++

pw_log_basic

pw_log_null

pw_log_rpc

pw_log_string

pw_log_tokenized

pw_log_zephyr

pw_malloc

stable

Replacement interface for standard libc dynamic memory operations

C, C++

pw_malloc_freelist

pw_malloc_freertos

pw_metric

pw_minimal_cpp_stdlib

pw_module

pw_multibuf

unstable

A buffer API optimized for zero-copy messaging

C++17

pw_multisink

pw_package

pw_perf_test

unstable

Micro-benchmarks that are easy to write and run

C++17

pw_persistent_ram

pw_polyfill

pw_preprocessor

stable

Helpful preprocessor macros

C, C++

pw_presubmit

stable

Python tools for running presubmit checks and linters

Python

pw_protobuf

stable

Expressive interface for encoding and decoding protocol buffers

C++

pw_protobuf_compiler

pw_random

pw_result

stable

Error propagation primitives: value-or-error

C++17

pw_ring_buffer

pw_router

experimental

Transport-agnostic packet routing

C++

pw_rpc

stable

Efficient, low-code-size RPC system for embedded devices

C++, Java, JavaScript, Python, TypeScript

pw_rpc_transport

pw_rust

pw_sensor

experimental

A modular way to see the world

Python, C++17

pw_snapshot

pw_software_update

experimental

Secure software delivery

Python, C++17

pw_span

stable

std::span for C++17

C++17, C++20

pw_spi

pw_spi_linux

unstable

SPI interface for Linux userspace

C++17, C++20

pw_spi_mcuxpresso

pw_spi_rp2040

unstable

Raspberry Pi RP2040 backend for pw_spi

C++

pw_status

stable

Exception-free error propagation for embedded

C++17, C, Python, Java, TypeScript, Rust

pw_stm32cube_build

pw_stream

pw_stream_shmem_mcuxpresso

pw_stream_uart_linux

pw_stream_uart_mcuxpresso

pw_string

stable

Efficient, easy, and safe string manipulation

C++17

pw_symbolizer

pw_sync

pw_sync_baremetal

pw_sync_embos

pw_sync_freertos

pw_sync_stl

pw_sync_threadx

pw_sync_zephyr

pw_sys_io

pw_sys_io_ambiq_sdk

pw_sys_io_arduino

pw_sys_io_baremetal_lm3s6965evb

pw_sys_io_baremetal_stm32f429

pw_sys_io_emcraft_sf2

pw_sys_io_mcuxpresso

pw_sys_io_rp2040

pw_sys_io_stdio

pw_sys_io_stm32cube

pw_sys_io_zephyr

pw_system

pw_target_runner

stable

gRPC server for running executables in parallel

Go

pw_thread

pw_thread_embos

pw_thread_freertos

pw_thread_stl

pw_thread_threadx

pw_thread_zephyr

pw_tls_client

pw_tls_client_boringssl

pw_tls_client_mbedtls

pw_tokenizer

stable

Compress strings to shrink logs by +75%

C++, C11, Python, Rust, TypeScript, Java

pw_toolchain

stable

Embedded toolchains for GN-based Pigweed projects

GN

pw_toolchain_bazel

unstable

A modular toolkit for declaring C/C++ toolchains in Bazel

Starlark

pw_trace

pw_trace_tokenized

pw_transfer

pw_uart

unstable

Core interfaces for UART communication

C++

pw_unit_test

stable

GoogleTest for embedded

pw_unit_test_zephyr

pw_varint

stable

Functions for encoding and decoding variable length integers

C, C++, Rust

pw_watch

stable

Embedded development file system watcher

pw_web

pw_work_queue