What’s new in Pigweed# Index July 2026 Async and concurrency ValueFuture subclassing in pw_async2 Manage lists of pending futures with ValueListProvider Code size improvements in pw_async2 coroutine allocation C++ data structures and utilities Reduced code size for FixedDeque POD types System I/O and streams MultiBuf shallow copy Logging, debugging, and crash handling Expanded metric types in pw_metric Rust FreeRTOS Rust bindings STM32 Nucleo-64 board support New pw_time and pw_thread backends Human-readable time accessors in pw_time Soong rules for Rust crates Tokenization pw::tokenizer::TokenBytes helper function Toolchains and compilers Cortex-M52 support in Zephyr toolchain June 2026 Arch interfaces Target platforms for RP2350 pw_boot entry attribute in Rust Async and concurrency C++20 coroutine generator support in pw_async2 New pw_sync_spinlock crate Bluetooth Configurable HCI event filtering in pw_bluetooth_proxy C++ data structures and utilities GenericDeque speedup Data encoding and serialization In-memory protobuf serialization with BufferEncoder Occurrence support in pw_protobuf Find APIs Base64 decoding in pw_base64 crate Read and write binary integer data from Python I/O streams Developer tools C++ compile commands improvements in pw_ide Rust IDE project generation support in pw_ide HALs New I3C driver layer in pw_i2c_mcuxpresso Logging, debugging, and crash handling New pw_assert crate Tokenized event labels and data format plugins in pw_trace Format string support in pw_format crate RPC Unencoded packet sending in pw_rpc and pw_grpc Timing and clocks New pw_time crate Tokenization Rust detokenization support in pw_tokenizer Asterisk width and precision in C++ and Python detokenizers New pw_cc_enum_source_set template in GN and CMake Versioned enum domain tokenization in pw_tokenizer and pw_log Toolchains and compilers New pw_elf Python package for building ELF files Disabled -ffreestanding by default in arm_gcc Bazel builds Bazel compilation mode support for host_clang toolchain Lifetime safety attributes in pw_preprocessor May 2026 Async and concurrency Notification channels and void coroutines in pw_async2 Thread safety fixes in pw_async2 Bluetooth Security fixes in pw_bluetooth_sapphire LE Audio Isochronous Channels support in pw_bluetooth_sapphire Passthrough support for large L2CAP PDUs in pw_bluetooth_proxy C++ data structures and utilities New pw_enum module Lifetime bound checks for pw::FunctionRef Cryptography and security ChaCha20 cipher support in pw_crypto Developer tools Log file viewing in pw_console Downstream module creation with pw_module Performance and usability improvements to pw_ide Kernel Vectored I/O for channel transactions in pw_kernel Updated join and terminate syscalls Logging, debugging, and crash handling Compile-time format string concatenation in Rust pw_log RPC Concurrency and lock reduction in pw_rpc Tokenization Improved collision handling and correctness in pw_tokenizer April 2026 Async and concurrency Void future support in pw::async2::Select Bluetooth Dynamic credit sharing mode in pw_bluetooth_proxy Build systems New Python API for Bazel introspection and queries C++ data structures and utilities pw_function config override header Non-owning callbacks via pw::FunctionRef Dynamic containers reset support std::variant support in pw::Hash New pw_numeric arithmetic and rounding utilities Developer tools pw_ide Bazel code intelligence and VS Code UI overhaul pw_presubmit v2 Embedded memory regions support in pw_snapshot diagnostics HALs pw_i2c mcuxpresso hardware timeouts support for deadlines Kernel Userspace process control Shareable .text sections Userspace time support Out-of-band channel signaling System generation RPC pw_transfer server-side lifecycle callbacks Third-party hardware and software pw_allocator support for Zephyr Timing and clocks pw_clock_tree improvements March 2026 Async and concurrency Handle futures of varying types with BoxedFuture Simplified polling with PW_AWAIT Coroutine and task rework Bluetooth Allocator support for buffers and packets in pw_bluetooth_sapphire C++ data structures and utilities Dynamically allocated maps with pw::DynamicMap New FIFO queue with performant push and pop operations Developer tools Improved pw_ide reliability Kernel Async IPC Process termination and ownership Reduce footprint of kernel-only applications RPC Support multiple clients on a transfer thread in pw_transfer Toolchains and compilers Access toolchain tools through Bazelisk