blob: e2d12aad98a0ac18efb42d27b1cbe7b1abb3fcc9 [file] [log] [blame]
:tocdepth: 2
.. _docs-changelog:
=====================
What's new in Pigweed
=====================
--------------------------------
Talk to the team at Pigweed Live
--------------------------------
.. pigweed-live::
.. _docs-changelog-latest:
.. _docs-changelog-2025-02-06:
-----------
Feb 6, 2025
-----------
.. changelog_highlights_start
.. note::
:ref:`docs-changelog` will be paused for 2 months.
It will resume in April 2025.
Highlights (Jan 25, 2025 to Feb 6, 2025):
* **Tokenization improvements in C++**: The new
:cpp:func:`pw::tokenizer::Detokenizer::FromCsv` C++ method constructs a
detokenizer from a CSV file. :ref:`Tokenization domains <seed-0105>` are now
supported in C++.
* **New global variables wrapper** :cpp:class:`pw::RuntimeInitGlobal` declares
a global variable that is initialized at runtime. Its destructor is never
run.
* **Bazel-based docs build**: ``pigweed.dev`` is now built with Bazel. See
:ref:`blog-08-bazel-docgen`.
.. changelog_highlights_end
.. _docs-changelog-2025-02-06-Modules:
Modules
=======
.. _docs-changelog-2025-02-06-Modules-pw_allocator:
pw_allocator
------------
New features:
.. 9f0f4f8d888e7ebfd228efd622df996f3125f2f1
* :cpp:class:`pw::Allocator` now has more overloads for customizing
allocated array alignment. Commit: `Add overloads to customize allocated
array alignment <https://pwrev.dev/260276>`__.
Changes:
.. c48adeb92ff36577a34f22cf7b2a0b8d0086a3b2
* ``pw::allocator::test::SynchronizedAllocatorForTest`` was removed.
Commit: `Remove SynchronizedAllocatorForTest
<https://pwrev.dev/264698>`__.
.. _docs-changelog-2025-02-06-Modules-pw_bluetooth:
pw_bluetooth
------------
New features:
.. 7bec9117b6f21884a5046ecabf351b671b167885
* ``pw_bluetooth`` now supports a :ref:`snoop log
<module-pw_bluetooth-snoop-log>` for recording
HCI RX/TX traffic. Commit: `Add snoop log <https://pwrev.dev/226611>`__.
Bug: :bug:`389995204`.
.. _docs-changelog-2025-02-06-Modules-pw_bluetooth_proxy:
pw_bluetooth_proxy
------------------
New features:
.. 89a3c9cab649585ebeb7b863035d28ff419829bc
* The new :cpp:class:`pw::bluetooth::proxy::AcquireGattNotifyChannel`
method returns a GATT Notify channel that supports sending notifications
to a particular connection handle and attribute. Commit: `Support
acquire of gatt notify channels <https://pwrev.dev/264954>`__. Bugs:
:bug:`369709521`, :bug:`379337272`.
.. _docs-changelog-2025-02-06-Modules-pw_bluetooth_sapphire:
pw_bluetooth_sapphire
---------------------
New features:
.. c6f84aa0c5a57695a4a57e3811c89135e9344f00
* :ref:`module-pw_bluetooth_sapphire-fuchsia-zxdb` explains how to use
Fuchsia's kernel debugger. Commit: `Document how to use the Zxdb
Debugger <https://pwrev.dev/263812>`__.
.. _docs-changelog-2025-02-06-Modules-pw_containers:
pw_containers
-------------
New features:
.. 16ddae866c80f3cee061f189cee149700f81d188
* :cpp:class:`pw::Vector` now has an explicit ``constexpr`` constructor.
Using this constructor will place the entire object in ``.data`` by
default, which will increase ROM size. Commit: `Add explicit constexpr
constructor for Vector <https://pwrev.dev/263692>`__.
Bug fixes:
.. 852571bdf8b031b7ca89fff2ae9fdaa4f6cfe0a6
* A bug was fixed where ``pw::Vector::insert`` was move assigning to
destroyed objects. Commit: `Do not move assign to destroyed objects in
Vector::insert <https://pwrev.dev/252452>`__. Bug: :bug:`381942905`.
.. _docs-changelog-2025-02-06-Modules-pw_crypto:
pw_crypto
---------
New features:
.. a1eb87b67a72231755b7fd6671e99d7f7276ba20
* :cpp:class:`pw::crypto::aes_cmac::Cmac` provides support for the
AES-CMAC algorithm. Commit: `Add Aes::Cmac <https://pwrev.dev/231913>`__.
.. _docs-changelog-2025-02-06-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. 9b46aef8010f3c2edd87f2365d9ef6ee4656df56
* The new :cpp:func:`pw::tokenizer::Detokenizer::FromCsv` C++ method
constructs a detokenizer from a CSV file. Commit: `Add support for CSV
parsing in C++ <https://pwrev.dev/256653>`__.
.. 8fe4260fdbbf806a2470396d0d1da1bb6b15d522
* :ref:`Tokenization domains <seed-0105>` are now supported in C++.
Commit: `Add support for domains in C++ <https://pwrev.dev/255173>`__.
.. _docs-changelog-2025-02-06-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 5f9420a551774235c883a621e639228525b13591
* :cpp:class:`pw::RuntimeInitGlobal` is a new wrapper for global
variables. See :ref:`module-pw_toolchain-cpp-globals`. Commit:
`Introduce RuntimeInitGlobal <https://pwrev.dev/263875>`__.
.. d2f7a36184d742e27761591a0dac13fa421e6b32
* :ref:`module-pw_toolchain` has started to support a Zephyr toolchain.
Commit: `Add support for Zephyr toolchain <https://pwrev.dev/263836>`__.
.. 51a7b5cc4bbdbb54d4eb0a9b0200a76c7c479c65
* :ref:`module-pw_toolchain-bazel-clang-tidy` explains how to integrate
Pigweed's toolchain with ``clang-tidy``. Commit: `Document clang-tidy +
Bazel <https://pwrev.dev/262873>`__. Bug: :bug:`341723612`.
.. _docs-changelog-2025-02-06-Modules-pw_transfer:
pw_transfer
-----------
Bug fixes:
.. d95bb9205b6826e7c35f06f2ae53e354a1d795e8
* In proto3, when a retry config option is 0, ``pw_transfer`` no longer
attempts to set it. Commit: `Ignore 0 retry values from config proto
<https://pwrev.dev/265253>`__. Bug: :bug:`357145010`.
.. _docs-changelog-2025-02-06-Build-systems:
Build systems
=============
.. _docs-changelog-2025-02-06-Build-systems-Bazel:
Bazel
-----
New features:
.. 5f466288aea2a17142258a4ed0683b57aa59c711
* The Pigweed Bazel build has started to support Zephyr's toolchain.
Commit: `Add Zephyr toolchain CIPD repo <https://pwrev.dev/263832>`__.
.. _docs-changelog-2025-02-06-Docs:
Docs
====
New features:
.. 18076431f27790a69116ef91bb8f8c877eb6a479
* `pigweed.dev/rustdoc <https://pigweed.dev/rustdoc>`__ now provides an
index of all Pigweed Rust crates. Previously, that page would 404.
Commit: `Add index page to Rust API docs <https://pwrev.dev/263838>`__.
.. 55b363ba45eb871df096ca060c93a45f73b741a7
* When viewing the docs on a staging site, there's now a banner at the
top of the docs site to make it clear that you're not viewing the
official Pigweed docs. Commit: `Present banner on staged docs
<https://pwrev.dev/263513>`__. Bug: :bug:`304835851`.
.. 809d32b33e2dd368bc91704e7d70f7069d6cc7d9
* ``pigweed.dev`` is now built with Bazel. See
:ref:`blog-08-bazel-docgen`. Commit: `Add Bazel migration blog post
<https://pwrev.dev/264515>`__.
.. _docs-changelog-2025-01-24:
------------
Jan 24, 2025
------------
.. changelog_highlights_start
Highlights (Jan 10, 2025 to Jan 24, 2025):
* **Thread creation API**: The cross-platform thread creation API proposed
in :ref:`seed-0128` has been implemented.
* **Layering check**: Upstream Pigweed toolchains now support
:ref:`layering check <module-pw_toolchain-bazel-layering-check>` in Bazel.
Including headers that aren't in the ``hdrs`` of a ``cc_library``
you directly depend on becomes a compile-time error.
* **Cortex-A support**: :ref:`module-pw_interrupt_cortex_a` is a new
``pw_interrupt`` backend for Arm Cortex-A processors. ``pw_toolchain``
now supports Arm Cortex-A35.
* **Atomic API**: The new :ref:`module-pw_atomic` module provides software
implementations of atomic operations.
.. changelog_highlights_end
.. _docs-changelog-2025-01-24-Modules:
Modules
=======
.. _docs-changelog-2025-01-24-Modules-pw_atomic:
pw_atomic
---------
New features:
.. 120f202e25b4c59111012e9568c74f4af2fdb09d
* The new :ref:`module-pw_atomic` module provides software
implementations of atomic operations. Commit: `Add module for atomic
operations <https://pwrev.dev/239719>`__.
.. _docs-changelog-2025-01-24-Modules-pw_bluetooth_proxy:
pw_bluetooth_proxy
------------------
New features:
.. c20f1e99713ae9959a223d8504690ccbf98f260f
* Clients of ``pw_bluetooth_proxy`` can now register a callback function
for inspecting host-to-controller L2CAP basic channel packets. Commit:
`Add host to controller callback packet sniffing
<https://pwrev.dev/260553>`__. Bug: :bug:`390191420`.
.. _docs-changelog-2025-01-24-Modules-pw_cli:
pw_cli
------
New features:
.. 69614fba8ccf19b2dcaf60f214353a733329fcaa
* The new :py:class:`pw_cli.git_repo.GitRepoFinder` helper class
efficiently finds Git repo roots. Commit: `Add helper for efficiently
finding git repo roots <https://pwrev.dev/254024>`__. Bug:
:bug:`326309165`.
.. _docs-changelog-2025-01-24-Modules-pw_digital_io_mcuxpresso:
pw_digital_io_mcuxpresso
------------------------
New features:
.. f282c15c48732f4c4e1e3da15c1cfddea2b9cb47
* :cpp:class:`pw::digital_io::McuxpressoDigitalInOutInterrupt` now
supports interrupt triggers on both edges. Commit: `Emulate kBothEdges
trigger via level interrupt <https://pwrev.dev/260793>`__. Bug:
:bug:`390456846`.
.. _docs-changelog-2025-01-24-Modules-pw_env_setup:
pw_env_setup
------------
Changes:
.. 537825f5f67281aee3764444de234e81722a2401
* All transitive Python dependencies are now pinned. Commit: `Pin all
transitive Python package dependencies <https://pwrev.dev/261413>`__.
Bug: :bug:`390257072`.
.. _docs-changelog-2025-01-24-Modules-pw_interrupt_cortex_a:
pw_interrupt_cortex_a
---------------------
New features:
.. e61919ca93f922bc67fc6bd2f005c00f858cdcbd
* :ref:`module-pw_interrupt_cortex_a` is a new ``pw_interrupt`` backend
for Arm Cortex-A processors. Commit: `Add pw_interrupt backend for
A-profile processors <https://pwrev.dev/261396>`__.
.. _docs-changelog-2025-01-24-Modules-pw_protobuf:
pw_protobuf
-----------
Changes:
.. a3cd0bc42a929df218bbc3ed96944cacf5cead7a
* The ``kMaxEncodedSizeBytes`` constant has been renamed to
``kMaxEncodedSizeBytesWithoutValues`` to reflect the fact that it
sometimes doesn't represent a message's true maximum size. Commit:
`Disambiguate maximum size constants <https://pwrev.dev/259012>`__. Bug:
:bug:`379868242`.
.. _docs-changelog-2025-01-24-Modules-pw_rpc:
pw_rpc
------
Changes:
.. 0afdf903105c46e8572591de16b7fd2964ad0874
* Recent Java client call ID changes were reverted because they were
causing RPC timeouts. Commit: `Revert Java client call ID changes
<https://pwrev.dev/260892>`__.
.. _docs-changelog-2025-01-24-Modules-pw_sync:
pw_sync
-------
Changes:
.. 86cb968d79207a634c196bc1d289aa1cf25591c7
* Time-related methods previously in :cpp:class:`pw::sync::Borrowable`
were moved to a new :cpp:class:`pw::sync::TimedBorrowable` class so that
projects can use ``Borrowable`` without depending on :ref:`module-pw_chrono`.
Commit: `Split TimedBorrowable from Borrowable
<https://pwrev.dev/260313>`__.
.. _docs-changelog-2025-01-24-Modules-pw_system:
pw_system
---------
Changes:
.. f1cb7ec19fca8dd7332d31d0ae81309e68601514
* The ``//pw_system:config`` Bazel rule is now public to make it
possible to reuse the same configurations when creating custom RPC
servers or I/O backends outside of Pigweed. Commit: `Make config library
public in Bazel <https://pwrev.dev/261693>`__.
.. _docs-changelog-2025-01-24-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. a90ad7872bd7f178d049264214ae3404c212fc4d
* The new :c:macro:`PW_NESTED_TOKEN_FMT` macro is a format specifier for
doubly nested token arguments. Commit: `Create generic macro for a
nested token format <https://pwrev.dev/253267>`__.
Changes:
.. 1b8d5de1f136c9c46d62869554d1cf9672b8a815
* Token domains have been limited to certain characters. Commit: `Limit
token domains to certain characters <https://pwrev.dev/253952>`__.
.. _docs-changelog-2025-01-24-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 1a98c3d9725b4178148a354b917f15d86fc374b5
* ``pw_toolchain`` now supports Arm Cortex-A35. Commit: `Add toolchain
config for Cortex-A35 <https://pwrev.dev/261733>`__.
.. 03e6941c72b91f2cb9550b1b1ba59fa9fe862ab2
* Upstream Pigweed toolchains now support
:ref:`layering check <module-pw_toolchain-bazel-layering-check>`.
Commit: `Document layering check <https://pwrev.dev/261552>`__. Bug:
:bug:`219091175`.
.. _docs-changelog-2025-01-24-Modules-pw_thread:
pw_thread
---------
New features:
.. e9d4e4d30b4a49b2ca4dba88656dc660b0a0bcaf
* The cross-platform thread creation API proposed in :ref:`seed-0128`
has been implemented. Commit: `Generic thread creation
<https://pwrev.dev/255065>`__. Bug: :bug:`373524851`.
.. _docs-changelog-2025-01-09:
-----------
Jan 9, 2025
-----------
Highlights (Dec 27, 2024 to Jan 9, 2025):
* **Bazel 8**: Pigweed now :ref:`depends on Bazel 8
<docs-changelog-2025-01-09-Build-systems-Bazel>`.
* **FuzzTest and CMake**: FuzzTest is now :ref:`supported in
CMake projects <docs-changelog-2025-01-09-Modules-pw_fuzzer>`.
* **BoringSSL**: ``pw_crypto`` now :ref:`supports
BoringSLL <docs-changelog-2025-01-09-Modules-pw_crypto>`.
* **pw_rpc Java improvements**: The ``pw_rpc`` Java client now
has better :ref:`concurrent RPC request support
<docs-changelog-2025-01-09-Modules-pw_rpc>`.
.. _docs-changelog-2025-01-09-Modules:
Modules
=======
.. _docs-changelog-2025-01-09-Modules-pw_containers:
pw_containers
-------------
New features:
.. 68e18edf9f1b3913c73b1a4332bbce6521609916
* Intrusive lists now support move operations. Commit: `Support moving
intrusive lists <https://pwrev.dev/255894>`__.
.. _docs-changelog-2025-01-09-Modules-pw_chrono:
pw_chrono
---------
New features:
.. e88f3c4397c5cafafda8635ac93d42483059a9f9
* ``pw_chrono`` snapshots now support optional clock names. Commit: `Add
support for clock names <https://pwrev.dev/253753>`__.
.. _docs-changelog-2025-01-09-Modules-pw_crypto:
pw_crypto
---------
New features:
.. 462b37b0820e284069b8e42f6e61438177b60cb7
* ``pw_crypto`` now supports :ref:`BoringSSL <module-pw_crypto-boringssl>`.
Commit: `Add BoringSSL backend for AES <https://pwrev.dev/231914>`__.
Changes:
.. 483a24a69950b8be7ae924e28a7504150378c8ee
* ``micro_ecc`` support has been removed. Commit: `Remove micro_ecc
support <https://pwrev.dev/229672>`__. Bug: :bug:`359924206`.
.. _docs-changelog-2025-01-09-Modules-pw_digital_io_mcuxpresso:
pw_digital_io_mcuxpresso
------------------------
New features:
.. 8a5fc59a80af2fb2b11c2cd16ecc21a210fe1065
* The new ``pw::digital_io::McuxpressoDigitalInOutInterrupt`` class
supports interrupts on the GPIO interrupt block which enables using
interrupts on more pins. Commit: `Add McuxpressoDigitalInOutInterrupt
support <https://pwrev.dev/247972>`__.
Changes:
.. 34521ea9d72066a02d4b562eb6d2dd628e424e58
* ``pw::digital_io::McuxpressoDigitalInInterrupt`` has been deprecated.
``pw::digital_io::McuxpressoPintInterrupt`` should be used instead.
Commit: `Introduce McuxpressoPintInterrupt
<https://pwrev.dev/258994>`__. Bug: :bug:`337927184`.
.. _docs-changelog-2025-01-09-Modules-pw_fuzzer:
pw_fuzzer
---------
New features:
.. 736d6a39f5cdde223bfcbaf6f8c8fec7d512379a
* :ref:`FuzzTest <module-pw_fuzzer-guides-using_fuzztest>` can now be
used in CMake projects. Commit: `Make FuzzTest usable be external CMake
projects <https://pwrev.dev/239049>`__. Bug: :bug:`384978398`.
.. _docs-changelog-2025-01-09-Modules-pw_log_basic:
pw_log_basic
------------
Changes:
.. a542e417c4367b3b6c4fed88a172b9c2bdd2a837
* The maximum length for the function name field has increased from 20
to 30 characters and is now left-aligned. Commit: `Adjust field widths
<https://pwrev.dev/258174>`__.
.. _docs-changelog-2025-01-09-Modules-pw_protobuf:
pw_protobuf
-----------
Changes:
.. 8706efb9847543d226c5cb17494faffcd034cfa0
* Regular callbacks now ignore fields with unset decode callbacks.
Previously they caused ``DATA_LOSS`` errors. Commit: `Allow unset
callback fields in message structs <https://pwrev.dev/258392>`__.
.. _docs-changelog-2025-01-09-Modules-pw_rpc:
pw_rpc
------
New features:
.. 15d4ae5ff36cd452023fdfc07835f5f1635f05ef
* The Java client now supports making multiple concurrent RPC requests
to the same method. Commit: `Increment call_ids for java client
<https://pwrev.dev/258792>`__.
.. _docs-changelog-2025-01-09-Modules-pw_span:
pw_span
-------
New features:
.. 031bf132386f7350cb86338928368f46c5b76d1c
* The new docs section :ref:`module-pw_span-start-params` explains why
``pw::span`` objects should be passed by value. Commit: `Recommend passing
pw::span objects by value <https://pwrev.dev/257072>`__. Bug:
:bug:`387107922`.
.. _docs-changelog-2025-01-09-Modules-pw_stream:
pw_stream
---------
New features:
.. e7380e5da83527b80087e86b63224e052074d10f
* The new ``pw::stream::SocketStream::IsReady()`` method indicates
whether the streaming socket connection is ready. Commit: `Add ready
method to socket stream <https://pwrev.dev/253772>`__.
.. _docs-changelog-2025-01-09-Modules-pw_thread:
pw_thread
---------
Changes:
.. 717e4f58092e947eba23afb8be099d2ccf1247c3
* It is now simpler to disable the ``join()`` function when it's not
supported. Commit: `Simplify disabling join() function when not
supported <https://pwrev.dev/257913>`__.
.. _docs-changelog-2025-01-09-Modules-pw_toolchain:
pw_toolchain
------------
Changes:
.. 8adc4c3e84423554c5ad6549fefe3d0e035985c6
* The float ABI configuration for Arm Cortex-M33 was changed from
``soft`` to ``softfp``. Commit: `Update m33 float-abi
<https://pwrev.dev/259412>`__. Bug: :bug:`388354690`.
.. _docs-changelog-2025-01-09-Modules-pw_toolchain_bazel:
pw_toolchain_bazel
------------------
Changes:
.. 413a81576837f344c55a8d64b5d1807769e513b0
* Most of ``pw_toolchain_bazel`` has been removed because it has been
upstreamed to ``rules_cc``. Commit: `Remove contents
<https://pwrev.dev/252472>`__. Bug: :bug:`346388161`.
.. _docs-changelog-2025-01-09-Modules-pw_uart:
pw_uart
-------
Changes:
.. 71c2d0d0e9eb7cc27111a20b3190af1593944676
* It is no longer safe to call any ``pw_uart`` read or write methods
from a ``pw::uart::UartNonBlocking::DoRead()`` callback context. Commit:
`Restrict UartNonBlocking::DoRead() callback
<https://pwrev.dev/255732>`__. Bug: :bug:`384966926`.
.. _docs-changelog-2025-01-09-Modules-pw_unit_test:
pw_unit_test
------------
Bug fixes:
.. 203c6c8fd11fbdf01b51e564de03150f38dab430
* The buffer for expectation logs was increased in size to prevent
expectation logs from getting cut off. Commit: `Expectation buffer
cleanup <https://pwrev.dev/259055>`__. Bug: :bug:`387513166`.
.. _docs-changelog-2025-01-09-Build-systems:
Build systems
=============
.. _docs-changelog-2025-01-09-Build-systems-Bazel:
Bazel
-----
Changes:
.. b13f7bf334b239174e87d91fbfac8b8c1d209403
* Pigweed now depends on Bazel 8.0.0. Commit: `Update to Bazel 8.0.0
<https://pwrev.dev/242033>`__. Bug: :bug:`372510795`.
.. _docs-changelog-2025-01-09-Docs:
Docs
====
New features:
.. b977a3aeb1f4cf5a1b113396bbf9f9af6c1f1658
* The :ref:`Sense tutorial <showcase-sense-tutorial-intro>` has been
updated to cover all variations on the Raspberry Pi Pico. Commit:
`Refresh Sense tutorial <https://pwrev.dev/254652>`__.
.. 9337bf2516b4e0876d5308ec15939cb2dc9e6ab8
* :ref:`Pigweed Toolchain <toolchain>` now has a homepage. Commit: `Add
toolchain homepage <https://pwrev.dev/247593>`__. Bug: :bug:`373454866`.
.. _docs-changelog-2024-12-26:
------------
Dec 26, 2024
------------
Highlights (Dec 12, 2024 to Dec 26, 2024):
* **TLSF allocator**: ``pw_allocator`` has a new :ref:`two-layer, segregated
fit allocator <docs-changelog-2024-12-26-Modules-pw_allocator>`.
* **Checked arithmetic**: ``pw_numeric`` has :ref:`a suite of new arithmetic
operations <docs-changelog-2024-12-26-Modules-pw_numeric>` that check for
overflows.
* **Constant expression unit tests**: ``pw_unit_test`` has a
:ref:`new constexpr unit test <docs-changelog-2024-12-26-Modules-pw_unit_test>`
that runs at both compile-time and runtime.
* **Bazel module integration guidance**: :ref:`docs-bazel-integration` now provides
guidance on how to integrate Pigweed into projects that use Bazel modules.
.. _docs-changelog-2024-12-26-Modules:
Modules
=======
.. _docs-changelog-2024-12-26-Modules-pw_allocator:
pw_allocator
------------
New features:
.. f674d68203b26bf0207ab79099696e2b3b3cd9b3
* The new :cpp:class:`pw::allocator::TlsfAllocator` is a two-layer,
segregated fit allocator. Its 2D array of buckets incurs overhead but it
can satisfy requests quickly and has much better fragmentation performance
than ``WorstFitAllocator``. Commit: `Add TLSF allocator
<https://pwrev.dev/234818>`__.
.. _docs-changelog-2024-12-26-Modules-pw_build:
pw_build
--------
New features:
.. ee6f9976ba7e78737a1a74ae05f06da397b896c8
* The new ``pw_rust_crates_extension`` Bazel extension lets a project
override the ``rust_crates`` repo when needed without requiring every
project to define one. Commit: `Add pw_rust_crates_extension
<https://pwrev.dev/254952>`__. Bug: :bug:`384536812`.
.. _docs-changelog-2024-12-26-Modules-pw_containers:
pw_containers
-------------
New features:
.. 999adb191f8f512b524f0a65bd0662ac7854ef20
* Queues and dequeues now have explicit ``constexpr`` constructors.
Commit: `Add explicit constexpr constructors for deques/queues
<https://pwrev.dev/250434>`__.
.. _docs-changelog-2024-12-26-Modules-pw_multibuf:
pw_multibuf
-----------
Changes:
.. b439dd3e602e6c3568ff2ed68a12c2ecf90391a9
* :cpp:class:`pw::multibuf::MultiBufAllocator` no longer supports async.
:cpp:class:`pw::multibuf::MultiBufAllocatorAsync` should be used
instead. Commit: `Move async to new MultiBufAllocatorAsync
<https://pwrev.dev/255015>`__. Bug: :bug:`384583239`.
.. _docs-changelog-2024-12-26-Modules-pw_numeric:
pw_numeric
----------
New features:
.. d6827c16644efa06f524a702903397e3cc07ba4c
.. TODO: https://pwbug.dev/389134105 - Fix these links.
* :cpp:type:`pw::CheckedAdd`, :cpp:type:`pw::CheckedIncrement`,
:cpp:type:`pw::CheckedSub`, :cpp:type:`pw::CheckedDecrement`, and
:cpp:type:`pw::CheckedMul` are new arithmetic methods that check for
overflows. Commit: `Add checked_arithmetic.h
<https://pwrev.dev/253172>`__. Bug: :bug:`382262919`.
.. _docs-changelog-2024-12-26-Modules-pw_thread:
pw_thread
---------
New features:
.. 4f536c6c1137a7282e7f800aa636c79c5c629191
* The new :cpp:type:`pw::ThreadPriority` class is a generic priority
class that can be used by any ``pw_thread`` backend. Commit: `Thread
priority class <https://pwrev.dev/242214>`__.
.. _docs-changelog-2024-12-26-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 13446e506fb94bcf4345bbf74b7987cff0fe0e3a
* ``pw_toolchain`` now supports Arm Cortex-M3. Commit: `Add Cortex M3
support <https://pwrev.dev/254474>`__.
.. _docs-changelog-2024-12-26-Modules-pw_unit_test:
pw_unit_test
------------
New features:
.. c13d91eae61a50dfbe08023983337086509e7a8e
* :c:macro:`PW_CONSTEXPR_TEST` is a new unit test that is executed both
at compile-time in a ``static_assert()`` and at runtime as a GoogleTest
``TEST()``. Commit: `Test framework for constexpr unit tests
<https://pwrev.dev/242213>`__.
.. _docs-changelog-2024-12-26-Docs:
Docs
====
New features:
.. 42962f4a909048bb7f9464af018515bb5c9ee94c
* :ref:`docs-bazel-integration` has been updated to describe how to
integrate Pigweed into projects that use Bazel modules (``bzlmod``). Commit:
`Bazel integration: bzlmod, Bazel versions
<https://pwrev.dev/254413>`__.
.. _docs-changelog-2024-12-11:
------------
Dec 11, 2024
------------
Highlights (Nov 28, 2024 to Dec 11, 2024):
* **New blog post**: :ref:`docs-blog-06-better-cpp-toolchains`
summarizes our journey to upstream modular toolchains in rules_cc.
* **Customizable enum tokenization**: The new
:c:macro:`PW_TOKENIZE_ENUM_CUSTOM` macro lets you customize how enum values
are tokenized.
* **AES API in pw_crypto**: :ref:`module-pw_crypto` now has an
Mbed-TLS backend for AES.
.. _docs-changelog-2024-12-11-Modules:
Modules
=======
.. _docs-changelog-2024-12-11-Modules-pw_allocator:
pw_allocator
------------
Bug fixes:
.. b3d4f6ec721999b6bd4a856386a16c0b102d4f3c
* A bug was fixed where the ``FirstFitAllocator`` incorrectly allocated
from the front. Commit: `Fix first-fit with threshold
<https://pwrev.dev/253233>`__. Bug: :bug:`382513957`.
.. _docs-changelog-2024-12-11-Modules-pw_assert:
pw_assert
---------
Changes:
.. bb9f65d47f203a2623543f5adf20ef15d747524e
* Error messages in constant expressions have been improved. Commit:
`Improve error messages in constant expressions
<https://pwrev.dev/251914>`__. Bug: :bug:`277821237`.
.. _docs-changelog-2024-12-11-Modules-pw_async2:
pw_async2
---------
New features:
.. 4a1d9b2c3f76002ad7462e2a4373fa3eedfda692
* :cpp:class:`pw::async2::OnceReceiver` can now be constructed with a
value. Commit: `Support value constructor for OnceReceiver
<https://pwrev.dev/251452>`__.
.. _docs-changelog-2024-12-11-Modules-pw_bluetooth_proxy:
pw_bluetooth_proxy
------------------
New features:
.. ffb532447804634ffa9a97f78886e8422025f9c2
* The new
:cpp:func:`pw::bluetooth::proxy::ProxyHost::SendAdditionalRxCredits`
method lets you send additional RX credits when needed. Previously this
logic was coupled with the L2CAP connection-oriented channel
acquisition. Commit: `Separate rx_additional_credits method
<https://pwrev.dev/252352>`__. Bug: :bug:`380076024`.
.. b336566abf4d6d1119f5373dc534e1f1e1070523
* Transport type for ``pw::bluetooth::proxy::BasicL2capChannel`` can now
be specified during channel creation. Commit: `Un-hardcode transport
type for BasicL2capChannel <https://pwrev.dev/252556>`__.
.. e85884825ea35e9b3b6f86ab0d12d1a1c5e3518d
* A flow control mechanism for writes was added. When a channel's write
fails because there's no space, and then space becomes available, the
channel is now notified. Commit: `Add write flow control mechanism
<https://pwrev.dev/251435>`__. Bug: :bug:`380299794`.
.. 99944ede9942532e5a12996575497ecb31a10442
* Proxies now reset after receiving ``HCI_Reset`` commands. Commit:
`Reset proxy on HCI_Reset <https://pwrev.dev/251472>`__. Bug:
:bug:`381902130`.
.. 2bfeaec98417551db59ec6dcc718f526a15d193f
* The new :cpp:class:`pw::bluetooth::proxy::L2capStatusDelegate` class
lets you receive connection/disconnection notifications for a particular
L2CAP service. Commit: `Add L2cap service listener API
<https://pwrev.dev/249754>`__. Bug: :bug:`379558046`.
.. _docs-changelog-2024-12-11-Modules-pw_build:
pw_build
--------
New features:
.. b8d1cd064d4440e216f62802ab2378eb0c3eb269
* New guidance on :ref:`module-pw_build-bazel-pw_cc_binary` was added.
Commit: `Document pw_cc_binary <https://pwrev.dev/252052>`__.
Changes:
.. 2ce8bc27e467224bf503fada12a29d8a4a2b81d7
* When a ``pw_python_venv`` targets has no source packages and no
requirements, an empty Python venv is created and ``pip-compile`` is no
longer used. Commit: `Allow for empty Python build venvs
<https://pwrev.dev/253253>`__. Bug: :bug:`380293856`.
.. _docs-changelog-2024-12-11-Modules-pw_cli:
pw_cli
------
New features:
.. 13c7f3ca42864136624da1d8452b0110d61b850e
* Specifying whether color should be enabled on an output is now more
granular. Commit: `Allow output-specific color checks
<https://pwrev.dev/252292>`__.
Changes:
.. 73b5fbf1ba77139796d29b7a064ec3c76127bae4
* The Python function ``pw_presubmit.tools.exclude_paths()`` was moved
to the ``pw_cli.file_filter`` module. Commit: `Move exclude_paths
<https://pwrev.dev/252293>`__.
.. _docs-changelog-2024-12-11-Modules-pw_containers:
pw_containers
-------------
Bug fixes:
.. a7c4dd8b045259a12194742793eaa03aa9e07443
* A bug was fixed where :cpp:class:`pw::Vector` was move-assigning to
destroyed objects. Commit: `Do not move assign to destroyed objects in
Vector::erase <https://pwrev.dev/251992>`__. Bug: :bug:`381942905`.
.. _docs-changelog-2024-12-11-Modules-pw_crypto:
pw_crypto
---------
New features:
.. 9aceb7c03cab42e1d2ae7c4e2dd9de718fbe3c68
* :ref:`module-pw_crypto` now has an Mbed-TLS backend for AES. Commit:
`Implement Mbed-TLS backend for AES <https://pwrev.dev/231912>`__.
.. 23cc90c00be0e6f8c3eef0adfe1a0906fa77b346
* The new :cpp:func:`pw::crypto::aes::backend::DoEncryptBlock` is an
initial facade for AES. Commit: `Add AES facade
<https://pwrev.dev/231911>`__.
.. _docs-changelog-2024-12-11-Modules-pw_grpc:
pw_grpc
-------
New features:
.. d30c2bbc46ccb4e874da27c3b33dc48e30cdc893
* Data is now queued if a stream or connection has no available send
window. Previously data was dropped in this case. The send queues are
non-blocking. Commit: `Implement per stream send queues and make sending
non-blocking <https://pwrev.dev/249952>`__. Bug: :bug:`382294674`.
Bug fixes:
.. 983b4f196331b7873c59f555a39ed519cb707943
* A :cpp:class:`pw::multibuf::MultiBufAllocator` is now required when
creating a :cpp:class:`pw::grpc::Connection` instance. Commit: `Remove
old constructor and make multibuf allocator required
<https://pwrev.dev/252555>`__. Bug: :bug:`382294674`.
.. _docs-changelog-2024-12-11-Modules-pw_presubmit:
pw_presubmit
------------
New features:
.. 9720483d67050eeda1910c707195aca45879ff90
* A new guide for Pigweed contributors on :ref:`managing the Bazel
lockfile <docs-bazel-lockfile>` was published. Commit: `Bazel lockfile
check <https://pwrev.dev/253554>`__. Bug: :bug:`383387420`.
.. _docs-changelog-2024-12-11-Modules-pw_rpc:
pw_rpc
------
Changes:
.. eb762cabb91d3712fe2ca6a470172f2164247072
* The newly public ``internal_packet_proto`` library makes it possible
to generate ``packet.proto`` code for non-supported languages. E.g. this
makes it possible to write a Dart/Flutter RPC client. Commit: `Make
packet proto library public in Bazel <https://pwrev.dev/249692>`__.
.. _docs-changelog-2024-12-11-Modules-pw_snapshot:
pw_snapshot
-----------
New features:
.. b950987d209c57b18389aaca91d9a3a9ef7066f5
* The new ``thread_processing_callback`` parameter of
:py:func:`pw_snapshot.processor.process_snapshot` lets you do custom
thread processing during snapshot decoding. Commit: `Add per-thread
processing callback for snapshot decoding <https://pwrev.dev/251392>`__.
.. _docs-changelog-2024-12-11-Modules-pw_system:
pw_system
---------
New features:
.. a4d795f13b833950d14ff9803d43e49ec1fb5e47
* In the Bazel build ``rpc_server`` is now a
:ref:`module-pw_build-bazel-pw_facade` which lets you swap out the default
HDLC server with something else in your project. Commit: `Add facade for rpc
server in Bazel <https://pwrev.dev/252172>`__.
.. _docs-changelog-2024-12-11-Modules-pw_thread:
pw_thread
---------
Changes:
.. 9e4c976345d4d2de321e17853e9fb86493ff2200
* ``ThreadCore`` logic was moved out of ``pw::Thread``. Commit: `Move
ThreadCore logic out of pw::Thread <https://pwrev.dev/253264>`__.
.. _docs-changelog-2024-12-11-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. 23370ed5ed0e01273080c231ee3475916dc74fba
* The new :c:macro:`PW_TOKENIZE_ENUM_CUSTOM` macro lets you customize
how enum values are tokenized. Commit: `Add macro for tokenizing enums
with custom string <https://pwrev.dev/250492>`__.
.. _docs-changelog-2024-12-11-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 807a3aa14a2035f3c1693e3c023740d086ce7c94
* In the GN build it is now possible to completely move away from GNU
libraries. Commit: `Support replacing GNU libs for ARM
<https://pwrev.dev/250572>`__. Bug: :bug:`322360978`.
.. _docs-changelog-2024-12-11-Docs:
Docs
====
New features:
.. 4a28597bf8cc64f7cfc4cc019ba969bc10747c2b
* A new :ref:`Bazel style guide <docs-pw-style-bazel>` was added.
Commit: `Add Bazel style guide <https://pwrev.dev/240811>`__. Bug:
:bug:`371564331`.
.. 5a62fe471eab617742ded0ba84c693e4f2d29585
* A new blog post on :ref:`C/C++ Bazel toolchains
<docs-blog-06-better-cpp-toolchains>` was published.
Commit: `Shaping a better future for Bazel C/C++ toolchains
<https://pwrev.dev/253332>`__.
.. _docs-changelog-2024-11-27:
------------
Nov 27, 2024
------------
Highlights (Nov 15, 2024 to Nov 27, 2024):
* **pw_allocator updates**: The :ref:`module-pw_allocator-api-bucket` class
has been refactored to be more flexible and the :ref:`block API
<module-pw_allocator-api-block>` has been refactored to support static
polymorphism.
.. _docs-changelog-2024-11-27-Modules:
Modules
=======
.. _docs-changelog-2024-11-27-Modules-pw_allocator:
pw_allocator
------------
Changes:
.. 0942b69025f2987ca9512141fe3cf3a7046f042c
* ``BestFitBlockAllocator`` was renamed to ``BestFitAllocator`` and
``WorstFitBlockAllocator`` was renamed to ``WorstFitAllocator``. These
classes have been refactored to use :ref:`buckets
<module-pw_allocator-api-bucket>`. Commit: `Refactor best- and worst-fit
allocators to use buckets <https://pwrev.dev/234817>`__.
.. 0766dbaf5305202c6f67e18184bb165df8426713
* ``FirstFitBlockAllocator``, ``LastFitBlockAllocator``, and
``DualFirstFitBlockAllocator`` were merged into a single class:
:ref:`module-pw_allocator-api-first_fit_allocator`. Commit: `Refactor
first fit allocators <https://pwrev.dev/234816>`__.
.. 3bfdac7a7826a4e2a1dc7a7174fd8d6276546c26
* The :ref:`module-pw_allocator-api-bucket` class has been refactored to
be more flexible. Commit: `Refactor Bucket
<https://pwrev.dev/234815>`__.
.. 65b5e336df018fbc9d124ca09d71a5dcccd1a8c0
* Metric calculation for blocks that shift bytes has changed. Commit:
`Fix metrics for blocks that shift bytes <https://pwrev.dev/249372>`__.
Bug: :bug:`378743727`.
.. 33d00a77472a6ff545032b213aa24dfe6a39d606
* :cpp:class:`pw::allocator::BlockAllocator` now returns
:cpp:class:`pw::allocator::BlockResult`. Commit: `Use BlockResult in
BlockAllocator <https://pwrev.dev/234811>`__.
.. 6417a523b06e03dce3453e96c3a1bec6ab511768
* The :ref:`block API <module-pw_allocator-api-block>` has been
refactored to support static polymorphism. Commit: `Add static
polymorphism to Block <https://pwrev.dev/232214>`__.
.. _docs-changelog-2024-11-27-Modules-pw_bytes:
pw_bytes
--------
New features:
.. a287811e5e99eab8d4ddfcaf9f1a505fd1e3eb17
* The new :cpp:func:`pw::IsAlignedAs` utility functions make it easier
to check alignment. Commit: `Add utility for checking alignment
<https://pwrev.dev/248192>`__.
.. _docs-changelog-2024-11-27-Modules-pw_presubmit:
pw_presubmit
------------
New features:
.. e278ead3bfe1361c3ff08e5329636a35abbcef6c
* The new ``includes_presubmit_check`` verifies that ``cc_library``
Bazel targets don't use the ``includes`` attribute. Commit: `Add check
for cc_library includes <https://pwrev.dev/251172>`__. Bug:
:bug:`380934893`.
.. _docs-changelog-2024-11-27-Modules-pw_protobuf:
pw_protobuf
-----------
New features:
.. f776679bbea5f4ae376ab924d80760bb2f1e69a0
* :ref:`pw_protobuf-message-limitations` now has more guidance around
protobuf versioning and ``optional`` fields. Commit: `Expand message
structure limitations docs section <https://pwrev.dev/249072>`__.
.. _docs-changelog-2024-11-27-Modules-pw_transfer:
pw_transfer
-----------
Changes:
.. 1c771e0fd88511ef3550108572572db1f036d0a5
* Warnings logs are now emitted when client or server streams close
unexpectedly. Commit: `Log when streams close unexpectedly
<https://pwrev.dev/249912>`__.
.. 48712ad0655654b4dcc9b62085a58445fe0af696
* The window size on retried data now shrinks in an attempt to reduce
network congestion. Commit: `Shrink window size on retried data
<https://pwrev.dev/249532>`__.
.. _docs-changelog-2024-11-27-Modules-pw_unit_test:
pw_unit_test
------------
Changes:
.. c4d59ce4d011e11781bcb6dc6660ad947a7ee8df
* Successful expectations are no longer stringified by default. Commit:
`Stop stringifying successful expectations
<https://pwrev.dev/248693>`__.
.. _docs-changelog-2024-11-27-Modules-pw_rpc:
pw_rpc
------
Changes:
.. 92e854a4d179f0b340a0f8b5a662012ea4b8635c
* A warning log is now emitted when a server receives a completion
request but client completion callbacks have been disabled. Commit:
`Warn when client completion callback is disabled
<https://pwrev.dev/249414>`__.
.. _docs-changelog-2024-11-14:
------------
Nov 14, 2024
------------
.. changelog_highlights_start
Highlights (Nov 1, 2024 to Nov 14, 2024):
* **ELF API**: The new :cpp:class:`pw::elf::ElfReader` class is a
basic reader for ELF files.
* **Updated Bluetooth APIs**: There's a new low energy
connection-oriented channels API and the :ref:`module-pw_bluetooth`
API has been modernized.
* **Updated SEED process**: "Intent Approved" and "On Hold" statuses
were added to the SEED lifecycle.
.. changelog_highlights_end
.. _docs-changelog-2024-11-14-Modules:
Modules
=======
.. _docs-changelog-2024-11-14-Modules-pw_allocator:
pw_allocator
------------
Changes:
.. 1dcac6a863b8adfc930de769ec56fd44f1e4448f
* ``pw::allocator::AsPmrAllocator`` was renamed to
:cpp:class:`pw::allocator::PmrAllocator`. Commit: `Separate PMR from
Allocator <https://pwrev.dev/246412>`__.
.. _docs-changelog-2024-11-14-Modules-pw_async2:
pw_async2
---------
New features:
.. 21933c60384c25d73dba60c90e74cc44d2a446de
* The ``new`` operator for coroutines now accepts an optional alignment
argument. Commit: `Accept alignment in CoroPromiseType::operator new
<https://pwrev.dev/248638>`__. Bug: :bug:`378929156`.
.. d20009a8e35dfdb881f77b6d171c697b61dba5c3
* The new :c:macro:`PW_TRY_READY` and :c:macro:`PW_TRY_READY_ASSIGN`
helper macros reduce boilerplate in non-coroutine async code. Commit:
`Add PW_TRY_READY_* control flow macros <https://pwrev.dev/243818>`__.
.. _docs-changelog-2024-11-14-Modules-pw_bluetooth:
pw_bluetooth
------------
New features:
.. c9ad96cf7be8a05a7d1bf6ec933114c7cc39f012
* The new :cpp:class:`pw::bluetooth::low_energy::Channel`,
:cpp:class:`pw::bluetooth::low_energy::ChannelListener`, and
:cpp:class:`pw::bluetooth::low_energy::ChannelListenerRegistry` classes
provide a low energy connection-oriented channels API. Commit: `Add LE
Connection-Oriented Channels API <https://pwrev.dev/227371>`__. Bug:
:bug:`357142749`.
Changes:
.. a615b8bf5234f48b8a33e6c837aa7521fa80d92a
* The :ref:`module-pw_bluetooth` API has been modernized. Commit:
`Modernize APIs <https://pwrev.dev/219393>`__. Bug: :bug:`350994818`.
.. _docs-changelog-2024-11-14-Modules-pw_bluetooth_proxy:
pw_bluetooth_proxy
------------------
New features:
.. b8ee89e76ff4e8c467ea35291b2a141175c737e9
* :cpp:class:`pw::bluetooth::proxy::L2capCoc` now supports reading.
Commit: `L2CAP CoC supports reading <https://pwrev.dev/232172>`__. Bug:
:bug:`360934032`.
.. _docs-changelog-2024-11-14-Modules-pw_channel:
pw_channel
----------
New features:
.. 0a4e6db6ad35d0bf062c22b471fef2a66948a90f
* The new :cpp:func:`pw::Channel::PendAllocateWriteBuffer` method
simplifies the allocation of write buffers that need small
modifications. Commit: `Move to PendAllocateWriteBuffer
<https://pwrev.dev/246239>`__.
Changes:
.. bd17ed6971f608e2d66da8b2954bc13ad3e2c664
* The ``pw::channel::WriteToken`` method was removed. Commit: `Remove
WriteToken <https://pwrev.dev/245932>`__.
.. 0422de1761e52ad5d1fad821880025fc27facf1c
* ``pw_channel`` inheritance has been refactored
to ensure that conversions between compatible variants are valid.
Commit: `Rework inheritance to avoid SiblingCast
<https://pwrev.dev/247732>`__.
.. _docs-changelog-2024-11-14-Modules-pw_elf:
pw_elf
------
New features:
.. 8ee78791500354f85df94b228f63b3a42a882040
* The new :cpp:class:`pw::elf::ElfReader` class is a basic reader for
ELF files. Commit: `Add ElfReader <https://pwrev.dev/244893>`__.
.. _docs-changelog-2024-11-14-Modules-pw_i2c:
pw_i2c
------
Bug fixes:
.. 6165aa470b35106b79b2e57ecec9951cff30acdc
* I2C flags are now correctly set for transactions that occur on an I3C
bus. Commit: `Set the i2c flags correctly for transactions on an i3c bus
<https://pwrev.dev/245754>`__. Bug: :bug:`373451623`.
.. _docs-changelog-2024-11-14-Modules-pw_metric:
pw_metric
---------
New features:
.. a751fa9bd38a30f08a14c336e7bc77878a5d60c5
* ``pwpb`` now prioritizes the ``.pwpb_options`` for protobuf codegen.
Commit: `Add metrics_service.pwpb_options to BUILD.gn
<https://pwrev.dev/246112>`__.
.. aacf94efb59dac4a661e88e2ba95acda20c5ccb1
* The new :cpp:func:`PW_METRIC_TOKEN` makes it easier for tests to
create tokens for metrics. Commit: `Expose metric token format via
PW_METRIC_TOKEN <https://pwrev.dev/244332>`__.
.. _docs-changelog-2024-11-14-Modules-pw_protobuf:
pw_protobuf
-----------
New features:
.. acbeaab3d280f748d235a31025d7a35dd38fa516
* The ``Find*()`` methods have been extended to support iterating over
repeated fields. See :ref:`module-pw_protobuf-read`. Commit:
`Extend Find() APIs to support repeated fields <https://pwrev.dev/248432>`__.
Changes:
.. 6a16fab34795f2976e04457d099a05c671b79b54
* It's no longer necessary to set a callback for every possible field in
a message when you're only interested in a few fields. Commit: `Allow
unset oneof callbacks <https://pwrev.dev/246692>`__.
.. _docs-changelog-2024-11-14-Modules-pw_protobuf_compiler:
pw_protobuf_compiler
--------------------
Changes:
.. cd0b4fb52d8fb2012fbd8483f66a48d593e83bb9
* ``pwpb_options`` files are now explicitly processed first, followed by
regular ``.options`` files. Commit: `Don't rely on options file ordering
<https://pwrev.dev/247472>`__.
.. _docs-changelog-2024-11-14-Modules-pw_rpc:
pw_rpc
------
Changes:
.. f0ba9b05187506d7526ca3585401c8df7b4e9d4d
* The Python client previously reused call IDs after ``16384``. The limit
has been increased to ``2097152``. Commit: `Allocate more call IDs in
the Python client <https://pwrev.dev/245067>`__. Bug: :bug:`375658481`.
.. _docs-changelog-2024-11-14-Modules-pw_rpc_transport:
pw_rpc_transport
----------------
New features:
.. 18d5fbfb289c8675dd683d62ab69b83147e9d70e
* The new ``pw::rpc::RpcIngress::num_total_packets`` method tracks how
many packets an ingress RPC handler has received. Commit: `Track number
of RPC packets received <https://pwrev.dev/247194>`__. Bug:
:bug:`373449543`.
.. _docs-changelog-2024-11-14-Modules-pw_sensor:
pw_sensor
---------
New features:
.. b7246bf88df6aa030dec7b9510e7015b5035616c
* The new ``extras`` key lets applications specify additional metadata
that's not supported or used by Pigweed. Commit: `Add freeform extras
field to sensor.yaml <https://pwrev.dev/248195>`__.
.. _docs-changelog-2024-11-14-Modules-pw_spi:
pw_spi
------
Changes:
.. 6aadd54afb308c09edb833985b387442df732fef
* :cpp:class:`pw::spi::Initiator` is now a `non-virtual interface
<https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-Virtual_Interface>`__.
Commit: `Finalize non-Virtual interface on
Initiator <https://pwrev.dev/236236>`__. Bug: :bug:`308479791`.
.. _docs-changelog-2024-11-14-Modules-pw_spi_linux:
pw_spi_linux
------------
Bug fixes:
.. d17b5acd42c6e983ce4b12a7ebc3184205a06d45
* The ``pw::Spi::Initiator::DoWriteRead()`` method now correctly handles
transfers where either the write buffer or the read buffer is empty.
Commit: `Fix read/write-only transfers <https://pwrev.dev/246053>`__.
.. _docs-changelog-2024-11-14-Modules-pw_stream:
pw_stream
---------
New features:
.. b2c1616caaff13d41e434cbcb8ae0530a20962ca
* The new :cpp:func:`pw::stream::Stream::ReadExact` method reads exactly
the number of bytes requested into a provided buffer, if supported.
Commit: `Add ReadExact() wrapper <https://pwrev.dev/243552>`__.
.. _docs-changelog-2024-11-14-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. 94e2314ddea1499a7868bd3d30621b709e25f7d4
* The new :cpp:func:`pw::tokenizer::Detokenizer::FromElfFile` method
constructs a detokenizer from the ``.pw_tokenizer.entries`` section of
an ELF binary. Commit: `Add Detokenizer::FromElfFile
<https://pwrev.dev/243532>`__. Bug: :bug:`374367947`.
Bug fixes:
.. 7fb7bb1dc5d69c79de1b0b72316a34a800f2d5b0
* The Python detokenizer now correctly handles multiple nested tokens in
one log string. Commit: `Update regex for nested args
<https://pwrev.dev/248232>`__.
.. _docs-changelog-2024-11-14-SEEDs:
SEEDs
=====
New features:
.. a1acd00d02ebe42116a4982ad809264f3c673021
* "Intent Approved" and "On Hold" statuses were added to the SEED
lifecycle. Commit: `(SEED-0001) Add "Intent Approved" and "On Hold"
states to lifecycle <https://pwrev.dev/248692>`__.
.. _docs-changelog-2024-10-31:
------------
Oct 31, 2024
------------
Highlights (Oct 18, 2024 to Oct 31, 2024):
* The new :c:macro:`PW_TEST_EXPECT_OK`, :c:macro:`PW_TEST_ASSERT_OK`,
and :c:macro:`PW_TEST_ASSERT_OK_AND_ASSIGN` macros provide test matchers
for :ref:`module-pw_status` and :ref:`module-pw_result` values.
* The Sense tutorial has expanded guidance around :ref:`handling crashes
and viewing snapshots <showcase-sense-tutorial-crash-handler>`.
* The new :cpp:class:`pw::LinkerSymbol` class represents a symbol
provided by a linker.
* The new ``extra_frame_handlers`` parameter lets you add custom HDLC frame
handlers when using the Python-based :ref:`module-pw_system` console.
.. _docs-changelog-2024-10-31-Modules:
Modules
=======
.. _docs-changelog-2024-10-31-Modules-pw_allocator:
pw_allocator
------------
New features:
.. 6fd4792308999b9c5949e9b778994d064a80a8b7
* The new :c:macro:`PW_ALLOCATOR_ENABLE_PMR` macro lets you disable the
ability to use an allocator with the polymorphic versions of standard
library containers. Commit: `Make pw::Allocator::as_pmr optional
<https://pwrev.dev/245254>`__.
Changes:
.. c3c61885927ee9e8fac187a52b1ab139919fe5e7
* Multiple methods were renamed or removed in preparation for upcoming
work to split up :cpp:class:`pw::allocator::Block`. Commit: `Streamline
Block API <https://pwrev.dev/232213>`__.
.. _docs-changelog-2024-10-31-Modules-pw_assert:
pw_assert
---------
Changes:
.. 673e56ac476a345a0f25319633d8ce0ad0c0cd93
* ``pw_assert`` now verifies whether ``PW_CHECK`` message arguments are
valid, regardless of what ``pw_assert`` backend is being used. Commit:
`Verify PW_CHECK message arguments in the API
<https://pwrev.dev/244744>`__.
.. _docs-changelog-2024-10-31-Modules-pw_assert_tokenized:
pw_assert_tokenized
-------------------
New features:
.. ef5f6bf505343c0926532f53dc788b26c3640048
* :c:macro:`pw_assert_HandleFailure` is now supported. Commit: `Support
pw_assert_HandleFailure <https://pwrev.dev/244793>`__.
.. _docs-changelog-2024-10-31-Modules-pw_async2:
pw_async2
---------
New features:
.. cec451dc5c2cb132717068d686e4e034b06762c9
* :cpp:class:`pw::async2::Join` lets you join several separate pendable
values. Commit: `Add Join combinator <https://pwrev.dev/244612>`__.
.. 0945ffb46234253d08467adebd8869ebb39234fa
* The new :cpp:func:`pw::async2::TimeFuture::Reset` method resets a
``TimeFuture`` instance to expire at a specified time. Commit: `Add
TimerFuture::Reset <https://pwrev.dev/243993>`__.
Changes:
.. 9528eac2b6c6243dc5fb6a4d72f33d8d7e0d573c
* Waker storage has moved to a macro-based API. See
:c:macro:`PW_ASYNC_STORE_WAKER` and :c:macro:`PW_ASYNC_CLONE_WAKER`.
Commit: `Move to macro-based Waker API <https://pwrev.dev/245068>`__.
Bug: :bug:`376123061`.
.. _docs-changelog-2024-10-31-Modules-pw_bluetooth_proxy:
pw_bluetooth_proxy
------------------
New features:
.. a8c756860ae104ef5e87439ef4f8cc4fbbb2fab7
* Bazel builds are now supported. Commit: `Add bazel build support
<https://pwrev.dev/243874>`__.
.. _docs-changelog-2024-10-31-Modules-pw_build:
pw_build
--------
New features:
.. 170f745d98d101d73564fa61420f1a0836053033
* The new :cpp:class:`pw::LinkerSymbol` class represents a symbol
provided by a linker. Commit: `Add LinkerSymbol
<https://pwrev.dev/242635>`__.
.. _docs-changelog-2024-10-31-Modules-pw_channel:
pw_channel
----------
Changes:
.. 5f2649a6e5afdecd7b5d59aab06f59bb4d73d9f3
* ``pw::channel::AnyChannel::Write`` was renamed to
:cpp:func:`pw::channel::AnyChannel::StageWrite` and
``pw::channel::AnyChannel::PendFlush`` was renamed to
:cpp:func:`pw::channel::AnyChannel::PendWrite`. Commit: `Rename
{Write->StageWrite, PendFlush->PendWrite} <https://pwrev.dev/245539>`__.
.. _docs-changelog-2024-10-31-Modules-pw_containers:
pw_containers
-------------
New features:
.. afb18a6ded0c43e91ce85e5ec97ae0206c4873ca
* :cpp:class:`pw::IntrusiveSet` is a new class like ``std::set<Key,
Compare>`` that uses intrusive items as keys and
:cpp:class:`pw::IntrusiveMultiSet` is a new class like
``std::multiset<Key, Compare>`` that uses intrusive items. Commit: `Add
IntrusiveSet and IntrusiveMultiSet <https://pwrev.dev/240053>`__.
Changes:
.. bde3f80e6e038cebe264283af625faf06a64d8d0
* The ``erase`` methods of
:cpp:class:`pw::containers::future::IntrusiveList`,
:cpp:class:`pw::IntrusiveMap`, and :cpp:class:`pw::IntrusiveMultiMap`
have been overloaded to make them easier to use. Commit: `Add methods to
erase by item <https://pwrev.dev/243257>`__.
.. _docs-changelog-2024-10-31-Modules-pw_log:
pw_log
------
Changes:
.. 661bf47f06e604384a4c7eb7bf79d2f3da71ee74
* The signature for :c:macro:`PW_LOG` macro changed. A ``verbosity``
level must now always be passed as the second argument when invoking
``PW_LOG``. Commit: `Explicitly pass verbosity to PW_LOG
<https://pwrev.dev/239035>`__.
.. _docs-changelog-2024-10-31-Modules-pw_multibuf:
pw_multibuf
-----------
New features:
.. 9ab6e749821eddb8a82f7724c1af10ef6accc016
* The new :cpp:func:`pw::multibuf::FromSpan` function creates a multibuf from
an existing span and a ``deleter`` callback. Commit: `Add FromSpan
<https://pwrev.dev/245132>`__. Bug: :bug:`373725545`.
.. _docs-changelog-2024-10-31-Modules-pw_multisink:
pw_multisink
------------
New features:
.. 773331a904413e92d86c6e4cb658af77cf889d76
* The new :cpp:func:`pw::multisink::UnsafeDumpMultiSinkLogsFromEnd`
utilitiy function dumps contents as a series of log entries. Commit:
`Add UnsafeForEachEntryFromEnd() <https://pwrev.dev/244556>`__. Bug:
:bug:`375653884`.
.. _docs-changelog-2024-10-31-Modules-pw_polyfill:
pw_polyfill
-----------
Changes:
.. d3e10fad55171d8cdce399916acbf37b2dec732b
* :c:macro:`PW_CONSTINIT` now fails when used without compiler support.
Commit: `Make PW_CONSTINIT support mandatory
<https://pwrev.dev/243892>`__.
.. _docs-changelog-2024-10-31-Modules-pw_protobuf:
pw_protobuf
-----------
Bug fixes:
.. 368cf8be3cb1909453c9c2cc67ec951517943086
* ``pw_protobuf`` now fails when the ``max_count`` or ``fixed_count``
options of ``pwpb`` are used on unsupported field types. Commit: `Fail
when a max count is set with an unsupported type
<https://pwrev.dev/236816>`__.
Changes:
.. 9525d75843cede1c67f78de7c2f86bb30ac98efe
* Code generator options can now be specified in files ending with
``.pwpb_options``. This is useful for projects that wish to strictly
separate Nanopb and ``pw_protobuf`` options. Commit: `Allow
.pwpb_options as an options file extension
<https://pwrev.dev/241137>`__.
.. _docs-changelog-2024-10-31-Modules-pw_ring_buffer:
pw_ring_buffer
--------------
New features:
.. b90180561658453318c36b125fd8af37de713a3f
* ``pw_ring_buffer`` readers now support the ``--`` decrement operator.
Commit: `Add a decrement operator <https://pwrev.dev/244555>`__. Bug:
:bug:`375653884`.
.. _docs-changelog-2024-10-31-Modules-pw_system:
pw_system
---------
New features:
.. 1f2341cd64eaacb9de474510293397b50165b3b5
* The new ``extra_frame_handlers`` parameter lets you add custom HDLC
frame handlers when using the Python-based ``pw_system`` console.
Commit: `Make console support extra hdlc frame handlers
<https://pwrev.dev/245192>`__.
Bug fixes:
.. 9b2dd9ccb35a49f57c053e88a55da35ad24fc93d
* A bug was fixed where the latest logs were not being captured in crash
snapshots. Commit: `Ensure latest logs are captured in crash snapshot
<https://pwrev.dev/244557>`__. Bug: :bug:`375653884`.
.. 0aa57cea2e06c48a24266b21d472155c2379189f
* The ``pw_system`` crash dump now includes a main stack thread
backtrace. Commit: `Add main stack thread backtrace capture to crash
dump <https://pwrev.dev/242337>`__. Bug: :bug:`354767156`.
.. ed55dbc3fa5eb05e2b557fad0eff2b1bf1f93751
* The ``pw_system`` crash dump now includes FreeRTOS thread backtraces.
Commit: `Add freertos thread backtrace capture to crash dump
<https://pwrev.dev/234155>`__. Bug: :bug:`354767156`.
.. _docs-changelog-2024-10-31-Modules-pw_thread:
pw_thread
---------
Changes:
.. e5db91d7df18444134ce4fede3a1a0c3a9f5c1fc
* The legacy ``thread::Id`` alias has been migrated to
``pw::Thread::id``. Commit: `Migrate to Thread::id
<https://pwrev.dev/238432>`__. Bug: :bug:`373524945`.
.. _docs-changelog-2024-10-31-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. 4b7733f3f0c9e010ccd6bee3ff45d64b92e65fa7
* :c:macro:`PW_APPLY` is a new general macro that supports macro
expansion and makes tokenizing enums easier. Commit: `Create generic
macro for tokenizing enums <https://pwrev.dev/242715>`__. Bug:
:bug:`3627557773`.
.. _docs-changelog-2024-10-31-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. b40ecc98b47a37b187f40408ae0c3d89ef9b5f79
* ``pw_toolchain`` now supports the Arm Cortex-M55F GCC toolchain.
Commit: `Add ARM Cortex-M55F GCC toolchain
<https://pwrev.dev/244672>`__. Bug: :bug:`375562597`.
.. _docs-changelog-2024-10-31-Modules-pw_unit_test:
pw_unit_test
------------
New features:
.. ce0e3e2d1b7eec7cdf59fbb2ceed2b1cb3edd1ec
* The new :c:macro:`PW_TEST_EXPECT_OK`, :c:macro:`PW_TEST_ASSERT_OK`,
and :c:macro:`PW_TEST_ASSERT_OK_AND_ASSIGN` macros provide test matchers
for :ref:`module-pw_status` and :ref:`module-pw_result` values. Commit:
`Define pw::Status matchers <https://pwrev.dev/243615>`__. Bugs:
:bug:`338094795`, :bug:`315370328`.
Changes:
.. 618eaa4f4c1ee0357bdfba85290a9a6e8c9aee71
* :cpp:func:`RUN_ALL_TESTS` is now a function. Previously it was a
macro. Commit: `Use a function for RUN_ALL_TESTS()
<https://pwrev.dev/243889>`__.
.. _docs-changelog-2024-10-31-Modules-pw_watch:
pw_watch
--------
New features:
.. 5e7d1a0fddab1204d94ff43cee833431eda75af8
* ``pw_watch`` can now be invoked through ``bazelisk``. Commit: `Bazel
run support <https://pwrev.dev/242094>`__. Bug: :bug:`360140397`.
.. _docs-changelog-2024-10-31-Docs:
Docs
====
New features:
.. c5e6cab3b190f4cdc32e3209582a7697f2992a85
* The Sense tutorial has expanded guidance around :ref:`handling crashes
and viewing snapshots <showcase-sense-tutorial-crash-handler>`. Commit:
`Add crash handler section to sense tutorial
<https://pwrev.dev/242735>`__. Bug: :bug:`354767156`.
.. _docs-changelog-2024-10-31-Targets:
Targets
=======
.. _docs-changelog-2024-10-31-Targets-RP2350:
RP2350
------
New features:
.. 892394fe74db6decd3799873f910862cef6a182d
* ``MemManage``, ``BusFault``, and ``UsageFault`` exception handlers are
now enabled on the RP2350 target. Commit: `Add MemManage, BusFault &
UsageFault exception handler <https://pwrev.dev/242336>`__. Bug:
:bug:`354767156`.
.. _docs-changelog-2024-10-17:
------------
Oct 17, 2024
------------
Highlights (Oct 04, 2024 to Oct 17, 2024):
* **Math module**: The new :ref:`module-pw_numeric` module is a collection of
mathematical utilities optimized for embedded systems.
* **C++ Coroutines**: The new :ref:`docs-blog-05-coroutines` blog post
discusses the nuances of using coroutines in embedded systems.
* **New SEEDs**: SEEDs :ref:`seed-0103` and :ref:`seed-0128` were accepted.
.. _docs-changelog-2024-10-17-Modules:
Modules
=======
.. _docs-changelog-2024-10-17-Modules-pw_allocator:
pw_allocator
------------
New features:
.. 9aae89c7bab1de5a914c462f814fec6528e27a0f
* The new :cpp:func:`pw::Allocator::MakeUniqueArray` template function
allows a ``UniquePtr`` to hold an array of elements. Commit: `Add
UniquePtr::MakeUniqueArray <https://pwrev.dev/239913>`__.
.. d3a6358972d5897266e2b5ecf50681a8e8456e5b
* The new :cpp:class:`pw::allocator::BlockResult` class communicates the
results and side effects of allocation requests. Commit: `Add
BlockResult <https://pwrev.dev/232212>`__.
Bug fixes:
.. 57183dee645126c67dcccbb479c730492ef168f6
* A data race was fixed. Commit: `Fix data race
<https://pwrev.dev/242736>`__. Bug: :bug:`372446436`.
.. _docs-changelog-2024-10-17-Modules-pw_async2:
pw_async2
---------
New features:
.. 068949bbe9f8a5a03d9b44ae740461c4c01691ca
* The new :cpp:func:`pw::async2::EnqueueHeapFunc` function heap-allocates
space for a function and enqueues it to run on a dispatcher.
Commit: `Add EnqueueHeapFunc <https://pwrev.dev/242035>`__.
Changes:
.. eb03d32b80c25d59000d86fc8417cce91cbc243a
* :cpp:class:`pw::async2::PendFuncTask` now has a default template type
of :cpp:type:`pw::Function`. Commit: `Provide default template type for
PendFuncTask <https://pwrev.dev/242918>`__.
.. _docs-changelog-2024-10-17-Modules-pw_build:
pw_build
--------
New features:
.. 7698704f57a69ff5a913f0b2d43d3cc419d10446
* The newly relanded ``pw_copy_and_patch_file`` feature provides the
ability to patch a file during a Bazel or GN build. Commit: `Add
pw_copy_and_patch_file <https://pwrev.dev/240832>`__.
.. _docs-changelog-2024-10-17-Modules-pw_cli_analytics:
pw_cli_analytics
----------------
New features:
.. 6ae64ef2889810d43682b85e0c793018ae9a507c
* The new :ref:`module-pw_cli_analytics` module collects and transmits
analytics on usage of the ``pw`` command line interface. Commit:
`Initial commit <https://pwrev.dev/188432>`__. Bug: :bug:`319320838`.
.. _docs-changelog-2024-10-17-Modules-pw_console:
pw_console
----------
Bug fixes:
.. 8bd77aba07ab3dce5220b23994cd3ecfbcefda10
* A divide-by-zero error in the ``pw_console`` progress bar was fixed.
Commit: `Fix progress bar division by zero
<https://pwrev.dev/233033>`__.
.. _docs-changelog-2024-10-17-Modules-pw_env_setup:
pw_env_setup
------------
Changes:
.. a789e9c308f3b289c950e8afb3d891fa5b7b39ac
* ``//pw_env_setup/py/pw_env_setup/cipd_setup/black.json`` has been
removed. Commit: `Remove black.json <https://pwrev.dev/241359>`__.
.. c42ec10b3824a5e15bc4e92d2065bd95143e9aad
* Python 2 support has been removed from ``pw_env_setup``. Commit: `Drop
Python 2 support <https://pwrev.dev/242713>`__. Bug: :bug:`373905972`.
.. _docs-changelog-2024-10-17-Modules-pw_numeric:
pw_numeric
----------
New features:
.. 0c98e51f046d2de13e5ea8509452b99beb6776ec
* The new :ref:`module-pw_numeric` module is a collection of
mathematical utilities optimized for embedded systems. Commit: `New
module for mathematical utilities <https://pwrev.dev/240655>`__.
.. 1eadbb9e0d8de149ee300c9f60933878498b3544
* The new :cpp:func:`pw::IntegerDivisionRoundNearest` function performs
integer division and rounds to the nearest integer. It gives the same
result as ``std::round(static_cast<double>(dividend) /
static_cast<double>(divisor))`` but requires no floating point
operations and is ``constexpr``. Commit: `Rounded integer division
<https://pwrev.dev/240656>`__.
.. _docs-changelog-2024-10-17-Modules-pw_protobuf:
pw_protobuf
-----------
Changes:
.. 205570386eac8fe6e0269b7fbbab1449eb565036
* ``oneof`` protobuf fields can't be inlined within a message structure.
They must be encoded and decoded using callbacks. See
:ref:`pw_protobuf-per-field-apis`. Commit: `Force use of callbacks for oneof
<https://pwrev.dev/242392>`__. Bug: :bug:`373693434`.
.. 6efc99b3ee854dd54a0b1465d9014c54e01b21b9
* The ``import_prefix`` parameter in the
``pw_protobuf.options.load_options`` Python function was replaced with
an ``options_files`` parameter that lets you directly specify the
location of ``.options`` files. Commit: `Support directly specifying
options file locations <https://pwrev.dev/240833>`__. Bug:
:bug:`253068333`.
.. _docs-changelog-2024-10-17-Modules-pw_rpc:
pw_rpc
------
Bug fixes:
.. 05e93dadc080e45d624d92b80879297cfade417c
* A bug was fixed where previously ``Call`` objects were not getting
reinitialized correctly. Commit: `Fix Call not getting reset on default
constructor assignment <https://pwrev.dev/239718>`__. Bug:
:bug:`371211198`.
.. _docs-changelog-2024-10-17-Modules-pw_spi:
pw_spi
------
Changes:
.. 4321a46654fae21df8e8fb971cd5c618b8b73d3f
* :cpp:class:`pw::spi::Initiator` now uses a non-virtual interface (NVI)
pattern. Commit: `Use non-virtual interface (NVI) pattern on
pw::spi::Initiator <https://pwrev.dev/236234>`__. Bug: :bug:`308479791`.
.. _docs-changelog-2024-10-17-Modules-pw_stream_uart_mcuxpresso:
pw_stream_uart_mcuxpresso
-------------------------
Changes:
.. d08c60cad881afa835a22d2bbfe36a0d6f018c1c
* :ref:`module-pw_stream_uart_mcuxpresso` is being merged into
:ref:`module-pw_uart_mcuxpresso`. Commit: `Remove dma_stream
<https://pwrev.dev/241201>`__. Bug: :bug:`331617914`.
.. _docs-changelog-2024-10-17-Modules-pw_system:
pw_system
---------
New features:
.. fd6b7a96cd142fcfbf979c2ebf3ea4ac2e342612
* The new ``--debugger-listen`` and ``--debugger-wait-for-client``
options make it easier to debug the ``pw_system`` console. Commit: `Add
\`debugger-listen\` and \`debugger-wait-for-client\` options
<https://pwrev.dev/233752>`__.
.. _docs-changelog-2024-10-17-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. be439834757b0abcd0e81a77a0c8c39beca2d4db
* All domains from ELF files are now loaded by default. Commit: `Load
all domains from ELF files by default <https://pwrev.dev/239509>`__.
Bugs: :bug:`364955916`, :bug:`265334753`.
.. 56aa667aaa527d86241d27c5361e0d27f5aed06d
* CSV databases now include the token's domain as the third column.
Commit: `Include the domain in CSV databases
<https://pwrev.dev/234414>`__. Bug: :bug:`364955916`.
.. 9c37b722d9a807222c289069967222166c8613f5
* Tokenizing enums is now supported. Commit: `Add support for tokenizing
enums <https://pwrev.dev/236262>`__. Bug: :bug:`362753838`.
Changes:
.. 17df82d4c2b77d1667f24f5b27a256dbab31686f
* When a domain is specified, any whitespace will be ignored in domain
names and removed from the database. Commit: `Ignore whitespace in
domain values <https://pwrev.dev/241212>`__. Bug: :bug:`362753840`.
.. _docs-changelog-2024-10-17-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 0125f4a94c827612f1ae863b60d3fa301fbd773c
* The new :ref:`module-pw_toolchain-bazel-compiler-specific-logic`
documentation provides guidance on how to handle
logic that differs between compilers. Commit: `Add Bazel mechansim for
clang/gcc-specific flags <https://pwrev.dev/238429>`__. Bug:
:bug:`361229275`.
.. _docs-changelog-2024-10-17-Modules-pw_uart:
pw_uart
-------
New features:
.. b39ad5c71df860223a8f908219bfdcfbdda1e5f5
* The new :cpp:class:`pw::uart::UartStream` class implements the
:cpp:class:`pw::stream::NonSeekableReaderWriter` interface on top of a
UART device. Commit: `Add pw::uart::UartStream
<https://pwrev.dev/241200>`__. Bug: :bug:`331603164`.
.. f6a7bb781754447aa9eea82af60962070815b4f8
* The new :cpp:class:`pw::uart::UartBlockingAdapter` class provides a
blocking UART interface on top of a
:cpp:class:`pw::uart::UartNonBlocking` device. Commit: `Add
UartBlockingAdapter <https://pwrev.dev/238393>`__. Bug:
:bug:`369679732`.
.. bdcf65850213372533c9422fdec0a199af112161
* The new :cpp:func:`pw::uart::UartNonBlocking::FlushOutput` function
ensures that all enqueued data has been transmitted. Commit: `Add
UartNonBlocking::FlushOutput() <https://pwrev.dev/238572>`__. Bug:
:bug:`370051726`.
.. _docs-changelog-2024-10-17-Modules-pw_web:
pw_web
------
Changes:
.. c4ea179e91c6aee6b9d41b9fe301269189970850
* The ``device`` RPC APIs now support creating request messages for RPCs
and calling the ``device`` API with those request messages. Commit:
`Improvements to \`device\` RPC APIs <https://pwrev.dev/238052>`__.
.. _docs-changelog-2024-10-17-Docs:
Docs
====
New features:
.. 91d4349e08e22c50e5a738dee31cc95724eab50d
* The new :ref:`docs-blog-05-coroutines` blog post discusses the nuances
of using coroutines in embedded systems. Commit: `Add coroutine blog
post <https://pwrev.dev/216111>`__.
Changes:
.. 84375274c2a7dbc0fc29cb1e718d8cdfa05085fa
* Guides for contributing ``pigweed.dev`` documentation have been
consolidated. Commit: `Consolidate
content for pigweed.dev contributors <https://pwrev.dev/242192>`__.
.. _docs-changelog-2024-10-17-SEEDs:
SEEDs
=====
New features:
.. 385019a0292797dd63f00f008efe36d52d4d698a
* SEED :ref:`seed-0103` was accepted. Commit: `(SEED-0103) pw_protobuf:
Past, present, and future <https://pwrev.dev/133971>`__.
.. ec62be9c7c9e28c8bae26d9e73f1ce341e5e5cd5
* :ref:`seed-0128` was accepted. Commit: `(SEED-0128) Abstracting thread
creation <https://pwrev.dev/206670>`__.
.. _docs-changelog-2024-10-17-Targets:
Targets
=======
.. _docs-changelog-2024-10-17-Targets-rp2040:
RP2040
------
New features:
.. 8e0d91c3f7da31448419584ae9287de57ed5452f
* A new helper, ``flash_rp2350``, was added to
``//targets/rp2040/flash.bzl``. Commit: `Update \`flash_rp2040\` helper
with --chip argument <https://pwrev.dev/242917>`__.
.. _docs-changelog-2024-10-03:
-----------
Oct 3, 2024
-----------
Highlights (Sep 20, 2024 to Oct 3, 2024):
* The :ref:`module-pw_async2` and :ref:`module-pw_containers` docs
now contain code examples that are built and tested alongside the rest
of Pigweed, minimizing the chance that they bit rot over time.
* The new :cpp:class:`pw::async2::Dispatcher` class is a single-
threaded, cooperatively scheduled runtime for async tasks.
* The new :cpp:class:`pw::uart::UartBase` class provides a common
abstract base class for UART interfaces.
* :cpp:class:`pw::rpc::RawServerReaderWriter` and
:cpp:class:`pw::rpc::RawClientReaderWriter` have new methods that let
you directly serialize RPC payloads to the RPC system's encoding buffer
instead of requiring a copy from an externally managed buffer.
.. _docs-changelog-2024-10-03-Modules:
Modules
=======
.. _docs-changelog-2024-10-03-Modules-pw_allocator:
pw_allocator
------------
New features:
.. 020780642847dba69a9b2025f1f698fe3d8e4801
* The new :cpp:func:`pw::allocator::CalculateFragmentation` method
calculates a fragmentation metric. This should not be invoked on-device
unless the device has robust floating-point support. Commit: `Add
MeasureFragmentation <https://pwrev.dev/238417>`__.
.. _docs-changelog-2024-10-03-Modules-pw_async2:
pw_async2
---------
New features:
.. 801fb32919777aefd7a734ce9c2c1e6aec782ab7
* The new :cpp:class:`pw::async2::Dispatcher` class is a single-
threaded, cooperatively scheduled runtime for async tasks. Commit:
`Refactor Dispatcher to raise top-level API out of CRTP
<https://pwrev.dev/237972>`__. Bug: :bug:`342000726`.
.. 846bb7d3672e94c13451bec81098d3304d8395a9
* The :ref:`module-pw_async2` docs now have examples. Commit: `Expand
docs with examples <https://pwrev.dev/234095>`__.
.. _docs-changelog-2024-10-03-Modules-pw_boot:
pw_boot
-------
Changes:
.. fba0833c176a79ec83403fa9d48407c5ddebb99f
* The ``main()`` function forward declaration has been moved out of an
explicit ``extern C`` block to prevent pedantic warnings in newer Clang
toolchains. Commit: `Move main forward declaration out of extern "C"
block <https://pwrev.dev/237333>`__. Bug: :bug:`366374135`.
.. _docs-changelog-2024-10-03-Modules-pw_build:
pw_build
--------
Changes:
.. 53b16cd8d2907855b13bec9159286927de602a72
* The rules that previously existed in ``//pw_build/pigweed.bzl`` have
been split into separate files. If you relied on
``//pw_build/pigweed.bzl`` you may need to update some ``load()``
statements in your Bazel files. Commit: `Break apart pigweed.bzl
<https://pwrev.dev/239133>`__. Bug: :bug:`370792896`.
.. _docs-changelog-2024-10-03-Modules-pw_chrono:
pw_chrono
---------
New features:
.. 279ab4a35543900b62e674d14c2e663532ad5a18
* The new ``--stamp`` Bazel flag ensures that Bazel builds properly
record the actual build time as opposed to a cached value. Commit:
`Properly stamp build time in Bazel <https://pwrev.dev/237809>`__. Bug:
:bug:`367739962`.
.. _docs-changelog-2024-10-03-Modules-pw_containers:
pw_containers
-------------
New features:
.. 819dd2ceb430eae53909bea7d5a23c7743ef0fc2
* The ``pw_containers`` docs now provides examples on how to add
intrusive items to multiple containers. See
:ref:`module-pw_containers-intrusive_list-example`. Commit:
`Multiple container example <https://pwrev.dev/237472>`__.
.. 85469bdd7f4b8eea95fad4514002383e09210a6f
* The :ref:`module-pw_containers` docs now have code examples that are
built and tested as part of the normal upstream Pigweed build, which
helps ensure that they don't bit rot. Commit: `Add examples
<https://pwrev.dev/236612>`__.
Bug fixes:
.. 92ab0326113d1d6732a6d81dcc25abb330053b22
* A bug was fixed where nodes in an ``AATreeItem`` could become
orphaned. Commit: `Fix tree rebalancing <https://pwrev.dev/237415>`__.
.. _docs-changelog-2024-10-03-Modules-pw_log:
pw_log
------
Changes:
.. 5d9a1e84e7c55a7b194a8bf459b720cbba220d0c
* The ``PW_MODULE_LOG_NAME_DEFINED`` macro has been removed. Commit:
`Remove unused macro PW_MODULE_LOG_NAME_DEFINED
<https://pwrev.dev/238554>`__.
.. _docs-changelog-2024-10-03-Modules-pw_metric:
pw_metric
---------
Bug fixes:
.. 30dcf2b202c792599151e7b09699e836e3cc44a3
* A bug causing ``pw::metric::Metric::Dump()`` and
``pw::metric::Group::Dump()`` to log invalid JSON objects was fixed.
Commit: `Emit valid JSON from Metric::Dump
<https://pwrev.dev/237933>`__.
.. _docs-changelog-2024-10-03-Modules-pw_preprocessor:
pw_preprocessor
---------------
Changes:
.. 92438518417d49c3457090c1b3c57f71007743e8
* ``PW_MACRO_ARG_COUNT`` now supports up to 256 arguments. Commit:
`Expand PW_MACRO_ARG_COUNT to 256 arguments
<https://pwrev.dev/237993>`__.
.. _docs-changelog-2024-10-03-Modules-pw_presubmit:
pw_presubmit
------------
Bug fixes:
.. 6422c9ae137ad37a9ec172dcd95f294ce5631f82
* A bug was fixed that was causing Pigweed's auto-generated ``rustdoc``
API references to not be built. ``rustdoc`` documentation at
``pigweed.dev/rustdoc/*`` should be working again. Commit: `Have
docs_build check rust docs <https://pwrev.dev/238189>`__. Bug:
:bug:`369864378`.
.. _docs-changelog-2024-10-03-Modules-pw_rpc:
pw_rpc
------
New features:
.. 8e2fc6cfe825631416043a972cdd93875562a4fd
* :cpp:class:`pw::rpc::RawServerReaderWriter` and
:cpp:class:`pw::rpc::RawClientReaderWriter` have new methods that let
you directly serialize RPC payloads to the RPC system's encoding buffer
instead of requiring a copy from an externally managed buffer. Commit:
`Add callback writes to raw RPC call objects
<https://pwrev.dev/239353>`__.
.. _docs-changelog-2024-10-03-Modules-pw_spi:
pw_spi
------
New features:
.. c25923e13c339cc678e8900770a512b85064f99a
* ``operator!=`` is now implemented. Commit: `Minor enhancements to
pw::spi::Config <https://pwrev.dev/238932>`__.
Changes:
.. c25923e13c339cc678e8900770a512b85064f99a
* ``operator()``, ``operator==``, and ``operator!=`` are now marked
``constexpr`` to enable compile-time equality checking. Commit: `Minor
enhancements to pw::spi::Config <https://pwrev.dev/238932>`__.
.. _docs-changelog-2024-10-03-Modules-pw_spi_rp2040:
pw_spi_rp2040
-------------
Changes:
.. 783b29c23dd865fde344501c1b99adba4c956479
* ``spi_init()`` from the Pico SDK must be called before using the
``pw_spi`` initiator. Commit: `Minor cleanup
<https://pwrev.dev/236233>`__.
.. _docs-changelog-2024-10-03-Modules-pw_thread:
pw_thread
---------
Changes:
.. 30bdace4866039e26a05f8baa379630e066ad660
* The old ``pw::Thread`` constructor that takes ``void(void*)`` has been
removed from the public API. This is a breaking change. Constructor
usage should be migrated to the new constructor that takes
``pw::Function<void()>``. Commit: `Make the deprecated Thread
constructor private <https://pwrev.dev/236435>`__. Bug:
:bug:`367786892`.
.. 2a0f0dfccc19b86a686777afa647b0c75a87c863
* The ``pw::thread::Thread`` class was renamed to
:cpp:type:`pw::Thread`. Commit: `Migrate from pw::thread::Thread to
pw::Thread <https://pwrev.dev/236723>`__.
.. f1070484e7d2f4e429332c6d8520a3676b8cb965
* ``pw::thread::Id`` has been renamed to ``pw::Thread::id``. Commit:
`Introduce pw::Thread and pw::Thread::id <https://pwrev.dev/236796>`__.
.. _docs-changelog-2024-10-03-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. e26be58d6db0215e6a762a5a28ad74584e9a0482
* The new :c:macro:`PW_TOKENIZER_DEFINE_TOKEN` macro makes it easier to
support tokenized enums and domains. Commit: `Expose API to define new
token entry <https://pwrev.dev/238272>`__. Bug: :bug:`369881416`.
Changes:
.. 02a68bb680ebddeba8f0ad6cbbc6bb81d7568759
* CSV databases now have 4 columns: token, date removed, domain, and
string. The domain column was added as part of :ref:`seed-0105`. Legacy
databases that only support the other 3 columns continue to be
supported. Tokens in legacy databases are always in the default domain
``""``. Commit: `Support CSV databases with the domain
<https://pwrev.dev/234413>`__. Bug: :bug:`364955916`.
.. _docs-changelog-2024-10-03-Modules-pw_toolchain:
pw_toolchain
------------
Changes:
.. bf7078a044353df9683ecb65561a0edca45a4f95
* The ``pw_toolchain`` docs were refactored. Bazel-specific guidance is
now in :ref:`module-pw_toolchain-bazel` and GN-specific guidance is now
in :ref:`module-pw_toolchain-gn`. Commit: `Split out build-system
specific docs <https://pwrev.dev/238816>`__.
.. 3d0fac908c139ce83eed93727601d13747b03bf7
* The Bazel rules at ``//pw_toolchain/args/BUILD.bazel`` moved to
``//pw_toolchain/cc/args/BUILD.bazel``. If you rely on these rules you
may need to update your ``load()`` statements. Commit: `Move
pw_toolchain/args to pw_toolchain/cc/args <https://pwrev.dev/238817>`__.
.. _docs-changelog-2024-10-03-Modules-pw_transfer:
pw_transfer
-----------
Bug fixes:
.. da9a7e7cc2bd983d428949a6f5d85b9757b5178f
* A bug was fixed where resumed transfers would send a window of ``0``
repeatedly. Commit: `Fix offset receive transfer startup
<https://pwrev.dev/237095>`__. Bug: :bug:`368620868`.
.. _docs-changelog-2024-10-03-Modules-pw_uart:
pw_uart
-------
New features:
.. 7dc3b1b2a69972ae19bbe43f922aefd6dda73a3e
* The new :cpp:class:`pw::uart::UartBase` class provides a common
abstract base class for UART interfaces. Commit: `Add UartBase class
<https://pwrev.dev/238092>`__. Bug: :bug:`369678735`.
.. b4e75393442526d409968e4aac685515944b3e3e
* The new :cpp:func:`pw::uart::Uart::ReadAtLeast` method reads data from
the UART and blocks until at least the specified number of bytes have
been received. The new :cpp:func:`pw::uart::Uart::ReadExactly` method
reads data from the UART and blocks until the entire buffer has been
filled. Commit: `Add ReadAtLeast and ReadExactly methods
<https://pwrev.dev/236268>`__. Bug: :bug:`368149122`.
.. f946f6ae13c3bbc2a648b36f9ff55642e9d23b34
* The new :cpp:class:`pw::uart::UartNonBlocking` class provides a
callback-based interface for performing non-blocking UART communication.
It defines the interface that concrete UART implementations must adhere
to. Commit: `Add uart_non_blocking.h API <https://pwrev.dev/210371>`__.
Bugs: :bug:`341356437`, :bug:`331617095`.
.. 1dc9a789f52aad1f0e738a1cfd5993e2272c38d2
* The new :cpp:func:`pw::uart::Uart::SetFlowControl` method lets
applications configure hardware flow control on UART devices. Commit:
`Add method to set flow control <https://pwrev.dev/237953>`__.
Changes:
.. d31705b84d24f0ef17e6b8eef6cae13f96f942e4
* ``pw::uart::Uart::ConservativeReadAvailable()`` was moved to
:cpp:func:`pw::uart::UartBase::ConservativeReadAvailable()` and
``pw::uart::Uart::ClearPendingReceiveBytes()`` was moved to
:cpp:func:`pw::uart::UartBase::ClearPendingReceiveBytes()`. Commit:
`Move non-blocking methods from Uart to UartBase
<https://pwrev.dev/238533>`__. Bug: :bug:`369679732`.
.. _docs-changelog-2024-10-03-Modules-pw_uart_mcuxpresso:
pw_uart_mcuxpresso
------------------
Bug fixes:
.. 94d2c3995c8a14995490ef7de015e933a960c2d5
* A bug was fixed where the ``pw::uart::DmaUartMcuxpresso::Deinit()``
method didn't clear an initialization flag, which caused the
``pw::uart::DmaUartMcuxpresso::Init()`` method to be skipped on
subsequent enables. Commit: `Fix disable bug
<https://pwrev.dev/237394>`__.
.. _docs-changelog-2024-10-03-Docs:
Docs
====
New features:
.. 2ef99131bbb73e475f64281b6515eedba4a8cb79
* The Pigweed blog now has an `RSS feed <https://pigweed.dev/rss.xml>`_.
Commit: `Create RSS feed for blog <https://pwrev.dev/225491>`__. Bug:
:bug:`345857642`.
.. 8f18755dc9a225caacf2b190d1114ebfda4a2642
* The new blog post :ref:`blog-04-fixed-point` outlines how replacing
soft floats with fixed-point arithmetic can result in speed improvements
and binary size reductions without sacrificing correctness. Commit: `Add
fixed point blog <https://pwrev.dev/234312>`__.
Bug fixes:
.. e81cd5e642a0c92264caafb14a2f4931cb14fced
* When a Pigweed module is listed as supporting Rust in
``//docs/module_metadata.json``, a link to that module's ``rustdoc`` API
reference is now auto-generated in the ``pigweed.dev`` site nav. Commit:
`Auto-link to Rust API references <https://pwrev.dev/237934>`__. Bug:
:bug:`328503976`.
.. _docs-changelog-2024-10-03-SEEDs:
SEEDs
=====
Changes:
.. 905bce3bd61280a8254ac5b3b2f78e2d3059faa0
* SEED-0123 was rejected because Pigweed ended up upstreaming the
relevant APIs to ``rules_cc`` instead of sprouting them into a separate
repo. Commit: `(SEED-123) Reject the SEED <https://pwrev.dev/236453>`__.
.. _docs-changelog-2024-10-03-Targets:
Targets
=======
.. a5a199593f1375177d5805f882f303d4c8b8cea2
* The ``main()`` forward declaration for ``emcraft_sf2_som``,
``host_device_simulator``, and ``stm32f429i_disc1_stm32cube`` are no
longer explicitly marked ``extern C`` to prevent pedantic warnings in
newer Clang toolchains. Commit: `Remove implicit extern C
<https://pwrev.dev/237092>`__. Bug: :bug:`366374135`.
.. _docs-changelog-2024-09-19:
------------
Sep 19, 2024
------------
Highlights (Sep 06, 2024 to Sep 19, 2024):
* **New container classes**: The new :cpp:class:`pw::IntrusiveMap` and
:cpp:class:`pw::IntrusiveMultiMap` classes can be used for associative
dictionaries, sorted lists, and more.
* **Protobuf Editions**: Initial support for `Protobuf Editions
<https://protobuf.dev/editions/overview>`__ was added for GN-based and
CMake-based projects.
* **Token domains**: The :ref:`Detokenizer
<module-pw_tokenizer-detokenization>` now supports
:ref:`token domains <seed-0105>`.
.. _docs-changelog-2024-09-19-Modules:
Modules
=======
.. _docs-changelog-2024-09-19-Modules-pw_allocator:
pw_allocator
------------
New features:
.. d5fcc90b39ee7568855390535fa854cea8f33c95
* The new :c:macro:`PW_ALLOCATOR_STRICT_VALIDATION` option lets you
enable more expensive checks to aggressively enforce invariants when
testing. The new :c:macro:`PW_ALLOCATOR_BLOCK_POISON_INTERVAL` option
allows setting the poisoning rate more easily from the build rather than
in code via template parameters. See
:ref:`module-pw_allocator-module-configuration`. Commit: `Add module config
<https://pwrev.dev/232211>`__.
Bug fixes:
.. 82759ccb711c3f34320ae9ae37bf70a029baec57
* A bug was fixed where ``pw_allocator`` always split the first block
even if there was not enough room for the first block to be split into
two, which could cause heap corruption and crashes. Commit: `Check for
room to split the first block <https://pwrev.dev/235312>`__. Bug:
:bug:`366175024`.
.. _docs-changelog-2024-09-19-Modules-pw_assert:
pw_assert
---------
Changes:
.. cfcf0059926589e26f318e29df8733e5a09c2928
* :c:macro:`PW_CHECK_OK` now accepts any expression that's convertible
to :cpp:class:`pw::Status`. Commit: `Update PW_CHECK_OK() to handle any
expr convertible to Status <https://pwrev.dev/234820>`__. Bugs:
:bug:`357682413`, :bug:`365592494`.
.. _docs-changelog-2024-09-19-Modules-pw_async2:
pw_async2
---------
New features:
.. cfcbaf5bbc67288b5e8954f22528c4de9312effe
* The new
:cpp:func:`pw::async2::SimulatedTimeProvider::AdvanceUntilNextExpiration`
utility method is useful for advancing test time without
random periods or endless iterations. Commit: `Add more
SimulatedTimeProvider utilities <https://pwrev.dev/234929>`__.
Changes:
.. ed0fd1f45a3a137965dbb2075227b8ef0e91f935
* Coroutines now log the requested size when an allocation fails.
Commit: `Log size of failed coroutine allocations
<https://pwrev.dev/234801>`__.
.. _docs-changelog-2024-09-19-Modules-pw_build:
pw_build
--------
Bug fixes:
.. 3919d9638b6454512595c8ad39fb8806d4ac9629
* An issue was fixed where bootstrap failed when
``pw_rust_static_library`` was used. Commit: `Fix Undefined identifier
<https://pwrev.dev/232371>`__.
.. _docs-changelog-2024-09-19-Modules-pw_bytes:
pw_bytes
--------
New features:
.. cda5ba673366d189e0ea326a0fa808df181730a7
* The new :cpp:class:`pw::PackedPtr` template class provides a way to
store extra data in the otherwise unused least significant bits of a
pointer. Commit: `Add PackedPtr <https://pwrev.dev/235104>`__.
.. _docs-changelog-2024-09-19-Modules-pw_containers:
pw_containers
-------------
New features:
.. df3b7ba1f94902e81e375ce9935749163c411515
* ``pw::IntrusiveList`` now has a :ref:`size report
<module-pw_containers-intrusivelist-size-report>`. Commit:
`Add IntrusiveForwardList size report to the docs
<https://pwrev.dev/233651>`__.
.. 8a3250d2f4287c2f66c4afd7679f9b10f789e764
* The new :cpp:class:`pw::IntrusiveMap` and
:cpp:class:`pw::IntrusiveMultiMap` classes can be used for associative
dictionaries, sorted lists, and more. Commit: `Add IntrusiveMap and
IntrusiveMultiMap <https://pwrev.dev/216828>`__.
Changes:
.. 314e457eaf3a801115542d777e2157e6df85fb31
* ``pw::IntrusiveList<T>`` was renamed to
``pw::IntrusiveForwardList<T>`` and a new doubly-linked intrusive list
was added as ``pw::containers::future::IntrusiveList<T>``. An alias,
``pw::IntrusiveList<T>``, was added to maintain compatibility with
existing code and will be removed in the future. The original
implementation can still be temporarily enabled by setting
``PW_CONTAINERS_USE_LEGACY_INTRUSIVE_LIST``. Commit: `Add doubly linked
list <https://pwrev.dev/230811>`__. Bug: :bug:`362348318`.
.. _docs-changelog-2024-09-19-Modules-pw_env_setup:
pw_env_setup
------------
Changes:
.. 16f0f6387505dc27e7c1a76387b05524752b4602
* The Git submodule check is now skipped when no ``.git`` file or
directory is detected. Commit: `Add check for git in
_check_submodule_presence <https://pwrev.dev/234212>`__. Bug:
:bug:`365557573`.
.. _docs-changelog-2024-09-19-Modules-pw_ide:
pw_ide
------
Bug fixes:
.. 145b45747105fb95e5625c00a7533e5375d124ea
* When ``clangd`` is not found, ``pw ide sync`` now cleanly handles the
lack of ``clangd`` and successfully completes the rest of the sync.
Commit: `Don't fail sync on missing clangd
<https://pwrev.dev/236475>`__. Bug: :bug:`349189723`.
.. _docs-changelog-2024-09-19-Modules-pw_protobuf:
pw_protobuf
-----------
New features:
.. b299522cffb0a18e07528e923f376ceee3e9c188
* Initial support for `Protobuf Editions
<https://protobuf.dev/editions/overview>`__ was added for GN-based and
CMake-based projects. Commit: `Basic edition support
<https://pwrev.dev/235873>`__.
.. _docs-changelog-2024-09-19-Modules-pw_spi_linux:
pw_spi_linux
------------
Bug fixes:
.. eefd313bdb13098552cd713598b937debe80d3d4
* A performance issue was fixed where ``Configure()`` was being called
on each ``pw::spi::Device::WriteRead()`` call. Commit: `Avoid
unnecessary ioctl()s in Configure() <https://pwrev.dev/235877>`__. Bug:
:bug:`366541694`.
.. _docs-changelog-2024-09-19-Modules-pw_spi_mcuxpresso:
pw_spi_mcuxpresso
-----------------
Changes:
.. 9d175062d56972f082ce99753092b75419a228ce
* ``pw::spi::McuxpressoInitiator::DoConfigure()`` was renamed to
``pw::spi::McuxpressoInitiator::DoConfigureLocked()``. Commit: `Rename
DoConfigure() to DoConfigureLocked() <https://pwrev.dev/236232>`__.
.. _docs-changelog-2024-09-19-Modules-pw_sys_io_stm32cube:
pw_sys_io_stm32cube
-------------------
Bug fixes:
.. b0f73feb04effde3b7751c53c21b7a163f234eb8
* A bug was fixed where the GPIO mode of the UART RX GPIO pin on
STM32F1XX devices was not being correctly set. Commit: `Fix UART RX GPIO
mode for f1xx family <https://pwrev.dev/235332>`__.
.. _docs-changelog-2024-09-19-Modules-pw_system:
pw_system
---------
New features:
.. 5e148c19477521afbbedcc8a91a2c5b2a07bc334
* The console's new ``timestamp_decoder`` constructor parameter lets
applications provide custom timestamp parsers. Commit: `Support
timestamp parser as an argument <https://pwrev.dev/234931>`__. Bug:
:bug:`344606797`.
Changes:
.. faac61757b5428be3787729d328f6f2f3ebfa9f1
* The log library header (``pw_system/log.h``) of ``pw_system`` is now
public and can be used outside of ``pw_system``. Commit: `Make log
library header public <https://pwrev.dev/233411>`__.
.. _docs-changelog-2024-09-19-Modules-pw_thread:
pw_thread
---------
Changes:
.. 8a67d6b57b526757ffa010be2be402c42cd13ac4
* ``pw::thread::Thread`` now takes ``pw::Function<void()>``, which
should be used in place of the ``void(void*)`` function pointer and
``void*`` argument. Commit: `Mark legacy function* / void* constructor
as deprecated <https://pwrev.dev/236454>`__. Bug: :bug:`367786892`.
.. _docs-changelog-2024-09-19-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. 9fb87e78e4c41778fc950714d58e6602f63d27e6
* The :ref:`Detokenizer <module-pw_tokenizer-detokenization>` now
supports :ref:`token domains <seed-0105>`. Commit:
`Add token domain support to Detokenizer <https://pwrev.dev/234968>`__.
Bug: :bug:`362752722`.
.. 08ff555993b8ab250ea03a9f12aaf5c2d1c9c705
* :py:class:`pw_tokenizer.tokens.Database` now supports :ref:`token
domains <seed-0105>`. Commit: `Use domains in the Python tokens.Database
class <https://pwrev.dev/234412>`__.
.. _docs-changelog-2024-09-19-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 40f756e2d3c40eeb32832309dbcae989fb750268
* ``WORKSPACE`` toolchain registration is now configurable so that
downstream projects can manually control which toolchains get
registered. Commit: `Make toolchain registration configurable
<https://pwrev.dev/235712>`__. Bug: :bug:`346388161`.
.. _docs-changelog-2024-09-19-Modules-pw_transfer:
pw_transfer
-----------
Bug fixes:
.. f1f654a15a3adce476c2d68643eee56f3c225dd4
* A bug was fixed where a handshake timeout was not set after
``START_ACK`` is processed. Commit: `Bugfix for start handshake, and
rate limit logs <https://pwrev.dev/236572>`__. Bug: :bug:`361281209`.
Changes:
.. 2496aee1a4ab3d98526a7357943b69347a39903a
* When a receiver receives a chunk of data it already has the receiver
now sends a ``PARAMETERS_CONTINUE`` chunk instead of requesting
retransmission. Commit: `Send continue parameters for already received
chunks <https://pwrev.dev/235100>`__.
.. f1f654a15a3adce476c2d68643eee56f3c225dd4
* TX data chunk logs have been rate-limited to only send once every 3
seconds. Commit: `Bugfix for start handshake, and rate limit logs
<https://pwrev.dev/236572>`__. Bug: :bug:`361281209`.
.. _docs-changelog-2024-09-19-Modules-pw_uart_mcuxpresso:
pw_uart_mcuxpresso
------------------
New features:
.. e8ab2b0ac31c0dde6febd0d384c0ea7d688f6803
* Flow control can now be configured. Commit: `Add support for
configuring flow control <https://pwrev.dev/236896>`__. Bug:
:bug:`368150004`.
Changes:
.. e8ab2b0ac31c0dde6febd0d384c0ea7d688f6803
* Flow control, parity mode, and stop bits now have default values.
Commit: `Add support for configuring flow control
<https://pwrev.dev/236896>`__. Bug: :bug:`368150004`.
.. _docs-changelog-2024-09-19-Build-systems:
Build systems
=============
.. _docs-changelog-2024-09-19-Build-systems-Bazel:
Bazel
-----
New features:
.. 4ceb5b8bf0faf75c0b051114abf85a2ea73ca39c
* The new ``do_not_build`` tag specifies targets that should be excluded
from wildcard builds. The new ``do_not_run_test`` tag specifies test
targets that should be built but not executed. Commit: `Introduce
do_not_build, do_no_run_test tags <https://pwrev.dev/223492>`__. Bug:
:bug:`353531487`.
.. 54679d205e4888302ab24882e6fb64bf8ba964c6
* `Platform-based flags <https://github.com/bazelbuild/proposals/blob/ma
in/designs/2023-06-08-platform-based-flags.md>`__ have been re-enabled.
Commit: `Re-enable platform-based flags <https://pwrev.dev/234135>`__.
Bug: :bug:`301334234`.
.. _docs-changelog-2024-09-19-Miscellaneous:
Miscellaneous
=============
Bug fixes:
.. 982c7f42878871e7f85dbc5420ff17f0b8ede237
* An issue was fixed where the Fuchsia SDK was always fetched during
Bazel workspace initialization and caused unnecessary downloads. Commit:
`Use @fuchsia_clang as a cipd repository <https://pwrev.dev/233531>`__.
Bug: :bug:`346416385`.
-----------
Sep 5, 2024
-----------
.. note::
This changelog update is shorter than previous ones because we're
experimenting with only showing user-facing new features, changes,
and bug fixes. I.e. we're omitting commits that don't affect
downstream Pigweed projects.
Highlights (Aug 24, 2024 to Sep 5, 2024):
* **New backends**: :ref:`module-pw_async_fuchsia` (a ``pw_async``
backend for Fuchsia that implements ``Task`` and ``FakeDispatcher``),
:ref:`module-pw_log_fuchsia` (a ``pw_log`` backend for Fuchsia
that uses the ``fuchsia.logger.LogSink`` FIDL API to send logs),
:ref:`module-pw_random_fuchsia` (a ``pw_random`` backend for Fuchsia
that implements :cpp:class:`pw::random::RandomGenerator`)
and :ref:`module-pw_uart_mcuxpresso` (a ``pw_uart`` backend for
NXP MCUXpresso devices).
* **New theme**: The underlying Sphinx theme powering ``pigweed.dev`` is now
`PyData <https://pydata-sphinx-theme.readthedocs.io/en/stable/>`_. In
addition to improving website usability, this theme should also reduce
the ``pigweed.dev`` maintenance workload over time. See
:ref:`seed-0130` for more information.
* **Arm Cortex-M55 support**: ``pw_toolchain`` and ``pw_system`` now
support Arm Cortex-M55 cores.
* **Bazel cloud demo**: The new :ref:`Bazel cloud features
<showcase-sense-tutorial-bazel_cloud>`
page in the Sense tutorial shows you how to use BuildBuddy
to share logs and speed up builds with remote caching.
Modules
=======
pw_async2
---------
* The new :cpp:class:`pw::async2::TimeProvider` class can be used to
create timers in a dependency-injection-friendly way.
Commit: `Add TimeProvider
<https://pwrev.dev/232411>`__
pw_async_fuchsia
----------------
* :ref:`module-pw_async_fuchsia` is a new ``pw_async`` backend for Fuchsia
that implements ``Task`` and ``FakeDispatcher``.
Commit: `Create pw_async Fuchsia backend
<https://pwrev.dev/230896>`__
pw_chrono
---------
* :cpp:class:`pw::chrono::VirtualClock` is a new virtual base class for
timers that enables writing
timing-sensitive code that can be tested using simulated clocks such as
:cpp:class:`pw::chrono::SimulatedSystemClock`.
Commit: `Add VirtualClock
<https://pwrev.dev/233031>`__
pw_cli
------
* The new :py:meth:`pw_cli.git_repo.GitRepo.commit_date()` method returns
the datetime of a specified commit.
Commit: `Add in option to retrieve commit date
<https://pwrev.dev/216275>`__
pw_digital_io_mcuxpresso
------------------------
* The GPIO clock is now enabled even when GPIO is disabled.
Commit: `Enable gpio clock even when disabling gpio
<https://pwrev.dev/232131>`__
(issue `#356689514 <https://pwbug.dev/356689514>`__)
pw_log_fuchsia
--------------
* :ref:`module-pw_log_fuchsia` is a new ``pw_log`` backend that uses the
``fuchsia.logger.LogSink`` FIDL API to send logs.
Commit: `Create pw_log Fuchsia backend
<https://pwrev.dev/231052>`__
pw_log_rpc
----------
* ``pw_log_rpc.LogStreamHandler.listen_to_logs()`` was renamed to
:py:meth:`pw_log_rpc.LogStreamHandler.start_logging()`.
Commit: `Invoke pw.log.Logs.Listen() to restore prior behavior
<https://pwrev.dev/233991>`__
(issue `#364421706 <https://pwbug.dev/364421706>`__)
pw_log_zephyr
-------------
* Use of shell ``printf`` macros within ``if`` blocks that don't use
braces no longer causes compile errors.
Commit: `Make shell printf macros safe for use in if/else blocks
<https://pwrev.dev/232031>`__
pw_package
----------
* ``picotool`` installation on macOS was fixed.
Commit: `Fix pictotool install on mac
<https://pwrev.dev/234238>`__
pw_random_fuchsia
-----------------
* :ref:`module-pw_random_fuchsia` provides an implementation of
:cpp:class:`pw::random::RandomGenerator` that uses Zircon.
Commit: `Create Fuchsia backend for pw_random
<https://pwrev.dev/230895>`__
pw_rpc
------
* New documentation (:ref:`module-pw_rpc-guides-raw-fallback`) was added that
explains how to define a raw method within a non-raw service.
Commit: `Provide examples of raw methods in docs
<https://pwrev.dev/232877>`__
* Many RPC-related classes were moved out of ``pw_hdlc`` and into
``pw_rpc`` or ``pw_stream``.
Commit: `Relocate RPC classes from pw_hdlc
<https://pwrev.dev/230172>`__
(issues `#330177657 <https://pwbug.dev/330177657>`__,
`#360178854 <https://pwbug.dev/360178854>`__)
pw_spi_mcuxpresso
-----------------
* The new ``pw::spi::FifoErrorCheck`` enum lets you configure whether
``pw::spi::McuxpressoResponder`` instances should log FIFO errors.
Commit: `Add check_fifo_error to responder config
<https://pwrev.dev/232215>`__
pw_stream_uart_linux
--------------------
* The new :cpp:struct:`pw::stream::UartStreamLinux::Config` struct lets
you configure baud rate and control flow.
Commit: `Add Config struct
<https://pwrev.dev/233591>`__
(issue `#331871421 <https://pwbug.dev/331871421>`__)
pw_sync
-------
* :cpp:func:`pw::sync::InterruptSpinLock::try_lock` and similar functions
have been annotated with ``[[nodiscard]]`` which means that ignoring
their return values will result in compiler warnings.
Commit: `[[nodiscard]] for try_lock() and similar functions
<https://pwrev.dev/229311>`__
pw_system
---------
* :ref:`module-pw_system` now supports Arm Cortex-M55 systems.
Commit: `Support ARM Cortex M55 system
<https://pwrev.dev/231632>`__
(issue `#361691368 <https://pwbug.dev/361691368>`__)
pw_thread
---------
* :cpp:class:`pw::thread::Options` has moved to its own header
(``pw_thread/options.h``) to make it possible to work with the class
without relying on the thread facade.
Commit: `Move pw::thread::Options to its own header
<https://pwrev.dev/232151>`__
pw_tokenizer
------------
* In Python the detokenizer prefix is now set in the
:py:class:`pw_tokenizer.detokenize.Detokenizer` constructor.
Commit: `Set prefix in Detokenizer; fix typing issues
<https://pwrev.dev/234311>`__
pw_toolchain
------------
* Arm Cortex-M55 toolchain support was added.
Commit: `Add ARM Cortex-M55 toolchain
<https://pwrev.dev/231631>`__
(issue `#361691368 <https://pwbug.dev/361691368>`__)
pw_uart_mcuxpresso
------------------
* The new :ref:`module-pw_uart_mcuxpresso` module is a
:ref:`module-pw_uart` backend for NXP MCUXpresso devices.
Commit: `Introduce DMA UART backend for NXP devices
<https://pwrev.dev/232831>`__
Docs
====
* New documentation (:ref:`docs-pw-style-cpp-logging`) about logging best
practices was added.
Commit: `Add logging recommendations
<https://pwrev.dev/210204>`__
* The new :ref:`Bazel cloud features <showcase-sense-tutorial-bazel_cloud>`
page in the Sense tutorial shows you how to use BuildBuddy
to share logs and speed up builds with remote caching.
Commit: `Add cloud build section to Sense tutorial
<https://pwrev.dev/233751>`__
(issue `#363070027 <https://pwbug.dev/363070027>`__)
* :ref:`docs-contributing` now links to good first issues for people who
want to contribute to upstream Pigweed.
Commit: `Add link to good first issue list
<https://pwrev.dev/233652>`__
* ``pigweed.dev/live`` now links to the Pigweed Live meeting notes.
Commit: `Add shortlink for Pigweed Live notes
<https://pwrev.dev/232032>`__
Targets
=======
RP2350
------
* RP2350 crash snapshots now show the correct architecture.
Commit: `Fix architecture in crash snapshot
<https://pwrev.dev/232231>`__
(issue `#362506213 <https://pwbug.dev/362506213>`__)
------------
Aug 23, 2024
------------
.. _Google Pigweed comes to our new RP2350: https://www.raspberrypi.com/news/google-pigweed-comes-to-our-new-rp2350/
Highlights (Aug 8, 2024 to Aug 23, 2024):
* **RP2350 Support**: Pigweed now supports the new Raspberry Pi RP2350 MCU.
Check out `Google Pigweed comes to our new RP2350`_ on the Raspberry Pi
blog for the full story and :ref:`showcase-sense` to try it out.
Build systems
=============
Bazel
-----
* `Add missing counting_semaphore and thread_yield backends
<https://pwrev.dev/228392>`__
Modules
=======
pw_allocator
------------
* `Disable example spin_lock test on RP2
<https://pwrev.dev/231251>`__
(issues `#358411629 <https://pwbug.dev/358411629>`__,
`#361354335 <https://pwbug.dev/361354335>`__)
pw_async2
---------
The new ``pw::async2::MakeOnceSenderAndReceiver()`` function template makes it
easier to simultaneously create a sender and receiver for asynchronously
sending values. The new ``pw::async2::MakeOnceSenderAndReceiver()`` function
template works similarly but is used for references.
* `Create OnceSender & OnceReceiver
<https://pwrev.dev/226231>`__
(issue `#350994818 <https://pwbug.dev/350994818>`__)
* `Remove accidental macro #undef
<https://pwrev.dev/229275>`__
pw_bloat
--------
The ``pw bloat`` CLI command now supports a ``--custom-config`` option to
specify a custom Bloaty config file so that non-memory regions can be
analyzed.
* `Support custom bloaty configs in CLI command
<https://pwrev.dev/216133>`__
pw_bluetooth
------------
* `Create more emboss event definitions
<https://pwrev.dev/231091>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Add create connection cancel return
<https://pwrev.dev/230251>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Add LEReadSupportedStates emboss event
<https://pwrev.dev/228961>`__
* `Add HCI Command OpCode definitions
<https://pwrev.dev/228672>`__
* `Add more emboss definitions
<https://pwrev.dev/228671>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Make SupportedCommands emboss struct more ergonomic
<https://pwrev.dev/228155>`__
pw_bluetooth_proxy
------------------
* `Release H4 buff on error
<https://pwrev.dev/229011>`__
pw_bluetooth_sapphire
---------------------
* `Add common bt-host clang warnings
<https://pwrev.dev/228651>`__
(issue `#345799180 <https://pwbug.dev/345799180>`__)
* `Add new emboss compiler file ir_data_fields.py
<https://pwrev.dev/228655>`__
(issue `#358665524 <https://pwbug.dev/358665524>`__,
`#335724776 <https://pwbug.dev/335724776>`__)
pw_build
--------
The new ``glob_dirs()`` Starlark helper returns a list of directories matching
the provided glob pattern. The new ``match_dir()`` Starlark helper returns a
single directory that matches the provided glob pattern and fails if there's
more than one match.
* `Add mod proc_macro to rust macro targets
<https://pwrev.dev/230013>`__
* `Remove output_name attr in rust_library
<https://pwrev.dev/230012>`__
* `Make pw_load_phase_test host only
<https://pwrev.dev/230072>`__
* `Add glob_dirs() Starlark helper
<https://pwrev.dev/228956>`__
pw_channel
----------
* `Ensure that stream_channel_test resources live forever
<https://pwrev.dev/228154>`__
(issue `#358078118 <https://pwbug.dev/358078118>`__)
pw_cpu_exception_cortex_m
-------------------------
* `Fix cpu exception handler on armv8m
<https://pwrev.dev/231372>`__
(issue `#323215726 <https://pwbug.dev/323215726>`__)
pw_display
----------
The new :ref:`module-pw_display` experimental module provides graphic display
support and framebuffer management.
* `Color library
<https://pwrev.dev/229606>`__
(issue `#359953386 <https://pwbug.dev/359953386>`__)
* `Create module directory
<https://pwrev.dev/229712>`__
pw_env_setup
------------
* `Get bazelisk instead of bazel
<https://pwrev.dev/226376>`__
(issue `#355438774 <https://pwbug.dev/355438774>`__)
pw_grpc
-------
When a frame with a payload has a stream-reset error, the payload is now skipped.
* `Improve logging when receiving unknown RPC
<https://pwrev.dev/231011>`__
* `Skip HTTP2 frame payload for frames that result in stream reset
<https://pwrev.dev/230951>`__
pw_i2c_rp2040
-------------
The ``clock_frequency`` field in ``pw::i2c::Rp2040Initiator::Config`` has been
renamed to ``clock_frequency_hz``.
* `Include label in clock_frequency
<https://pwrev.dev/221412>`__
pw_ide
------
``pw_ide`` now searches all parent directories for the presence of a
``pigweed.json`` file to determine the root directory. The workspace
root can be programmatically configured via the new
``pw_ide.settings.PigweedIdeSettings.workspace_root`` property. The
``pigweed.activateBazeliskInNewTerminals`` option in VS Code now defaults
to ``false``.
* `Fix .pw_ide.yaml paths
<https://pwrev.dev/230991>`__
* `Support different workspace root
<https://pwrev.dev/217220>`__
* `Disable Bazelisk auto-activation by default
<https://pwrev.dev/228493>`__
(issue `#358384211 <https://pwbug.dev/358384211>`__)
pw_kvs
------
References to ``pw::kvs::Key`` must be replaced with ``std::string_view``.
* `Remove unnecessary Key alias and test
<https://pwrev.dev/229976>`__
* `Pass EntryHeader by const reference
<https://pwrev.dev/229727>`__
(issue `#254601862 <https://pwbug.dev/254601862>`__)
* `Move inline variable definition to .cc file
<https://pwrev.dev/228514>`__
(issue `#357162923 <https://pwbug.dev/357162923>`__)
pw_module
---------
* `Fix OWNERS file parsing
<https://pwrev.dev/226177>`__
pw_multibuf
-----------
The ``pw::multibuf::MultiBuf::Chunks()`` method and
``pw::multibuf::MultiBuf::ChunkIterable`` class have been removed; use the
new ``pw::multibuf::MultiBufChunks`` class instead.
* `Restructure ChunkIterable
<https://pwrev.dev/230892>`__
* `Comment updates for consistency
<https://pwrev.dev/230891>`__
pw_package
----------
* `Use bazel to build picotool package
<https://pwrev.dev/229431>`__
pw_preprocessor
---------------
The new ``PW_MODIFY_DIAGNOSTIC_CLANG`` define lets you handle Clang-only
warnings separately from other compilers.
* `Test GCC/Clang diagnostic modification macros
<https://pwrev.dev/231336>`__
* `Introduce PW_MODIFY_DIAGNOSTIC_CLANG
<https://pwrev.dev/231332>`__
(issue `#356935569 <https://pwbug.dev/356935569>`__)
* `Expand comment for PW_PACKED
<https://pwrev.dev/226994>`__
pw_rpc
------
Java client: The new ``PacketByteFactory`` Java class is a helper for creating
request and response packets during testing.
Python client: The ``pw_rpc.console_tools.watchdog.Watchdog`` Python class has a
new ``stop()`` method to stop the watchdog. The
``pw_rpc.callback_client.call.Call`` Python class now accepts a
``max_responses`` argument that lets you limit how many responses should be
received after a streaming RPC call. The ``ignore_errors``,
``cancel_duplicate_calls``, and ``override_pending_options`` arguments
previously available in some Python client methods have been removed.
TypeScript client: The ``invoke()`` method in the TypeScript client now accepts
a ``maxResponses`` argument which lets you limit how many responses to a
streaming RPC call should be stored.
* `Avoid recompiling protos for every test
<https://pwrev.dev/230135>`__
(issue `#360184800 <https://pwbug.dev/360184800>`__)
* `Fix typing in unaryWait return value in TS client
<https://pwrev.dev/231071>`__
* `Create PacketByteFactory
<https://pwrev.dev/230011>`__
(issue `#360174359 <https://pwbug.dev/360174359>`__)
* `Add stop method to Watchdog
<https://pwrev.dev/230692>`__
(issue `#350822543 <https://pwbug.dev/350822543>`__)
* `Limit maximum stored responses in TypeScript client
<https://pwrev.dev/229975>`__
* `Add missing Bazel test rules
<https://pwrev.dev/230691>`__
* `Restore RpcIds for testing; move packet encoding to packets.py
<https://pwrev.dev/230471>`__
* `Limit maximum stored responses in Python client
<https://pwrev.dev/229974>`__
(issue `#262749163 <https://pwbug.dev/262749163>`__)
* `Remove deprecated / obsolete features
<https://pwrev.dev/229908>`__
* `Fix open in callback_client
<https://pwrev.dev/169174>`__
(issue `#309159260 <https://pwbug.dev/309159260>`__)
* `Merge PendingRpc and RpcIds
<https://pwrev.dev/228952>`__
* `Require an output function for channels
<https://pwrev.dev/227855>`__
pw_spi_linux
------------
* `Remove linkage specification from cli main
<https://pwrev.dev/230291>`__
pw_status
---------
The ``StatusWithSize::size_or()`` method has been removed.
* `Convert StatusWithSize to Doxygen
<https://pwrev.dev/229980>`__
* `Remove StatusWithSize::size_or()
<https://pwrev.dev/229979>`__
pw_stream
---------
* `Disable mpsc_stream_test for Pi Pico
<https://pwrev.dev/231212>`__
(issue `#361369435 <https://pwbug.dev/361369435>`__)
pw_system
---------
The ``pw_system.device.Device`` class constructor now accepts an ``Iterable``
of proto libraries rather than a ``list``.
* `Add type annotation to pw_system.device.Device() write arg
<https://pwrev.dev/229653>`__
* `Update Device ctor to take Iterable of proto libraries
<https://pwrev.dev/229811>`__
pw_thread
---------
* `Disable test_thread_context_facade_test on Pi Pico
<https://pwrev.dev/231291>`__
(issue `#361369192 <https://pwbug.dev/361369192>`__)
pw_tokenizer
------------
* `Remove unsupported C++11 and C++14 code
<https://pwrev.dev/222432>`__
pw_trace_tokenized
------------------
* `Fix TokenizedTracer initialization
<https://pwrev.dev/230314>`__
(issue `#357835484 <https://pwbug.dev/357835484>`__)
pw_transfer
-----------
Transfer handler registration and unregistration functions now return a boolean
indicating success or failure. The C++ client now always includes a protocol
version in the final chunk.
* `Add return values to handler registrations
<https://pwrev.dev/230912>`__
* `Always set protocol version in final chunk
<https://pwrev.dev/229289>`__
pw_unit_test
------------
* `Delete unsupported C++14 compatibility code
<https://pwrev.dev/229972>`__
* `Fix multi-line test macros
<https://pwrev.dev/229314>`__
Docs
====
* `Require unit tests to be in unnamed namespace
<https://pwrev.dev/231211>`__
* `Add structured data to Kudzu blog post
<https://pwrev.dev/230647>`__
(issue `#360924425 <https://pwbug.dev/360924425>`__)
* `Fix Pigweed Live CTA link
<https://pwrev.dev/230693>`__
(issue `#357957451 <https://pwbug.dev/357957451>`__)
* `Replace 'bazel' with 'bazelisk'
<https://pwrev.dev/226377>`__
* `Update Sense flashing instructions
<https://pwrev.dev/229608>`__
* `Update RP2 family udev rules
<https://pwrev.dev/228513>`__
(issue `#355291899 <https://pwbug.dev/355291899>`__)
* `Update "Who's using Pigweed" section
<https://pwrev.dev/228494>`__
* `Update Bazel quickstart mentions
<https://pwrev.dev/228531>`__
* `Launch Sense
<https://pwrev.dev/228431>`__
Targets
=======
rp2350
------
Pigweed now supports the new Raspberry Pi RP2350 MCU.
* `Add support for RP2350
<https://pwrev.dev/228326>`__
(issue `#354942782 <https://pwbug.dev/354942782>`__)
rp2040
------
* `Reset tty flags after successful flash on posix
<https://pwrev.dev/229721>`__
* `Remove references to b/261603269
<https://pwrev.dev/229397>`__
* `Add -fexceptions for the rp2040 PIO assembler
<https://pwrev.dev/229531>`__
* `Get Pico SDK and Picotool from BCR
<https://pwrev.dev/228327>`__
Third-party software
====================
Emboss
------
* `Remove -Wdeprecated-copy from public_config
<https://pwrev.dev/228563>`__
(issue `#345526399 <https://pwbug.dev/345526399>`__)
* `Update emboss to v2024.0809.170004
<https://pwrev.dev/228562>`__
(issue `#345526399 <https://pwbug.dev/345526399>`__)
Fuchsia
-------
* `Update patch to ignore warnings in result.h
<https://pwrev.dev/231253>`__
* `Copybara import
<https://pwrev.dev/231293>`__
Rolls
-----
* `fuchsia_infra: [roll] Roll fuchsia-infra-bazel-rules-bazel_sdk-ci
<https://pwrev.dev/230635>`__
* `fuchsia_infra 54 commits
<https://pwrev.dev/230634>`__
* `go
<https://pwrev.dev/230631>`__
* `rust
<https://pwrev.dev/230472>`__
* `go
<https://pwrev.dev/228811>`__
* `gn
<https://pwrev.dev/228731>`__
* `fuchsia_infra 27 commits
<https://pwrev.dev/228712>`__
* `rust
<https://pwrev.dev/228566>`__
Miscellaneous
=============
* `Change typedef to using
<https://pwrev.dev/230351>`__
* `Handle ignored status comments
<https://pwrev.dev/229652>`__
(issues `#357136096 <https://pwbug.dev/357136096>`__,
`#357139112 <https://pwbug.dev/357139112>`__)
Owners
------
* `Add davidroth@
<https://pwrev.dev/230071>`__
-----------
Aug 7, 2024
-----------
Highlights (Jul 26, 2024 to Aug 7, 2024):
* **Tour of Pigweed**: The new :ref:`Tour of Pigweed <showcase-sense>`
is a hands-on, guided walkthrough of many key Pigweed features working
together in a medium-complexity application.
* **Easier pw_digital_io testing**: The new
``pw::digital_io::DigitalInOutMock`` class is a mock implementation of
``pw:digital_io::DigitalInOut`` that can be used for testing.
* **Code intelligence in VS Code**: The new
:ref:`module-pw_ide-guide-vscode-code-intelligence` document provides
guides on using the code intelligence features of the ``pw_ide``
extension for VS Code.
Build systems
=============
Bazel
-----
* `Get picotool from the BCR
<https://pwrev.dev/227838>`__
(issue `#354270165 <https://pwbug.dev/354270165>`__)
* `Manage pw_ide deps via bzlmod
<https://pwrev.dev/226733>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Manage Java deps through bzlmod
<https://pwrev.dev/226481>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Provide symlink to clangd at root
<https://pwrev.dev/226451>`__
(issue `#355655415 <https://pwbug.dev/355655415>`__)
* `Partial revert of http://pwrev.dev/226007
<https://pwrev.dev/226271>`__
(issue `#352389854 <https://pwbug.dev/352389854>`__)
Modules
=======
pw_allocator
------------
* `Fix bucketed block corruption
<https://pwrev.dev/227604>`__
(issue `#345526413 <https://pwbug.dev/345526413>`__)
* `Add missing include
<https://pwrev.dev/227174>`__
(issue `#356667663 <https://pwbug.dev/356667663>`__)
pw_bluetooth
------------
``ReadLocalSupportedCommandsCommandCompleteEvent`` now provides both a raw bytes
field (``supported_commands_bytes``) and a sub-struct (``supported_commands``)
for easier access to command bits. You can use either ``SupportedCommandsOctet``
or ``SupportedCommands`` to parse a saved ``uint8_t[64]``.
* `Improve ergonomics of emboss SupportedCommands
<https://pwrev.dev/227931>`__
* `Add more emboss definitions
<https://pwrev.dev/227951>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
pw_bluetooth_proxy
------------------
* `Release active connections once zero
<https://pwrev.dev/226400>`__
* `Only log disconnect events for active connections
<https://pwrev.dev/226393>`__
pw_bluetooth_sapphire
---------------------
* `Handle switch warning with pigweed
<https://pwrev.dev/227044>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227043>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227025>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Write Variable PIN Type for Legacy Pairing
<https://pwrev.dev/227042>`__
(issues `#42173830 <https://pwbug.dev/42173830>`__,
`# b/342151162 <https://pwbug.dev/ b/342151162>`__)
* `Add LegacyPairingState to BrEdrConnectionRequest
<https://pwrev.dev/227041>`__
(issue `#42173830 <https://pwbug.dev/42173830>`__)
* `Create and implement LegacyPairingState class
<https://pwrev.dev/227023>`__
(issues `#342150626 <https://pwbug.dev/342150626>`__,
`#42173830 <https://pwbug.dev/42173830>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227040>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227039>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Translate information & additional attributes
<https://pwrev.dev/227038>`__
(issue `#327758656 <https://pwbug.dev/327758656>`__)
* `Return registered services after bredr.Advertise
<https://pwrev.dev/227022>`__
(issue `#327758656 <https://pwbug.dev/327758656>`__)
* `Handle switch enum warning with pigweed
<https://pwrev.dev/227037>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227021>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Fix shadow variable warnings
<https://pwrev.dev/227036>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Add panic to EventTypeToString
<https://pwrev.dev/227035>`__
(issue `#356388419 <https://pwbug.dev/356388419>`__)
* `Switch over to pw::utf8
<https://pwrev.dev/227020>`__
(issue `#337305285 <https://pwbug.dev/337305285>`__)
* `Remove unnecessary cast qual pragma
<https://pwrev.dev/227034>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Fix statement expression extension warnings
<https://pwrev.dev/227033>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Fix variadic macro warnings
<https://pwrev.dev/227019>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Add SetupDataPath FIDL handler
<https://pwrev.dev/227018>`__
(issue `#311639690 <https://pwbug.dev/311639690>`__)
* `Create abstract base for IsoStream
<https://pwrev.dev/227017>`__
* `Remove CommandPacketVariant
<https://pwrev.dev/227032>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Use emboss for setting ACL priority
<https://pwrev.dev/227031>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Add test for A2DP offloading
<https://pwrev.dev/227014>`__
(issue `#330921787 <https://pwbug.dev/330921787>`__)
* `Explicitly move WeakRef in GetWeakPtr
<https://pwrev.dev/227013>`__
(issue `#354026910 <https://pwbug.dev/354026910>`__)
* `Clean up some type sizes
<https://pwrev.dev/227012>`__
(issue `#354057871 <https://pwbug.dev/354057871>`__)
* `Use emboss for LELongTermKeyRequestReply
<https://pwrev.dev/227011>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove manufacturer list
<https://pwrev.dev/226472>`__
pw_build
--------
* `Fix configs in pw_rust_executable
<https://pwrev.dev/212171>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
* `Auto disable project builder progress bars
<https://pwrev.dev/226379>`__
pw_chrono_stl
-------------
System clock and timer interfaces have been moved to separate directories so
that you can pick up the backend of one of these without bringing in the other.
This makes it possible to use a custom system timer with the STL system clock,
for example.
* `Move system clock and timer into separate directories
<https://pwrev.dev/225992>`__
pw_clock_tree_mcuxpresso
------------------------
The new ``pw::clock_tree::ClockMcuxpressoClockIp`` class lets you manage
``clock_ip_name_t`` clocks with the clock tree to save power when
``FSL_SDK_DISABLE_DRIVE_CLOCK_CONTROL`` is set.
* `Introduce ClockMcuxpressoClockIp
<https://pwrev.dev/226069>`__
(issue `#355486338 <https://pwbug.dev/355486338>`__)
pw_console
----------
* `Additional UI and code themes
<https://pwrev.dev/226720>`__
* `Bump version of console js, add titles to log panes
<https://pwrev.dev/226831>`__
pw_digital_io
-------------
The new ``pw::digital_io::DigitalInOutMock`` class is a mock implementation
of ``pw:digital_io::DigitalInOut`` that can be used for testing.
* `Add Mock
<https://pwrev.dev/227836>`__
pw_digital_io_linux
-------------------
The default ``pw_log`` logging level changed from ``DEBUG`` to ``INFO``.
* `Set log level to INFO
<https://pwrev.dev/225912>`__
pw_digital_io_rp2040
--------------------
* `Don't discard status returns
<https://pwrev.dev/227712>`__
(issue `#357090965 <https://pwbug.dev/357090965>`__)
pw_env_setup
------------
* `Update rust thumbv7m target
<https://pwrev.dev/226951>`__
* `Add rustc thumbv7m target
<https://pwrev.dev/211991>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
pw_hex_dump
-----------
* `Add rule for pw_hex_dump/log_bytes.h
<https://pwrev.dev/227651>`__
(issue `#357595992 <https://pwbug.dev/357595992>`__)
pw_ide
------
The Pigweed extension for VS Code will now immediately update the code analysis
target if the ``pigweed.codeAnalysisTarget`` setting in ``settings.json`` is
changed. The new ``pigweed.activateBazeliskInNewTerminals`` setting lets you
specify whether the path to Bazelisk should be added when a VS Code terminal is
launched. The new :ref:`module-pw_ide-guide-vscode-code-intelligence` document
provides guides on using the VS Code extension's code intelligence features.
* `VSC extension 1.3.2 release
<https://pwrev.dev/225391>`__
* `Show progress bar on manual refreshes
<https://pwrev.dev/227731>`__
* `Detect manual target change in settings
<https://pwrev.dev/227606>`__
* `Much faster VSC config parsing
<https://pwrev.dev/227605>`__
* `Automatically activate Bazelisk in new terminals
<https://pwrev.dev/226382>`__
* `Use stable clangd path
<https://pwrev.dev/226431>`__
(issue `#355655415 <https://pwbug.dev/355655415>`__)
* `Add inactive source file decoration
<https://pwrev.dev/225733>`__
* `VSC extension refactoring
<https://pwrev.dev/226059>`__
pw_multibuf
-----------
* `Add missing includes
<https://pwrev.dev/227331>`__
(issue `#356667663 <https://pwbug.dev/356667663>`__)
pw_multisink
------------
The new ``pw::multisink::Drain::GetUnreadEntriesCount()`` method is a
thread-safe way to return the number of unread entries in a drain's sink.
* `Interface to read entries count
<https://pwrev.dev/226351>`__
(issue `#355104976 <https://pwbug.dev/355104976>`__)
pw_presubmit
------------
* `Fix incl-lang when not at repo root
<https://pwrev.dev/227185>`__
* `Remove misc program
<https://pwrev.dev/226995>`__
(issue `#356888002 <https://pwbug.dev/356888002>`__)
* `Rename "misc" program to "sapphire"
<https://pwrev.dev/226993>`__
(issue `#356888002 <https://pwbug.dev/356888002>`__)
* `Add new presubmit steps
<https://pwrev.dev/226712>`__
(issue `#356619766 <https://pwbug.dev/356619766>`__)
* `Allow fxbug.dev and crbug.com TODOs
<https://pwrev.dev/226474>`__
* `Expose name of Bazel executable
<https://pwrev.dev/226378>`__
(issue `#355438774 <https://pwbug.dev/355438774>`__)
pw_router
---------
* `Add missing includes
<https://pwrev.dev/227331>`__
(issue `#356667663 <https://pwbug.dev/356667663>`__)
pw_rpc
------
* `Fix TypeScript client streaming return type
<https://pwrev.dev/226717>`__
* `Add yield mode constraint_setting
<https://pwrev.dev/226551>`__
(issue `#345199579 <https://pwbug.dev/345199579>`__)
pw_rust
-------
The new ``pw_rust_USE_STD`` toolchain configuration option lets you control
whether the "std" feature should be used when building executables.
* `Add no_std build to basic_executable
<https://pwrev.dev/211993>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
* `Rename host_executable
<https://pwrev.dev/211992>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
pw_spi_mcuxpresso
-----------------
* `Add SPI_RxError() and SPI_TxError()
<https://pwrev.dev/226992>`__
pw_status
---------
``PW_STATUS_CFG_CHECK_IF_USED`` now defaults to ``true`` in Bazel projects,
meaning that ``pw::Status`` objects returned from function calls must be used or
else a compilation error is raised. See :ref:`module-pw_status-reference-unused`.
* `In Bazel, make Status nodiscard
<https://pwrev.dev/227411>`__
(issue `#357090965 <https://pwbug.dev/357090965>`__)
* `Don't silently discard status returns
<https://pwrev.dev/227277>`__
(issue `#357090965 <https://pwbug.dev/357090965>`__)
pw_symbolizer
-------------
* `Add missing runfiles dep
<https://pwrev.dev/226719>`__
(issue `#355527449 <https://pwbug.dev/355527449>`__)
* `Get llvm-symbolizer path from Bazel
<https://pwrev.dev/226254>`__
(issue `#355527449 <https://pwbug.dev/355527449>`__)
pw_system
---------
The ``pw_system`` console now lets you control host log and device log levels
separately via the new ``--host-log-level`` and ``--device-log-level``
arguments. The new ``echo()``, ``reboot()``, and ``crash()`` methods of
``pw_system.device.Device`` make it easier to access these common
operations. Crash snapshots are now saved to ``/tmp`` (``C:\\TEMP`` on Windows)
by default. Crash detection logs are now printed across multiple lines to make
them easier to spot.
* `Separate host and device console log levels
<https://pwrev.dev/227599>`__
* `Don't use implementation_deps
<https://pwrev.dev/226977>`__
(issues `#304374970 <https://pwbug.dev/304374970>`__,
`#356667663 <https://pwbug.dev/356667663>`__)
* `Add console device aliases for common RPCs
<https://pwrev.dev/226476>`__
* `Save snapshots to /tmp
<https://pwrev.dev/226392>`__
* `Make crash detection logs louder
<https://pwrev.dev/226373>`__
pw_tokenizer
------------
* `decode_optionally_tokenized without a Detokenizer
<https://pwrev.dev/226727>`__
pw_toolchain
------------
* `Clang support for Arm Cortex-M33
<https://pwrev.dev/228391>`__
(issue `#358108912 <https://pwbug.dev/358108912>`__)
* `Register Cortex-M7 toolchain
<https://pwrev.dev/227598>`__
* `Use \`crate_name\` for GN rust targets
<https://pwrev.dev/223391>`__
* `proc_macro GN cross compile
<https://pwrev.dev/215011>`__
* `Rustc cross compile to qemu-clang
<https://pwrev.dev/211994>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
* `Expose a symlink to clangd
<https://pwrev.dev/226262>`__
(issue `#355655415 <https://pwbug.dev/355655415>`__)
pw_transfer
-----------
* `Add a delay after opening a stream to delay transfer start
<https://pwrev.dev/225734>`__
(issue `#355249134 <https://pwbug.dev/355249134>`__)
* `Use initial timeout when resending start chunks
<https://pwrev.dev/226452>`__
pw_web
------
The log viewer now defaults to using line wrapping in table cells. The new
``logViews`` property makes it easier to customize each individual log view.
The ``severity`` field for controlling what types of logs to display has
been renamed to ``level``.
* `Add resize handler to message col
<https://pwrev.dev/221433>`__
(issue `#351901512 <https://pwbug.dev/351901512>`__)
* `Change word-wrap to default true and save to state
<https://pwrev.dev/226730>`__
(issue `#354283022 <https://pwbug.dev/354283022>`__)
* `NPM version bump to 0.0.22
<https://pwrev.dev/226726>`__
* `Show REPL message at every run
<https://pwrev.dev/226872>`__
* `NPM version bump to 0.0.21
<https://pwrev.dev/226713>`__
* `Enable custom titles, log-view access
<https://pwrev.dev/226771>`__
(issue `#355272099 <https://pwbug.dev/355272099>`__)
* `Change severity to level
<https://pwrev.dev/225573>`__
(issue `#354282161 <https://pwbug.dev/354282161>`__)
* `Replace column menu with MWC components
<https://pwrev.dev/226151>`__
(issues `#354712931 <https://pwbug.dev/354712931>`__,
`#342452087 <https://pwbug.dev/342452087>`__)
Docs
====
The new :ref:`Tour of Pigweed <showcase-sense>` is a hands-on, guided
walkthrough of many key Pigweed features working together in a medium-complexity
application.
* `Start Sense tutorial
<https://pwrev.dev/220311>`__
* `Fix some bad links in the changelog
<https://pwrev.dev/226811>`__
* `Update changelog
<https://pwrev.dev/226251>`__
Rolls
=====
* `gn
<https://pwrev.dev/227612>`__
* `fuchsia_infra 119 commits
<https://pwrev.dev/227476>`__
* `cmake
<https://pwrev.dev/227289>`__
* `rust
<https://pwrev.dev/227287>`__
* `Clang
<https://pwrev.dev/226725>`__
(issue `#356689444 <https://pwbug.dev/356689444>`__)
* `bazel_skylib
<https://pwrev.dev/226979>`__
* `rust
<https://pwrev.dev/226257>`__
Third-party software
====================
Emboss
------
* `Append public_deps in GN template
<https://pwrev.dev/227062>`__
ICU
---
* `Remove ICU
<https://pwrev.dev/228234>`__
STM32Cube
---------
* `bzlmod-friendly changes
<https://pwrev.dev/226479>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
Miscellaneous
-------------
* `Run 'pw format --fix'
<https://pwrev.dev/227186>`__
------------
Jul 25, 2024
------------
Highlights (Jul 12, 2024 to Jul 25, 2024):
* **Extensive Bazel support in the Pigweed extension for VS Code**:
See :ref:`docs-changelog-20240725-pw_ide` for the full story.
* **Bazel module support**: Upstream Pigweed is now usable as a `Bazel
module <https://bazel.build/external/module>`_ dependency.
* **Trapping backend for pw_assert**: :ref:`module-pw_assert_trap` is a
new backend for :ref:`module-pw_assert` that calls ``__builtin_trap()``
when an assert is triggered.
* **Crash handling in async pw_system**: Crash snapshots can be downloaded
from ``pw_console`` by calling ``device.get_crash_snapshots()`` in the
REPL.
Build systems
=============
Bazel
-----
Toolchain registration moved from ``WORKSPACE`` to ``MODULE.bazel``, making
it possible for downstream projects to use upstream Pigweed's toolchains
directly. Pigweed is now usable as a Bazel module dependency. Pigweed now
provides an example ``.bazelrc`` at ``//pw_build/pigweed.bazelrc`` that
downstream users can copy into their own projects.
* `Remove @pigweed from bzl files
<https://pwrev.dev/226007>`__
(issue `#352389854 <https://pwbug.dev/352389854>`__)
* `Remove stray @pigweed in load statement
<https://pwrev.dev/226006>`__
(issue `#352389854 <https://pwbug.dev/352389854>`__)
* `Move toolchain registration to MODULE.bazel
<https://pwrev.dev/225471>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Enable bzlmod
<https://pwrev.dev/211362>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Remove sanitizers from default program
<https://pwrev.dev/223572>`__
(issue `#301487567 <https://pwbug.dev/301487567>`__)
* `Modernize pip deps style (2)
<https://pwrev.dev/224316>`__
* `Organize and document required flags
<https://pwrev.dev/223817>`__
(issue `#353750350 <https://pwbug.dev/353750350>`__)
* `Use Python toolchain in custom rules
<https://pwrev.dev/224298>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Use Python toolchain in custom rules
<https://pwrev.dev/224272>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Use Python toolchain in custom rules
<https://pwrev.dev/224272>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Modernize pip deps style
<https://pwrev.dev/223871>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Create separate "sanitizers" CI program
<https://pwrev.dev/223595>`__
(issue `#301487567 <https://pwbug.dev/301487567>`__)
* `Run under tsan, ubsan in presubmit
<https://pwrev.dev/223631>`__
(issue `#301487567 <https://pwbug.dev/301487567>`__)
* `Run tests with asan in CQ
<https://pwrev.dev/222792>`__
(issue `#301487567 <https://pwbug.dev/301487567>`__)
Docs
====
The fonts on ``pigweed.dev`` have been updated.
* `Prefer "change" to Google-specific "CL"
<https://pwrev.dev/226004>`__
* `Minor changelog update
<https://pwrev.dev/224271>`__
* `Update pigweed.dev fonts
<https://pwrev.dev/223591>`__
(issue `#353530954 <https://pwbug.dev/353530954>`__)
* `Minor updates
<https://pwrev.dev/223571>`__
* `Update changelog
<https://pwrev.dev/222831>`__
Modules
=======
pw_assert_trap
--------------
:ref:`module-pw_assert_trap` is a new backend for :ref:`module-pw_assert`
that calls ``__builtin_trap()`` when an assert is triggered.
* `Add a new assert backend which traps on assert
<https://pwrev.dev/220135>`__
(issues `#351888988 <https://pwbug.dev/https://pwbug.dev/351888988>`__,
`#351886597 <https://pwbug.dev/https://pwbug.dev/351886597>`__)
pw_async2
---------
The new :cpp:class:`pw::async2::CoroOrElseTask` class lets you run a coroutine
in a task and invokes a handler function on error. The new
:cpp:func:`pw::async2::Task::IsRegistered` method checks if a task is
currently registered with a dispatcher. The new
:cpp:func:`pw::async2::Coro::Empty()` method creates an empty, invalid
coroutine object. The new :cpp:func:`pw::async2::Task::Deregister` method
unlinks a task from a dispatcher and any associated waker values.
* `Fix minor doc issues
<https://pwrev.dev/226111>`__
* `Add CoroOrElseTask
<https://pwrev.dev/225778>`__
* `Add Task::IsRegistered
<https://pwrev.dev/225995>`__
* `Add Coro::Empty
<https://pwrev.dev/225993>`__
* `Add Task::Deregister
<https://pwrev.dev/225775>`__
pw_async2_epoll
---------------
* `Fix block on racing wakeups
<https://pwrev.dev/224291>`__
pw_bluetooth
------------
* `Generate emboss headers in Soong
<https://pwrev.dev/225152>`__
(issue `#352364622 <https://pwbug.dev/352364622>`__)
* `Add generic HCI command definition
<https://pwrev.dev/224931>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
pw_bluetooth_proxy
------------------
* `Create Soong library for pw_bluetooth_proxy
<https://pwrev.dev/225153>`__
(issue `#352393966 <https://pwbug.dev/352393966>`__)
* `Update emboss deps
<https://pwrev.dev/224991>`__
* `Do not pass on NOCP events without credits
<https://pwrev.dev/224434>`__
(issue `#353546115 <https://pwbug.dev/353546115>`__)
* `Have functions handle passing on the packet
<https://pwrev.dev/224433>`__
(issue `#353546115 <https://pwbug.dev/353546115>`__)
* `Update tests to verify number of sent packets
<https://pwrev.dev/224300>`__
* `Remove debugging log
<https://pwrev.dev/224032>`__
(issue `#353546115 <https://pwbug.dev/353546115>`__)
pw_bluetooth_sapphire
---------------------
The latest ``pw_bluetooth_sapphire`` commits were brought
into Pigweed from the Fuchsia repository.
* `Reduce scope of security_manager
<https://pwrev.dev/225036>`__
(issue `#337315598 <https://pwbug.dev/337315598>`__)
* `Cleanup BrEdrConnectionManager test file
<https://pwrev.dev/225035>`__
* `Fix integer conversion warnings
<https://pwrev.dev/225034>`__
(issue `#354057871 <https://pwbug.dev/354057871>`__)
* `Cleanup WritePageScanType into shared test file
<https://pwrev.dev/225033>`__
* `Add missing optional include
<https://pwrev.dev/225051>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Remove unused method
<https://pwrev.dev/224043>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove variant from LE SendCommands
<https://pwrev.dev/224042>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove CommandPacketVariant
<https://pwrev.dev/224041>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove variant from QueueCommand
<https://pwrev.dev/224040>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove variant from QueueLeAsyncCommand
<https://pwrev.dev/224112>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Create IsoDataChannel
<https://pwrev.dev/224039>`__
(issue `#311639040 <https://pwbug.dev/311639040>`__)
* `Check legacy adv for rand addr in FakeController
<https://pwrev.dev/224038>`__
(issue `#42161900 <https://pwbug.dev/42161900>`__)
* `Use platform-independent format strings
<https://pwrev.dev/224096>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Processing of CIS Established event
<https://pwrev.dev/224037>`__
(issue `#311639432 <https://pwbug.dev/311639432>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/224036>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Cleanup WritePageScanActivity
<https://pwrev.dev/224095>`__
* `Cleanup into shared test file
<https://pwrev.dev/224035>`__
* `Cleanup WriteLocalNameResponse to shared file
<https://pwrev.dev/224094>`__
* `Fix camel case for CIS acronym
<https://pwrev.dev/224034>`__
* `Cleanup Inquiry command packets into shared file
<https://pwrev.dev/224033>`__
* `Implement AcceptCis()
<https://pwrev.dev/224093>`__
(issue `#311639432 <https://pwbug.dev/311639432>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221311>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221250>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Reorganize test_packets.h/.cc files
<https://pwrev.dev/221249>`__
* `Cleanup WriteInquiryScanActivity packets
<https://pwrev.dev/221266>`__
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221265>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221264>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221248>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Remove unneeded #include
<https://pwrev.dev/221262>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221261>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221247>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221246>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221245>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Rename link_initiated to outgoing_connection
<https://pwrev.dev/221244>`__
* `Cleanup WriteScanEnable packets into shared file
<https://pwrev.dev/221243>`__
* `Cleanup ReadScanEnable packets into shared file
<https://pwrev.dev/221260>`__
* `Remove alias for BrEdrConnectionRequest
<https://pwrev.dev/221242>`__
* `BrEdrConnectionRequest create HCI connection req
<https://pwrev.dev/221241>`__
* `Add connection role to fake controller
<https://pwrev.dev/221258>`__
(issue `#311639432 <https://pwbug.dev/311639432>`__)
* `Remove double std::move in PairingStateManager
<https://pwrev.dev/221238>`__
* `Fix BrEdrDynamicChannel crash
<https://pwrev.dev/221257>`__
(issue `#42076625 <https://pwbug.dev/42076625>`__)
* `Cleanup BrEdrConnectionRequest and Manager
<https://pwrev.dev/221237>`__
* `Implement IsoStreamServer
<https://pwrev.dev/221256>`__
(issue `#311639275 <https://pwbug.dev/311639275>`__)
* `Modernize fuchsia.hardware.bluetooth.Peer API
<https://pwrev.dev/221255>`__
(issue `#330591131 <https://pwbug.dev/330591131>`__)
* `Rename to secure_simple_pairing_state
<https://pwrev.dev/221236>`__
(issue `#342150626 <https://pwbug.dev/342150626>`__)
* `Use weak hci::BrEdrConnection pointer
<https://pwrev.dev/221253>`__
* `Create and use PairingStateManager class
<https://pwrev.dev/221252>`__
(issues `#342150626 <https://pwbug.dev/342150626>`__,
`#42173830 <https://pwbug.dev/42173830>`__)
* `Implement GetCodecLocalDelayRange
<https://pwrev.dev/221251>`__
(issue `#311639690 <https://pwbug.dev/311639690>`__)
* `Add Bazel rules for FIDL layer
<https://pwrev.dev/221190>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
* `Refactor ScoConnection
<https://pwrev.dev/221189>`__
(issue `#330590954 <https://pwbug.dev/330590954>`__)
* `Fix max connection event length value
<https://pwrev.dev/221188>`__
(issue `#323255182 <https://pwbug.dev/323255182>`__)
* `Add AdvertisingData.ToString
<https://pwrev.dev/221187>`__
(issue `#42157647 <https://pwbug.dev/42157647>`__)
* `Make UUID string parsing optional
<https://pwrev.dev/221234>`__
(issue `#339726884 <https://pwbug.dev/339726884>`__)
* `Add Adapter::GetSupportedDelayRange
<https://pwrev.dev/221233>`__
(issue `#311639690 <https://pwbug.dev/311639690>`__)
* `Clean up legacy advertising report parsing API
<https://pwrev.dev/221185>`__
(issue `#308500308 <https://pwbug.dev/308500308>`__)
* `Add missing climits include
<https://pwrev.dev/221183>`__
(issue `#338408169 <https://pwbug.dev/338408169>`__)
* `Add Emboss support to SendCommand completion
<https://pwrev.dev/221182>`__
(issue `#311639690 <https://pwbug.dev/311639690>`__)
* `Improve naming of android namespace aliases
<https://pwrev.dev/221232>`__
(issue `#335491380 <https://pwbug.dev/335491380>`__)
* `Migrate emboss aliases to new names
<https://pwrev.dev/221181>`__
(issue `#338068316 <https://pwbug.dev/338068316>`__)
* `Add tests for LE Read Max. Adv. Data Length
<https://pwrev.dev/221180>`__
(issue `#338058140 <https://pwbug.dev/338058140>`__)
* `Ensure command is supported before issuing it
<https://pwrev.dev/221178>`__
(issue `#338058140 <https://pwbug.dev/338058140>`__)
* `Use duration_cast for constants
<https://pwrev.dev/221029>`__
(issue `#337928450 <https://pwbug.dev/337928450>`__)
* `Implement extended adv. pdus with fragmentation
<https://pwrev.dev/221177>`__
(issue `#312898345 <https://pwbug.dev/312898345>`__,
`#309013696 <https://pwbug.dev/309013696>`__)
* `Use \`ull\` constants for enums
<https://pwrev.dev/221028>`__
(issue `#337928450 <https://pwbug.dev/337928450>`__)
* `Update semantics of \`bredr.Advertise\`
<https://pwrev.dev/221176>`__
(issues `#330590954 <https://pwbug.dev/330590954>`__,
`#327758656 <https://pwbug.dev/327758656>`__)
* `Add the credit-based flow control RxEngine
<https://pwrev.dev/221175>`__
* `Migrate LEAdvertisingReportSubevent to Emboss
<https://pwrev.dev/221174>`__
(issue `#86811 <https://pwbug.dev/86811>`__)
* `Lenient LEGetVendorCapabilitiesCommandComplete
<https://pwrev.dev/221027>`__
(issues `#337947318 <https://pwbug.dev/337947318>`__,
`#332924521 <https://pwbug.dev/332924521>`__,
`#332924195 <https://pwbug.dev/332924195>`__)
* `Migrate FIDL to bt::testing::TestLoopFixture
<https://pwrev.dev/221172>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
* `Fix all available lint errors
<https://pwrev.dev/221171>`__
* `Move LinkKey simple constructors to the h file
<https://pwrev.dev/221025>`__
* `Add operator!= for LinkKey
<https://pwrev.dev/221049>`__
* `Add extra diagnostics
<https://pwrev.dev/221048>`__
* `Improve management of advertising modes
<https://pwrev.dev/221045>`__
(issue `#309013696 <https://pwbug.dev/309013696>`__)
* `Add Bazel rules for socket library
<https://pwrev.dev/221024>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
* `Update LowEnergyAdvertiser to use std::vector
<https://pwrev.dev/221023>`__
(issue `#312898345 <https://pwbug.dev/312898345>`__,
`#309013696 <https://pwbug.dev/309013696>`__)
* `Add more values to LEEventMask
<https://pwrev.dev/221022>`__
* `Pass hci::AdvertisingIntervalRange as const
<https://pwrev.dev/221044>`__
* `Shorten pw::bluetooth::emboss to pwemb
<https://pwrev.dev/221021>`__
* `Pass extended_pdu booleans through the stack
<https://pwrev.dev/221043>`__
(issue `#312898345 <https://pwbug.dev/312898345>`__,
`#309013696 <https://pwbug.dev/309013696>`__)
* `Update AdvertisingHandleMap for extended PDUs
<https://pwrev.dev/221020>`__
(issue `#312898345 <https://pwbug.dev/312898345>`__,
`#309013696 <https://pwbug.dev/309013696>`__)
* `Update missing header
<https://pwrev.dev/221019>`__
(issue `#331673100 <https://pwbug.dev/331673100>`__)
* `Add the credit-based flow control TxEngine
<https://pwrev.dev/221017>`__
* `Prevent protected member access in TxEngine
<https://pwrev.dev/221016>`__
* `Add Bazel tests
<https://pwrev.dev/221015>`__
* `Fix conversions from iterators to raw pointers
<https://pwrev.dev/221014>`__
(issue `#328282937 <https://pwbug.dev/328282937>`__)
* `Add bt-host Bazel tests
<https://pwrev.dev/221042>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
* `Low energy advertiser general cleanup
<https://pwrev.dev/221041>`__
* `Use using aliases for Emboss type references
<https://pwrev.dev/221012>`__
* `Add Bazel build files
<https://pwrev.dev/221036>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
pw_build
--------
``pw_py_binary`` is a new wrapper for ``py_binary`` that provides some
defaults, such as marking all Python binaries as incompatible with MCUs.
* `Introduce pw_py_binary
<https://pwrev.dev/224296>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Use incompatible_with_mcu in pw_py_test
<https://pwrev.dev/224294>`__
pw_channel
----------
The new :cpp:class:`pw::channel::StreamChannel` adapter makes it easier for
a channel to interact with an underlying reader and writer stream.
* `Add StreamChannel adapter
<https://pwrev.dev/225651>`__
pw_chrono_freertos
------------------
* `Work around no std::unique_lock in baremetal libc++
<https://pwrev.dev/223636>`__
(issue `#353601672 <https://pwbug.dev/353601672>`__)
pw_chrono_stl
-------------
* `Consolidate SystemTimer into a single thread
<https://pwrev.dev/224295>`__
pw_console
----------
Typing out RPCs to invoke from the web console REPL should now autocomplete
as expected. The web console log viewer now has a default config, defined
at ``//pw_console/py/pw_console/html/defaultconfig.json``. A new boolean
config option, ``recolor_log_lines_to_match_level``, has been added to
allow users to control whether log messages should be restyled to match
their severity level.
* `Fix RPC autocompletion in web kernel
<https://pwrev.dev/225935>`__
* `Set a default config for web console's log viewer
<https://pwrev.dev/225751>`__
* `Pass rpc completions to web_kernel
<https://pwrev.dev/224311>`__
* `Add config option for log message recoloring
<https://pwrev.dev/224475>`__
* `Default WebHandler.kernel_params to an empty dictionary
<https://pwrev.dev/223932>`__
* `Handle web logging in a separate thread
<https://pwrev.dev/223691>`__
* `Cleanup web kernel on page close
<https://pwrev.dev/223178>`__
* `Replace placeholder page with real web console
<https://pwrev.dev/223155>`__
pw_cpu_exception_cortex_m
-------------------------
The new ``PW_CPU_EXCEPTION_CORTEX_M_CRASH_ANALYSIS_INCLUDE_PC_LR``
option lets you control whether PC and LR register values are included
in the ``AnalyzeCpuStateAndCrash()`` analysis.
* `Make PC LR optional
<https://pwrev.dev/221731>`__
* `Fix assembly
<https://pwrev.dev/223131>`__
(issue `#261603269 <https://pwbug.dev/261603269>`__)
* `Temporarily disable tests on Cortex-M33
<https://pwrev.dev/223594>`__
(issues `#353533678 <https://pwbug.dev/353533678>`__,
`#323215726 <https://pwbug.dev/323215726>`__)
pw_crypto
---------
* `Don't build micro-ecc
<https://pwrev.dev/223152>`__
(issue `#261603269 <https://pwbug.dev/261603269>`__)
pw_env_setup
------------
* `Add luci-cv to environment
<https://pwrev.dev/222811>`__
pw_grpc
-------
* `Fix shadowed variable warning
<https://pwrev.dev/225931>`__
.. _docs-changelog-20240725-pw_ide:
pw_ide
------
General updates: ``pw_ide`` now detects Bazel projects based on the presence
of ``MODULE.bazel`` files. The :ref:`module-pw_ide` docs have been revamped.
Shared VS Code settings can now be stored in ``.vscode/settings.shared.json``.
The extension no longer attempts to infer the working directory if a project
root isn't explicitly provided; instead it prompts users to manually specify
the project root. The VS Code extension now has better support for Fish
terminals.
VS Code extension updates related to code intelligence in Bazel-based projects:
The new ``Pigweed: Select Code Analysis Target`` command controls which Bazel
target in your project to use for code intelligence. The new ``Pigweed: Refresh
Compile Commands`` command lets you manually refresh code intelligence data.
There's also a ``Pigweed: Refresh Compile Commands and Select Code Analysis
Target`` that combines these two steps. In the VS Code status bar there's a new
icon to indicate whether ``clangd`` code intelligence is on or off. Code
intelligence data compilation output is now streamed so that you can monitor
the progress of the tool in real-time. The easiest way to access these logs is
by running the new ``Pigweed: Open Output Panel`` command. The extension now
supports a ``.clangd.shared`` file that can be used to control project-wide
``clangd`` settings.
VS Code extension updates related to other Bazel tools: The extension now
bundles Bazelisk and Buildifier. These bundled versions get updated when the
extension itself updates. The extension recommends users to use these bundled
versions by default. You can use the new ``Activate Bazelisk in Terminal``
command to manually specify which Bazelisk version to use.
* `Support bzlmod projects
<https://pwrev.dev/225913>`__
* `Block on spawned refresh process
<https://pwrev.dev/225731>`__
* `Status bar item for inactive file disabling
<https://pwrev.dev/225392>`__
* `Support disabling clangd for inactive files
<https://pwrev.dev/224893>`__
* `Update vendored tools on extension update
<https://pwrev.dev/225934>`__
* `Use vendored Bazelisk in recommended config
<https://pwrev.dev/225933>`__
* `Improve VSC settings interface
<https://pwrev.dev/225932>`__
* `Add shared settings management
<https://pwrev.dev/224573>`__
* `Associate target groups with active files
<https://pwrev.dev/222735>`__
* `Don't unnecessarily infer working dir
<https://pwrev.dev/224572>`__
* `VSC extension 1.1.1 release
<https://pwrev.dev/224897>`__
* `Add missing command stubs
<https://pwrev.dev/224892>`__
* `Stream refresh compile commands output
<https://pwrev.dev/224313>`__
* `Update dev build configs
<https://pwrev.dev/224312>`__
* `Add fish to Bazelisk+VSC terminal
<https://pwrev.dev/224292>`__
* `VSC extension 1.1.0 release
<https://pwrev.dev/224171>`__
* `Patch Bazelisk into VSC terminal
<https://pwrev.dev/223823>`__
* `VSC extension 1.0.0 release
<https://pwrev.dev/223911>`__
* `Revise docs
<https://pwrev.dev/223157>`__
* `Update VSC extension packaging
<https://pwrev.dev/223634>`__
* `Add proto extension as dependency
<https://pwrev.dev/223156>`__
* `Fix VSC troubleshooting links
<https://pwrev.dev/223576>`__
* `Update compile commands tool version
<https://pwrev.dev/222575>`__
* `Don't show root comp DB dir as target
<https://pwrev.dev/223633>`__
* `VSC status bar item for target selection
<https://pwrev.dev/220134>`__
* `Add IDE support refresh manager
<https://pwrev.dev/219973>`__
* `Integrate Bazelisk in VSC
<https://pwrev.dev/219971>`__
* `Bazel comp DB management in VSC
<https://pwrev.dev/218832>`__
* `VSC/JS project management
<https://pwrev.dev/222734>`__
* `Create VSC settings interface
<https://pwrev.dev/222733>`__
* `Use VSC output panel for logging
<https://pwrev.dev/222732>`__
* `VSC extension cleanup
<https://pwrev.dev/222731>`__
pw_kvs
------
* `Missing <string> includes
<https://pwrev.dev/223352>`__
(issue `#298822102 <https://pwbug.dev/298822102>`__)
* `Update bazel config
<https://pwrev.dev/223171>`__
pw_libcxx
---------
``pw_libcxx`` now has support for the ``new`` operator.
* `Actually implement operator delete
<https://pwrev.dev/223692>`__
* `Add operator new
<https://pwrev.dev/223632>`__
pw_log
------
* `Log decoder timestamp cleanup
<https://pwrev.dev/223271>`__
* `Fix log_decoder timestamp formatting
<https://pwrev.dev/222771>`__
(issue `#351905996 <https://pwbug.dev/351905996>`__)
pw_multibuf
-----------
* `Add more context on chunk regions
<https://pwrev.dev/222431>`__
pw_presubmit
------------
``pw_presubmit.inclusive_language.check_file`` now accepts an optional
``check_path`` argument which controls whether to check the path for
non-inclusive language.
* `Add attributes to docstring
<https://pwrev.dev/223095>`__
* `Allow disabling checks in unit tests
<https://pwrev.dev/223577>`__
(issue `#352515663 <https://pwbug.dev/352515663>`__)
* `No copyright check in .vscodeignore
<https://pwrev.dev/223575>`__
* `Skip commit message check for merges
<https://pwrev.dev/223574>`__
* `Add test for inclusive language check
<https://pwrev.dev/222311>`__
(issue `#352515663 <https://pwbug.dev/352515663>`__)
pw_result
---------
* `Fix docs.rst example
<https://pwrev.dev/223251>`__
* `Add missing header
<https://pwrev.dev/223176>`__
(issue `#261603269 <https://pwbug.dev/261603269>`__)
* `Missing <string> includes
<https://pwrev.dev/223352>`__
(issue `#298822102 <https://pwbug.dev/298822102>`__)
pw_rpc
------
Soong proto building is now more flexible; genrules can now have protos from
different sources. ``.option`` files can now be used in Soong genrules sources.
* `Build proto path arg list for Soong
<https://pwrev.dev/225031>`__
* `Pass .proto files to compiler in Soong
<https://pwrev.dev/222737>`__
pw_rpc_transport
----------------
* `Don't write empty header in StreamRpcFrameSender
<https://pwrev.dev/220211>`__
pw_sensor
---------
* `Add units to sensor::channels final output
<https://pwrev.dev/224711>`__
(issue `#293466822 <https://pwbug.dev/293466822>`__)
* `Implement attributes, channels, triggers, and units
<https://pwrev.dev/204199>`__
(issue `#293466822 <https://pwbug.dev/293466822>`__)
pw_stream
---------
* `Update bazel config
<https://pwrev.dev/223171>`__
pw_stream_uart_mcuxpresso
-------------------------
* `Check init state in Deinit()
<https://pwrev.dev/224031>`__
pw_string
---------
The new :cpp:func:`pw::utf8::ReadCodePoint`,
:cpp:func:`pw::utf8::EncodeCodePoint`, and
:cpp:func:`pw::utf8::WriteCodePoint` methods provide basic UTF-8 decoding
and encoding.
* `Add utf_codecs
<https://pwrev.dev/222738>`__
(issue `#337305285 <https://pwbug.dev/337305285>`__)
* `Disable wchar test for libcpp
<https://pwrev.dev/223581>`__
(issue `#353604434 <https://pwbug.dev/353604434>`__)
pw_sync
-------
The condition variable interface has been deprecated. See
:ref:`module-pw_sync-condition-variables`.
* `Document that CV should not be used
<https://pwrev.dev/162771>`__
(issue `#294395229 <https://pwbug.dev/294395229>`__)
pw_system
---------
Async ``pw_system`` now supports a crash handling service. When a crash
snapshot is available, ``pw_system`` now logs instructions on how to download
it. The ``pw_system`` console API now accepts an optional
``device_connection`` object, allowing for more flexible connection
management. Device class creation has been refactored to make it easier for
Python scripts to setup connections to devices in the same way that the
``pw_system`` console does. As part of this refactor the ``--output``
and ``--proto-globs`` flags were removed from the ``pw_system`` console.
* `Enable crash handler in async system
<https://pwrev.dev/225911>`__
* `Improve message when crash snapshot exists
<https://pwrev.dev/225851>`__
(issue `#354767156 <https://pwbug.dev/354767156>`__)
* `Add crash handling and device service
<https://pwrev.dev/224299>`__
(issue `#350807773 <https://pwbug.dev/350807773>`__)
* `Make pw_system_console work for rp2040
<https://pwrev.dev/224714>`__
(issue `#354203490 <https://pwbug.dev/354203490>`__)
* `Console device connection override
<https://pwrev.dev/223173>`__
* `Add synchronization to pw::System allocator
<https://pwrev.dev/222794>`__
(issues `#352592037 <https://pwbug.dev/352592037>`__,
`#352818465 <https://pwbug.dev/352818465>`__)
* `Reusable DeviceConnection functionality
<https://pwrev.dev/221752>`__
pw_target_runner
----------------
* `Increase maximum message size for binaries
<https://pwrev.dev/222736>`__
pw_thread
---------
The new ``pw::thread::TestThreadContext()`` interface makes it easier to
create threads for unit tests.
* `Add TestThreadContext for FreeRTOS
<https://pwrev.dev/222671>`__
pw_tokenizer
------------
* `Missing <string> includes
<https://pwrev.dev/223352>`__
(issue `#298822102 <https://pwbug.dev/298822102>`__)
pw_toolchain
------------
The new ``minimum_cxx_20()`` Bazel helper can be used with
``target_compatible_with`` attributes to express that a target
requires C++20 or newer.
* `Select Bazel C++ version with config_setting
<https://pwrev.dev/221453>`__
(issue `#352379527 <https://pwbug.dev/352379527>`__)
* `Hide toolchain path behind variable
<https://pwrev.dev/224851>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Add linux_sysroot.bzl
<https://pwrev.dev/223578>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Host clang toolchain for Bazel
<https://pwrev.dev/223172>`__
* `Pico Bazel build
<https://pwrev.dev/223312>`__
(issue `#261603269 <https://pwbug.dev/261603269>`__)
* `Add tsan support for host builds
<https://pwrev.dev/222891>`__
(issue `#301487567 <https://pwbug.dev/301487567>`__)
* `Add ubsan support for host builds
<https://pwrev.dev/222791>`__
pw_trace_tokenized
------------------
* `Fix bazel build
<https://pwrev.dev/223093>`__
(issues `#260641850 <https://pwbug.dev/issues/260641850>`__,
`#258071921 <https://pwbug.dev/issues/258071921>`__)
pw_transfer
-----------
The new ``PW_TRANSFER_EVENT_PROCESSING_TIMEOUT_MS`` lets you control how
long incoming transfer events should block on the previous event being
processed before dropping the new event.
* `Don't block indefinitely on events
<https://pwrev.dev/224693>`__
* `Fix initial timeout and missing start chunk
<https://pwrev.dev/222511>`__
pw_unit_test
------------
* `Removed duplicate from forwarded variables list in pw_test
<https://pwrev.dev/223431>`__
* `Update logging_main compatibility
<https://pwrev.dev/223579>`__
* `Missing <string> includes
<https://pwrev.dev/223352>`__
(issue `#298822102 <https://pwbug.dev/298822102>`__)
* `Introduce googtest_platform
<https://pwrev.dev/222812>`__
(issue `#352808542 <https://pwbug.dev/352808542>`__)
pw_web
------
The REPL in the web console now provides a welcome message that lists commonly
used keyboard shortcuts. The log viewer UI is now more dense. The REPL is now
positioned on the left by default. Pressing :kbd:`Shift+Enter` in the REPL
now goes to a new line rather than evaluating.
* `Add icon for info
<https://pwrev.dev/225413>`__
(issue `#354282161 <https://pwbug.dev/354282161>`__)
* `Fix keyboard shortcut in repl.rst
<https://pwrev.dev/226003>`__
* `Add repl intro message and title param
<https://pwrev.dev/225757>`__
(issue `#354283703 <https://pwbug.dev/354283703>`__)
* `Increase default log viewer density
<https://pwrev.dev/225671>`__
(issues `# 354282977 <https://pwbug.dev/ 354282977>`__,
`# 342451299 <https://pwbug.dev/ 342451299>`__)
* `Move REPL to left, reduce default division to 40%
<https://pwrev.dev/225755>`__
* `Fix bug in code editor to not eval empty snippet
<https://pwrev.dev/224315>`__
* `NPM version bump to 0.0.20
<https://pwrev.dev/223154>`__
* `Change repl keybinding to eval
<https://pwrev.dev/223174>`__
* `Bundle console.ts, fix log source handlers
<https://pwrev.dev/222534>`__
* `Save state on input change and adjust filter logs logic
<https://pwrev.dev/222774>`__
(issue `#235253336 <https://pwbug.dev/235253336>`__)
* `Add filter field buttons and placeholder
<https://pwrev.dev/222711>`__
Third-party software
====================
Emboss
------
Emboss was updated to v2024.0718.173957. Emboss build steps that involve
Python now use an optimized version of Python, resulting in a 15% speedup.
* `Disable using pw_python_action
<https://pwrev.dev/226009>`__
(issue `#354195492 <https://pwbug.dev/354195492>`__)
* `Update emboss repo to v2024.0718.173957
<https://pwrev.dev/224713>`__
(issue `#354195492 <https://pwbug.dev/354195492>`__)
* `Run python with optimization on
<https://pwrev.dev/224712>`__
(issue `#354195492 <https://pwbug.dev/354195492>`__)
* `Make emboss_runner_py Soong target
<https://pwrev.dev/225151>`__
(issue `#352364622 <https://pwbug.dev/352364622>`__)
* `Remove -Wno-format-invalid-specifier
<https://pwrev.dev/213660>`__
* `Update emboss repo to v2024.0716.040724
<https://pwrev.dev/223592>`__
(issue `#353533164 <https://pwbug.dev/353533164>`__)
Go
--
* `Create a Pigweed-wide go.mod file
<https://pwrev.dev/225011>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
Miscellaneous
=============
Rolls
-----
FreeRTOS was updated to version ``10.5.1.bcr.2``. CMake was bumped to version
``3@3.30.1.chromium.8``. Rust was updated to Git revision
``73a228116ae8c8ce73e309eee8c730ce90feac78``.
* `FreeRTOS for upstream
<https://pwrev.dev/226091>`__
(issue `#355203454 <https://pwbug.dev/355203454>`__)
* `FreeRTOS
<https://pwrev.dev/225791>`__
* `cmake
<https://pwrev.dev/225172>`__
* `rust
<https://pwrev.dev/225171>`__
* `rules_python
<https://pwrev.dev/224054>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Fuchsia SDK
<https://pwrev.dev/223593>`__
(issues `#258836641 <https://pwbug.dev/258836641>`__,
`#353749536 <https://pwbug.dev/353749536>`__)
* `310, 311
<https://pwrev.dev/222650>`__
Targets
=======
RP2040
------
* `Add pw_libcxx as dep for system_async_example
<https://pwrev.dev/223573>`__
* `Import statement fix
<https://pwrev.dev/225754>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Enhance on-device testing instructions
<https://pwrev.dev/225311>`__
* `Fix assert basic termination behavior
<https://pwrev.dev/223580>`__
------------
Jul 11, 2024
------------
Highlights (Jun 28, 2024 to Jul 11, 2024):
* **Bazel 8 pre-release**: Upstream Pigweed is now using a pre-release version
of Bazel 8, the first version to include platform-based flags.
* **ARMv6-M support**: :ref:`module-pw_cpu_exception_cortex_m` now supports
ARMv6-M cores.
* **Browser-based pw_system console**: The new ``--browser`` option lets
you start a ``pw_system`` console in a web browser rather than the default
Python-based terminal console.
* **Updated pw_rpc docs**: The :ref:`module-pw_rpc` docs
have been revamped to make getting started easier and to
provide more Bazel guidance.
Build systems
=============
Bazel
-----
Pigweed is now using version 8.0.0-pre.20240618.2 of Bazel, the first version
to include platform-based flags. Some backend collection targets are now being
provided as dictionaries to enable downstream projects to use the pattern
described in :ref:`docs-bazel-compatibility-facade-backend-dict`. The
``incompatible_with_mcu`` Bazel helper has been introduced to help express
whether a target is only compatible with platforms that have a full-featured
OS.
* `Run all tests with googletest backend in CI
<https://pwrev.dev/222532>`__
(issue `#352584464 <https://pwbug.dev/352584464>`__)
* `Add missing dependencies
<https://pwrev.dev/222572>`__
(issue `#352584464 <https://pwbug.dev/352584464>`__)
* `Don't propagate flags to exec config
<https://pwrev.dev/220812>`__
(issues `#234877642 <https://pwbug.dev/234877642>`__,
`#315871648 <https://pwbug.dev/315871648>`__)
* `Provide backend collections as dicts
<https://pwrev.dev/219911>`__
(issue `#344654805 <https://pwbug.dev/344654805>`__)
* `Roll out incompatible_with_mcu
<https://pwrev.dev/216852>`__
(issue `#348008794 <https://pwbug.dev/348008794>`__)
* `Introduce incompatible_with_mcu
<https://pwrev.dev/216851>`__
(issue `#348008794 <https://pwbug.dev/348008794>`__,
`#343481391 <https://pwbug.dev/343481391>`__)
* `Add back to CI some building targets
<https://pwrev.dev/218698>`__
(issue `#261603269 <https://pwbug.dev/261603269>`__)
Docs
====
* `Fix shortlink URL
<https://pwrev.dev/221751>`__
* `Add shortlink to pw_enviro draft
<https://pwrev.dev/221533>`__
* `Update changelog
<https://pwrev.dev/219131>`__
Modules
=======
pw_allocator
------------
A bug was fixed that caused builds to break when
``-Wmissing-template-arg-list-after-template-kw`` is turned on.
* `Remove unnecessary template
<https://pwrev.dev/220111>`__
pw_assert
---------
Downstream projects using Bazel now need to set the new backend label flags
``@pigweed//pw_assert:check_backend`` and
``@pigweed//pw_assert:check_backend_impl`` and include them in their link
deps.
* `Split up Bazel assert backend, part 2
<https://pwrev.dev/219791>`__
(issue `#350585010 <https://pwbug.dev/350585010>`__)
* `Split up Bazel assert backend, part 1
<https://pwrev.dev/219611>`__
(issue `#350585010 <https://pwbug.dev/350585010>`__)
pw_async2
---------
* `Add missing thread_stl dependency
<https://pwrev.dev/219291>`__
pw_async2_epoll
---------------
* `Use unordered_map; silence persistent warnings
<https://pwrev.dev/218860>`__
pw_async_basic
--------------
* `Fix size report build error
<https://pwrev.dev/219691>`__
(issue `#350780546 <https://pwbug.dev/350780546>`__)
pw_bluetooth
------------
* `Format emboss files
<https://pwrev.dev/219351>`__
pw_bluetooth_proxy
------------------
``pw::bluetooth::proxy::sendGattNotify()`` (lowercase first letter) has been
removed; use ``pw::bluetooth::proxy::SendGattNotify()`` (uppercase first
letter) instead. The new
``pw::bluetooth::proxy::GetNumSimultaneousAclSendsSupported()`` function
returns the max number of LE ACL sends that can be in-flight at one time.
The new ``pw::bluetooth::proxy::AclDataChannel::Reset()`` and
``pw::bluetooth::proxy::ProxyHost::Reset()`` methods let you reset the internal
state of those classes.
* `Delete "sendGattNotify"
<https://pwrev.dev/220951>`__
(issue `#350106534 <https://pwbug.dev/350106534>`__)
* `Include <optional> in proxy_host.h
<https://pwrev.dev/220657>`__
* `ProxyHost supports multiple sends
<https://pwrev.dev/220573>`__
(issues `#348680331 <https://pwbug.dev/348680331>`__,
`#326499764 <https://pwbug.dev/326499764>`__)
* `Remove unneeded PW_EXCLUSIVE_LOCKS_REQUIRED
<https://pwrev.dev/219417>`__
(issue `#350106534 <https://pwbug.dev/350106534>`__)
* `Soft transition to SendGattNotify
<https://pwrev.dev/219120>`__
(issue `#350106534 <https://pwbug.dev/350106534>`__)
* `Add ProxyHost/AclDataChannel::Reset()
<https://pwrev.dev/219119>`__
(issue `#350497803 <https://pwbug.dev/350497803>`__)
* `Dedup NOCP construction in tests
<https://pwrev.dev/219118>`__
* `Document which events are expected
<https://pwrev.dev/219353>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Adjust const for pw::span
<https://pwrev.dev/218877>`__
(issue `#326497489 <https://pwbug.dev/326497489>`__)
* `Remove use of <mutex>
<https://pwrev.dev/218893>`__
(issue `#350009505 <https://pwbug.dev/350009505>`__)
* `Prevent crash in GattNotifyTest
<https://pwrev.dev/218834>`__
pw_bluetooth_sapphire
---------------------
* `Remove modulo operator from asserts
<https://pwrev.dev/222233>`__
* `Add Bazel build files to lib/ packages
<https://pwrev.dev/222232>`__
* `Use pwemb namespace alias in FakeController
<https://pwrev.dev/221034>`__
* `Unmask LE Connection Complete
<https://pwrev.dev/221033>`__
* `Implement ExtendedLowEnergyConnector
<https://pwrev.dev/221032>`__
(issue `#305976440 <https://pwbug.dev/305976440>`__)
* `Enable bt-host component
<https://pwrev.dev/221011>`__
(issues `#303116559 <https://pwbug.dev/303116559>`__,
`# b/324109634 <https://pwbug.dev/ b/324109634>`__,
`#326079781 <https://pwbug.dev/326079781>`__,
`# b/325142183 <https://pwbug.dev/ b/325142183>`__)
* `Support ISO Channel FIDL Protocol in Drivers
<https://pwrev.dev/221267>`__
(issue `#328457492 <https://pwbug.dev/328457492>`__,
issue `# b/328459391 <https://pwbug.dev/ b/328459391>`__)
* `Add ISO support to controllers
<https://pwrev.dev/218992>`__
(issue `#311639690 <https://pwbug.dev/311639690>`__)
* `Tag integration test
<https://pwrev.dev/220991>`__
(issue `#344654806 <https://pwbug.dev/344654806>`__)
* `Implement ExtendedLowEnergyScanner
<https://pwrev.dev/218979>`__
(issue `#305975969 <https://pwbug.dev/305975969>`__)
* `Add packet filtering consts to vendor protocol
<https://pwrev.dev/218978>`__
* `Update LEAdvertisers to use EmbossCommandPacket
<https://pwrev.dev/218991>`__
(issue `#312896684 <https://pwbug.dev/312896684>`__)
* `Use Emboss for android vendor exts multi advert
<https://pwrev.dev/218977>`__
(issue `#312896673 <https://pwbug.dev/312896673>`__)
* `Use Emboss versions of a2dp offload structs
<https://pwrev.dev/218976>`__
* `Refactor LowEnergyScanResult to its own class
<https://pwrev.dev/218975>`__
* `Refactor TxEngine to allow queueing SDUs
<https://pwrev.dev/218915>`__
* `Add incoming CIS request handler
<https://pwrev.dev/218972>`__
* `Add IsoStreamManager class
<https://pwrev.dev/218971>`__
* `Add CIS events and commands
<https://pwrev.dev/218914>`__
(issue `#311639432 <https://pwbug.dev/311639432>`__)
* `Retrieve sleep clock accuracy for peers
<https://pwrev.dev/218913>`__
(issue `#311639272 <https://pwbug.dev/311639272>`__)
* `Fix LowEnergyScanner crash
<https://pwrev.dev/218974>`__
(issue `#323098126 <https://pwbug.dev/323098126>`__)
* `Remove unused include
<https://pwrev.dev/214677>`__
* `Add infrastructure for SCA operations
<https://pwrev.dev/214676>`__
(issue `#311639272 <https://pwbug.dev/311639272>`__)
* `Use Write instead of UncheckedWrite
<https://pwrev.dev/214675>`__
* `Remove now unnecessary use of std::optional
<https://pwrev.dev/214654>`__
* `Expose connection role to le handle
<https://pwrev.dev/214653>`__
(issue `#311639432 <https://pwbug.dev/311639432>`__)
* `Disambiguate comment
<https://pwrev.dev/214673>`__
* `Fix typo in comment
<https://pwrev.dev/214652>`__
pw_build
--------
The new macros in ``//pw_build:merge_flags.bzl`` help with using
platform-based flags.
* `Add flags_from_dict
<https://pwrev.dev/221691>`__
(issue `#301334234 <https://pwbug.dev/301334234>`__)
pw_cli
------
``pw_cli`` has increased support for letting users select from interactive
prompts. The RP2040 flasher utility uses the new interactive prompting
features to let users select which detected device to flash.
* `Interactive user index prompt
<https://pwrev.dev/220931>`__
pw_console
----------
* `Headless mode with web/ws server running
<https://pwrev.dev/215860>`__
pw_cpu_exception
----------------
* `Remove multiplexers
<https://pwrev.dev/219371>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_cpu_exception_cortex_m
-------------------------
``pw_cpu_exception_cortex_m`` now supports ARMv6-M cores.
* `Add armv6-m support
<https://pwrev.dev/219132>`__
(issues `#350747553 <https://pwbug.dev/https://pwbug.dev/350747553>`__,
`#350747562 <https://pwbug.dev/https://pwbug.dev/350747562>`__)
pw_digital_io_rp2040
--------------------
The new ``enable_pull_up`` and ``enable_pull_down`` fields in the
``pw::digital_io::Rp2040Config`` struct let you configure whether resistors
should be pulled up or down.
* `Add pull up/down resistors to Rp2040Config
<https://pwrev.dev/219731>`__
* `Remove manual tags
<https://pwrev.dev/219052>`__
(issue `#261603269 <https://pwbug.dev/261603269>`__)
pw_env_setup
------------
* `Use full paths for proj action imports
<https://pwrev.dev/222571>`__
pw_function
-----------
* `Dynamic allocation for upstream host
<https://pwrev.dev/221871>`__
pw_log_string
-------------
* `Require backend_impl to be set explicitly
<https://pwrev.dev/221293>`__
pw_malloc_freertos
------------------
* `Fix typo
<https://pwrev.dev/220751>`__
(issue `#351945325 <https://pwbug.dev/351945325>`__)
pw_presubmit
------------
* `Narrow copyright notice exclusions
<https://pwrev.dev/221532>`__
(issue `#347062591 <https://pwbug.dev/347062591>`__)
* `Add copyright notice to some test data
<https://pwrev.dev/221395>`__
(issue `#347062591 <https://pwbug.dev/347062591>`__)
* `Exclude test_data from bazel_lint
<https://pwrev.dev/221152>`__
* `Exclude files from copyright
<https://pwrev.dev/221151>`__
* `Don't automatically use exclusions
<https://pwrev.dev/216355>`__
(issue `#347274642 <https://pwbug.dev/347274642>`__)
pw_rpc
------
The :ref:`module-pw_rpc` docs have been revamped to make getting started
easier and to provide more Bazel guidance.
* `Expand comment for internal::ClientServerTestComment
<https://pwrev.dev/220574>`__
* `Update docs
<https://pwrev.dev/219392>`__
(issue `#349832019 <https://pwbug.dev/349832019>`__)
pw_stream_uart_mcuxpresso
-------------------------
* `Clean up dma stream comments
<https://pwrev.dev/222111>`__
pw_sys_io
---------
* `Remove multiplexer, constraints
<https://pwrev.dev/218736>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_sys_io_baremetal_stm32f429
-----------------------------
Bazel projects should now set the ``--@pigweed//pw_sys_io:backend``
label flag to ``@pigweed//pw_sys_io_baremetal_stm32f429`` and add the
``@pigweed//pw_sys_io_baremetal_stm32f429:compatible`` constraint to their
platform to indicate that the platform is compatible with
``pw_sys_io_baremetal_stm32f429``.
* `Add constraint
<https://pwrev.dev/218831>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_sys_io_stm32cube
-------------------
* `Remove target_compatible_with
<https://pwrev.dev/218704>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_system
---------
The new ``--browser`` option lets you start a browser-based ``pw_system``
console instead of a terminal-based one.Thread stack sizes for the new
async version of ``pw_system`` can now be configured with
``PW_SYSTEM_ASYNC_LOG_THREAD_STACK_SIZE_BYTES``,
``PW_SYSTEM_ASYNC_RPC_THREAD_STACK_SIZE_BYTES``,
``PW_SYSTEM_ASYNC_TRANSFER_THREAD_STACK_SIZE_BYTES``, and
``PW_SYSTEM_ASYNC_DISPATCHER_THREAD_STACK_SIZE_BYTES``. The new
``pw::system::AsyncCore::RunOnce()`` method provides a way to run a function
once on a separate thread. The ``--ipython`` option has been removed from the
``pw_system`` console. See :ref:`module-pw_console-embedding-ipython` for
guidance on how to embed IPython.
* `Add web console option
<https://pwrev.dev/221071>`__
* `Add missing work queue thread
<https://pwrev.dev/222372>`__
* `Clean up pw_system/threads.cc
<https://pwrev.dev/222371>`__
* `Configurable thread stack sizes
<https://pwrev.dev/221394>`__
* `RunOnce function for work queue functionality
<https://pwrev.dev/218954>`__
* `Remove IPython from pw_system console
<https://pwrev.dev/218882>`__
* `Organize pw_system:async build targets
<https://pwrev.dev/218737>`__
pw_thread
---------
* `Remove backend multiplexers
<https://pwrev.dev/218238>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_thread_stl
-------------
The ``pw::thread::Thread::native_handle()`` method now returns a pointer to
the underlying thread object instead of a reference and the docs have been
updated to make it clear that using this is inherently non-portable.
* `Change NativeThreadHandle to ptr
<https://pwrev.dev/219251>`__
(issue `#350349092 <https://pwbug.dev/350349092>`__)
pw_toolchain
------------
Go binaries have been updated to no longer link with position-independent
executables (PIE) on Linux.
* `Disable PIE for Golang
<https://pwrev.dev/220191>`__
(issue `#347708308 <https://pwbug.dev/347708308>`__)
pw_toolchain_bazel
------------------
* `Add native binary for clang-tidy
<https://pwrev.dev/221471>`__
(issue `#352343585 <https://pwbug.dev/352343585>`__)
pw_trace
--------
* `Remove backend multiplexer
<https://pwrev.dev/219792>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_transfer
-----------
* `Don't assert on resource status responder
<https://pwrev.dev/219037>`__
pw_unit_test
------------
* `Fix CMake test runner argument forwarding
<https://pwrev.dev/218973>`__
pw_web
------
Upstream Pigweed protos are now provided alongside downstream project protos.
* `Include core .proto files in the npm bundle
<https://pwrev.dev/222533>`__
* `Add newlines, separators, and clear for output
<https://pwrev.dev/222531>`__
(issue `#348650028 <https://pwbug.dev/348650028>`__)
* `Set min width for message
<https://pwrev.dev/221592>`__
(issue `#351901512 <https://pwbug.dev/351901512>`__)
* `Implement console-level split panels
<https://pwrev.dev/220691>`__
(issue `#348649945 <https://pwbug.dev/348649945>`__)
* `Update REPL styles
<https://pwrev.dev/220971>`__
(issue `#348650028 <https://pwbug.dev/348650028>`__)
* `Repl kernel interface and litjs component for repl
<https://pwrev.dev/217311>`__
* `Fix columns on first load
<https://pwrev.dev/218551>`__
(issue `#346869281 <https://pwbug.dev/346869281>`__)
* `Debounce grid template calc on resize
<https://pwrev.dev/218377>`__
(issues `#346596380 <https://pwbug.dev/346596380>`__,
`#342450728 <https://pwbug.dev/342450728>`__)
Rolls
=====
Pigweed is now using version 8.0.0-pre.20240618.2 of Bazel, the first version
to include platform-based flags. Go was updated to version ``3@1.22.5``. CMake
was updated to version ``3@3.30.0.chromium.8``.
* `Update Bazel to 8.0 rolling release
<https://pwrev.dev/220118>`__
(issue `#344013743 <https://pwbug.dev/344013743>`__)
* `Update Bazel to 7.2
<https://pwrev.dev/220571>`__
(issue `#347708308 <https://pwbug.dev/347708308>`__)
* `go
<https://pwrev.dev/220471>`__
* `cmake
<https://pwrev.dev/220351>`__
* `310, 311
<https://pwrev.dev/219173>`__
Targets
=======
RP2040
------
The RP2040 flasher now provides more feedback when a board has been
successfully flashed.
* `Fix FreeRTOS tick rate
<https://pwrev.dev/220791>`__
(issue `#351906735 <https://pwbug.dev/351906735>`__)
* `Log on successful flash
<https://pwrev.dev/220575>`__
(issue `#352052013 <https://pwbug.dev/352052013>`__)
* `Fix build command in docs
<https://pwrev.dev/219359>`__
Third-party software
====================
Emboss
------
Emboss was updated to version ``2024.0702.215418``.
* `Add missing ir_data_utils.py to GN build
<https://pwrev.dev/220114>`__
(issue `#350970460 <https://pwbug.dev/350970460>`__)
* `Update emboss to v2024.0702.215418
<https://pwrev.dev/219793>`__
(issue `#350970460 <https://pwbug.dev/350970460>`__)
FreeRTOS
--------
* `Add missing CM33_NTZ header
<https://pwrev.dev/222574>`__
GoogleTest
----------
* `Fix the docs
<https://pwrev.dev/222573>`__
(issue `#352584464 <https://pwbug.dev/352584464>`__)
ICU
---
* `Update Bazel rules for dependent headers
<https://pwrev.dev/222231>`__
* `Add Bazel build rules
<https://pwrev.dev/218702>`__
(issue `#321300565 <https://pwbug.dev/321300565>`__)
Mbed TLS
--------
* `Remove old build file
<https://pwrev.dev/220137>`__
* `Rename build file
<https://pwrev.dev/218709>`__
Miscellaneous
=============
GitHub
------
* `Add copyright notice
<https://pwrev.dev/221491>`__
(issue `#347062591 <https://pwbug.dev/347062591>`__)
dotfiles
--------
* `Add copyright notice
<https://pwrev.dev/221531>`__
(issue `#347062591 <https://pwbug.dev/347062591>`__)
------------
Jun 27, 2024
------------
Highlights (Jun 14, 2024 to Jun 27, 2024):
* **RP2040 implementation for pw_channel**:
:cpp:func:`pw::channel::Rp2StdioChannelInit` is a new
:ref:`module-pw_channel` implementation that reads from and writes
to RP2040's ``stdio``.
* **Bazel compatibility patterns guide**: The new
:ref:`docs-bazel-compatibility` guide describes the Bazel patterns that
Pigweed uses to express that a build target is compatible with a platform.
* **Hex dump helper**: The new :cpp:func:`pw::dump::LogBytes` helper makes
it easier to log binary data as human-readable hex dumps. The number of
input bytes to display per line can be configured via the ``kBytesPerLine``
template parameter.
Build systems
=============
Bazel
-----
The obsolete ``testonly_freertos`` platform has been removed.
.. todo-check: disable
* `Encapsulate rp2040 WORKSPACE deps into deps.bazl
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217219>`__
* `Update pin for rules_libusb
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217212>`__
* `Update TODO in bazelrc
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216274>`__
(issue `#347317581 <https://pwbug.dev/347317581>`__)
* `Stop using deprecated pw_facade aliases, v3
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216436>`__
(issue `#328679085 <https://pwbug.dev/328679085>`__)
* `Stop using deprecated pw_facade aliases, v2
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216271>`__
(issue `#328679085 <https://pwbug.dev/328679085>`__)
* `Remove testonly_freertos platform
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216181>`__
* `Remove unnecessary @pigweed references
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218411>`__
* `Add clippy to CI
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218271>`__
(issue `#268087116 <https://pwbug.dev/268087116>`__)
.. todo-check: enable
Docs
====
The new :ref:`Bazel installation guide <docs-install-bazel>` provides
Pigweed's recommendations on how to install Bazel. The
:ref:`docs-github-actions` guide was updated. The new :ref:`docs-bazel-compatibility`
guide describes the Bazel patterns that Pigweed uses to express that a build target
is compatible with a platform.
* `Add emboss to packages installed for build_docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216893>`__
* `Remove mention of multiplexers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216672>`__
(issue `#344654805 <https://pwbug.dev/344654805>`__)
* `Add OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216834>`__
* `Add Bazel installation guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216531>`__
* `Update GitHub actions tutorial
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216276>`__
* `Update Pigweed Live schedule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216354>`__
(issue `#347677570 <https://pwbug.dev/347677570>`__)
* `Bazel compatibility patterns
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214971>`__
(issue `#344654805 <https://pwbug.dev/344654805>`__)
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216153>`__
Modules
=======
pw_allocator
------------
The ``//pw_allocator:block_allocator`` target has been removed. Consumers
are now expected to depend on and include individual block allocator targets.
* `Use specific block allocator headers and targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211917>`__
* `Fix Android build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216511>`__
* `Clean up Block interface
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211916>`__
(issue `#326509341 <https://pwbug.dev/326509341>`__)
pw_assert
---------
* `Remove backend multiplexer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215914>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_bluetooth
------------
New Emboss structs added: ``NumberOfCompletedPacketsEvent``,
``WritePinTypeCommandCompleteEvent``, ``PinCodeRequestNegativeReplyCommandCompleteEvent``,
``ReadPinTypeCommandCompleteEvent``, ``PinCodeRequestEvent``,
``PinCodeRequestReplyCommandCompleteEvent``, ``WritePinTypeCommand``,
``ReadPinTypeCommand``, ``PinCodeRequestNegativeReplyCommand``,
``PinCodeRequestReplyCommand``.
* `Add NumberOfCompletedPacketsEvent
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216250>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Add AttNotifyOverAcl to att.emb
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218311>`__
* `Add PinCodeRequestEvent
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217791>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
* `Add IoCapability enum field
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217074>`__
* `Add ACL & L2CAP B-frame Emboss definitions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216248>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Add att.emb
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216247>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Add WritePinTypeCommandCompleteEvent Emboss struct
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216923>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
* `Add ReadPinTypeCommandCompleteEvent Emboss struct
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216922>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
* `Add PinCodeRequestNegativeReplyCommandCompleteEvent Emboss
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216921>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
* `Add PinCodeRequestReplyCommandCompleteEvent Emboss struct
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216920>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
* `Add WritePinTypeCommand Emboss struct
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216919>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
* `Add ReadPinTypeCommand Emboss struct
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216918>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
* `Add PinCodeRequestNegativeReplyCommand Emboss struct
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216917>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
* `Add PinCodeRequestReplyCommand Emboss struct
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216916>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
* `Add PinType enum
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216915>`__
(issue `#342151162 <https://pwbug.dev/342151162>`__)
pw_bluetooth_proxy
------------------
The new ``pw::bluetooth::proxy::AclDataChannel::ProcessDisconnectionCompleteEvent()``
method frees up resources when a connection is removed. The new
``pw::bluetooth::proxy::AclDataChannel::ProcessNumberOfCompletedPacketsEvent()`` method
removes completed packets as necessary to reclaim LE ACL credits. The new
``pw::bluetooth::proxy::ProxyHost::sendGattNotify()`` method is a simple
implementation of sending a GATT notification to a connected peer.
* `Process Disconnection_Complete event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218652>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Implement basic ACL credit tracking
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216411>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Implement sendGattNotify
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216249>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Have release_fn take buffer*
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217414>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Add GetH4Span
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217413>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Add release_fn to H4PacketWithH4
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216971>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Fix case style for some test variables
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216914>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Move to-controller flow to using h4-based packets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216897>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Add H4PacketWithH4 ctor that takes type
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216896>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Move H4Packet to using move semantics
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216913>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Fix naming of SetH4Type
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216895>`__
(issue `#326499764 <https://pwbug.dev/326499764>`__)
* `Move to using H4Packet wrapper classes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215222>`__
(issues `#326499764 <https://pwbug.dev/326499764>`__,
`#326497489 <https://pwbug.dev/326497489>`__)
pw_bluetooth_sapphire
---------------------
* `Move LegacyLowEnergyScanner impl to base class
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214674>`__
* `Add spec reference to comment
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217111>`__
(issue `#311639040 <https://pwbug.dev/311639040>`__)
pw_boot
-------
* `Remove backend multiplexer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217213>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_build
--------
The ``BuildCommand`` Python class now has an optional ``working_dir`` argument
that allows you to specify the working directory in which a build command
should be executed. The new ``boolean_constraint_value`` syntactic sugar macro
makes it easier to declare a constraint setting with just two possible
constraint values.
* `Add optional working directory arg to BuildCommand
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217831>`__
(issue `#328083083 <https://pwbug.dev/328083083>`__)
* `Introduce boolean_constraint_value
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216832>`__
(issue `#344654805 <https://pwbug.dev/344654805>`__)
* `Move host_backend_alias (part 2)
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215741>`__
(issue `#344654805 <https://pwbug.dev/344654805>`__)
pw_build_android
----------------
Dynamic allocation for ``pw::Function`` is now always enabled in Android
builds to allow ``pw::Function`` to exceed the inline size limit.
* `Enable function dynamic alloc
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218219>`__
(issue `#349352849 <https://pwbug.dev/349352849>`__)
pw_build_info
-------------
The new ``//pw_build_info:git_build_info`` Bazel rule lets you embed which
Git commit your binary was built from.
* `Add git_build_info.h header for embedding git info
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213854>`__
pw_build_mcuxpresso
-------------------
The type for the ``include`` parameter in the
``pw_build_mcuxpresso.components.Project`` Python class constructor changed
from ``list[str]`` to ``Collection[str]`` and the type for the ``exclude``
parameter changed from ``list[str]`` to ``Container[str]``.
``pw_build_mcuxpresso.bazel.bazel_output()`` now accepts an optional
``extra_args`` argument, which is a dictionary of additional arguments to be
added to the generated Bazel target.
* `Fix bug in create_project()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218272>`__
* `Add extra_args to bazel.bazel_output()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217754>`__
pw_channel
----------
:cpp:func:`pw::channel::Rp2StdioChannelInit` is a new
:ref:`module-pw_channel` implementation that reads from and writes
to RP2040's ``stdio``.
* `Add Rp2StdioChannel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217954>`__
* `Cleanup redundant checks in epoll_channel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218376>`__
pw_chrono
---------
The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets FreeRTOS
backends for ``pw_chrono``, ``pw_sync``, and ``pw_thread`` in one go. Each
backend can be individually overridden if needed.
* `Add docs metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217752>`__
* `Group common backends in the GN build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
pw_cli
------
* `Add missing modules to Bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217571>`__
* `Improve messaging for GitErrors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217054>`__
pw_clock_tree
-------------
The new :cpp:func:`pw::clock_tree::ClockTree::AcquireWith` method lets
you acquire a clock tree element while enabling another one.
* `Introduce ClockTree AcquireWith method
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217131>`__
(issue `#331672574 <https://pwbug.dev/331672574>`__)
pw_clock_tree_mcuxpresso
------------------------
:cpp:func:`AcquireWith` should now be used when enabling clock tree
elements that are sourced from the audio PLL or SYS PLL.
* `Use AcquireWith for audio PLL
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216911>`__
(issue `#331672574 <https://pwbug.dev/331672574>`__)
pw_cpu_exception_cortex_m
-------------------------
* `rm backend multiplexer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217214>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_docgen
---------
* `Add bug Docutils role
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215911>`__
pw_emu
------
``pw_emu`` now supports Bazel.
* `Add bazel python build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217053>`__
pw_env_setup
------------
The version of ``cffi`` that ``pw_env_setup`` uses was updated to
``1.16.0`` to fix Windows failures. The "fatal error" that
``pw_env_setup`` used to log when running from a directory that's
outside of a Git repo has been suppressed.
* `Update cffi
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217218>`__
(issue `#348697900 <https://pwbug.dev/348697900>`__)
* `Suppress error message when running outside git repo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217216>`__
pw_format
---------
* `Fix and enable disabled Rust tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217135>`__
pw_grpc
-------
The C++ module now handles corrupt frames more gracefully.
* `Avoid buffer overflow when processing corrupt frames
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216651>`__
pw_hex_dump
-----------
The ``pw_log_bytes`` target has been renamed to ``log_bytes``. The new
:cpp:func:`pw::dump::LogBytes` helper makes it easier to log binary data
as human-readable hex dumps. The number of input bytes to display per line
can be configured via the ``kBytesPerLine`` template parameter.
* `Remove pw prefix from log_bytes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218531>`__
* `Add LogBytes helper
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216711>`__
pw_i2c
------
* `Handle unaligned buffer reads in register_device_test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217811>`__
(issue `#325509758 <https://pwbug.dev/325509758>`__)
pw_ide
------
A ``--process-files`` (``-P``) flag was added to ``pw ide cpp`` to process
compilation databases at the provided paths. Bazel support for ``pw_ide`` has
started. ``pw_ide`` now explicitly runs all commands from the ``PW_PROJECT_ROOT``
directory.
* `Point to compile commands extractor fork
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218631>`__
* `Add option to process comp DBs by path
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218334>`__
* `Add Bazel dependencies wrapper
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218320>`__
* `Bazelify
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217572>`__
* `Run commands from PW_PROJECT_ROOT dir
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216471>`__
pw_log
------
* `Remove backend multiplexer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215892>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
pw_malloc
---------
* `Add docs metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217951>`__
pw_multibuf
-----------
* `Fix Android build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216611>`__
pw_preprocessor
---------------
* `Add docs metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217952>`__
pw_presubmit
------------
* `Add check for rp2040_binary transition
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218273>`__
* `Build STM32F429i baremetal in CI
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217231>`__
pw_rpc
------
* `Restructure Channel / internal::Channel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216037>`__
pw_rust
-------
* `Static Library Linking
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216313>`__
pw_spi_mcuxpresso
-----------------
* `Separate Bazel build targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217313>`__
* `Fix unused parameter warning
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217312>`__
(issue `#348512572 <https://pwbug.dev/348512572>`__)
pw_sync
-------
The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets FreeRTOS
backends for ``pw_chrono``, ``pw_sync``, and ``pw_thread`` in one go. Each
backend can be individually overridden if needed.
* `Remove multiplexers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216819>`__
(issue `#347998044 <https://pwbug.dev/347998044>`__)
* `Group common backends in the GN build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
pw_system
---------
``pw_system:async`` is a new version of ``pw_system`` based on
:ref:`module-pw_async2`. The ``pw_system`` console now has a
``--device-tracing`` flag to turn device tracing on or off.
* `pw_system:async
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216239>`__
* `Async packet processing component
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214798>`__
* `Rename target_io.cc
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217051>`__
* `Allow disabling of DeviceTracing RPC calls
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216332>`__
pw_target_runner
----------------
The ``pw_target_runner`` client in Go now supports a ``server_suggestion``
flag, which allows specifying a command to suggest to the user if the server
is unavailable. The Go client's ``RunBinary`` method can now accept a binary
as a byte array instead of a file path.
* `Add suggested server command
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218011>`__
* `Send test binaries over gRPC
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216050>`__
pw_thread
---------
The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets FreeRTOS
backends for ``pw_chrono``, ``pw_sync``, and ``pw_thread`` in one go. Each
backend can be individually overridden if needed.
* `Group common backends in the GN build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
pw_toolchain
------------
Compiler diagnostics colors are now enabled in Bazel.
* `Color diagnostics in Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217715>`__
* `Closer align the bazel arm-gcc flags with GN
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215734>`__
* `Add clippy-driver to rust toolchains
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217211>`__
(issue `#268087116 <https://pwbug.dev/268087116>`__)
pw_transfer
-----------
* `Java style fixes; remove unused variable and dependencies
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215858>`__
pw_watch
--------
``pw_watch`` now ignores ``bazel-*`` directories.
* `Do not watch bazel-* symlinks
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217931>`__
pw_web
------
The function signature for ``createLogViewer`` changed to
``createLogViewer(logSource, root, { columnOrder })``. The ``columnOrder``
field in the optional third parameter lets you control the ordering of
columns in the log viewer.The new ``useShoelaceFeatures`` boolean lets you
control whether the log viewer uses Shoelace components. The log viewer's
toolbar is now responsive.
* `Add optional parameters to createLogViewer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217052>`__
(issue `#333537914 <https://pwbug.dev/333537914>`__)
* `Add Shoelace component flag
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217093>`__
(issue `#347966938 <https://pwbug.dev/347966938>`__)
* `Implement responsive toolbar behavior
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215591>`__
(issue `#309650360 <https://pwbug.dev/309650360>`__)
Languages
=========
Python
------
* `Add python targets for pw_i2c, pw_digital_io protos
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216736>`__
Rust
----
* `Fix clippy lints
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217136>`__
Miscellaneous
=============
OWNERS
------
* `Add gwsq
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207731>`__
Targets
=======
References to ``configGENERATE_RUN_TIME_STATS`` have been removed because
the implementations are incomplete.
* `Remove configGENERATE_RUN_TIME_STATS functions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218711>`__
RP2040
------
The new ``flash_rp2040`` rule makes it easier to flash Raspberry Pi RP2040s
in Bazel.The new ``flash`` Bazel rule makes it easier to flash RP2040s from
a Python script.
* `Add pw_system_async example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218691>`__
* `Mark rp2040_binary as a non-executable target for host
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218394>`__
* `Update docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217039>`__
* `Add debugprobe version detection and warning
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217055>`__
* `Switch to use upstream develop branch of Pico SDK
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216234>`__
* `Add IFTT to keep the rp2040 transition and config in sync
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218431>`__
* `Add missing backends
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218373>`__
* `Unify board selection cmdline args
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217716>`__
(issue `#348067379 <https://pwbug.dev/348067379>`__)
* `Add a bazel rule for flashing
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216314>`__
* `Add interrupt and freertos backends
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216493>`__
* `Add flash main target
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216492>`__
* `Add rp2040_binary transition
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216491>`__
* `Refactor test runner and extract flashing
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216152>`__
Third-party
===========
FreeRTOS
--------
``configUSE_MALLOC_FAILED_HOOK`` can now be enabled to detect out-of-memory
errors when using FreeRTOS's heap implementation.
* `Add failed malloc hook to support lib
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218380>`__
* `Fix Bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218351>`__
Nanopb
------
* `Import proto module
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216991>`__
Pico SDK
--------
* `Fix exception names in GN build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216435>`__
(issue `#347355069 <https://pwbug.dev/347355069>`__)
------------
Jun 13, 2024
------------
.. _bootstrap.fish: https://cs.opensource.google/pigweed/pigweed/+/main:bootstrap.fish
Highlights (May 30, 2024 to Jun 13, 2024):
* **pw_allocator support in pw_mallc**: ``pw_malloc`` now supports
:ref:`pw_allocator <module-pw_allocator>`-based backends.
* **New pw_build Bazel rules**: ``pw_py_test`` rule wraps ``py_test``,
:ref:`pw_elf_to_dump <module-pw_build-bazel-pw_elf_to_dump>` takes a
binary executable and produces a text file containing the full binary layout,
and :ref:`pw_elf_to_bin <module-pw_build-bazel-pw_elf_to_bin>` rule takes
a binary executable and produces a file with all ELF headers removed.
* **Improved Fish shell support**: The ``pw`` and ``pw build``
commands now support `Fish <https://fishshell.com/>`__ shell completion.
The new `bootstrap.fish`_ script demonstrates how to bootstrap a Pigweed
project from a Fish shell and makes it easier for Fish users to contribute
to upstream Pigweed.
* **More informative modules index**: The :ref:`modules index <docs-module-guides>`
now shoes useful metadata for each module, such as a summary of the
module's purpose and the programming languages that the module supports.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
The ``pw::allocator::Layout`` constructor is now marked ``explicit`` to
ensure that functions that take ``Layout`` instances as arguments don't
silently accept and convert other types. The ``pw::allocator::FreeList`` and
``pw::allocator::FreeListHeap`` interfaces have been removed.
* `Make Layout constructor explicit
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211915>`__
* `Remove FreeList and FreeListHeap
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211914>`__
(issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__)
* `Refactor Bucket chunk list
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215488>`__
(issue `#345526413 <https://issues.pigweed.dev/issues/345526413>`__)
pw_analog
---------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214500>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_android_toolchain
--------------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214501>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_arduino_build
----------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214173>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_assert
---------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214539>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_async
--------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214499>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_async2
---------
* `Fix location of backends in sitenav
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213914>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_base64
---------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214540>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_bloat
--------
* `Build and run \`pw bloat\` CLI command in Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215456>`__
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214177>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_blob_store
-------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214502>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_bluetooth
------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214575>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Add HCI StatusCode values
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213553>`__
pw_bluetooth_hci
----------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214576>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_bluetooth_profiles
---------------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214612>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_bluetooth_proxy
------------------
The new ``pw::bluetooth::proxy::HasSendAclCapability()`` function indicates
whether the proxy has the capability to send ACL packets.
* `Remove H4HciPacketSendFn alias
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215221>`__
(issue `#326499764 <https://issues.pigweed.dev/issues/326499764>`__)
* `Fix const on sendGattNotify param
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214864>`__
(issue `#326499764 <https://issues.pigweed.dev/issues/326499764>`__)
* `Mark unused parameters with [[maybe_unused]]
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214637>`__
(issue `#345526399 <https://issues.pigweed.dev/issues/345526399>`__)
* `Add maybe_unused to make downstream happy
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214360>`__
(issue `#344031126 <https://issues.pigweed.dev/issues/344031126>`__)
* `Add ProxyHost::HasSendAclCapability()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214101>`__
(issue `#344030724 <https://issues.pigweed.dev/issues/344030724>`__)
* `Update H4HciPacket construction
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214233>`__
* `Add sendGattNotify stub
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214106>`__
(issue `#344031126 <https://issues.pigweed.dev/issues/344031126>`__)
* `Fix compilation errors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213733>`__
* `Pass H4 as event type plus an HCI span
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213664>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Tweak CreateNonInteractingToHostBuffer to take array
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213663>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
pw_boot_cortex_m
----------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215458>`__
pw_build
--------
The new ``pw_py_test`` rule wraps ``py_test`` and defaults to setting
``target_compatible_with`` to ``host`` only. The new
:ref:`pw_elf_to_dump <module-pw_build-bazel-pw_elf_to_dump>` rule takes a
binary executable and produces a text file containing the full binary layout.
The new :ref:`pw_elf_to_bin <module-pw_build-bazel-pw_elf_to_bin>` rule takes
a binary executable and produces a file with all ELF headers removed.
* `Move host_backend_alias (part 1)
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215740>`__
(issue `#344654805 <https://issues.pigweed.dev/issues/344654805>`__)
* `Add python.install into the default GN group
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215791>`__
* `Introduce pw_py_test to bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215258>`__
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214506>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Clarify docs on pw_elf_to_bin
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213616>`__
* `Update intro
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214062>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Add pw_elf_to_dump rule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212851>`__
* `Add pw_elf_to_bin rule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212671>`__
* `Populate executable field in return from link_cc utility
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212631>`__
pw_build_info
-------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214616>`__
pw_build_mcuxpresso
-------------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214507>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_bytes
--------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214509>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_channel
----------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214621>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Update function documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213712>`__
* `Remove manual registration from epoll channel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213653>`__
pw_checksum
-----------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214623>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_chre
-------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214633>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_chrono
---------
:ref:`libc time wrappers <module-pw_chrono-libc-time-wrappers>` are now
provided to improve compatibility with software not written for embedded
systems that depends on ``gettimeofday`` and ``time`` from POSIX.
* `Group common backends in the GN build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
* `Introduce SystemClock backed link time wrappers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213551>`__
pw_cli
------
.. _Fish: https://fishshell.com/
The ``pw`` and ``pw build`` commands now support `Fish`_ shell completion.
* `Fish shell completion
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213734>`__
pw_clock_tree
-------------
The new ``pw::clock_tree::ClockSourceNoOp`` class can be used to satisfy
the dependency of a source clock tree element for other clock source classes.
The new ``pw::clock_tree::ElementController`` class provides easier integration
of optional clock tree logic into existing drivers.
* `Introduce ClockSourceNoOp class
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213851>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Introduce ElementController class
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212095>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Fix source set name and visibility
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212151>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
pw_clock_tree_mcuxpresso
------------------------
* `Comment clean up
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214573>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Add ClockMcuxpressoRtc support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214572>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Remove unnecessary pw::
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214494>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Add ClockMcuxpressoAudioPll support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214332>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Configure ClkIn as source for osc_clk
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214234>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Make Mclk and ClkIn dependent elements
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213853>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Move example code out of docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213852>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Fix source set name and visibility
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212152>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
pw_console
----------
Theme colors are now correctly applied when running ``pw console`` with the
``--config-file`` option.
* `Reload theme when using a config-file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214891>`__
pw_containers
-------------
The ``pw::Vector::at()`` function signature was changed to take ``size_t``
instead of ``size_type``. The new ``pw::InlineVarLenEntryQueue::try_push()``
function is similar to ``pw::InlineVarLenEntryQueue::push_overwrite()`` but it
drops entries instead of overwriting old ones. The new
``pw::InlineVarLenEntryQueue::max_size()`` function returns the maximum number
of empty entries.
* `Make Vector::at() use size_t
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215859>`__
* `Disallow deletion from InlineVarLenEntryQueue base
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210639>`__
* `InlineVarLenEntryQueue::try_push() function
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213612>`__
pw_digital_io
-------------
* `Remove invalid digital_io_controller reference
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214691>`__
pw_digital_io_linux
-------------------
``pw_digital_io_linux`` now supports input interrupts. The new
:ref:`watch <module-pw_digital_io_linux-cli-watch>` command in the CLI
tool configures a GPIO line as an input and watches for interrupt events.
* `Add trigger option to CLI watch command
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213131>`__
* `Add "watch" command
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209596>`__
* `Add support for input interrupts
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209595>`__
* `Move examples out to compiled source files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209771>`__
* `Update mock_vfs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209594>`__
* `Add log_errno.h
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209593>`__
pw_docgen
---------
* `Update module metadata status badge colors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214574>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214182>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Fix search results increasing in width
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215332>`__
pw_env_setup
------------
The new `bootstrap.fish`_ script demonstrates how to bootstrap a Pigweed
project from a Fish shell and makes it easier for Fish users to contribute
to upstream Pigweed.
* `Update clang next version
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212432>`__
* `Bootstrap fish-shell support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/56840>`__
pw_grpc
-------
* `Remove send queue timeout
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214099>`__
(issue `#345088816 <https://issues.pigweed.dev/issues/345088816>`__)
pw_ide
------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215512>`__
* `Preserve modified editor settings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213670>`__
(issue `#344681641 <https://issues.pigweed.dev/issues/344681641>`__)
* `Fix constant Pylance crashes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213668>`__
(issue `#338607100 <https://issues.pigweed.dev/issues/338607100>`__)
pw_log
------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214184>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Cast log level to int32_t
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212092>`__
(issue `#343518613 <https://issues.pigweed.dev/issues/343518613>`__)
pw_log_string
-------------
* `Introduce link time assert() wrapper for newlib
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213072>`__
* `Set default log backend
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212832>`__
pw_malloc
---------
``pw_malloc`` now supports :ref:`pw_allocator <module-pw_allocator>`-based
backends.
* `Add allocator backends
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208417>`__
pw_multibuf
-----------
The new ``pw::multibuf::MultiBuf::IsContiguous()`` method checks if a multibuf
is contiguous and the new ``pw::multibuf::MultiBuf::ContiguousSpan()`` method
provides a way to access contiguous data as a span. The new ``CopyTo()``,
``CopyFrom()``, and ``CopyFromAndTruncate()`` methods also simplify
interactions with contiguous byte spans.
* `Contiguous span functions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214859>`__
* `Functions for copying into and out of a MultiBuf
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214858>`__
* `Truncate after an iterator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214857>`__
* `AdvanceToData in iterator constructor
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214503>`__
* `Fix Truncate(0) on empty MultiBuf
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213661>`__
* `SimpleAllocatorForTest
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212312>`__
pw_multisink
------------
The new ``pw::multisink::MultiSink::GetUnreadEntriesSize()`` and
``pw::multisink::MultiSink::UnsafeGetUnreadEntriesSize()`` methods
implement :ref:`seed-0124`. The new ``PW_MULTISINK_CONFIG_LOCK_TYPE``
macro configures the underlying lock that's used to guard multisink
reads or writes.
* `Add GetUnreadEntriesSize to Drain
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213472>`__
* `Add option to inject a user defined lock
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213211>`__
pw_presubmit
------------
* `Add --fresh to cmake presubmits
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215736>`__
* `Add coverage of rp2040 build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215231>`__
(issue `#342638018 <https://issues.pigweed.dev/issues/342638018>`__)
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214571>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Remove shellcheck from lintformat program
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213617>`__
pw_protobuf
-----------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214187>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_ring_buffer
--------------
* `Add EntriesSize API to Reader
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213471>`__
(issue `#337150071 <https://issues.pigweed.dev/issues/337150071>`__)
pw_router
---------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214190>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_rpc
------
The Python client API now uses positional-only arguments.
* `Use positional-only arguments in Python client API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215532>`__
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214032>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Fix hyperlink
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213556>`__
pw_sensor
---------
* `Add Bazel support for Python package
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214534>`__
pw_spi
------
* `Fix sitenav location for RP2040 backend
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214031>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_spi_rp2040
-------------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214232>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_stream
---------
* `Fix include in mpsc_stream
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215075>`__
pw_stream_uart_mcuxpresso
-------------------------
* `Make dma_stream Write of size 0 succeed
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214151>`__
* `InterruptSafeWriter example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212513>`__
(issue `#343773769 <https://issues.pigweed.dev/issues/343773769>`__)
* `Stream example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212512>`__
(issue `#343773769 <https://issues.pigweed.dev/issues/343773769>`__)
* `Use clock tree
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209534>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `DMA stream example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212391>`__
(issue `#343773769 <https://issues.pigweed.dev/issues/343773769>`__)
pw_sync
-------
The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets up multiple
modules to use FreeRTOS backends.
* `Group common backends in the GN build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
pw_system
---------
``pw-system-console`` now connects to the first detected port if ``--device``
isn't provided and only one port is detected or it shows an interactive
prompt if multiple ports are detected. :ref:`target-host-device-simulator-demo`
now shows how to run ``pw-system-console`` with ``host_device_simulator`` in
Bazel-based projects.
* `Console interactive serial port selection
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214912>`__
(issue `#343949763 <https://issues.pigweed.dev/issues/343949763>`__)
* `Host device simulator entrypoint
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214972>`__
* `Move config variables to config.h
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213811>`__
* `Mention that extra libs need alwayslink
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212831>`__
* `Add host_device_simulator transitions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212414>`__
pw_target_runner
----------------
* `Switch to Bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214059>`__
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214317>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_thread
---------
* `Group common backends in the GN build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
pw_thread_freertos
------------------
* `Expand comment to help when debugging linker errors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213669>`__
pw_toolchain
------------
* `Enable PIC on host
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214495>`__
* `Add bazel toolchain for cortex-m0plus
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215479>`__
(issue `#346609655 <https://issues.pigweed.dev/issues/346609655>`__)
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214351>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Add IOKit and Security headers to mac toolchains
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214013>`__
pw_toolchain_bazel
------------------
* `Add cortex-a32 mcpu value
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213855>`__
(issue `#342510882 <https://issues.pigweed.dev/issues/342510882>`__)
pw_transfer
-----------
* `Remove unused imports
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215478>`__
* `Fix ConcurrentModificationException in handleTimeouts()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214065>`__
(issue `#322919275 <https://issues.pigweed.dev/issues/322919275>`__)
* `Always terminate transfers on stream reopen
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212953>`__
pw_uart
-------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214252>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_varint
---------
* `Add module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214352>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
pw_watch
--------
Watching now works in directories other than ``PW_ROOT``.
* `Enable watching from non-PW_ROOT
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215735>`__
(issue `#328083083 <https://issues.pigweed.dev/issues/328083083>`__)
pw_web
------
* `Get icon fonts via Google Fonts URL
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212871>`__
(issue `#332587834 <https://issues.pigweed.dev/issues/332587834>`__)
* `Fix last column filling space in log table
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212154>`__
Build systems
=============
Bazel
-----
* `Stop using deprecated pw_facade aliases
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216151>`__
(issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
* `Don't use llvm_toolchain for fuchsia_clang
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215651>`__
(issue `#346354914 <https://issues.pigweed.dev/issues/346354914>`__)
* `Fix reference to nonexistent file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215511>`__
* `Roll latest rules_libusb
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214792>`__
* `No integration tests in wildcard build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214056>`__
(issue `#344654806 <https://issues.pigweed.dev/issues/344654806>`__)
* `Move integration build config in-repo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214092>`__
(issue `#344654806 <https://issues.pigweed.dev/issues/344654806>`__)
Hardware targets
================
host_device_simulator
---------------------
* `Make host_device_simulator_binary \`bazel run\`-able
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214693>`__
rp2040
------
* `Add bazel picotool support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214861>`__
* `Add bazel support for rp2040_utils pylib
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211591>`__
(issue `#342634966 <https://issues.pigweed.dev/issues/342634966>`__)
* `Support running tests using the debug probe
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211363>`__
* `Add pico/debug probe filtering flags
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212611>`__
* `Temporarily disable remaining failing rp2040 tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215490>`__
* `Fix test runner scripts to correct check if args are specified
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214794>`__
* `Support bazel wildcard build on rp2040
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213071>`__
(issue `#343467774 <https://issues.pigweed.dev/issues/343467774>`__)
stm32f429i
----------
* `Add baremetal bazel build support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214626>`__
(issue `#344661765 <https://issues.pigweed.dev/issues/344661765>`__)
OS support
==========
Zephyr
------
* `Fix typo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213271>`__
FreeRTOS
--------
FreeRTOS application function implementations like ``vApplicationStackOverflowHook()``
are now shared between multiple hardware targets.
* `Share common FreeRTOS function implementations
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213737>`__
Docs
====
The :ref:`modules index <docs-module-guides>` now includes metadata for each
module such as a summary of each module and what languages each module
supports. The ``pigweed.dev`` sitenav was simplified.
:ref:`docs-blog-02-bazel-feature-flags` was published. A "skip to main
content" accessibility feature was added to ``pigweed.dev``.
* `Fix Python package dependencies for sphinx
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215852>`__
* `Auto-generate modules index from metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214711>`__
(issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
* `Update sitenav
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214797>`__
* `Update homepage tagline
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213951>`__
* `Add "skip to main content" a11y feature
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213659>`__
(issue `#344643289 <https://issues.pigweed.dev/issues/344643289>`__)
* `blog: Bazel feature flags
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209922>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212491>`__
Third-party software support
============================
* `Add @libusb to bazel workspace
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214094>`__
* `Symlink probe-rs binary into common location
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214057>`__
* `Add probe-rs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213693>`__
mimxrt595
---------
* `Upgrade to SDK_2_14_0_EVK-MIMXRT59
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212451>`__
(issue `#343775421 <https://issues.pigweed.dev/issues/343775421>`__)
GitHub
------
* `Fix step name
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213692>`__
io_bazel_rules_go
-----------------
* `Update to fork which disables warnings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214851>`__
pigweed.json
============
* `Add config for Bazel builders
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213991>`__
(issue `#275107504 <https://issues.pigweed.dev/issues/275107504>`__)
------------
May 30, 2024
------------
Highlights (May 17, 2024 to May 30, 2024):
* **Clock management**: The new :ref:`module-pw_clock_tree` module manages
generic clock tree elements such as clocks, clock selectors, and clock
dividers.
* **GitHub Actions**: The new :ref:`docs-github-actions` guide shows you
how to set up GitHub Actions to build and test a Bazel-based Pigweed
project when a pull request is received.
* **pw_system and Bazel**: :ref:`module-pw_system` usage in Bazel has been
simplified by gathering all required ``pw_system`` components into one
target and providing label flags that can set platform-dependent
dependencies.
* **Channels and Linux Epoll**: The new :cpp:class:`pw::channel::EpollChannel`
class sends and receives data through a file descriptor, with read and write
notifications backed by Linux's epoll system.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
* `Add BlockAllocator::MeasureFragmentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209933>`__
* `Fix Android build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211871>`__
* `Refactor optional Allocator methods
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210402>`__
* `Make Init methods infallible
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209044>`__
(issue `#338389412 <https://issues.pigweed.dev/issues/338389412>`__)
* `Reduce Block fragmentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209538>`__
(issue `#328831791 <https://issues.pigweed.dev/issues/328831791>`__)
* `Fix #if PW_HAVE_FEATURE(__cpp_rtti)
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210816>`__
(issue `#341975367 <https://issues.pigweed.dev/issues/341975367>`__)
* `Track requested sizes in blocks
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210395>`__
* `Fix Android build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210571>`__
(issue `#A <https://issues.pigweed.dev/issues/N/A>`__)
* `Move large values to test fixtures
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210398>`__
* `Add AsPmrAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207170>`__
pw_assert
---------
* `Add missing dep in Android.bp
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211271>`__
pw_build
--------
The new ``PW_MUST_PLACE`` macro ensures that linker script inputs are
non-zero sized.
* `Introduce PW_MUST_PLACE linker script macro
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211924>`__
* `Add deps support to pw_linker_script
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211194>`__
(issue `#331927492 <https://issues.pigweed.dev/issues/331927492>`__)
pw_channel
----------
The new :cpp:class:`pw::channel::EpollChannel` class sends and receives
data through a file descriptor, with read and write notifications backed
by Linux's epoll system.
* `Only open read/write if channel is readable/writable
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212212>`__
* `Add EpollChannel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210813>`__
* `Consistent datagram/byte channel aliases
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210796>`__
pw_chre
-------
* `Update CHRE revision
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210011>`__
(issue `#341137451 <https://issues.pigweed.dev/issues/341137451>`__)
pw_clock_tree
-------------
The new :ref:`module-pw_clock_tree` module manages generic clock tree
elements such as clocks, clock selectors, and clock dividers.
* `Introduce new ClockDivider class
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211292>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `ClockTree support Element ops
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211149>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Introduce Element may_block()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211148>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
* `Generic clock tree management
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204310>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
pw_clock_tree_mcuxpresso
------------------------
The new :ref:`module-pw_clock_tree_mcuxpresso` module is an NXP
MCUXPresso backend for :ref:`module-pw_clock_tree`.
* `Mcuxpresso module
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204245>`__
(issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
pw_config_loader
----------------
* `Remove unnecessary dep
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210286>`__
pw_cpu_exception_cortex_m
-------------------------
The new crash analysis API provides data about CPU state during exceptions.
See :ref:`module-pw_cpu_exception_cortex_m-crash-facade-setup`.
* `Add crash analysis API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204248>`__
* `Fix incorrect inputs to util_test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211551>`__
* `Fix checks for ARMv8
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210272>`__
pw_emu
------
* `Exclude tests module from the Pigweed Python package
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211977>`__
pw_env_setup
------------
* `PyPI version bump to 0.0.16
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211136>`__
* `Build an extra example pypi distribution
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211134>`__
* `Remove f-strings from github_visitor
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210274>`__
pw_grpc
-------
* `Fix warnings in format strings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211391>`__
pw_hex_dump
-----------
* `Add Android.bp
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212231>`__
pw_libcxx
---------
* `Only enable in clang builds
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211941>`__
pw_log_basic
------------
* `Fixing sign conversion error for logging
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210331>`__
pw_multisink
------------
* `Fix compiler warnings for tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212051>`__
(issue `#343480404 <https://issues.pigweed.dev/issues/343480404>`__)
pw_preprocessor
---------------
* `Remove PW_HAVE_FEATURE
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211016>`__
(issue `#341975367 <https://issues.pigweed.dev/issues/341975367>`__)
pw_rpc
------
* `Include FakeChannelOutput in soong target
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209991>`__
(issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__)
pw_spi_mcuxpresso
-----------------
* `Remove unnecessary debug messages
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210711>`__
pw_stream_uart_mcuxpresso
-------------------------
* `Fix unused parameter warnings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211571>`__
pw_system
---------
:ref:`module-pw_system` usage in Bazel has been simplified by gathering
all required ``pw_system`` components into one target and providing label
flags that can set platform-dependent dependencies.
* `Simplify pw_system usage in Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210116>`__
(issue `#341144405 <https://issues.pigweed.dev/issues/341144405>`__)
pw_thread
---------
* `Fix thread snapshot service test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212111>`__
pw_toolchain
------------
* `Add manual tag to Rust toolchains
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211934>`__
(issue `#342695883 <https://issues.pigweed.dev/issues/342695883>`__)
* `Add clang-apply-replacements plugin
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210405>`__
(issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__)
pw_transfer
-----------
* `Fix transfer_thread_test initialization order
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210352>`__
* `End active transfers when RPC stream changes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209876>`__
pw_uart
-------
* `Add pw_uart to CMakeLists
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210731>`__
pw_unit_test
------------
* `Don't execute multiple test suites at the same time
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210531>`__
* `Ensure alignment of test fixtures
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210278>`__
pw_web
------
* `Move shoelace split panel import
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211940>`__
* `Add split/resize view guide in docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211471>`__
* `Implement split log views with resize
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209471>`__
(issue `#333891204 <https://issues.pigweed.dev/issues/333891204>`__)
Build
=====
Bazel
-----
Clang's ``AddressSanitizer`` is now supported. See
:ref:`docs-automated-analysis-clang-sanitizers`.
* `Support asan in Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211369>`__
(issue `#301487567 <https://issues.pigweed.dev/issues/301487567>`__)
* `Update rules_rust to 0.45.1
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211939>`__
(issue `#342673389 <https://issues.pigweed.dev/issues/https://pwbug.dev/342673389>`__)
* `Explicitly load rules_python in BUILD.bazel files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211361>`__
Targets
=======
rp2040
------
* `Additional bazel build file coverage
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211351>`__
(issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__,
issue `#305746219 <https://issues.pigweed.dev/issues/305746219>`__)
* `Enable thread high water accounting
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210831>`__
* `Update docs to add missing picotool dependency
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210811>`__
* `Save test run log files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210814>`__
* `Increase RPC thread stack size to 16K
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210832>`__
* `Allow using rp2040 devices in bootloader mode
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210525>`__
* `Refresh target docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210404>`__
* `Update openocd flashing instructions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210400>`__
* `Increase device_detector verbosity
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210411>`__
* `Add upstream Bazel platform definition
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211592>`__
* `Renable tests that pass with larger stack frames
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211147>`__
* `Raise minimal stack size to 1KB
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210517>`__
* `Replace exceptions with logging
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210396>`__
OS support
==========
freertos
--------
* `Clarify Bazel documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211052>`__
Docs
====
The new :ref:`docs-github-actions` guide shows you how to set up GitHub Actions
to build and test a Pigweed project when a pull request is received.
* `Add notes about GitHub Actions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211135>`__
(issue `#338083578 <https://issues.pigweed.dev/issues/338083578>`__)
* `Instructions for freertos.BUILD.bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211193>`__
* `Create files in current directory
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206196>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210285>`__
Miscellaneous
=============
.. common_typos_disable
* `Fix typo succesfully->successfully
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210671>`__
* `Update Android.bp after GetAlignedSubspan move
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210518>`__
* `Add link to format
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211011>`__
.. common_typos_enable
------------
May 16, 2024
------------
Highlights (May 2, 2024 to May 16, 2024):
* **Coroutines**: You can now create asynchronous tasks using C++20
:ref:`coroutines <module-pw_async2-guides-coroutines>`.
* **Rust with Bazel**: The Rust toolchain can now be used by downstream projects
using Bazel.
* **More MCUXpresso support**: Several modules have additional support for
projects built using the NXP MCUXpresso SDK, including multiple core support
in :ref:`module-pw_build_mcuxpresso`, a new initiator in
:ref:`module-pw_i2c_mcuxpresso`, a new responder in
:ref:`module-pw_spi_mcuxpresso`, and a new :ref:`module-pw_dma_mcuxpresso`
module.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
.. Note: There is space between the following section headings
.. and commit lists to remind you to write a summary for each
.. section. If a summary is not needed, delete the extra
.. space.
Modules
=======
pw_allocator
------------
* `Fix data race
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208412>`__
(issue `#333386065 <https://issues.pigweed.dev/issues/333386065>`__)
* `Add BucketBlockAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198155>`__
* `Improve namespacing
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206153>`__
* `Use singletons for stateless allocators
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207337>`__
pw_assert
---------
* `Ensure condition does not contain stray %
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208140>`__
(issue `#337268540 <https://issues.pigweed.dev/issues/337268540>`__)
pw_async2
---------
C++20 users can now define asynchronous tasks using
:ref:`module-pw_async2-guides-coroutines`.
* `Move PW_CO_TRY functions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209911>`__
* `Add Coro<T> coroutine API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207690>`__
pw_bloat
--------
Padding is now included as part of utilization in code size reports. This allows
developers to monitor changes in application size that smaller than the used
space alignment defined in the linker script.
* `Add padding to utilization
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209972>`__
(issue `#276370736 <https://issues.pigweed.dev/issues/276370736>`__)
pw_bluetooth
------------
* `Add a constant for max controller delay
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209271>`__
* `Put cmake tests in modules group
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208897>`__
* `Disable emboss enum traits
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208591>`__
(issue `#339029458 <https://issues.pigweed.dev/issues/339029458>`__)
* `Remove hci_vendor
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208313>`__
(issue `#338269786 <https://issues.pigweed.dev/issues/338269786>`__)
pw_bluetooth_proxy
------------------
* `Also support V2 of LE read buffer event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209879>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Use LE read buffer event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209878>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Removing trailing comma in PW_LOG call
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209231>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Allow setting the # of credits to reserve
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208895>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Add cmake build rules
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208653>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Update tests to remove RVNO assumptions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208652>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Reserve ACL LE slots from host
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207671>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
pw_boot_cortex_m
----------------
* `Emit pw_boot_Entry without prologue
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208931>`__
(issue `#339107121 <https://issues.pigweed.dev/issues/339107121>`__)
pw_build
--------
* `pw_cc_test.lib fixup
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210231>`__
(issue `#307825072 <https://issues.pigweed.dev/issues/307825072>`__,
issue `#341109859 <https://issues.pigweed.dev/issues/341109859>`__)
* `Fix type hint
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208137>`__
(issue `#338462905 <https://issues.pigweed.dev/issues/338462905>`__)
pw_build_mcuxpresso
-------------------
:ref:`module-pw_build_mcuxpresso` now can support multiple device cores.
* `Support multiple cores
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208654>`__
pw_config_loader
----------------
* `Add missing types dep
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210236>`__
pw_cpu_exception_cortex_m
-------------------------
* `Add error flag masks
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210072>`__
* `Fix PSP unit test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210071>`__
pw_digital_io_linux
-------------------
* `Add test_utils.h for ASSERT_OK and friends
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209592>`__
* `Minor updates to OwnedFd
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209591>`__
* `Refactor test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196051>`__
pw_dma_mcuxpresso
-----------------
:ref:`module-pw_dma_mcuxpresso` is a new module for working with an MCUXpresso
DMA controller.
* `Module for working with NXP DMA controller
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208655>`__
pw_docs
-------
* `Add inline search to sidebar
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207674>`__
pw_env_setup
------------
* `Remove f-strings from github_visitor
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210274>`__
* `Change Bazel library name
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210198>`__
(issue `#340328100 <https://issues.pigweed.dev/issues/340328100>`__)
* `Add GitHub environment visitor
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210045>`__
(issue `#340900493 <https://issues.pigweed.dev/issues/340900493>`__)
* `Bazel support for config_file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209913>`__
(issue `#340328100 <https://issues.pigweed.dev/issues/340328100>`__)
pw_format
---------
* `Add Rust support for field width and zero padding
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208898>`__
* `Add Rust support for formatting integers in hex
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208415>`__
* `Add test for escaped curly brackets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208291>`__
* `Refactor format string parsing for better core::fmt support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208656>`__
pw_i2c
------
* `Update OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208413>`__
pw_i2c_mcuxpresso
-----------------
The new ``I3cMcuxpressoInitiator`` implements the ``pw_i2c`` initiator interface
using the MCUXpresso I3C driver, allowing normal I2C API's to work after setup.
* `Fix Clang compilation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209191>`__
* `Add i3c initiator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208136>`__
* `Remove swatiwagh from OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208671>`__
pw_ide
------
* `Add .pw_ide.user.yaml to .gitignore
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208894>`__
* `Raise specific error on bad settings file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208132>`__
(issue `#336799314 <https://issues.pigweed.dev/issues/336799314>`__)
pw_libcxx
---------
Added initial support for using LLVM's `libcxx <https://libcxx.llvm.org/>`__ as
a standard C++ library implementation.
* `Minimal implementation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201918>`__
pw_log
------
Logging messages with untyped string arguments is now supported in the Rust
implementation.
.. todo-check: disable
* `Make TODO actionable
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209571>`__
* `Add core::fmt style format string support to Rust API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207331>`__
* `Rename Rust logging API to be less verbose
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207330>`__
* `Add Rust support for untyped strings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206673>`__
.. todo-check: enable
pw_multibuf
-----------
* `Remove deprecated Chunk::DiscardFront
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206676>`__
pw_package
----------
* `Suppress package progress messages
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208331>`__
pw_presubmit
------------
* `Auto fix unsorted-dict-items
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209881>`__
(issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__)
* `Fix missing pico-sdk for docs_build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209931>`__
* `Add repo tool API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179230>`__
* `Exclude all OWNERS from copyright
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209031>`__
pw_proto
--------
* `Create genrule for raw rpc with prefix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209992>`__
(issue `#340749161 <https://issues.pigweed.dev/issues/340749161>`__)
pw_protobuf
-----------
* `Build common.proto with Nanopb+Soong
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209851>`__
(issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__)
pw_protobuf_compiler
--------------------
* `Disable layering check less
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209111>`__
(issue `#323749176 <https://issues.pigweed.dev/issues/323749176>`__)
* `Fix name collisions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208658>`__
* `Disable layering_check
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208932>`__
(issue `#339280821 <https://issues.pigweed.dev/issues/339280821>`__)
* `Fix bazel failure if proto dir is empty
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208135>`__
(issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__)
* `Add a no_prefix test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208138>`__
(issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__)
* `Tests fail to build under cmake
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208271>`__
(issue `#338622044 <https://issues.pigweed.dev/issues/338622044>`__)
pw_result
---------
* `Fix typo in template member
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209667>`__
(issue `#339794389 <https://issues.pigweed.dev/issues/339794389>`__)
pw_rpc
------
* `Include FakeChannelOutput in soong target
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209991>`__
(issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__)
* `Update docs for channel ID remapping
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209431>`__
* `Build compatibility fixes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208893>`__
* `Fix macro name in docs and comments
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208311>`__
pw_spi_mcuxpresso
-----------------
The :ref:`module-pw_spi_mcuxpresso` module now includes an
``McuxpressoResponder`` useing the SPI and DMA drivers from the NXP MCUXpresso
SDK.
* `Add responder implementation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208657>`__
pw_stm32cube_build
------------------
* `Fix a label flag name in documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208231>`__
pw_sys_io_rp2040
----------------
* `Bazel build file update
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209877>`__
(issue `#261603269 <https://issues.pigweed.dev/issues/261603269>`__,
issue `#300318025 <https://issues.pigweed.dev/issues/300318025>`__)
pw_sys_io_stdio
---------------
* `Expand allowed uses beyond host
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208511>`__
pw_sys_io_stm32cube
-------------------
* `Fix build for f1xx family
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208471>`__
pw_tokenizer
------------
* `Clean up rust docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208416>`__
pw_toolchain
------------
Pigweed's Rust toolchain can now be used by downstream projects.
* `Fix typos in newlib_os_interface_stubs.cc
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209952>`__
* `Add clang-apply-replacements plugin
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209539>`__
(issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__)
* `Support Rust toolchains in downstream projects
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209871>`__
* `Add clang-apply-replacements plugin
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208896>`__
(issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__)
* `Fix CMake build on macOS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208139>`__
* `Add no-canonical-system-headers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208156>`__
(issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__)
pw_trace_tokenized
------------------
* `Build compatibility fixes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208893>`__
pw_transfer
-----------
The transfer service now ends active transfers when the underlying stream
changes, avoiding a case where a transfer could become stuck.
* `End active transfers when RPC stream changes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209876>`__
* `Add tests for GetResourceStatus
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209753>`__
* `Add py_proto_library target for update_bundle_proto
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209731>`__
* `GetResoureStatus fix missing return
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208491>`__
* `Lock resource_responder_ access
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208251>`__
pw_unit_test
------------
* `Add missing :config dependency for gtest backend
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208472>`__
Build
=====
bazel
-----
* `Ignore reformatting change in git blame
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210111>`__
(issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__)
* `Fix unsorted-dict-items instances
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209880>`__
(issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__)
* `Remove unnecessary .bazelrc flag
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208659>`__
(issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__)
* `Re-enable sandbox_hermetic_tmp
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208312>`__
(issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__)
Targets
=======
targets/rp2040
--------------
* `pre_init and freertos config
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209554>`__
(issue `#261603269, 300318025 <https://issues.pigweed.dev/issues/261603269, 300318025>`__)
Docs
====
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208171>`__
SEEDs
=====
SEED-0116
---------
* `Set status to On Hold
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208831>`__
Third party
===========
third_party/emboss
------------------
* `Use absolute paths in source dependencies
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209131>`__
(issue `#339467547 <https://issues.pigweed.dev/issues/339467547>`__)
* `Update emboss repo to tag v2024.0501.215421
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208314>`__
(issue `#338675057 <https://issues.pigweed.dev/issues/338675057>`__)
* `Add additional owners for emboss
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208631>`__
third_party/freertos
--------------------
* `Add CM3 support to Bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210211>`__
third_party/perfetto
--------------------
* `Rename proto targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210040>`__
* `Add third party perfetto repo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203618>`__
* `Copybara import
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207490>`__
Miscellaneous
=============
* `Run clang-format
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208911>`__
* `Add roller as WORKSPACE owner
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208900>`__
(issue `#245397913 <https://issues.pigweed.dev/issues/245397913>`__)
-----------
May 1, 2024
-----------
Highlights (Apr 19, 2024 to May 1, 2024):
* **Thread kickoff via pw::Function:** Revamped the Thread API to use
pw::Function. The original Thread API was created before pw::Function was
stable; this change modernizes and increases usability of the Thread API.
* **Thread creation SEED:** Creating threads in Pigweed is difficult due to our
strict adherence to portability. We're considering creating an additional API
that is more usable but less portable than the current approach.
* **Transfer:** Adaptive windowing got a Java implementation, and improvements
to adaptive windowing in C++.
* **Bluetooth:** Initial CLs towards a Bluetooth proxy.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
Added two new allocators: BuddyAlloctor and BumpAllocator (also known as an
arena allocator). Various cleanups and fixes, including splitting the
Block-based allocators to their own files.
* `Add missing return statement
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207171>`__
(issue `#337761967 <https://issues.pigweed.dev/issues/337761967>`__)
* `Remove conflict marker
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206590>`__
* `Move FallbackAllocator implementation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206174>`__
* `Clean up LibCAllocatorTest
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206173>`__
* `Move block allocators to separate files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198154>`__
* `Add BuddyAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195952>`__
* `Make AllMetrics internal
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205737>`__
* `Fix SynchonizedAllocator data race
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205753>`__
(issue `#333386065 <https://issues.pigweed.dev/issues/333386065>`__)
* `Add BumpAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195953>`__
pw_assert
---------
* `Fix support for print_and_abort in Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206853>`__
(issue `#337271435 <https://issues.pigweed.dev/issues/337271435>`__)
pw_async
--------
* `Add missing dispatcher facades to CMake
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204873>`__
(issue `#335866562 <https://issues.pigweed.dev/issues/335866562>`__)
pw_bluetooth
------------
Continue filling out Bluetooth packet definitions; as well as some API
extensions for e.g. RSSI control.
* `Add header alias in command complete events
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207552>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Add Event Codes to emboss
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207510>`__
(issue `#338068316 <https://issues.pigweed.dev/issues/338068316>`__)
* `Add opcode_enum to command and response event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207335>`__
(issue `#338068316 <https://issues.pigweed.dev/issues/338068316>`__)
* `Sync with recent APCF changes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205921>`__
(issue `#336608891 <https://issues.pigweed.dev/issues/336608891>`__)
* `Define Common Data Types
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207470>`__
(issue `#336608891 <https://issues.pigweed.dev/issues/336608891>`__)
* `Add LoopbackCommandEvent
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205920>`__
(issue `#336579564 <https://issues.pigweed.dev/issues/336579564>`__)
* `Support Read RSSI command and event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205919>`__
(issue `#336566041 <https://issues.pigweed.dev/issues/336566041>`__)
* `Comment why we include all emboss headers in emboss_test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203637>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Correct emboss path in doc example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204811>`__
(issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
pw_bluetooth_*
--------------
* `Formatting fixes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204750>`__
pw_bluetooth_proxy
------------------
Start building the Bluetooth proxy subsystem.
* `Rename ProcessH4 to HandleH4
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207651>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Rename passthrough_test.cc to proxy_host_test.cc
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207670>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Move ProxyHost methods to .cc
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207333>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Rename HciProxy to ProxyHost
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207450>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Delete policies functionality
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207332>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Add some emboss helper functions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205741>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Template test emboss packet creation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205740>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Fix ordering of TEST arguments
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205739>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
pw_build
--------
* `Add a `test_main` param to `pw_cc_test`
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206851>`__
(issue `#337277617 <https://issues.pigweed.dev/issues/337277617>`__)
* `Fix using pw_cc_blob_library target in external repos
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206552>`__
pw_build_info
-------------
* `Make the python module importable
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206030>`__
pw_cli
------
New SEED creation tool reduces the burden to create SEEDs. This will open the
door to more contributors creating SEEDs for Pigweed changes and enhancements.
* `Add SEED creation to CLI tool
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186762>`__
* `Handle custom arguments in tools
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204192>`__
* `Add git_repo.py and test to Bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204871>`__
pw_containers
-------------
* `Omit size on FlatMap construction
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201030>`__
pw_cpu_exception_cortex_m
-------------------------
* `Add util_test to tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207791>`__
pw_digital_io_linux
-------------------
* `Move OwnedFd to its own header file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207831>`__
pw_env_setup
------------
* `Update default sysroot version
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204244>`__
(issue `#335438711 <https://issues.pigweed.dev/issues/335438711>`__)
pw_format
---------
* `Better explain core::fmt whitespace parsing in ccomments
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206671>`__
* `Add support for core::fmt style format strings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203830>`__
pw_grpc
-------
* `Support fragmented gRPC messages if an allocator is provided
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204431>`__
(issue `#323924487 <https://issues.pigweed.dev/issues/323924487>`__)
pw_module
---------
* `Include :authors: in generated SEED file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206674>`__
pw_presubmit
------------
* `Separate 'bazel info' stderr
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206350>`__
(issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
* `Save 'bazel info output_base'
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206270>`__
* `Remove --verbose_explanations flag
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205933>`__
* `Use _LOG global for logging
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205913>`__
* `RST format updates
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204241>`__
* `Allow disabling hook creation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205912>`__
* `Drop '.' from Bazel symlinks
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204870>`__
(issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
pw_protobuf
-----------
* `Fix support for import_prefix on protos with options
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204671>`__
pw_rpc
------
Enhancements in pw_rpc to better integrate with pw_grpc.
* `Add private method for sending internal::Packet directly
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185669>`__
(issue `#319162657 <https://issues.pigweed.dev/issues/319162657>`__)
pw_rust
-------
* `Build examples in presubmit
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207338>`__
(issue `#337951363 <https://issues.pigweed.dev/issues/337951363>`__)
* `Fix Rust tokenized logging example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206672>`__
pw_sensors
----------
Sensors subsystem continues moving along; note that most of the discussion and
development is happening in the SEEDs.
* `Add support for triggers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203860>`__
(issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
pw_snapshot
-----------
* `Add python processor tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205761>`__
* `Fix Bazel builds
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205090>`__
pw_spi_mcuxpresso
-----------------
* `Rename flexspi to flexio_spi
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205711>`__
* `Fix Bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205710>`__
pw_stream_uart_mcuxpresso
-------------------------
* `Add interrupt safe write-only UART stream
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207414>`__
pw_string
---------
* `Add ToString for iterables
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206650>`__
* `Add missing array include
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204211>`__
pw_thread
---------
API change to bring pw_thread up to date with pw::Function; see overview.
* `Use pw::Function to start threads
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205760>`__
(issue `#243018475 <https://issues.pigweed.dev/issues/243018475>`__)
* `Fix pw_thread_zephyr compilability
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206970>`__
pw_thread_threadx
-----------------
* `Remove unused dependency
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207191>`__
pw_tls_client
-------------
* `Add CMake facades
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204874>`__
(issue `#335878898 <https://issues.pigweed.dev/issues/335878898>`__)
pw_tokenizer
------------
Enhance the C++ host-side decoder to better handle the full suite of
capabilities, in particulaur, recursive decoding; also some build fixes.
* `Add DecodeOptionallyTokenizedData
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206070>`__
* `Switch detokenize.h docs to Doxygen
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205751>`__
* `Support arbitrary recursion in C++ detokenizer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205770>`__
* `Add missing CMake dep
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204316>`__
pw_toolchain
------------
* `Add clang-tidy suggestion
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206675>`__
pw_transfer
-----------
Adaptive windowing improvements, including C++ enhancementsn to better handle
small window sizes, as well as adding a Java implementation.
* `Add resource_id to all GetResourceStatus responses
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207350>`__
(issue `#336364832 <https://issues.pigweed.dev/issues/336364832>`__)
* `Assume a minimum window size when reserving space
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206890>`__
* `Attempt to recover when receiving invalid size
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206632>`__
* `Implement adaptive windowing in Java
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/147511>`__
pw_unit_test
------------
* `Add support for a test_main in CMake
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204872>`__
(issue `#335865646 <https://issues.pigweed.dev/issues/335865646>`__)
* `Standardize ASSERT_OK_AND_ASSIGN
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205946>`__
* `Clarify status macros are gunit-only
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206050>`__
* `Add IWYU export/private pragmas
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204151>`__
(issue `#335291547 <https://issues.pigweed.dev/issues/335291547>`__)
pw_web
------
* `Fix icons in packaged version
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207551>`__
* `Fix text download format
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206551>`__
* `NPM version bump to 0.0.19
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206330>`__
* `Add user guide page for features and filter syntax
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203632>`__
(issue `#307560371 <https://issues.pigweed.dev/issues/307560371>`__)
Docs
====
docs
----
* `Mention @deprecated in the Doxygen style guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205762>`__
* `Update module docs contributor guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205742>`__
* `Add GitHub pull request template
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205810>`__
* `Require Bazel+GN+CMake for new contributions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204650>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204203>`__
SEEDs
=====
* SEED-0124: `Getting Used Size from Multisink
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188670>`__
(issue `#326854807 <https://issues.pigweed.dev/issues/326854807>`__) landed
* SEED-0128: `Easier thread creation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206631>`__ started
* SEED-0129: `Support PW_ASSERT with non-argument message
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207150>`__ started
Miscellaneous
=============
* `Run clang-format
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207412>`__
* `Remove remaining usages of legacy thread entry
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206856>`__
* `Replace `string_view&` with `string_view`
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204591>`__
.bazelversion
-------------
* `Add file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205918>`__
(issue `#336617748 <https://issues.pigweed.dev/issues/336617748>`__)
Third party
===========
* boringssl: `Add CMake integration
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204875>`__
(issue `#335880025 <https://issues.pigweed.dev/issues/335880025>`__)
* emboss: `Update emboss repo to tag v2024.0419.155605
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204202>`__
(issue `#335724776 <https://issues.pigweed.dev/issues/335724776>`__)
* emboss: `Use COMPILE_LANGUAGE:CXX
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205670>`__
(issue `#336267050 <https://issues.pigweed.dev/issues/336267050>`__)
* fuchsia: `Add defer.h to Bazel build defs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206854>`__
(issue `#337275846 <https://issues.pigweed.dev/issues/337275846>`__)
* npm: `Update package-lock.json
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207336>`__
------------
Apr 18, 2024
------------
.. changelog_highlights_start
Highlights (Apr 4, 2024 to Apr 18, 2024):
* The Python and C++ interfaces of ``pw_transfer`` now support
:ref:`adaptive windowing <module-pw_transfer-windowing>`.
* :ref:`SEED 0117: I3C <seed-0117>` was accepted.
* The new :ref:`docs-quickstart-zephyr` shows you how to set up a
C++-based Zephyr project that's ready to use Pigweed.
.. changelog_highlights_end
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
The new :cpp:class:`pw::allocator::TypedPool` class is a slab allocator
that can allocate a specific object with very low overhead.
``pw::allocator::TypedPool`` is implemented using the new
:cpp:class:`pw::allocator::Pool` interface.
``pw::allocator::TrackingAllocatorImpl`` was renamed to
``pw::allocator::TrackingAllocator``.
* `Add missing soong deps
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203613>`__
* `Add Pool
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195540>`__
* `Update OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203211>`__
* `Rename TrackingAllocatorImpl
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203150>`__
(issue `#326509341 <https://issues.pigweed.dev/issues/326509341>`__)
pw_async2
---------
The new :cpp:class:`pw::async2::PendableAsTask` class is a ``Task`` that
delegates to a type with a ``Pend`` method.
* `Add PendableAsTask
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201920>`__
pw_blob_store
-------------
The ``pw_add_library()`` call for the ``pw_blob_store`` target now compiles
as ``STATIC`` instead of ``INTERFACE`` to be more in line with the Bazel
build.
* `Fix CMakeLists.txt pw_add_library()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203134>`__
pw_bluetooth
------------
* `Formatting fixes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204315>`__
* `LEGetVendorCapabilitiesCommandCompleteEvent v1.04 fields
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204198>`__
* `Add versions - LEGetVendorCapabilitiesCommandCompleteEvent
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203795>`__
(issue `#332924521 <https://issues.pigweed.dev/issues/332924521>`__)
* `Add EventMask and temp field in SetEventMaskCommand
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192256>`__
(issue `#42068631 <https://issues.pigweed.dev/issues/42068631>`__)
* `Store length max in virtual field
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201794>`__
* `Define LEReadMaximumAdvertisingDataLengthCommandComplete
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201951>`__
(issue `#312898345 <https://issues.pigweed.dev/issues/312898345>`__)
pw_bluetooth_sapphire
---------------------
In CIPD ``bt-host`` artifacts are now uploaded to ``fuchsia/prebuilt/bt-host``.
* `Iterators
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203855>`__
(issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
* `Change CIPD upload path
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202690>`__
(issue `#321267610 <https://issues.pigweed.dev/issues/321267610>`__)
* `Bump @fuchsia_sdk
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202490>`__
(issue `#329933586 <https://issues.pigweed.dev/issues/329933586>`__,
issue `#321267476 <https://issues.pigweed.dev/issues/321267476>`__)
pw_build
--------
* `Disable deprecated pragma warnings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203856>`__
(issue `#333448202 <https://issues.pigweed.dev/issues/335328444>`__,
issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
* `Iterators
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
(issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__,
issue `#335024633 <https://issues.pigweed.dev/issues/335024633>`__,
issue `#335021928 <https://issues.pigweed.dev/issues/335021928>`__)
* `Collect wheel fix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202921>`__
* `Disable C23 extension warnings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202830>`__
(issue `#333712899 <https://issues.pigweed.dev/issues/333712899>`__)
pw_build_android
----------------
* `Update module guidance
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203910>`__
* `Update cc_defaults guidance
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203651>`__
* `Make Common Backends static
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202090>`__
(issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__)
pw_build_info
-------------
* `Add missing header file for cmake
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202210>`__
pw_cli
------
The following interfaces were moved from ``pw_presubmit`` to ``pw_cli``
to make them more widely available: :py:class:`pw_cli.file_filter.FileFilter`,
:py:mod:`pw_cli.git_repo`, and :py:class:`pw_cli.tool_runner.ToolRunner`.
The new :py:func:`pw_cli.decorators.deprecated` decorator emits a
deprecation warning when the annotated function is used.
* `Fix argument handling for GitRepo.has_uncommitted_changes()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204232>`__
* `Fix subprocess runner arg concatenation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202844>`__
* `Move FileFilter
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194617>`__
* `Fix commit fallback handling for GitRepo.list_files()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203790>`__
* `Move git_repo to pw_cli
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201279>`__
* `Add Python deprecation decorator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202929>`__
* `Update ToolRunner type hints
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202737>`__
* `Move ToolRunner
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201278>`__
pw_containers
-------------
* `Iterators
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
(issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
pw_cpu_exception_risc_v
-----------------------
The new :ref:`module-pw_cpu_exception_risc_v` backend lays the foundation for
RISC-V CPU exception handling.
* `Add initial backend structure
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188230>`__
pw_env_setup
------------
* `clang
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202591>`__
(issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
pw_hdlc
-------
* `Iterators
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
(issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
pw_ide
------
* `Fixes to support changing working_dir
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204430>`__
(issue `#335628872 <https://issues.pigweed.dev/issues/335628872>`__)
* `Enable cmake.format.allowOptionalArgumentIndentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203638>`__
pw_kvs
------
* `Make Key an alias for string_view
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204590>`__
* `Depend on libraries for fake flash and store tests for Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202212>`__
* `Add libraries to reuse partition and store tests for Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202211>`__
pw_log_zephyr
-------------
* `Tokenize Zephyr shell fprintf
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202734>`__
pw_presubmit
------------
The following interfaces were moved from ``pw_presubmit`` to ``pw_cli``
to make them more widely available: :py:class:`pw_cli.file_filter.FileFilter`,
:py:mod:`pw_cli.git_repo`, and :py:class:`pw_cli.tool_runner.ToolRunner`.
* `Move FileFilter
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194617>`__
* `Add bthost_package step
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203797>`__
(issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
* `Don't overwrite Bazel stdout files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203796>`__
(issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
* `Remove cmake_clang from quick presubmit
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198050>`__
* `Move git_repo to pw_cli
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201279>`__
* `Fix copy/paste bug in _value()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202913>`__
* `Move ToolRunner
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201278>`__
pw_protobuf
-----------
* `Access raw proto values; change RPC packet channel ID
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204152>`__
pw_rpc
------
The new :cpp:func:`pw::rpc::ChangeEncodedChannelId` function lets you rewrite
an encoded packet's channel ID in place. See :ref:`module-pw_rpc-remap`.
* `Access raw proto values; change RPC packet channel ID
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204152>`__
* `Iterators
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
(issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
pw_rpc_transport
----------------
* `Soong lib names now follow style
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203650>`__
pw_sensor
---------
The new :ref:`module-pw_sensor` module is the start of the implementation
of :ref:`SEED 0119: Sensors <seed-0119>`.
* `Fix Python install
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204130>`__
* `Add attribute support to sensor-desc CLI
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203791>`__
(issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
* `Create a sensor-desc CLI
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203670>`__
(issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
* `Update validator schema to JSON schema
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202925>`__
(issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
* `Provide a validator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202912>`__
(issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
* `Add module stub
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202911>`__
(issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
pw_snapshot
-----------
* `Process snapshots based on CPU architecture
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188232>`__
pw_spi_linux
------------
``pw_spi_linux`` now has a basic :ref:`module-pw_spi_linux-cli` that lets
you read from and write to devices.
* `Add pw_spi_linux_cli
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201391>`__
pw_thread_freertos
------------------
* `Use TCB for running stack pointer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188231>`__
pw_tls_client
-------------
* `Only include <sys/time.h> if available
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202555>`__
pw_transfer
-----------
The Python and C++ interfaces now support
:ref:`adaptive windowing <module-pw_transfer-windowing>`.
* `Iterators
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
(issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
* `Implement adaptive windowing in Python
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/147510>`__
* `Implement adaptive windowing in C++
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/146392>`__
* `Convert arguments to std::fstream constructors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203151>`__
(issue `#333957637 <https://issues.pigweed.dev/issues/333957637>`__)
pw_web
------
* `Support creating client without using proto descriptor
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203654>`__
* `NPM version bump to 0.0.18
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203636>`__
* `Fix string manipulation in download logs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203612>`__
(issue `#331480903 <https://issues.pigweed.dev/issues/331480903>`__)
* `Use existing col data when adding new View
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200290>`__
(issue `#331439176 <https://issues.pigweed.dev/issues/331439176>`__)
* `Enable column order on init
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201530>`__
(issue `#329712468 <https://issues.pigweed.dev/issues/329712468>`__)
* `Fix test format of log-source.test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202392>`__
(issue `#333379333 <https://issues.pigweed.dev/issues/333379333>`__)
Build
=====
Bazel
-----
* `Use remote cache in infra
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202754>`__
(issue `#312215590 <https://issues.pigweed.dev/issues/312215590>`__)
Docs
====
The new :ref:`docs-quickstart-zephyr` shows you how to set up a C++-based
Zephyr project that's ready to use Pigweed. The API references for all
functions or methods that return a set of ``pw_status`` codes have been
refactored for consistency. The :ref:`docs-style-doxygen` has been revamped.
* `Add pw_status table for API references
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202739>`__
* `Revamp Doxygen style guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202590>`__
* `Add Zephyr quickstart
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196671>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202150>`__
SEEDs
=====
* (SEED-0117) `pw_i3c
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178350>`__
Miscellaneous
=============
* (clang) `Fix \`std::array\` iterators
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202834>`__
(issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
* (emboss) `Loosen Emboss cmake dependency tracking
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202831>`__
(issue `#333735460 <https://issues.pigweed.dev/issues/333735460>`__)
* (many) `Move maxDiff to be a class attribute
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204150>`__
-----------
Apr 4, 2024
-----------
.. _epoll: https://man7.org/linux/man-pages/man7/epoll.7.html
Highlights (Mar 21, 2024 to Apr 4, 2024):
* **New modules**: :ref:`module-pw_i2c_rp2040` is a Pico SDK implementation of
the ``pw_i2c`` interface, :ref:`module-pw_async2_epoll` is an
`epoll`_-based backend for ``pw_async2``, :ref:`module-pw_spi_linux`
is a Linux backend for ``pw_spi``, :ref:`module-pw_uart` provides
core methods for UART communication, and :ref:`module-pw_bluetooth_proxy`
provides a lightweight proxy host that can be placed between a Bluetooth
host and a Bluetooth controller to add functionality or inspection.
* **Docs updates**: Pigweed's main docs builder now builds the
:ref:`examples <seed-0122-examples>` repo; the examples will be available
at ``https://pigweed.dev/examples``. An experimental complete Doxygen API
reference is now being published to ``https://pigweed.dev/doxygen``. The
:ref:`module-pw_i2c` docs, :ref:`docs-style-rest`, and
:ref:`docs contributors homepage <docs-contrib-docs>` have been revamped.
* **Android platform updates**: Many modules were refactored to follow the
guidance in :ref:`module-pw_build_android` to make it easier to build them in
Soong.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
The new :ref:`module-pw_allocator-api-capabilities` API lets derived allocators
describe what optional features they support. ``pw::Allocator::GetLayout()``
has begun to be deprecated and replaced by ``pw::Allocator::GetRequestedLayout``,
``pw::Allocator::GetUsableLayout()``, and ``pw::Allocator::GetAllocatedLayout()``
to make it easier to distinguish between requested memory, usable memory, and
already used memory. Methods that took ``Layout`` arguments, such as
``pw::Allocator::GetRequestedLayout()``, have been deprecated.
* `Restore DoDeallocate with Layout
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201670>`__
(issue `#332510307 <https://issues.pigweed.dev/issues/332510307>`__)
* `Move Layout and UniquePtr to their own header files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199534>`__
* `Remove Layout from Deallocate and Resize
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198153>`__
* `Add allocation detail storage to TrackingAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198152>`__
* `Distinguish between requested, usable, and allocated sizes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198150>`__
* `Add Capabilities
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197133>`__
pw_assert_log
-------------
* `Follow Soong guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197536>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_async2
---------
The new :cpp:class:`pw::async2::PendFuncTask` class delegates a task to a
provided function.
* `Add Poll::Readiness helper
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201910>`__
* `Fix TSAN for dispatcher_thread_test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201850>`__
* `Add PendFuncTask
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199714>`__
pw_async2_epoll
---------------
.. _epoll: https://man7.org/linux/man-pages/man7/epoll.7.html
The new :ref:`module-pw_async2_epoll` module is an `epoll`_-based backend
for :ref:`module-pw_async2`.
* `Epoll-backed async2 dispatcher
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200233>`__
pw_bluetooth
------------
The :ref:`module-pw_bluetooth-usage` section now shows CMake usage and
the new :ref:`module-pw_bluetooth-contributing` section shows how to
contribute Emboss code.
* `Define LEReadMaximumAdvertisingDataLengthCommandComplete
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201951>`__
(issue `#312898345 <https://issues.pigweed.dev/issues/312898345>`__)
* `Add more opcodes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201130>`__
* `Add example of using to_underlying
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200970>`__
(issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
* `Emboss formatting tweak
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200230>`__
(issue `#331195584 <https://issues.pigweed.dev/issues/331195584>`__)
* `Add cmake to usage guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200012>`__
(issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__)
* `Add opcode_full field to emboss HCI headers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199553>`__
(issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
* `Add enum for opcodes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199671>`__
(issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
* `Update cmake targets to be consistent
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200011>`__
(issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__)
* `Update build files to be consistent
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200010>`__
(issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__)
* `Add emboss ReadBufferSize v1 event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199070>`__
(issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
* `Add emboss contributing section to docs.rst
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199531>`__
(issue `#331195584 <https://issues.pigweed.dev/issues/331195584>`__)
* `protocol.h comments tweak
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199532>`__
(issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
pw_bluetooth_proxy
------------------
The new :ref:`module-pw_bluetooth_proxy` module provides a lightweight
proxy host that can be placed between a Bluetooth host and a Bluetooth
controller to add functionality or inspection.
* `Move to cpp23::to_underlying
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200971>`__
(issue `#331281133 <https://issues.pigweed.dev/issues/331281133>`__)
* `Use emboss OpCode enum
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199554>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
* `Bluetooth proxy module and initial classes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197290>`__
(issue `#326496952 <https://issues.pigweed.dev/issues/326496952>`__)
pw_bluetooth_sapphire
---------------------
``pw_bluetooth_sapphire`` now supports emulation, Fuchsia unit testing, and
ARM64 build targets.
* `Add arm64 release variant
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202050>`__
(issue `#332928957 <https://issues.pigweed.dev/issues/332928957>`__)
* `Stub bt-host CIPD manifest
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201390>`__
(issue `#332357274, 321267610 <https://issues.pigweed.dev/issues/332357274, 321267610>`__)
* `Fuchsia testing support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198270>`__
(issue `#331692493, 42178254 <https://issues.pigweed.dev/issues/331692493, 42178254>`__)
* `Add emulator start workflow
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200270>`__
(issue `#321267689 <https://issues.pigweed.dev/issues/321267689>`__)
pw_build
--------
Modules can now be nested in subdirectories, which paves the way for
refactoring how modules are organized in the upstream Pigweed repo.
:ref:`module-pw_build-project_builder` is a new lightweight build command
for projects that need to run multiple commands to perform a build.
* `Allow nesting Pigweed modules in subdirectories
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201114>`__
* `Add alwayslink option to pw_cc_blob_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201110>`__
* `ProjectBuilder documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200791>`__
* `BuildRecipe auto_create_build_dir option
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200830>`__
* `Defer build directory existence check
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200771>`__
pw_build_android
----------------
* `Define rule with static libs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200351>`__
(issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__)
pw_build_info
-------------
The new ``pw::build_info::LogBuildId()`` function lets you print a GNU
build ID as hex.
* `Add log function of GNU build ID
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199471>`__
* `Fix Bazel baremetal compatibility
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199470>`__
pw_bytes
--------
* `Add example to docs of using _b suffix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201350>`__
pw_channel
----------
The new :cpp:type:`pw::channel::LoopbackDatagramChannel` and
:cpp:type:`pw::channel::LoopbackByteChannel` aliases provide channel
implementations that read their own writes. The new
:cpp:class:`pw::channel::ForwardingChannelPair` class lets you connect two
subsystems with datagram channels without implementing a custom channel.
* `Return status from PollReadyToWrite
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200995>`__
* `Rename methods to Pend prefix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201090>`__
* `Add loopback channel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199150>`__
* `Split open bits for read and write
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199712>`__
* `Seek is not async
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199713>`__
* `Set closed bit on FAILED_PRECONDITION
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199710>`__
* `Respect sibling closure
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199035>`__
* `Introduce forwarding channels
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197353>`__
pw_chrono
---------
* `Update OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
* `Follow Soong guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198290>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_cli
------
The new ``pw_cli.alias`` Python module lets you create ``pw`` subcommands
that are effectively command line aliases. See :ref:`module-pw_cli-aliases`.
* `Move plural()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201630>`__
* `Move status_reporter to pw_cli
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201113>`__
* `Add pw ffx alias
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200770>`__
(issue `#329933586 <https://issues.pigweed.dev/issues/329933586>`__)
pw_digital_io
-------------
* `Update OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__
pw_emu
------
* `Fix a TypeError in TemporaryEmulator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200832>`__
(issue `#316080297 <https://issues.pigweed.dev/issues/316080297>`__)
pw_env_setup
------------
* `Run npm log viewer setup script after install
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200211>`__
pw_function
-----------
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199092>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_hdlc
-------
The new :cpp:class:`pw::hdlc::Router` class is an experimental async HDLC
router that uses :ref:`module-pw_channel`.
* `Document members of router
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201115>`__
* `Add async router
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195538>`__
* `Fix sitenav
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196499>`__
pw_i2c
------
The :ref:`module-pw_i2c` docs have been revamped.
* `Revamp docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196330>`__
* `Update OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__
* `Update OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
pw_i2c_rp2040
-------------
The new :ref:`module-pw_i2c_rp2040` module implements the :ref:`module-pw_i2c`
interface using the Raspberry Pi Pico SDK.
* `Initiator implementation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173552>`__
(issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
pw_ide
------
:py:func:`pw_ide.settings.PigweedIdeSettings.compdb_searchpaths` now accepts
globs. The new :py:func:`pw_ide.settings.PigweedIdeSettings.targets_exclude`
method lets you specify a list of GN targets that code analysis should ignore.
* `Support comp DB search path globs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200908>`__
* `Move status_reporter to pw_cli
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201113>`__
* `Support including and/or excluding targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195975>`__
pw_libc
-------
* `Include strncpy
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199110>`__
(issue `#316936782 <https://issues.pigweed.dev/issues/316936782>`__)
pw_log
------
* `Follow Soong guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197536>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_log_basic
------------
* `Fix Soong definitions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199034>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_log_null
-----------
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199090>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_log_tokenized
----------------
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198735>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_minimal_cpp_stdlib
---------------------
* `Clarify purpose
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200792>`__
pw_module
---------
* `Jinja template refactor
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201751>`__
* `Overwrite prompt with diff display
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201851>`__
* `Allow nesting Pigweed modules in subdirectories
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201114>`__
* `Add OWNERS file during module creation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200831>`__
pw_multibuf
-----------
* `Replace Mutex with ISL
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200996>`__
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199091>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_polyfill
-----------
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199094>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
* `Simplify backported features table
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197891>`__
pw_preprocessor
---------------
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199031>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_presubmit
------------
Pigweed's main docs builder now builds the :ref:`examples <seed-0122-examples>`
repo; the examples will be available at ``https://pigweed.dev/examples``.
An experimental complete Doxygen API reference is now being published to
``https://pigweed.dev/doxygen``.
* `Include examples repo docs in docs_builder
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201990>`__
(issue `#300317433 <https://issues.pigweed.dev/issues/300317433>`__)
* `Move plural()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201630>`__
* `Include doxygen html in docs_build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198553>`__
* `Refactor Python Black formatter support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194417>`__
* `Refactor Bazel formatter support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194416>`__
* `Refactor GN formatting support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194415>`__
(issue `#326309165 <https://issues.pigweed.dev/issues/326309165>`__)
* `Make ToolRunner capture stdout/stderr by default
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200972>`__
* `Update buildifier invocation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200350>`__
* `Switch format test data to importlib
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200790>`__
* `Skip gn_teensy_build on mac-arm64
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199670>`__
pw_protobuf
-----------
* `Support full java protos
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200530>`__
(issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__)
pw_python
---------
* `Update setup.sh requirements
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200994>`__
pw_result
---------
* `Avoid duplicate symbols with Soong
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201277>`__
(issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__)
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199033>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_router
---------
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199130>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
* `Add Android common backends as dep
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198390>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_rpc
------
* `List dependencies directly
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199533>`__
(issue `#331226283 <https://issues.pigweed.dev/issues/331226283>`__)
pw_rpc_transport
----------------
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199093>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_span
-------
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199032>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_spi
------
* `Update OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__
* `Update OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
pw_spi_linux
------------
Linux functionality that was previously in :ref:`module-pw_spi` has been
moved to its own module, :ref:`module-pw_spi_linux`.
* `Move linux_spi from pw_spi to its own module
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201351>`__
pw_status
---------
The new ``pw::StatusWithSize::size_or()`` convenience method lets you return
a default size in place of ``pw::StatusWithSize::size()`` when the status is
not OK.
* `Add StatusWithSize::size_or
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198151>`__
pw_stream_shmem_mcuxpresso
--------------------------
* `Fix interrupt pending check
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198070>`__
(issue `#330225861 <https://issues.pigweed.dev/issues/330225861>`__)
pw_sync
-------
* `Follow Soong guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197872>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_sys_io
---------
* `Update OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
* `Fix Soong definitions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199034>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_thread
---------
* `Follow Soong guidance
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199030>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_toolchain
------------
* `Fix Rust GN host build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201831>`__
* `Define as cc_static_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198734>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
* `Remove unusued source set
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200190>`__
(issue `#331260098 <https://issues.pigweed.dev/issues/331260098>`__)
* `LLVM compiler-rt builtins
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198593>`__
pw_trace_tokenized
------------------
* `Fix static initialization
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200232>`__
pw_transfer
-----------
New ``pw_transfer`` macros:
:c:macro:`PW_TRANSFER_LOG_DEFAULT_CHUNKS_BEFORE_RATE_LIMIT`,
:c:macro:`PW_TRANSFER_LOG_DEFAULT_RATE_PERIOD_MS`,
:c:macro:`PW_TRANSFER_CONFIG_LOG_LEVEL`, and
:c:macro:`PW_TRANSFER_CONFIG_DEBUG_DATA_CHUNKS`.
* `Make numerous logging adjustments
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194750>`__
pw_uart
-------
The new :ref:`module-pw_uart` module defines core methods for UART
communication.
* `Create OWNERS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200750>`__
* `Added UART interface
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181710>`__
pw_unit_test
------------
* `Add failing results test record
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197852>`__
pw_web
------
* `NPM version bump to 0.0.17
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201091>`__
* `Fix logs not appearing in pw_console server
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200793>`__
(issue `#331483789 <https://issues.pigweed.dev/issues/331483789>`__)
Build
=====
Bazel
-----
* `Add missing Python deps
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199850>`__
(issue `#331267896 <https://issues.pigweed.dev/issues/331267896>`__)
* `Localize remaining backend label flags
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199036>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
Docs
====
* `Mention that Windows flow needs admin rights
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202030>`__
* `Update reST style guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201650>`__
* `Organize the documentation style guides
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201116>`__
* `Update references to quickstart/bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200131>`__
(issue `#325472122 <https://issues.pigweed.dev/issues/325472122>`__)
* `Simplify module creation docs using script
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200231>`__
* `Generate doxygen html output locally
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199711>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198810>`__
SEEDs
=====
* (SEED-0117) `Update status to Last Call
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200710>`__
* (SEED-0126) `Claim SEED number
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200911>`__
* (SEED-0127) `Reading sensor data
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198134>`__
Third party
===========
* (Emboss) `Assume newer emboss version 2/2
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197363>`__
(issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__)
* (FreeRTOS) `Fix typo in docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201330>`__
* (Fuchsia) `Copybara import
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200712>`__
(issue `#331281133 <https://issues.pigweed.dev/issues/331281133>`__)
Miscellaneous
=============
* `Delete move constructors of buffer wrappers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200753>`__
* (Soong) `Remove _headers from lib names
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198330>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
* (mbedtls) `Avoid the use of unsupported libc functions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199131>`__
(issue `#316936782 <https://issues.pigweed.dev/issues/316936782>`__)
* (nanopb) `Fix nanopb_pb2.py generation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200772>`__
------------
Mar 22, 2024
------------
Highlights (Mar 7, 2024 to Mar 22, 2024):
* Pigweed's minimum supported Python version was changed to 3.10.
* Setting the new ``pw_build_TEST_TRANSITIVE_PYTHON_DEPS`` flag to ``false``
in your project's ``.gn`` file turns off testing and linting of transitive
dependencies in ``pw_python_package`` rules, which can speed up build
times significantly.
* The new :ref:`module-pw_log_android` module is a ``pw_log`` backend for
Android and the new :ref:`module-pw_build_android` module provides tools to
help build Pigweed in Android platform applications.
* :ref:`seed-0120` introduces ``pw_sensor``, a module that will handle
Pigweed's upcoming sensor framework.
* The new :c:macro:`PW_LOG_EVERY_N` and :c:macro:`PW_LOG_EVERY_N_DURATION`
macros provide rate-limited logging.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
.. _//pw_allocator/examples: https://cs.opensource.google/pigweed/pigweed/+/main:pw_allocator/examples
The :ref:`module-pw_allocator` docs have been revamped. Code examples from
the docs are now extracted from complete examples that are built and tested
alongside the rest of the main Pigweed repo; see `//pw_allocator/examples`_.
* `Improve size report accuracy
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196492>`__
* `Add buffer utilities
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195353>`__
* `Improve UniquePtr ergonomics
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196181>`__
* `Various API modifications
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195973>`__
* `Add IsEqual
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195954>`__
* `Soft-deprecate heap_viewer.py
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195253>`__
(issue `#328648868 <https://issues.pigweed.dev/issues/328648868>`__)
* `Move code snippets from docs to examples
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195190>`__
(issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__)
* `Clean up sources files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194948>`__
* `Remove erroneous quotes around tagline
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195514>`__
* `Refactor code size reports
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194947>`__
* `Remove metrics.cc
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195450>`__
(issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
* `Fix move semantics for UniquePtr
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195470>`__
* `Refactor docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194871>`__
(issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__)
* `Make metrics configurable
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193621>`__
(issue `#326509341 <https://issues.pigweed.dev/issues/326509341>`__)
pw_assert
---------
* `Add keep_dep tags to backend_impl
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197531>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
* `Introduce :backend, :backend_impl
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196531>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
* `Apply formatting fixes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195951>`__
pw_assert_basic
---------------
* `Fix BUILD.bazel file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196292>`__
(issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
pw_bluetooth
------------
* `Add command complete event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196030>`__
(issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
* `Add command complete event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195451>`__
(issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
* `Add H4 packet indicators in emboss
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195535>`__
(issue `#326499682 <https://issues.pigweed.dev/issues/326499682>`__)
* `Reformat l2cap_frames.emb
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194790>`__
pw_bluetooth_sapphire
---------------------
* `Use amd64 SDK
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197510>`__
(issue `#330214852 <https://issues.pigweed.dev/issues/330214852>`__)
* `Fuchsia SDK example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__
(issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__)
pw_build
--------
Setting the new ``pw_build_TEST_TRANSITIVE_PYTHON_DEPS`` flag to ``false``
in your project's ``.gn`` file turns off testing and linting of transitive
dependencies in ``pw_python_package`` rules, which can speed up build
times significantly.
* `Option to not transitively run py .tests and .lint deps
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186195>`__
pw_build_android
----------------
The new :ref:`module-pw_build_android` module provides tools to help build
Pigweed in Android platform applications.
* `Add new utils module
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195139>`__
(issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
pw_bytes
--------
The new :cpp:func:`pw::bytes::ExtractBits` helper extracts bits between
specified left bit and right bit positions. New Rust helpers were added;
see `Crate pw_bytes <./rustdoc/pw_bytes>`_.
* `Add ExtractBits template
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196310>`__
(issue `#329435173 <https://issues.pigweed.dev/issues/329435173>`__)
* `Add Rust helpers for contcatenating const slices and strs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187651>`__
pw_channel
----------
Datagram-to-byte conversions must now be explicit.
* `Enable GetWriteAllocator function
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197534>`__
* `Require explicit datagram-to-byte conversions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197650>`__
* `Remove max_bytes argument from ReadPoll
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197352>`__
* `Support datagram-to-byte conversions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196210>`__
* `Handle closed channels in base
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194739>`__
pw_checksum
-----------
* `Add missing #include <array>
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196530>`__
(issue `#329594026 <https://issues.pigweed.dev/issues/329594026>`__)
pw_chre
-------
* `Remove unused files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170792>`__
pw_containers
-------------
* `ConstexprSort in FlatMap takes an iterator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197217>`__
(issue `#330072104 <https://issues.pigweed.dev/issues/330072104>`__)
* `Add move constructors to queues
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197072>`__
pw_digital_io_linux
-------------------
The new ``pw_digital_io_linux`` CLI tool lets you configure a GPIO line as an
input and gets its value, or configure a line as an output and set its value.
* `Add Android.bp
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194432>`__
* `Add test CLI
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194431>`__
pw_docgen
---------
* `Single-source the module metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193333>`__
(issue `#292582625 <https://issues.pigweed.dev/issues/292582625>`__)
pw_env_setup
------------
Pigweed's minimum supported Python version was changed to 3.10.
* `Update min Python version to 3.10
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197332>`__
(issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
* `Update CIPD rust version
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194620>`__
* `Use amd64 SDK
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197510>`__
(issue `#330214852 <https://issues.pigweed.dev/issues/330214852>`__)
* `Fuchsia SDK example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__
(issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__)
pw_format
---------
Initital support for untyped specifiers (``%v``) was added.
* `Enhance Rust tests to check for arguments
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196433>`__
(issue `#329507809 <https://issues.pigweed.dev/issues/https://pwbug.dev/329507809>`__)
* `Add initial support for untyped specifiers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187650>`__
pw_hdlc
-------
The newly public :cpp:class:`pw::hdlc::Encoder` class supports gradually
encoding frames without ever holding an entire frame in memory at once.
* `Expose Encoder
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197535>`__
pw_hex_dump
-----------
CMake support was added.
* `Add CMake support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198170>`__
pw_json
-------
* `Move examples outside of the pw namespace
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195890>`__
pw_libc
-------
* `Define LIBC_FAST_MATH for the faster integral fixed point sqrt
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196350>`__
(issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
* `Add uksqrtui to stdfix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196230>`__
(issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
* `Include sqrtur and expk in stdfix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195256>`__
(issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
pw_log
------
The new :c:macro:`PW_LOG_EVERY_N` and :c:macro:`PW_LOG_EVERY_N_DURATION`
macros provide rate-limited logging.
* `Add rate limit log statements
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183870>`__
* `Add keep_dep tags to backend_impl
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197531>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
* `Introduce localized backend label flags
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196498>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
* `Run bpfmt on all Android.bp
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195490>`__
(issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
pw_log_android
--------------
The new :ref:`module-pw_log_android` module is a ``pw_log`` backend for
Android.
* `Fix Soong build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197830>`__
* `Add pw_log_android_stderr
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195050>`__
(issue `#328281789 <https://issues.pigweed.dev/issues/328281789>`__)
* `Add module documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196410>`__
pw_malloc
---------
* `Add backend label flags
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196610>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
pw_multibuf
-----------
:cpp:class:`pw::multibuf::Stream` is a new multibuf-backed ``pw_stream``
implementation that can read from and write to a multibuf.
:cpp:class:`pw::multibuf::SimpleAllocator` is a simple, first-fit variant
of :cpp:class:`pw::multibuf::MultiBufAllocator`.
* `Add stream implementation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196354>`__
* `Add empty() function
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197351>`__
* `Pass reference instead of pointer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197132>`__
* `Add SimpleAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195129>`__
pw_package
----------
* `Match Emboss version used by Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197359>`__
(issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__)
pw_polyfill
-----------
* `Update __cplusplus macro for C++23; support C
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196113>`__
* `Remove PW_INLINE_VARIABLE
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196122>`__
* `Detect C23
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195266>`__
(issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
pw_presubmit
------------
* `Suppress stdout option for rst_format
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197890>`__
* `Begin formatter modularization
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193714>`__
(issue `#326309165 <https://issues.pigweed.dev/issues/326309165>`__)
* `Switch default formatter to black
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190453>`__
(issue `#261025545 <https://issues.pigweed.dev/issues/261025545>`__)
* `Fuchsia SDK example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__
(issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__)
pw_rpc
------
* `Support full java protos
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196231>`__
(issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__)
* `Move some headers from srcs to hdrs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196850>`__
(issue `#323749176 <https://issues.pigweed.dev/issues/323749176>`__)
* `Add TryFinish API for pw_rpc stream
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195126>`__
(issue `#328462705 <https://issues.pigweed.dev/issues/328462705>`__)
* `Remove deprecated functions from Java client
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193503>`__
pw_rust
-------
* `Tweak docs for Rust tokenized logging example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195351>`__
pw_sensor
---------
:ref:`seed-0120` introduces ``pw_sensor``, a module that will handle
Pigweed's upcoming sensor framework.
* `Add configuration SEED
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183150>`__
pw_spi
------
* `Update Android.bp to conform with new style
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197410>`__
pw_stream_shmem_mcuxpresso
--------------------------
* `Fix interrupt pending check
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198070>`__
(issue `#330225861 <https://issues.pigweed.dev/issues/330225861>`__)
pw_sync_stl
-----------
* `Android.bp: Add missing dependency on pw_sync_headers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197030>`__
pw_sys_io
----------
* `Add backend label flags
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196610>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
pw_sys_io_rp2040
----------------
* `Use callbacks to block on input
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191490>`__
(issue `#324633376 <https://issues.pigweed.dev/issues/324633376>`__)
pw_sys_io_stm32cube
-------------------
* `Fix build for f0xx, f1xx and f3xx families
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195871>`__
pw_thread_zephyr
-----------------
* `Apply formatting fixes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195951>`__
pw_tokenizer
------------
The Rust library's hashing code was updated to support multi-input hashing.
* `Refactor Rust hash code to allow multi-input hashing
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186310>`__
pw_transfer
-----------
The TypeScript client now has an ``abort()`` method for ending a transfer
without a completion chunk and a ``terminate()`` method for ending a transfer
with a completion chunk.
* `Inline TRANSFER_CLIENT_DEPS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198592>`__
* `Support full java protos
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196231>`__
(issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__)
* `Add abort() and terminate() apis
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194910>`__
* `Update the proxy to only consider transfer chunks
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196170>`__
* `Fix Java client timeouts in terminating state
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195123>`__
pw_unit_test
------------
The new :cpp:class:`pw::unit_test::TestRecordEventHandler` class is a
predefined event handler that outputs a test summary in Chromium JSON Test
Results format.
* `Flag to disable cmake pw_add_test calls
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197530>`__
(issue `#330205620 <https://issues.pigweed.dev/issues/330205620>`__)
* `Add duplicate test case
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197170>`__
* `Localize the label flags
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196670>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
* `Add test record event handler
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194050>`__
* `Adding googletest_handler_adapter to cmake
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195070>`__
pw_watch
--------
Changes to Emboss files now trigger rebuilds.
* `Add emboss files to default watch patterns
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195387>`__
pw_web
------
* `NPM version bump to 0.0.16
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198291>`__
* `Update createLogViewer to use union types
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198210>`__
(issue `#330564978 <https://issues.pigweed.dev/issues/330564978>`__)
* `Include file information in browser logs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196510>`__
(issue `#329680229 <https://issues.pigweed.dev/issues/329680229>`__)
* `NPM version bump to 0.0.15
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196120>`__
Build
=====
Bazel
-----
The new :ref:`module-pw_build-bazel-pw_facade` Bazel macro makes it easier
to create a :ref:`facade <docs-facades>`.
* `Remove the deprecated pw_cc_facade macro
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196121>`__
(issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
* `Treat Rust warnings as errors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196436>`__
(issue `#329685244 <https://issues.pigweed.dev/issues/https://pwbug.dev/329685244>`__)
* `Localize backend label flags
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196232>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
* `Use pw_facade
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195383>`__
(issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
* `Introduce pw_facade
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193648>`__
(issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
* `Fix bazel query
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195138>`__
Language support
================
Python
------
* `Use future annotations
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198570>`__
* `Use future annotations
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198051>`__
* `Remove PathOrStr variables
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197538>`__
* `Switch from typing.Optional[...] to "... | None"
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197347>`__
(issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
* `Switch from typing.Union to "|"
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197346>`__
(issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
* `Use argparse.BooleanOptionalAction
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197345>`__
(issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
* `Use pathlib.Path.is_relative_to()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197344>`__
(issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
* `Switch from typing.Dict to dict
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197343>`__
(issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
* `Switch from typing.Tuple to tuple
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197342>`__
(issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
* `Switch from typing.List to list
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197341>`__
(issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
OS support
==========
Zephyr
------
* `Add action for installing Zephyr SDK
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194629>`__
Docs
====
The new :ref:`CLI style guide <docs-pw-style-cli>` outlines how CLI utilities
in upstream Pigweed should behave.
.. todo-check: disable
* `Add CLI style guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197010>`__
(issue `#329532962 <https://issues.pigweed.dev/issues/329532962>`__)
* `Move TODO style guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197730>`__
* `Fix redirect paths
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197368>`__
(issue `#324241028 <https://issues.pigweed.dev/issues/324241028>`__)
* `Fix code-block indentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197533>`__
* `Add redirects infrastructure and docs contributor section
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197339>`__
(issue `#324241028 <https://issues.pigweed.dev/issues/324241028>`__)
* `Fix some incorrect target names
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196495>`__
(issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
* `Fix mentions of sample_project
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195974>`__
(issue `#322859039 <https://issues.pigweed.dev/issues/322859039>`__)
* `TOC entry for API documentation from source
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195970>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195354>`__
.. todo-check: enable
Third party
===========
* `Minor build file formatting fixes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197369>`__
* (Emboss) `Assume newer emboss version 1/2
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197362>`__
(issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__)
* (STM32Cube) `Fix bazel hal driver build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195870>`__
-----------
Mar 7, 2024
-----------
Highlights (Feb 22, 2024 to Mar 7, 2024):
* The new :ref:`module-pw_digital_io_linux` module is a
:ref:`module-pw_digital_io` backend for Linux userspace.
* :cpp:class:`pw::multibuf::MultiBufAllocator` class is a new interface
for allocating ``pw::multibuf::MultiBuf`` objects.
* The ``pw_web`` log viewer now captures browser console logs. It also
now supports creating log stores and downloading logs from stores.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
* `Remove split_free_list_allocator.cc from Android.bp
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194551>`__
* `Add missing dep
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194231>`__
* `Use BlockAllocator instead of alternatives
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188354>`__
* `Make TrackingAllocator correct by construction
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193330>`__
pw_assert_log
-------------
* `Depend on pw_log_headers in Android.bp
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194434>`__
* `Fix PW_HANDLE_CRASH to handle 0 args
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194450>`__
(issue `#327201811 <https://issues.pigweed.dev/issues/327201811>`__)
pw_async2
---------
* `Address post-submit comments
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194693>`__
* `Add converting constructors to Poll
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193593>`__
pw_blob_store
-------------
* `Set module name to BLOB
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195170>`__
pw_bluetooth
------------
* `Add hci_data.emb
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194631>`__
(issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
* `Add ISO feature bit to controllers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194550>`__
* `Add ISO definitions to Controller
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194470>`__
pw_build
--------
* `Remove FUZZTEST_OPTS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189317>`__
* `Fix ProjectBuilder recipe percentage
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194392>`__
pw_config_loader
----------------
* `Support custom overloading rules
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190833>`__
pw_containers
-------------
* `Rename VariableLengthEntryQueue
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187311>`__
* `Rename VariableLengthEntryQueue files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187310>`__
* `VariableLengthEntryQueue C++ API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169910>`__
pw_digital_io_linux
-------------------
The new :ref:`module-pw_digital_io_linux` module is a
:ref:`module-pw_digital_io` backend for Linux userspace.
* `Introduce new module
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194430>`__
pw_json
-------
* `Update example; fix typo and declaration order
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194411>`__
pw_libc
-------
* `Add stdfix target
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194628>`__
(issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
* `Facilitate next llvm-libc roll
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194603>`__
pw_log
------
* `Fix stdout race in println_backend_test_test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195122>`__
(issue `#328498798 <https://issues.pigweed.dev/issues/328498798>`__)
* `Add tests for Rust printf and println backends
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194952>`__
* `Show child docs in site nav
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193830>`__
* `Fix the Pigweed Soong build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193690>`__
(issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
pw_module
---------
* `Remove README.md check
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194934>`__
(issue `#328265397 <https://issues.pigweed.dev/issues/328265397>`__)
pw_multibuf
-----------
The new :cpp:class:`pw::multibuf::MultiBufAllocator` class is an interface
for allocating ``pw::multibuf::MultiBuf`` objects.
* `Add MultiBufAllocator interface
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180840>`__
* `Deduplicate const+non_const iterators
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194405>`__
* `Clean up API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194600>`__
(issue `#327673957 <https://issues.pigweed.dev/issues/327673957>`__)
* `Add +=N and +n operators to iterator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194310>`__
* `Add slicing operations to MultiBuf
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192895>`__
pw_presubmit
------------
* `Remove unused presubmit step
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194940>`__
pw_proto_compiler
-----------------
* `strip_import_prefix + options
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194949>`__
(issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__)
pw_result
---------
* `Add constructor deduction guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194612>`__
pw_rpc
------
The newly public :cpp:class:`pw::rpc::CloseAndWaitForCallbacks` function
abandons an RPC and blocks on the completion of any running callbacks.
* `Expose CloseAndWaitForCallbacks in client call API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194697>`__
pw_rpc_transport
----------------
* `Add log for no packet available
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194592>`__
pw_rust
-------
* `Add Rust tokenized logging example
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181268>`__
pw_stream_uart_mcuxpresso
-------------------------
``pw_stream_uart_mcuxpresso`` now supports direct memory access reads and
writes.
* `Fix code examples in docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194630>`__
* `Implement DoRead DMA
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192893>`__
(issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
* `Implement DoWrite DMA
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192892>`__
(issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
* `Implement init / deinit
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192891>`__
(issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
* `USART DMA scaffolding
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192890>`__
(issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
pw_string
---------
``pw::InlineByteString`` is a new alias of ``pw::InlineBasicString<std::byte>``
that can be used as a simple and efficient byte container.
* `Add ToString for Result and Poll
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194621>`__
* `Support InlineBasicString<std::byte>; InlineByteString alias
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194710>`__
(issue `#327497061 <https://issues.pigweed.dev/issues/327497061>`__)
pw_sync
-------
* `Allow implict conversion when moving BorrowedPointer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194394>`__
pw_tokenizer
------------
* `Fix missing bazel filegroup
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194399>`__
* `Add Detokenizer constructor with elf binary section
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190650>`__
* `Add code size optimization to Rust implementation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193504>`__
pw_toolchain_bazel
------------------
* `Apply more common attrs to cc_toolchain targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194890>`__
* `Support Windows in toolchain template build files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194591>`__
pw_transfer
-----------
* `Respect user-specified resource size
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194935>`__
* `Temporarily disable broken integration test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194850>`__
* `Only request a single chunk in test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194151>`__
(issue `#323386167 <https://issues.pigweed.dev/issues/323386167>`__)
* `Fix WindowPacketDropper proxy filter
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194030>`__
(issue `#322497823 <https://issues.pigweed.dev/issues/322497823>`__)
pw_unit_test
------------
The :ref:`module-pw_unit_test` docs have been revamped. Using the full upstream
GoogleTest backend with ``simple_printing_main`` in Bazel has been fixed.
* `Update docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193671>`__
* `Fix googletest backend
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190593>`__
(issue `#324116813 <https://issues.pigweed.dev/issues/324116813>`__)
pw_watch
--------
``pw_watch`` now rebuilds when Bazel files are changed.
* `Add bazel files to default watch patterns
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195310>`__
(issue `#328619290 <https://issues.pigweed.dev/issues/328619290>`__)
pw_web
------
The ``pw_web`` log viewer now captures browser console logs. It also
now supports creating log stores and downloading logs from stores.
* `Capture browser logs in the log viewer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194451>`__
(issue `#325096768 <https://issues.pigweed.dev/issues/325096768>`__)
* `Create log store and enable download logs from it
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186874>`__
(issue `#316966729 <https://issues.pigweed.dev/issues/316966729>`__)
Bazel
-----
* `Update rust_crates in Bazel WORKSPACE
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194938>`__
* `Mark more targets testonly
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193626>`__
(issue `#324116813 <https://issues.pigweed.dev/issues/324116813>`__)
Docs
====
The new :ref:`protobuf style guide <docs-pw-style-protobuf>` describes how
protobufs should be styled throughout Pigweed.
* `Add protobuf style guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190723>`__
(issue `#232867615 <https://issues.pigweed.dev/issues/232867615>`__)
* `Clarify that Pigweed doesn't support msan
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194877>`__
(issue `#234876100 <https://issues.pigweed.dev/issues/234876100>`__)
* `Clarify rvalue docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194696>`__
* `Reorder tocdepth and title
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193970>`__
* `Prefer rvalue references
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193647>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193620>`__
Third party
===========
* `Android.bp: Export fuchsia_sdk_lib_stdcompat headers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194370>`__
* (Emboss) `Support latest version of Emboss in GN
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194876>`__
* (Emboss) `Add CMake support for emboss
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194400>`__
(issue `#326500136 <https://issues.pigweed.dev/issues/326500136>`__)
* (FreeRTOS) `Tidy up Bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193633>`__
(issue `#326625641 <https://issues.pigweed.dev/issues/326625641>`__)
* (FreeRTOS) `Create Bazel build template
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193645>`__
(issue `#326625641 <https://issues.pigweed.dev/issues/326625641>`__)
* (STM32Cube) `Build template formatting fixes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194723>`__
Miscellaneous
=============
* `Unrecommendify
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194852>`__
* `Clean up Python proto imports
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193641>`__
(issue `#241456982 <https://issues.pigweed.dev/issues/241456982>`__)
------------
Feb 23, 2024
------------
Highlights (Feb 9, 2024 to Feb 23, 2024):
* The new :ref:`module-pw_json` module provides classes for serializing JSON.
* Raspberry Pi RP2040 support was expanded, including a new
``pw::digital_io::Rp2040Config`` struct enables you to configure polarity for
RP2040 GPIO pins, and a new ``pw::spi::Rp2040Initiator`` class which is a
Pico SDK userspace implementation of Pigweed's SPI ``Initiator`` class.
* The new ``pw::spi::DigitalOutChipSelector`` class sets the state of a
:ref:`module-pw_digital_io` output when activated.
* The :ref:`module-pw_kvs` docs were overhauled.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
* `Remove total_bytes metric
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193251>`__
* `Expose TrackingAllocator's initialization state
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192570>`__
pw_assert
---------
* `Apply formatting changes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193496>`__
pw_assert_log
-------------
* `Fix Soong rules
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190602>`__
(issue `#324266698 <https://issues.pigweed.dev/issues/324266698>`__)
* `Fix missing lib in soong rule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192259>`__
pw_bluetooth
------------
* `Add Emboss rules to BUILD.bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192513>`__
* `Update emboss imports to match Bazel rule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192392>`__
pw_build
--------
* `Silence warnings from linker script test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191850>`__
pw_bytes
--------
* `Add missing export in soong rule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192257>`__
pw_chrono_rp2040
----------------
* `Minor tweaks to documentation and test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183730>`__
(issue `#303297807 <https://issues.pigweed.dev/issues/303297807>`__)
pw_cli
------
* `Add exit codes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__
pw_config_loader
----------------
The new ``skip_files__without_sections`` option enables you to just move on
to the next file rather than raise an exception if a relevant section doesn't
exist in a config file.
* `Allow skipping files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191970>`__
pw_containers
-------------
* `Add default move operator for FilteredView
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192830>`__
* `Add move constructor to FiltertedView
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191832>`__
pw_digital_io_rp2040
--------------------
The new ``pw::digital_io::Rp2040Config`` struct enables you to configure
polarity for RP2040 GPIO pins.
* `Config with polarity
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176290>`__
(issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
pw_env_setup
------------
* `Use amd64 host tools on arm64
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192763>`__
(issue `#325498131 <https://issues.pigweed.dev/issues/325498131>`__)
pw_function
-----------
The new ``//third_party/fuchsia:fit`` label flag enables Bazel-based projects
to provide an alternate implementation for ``fit()`` when needed.
* `//third_party/fuchsia:fit label_flag
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192391>`__
pw_fuzzer
---------
* `Fix Bazel example, add presubmit test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191310>`__
(issue `#324617297 <https://issues.pigweed.dev/issues/324617297>`__)
pw_grpc
-------
* `Fix some minor bugs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191831>`__
pw_hdlc
-------
* `Add android_library targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__
(issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__)
pw_i2c
------
The API reference for :cpp:class:`pw::i2c::RegisterDevice` is now published on
``pigweed.dev``.
* `Doxygenify RegisterDevice
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191833>`__
pw_ide
------
* `Fix environment inference
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191371>`__
pw_json
-------
The new :ref:`module-pw_json` module provides classes for serializing JSON.
* `Classes for serializing JSON
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190458>`__
pw_kvs
------
The :ref:`module-pw_kvs` docs were overhauled.
* `Follow new module docs guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189430>`__
pw_log
------
* `Add android_library targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__
(issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__)
pw_log_android
--------------
* `Fix missing libs in soong rule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192258>`__
pw_metric
---------
* `Fix Bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190971>`__
(issue `#258078909 <https://issues.pigweed.dev/issues/258078909>`__)
pw_module
---------
* `Add exit codes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__
pw_multibuf
-----------
* `Fix soong support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192894>`__
(issue `#325320103 <https://issues.pigweed.dev/issues/325320103>`__)
pw_package
----------
* `Update GoogleTest
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193250>`__
* `Remove capture_output=True
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192530>`__
pw_preprocessor
---------------
The :ref:`module-pw_preprocessor` reference is now being generated via Doxygen.
* `Do not check for __VA_OPT__ on older compilers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193434>`__
(issue `#326135018 <https://issues.pigweed.dev/issues/326135018>`__)
* `Switch to Doxygen
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192730>`__
* `Use __VA_OPT__ when available
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187099>`__
pw_presubmit
------------
.. todo-check: disable
* `Allow markdown style TODOs and adjust rustdocs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192253>`__
(issue `#315389119 <https://issues.pigweed.dev/issues/315389119>`__)
* `Log format --fix output
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192394>`__
* `Fix formatting of TypeScript code
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192393>`__
* `Disallow FIXME and recommend TODO
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188367>`__
* `Allow pwbug.dev in TODOs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191795>`__
* `Allow Bazel issues in TODOs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190970>`__
.. todo-check: disable
.. _docs-changelog-20240226-pw_rpc:
pw_rpc
------
``pw_rpc`` clients will once again accept unsolicited responses from ``pw_rpc``
servers that were built prior to September 2022. Unsolicited responses, also
known as "open" requests, let a server send a message to a client prior to the
client sending a request. This change fixed an incompatibility in which
``pw_rpc`` clients built after September 2022 would not accept unsolicited
responses from servers built before September 2022 (specifically,
change `#109077 <https://pwrev.dev/109077>`_).
* `Remove use of deprecated Python API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187491>`__
(issue `#306195999 <https://issues.pigweed.dev/issues/306195999>`__)
* `Add android_library targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__
(issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__)
* `Support legacy unsolicited responses
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192311>`__
pw_software_update
------------------
* `Add java build objects
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193410>`__
pw_spi
------
The new ``pw::spi::DigitalOutChipSelector`` class is an implementation of
``pw::spi::ChipSelector`` that sets the state of a :ref:`module-pw_digital_io`
output when activated.
* `Add Android.bp
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192590>`__
(issue `#316067629 <https://issues.pigweed.dev/issues/316067629>`__)
* `DigitalOutChipSelector
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192790>`__
(issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
* `Correct full-duplex behavior of linux_spi
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192591>`__
(issue `#316067628 <https://issues.pigweed.dev/issues/316067628>`__)
pw_spi_rp2040
-------------
The new ``pw::spi::Rp2040Initiator`` class is a Pico SDK userspace
implementation of Pigweed's SPI ``Initiator`` class.
* `Initiator implementation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192791>`__
(issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
pw_stream
---------
* `Fix Pigweed build after sync
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191250>`__
(issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
pw_string
---------
Debug error messages for assertions containing ``std::optional`` types have
been improved.
* `Add ToString for std::optional
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192514>`__
pw_sync
-------
* `Add missing lib in soong rule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192260>`__
pw_tokenizer
------------
The :ref:`module-pw_tokenizer` and :ref:`module-pw_snapshot` Python
libraries can now be used from Bazel as a result of the proto
migration. See issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__).
* `Fix link breakage on linux
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192511>`__
(issue `#321306079 <https://issues.pigweed.dev/issues/321306079>`__)
* `Proto migration stage 5/5
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191270>`__
(issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
* `Proto migration stage 3/5
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189696>`__
(issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
* `Proto migration stage 1.5/5
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191834>`__
(issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
* `Proto migration stage 1/5
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191135>`__
(issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
pw_toolchain
------------
* `Add missing #include
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193430>`__
* `Rename `action_config_flag_sets` to `flag_sets`
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192911>`__
* `Simplify macOS -nostdlib++ usage
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192898>`__
* `Remove unnecessary toolchain arguments
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192896>`__
* `Add missing macOS cxx_builtin_include_directories
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192270>`__
(issue `#324652164 <https://issues.pigweed.dev/issues/324652164>`__)
pw_toolchain_bazel
------------------
* `Use llvm-libtool-darwin on macOS
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190896>`__
(issue `#297413805 <https://issues.pigweed.dev/issues/297413805>`__)
* `Explicitly depend on rules_cc
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191430>`__
pw_transfer
-----------
* `Add an android_library for the Java client
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193534>`__
* `Change class to parser
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193550>`__
* `Fix integration test START packet issue
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192755>`__
(issue `#322497491 <https://issues.pigweed.dev/issues/322497491>`__)
* `Add GetResourceStatus method
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192810>`__
* `Limit test to sending a single chunk
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192510>`__
* `Remove/hide deprecated handle interfaces
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190972>`__
pw_watch
--------
* `Add exit codes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__
pw_web
------
The log viewer now supports multiple log sources.
* `NPM version bump to 0.0.14
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193510>`__
* `Enable multiple log sources
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192370>`__
(issue `#325096310 <https://issues.pigweed.dev/issues/325096310>`__)
Build
=====
* `Fix docs build on mac-arm64
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192910>`__
* `Use correct host_cpu when disabling docs on Arm Macs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192757>`__
* `Remove docs from default build on Arm Macs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192754>`__
(issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
* `Build for Java 11
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191830>`__
Bazel
-----
* `Remove shallow_since attributes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193473>`__
* `Upgrade protobuf to 4.24.4
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187431>`__
(issue `#319717451 <https://issues.pigweed.dev/issues/319717451>`__)
Targets
=======
* (rp2040) `Replace rp2040 target with rp2040_pw_system
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192516>`__
* (rp2040) `Custom libusb backend
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192630>`__
OS support
==========
* (Zephyr) `Change the pinned Zephyr commit
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192690>`__
* (Zephyr) `Add zephyr's west CLI
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190547>`__
Docs
====
`Breadcrumbs <https://en.wikipedia.org/wiki/Breadcrumb_navigation>`_ are now
shown at the top of all docs pages except the homepage.
* `Add breadcrumbs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193508>`__
* `Fix incorrect module name in changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193331>`__
* `Fix canonical URLs for all */docs.html pages
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193431>`__
* `Fix typo in facades documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192710>`__
* `Fix 404s
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192251>`__
(issue `#325086274 <https://issues.pigweed.dev/issues/325086274>`__)
SEEDs
=====
* (SEED-0125) `Claim SEED number
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192110>`__
* `Mark legacy Sensor SEED as Rejected
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192250>`__
Third party
===========
* `Roll FuzzTest and Abseil
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189419>`__
Miscellaneous
=============
* `Disable tests incompatible with rp2040
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192764>`__
(issue `#260624583 <https://issues.pigweed.dev/issues/260624583>`__)
* `Fix uses of std::chrono literals
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192515>`__
* (pigweed.json) `Disallow Rosetta
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188251>`__
(issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
* (renode) `Update renode to latest daily build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192254>`__
-----------
Feb 9, 2024
-----------
Highlights (Jan 26, 2024 to Feb 9, 2024):
* The new :ref:`module-pw_grpc` module provides classes that map between
``pw_rpc`` packets and HTTP/2 gRPC frames, allowing ``pw_rpc`` services to
be exposed as gRPC services.
* A lot of the remaining ``pw_toolchain_bazel`` feature work from
:ref:`seed-0113` was finished and rough edges were polished up.
* The new generic ``pw::allocator::BlockAllocator`` interface supported several
derived types that enable fine-grained control over how a block satisfies an
allocation request.
* ``pw_transfer`` now supports :ref:`resumable transfers
<pw_transfer-nonzero-transfers>`.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_alignment
------------
* `Add CMake & Soong support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189360>`__
pw_allocator
------------
The new generic :cpp:class:`pw::allocator::BlockAllocator` interface supports
several derived types that enable fine-grained control over how a block
satisfies an allocation request. The new :cpp:func:`pw::allocator::GetLayout()`
method retrieves the layout that was used to allocate a given pointer. The new
:cpp:class:`pw::allocator::AllocatorSyncProxy` interface synchronizes access to
another allocator, allowing it to be used by multiple threads.
* `Refactor metric collection for tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190105>`__
* `Add Allocator::GetLayout
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187764>`__
* `Add BlockAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187657>`__
* `Fix SynchronizedAllocator typo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190721>`__
* `Streamline Block and improve testing
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187656>`__
* `Separate metrics from Fallback-, MultiplexAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190253>`__
* `Make TrackingAllocator::Init optional
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190454>`__
* `Check for integer overflow in Layout
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187654>`__
* `Add additional metrics
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190250>`__
* `Rename AllocatorMetricProxy to TrackingAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190230>`__
* `Add SynchronizedAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189690>`__
* `Fix typo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189717>`__
* `Fix Allocator::Reallocate
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189691>`__
pw_assert
---------
* `Break out compatibility backend target
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189106>`__
(issue `#322057191 <https://issues.pigweed.dev/issues/322057191>`__)
pw_async_basic
--------------
* `Remove unneeded locks from test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190238>`__
* `Test flake fix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189938>`__
(issue `#323251704 <https://issues.pigweed.dev/issues/323251704>`__)
* `Fix data race in newly added test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189879>`__
* `Fix ordering of tasks posted at same time
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189784>`__
pw_bloat
--------
The new boolean argument ``ignore_unused_labels`` for ``pw_size_report()``
enables you to remove labels from the JSON size report that have a size of 0.
* `Allow removal of zero sized labels
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190599>`__
(issue `#282057969 <https://issues.pigweed.dev/issues/282057969>`__)
pw_bluetooth
------------
* `Add l2cap_frames.emb
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185751>`__
* `Fix typo in SbcAllocationMethod
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190130>`__
pw_boot
-------
* `Update status and general doc cleanup
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189298>`__
pw_build
--------
The new ``PW_USE_COLOR``, ``NO_COLOR``, and ``CLICOLOR_FORCE`` OS environment
variables enable you to control whether output in CI/CQ is color formatted.
* `Add Fuchsia to TARGET_COMPATIBLE_WITH_HOST_SELECT
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190714>`__
* `Enable fixed point types for clang builds
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190097>`__
(issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
* `Support disabling colors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189611>`__
(issue `#323056074 <https://issues.pigweed.dev/issues/323056074>`__)
pw_bytes
--------
* `Check for integer overflow
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187655>`__
pw_channel
----------
The initial ``pw::channel::Channel`` class from :ref:`seed-0114` has been
introduced but it is experimental and should not be used yet.
* `Docs fix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190624>`__
* `Module for async data exchange with minimal copying
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189284>`__
pw_cli
------
* `Add json_config_loader_mixin
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190540>`__
pw_compilation_testing
----------------------
* `Do not expand regexes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191030>`__
* `Minor improvements
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189788>`__
pw_config_loader
----------------
The code from ``pw_cli`` related to looking up user-specific configuration
files has been moved to this separate module.
* `Add support for nested keys
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190673>`__
* `Add tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190672>`__
* `Initial commit
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190671>`__
pw_cpu_exception_cortex_m
-------------------------
* `Handle ARM v8.1 case
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189828>`__
(issue `#311766664 <https://issues.pigweed.dev/issues/311766664>`__)
pw_digital_io
-------------
* `[[nodiscard]] on as() conversion functions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189815>`__
* `Use pw::internal::SiblingCast
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__
pw_env_setup
------------
* `Roll cipd
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190737>`__
(issue `#315378787 <https://issues.pigweed.dev/issues/315378787>`__)
* `Make npm actions more robust
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189358>`__
(issues `#323378974 <https://issues.pigweed.dev/issues/305042957>`__,
`#322437881 <https://issues.pigweed.dev/issues/322437881>`__,
`#323378974 <https://issues.pigweed.dev/issues/323378974>`__)
* `Only add mingw to PATH once
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190030>`__
(issue `#322437881 <https://issues.pigweed.dev/issues/322437881>`__)
pw_format
---------
* `Fix safe buildifier warnings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189716>`__
(issue `#242181811 <https://issues.pigweed.dev/issues/242181811>`__)
pw_function
-----------
* `Follow new docs guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188362>`__
pw_fuzzer
---------
* `Fix Bazel run target instructions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188363>`__
pw_grpc
-------
The new :ref:`module-pw_grpc` module is an implementation of the gRPC HTTP/2
protocol. It provides classes that map between :ref:`module-pw_rpc` packets
and ``pw_grpc`` HTTP/2 frames, allowing ``pw_rpc`` services to be exposed as
gRPC services.
* `Fix off-by-one error when handling DATA frames
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190470>`__
(issue `#323924487 <https://issues.pigweed.dev/issues/323924487>`__)
* `Add new module
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186796>`__
pw_ide
------
* `Disable Python terminal activation in VSC
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190592>`__
* `Remove terminal env vars from VSC settings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188470>`__
* `VSC extension 0.1.4 release
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188742>`__
pw_presubmit
------------
Color formatting in CI/CQ has been improved for readability.
* `Simplify 'gn gen' color logic
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190239>`__
* `Use color logic in gn gen call
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189827>`__
* `Apply color logic in more cases
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189829>`__
* `Support disabling colors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189611>`__
(issue `#323056074 <https://issues.pigweed.dev/issues/323056074>`__)
pw_protobuf
-----------
* `Use pw::internal::SiblingCast
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__
pw_random
---------
* `Clean up build files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189779>`__
pw_result
---------
* `Add missing libs in Soong blueprint
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190950>`__
pw_rpc
------
* `Avoid undefined behavior when casting to rpc::Writer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189648>`__
pw_stream
---------
* `Use pw::internal::SiblingCast
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__
pw_target_runner
----------------
* `Remove .dev from path name
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190450>`__
pw_thread
---------
* `Incease the sleep duration in tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190270>`__
(issue `#321832803 <https://issues.pigweed.dev/issues/321832803>`__)
pw_tokenizer
------------
:ref:`Troubleshooting docs <module-pw_tokenizer-gcc-template-bug>` were added
that explain how to workaround GCC's template function tokenization bug in GCC
releases prior to 14.
* `Mention GCC template bug in the docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189820>`__
pw_toolchain
------------
* `Disable unstable features in rust toolchains
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189948>`__
* `Fix divergent configuration in arm_clang M0+ toolchain
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190196>`__
* `Use less generic names for B1-B5
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189732>`__
* `Use LLVM compiler-rt builtins
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186232>`__
* `Internal wrapper for casting between siblings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189014>`__
(issue `#319144706 <https://issues.pigweed.dev/issues/319144706>`__)
* `Small docs update
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189278>`__
(issue `#300471936 <https://issues.pigweed.dev/issues/300471936>`__)
pw_toolchain_bazel
------------------
A lot of the remaining ``pw_toolchain_bazel`` feature work from
:ref:`seed-0113` was finished and rough edges were polished up.
* `Remove support for *_files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190810>`__
(issue `#323448214 <https://issues.pigweed.dev/issues/323448214>`__)
* `Add support for setting environment variables
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190154>`__
(issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
* `Implement per-action files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190152>`__
(issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
* `Migrate to PwToolInfo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190150>`__
(issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
* `Pull file collection into config rule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189971>`__
(issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
* `Implement pw_cc_provides
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189112>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
* `Implement PwActionConfigInfo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189990>`__
(issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
* `Create temporary variable
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189970>`__
(issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
* `Add a concept of well-known features
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189050>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
* `Implement requires_any_of for flag sets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189111>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
* `Migrate to custom PwFeatureInfo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189030>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
* `Add custom PwFlagSetInfo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188990>`__
(issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
* `Replace bazel_tools providers with PW providers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189110>`__
(issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
* `Support regular binaries as tools
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190151>`__
(issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
pw_transfer
-----------
``pw_transfer`` now supports :ref:`resumable transfers
<pw_transfer-nonzero-transfers>`.
* `Account for remaining_bytes in payload buffer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190572>`__
* `Rename TransferHandle -> Handle
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189097>`__
* `Add resumeable transfers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182830>`__
* `Make cancellation a method on handles
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189096>`__
* `Allow setting a transfer resource size in C++
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189095>`__
(issue `#319731837 <https://issues.pigweed.dev/issues/319731837>`__)
pw_unit_test
------------
* `Remove obsolete label flag
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190557>`__
Build
=====
* (Bazel) `Update clang version
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190256>`__
OS support
==========
* (Zephyr) `Fix default logging in chromium CQ
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190696>`__
Docs
====
* `Nest backends under respective facades in sitenav
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190245>`__
* `Add doxygengroup to the style guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190625>`__
* `Update homepage
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190018>`__
* `Update README links
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189731>`__
* `Fix module homepage canonical URLs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189773>`__
(issue `#323077749 <https://issues.pigweed.dev/issues/323077749>`__)
* `Update Bazel quickstart output sample
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189412>`__
(issue `#300471936 <https://issues.pigweed.dev/issues/300471936>`__)
SEEDs
=====
* (SEED-0122) `Update status, add bug reference
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189612>`__
* `Fix pw_seed_index template deps
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190675>`__
* `Add authors to SEED document headers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189870>`__
* (SEED-0119) `Add sensors SEED
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182653>`__
Miscellaneous
=============
* `Update the bootstrap script to have start/end guards
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190451>`__
* `Migrate bug numbers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189353>`__
(issue `#298074672 <https://issues.pigweed.dev/issues/298074672>`__)
* `Upgrade mbedtls to 3.5.0
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189273>`__
(issue `#319289775 <https://issues.pigweed.dev/issues/319289775>`__)
* `Fix clang-format findings
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190090>`__
------------
Jan 26, 2024
------------
Highlights (Jan 12, 2024 to Jan 26, 2024):
* The new :ref:`docs-bazel-integration` guide shows you how to integrate a
single Pigweed module into an existing Bazel project.
* Initial support for :py:class:`pw_cc_feature` has been added, which completes
the initial set of rules required for building toolchains with
:ref:`module-pw_toolchain_bazel`.
* A longstanding GCC bug that caused tokenized logging within a function
template to not work has been fixed.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
* `Add SplifFreeListAllocator fuzzer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178216>`__
pw_bluetooth
------------
* `Add advertising packet content filter emboss definitions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188314>`__
* `Add android multiple advertising emboss structures
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188313>`__
* `Add a2dp remaining offload emboss structures
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188311>`__
* `Move emboss structures from hci_commands to hci_common
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188312>`__
* `Reorganize hci_vendor.emb
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188310>`__
* `Add new event definitions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188150>`__
(issue `#311639432 <https://issues.pigweed.dev/issues/311639432>`__)
pw_build
--------
The new :ref:`module-pw_build-bazel-pw_cc_binary_with_map` Bazel rule enables
you to generate a ``.map`` file when building a binary.
* `Add pw_cc_binary variant to generate .map files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187710>`__
(issue `#319746242 <https://issues.pigweed.dev/issues/319746242>`__)
pw_bytes
--------
The :cpp:class:`pw::ByteBuilder` API reference is now being auto-generated
via Doxygen. The new :cpp:func:`pw::bytes::SignExtend` template enables
expanding the nth bit to the left up to the size of the destination type.
* `Fix compilation error occured with Werror=all
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188890>`__
* `Update documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188462>`__
* `SignExtend template
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188456>`__
(issue `#321114167 <https://issues.pigweed.dev/issues/321114167>`__)
* `Make _b literals error on values >255
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188208>`__
pw_compilation_testing
----------------------
* `Skip tests excluded by the preprocessor
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188650>`__
(issue `#321088147 <https://issues.pigweed.dev/issues/321088147>`__)
pw_console
----------
* `Upgrade to ptpython 3.0.25
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188146>`__
(issue `#320509105 <https://issues.pigweed.dev/issues/320509105>`__)
pw_containers
-------------
The destructors for ``pw::InlineQueue``, ``pw::InlineDeque``, and
``pw::Vector`` are now protected to prevent use with ``delete`` or
``std::unique_ptr`` and to prevent unusable declarations.
* `Protected InlineQueue/Deque<T> destructor
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187802>`__
* `Make Vector<T> destructor protected
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187801>`__
pw_digital_io
-------------
The private virtual API requirements for
:cpp:class:`pw::digital_io::DigitalIoOptional` are now documented because
they are needed when implementing concrete backends for ``pw_digital_io``.
* `Document the private virtual API requirements
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187669>`__
* `Remove conditional interrupt disabling requirements
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187668>`__
pw_doctor
---------
* `Update expected tools on POSIX
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188102>`__
(issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
pw_env_setup
------------
* `Retrieve qemu on ARM Macs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187806>`__
(issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
pw_hdlc
-------
* `Remove unused targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188226>`__
* `Remove unused rpc packet processor target
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188233>`__
pw_ide
------
* `Fix typo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188423>`__
* `Launch activated terminals in VSC
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187195>`__
(issue `#318583596 <https://issues.pigweed.dev/issues/318583596>`__)
* `VSC extension 0.1.3 release
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186726>`__
pw_kvs
------
The new ``pw::kvs::FlashMemory::EndOfWrittenData()`` method returns the first
byte of erased flash that has no more written bytes.
* `Add EndOfWrittenData()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188872>`__
pw_persistent_ram
-----------------
* `Add more tests to PersistentBuffer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188106>`__
(issue `#320538351 <https://issues.pigweed.dev/issues/320538351>`__)
pw_polyfill
-----------
``pw_polyfill/static_assert.h`` now provides a C23-style ``static_assert()``.
See :ref:`module-pw_polyfill-static_assert`.
* `Remove _Static_assert workaround
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188277>`__
* `Provide static_assert polyfill for C
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188137>`__
pw_preprocessor
---------------
The new ``PW_ADD_OVERFLOW``, ``PW_SUB_OVERFLOW``, and ``PW_MUL_OVERFLOW``
macros can be used to :ref:`check for integer overflows
<module-pw_preprocessor-integer-overflow>`.
* `Add integer-overflow macros
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187653>`__
pw_presubmit
------------
* `Add more info to todo summary
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188750>`__
* `Trim paths in ninja summary
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188070>`__
* `No copyright for MODULE.bazel.lock
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188170>`__
* `Exclude docs on Mac ARM hosts
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187784>`__
(issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
pw_protobuf
-----------
* `Fix another &*nullptr in test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188717>`__
* `Fix undefined pointer deref in fuzz test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188281>`__
* `Fix out-of-range read
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188095>`__
(issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__)
pw_thread
---------
* `Add missing include
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189212>`__
pw_tokenizer
------------
A longstanding GCC bug that caused tokenized logging within a function template
to not work has been fixed.
* `Compensate for GCC template bug
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188424>`__
(issue `#321306079 <https://issues.pigweed.dev/issues/321306079>`__)
* `Allow use of static_assert in C99 test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188357>`__
* `Adjust rustdocs deps to only be in std environments
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188138>`__
pw_tool
-------
This incomplete module has been deleted.
* `Delete module
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188919>`__
pw_toolchain_bazel
------------------
The ``//pw_toolchain_bazel`` directory is now configured to be compiled as a
standalone Bazel module. Initial support for :py:class:`pw_cc_feature` has been
added, which completes the initial set of rules required for building
toolchains with :ref:`module-pw_toolchain_bazel`.
* `Remove deprecated action names
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188991>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
* `Migrate to type-safe action names
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187896>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
* `Require action labels in providers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188810>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
* `Define actions names as labels
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187895>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
* `Make the pw_toolchain repository into a bazel module
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187932>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
* `Add pw_cc_feature
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181755>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
* `Set exec_transition_for_inputs to False
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188361>`__
(issue `#321268080 <https://issues.pigweed.dev/issues/321268080>`__)
* `Remove check_deps_provide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187894>`__
(issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
pw_transfer
-----------
The C++ client for :ref:`module-pw_transfer` now uses handles for
cancellation.
* `Remove duplicated Builder call
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188855>`__
* `Use handles for cancellation in C++ client
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/134290>`__
(issue `#272840682 <https://issues.pigweed.dev/issues/272840682>`__)
pw_web
------
* `Init. improvements to resize performance
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188050>`__
(issue `#320475138 <https://issues.pigweed.dev/issues/320475138>`__)
Build
=====
* `Use Python 3.11
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182191>`__
(issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__)
* `Use pre-release of rules_python
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188852>`__
(issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__)
* `Use rules_python in Bazel build files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188690>`__
Targets
=======
host_device_simulator
---------------------
* `Update docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187430>`__
Docs
====
* `How to use a single Pigweed module in Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188922>`__
* `Add pre-reqs for non-Debian Linux distros
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188770>`__
(issue `#320519800 <https://issues.pigweed.dev/issues/320519800>`__)
* `Auto-generate module source code and issues URLs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187312>`__
* `Minor updates to the FAQ
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188252>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187614>`__
SEEDs
=====
* (SEED-0123) `Claim SEED number
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188140>`__
* (SEED-0124) `Claim SEED number
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188671>`__
Miscellaneous
=============
* `Remove module-level README.md files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188374>`__
* `Fix how we ignore bazel- directories
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188940>`__
------------
Jan 12, 2024
------------
Highlights (Dec 29, 2023 to Jan 12, 2024):
* :ref:`docs-changelog-20240112-pw_allocator` added parameter to make it easier
to work with allocation metadata in a block's header and made it easier to
omit flag-related code for blocks.
* ``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``.
* :ref:`docs-changelog-20240112-pw_thread_stl` disallowed
``std::thread::detach()`` on Windows because it's known to randomly hang
indefinitely.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
.. _docs-changelog-20240112-pw_allocator:
pw_allocator
------------
A new template parameter, ``kNumExtraBytes``, was added to ``Block``. This
parameter reserves space in the block's header for storing and fetching
allocation metadata.
The ``kMaxSize`` parameter was removed from ``Block``
and replaced by ``kNumFlags`` to make it easier to omit flag-related code when
not needed and define fewer block types rather than one for each allocation
pool size.
* `Fix source file list in soong rule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187127>`__
* `Fix MulitplexAllocator's deps
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186873>`__
* `Add extra bytes to Block
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185954>`__
* `Add initializing constructors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185953>`__
* `Add note to AllocatorMetricProxy tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185952>`__
pw_bluetooth_sapphire
---------------------
* `Advertise FCS Option
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186850>`__
(issue `#318002648 <https://issues.pigweed.dev/issues/318002648>`__)
* `Refactor method and variable names
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182899>`__
(issue `#312645622 <https://issues.pigweed.dev/issues/312645622>`__)
* `Revert commits to get to a known working state
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183087>`__
pw_containers
-------------
* `Remove DestructorHelper from vector
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185521>`__
(issue `#301329862 <https://issues.pigweed.dev/issues/301329862>`__)
pw_doctor
---------
* `Fix overridden package check
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187110>`__
pw_emu
------
* `Remove psutil dependency
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186830>`__
(issue `#316080297 <https://issues.pigweed.dev/issues/316080297>`__)
pw_env_setup
------------
* `Update ref to bazel version file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187118>`__
* `Drop reference to rust version file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187113>`__
* `Use correct arch for cipd in Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184903>`__
(issue `#234879770 <https://issues.pigweed.dev/issues/234879770>`__)
* `Switch to Fuchsia ninja CIPD package
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184078>`__
(issue `#311711323 <https://issues.pigweed.dev/issues/311711323>`__)
* `Prevent NPM output from interrupting bootstrap
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186510>`__
pw_ide
------
The new ``pigweed.enforceExtensionRecommendations`` configuration option for
VS Code makes extension recommendation enforcement optional. When you set this
flag to ``true`` in your project's ``extension.json``, recommended extensions
will need to be installed and non-recommended extensions will need to be
disabled.
You can now submit Pigweed issues through VS Code. Open the Command Palette
and type ``Pigweed: File Bug``.
* `Add Jest testing to VSC extension
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187126>`__
* `Make VSC extension enforcement an option
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187170>`__
* `Support alternate \`clangd\` paths
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186730>`__
(issue `#318413766 <https://issues.pigweed.dev/issues/318413766>`__)
* `VSC extension 0.1.2 release
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184907>`__
* `Fix CLI command docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184955>`__
* `Allow submitting bugs from VSC
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184908>`__
* `Document \`compdb_gen_cmd\`
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184899>`__
* `Improve VSC extension UX
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184990>`__
.. _docs-changelog-20240112-pw_log:
pw_log
------
The Python API of the log decoder now accepts a ``logging.Logger`` or
``logging.LoggerAdapter`` instance as the default device logger. Previously
it only accepted ``logging.Logger``.
* `Let Device accept logger adapter
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187119>`__
pw_log_zephyr
-------------
* `Add missing include for tokenized logging
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186810>`__
pw_multibuf
-----------
* `Add soong support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186815>`__
pw_protobuf
-----------
* `Fix bool overflow
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186801>`__
(issue `#318732334 <https://issues.pigweed.dev/issues/318732334>`__)
* `Fix nullptr dereference in fuzz test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186800>`__
(issue `#314829525 <https://issues.pigweed.dev/issues/314829525>`__)
* `Don't crash on invalid field number
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186724>`__
(issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__)
* `Fix conflict in messages with fields named 'other'
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186951>`__
* `Properly fuzz nested encoders/decoders
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186723>`__
(issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__)
* `Fully qualify message namespace
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186822>`__
pw_rpc
------
The new ``PW_RPC_METHOD_STORES_TYPE`` config option provides a way at runtime
to determine a method's type. This is useful when implementing a translation
layer from another RPC system. Most Pigweed projects won't need this feature so
it's disabled by default.
* `Have Method optionally store it's MethodType
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185773>`__
* `Run tests with completion callback config enabled
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187172>`__
* `Add some missing deps in Bazel targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186934>`__
(issue `#318850523 <https://issues.pigweed.dev/issues/318850523>`__)
pw_stream
---------
* `Make stream adapters use reinterpret_cast
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186766>`__
(issue `#314829006 <https://issues.pigweed.dev/issues/314829006>`__)
pw_system
---------
See :ref:`docs-changelog-20240112-pw_log`.
* `Let Device accept logger adapter
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187119>`__
.. _docs-changelog-20240112-pw_thread_stl:
pw_thread_stl
-------------
Using ``std::thread::detach()`` on Windows has been disallowed. When compiling
with MinGW on Windows, ``std::thread::detach()`` is known to randomly hang
indefinitely.
* `Don't allow std::thread::detach() on Windows
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186570>`__
(issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__)
pw_tokenizer
------------
* `Fix undefined dereference in fuzz test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186821>`__
(issue `#314829057 <https://issues.pigweed.dev/issues/314829057>`__)
* `Make Rust hashing function const
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186273>`__
pw_toolchain
------------
``pw_toolchain`` now adds ``-fno-ms-compatibility`` to ``cflags`` on Windows.
When building with ``clang`` on Windows targeting ``msvc``, ``clang``
previously enabled a ``ms-compatibility`` mode that broke Pigweed's macro
magic.
* `Remove duplicate config from Cortex-A32 toolchain
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187270>`__
* `Add -fno-ms-compatibility to cflags on Windows
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187173>`__
(issue `#297542996 <https://issues.pigweed.dev/issues/297542996>`__)
pw_unit_test
------------
* `Fix sanitize(r) directive
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186650>`__
pw_web
------
* `Fix autoscroll when window is resized
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187193>`__
(issue `#305022742 <https://issues.pigweed.dev/issues/305022742>`__)
Build
=====
Bazel
-----
All modules now support the injection of module configuration via
``label_flags``.
``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``.
* `Update to Bazel 7.0.0 release version
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186935>`__
* `Add module configuration support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186725>`__
(issue `#234872811 <https://issues.pigweed.dev/issues/234872811>`__)
* `Remove pw_cc_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186770>`__
(issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
* `Remove references to pw_cc_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186765>`__
(issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
* `Replace pw_cc_library with cc_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186763>`__
(issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
OS support
==========
Zephyr
------
You can now enable the ``pw_thread/sleep.h`` library in your Zephyr project by
setting ``CONFIG_PIGWEED_THREAD_SLEEP=Y`` in your Kconfig.
* `Link pw_thread.sleep with appropriate kConfig
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186825>`__
Docs
====
* `Add example of conditionally enabling code based on module config
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187171>`__
* `Mention pw format tool
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186851>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186470>`__
* `Rework first-time setup
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185730>`__
* `Add troubleshooting section to Bazel quickstart
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186237>`__
SEEDs
=====
* (SEED-0001) `Fix typo and formatting
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187273>`__
* (SEED-0114) `Fix Compiler Explorer link
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187330>`__
* (SEED-0122) `Claim SEED number
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187120>`__
------------
Dec 29, 2023
------------
Highlights (Dec 15, 2023 to Dec 29, 2023):
* The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier
to dispatch between allocators depending on an app-specific request type ID.
* ``pw_base64`` now has initial Rust support.
* ``pw_malloc_freertos``, a new FreeRTOS backend for :ref:`module-pw_malloc`,
was added.
* The new ``pw::digital_io::Polarity`` helper enum makes it easier for backends
to map logical levels to physical levels.
* The Rust macro ``tokenize_to_buffer!`` in the ``pw_tokenizer`` Rust crate now
supports concatenation of format strings via the ``PW_FMT_CONCAT`` operator.
* The :ref:`module-pw_hdlc` and :ref:`module-pw_result` docs were updated to
follow our latest :ref:`docs-contrib-docs-modules`.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_allocator
------------
The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier to
dispatch between allocators depending on an app-specific request type ID.
* `Add MultiplexAllocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185027>`__
* `Add WithMetrics interface
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185296>`__
* `Split up test utilities
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185295>`__
pw_base64
---------
``pw_base64`` now has initial Rust support. See `Crate pw_base64
</rustdoc/pw_base64/>`_.
* `Add initial Rust support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185210>`__
pw_containers
-------------
* `Remove DestructorHelper from queues
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185030>`__
(issue `#301329862 <https://issues.pigweed.dev/issues/301329862>`__)
pw_digital_io
-------------
`pw::digital_io::Polarity <https://cs.opensource.google/pigweed/pigweed/+/main:pw_digital_io/public/pw_digital_io/polarity.h>`_
was added to make it easier for backends to map logical levels to physical levels.
* `Add helper Polarity enum
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185435>`__
pw_emu
------
* `Use code-block instead of code
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186170>`__
pw_hdlc
-------
* `Follow new module docs guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184799>`__
pw_malloc
---------
``pw_malloc_freertos``, a FreeRTOS backend for ``pw_malloc`` was added.
* `Require specifying a backend in bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185441>`__
* `Add freertos backend
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185452>`__
pw_presubmit
------------
* `Use local prettier + eslint versions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185144>`__
pw_result
---------
* `Rework docs to new standard
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185147>`__
pw_rpc
------
* `Adjust alarm_timer_test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186274>`__
(issue `#317990451 <https://issues.pigweed.dev/issues/317990451>`__)
pw_snapshot
-----------
* `Clean up RISCV CpuArchitecture
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185690>`__
* `Add RISCV CpuArchitecture to metadata
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185630>`__
pw_thread_stl
-------------
* `Disable Bazel tests failing on Windows
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186242>`__
(issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__)
* `Disable tests failing on Windows
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186253>`__
(issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__)
pw_tokenizer
------------
The Rust macro ``tokenize_to_buffer!`` now supports concatenation of format
strings via the ``PW_FMT_CONCAT`` operator.
* `Support \`PW_FMT_CONCAT\` in \`tokenize_to_buffer!\`
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185211>`__
pw_toolchain
------------
The need to provide an ``unknown`` value for various ``pw_cc_toolchain`` fields
has been removed.
* `Remove "unknown" from various fields
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185170>`__
(issue `#315206506 <https://issues.pigweed.dev/issues/315206506>`__)
pw_transfer
-----------
* `Improve Python stream reopening and closing
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184931>`__
pw_unit_test
------------
* `Silence ASAN error in TestInfo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185654>`__
pw_watch
--------
* `Build directory exclude list handling
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185772>`__
(issue `#317241320 <https://issues.pigweed.dev/issues/317241320>`__)
pw_web
------
* `Add state UI unit tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184909>`__
(issue `#316218222 <https://issues.pigweed.dev/issues/316218222>`__)
SEEDs
=====
* `Add facilitators to metadata and generated table
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185932>`__
* (SEED-0105) `Use code-block instead of code
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186171>`__
------------
Dec 15, 2023
------------
Highlights (Dec 1, 2023 to Dec 15, 2023):
* We started implementing our new async API, :ref:`module-pw_async2`.
* We deprecated the use of ``gtest/gtest.h`` header paths for tests intended
to build against ``pw_unit_test``. See
:ref:`docs-changelog-20231215-pw_unit_test` for details.
.. note::
All the commits titled ``Use unit test framework`` in the ``Dec 15, 2023``
update are related to this change.
* The :ref:`module-pw_alignment` and :ref:`module-pw_emu` docs have been updated
to follow our latest :ref:`docs-contrib-docs-modules`.
* ``pw_system`` now supports an :ref:`extra logging channel
<module-pw_system-logchannel>`.
* ``pw_toolchain_bazel`` has a new :ref:`get started guide
<module-pw_toolchain_bazel-get-started>`.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_alignment
------------
* `Follow the new docs guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181432>`__
pw_allocator
------------
* `Fix metric disabling
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185026>`__
* `Add support for fuzzing Allocator implementations
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178215>`__
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183270>`__
pw_analog
---------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183270>`__
pw_async2
---------
We started implementing our new async API, :ref:`module-pw_async2`.
* `Implement initial async API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182727>`__
pw_base64
---------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183299>`__
pw_blob_store
-------------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183299>`__
pw_bluetooth
------------
* `Add LE Read Buffer Size [v2] command complete event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185070>`__
(issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184312>`__
* `Fix LEExtendedCreateConnectionCommandV1 data interleaving
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183950>`__
(issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
* `Fix ExtendedCreateConnectionV1
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183930>`__
(issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
* `Add new HCI definition
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183771>`__
(issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
* `Re-format emboss files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183770>`__
pw_bluetooth_sapphire
---------------------
* `Read ISO data buffer info on startup
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184052>`__
(issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
* `LE Read Buffer Size [v2]
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183772>`__
(issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
* `Add LE Set Host Feature
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184050>`__
(issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
* `Update name of ISO host support bit
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184051>`__
(issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
* `Fix BrEdrConnectionManager.Inspect test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183304>`__
(issue `#42086629 <https://issues.fuchsia.dev/issues/42086629>`__)
pw_build
--------
* `Fix use of TARGET_COMPATIBLE_WITH_HOST_SELECT in external repo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184095>`__
pw_bytes
--------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183354>`__
pw_checksum
-----------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183300>`__
pw_chrono
---------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183300>`__
pw_cli
------
You can now disable the printing of the banner by setting ``PW_ENVSETUP_QUIET``
or ``PW_ENVSETUP_NO_BANNER``.
* `Allow banner to be suppressed
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184970>`__
pw_console
----------
* `Disable private attr auto-completion
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184644>`__
pw_containers
-------------
* `Fix missing include
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184961>`__
* `Fix IntrusiveList::Item move assignment test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182951>`__
(issue `#303634979 <https://issues.pigweed.dev/issues/303634979>`__)
* `Add missing dep for IntrusiveList test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184245>`__
pw_digital_io
-------------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183301>`__
pw_docgen
---------
We updated the docs server to use native hot reloading.
* `Update Pigweed Live schedule
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184960>`__
* `Add new docs server
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181011>`__
pw_emu
------
We're handling QEMU startup errors more gracefully now.
* `Better handling for startup errors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184859>`__
(issue `#315868463 <https://issues.pigweed.dev/issues/315868463>`__)
* `qemu: Improve the QMP handshake handling
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184858>`__
(issue `#315516286 <https://issues.pigweed.dev/issues/315516286>`__)
* `Link all the docs to each other
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184310>`__
* `Update docs to follow new guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183223>`__
pw_env_setup
------------
The upstream Pigweed bootstrap script now runs ``npm install``. We worked
on native macOS support that doesn't rely on Rosetta. Use the
``--disable-rosetta`` flag to try it out. Note that the work isn't complete
yet.
* `Run npm install on bootstrap
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184639>`__
* `Remove "untested" warning
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182813>`__
* `Use ARM protoc version on ARM Macs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184930>`__
(issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
* `Fix typo in error message
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184910>`__
* `Add flag to disable Rosetta
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184804>`__
(issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
* `Retrieve armgcc for ARM Macs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184785>`__
(issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
* `Change case of armgcc version
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184798>`__
(issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
* `Roll cipd client
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184277>`__
* `Bump executing Python package
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183838>`__
pw_file
-------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183301>`__
pw_format
---------
Format strings can now be built by macros at compile-time by specifying the
format string as a set of string literals separated by the custom
``PW_FMT_CONCAT`` keyword.
* `Allow format strings to be composed at compile time
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184200>`__
pw_fuzzer
---------
* `Fix ambiguous reference to ContainerOf
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184284>`__
pw_hdlc
-------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__
pw_hex_dump
-----------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__
pw_i2c
------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__
pw_ide
------
``pw_ide`` now handles additional clang toolchains if your project specifies one
that's different from the one provided by Pigweed. We also shipped several UX
improvements to the Visual Studio Code extension.
* `Add command to build VSC extension
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184992>`__
* `Remove VSIX installation stuff
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184991>`__
* `Don't warn on missing extensions.json
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184895>`__
* `Alpha-sort the list of targets in VSC
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184864>`__
* `Auto-run build system command
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184809>`__
* `Update VSC Python config
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184820>`__
* `Fix condition for Windows platform
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184730>`__
* `Fix for clang installed to project dir
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184010>`__
(issue `#314693384 <https://issues.pigweed.dev/issues/314693384>`__)
pw_kvs
------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__
pw_libc
-------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__
pw_log
------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__
pw_malloc
---------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183308>`__
pw_metric
---------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183308>`__
pw_perf_test
------------
* `Refactor event handler types
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179611>`__
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183309>`__
pw_presubmit
------------
* `Add LUCI_CONTEXT to ctx
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184793>`__
* `Merge some of the "misc" checks
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184778>`__
* `Better support downstream GnGenNinja use
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183837>`__
(issue `#314818274 <https://issues.pigweed.dev/issues/314818274>`__)
* `Automatically compute trim_prefix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183100>`__
(issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
pw_random
---------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183350>`__
pw_result
---------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183350>`__
pw_rust
-------
* `Remove excess newline in doc command line
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182451>`__
pw_snapshot
-----------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183351>`__
pw_status
---------
* `Docs tweak
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185146>`__
pw_string
---------
* `Fix string_test build error under new clang revision
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184219>`__
(issue `#315190328 <https://issues.pigweed.dev/issues/315190328>`__)
* `Add missing include
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183233>`__
(issue `#314130408 <https://issues.pigweed.dev/issues/314130408>`__)
pw_symbolizer
-------------
* `Fix symbolizer_test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184226>`__
(issue `#315190328 <https://issues.pigweed.dev/issues/315190328>`__)
pw_system
---------
We added an :ref:`extra logging channel <module-pw_system-logchannel>`.
* `Support extra logging channel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184410>`__
(issue `#315540660 <https://issues.pigweed.dev/issues/315540660>`__)
pw_thread
---------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183352>`__
pw_tls_client
-------------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183352>`__
pw_tokenizer
------------
* `Mark \`pw_tokenizer_core\` as \`no_std\`
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183197>`__
pw_toolchain
------------
The Arm GCC toolchain now uses :ref:`module-pw_toolchain_bazel`.
* `Move ARM toolchain to new API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183160>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
* `Use action configs from LLVM tool repo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183010>`__
(issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__)
pw_toolchain_bazel
------------------
Support for :py:attr:`additional_files` was added to reduce ``*_files``
boilerplate. We added a new :ref:`get started guide
<module-pw_toolchain_bazel-get-started>`.
* `Fix naming in docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184753>`__
* `Add misc_files group
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184698>`__
(issue `#305737273 <https://issues.pigweed.dev/issues/305737273>`__)
* `Add automagic toolchain file collection
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184299>`__
(issue `#305737273 <https://issues.pigweed.dev/issues/305737273>`__)
* `Add getting started guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184281>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
* `Remove legacy tool API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184280>`__
* `Remove deprecated API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183235>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
* `Rename build file templates part 2/2
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183187>`__
pw_trace
--------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183355>`__
pw_transfer
-----------
We added support for setting different timeouts for clients and servers.
See ``PW_TRANSFER_DEFAULT_MAX_CLIENT_RETRIES`` and
``PW_TRANSFER_DEFAULT_MAX_SERVER_RETRIES`` in :ref:`module-pw_transfer-config`.
* `Remove small hardcoded timeout in proxy_test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184638>`__
(issue `#315459788 <https://issues.pigweed.dev/issues/315459788>`__)
* `Allow setting different timeouts for client and server
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184210>`__
* `Update integration test documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183163>`__
(issue `#250947749 <https://issues.pigweed.dev/issues/250947749>`__)
.. _docs-changelog-20231215-pw_unit_test:
pw_unit_test
------------
We deprecated use of ``gtest/gtest.h`` header paths for tests intended to build
against ``pw_unit_test``. Historically, we supported using the ``gtest/gtest.h``
include path to support compiling a test as either a ``pw_unit_test`` or with
the full GoogleTest on larger targets like desktop. However, this created a
problem since ``pw_unit_test`` only implements a subset of the GoogleTest API.
With the new approach, we require tests that are intended to compile on devices
to directly include ``pw_unit_test/framework.h``. In cases where GoogleTest is
available, that header will redirect to GoogleTest.
* `Add compatibility in bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184911>`__
(issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
* `Use googletest backend as a dep
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184656>`__
(issue `#315351886 <https://issues.pigweed.dev/issues/315351886>`__)
* `Fix building fuzztests with cmake
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184268>`__
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183353>`__
* `Create facade's header
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183194>`__
(issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
pw_varint
---------
* `Use unit test framework
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183354>`__
pw_web
------
* `Handle unrequested responses after call_id changes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184320>`__
* `Add support for call_id in RPC calls
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160792>`__
* `Add Mocha and Jest global vars to ESLint
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183931>`__
* `Switch to pre-made subset of icon fonts
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156852>`__
(issue `#287270736 <https://issues.pigweed.dev/issues/287270736>`__)
Build
=====
* `Set Zephyr toolchain to llvm in presubmit
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179170>`__
Targets
=======
* `Point deprecated flag to new backend
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184262>`__
* (stm32f429i_disc1) `Fix test runner
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184378>`__
Language support
================
* (Python) `Remove references to non-existing setup.py
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182770>`__
OS support
==========
* (Zephyr) `Remove unecessary toolchain downloads & filter invalid targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184072>`__
Docs
====
.. todo-check: disable
* `Remove inaccurate #include statements
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185190>`__
(issue `#295023422 <https://issues.pigweed.dev/issues/295023422>`__)
* `Add Bazel code coverage TODO
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182812>`__
(issue `#304833225 <https://issues.pigweed.dev/issues/304833225>`__)
* `Add sort by alignment to size optimizations
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184150>`__
* `Fix build command typo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184170>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183310>`__
.. todo-check: disable
SEEDs
=====
* `Always use build metadata titles in index table
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183750>`__
* (SEED-0001) `Add section about SEEDs & code changes
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177084>`__
* (SEED-0001) `Update number selection guidance
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184223>`__
* SEED-0117) `Open for comments
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184795>`__
* (SEED-0121) `Claim SEED number
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184225>`__
Miscellaneous
=============
* `Fix formatting after clang roll
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184752>`__
-----------
Dec 1, 2023
-----------
Highlights (Nov 17, 2023 to Dec 1, 2023):
* We now have an auto-generated :ref:`seed-0000` that shows you the current
status of all SEEDs.
* We've started implementing a :ref:`Rust API for pw_log
<docs-changelog-20231201-pw_log>`.
* The :ref:`module-pw_alignment`, :ref:`module-pw_perf_test`, and
:ref:`module-pw_status` docs were refactored to follow our latest
:ref:`docs-contrib-docs-modules`.
Active SEEDs
============
Help shape the future of Pigweed! Please visit :ref:`seed-0000`
and leave feedback on the RFCs (i.e. SEEDs) marked
``Open for Comments``.
Modules
=======
pw_alignment
------------
The :ref:`docs <module-pw_alignment>` were updated to follow our new
:ref:`docs-contrib-docs-modules`.
* `Follow the new docs guidelines
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181432>`__
pw_allocator
------------
Utilities were added that make it easier to write tests for custom allocator
implementations. The metric collection API was refactored. CMake support for
heap poisoning was added.
* `Fix use-after-free in ~AllocatorForTest
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182950>`__
* `Add AllocationTestHarness
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183032>`__
* `Add AllocationTestHarness
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180532>`__
* `Refactor metric collection
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180456>`__
* `Improve heap poisoning configuration
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180372>`__
pw_bluetooth
------------
* `Add LE Set Host Feature command
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181770>`__
(issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
* `LE Request Peer SCA Complete event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182430>`__
(issue `#311639272 <https://issues.pigweed.dev/issues/311639272>`__)
* `Fix LEExtendedAdvertisingReportData tx_power to be an Int
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181756>`__
pw_bluetooth_sapphire
---------------------
Migration of :ref:`module-pw_bluetooth_sapphire` into Pigweed has begun.
* `Use pw_test_group for fuzzers target
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183195>`__
(issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
* `Use pw_fuzzer_group
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183168>`__
(issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
* `Add sales pitch & roadmap docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181834>`__
(issue `#312287470 <https://issues.pigweed.dev/issues/312287470>`__)
* `Add testonly to testing targets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182890>`__
(issue `#136961 <https://issues.fuchsia.dev/issues/136961>`__)
* `Revert commits to get to a known working state
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183014>`__
* `Use Write instead of UncheckedWrite
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182734>`__
* `Remove now unnecessary use of std::optional
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182490>`__
(issue `#311256496 <https://issues.pigweed.dev/issues/311256496>`__)
* `Move LegacyLowEnergyScanner impl to base class
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182017>`__
(issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
* `Create new LowEnergyScanner polymorphic methods
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182016>`__
(issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
* `Extended scanning support, Fake(Controller|Peer)
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182015>`__
(issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
* `Remove fidl fuzzer from build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182714>`__
(issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
* `Use explicit constructor for SmartTask
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182013>`__
* `Follow pigweed style for test files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182012>`__
* `Add OWNERS file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181759>`__
* `Delete unused build file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181830>`__
(issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
* `Fix pragma_once lint
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181394>`__
(issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
* `Fix linter errors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181305>`__
(issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
* `Fix bazel formatting
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181303>`__
(issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
* `Remove ICU from bazel build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181391>`__
(issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__)
* `Refactor pw_bluetooth_sapphire & fix errors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173484>`__
(issue `#42051324 <https://issues.fuchsia.dev/issues/42051324>`__)
* `Update copyright headers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177800>`__
pw_build_info
-------------
* `Fix relative paths in Python tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182681>`__
pw_containers
-------------
A warning was added about ``pw::Vector`` being unsafe with
non-trivially-destructible, self-referencing types. See
`b/313899658 <https://issues.pigweed.dev/issues/313899658>`_.
* `Warn about unsafe Vector usage
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182970>`__
(issue `#313899658 <https://issues.pigweed.dev/issues/313899658>`__)
pw_format
---------
A ``core::fmt`` macro helper was added.
* `Add core::fmt macro helper
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178537>`__
.. _docs-changelog-20231201-pw_log:
pw_log
------
An initial Rust API has been added.
* `Add initial Rust API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178538>`__
pw_multibuf
-----------
* `Remove unused GN dep
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183165>`__
* `Remove dep on external gtest
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183158>`__
* `Make HeaderChunkRegionTracket public
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183041>`__
* `Fix cmake build file
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182898>`__
pw_package
----------
* `Add ICU package
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181269>`__
(issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__)
pw_perf_test
------------
The :ref:`docs <module-pw_perf_test>` have been refactored.
* `Rename logging event handler files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178915>`__
* `Rework docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179610>`__
pw_presubmit
------------
.. todo-check: disable
* `Automatically compute trim_prefix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183100>`__
(issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
* `Allow full issues.pigweed.dev urls in TODO links
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183095>`__
* `Fix TestTodoCheck.test_one_bug_legacy()
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183094>`__
* `No coverage upload for shadow builds
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183093>`__
(issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
* `Remove some unused constants
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183092>`__
* `Add is_shadow/is_prod members to context
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183077>`__
* `Refactor the coverage options
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182873>`__
(issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
* `Show diffs when parser tests fail
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182971>`__
* `Trim paths in Bazel summaries
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182952>`__
* `Correct the codesearch_host
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182850>`__
(issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__)
* `Correct host in coverage presubmit
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182702>`__
(issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__)
* `Fix coverage options
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182666>`__
(issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__)
* `Add Fuchsia style to todo_check_with_exceptions
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181433>`__
(issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
* `Create Sapphire presubmit step
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177453>`__
(issue `#42051324 <https://issues.fuchsia.dev/issues/42051324>`__)
.. todo-check: enable
pw_protobuf
-----------
* `Add common_py_pb2 target
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182650>`__
(issue `#309351244 <https://issues.pigweed.dev/issues/309351244>`__)
pw_rpc
------
* `Initialize serde_ members to nullptr
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182851>`__
pw_rpc_transport
----------------
* `Unblock sockets when stopping
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181308>`__
(issue `#309680612 <https://issues.pigweed.dev/issues/309680612>`__)
pw_sensor
---------
* `Reserve SEED for configuring sensors
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182805>`__
* `Claim SEED number for high level view
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182673>`__
pw_status
---------
The :ref:`docs <module-pw_status>` have been refactored to follow
our latest :ref:`docs-contrib-docs-modules`.
* `Adopt latest docs standard
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181181>`__
pw_string
---------
* `Add missing include
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183233>`__
pw_system
---------
* `Load all domain tokens
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181231>`__
* `Style fixes to Python scripts
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182661>`__
* `Add missing dependency on pw_trace
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181350>`__
pw_tokenizer
------------
* `Move entry header to a separate struct
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183193>`__
* `Catch accidental use of test macro
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183192>`__
* `Fix NULL dereference in fuzz harness
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182710>`__
* `Move ReadUint32
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169714>`__
pw_toolchain
------------
The Arm toolchain has been updated to use the new toolchain specified
in :ref:`seed-0113`. A helper for registering C/C++ toolchains in Bazel
was added to enable upstream Pigweed to make changes without needing to
manually update downstream projects. See
:ref:`module-pw_toolchain-bazel-upstream-pigweed-toolchains`.
* `Move ARM toolchain to new API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183160>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
* `Use action configs from LLVM tool repo
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183010>`__
(issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__)
* `Add Bazel toolchain registration helper
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183157>`__
(issue `#301336229 <https://issues.pigweed.dev/issues/301336229>`__)
* `Merge host toolchains
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181760>`__
* `Expose non-hermetic toolchain
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181330>`__
(issue `#299151946 <https://issues.pigweed.dev/issues/299151946>`__)
* `Only fetch compatible Rust toolchains
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181306>`__
pw_toolchain/arm_clang
----------------------
* `Reduce binary size
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169576>`__
(issue `#254541584 <https://issues.pigweed.dev/issues/254541584>`__)
pw_toolchain_bazel
------------------
Support for binding tools to toolchains was added. See :py:class:`pw_cc_tool`
and :py:class:`pw_cc_action_config`. Support for featureless sysroots was
added. See :py:attr:`pw_cc_toolchain.builtin_sysroot` and
:py:attr:`pw_cc_toolchain.cxx_builtin_include_directories`.
* `Remove deprecated API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183235>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
* `Rename build file templates part 2/2
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183187>`__
* `Rename build file templates part 1/2
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183186>`__
* `Add LLVM clang tool template
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182969>`__
(issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__)
* `Add ARM GCC toolchain template
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182968>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
* `Support featureless sysroots
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181833>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
* `Mirror features to be flag sets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181832>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
* `Add initial pw_cc_action_config support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180842>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
pw_transfer
-----------
Commands in the :ref:`integration test docs
<module-pw_transfer-integration-tests>` were updated and docs were
added that explain how to :ref:`run more than one instance of tests
in parallel <module-pw_transfer-parallel-tests>`.
* `Update integration test documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183163>`__
* `Set clients to transfer_v2
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183050>`__
(issue `#309686987 <https://issues.pigweed.dev/issues/309686987>`__)
* `Limit to sending a single chunk in tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182665>`__
(issue `#295037376 <https://issues.pigweed.dev/issues/295037376>`__)
* `Don't "block-network" by default
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182010>`__
(issue `#311297881 <https://issues.pigweed.dev/issues/311297881>`__)
* `Use StatusCode in integration tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180828>`__
* `Make integration_test_server testonly, fix fx roller
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182019>`__
(issue `#312493408 <https://issues.pigweed.dev/issues/312493408>`__)
* `Tag integration tests block-network
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181297>`__
(issue `#311297881 <https://issues.pigweed.dev/issues/311297881>`__)
pw_unit_test
------------
* `Skip googletest tests if not set
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183089>`__
pw_web
------
* `Install Web Test Runner and dependencies
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181870>`__
Build
=====
Bazel
-----
More Bazel information has been added to :ref:`docs-module-structure`.
* `Add simple module configuration mechanism
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181032>`__
(issue `#234872811 <https://issues.pigweed.dev/issues/234872811>`__)
* `Tidy up WORKSPACE
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181292>`__
* `Rename Python toolchains
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181762>`__
(issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__)
* `Remove py_proto_library wrapper
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180825>`__
(issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__)
* `Use py_proto_library from rules_python
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180537>`__
* `Partial pw_system_console fix
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181304>`__
(issue `#310307709 <https://issues.pigweed.dev/issues/310307709>`__)
Docs
====
The tool that we use to semi-automate these changelog updates has been
added to the main Pigweed repository. Try out the tool on
:ref:`docs-contrib-docs-changelog` and see ``//docs/_static/js/changelog.js``
to view its implementation.
* `Gerrit code coverage documentation
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182799>`__
(issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
* `Move copyright header info to style guide
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182795>`__
* `Document the Test footer
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181752>`__
* `Add changelog update instructions and tool
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181765>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181393>`__
SEEDs
=====
We now have an auto-generated :ref:`seed-0000` that shows you the current
status of all SEEDs.
* `Generate the SEED index table
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181267>`__
* (SEED-0114) `Update status; format header in table
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182872>`__
* (SEED-0114) `Channels
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
* (SEED-0118) `Claim SEED number
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182654>`__
* (SEED-0118) `Claim SEED number
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181837>`__
Third party
===========
* `Add GN rules for ICU
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181311>`__
(issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__)
------------
Nov 15, 2023
------------
Highlights (Nov 02, 2023 to Nov 15, 2023):
* The API for writing proc macros with pw_format was simplified.
* ``pw_emu`` added a command for resuming the execution of paused emulators
and now has limited support for inserting environment variables into
configuration entries.
* ``pw_ide`` can now output logs to files.
* ``pw_unit_test`` added support for GoogleTest's
``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds``.
* Pigweed's :ref:`docs-mission` are now documented.
Active SEEDs
============
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
* `SEED-0114: Channels
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
* `SEED-0115: Sensors
<http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__
* `SEED-0116: Sockets
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177696>`__
Modules
=======
pw_allocator
------------
The ``...Unchecked`` methods have been removed from the
``pw::allocator::Allocator`` interface and the NVI-style ``Do...`` methods
have been modified to take ``Layout`` parameters.
* `Update interface based on final SEED-0110 design
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176754>`__
* `Refactor test support and example allocator
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177653>`__
(issue `#306686936 <https://issues.pigweed.dev/issues/306686936>`__)
pw_analog
---------
* `Mark libs as test only in bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179612>`__
(issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
pw_console
----------
``SocketClient`` has been updated to support both IPv4 and IPv6 addresses
in addition to Unix sockets.
* `Add docs banner
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180824>`__
* `Improve SocketClient addressing
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178921>`__
pw_emu
------
There is now limited supported for inserting environment variable values
into configuration entries. A command for resuming the execution
of a paused emulator was added.
* `Add support for substitutions in config entries
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179150>`__
(issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__)
* `Add resume command to CLI
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179030>`__
(issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__)
* `Fix CLI gdb and load commands
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178922>`__
(issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__)
pw_env_setup
------------
* `Make pigweed_environment.gni content gni-relative
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180991>`__
* `Update Bazel to 7.0.0 pre-release
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178950>`__
pw_format
---------
The API for writing `proc macros </rustdoc/pw_format/#proc-macros>`__ that take
format strings and arguments was simplified.
* `Add tests for macro helpers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181030>`__
* `Generalize format macro handling
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178132>`__
pw_fuzzer
---------
* `Move \`Domain\` from fuzztest::internal to fuzztest
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178213>`__
* `Switch oss-fuzz build to Bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175618>`__
pw_i2c
------
* `Mark libs as test only in bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179836>`__
(issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
pw_ide
------
Logs can now be output to files.
* `Set 3-space tabs in VS Code
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179671>`__
* `Support output to logs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163573>`__
* `Remove redundant licence
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179613>`__
* `Remove clangd auto-restart
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171691>`__
* `Make Sphinx extensions upstream-only
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171690>`__
* `VSC extension 0.1.1 release
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171070>`__
pw_perf_test
------------
* `Reogranize source files
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178914>`__
pw_presubmit
------------
* `Create new fuzz program
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181134>`__
(issue `#311215681 <https://issues.pigweed.dev/issues/311215681>`__)
* `Add examples showing how to create formatters
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180310>`__
* `Correct coverage ref
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179452>`__
(issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
pw_stream
---------
* `Fix use of shutdown on Windows
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180401>`__
(issue `#309680612 <https://issues.pigweed.dev/issues/309680612>`__)
pw_system
---------
* `Add tracing to the demo system
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168834>`__
pw_system_demo
--------------
* `Add clang to default stm32f4 build
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178930>`__
(issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
pw_tokenizer
------------
* `Add Java to supported languages list
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179251>`__
pw_toolchain
------------
* `Set alwayslink = 1 when using --wrap
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180930>`__
* `Add objdump
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175810>`__
pw_toolchain_bazel
------------------
Core building blocks from the :ref:`seed-0113` plan were implemented:
:py:class:`pw_cc_flag_set` and :py:class:`pw_cc_flag_group`.
* `Introduce pw_cc_flag_set and pw_cc_flag_group
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179932>`__
(issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
pw_trace_tokenized
------------------
* `Add a transfer based trace service
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168833>`__
pw_transfer
-----------
There's been a concerted effort to reduce ``pw_transfer`` test flakiness.
* `Limit data sent in handler clear test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180951>`__
(issue `#297355578 <https://issues.pigweed.dev/issues/297355578>`__)
* `Limit data sent in manual cancel test
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180826>`__
* `Use project-absolute imports for test fixture
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180390>`__
(issue `#310038737 <https://issues.pigweed.dev/issues/310038737>`__)
* `Prevent accidental timeouts in unit tests
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180274>`__
pw_unit_test
------------
The :ref:`module-pw_unit_test-api-expect` and
:ref:`module-pw_unit_test-api-assert` APIs were documented. Support for
GoogleTest's ``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds`` was
added.
* `Document ASSERT_ and EXPECT_ macros
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179873>`__
* `Include the right gmock header
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180030>`__
(issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
* `Mark libs as test only in bazel
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179874>`__
(issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
* `Support *_NEAR, *_FLOAT_EQ, *_DOUBLE_EQ
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179770>`__
* `Allow googletest_test_matchers_test to run
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179450>`__
* `Add more googletest test matchers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179151>`__
* `Add googletest test matchers
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177878>`__
pw_watch
--------
Support for ``httpwatcher`` was removed because it's not supported on modern
versions of Python.
* `Remove httpwatcher support
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179250>`__
(issue `#304603192 <https://issues.pigweed.dev/issues/304603192>`__)
pw_web
------
The log viewer has been polished and testing has been enhanced.
* `Fix LogViewControls responsive behavior
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179470>`__
(issue `#308993282 <https://issues.pigweed.dev/issues/308993282>`__)
* `Resume autoscroll with clear logs event
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179252>`__
* `Fix clear logs due to error thrown handling input text
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176867>`__
* `Add manual testing page in docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178923>`__
(issue `#288587657 <https://issues.pigweed.dev/issues/288587657>`__)
Build
=====
* `Update the default C++ standard
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178913>`__
Bazel
-----
* `Upgrade nanopb version
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180871>`__
* `Update comment
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180815>`__
* `Set --incompatible_default_to_explicit_init_py
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180454>`__
(issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__)
* `Make pw_cc_library an alias for cc_library
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178924>`__
(issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
* `Don't disable use_header_modules
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178565>`__
(issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
Targets
=======
.. todo-check: disable
* (``stm32f429i_disc1_stm32cube``)
`Update TODO
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179172>`__
.. todo-check: enable
Language support
================
* (Python) `Update constraint.list
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179614>`__
* (Python) `Upgrade parameterized package
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179451>`__
Docs
====
A document about Pigweed's :ref:`docs-mission` was added. The
:ref:`style guide <docs-pw-style>` was split into multiple pages.
* `Update Pigweed Live dates
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181031>`__
* `Add mission & philosophies
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178910>`__
* `Add Contribution Standards section
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179171>`__
* `Add details to codependent docs
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179879>`__
* `Update changelog
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178911>`__
(issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
* `Split the style guide: Doxygen & Sphinx
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178912>`__
* `Split the style guide: C++
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178952>`__
* `Split the style guide: commit style
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178490>`__
SEEDs
=====
* (SEED-0110) `Correct status
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179436>`__
* (SEED-0110) `Memory Allocation Interfaces
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
* (SEED-0113) `Add modular Bazel C/C++ toolchain API
<https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__
-----------
Nov 3, 2023
-----------
Highlights (Oct 19, 2023 to Nov 3, 2023):
* A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented.
* :ref:`module-pw_format` is a new module dedicated to Rust format string parsing.
* The tokenizer prefix is now configurable via
``PW_TOKENIZER_NESTED_PREFIX_STR``.
* References to C++14 have been removed throughout the codebase. Pigweed no
longer supports C++14; C++17 or newer is required.
* The upstream Pigweed GN build is now
:ref:`more isolated <docs-changelog-20231103-pw_build>` so that downstream
projects have less conflicts when importing Pigweed into their existing GN
build.
* Build configuration is moving away from Bazel macros like ``pw_cc_library``
and towards the toolchain configuration so that downstream projects can have
:ref:`full control <docs-changelog-20231103-bazel>` over how Pigweed libraries
are built.
* New guidelines for authoring module docs have been published at
:ref:`docs-contrib-docs-modules`. :ref:`module-pw_string` is now an example
of a "golden" module docs set that follows the new guidelines. Please leave
feedback on the new guidelines (and module docs updated to follow the
guidelines) in `issue #309123039 <https://issues.pigweed.dev/issues/309123039>`__.
Active SEEDs
============
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
* `SEED-0113: Modular Bazel C/C++ Toolchain API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__
* `SEED-0114: Channels <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
* `SEED-0115: Sensors <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__
* `SEED-0116: Sockets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177696>`__
Modules
=======
pw_allocator
------------
The docs now have an auto-generated size report.
``pw::allocator::SplitFreeListAllocator`` has a new ``blocks()`` method for getting the
range of blocks being tracked. The class was also refactored to
use the existing ``Block`` API. The ``Block`` API itself was refactored to
encode offsets and flags into fields.
* `Add size reporting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178370>`__
* `Return Range from SplitFreeListAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177807>`__
* `Refactor SplitFreeListAllocator to use Block <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176579>`__
* `Refactor Block to use encoded offsets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176578>`__
pw_arduino_build
----------------
* `STM32 Core fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177750>`__
pw_assert
---------
* `Update print_and_abort backend formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177845>`__
pw_bluetooth
------------
More :ref:`Emboss <module-pw_third_party_emboss>` definitions were added.
.. todo-check: disable
* `Add TODO for issue 308794058 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151070>`__
(issue `#308794058 <https://issues.pigweed.dev/issues/308794058>`__)
* `Remove anonymous entry in LEPeerAddressTypeNoAnon <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177881>`__
* `Separate LEAddressType and LEExtendedAddressType <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178010>`__
* `Define LEExtendedCreateConnectionV1 Emboss structure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176574>`__
(issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
* `Define LEEnhancedConnectionCompleteSubeventV1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176576>`__
(issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
* `Remove padding from Emboss command definitions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176772>`__
.. todo-check: enable
.. _docs-changelog-20231103-pw_build:
pw_build
--------
Pigweed used to inject a selection of recommended configs into every ``pw_*``
C/C++ target in the GN build. These were previously only possible to remove
with the ``remove_configs`` argument. These configs are now bundled with
toolchains instead, and if you don't use a Pigweed-style toolchain you'll
no longer need to find ways to strip the default configs from Pigweed build rules.
More importantly, this changes makes Pigweed's recommended configs behave
identically to other toolchain configs, and they're now more clearly part of
GN toolchain definitions. This change is transparent to most projects, but some
Pigweed customers have been asking for this for a while.
The :ref:`module-pw_build-bazel-empty_cc_library` Bazel utility was added.
* `Add empty_cc_library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178555>`__
* `Remove pw_build_default_configs_in_toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177894>`__
* `Apply pigweed_default_configs in toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120610>`__
(issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
* `Fix blob attribute ordering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177458>`__
* `Only use -Wextra-semi on C++ files with GCC <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177171>`__
(issues `#301262374 <https://issues.pigweed.dev/issues/306734552>`__,
`#301262374 <https://issues.pigweed.dev/issues/301262374>`__)
* `Silence Windows-specific warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177172>`__
pw_bytes
--------
A new ``_b`` literal was added to make it easier to create bytes for tests
and constants.
* `Add _b suffix for byte literals <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178134>`__
pw_containers
-------------
The reference docs for the variable length entry queue API in C and Python
were updated.
* `Update VariableLengthEntryQueue size functions; cleanup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173454>`__
pw_digital_io_mcuxpresso
------------------------
* `Remove RT595 size def <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178353>`__
pw_doctor
---------
* `Trivial linter fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176939>`__
pw_emu
------
* `renode: Show more details when failing to connect <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178563>`__
(issue `#307736513 <https://issues.pigweed.dev/issues/307736513>`__)
pw_env_setup
------------
``pip`` has been pinned to ``23.2.1`` and ``pip-tools`` to ``7.3.0`` to
prevent dependency resolution problems.
* `Pin pip and pip-tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177834>`__
* `Update protoc to 2@24.4 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177050>`__
(issue `#306461552 <https://issues.pigweed.dev/issues/306461552>`__)
pw_format
---------
:ref:`module-pw_format` is a new module dedicated to Rust format string parsing.
* `Correct crate name in docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178078>`__
* `Move Rust format string parsing into its own module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168362>`__
pw_fuzzer
---------
* `Inline NonOkStatus() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178212>`__
* `Fix instrumentation config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178214>`__
.. _docs-changelog-20231103-pw_hdlc:
pw_hdlc
-------
Using read callbacks in ``RpcClient`` is no longer accepted and the use of
``CancellableReader`` is now enforced because it provides a safe and clean
shutdown process.
* `Enforce use of CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173618>`__
(issue `#301496598 <https://issues.pigweed.dev/issues/301496598>`__)
pw_libcxx
---------
:ref:`module-pw_libcxx` is a new module that provides ``libcxx`` symbols and
will eventually facilitate pulling in headers as well.
* `Add pw_libcxx library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144970>`__
pw_log
------
A :ref:`module-pw_log-bazel-backend_impl` label flag was added to Bazel to
avoid circular dependencies.
* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__
(issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__)
* `Introduce backend_impl label flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177842>`__
(issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__)
pw_multibuf
-----------
A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented.
* `Add basic MultiBuf operations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178036>`__
* `Add Chunk::Merge <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177636>`__
* `Fix TrackingAllocatorWithMemory UAF <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177694>`__
* `Add module and Chunk implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173951>`__
pw_package
----------
* `Use mirror for stm32cube <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/142510>`__
(issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
* `Fix Zephyr URL <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177456>`__
pw_presubmit
------------
A CSS formatter was added.
* `Add basic CSS formatter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178810>`__
(issue `#308948504 <https://issues.pigweed.dev/issues/308948504>`__)
* `Kalypsi-based coverage upload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175070>`__
(issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
* `Handle missing upstream better <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177038>`__
(issue `#282808936 <https://issues.pigweed.dev/issues/282808936>`__)
* `Trivial linter fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176939>`__
pw_protobuf
-----------
* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__
(issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__)
pw_rpc
------
:ref:`pw::rpc::SynchronousCallFor() <module-pw_rpc-client-sync-call-wrappers>`
now supports :ref:`DynamicClient <module-pw_rpc_pw_protobuf-client>`.
* `Update Java service error with tip <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178812>`__
(issue `#293361955 <https://issues.pigweed.dev/issues/293361955>`__)
* `Support DynamicClient with SynchronousCallFor API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177637>`__
pw_string
---------
The docs were updated to match the new :ref:`docs-contrib-docs-modules`.
* `Docs tweaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177883>`__
pw_sys_io
---------
Backends that depend on ``default_putget_bytes`` were updated to express the
dependency.
* `Fix Bazel backends <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177656>`__
pw_system
---------
See :ref:`docs-changelog-20231103-pw_hdlc` for an explanation of the
``CancellableReader`` change.
* `Enforce use of CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173618>`__
(issue `#301496598 <https://issues.pigweed.dev/issues/301496598>`__)
pw_tls_client
-------------
* `Update to new boringssl API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178150>`__
pw_tokenizer
------------
The tokenizer prefix is now configurable via ``PW_TOKENIZER_NESTED_PREFIX_STR``.
* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__
(issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__)
* `Let tokenizer prefix be configurable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177575>`__
pw_toolchain
------------
You can now set the ``dir_pw_third_party_builtins`` GN var to your
``compiler-rt/builtins`` checkout to enable buildings LLVM ``builtins`` from
source instead of relying on a shipped ``libgcc``.
* `Apply pigweed_default_configs in toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120610>`__
(issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
* `Build compiler-rt builtins to replace libgcc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144050>`__
pw_unit_test
------------
* `Pass verbose flag to TestRunner <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177470>`__
pw_web
------
* `Limit component rerendering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177810>`__
(issue `#307559191 <https://issues.pigweed.dev/issues/307559191>`__)
Build
=====
References to C++14 have been removed throughout the codebase. Pigweed no
longer supports C++14; C++17 or newer is required.
* `Drop C++14 compatibility from the build and docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177610>`__
.. _docs-changelog-20231103-bazel:
Bazel
-----
Build configuration is moving away from Bazel macros like ``pw_cc_library``
and towards the toolchain configuration so that downstream projects can have
full control over how Pigweed libraries are built.
* `Move Kythe copts to toolchain configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178592>`__
(issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
* `Move warnings to toolchain configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178557>`__
(issue `#240466562 <https://issues.pigweed.dev/issues/240466562>`__)
* `Silence warnings from external code <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178436>`__
(issue `#300330623 <https://issues.pigweed.dev/issues/300330623>`__)
* `stm32cube support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177134>`__
* `Remove most copts from pw_cc_library macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170824>`__
(issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
Targets
=======
``pw_assert_BACKEND`` for :ref:`target-host` was set to
``print_and_abort_check_backend`` to enable compatibility with GoogleTest death
tests.
* (``host``) `Change pw_assert_BACKEND <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177835>`__
OS support
==========
* (``zephyr``) `Update checkout to v3.5 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177669>`__
Docs
====
New guidelines for authoring module docs have been published at
:ref:`docs-contrib-docs-modules`. :ref:`module-pw_string` is now an example
of a "golden" module docs set that follows the new guidelines. Please leave
feedback on the new guidelines (and module docs updated to follow the
guidelines) in `issue #309123039 <https://issues.pigweed.dev/issues/309123039>`__.
There's now a definition for :ref:`docs-glossary-facade` in the glossary.
* `Update module docs authoring guidelines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177465>`__
* `Fix nav and main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178591>`__
(issue `#303261476 <https://issues.pigweed.dev/issues/303261476>`__)
* `Add udev instructions to Bazel Get Started <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178435>`__
* `Add information on the experimental repo to contributing.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178272>`__
* `Mention command for updating Py dep hashes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177799>`__
* `Define facade in glossary <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177632>`__
* `Remove symlinks to files that were removed <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177530>`__
* `Mention upstream development guide in contributor guidelines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177459>`__
* `Move all images out of the repo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176751>`__
* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177085>`__
(issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
* `Move CoC to Contributors section of sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177071>`__
SEEDs
=====
* (SEED-0107) `Update SEED references; fix typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177698>`__
* (SEED-0112) `Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__
* (SEED-0115) `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177093>`__
* (SEED-0116) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177697>`__
Third party
===========
* (nanopb) `Detect protoc updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177650>`__
------------
Oct 20, 2023
------------
Highlights (Oct 5, 2023 to Oct 20, 2023):
* ``pw_emu`` has launched! Check out :ref:`module-pw_emu` to get started.
See :ref:`seed-0108` for background.
* :ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105`
for background.
* The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler
RAII API for allocating individual values within an allocator.
* A few SEEDs were accepted: :ref:`seed-0105`, :ref:`seed-0109`, and
:ref:`seed-0111`.
* Lots of new docs, including a guide for
:ref:`getting started with Bazel <docs-get-started-bazel>`, a
conceptual explanation of :ref:`facades and backends <docs-facades>`,
and an eng blog post detailing :ref:`Kudzu <docs-blog-01-kudzu>`, an
electronic badge that the Pigweed team made for Maker Faire 2023.
Active SEEDs
============
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
* `SEED-0113: Modular Bazel C/C++ Toolchain API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__
* `SEED-0114: Channels <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
* `SEED-0115: Sensors <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__
Modules
=======
pw_allocator
------------
The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler
RAII API for allocating individual values within an allocator.
* `Fix SplitFreeListAllocator region alignment <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175232>`__
* `Add UniquePtr\<T\> <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176781>`__
pw_async
--------
* `Add CMake support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175475>`__
pw_async_basic
--------------
* `Add missing include <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175476>`__
* `Fix build error when using pw_async:heap_dispatcher <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173480>`__
pw_bluetooth
------------
* `Define LEChannelSelectionAlgorithmSubevent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176577>`__
* `Define LEScanTimeoutSubevent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176575>`__
(issue `#265052417 <https://issues.pigweed.dev/issues/265052417>`__)
* `Use $size_in_bits instead of hardcoding size <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176573>`__
* `Switch from parameterized value to determining at run time <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176572>`__
(issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
* `Fix size reports <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173620>`__
pw_build
--------
:ref:`module-pw_build-bazel-pw_linker_script` now describes how to work
with linker scripts.
* `Update pw_linker_script docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174848>`__
* `Move pw_linker_script rule definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174872>`__
pw_chre
-------
* `Remove TODOs for CHRE MacOS support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175490>`__
pw_cli
------
* `Honor NO_COLOR and CLICOLOR_FORCE <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176860>`__
* `Use typing.Literal <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176778>`__
pw_digital_io
-------------
* `Add Android.bp for proto/rpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176270>`__
pw_emu
------
The module has launched! Check out :ref:`module-pw_emu` to get started.
* `renode: Increase start timeout to 120s <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176865>`__
* `Fix pid file race condition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176782>`__
* `mock_emu: start listening before making the port available <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176856>`__
(issue `#306155313 <https://issues.pigweed.dev/issues/306155313>`__)
* `qemu: Force using IPv4 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176430>`__
(issue `#305810466 <https://issues.pigweed.dev/issues/305810466>`__)
* `Add renode support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173613>`__
* `Add QEMU support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173612>`__
* `core: Let the OS terminate foreground emulator processes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175638>`__
* `Add user APIs and the command line interface <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173611>`__
* `Add core components <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173610>`__
* `Add Emulators Frontend module boilerplate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162096>`__
pw_env_setup
------------
* `Allow disabling CIPD cache <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176650>`__
* `Add prpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175236>`__
pw_function
-----------
* `Move pw_function_CONFIG to .gni <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173652>`__
pw_hdlc
-------
:ref:`module-pw_hdlc-api-rpc` now has much more information on how to use
``pw_hdlc`` for RPC in Python.
* `Update Python RPC documents <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174825>`__
pw_i2c
------
* `Fix accidental c++2a <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176511>`__
* `Add Android.bp for i2c proto/rpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176070>`__
pw_kvs
------
The new ``FlashPartitionWithLogicalSectors`` variant of ``FlashPartition``
supports combining multiple physical ``FlashMemory`` sectors into a single
logical ``FlashPartition`` sector.
* `Add FlashPartitionWithLogicalSectors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/106917>`__
pw_log_tokenized
----------------
:ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105` for background.
* `Add tokenized string args support to log backend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164514>`__
pw_log_zephyr
-------------
* `Clean-up unused dependencies from TOKENIZED_LIB <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174813>`__
pw_minimal_cpp_stdlib
---------------------
* `Support additional libraries <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173814>`__
* `Add Zephyr Kconfig to enable include path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173653>`__
pw_package
----------
* `Update boringssl commit & skip clang-tidy <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175016>`__
* `Update Emboss commit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173619>`__
pw_presubmit
------------
:ref:`module-pw_presubmit-presubmit-checks` has more guidance on when to use
``--base`` and ``--full``.
* `Add note about --full and --base <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175633>`__
pw_snapshot
-----------
* `More detokenization tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176759>`__
pw_spi
------
* `Fix cmake integration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175190>`__
pw_sync_zephyr
--------------
* `Add TimedThreadNotification::try_acquire_until <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175478>`__
pw_system
---------
The ``Device`` class's constructor now accepts a ``logger`` argument
that enables you to specify which logger should be used.
* `Add option to pass logger to Device <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175075>`__
pw_third_party_freertos
-----------------------
* `Add arm_cm7_not_r0p1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172382>`__
pw_thread
---------
* `More detokenization tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176759>`__
pw_thread_freertos
------------------
* `Fix extra wakeups when detaching threads <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175310>`__
(issue `#303885539 <https://issues.pigweed.dev/issues/303885539>`__)
pw_tokenizer
------------
:ref:`module-pw_tokenizer-get-started-integration` has new guidance around
configuring linker scripts in Bazel.
* `Expose linker_script in BUILD.bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175590>`__
pw_toolchain
------------
* `Exclude googletest from static analysis <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173482>`__
pw_transfer
-----------
* `Start the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170011>`__
(issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
pw_web
------
* `Reduce table cell padding <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176690>`__
(issue `#305022558 <https://issues.pigweed.dev/issues/305022558>`__)
* `Fix invisible jump button <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175330>`__
* `Enable manual color scheme setting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173630>`__
(issue `#301498553 <https://issues.pigweed.dev/issues/301498553>`__)
Build
=====
* `Fix pw_BUILD_BROKEN_GROUPS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176114>`__
* `Update Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175631>`__
(issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
Bazel
-----
* `Don't autodetect C++ toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175613>`__
(issue `#304880653 <https://issues.pigweed.dev/issues/304880653>`__)
* `Add O2 to arm_gcc toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175536>`__
(issue `#299994234 <https://issues.pigweed.dev/issues/299994234>`__)
Targets
=======
* (rp2040_pw_system) `Enable time slicing <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175074>`__
OS support
==========
* (zephyr) `Allow direct CMake inclusions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175477>`__
Docs
====
* `Move CoC to Contributors section of sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177071>`__
* `Create concepts section in sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177037>`__
* `Add facades and backends page <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170602>`__
* `Add Bazel getting started tutorial <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176319>`__
* `Remove css class on Kudzu image captions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176770>`__
* `Kudzu photos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176710>`__
* `Refactor the getting started section <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176331>`__
* `Add sitemap <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176492>`__
* `Add hat tip for pixel doubling technique <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175639>`__
* `Start eng blog and add Kudzu page <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175619>`__
* `Add Pigweed Live directive <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174892>`__
* `Add builder viz to CI/CQ intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175414>`__
(issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
* `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175415>`__
(issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
* `Add changelog highlight <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175231>`__
* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174818>`__
SEEDs
=====
A few SEEDs were accepted and a few more started.
* (SEED-0105) `Add nested tokens to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
* (SEED-0109) `Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
* (SEED-0111) `Update status, add link to SEED-0113 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176254>`__
* (SEED-0111) `Make Bazel Pigweed's Primary Build System <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__
* (SEED-0113) `Claim SEED number (Modular Bazel C/C++ Toolchain API) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175510>`__
* (SEED-0114) `Claim SEED number (Channels) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175412>`__
* (SEED-0115) `Clain SEED number (Sensors) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176763>`__
Third party
===========
* (boringssl) `Remove crypto_sysrand.cc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175017>`__
* (fuchsia) `Copybara import <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173651>`__
* (fuchsia) `Update copybara with fit/defer.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173481>`__
Miscellaneous
=============
* `Update formatting for new clang version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175311>`__
* `Use C++20 everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174630>`__
(issue `#303371098 <https://issues.pigweed.dev/issues/303371098>`__)
* (revert) `Use .test convention" <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171793>`__
* `Add generated Emboss code <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176571>`__
-----------
Oct 6, 2023
-----------
Highlights (Sep 21, 2023 to Oct 6, 2023):
* We expanded our RP2040 support. See the new :ref:`module-pw_chrono_rp2040`
and :ref:`module-pw_digital_io_rp2040` modules.
* The :ref:`new CancellableReader class in pw_hdlc <docs-changelog-20231009-pw_hdlc>`
is an interface for receiving RPC packets that guarantees its read process can be
stopped.
* ``pw_rpc`` now :ref:`automatically generates a new DynamicClient interface
<docs-changelog-20231009-pw_rpc>` when dynamic allocation is enabled.
* The Python backend for ``pw_tokenizer`` now supports :ref:`tokenizing strings as
arguments <docs-changelog-20231009-pw_tokenizer>`.
* The ``pigweed_config`` mechanism in Bazel is now officially retired.
Active SEEDs
============
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
* `SEED-0111: Make Bazel Pigweed's Primary Build System <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__
* `SEED-0112: Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__
Modules
=======
.. _docs-changelog-20231009-pw_allocator:
pw_allocator
------------
We added a bunch of new allocator APIs! ``AllocatorMetricProxy`` is a wrapper for
``Allocator`` that tracks the number and total of current memory allocations as well
as peak memory usage. ``LibCAllocator`` is an allocator that uses ``malloc()`` and
``free()``. ``NullAllocator`` is an allocator that always fails which is useful for
disallowing memory allocations under certain circumstances. ``SplitFreeListAllocator``
uses a free list to reduce fragmentation. ``FallbackAllocator`` enables you to
specify primary and secondary allocators.
* `Add Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173851>`__
* `Add pool accessors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173615>`__
* `Move Resize assertion <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173614>`__
* `Add AllocatorMetricProxy <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172380>`__
* `Add LibCAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172232>`__
* `Add NullAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172233>`__
* `Add SplitFreeListAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172231>`__
* `Add FallbackAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171837>`__
* `Generic interface for allocators <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171709>`__
pw_analog
---------
* `Migrate MicrovoltInput to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170593>`__
(issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
pw_async
--------
* `Add OWNERS file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173690>`__
pw_bloat
--------
``pw_size_report()`` has a new ``json_key_prefix`` argument which is an
optional prefix for key names in JSON size reports and a new
``full_json_summary`` argument which provides more control over how
much detail is provided in a JSON size report.
* `Update API to allow verbose json content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168718>`__
(issue `#282057969 <https://issues.pigweed.dev/issues/282057969>`__)
pw_bluetooth
------------
* `Format Emboss files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174832>`__
* `Update comments in HCI event defs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174070>`__
(issue `#265052417 <https://issues.pigweed.dev/issues/265052417>`__)
pw_build
--------
* `Fix path in Bazel pw_linker_script <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174591>`__
* `Expose pw_linker_script in Bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174590>`__
(issue `#303482154 <https://issues.pigweed.dev/issues/303482154>`__)
* `Define empty configs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174490>`__
* `Add bazel implementation of pw_cc_blob_library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173452>`__
(issue `#238339027 <https://issues.pigweed.dev/issues/238339027>`__)
* `Clean up build_target.gni <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120215>`__
(issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
* `Allow add_global_link_deps to be overridden <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150050>`__
* `Expose pigweed_default_configs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173372>`__
(issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
* `Apply -Wextra-semi to C code as well as C++ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172372>`__
pw_chre
-------
* `Update bug numbers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172330>`__
pw_chrono
---------
* `Add clarification to is_nmi_safe <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174573>`__
pw_chrono_rp2040
----------------
This module is a new ``pw::chrono::SystemClock`` backend for RP2040.
* `System clock backend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174651>`__
pw_cli
------
* `Update requires script <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126101>`__
* `Narrow logic around colors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173232>`__
pw_containers
-------------
There's a new C implementation for ``VariableLengthEntryDeque`` which is a
double-ended queue buffer that stores variable-length entries inline in a
circular (ring) buffer. The old ``VariableLengthEntryDeque`` was renamed
to ``VariableLengthEntryQueue``.
* `Add missing <utility> include for std::move <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173879>`__
* `Rename to VariableLengthEntryQueue <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173451>`__
* `Rename files to variable_length_entry_queue <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173450>`__
* `VariableLengthEntryDeque Entry struct <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173130>`__
* `VariableLengthEntryDeque C implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169731>`__
pw_digital_io_rp2040
--------------------
This module is a new RP2040 backend for ``pw_digital_io``.
* `Implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173550>`__
(issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
pw_env_setup
------------
We made the Pigweed bootstrap process on Windows more robust.
* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172416>`__
(issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
* `Better highlight bootstrap failure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172415>`__
* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__
(issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
.. _docs-changelog-20231009-pw_hdlc:
pw_hdlc
-------
The new ``CancellableReader`` class is a new interface for receiving RPC
packets that guarantees its read process can be stopped.
* `Add CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172051>`__
(issue `#294858483 <https://issues.pigweed.dev/issues/294858483>`__)
pw_i2c
------
* `Fix docs to use MakeExpectedTransactionArray <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173570>`__
* `Add cmake integration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172210>`__
pw_kvs
------
The new ``FlashPartitionWithLogicalSectors`` C++ class supports combining
multiple physical ``FlashMemory`` sectors into a single logical
``FlashPartition`` sector.
* `Add FlashPartitionWithLogicalSectors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/106917>`__
pw_libc
-------
* `Don't implicitly link against global link_deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150051>`__
pw_metric
---------
* `Make constructors constexpr <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172379>`__
pw_minimal_cpp_stdlib
---------------------
* `Update to compile with stdcompat <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173350>`__
* `Namespace public/internal to module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173692>`__
pw_perf_test
------------
* `Gate on pw_chrono_SYSTEM_TIMER_BACKEND <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174650>`__
pw_presubmit
------------
* `Allow dots in module part of commit message <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174232>`__
* `Use autodoc for context classes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169119>`__
* `Allow passing kwargs to build.bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173853>`__
(issue `#302045722 <https://issues.pigweed.dev/issues/302045722>`__)
* `No env_with_clang_vars with bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173656>`__
pw_ring_buffer
--------------
* `Minor build and docs updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173030>`__
.. _docs-changelog-20231009-pw_rpc:
pw_rpc
------
If dynamic allocation is enabled via ``PW_RPC_DYNAMIC_ALLOCATION`` a new
``DynamicClient`` is now generated which dynamically allocates the call
object with ``PW_RPC_MAKE_UNIQUE_PTR``.
* `Generate DynamicClient that dynamically allocates call objects <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168534>`__
* `Add CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172051>`__
(issue `#294858483 <https://issues.pigweed.dev/issues/294858483>`__)
pw_rpc_transport
----------------
* `Add a test loopback service registry <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171114>`__
(issue `#300663813 <https://issues.pigweed.dev/issues/300663813>`__)
pw_stream
---------
``pw_stream`` now has initial support for ``winsock2``.
* `Add Windows socket support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172413>`__
pw_sys_io_rp2040
----------------
* `Renamed from pw_sys_io_pico <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174910>`__
.. _docs-changelog-20231009-pw_tokenizer:
pw_tokenizer
------------
The Python backend now supports nested hashing tokenization. See
:ref:`module-pw_tokenizer-nested-arguments`.
* `Support nested hashing tokenization (python backend) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/145339>`__
(issue `#278890205 <https://issues.pigweed.dev/issues/278890205>`__)
* `Test for C99 support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170150>`__
pw_toolchain
------------
* `Add libc stub for gettimeofday, update visibility rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173850>`__
* `Link against pw_libc for host clang toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151439>`__
pw_transfer
-----------
* `Start the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170011>`__
(issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
* `Remove old test server <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172951>`__
(issue `#234875234 <https://issues.pigweed.dev/issues/234875234>`__)
pw_unit_test
------------
* `Do not print contents of unknown objects <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174911>`__
* `Add more pw_unit_test_TESTONLY args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173670>`__
(issue `#234873207 <https://issues.pigweed.dev/issues/234873207>`__)
* `Add pw_unit_test_TESTONLY build arg <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171970>`__
(issue `#234873207 <https://issues.pigweed.dev/issues/234873207>`__)
pw_watch
--------
* `Add link to served docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173456>`__
pw_web
------
* `Make ongoing transfers accessible downstream <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174231>`__
* `TypeScript workarounds for disambiguation errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173590>`__
* `Throw error as an Error type <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173051>`__
* `Remove need for Buffer package in pw_hdlc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172377>`__
* `Remove date-fns <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172371>`__
Build
=====
* `Fix extended default group <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174574>`__
(issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
* `Fix \`all\` target in GN build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173050>`__
* `Add an extended default group <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/110391>`__
Bazel
-----
* `Retire pigweed_config (part 3) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172411>`__
* `Retire pigweed_config (part 2) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170058>`__
(issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__)
Docs
====
We started a :ref:`glossary <docs-glossary>` and added new docs about
:ref:`rollers <docs-rollers>` and :ref:`CI/CQ <docs-ci-cq-intro>`.
* `Add docs on rollers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174770>`__
(issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
* `Remove redundant auto-submit section <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174890>`__
(issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
* `Reformat CI/CQ Intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174870>`__
(issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
* `Move CI/CQ Intro to infra/ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174776>`__
(issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
* `Address comments on CI/CQ intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173932>`__
(issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
* `Tidy up build system docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173658>`__
* `Fix typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173872>`__
* `Add CI/CQ Intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173455>`__
(issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
* `Add policy on incomplete docs changes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173617>`__
* `Start the glossary <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172952>`__
* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172810>`__
(issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
* `Add Doxygen @endcode guidance <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172470>`__
SEEDs
=====
* (SEED-0112) `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174771>`__
Miscellaneous
=============
pigweed.json
------------
* `Exclude patches.json from formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174230>`__
(issue `#232234662 <https://issues.pigweed.dev/issues/232234662>`__)
------------
Sep 22, 2023
------------
Highlights (Sep 07, 2023 to Sep 22, 2023):
* ``pw_tokenizer`` has :ref:`new C++ methods for detokenizing
Base64-encoded strings and new C functions for manually encoding tokenized
messages that contain integers <docs-changelog-pw_tokenizer-20230922>`.
* ``pw::rpc::SynchronousCall`` now supports the use of :ref:`custom response message
classes <docs-changelog-pw_rpc-20230922>`.
* The C API for ``pw_varint`` got :ref:`lots of ergonomic improvements
<docs-changelog-pw_varint-20230922>`.
* The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code
review process.
Active SEEDs
============
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
* `SEED-0111: Future of Pigweed build systems <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__
* `SEED-0112: Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__
Modules
=======
pw function
-----------
* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__
(issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
pw perf_test
------------
* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__
(issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
pw_analog
---------
* `Migrate AnalogInput to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170511>`__
(issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
pw_async
--------
The ``Run*()`` methods of ``FakeDispatcher`` now return a boolean that indicates
whether any tasks were invoked.
* `Return bool from FakeDispatcher Run*() methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170599>`__
pw_async_basic
--------------
``release()`` is now only called outside of locked contexts to prevent an
issue where the thread wakes up and then immediately goes back to sleep.
An unnecessary 5-second wakeup has been removed from ``BasicDispatcher``.
* `release outside of lock context <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171103>`__
* `Remove unnecessary 5-second wakeup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171102>`__
pw_base64
---------
The new ``pw::base64::IsValidChar()`` method can help you determine if a
character is valid Base64.
* `Add base64 detokenizer handler <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165010>`__
pw_bluetooth
------------
More :ref:`Emboss <module-pw_third_party_emboss>` definitions were added.
* `Add ReadLocalSupportedCommandsCommandCompleteEvent Emboss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169877>`__
* `Add LEReadLocalSupportedFeaturesCommandCompleteEvent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169931>`__
* `Add ReadBufferSizeCommandComplete Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169869>`__
* `Add ReadBdAddrCommandCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170052>`__
* `Add ReadLocalVersionInfoCommandCompleteEvent Emboss def <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169951>`__
* `Add LELongTermKeyRequestSubevent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169950>`__
* `Add UserPasskeyNotificationEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169917>`__
pw_build
--------
* `Apply -Wextra-semi to C code as well as C++ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172372>`__
pw_bytes
--------
The ``AlignDown()``, ``AlignUp()``, and ``Padding()`` methods of ``pw_kvs``
have moved to ``pw_bytes`` to enable ``pw_allocator`` to use them without
taking a dependency on ``pw_kvs``.
* `Move Align functions from pw_kvs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171831>`__
pw_checksum
-----------
* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__
(issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
pw_chre
-------
The implementation of a module that will enable to work more seamlessly with
Android's `Context Hub Runtime Environment <https://source.android.com/docs/core/interaction/contexthub>`__
has begun.
* `Update bug numbers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172330>`__
* `Minor fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171851>`__
(issue `#301079509 <https://issues.pigweed.dev/issues/301079509>`__)
* `Fix build rules to use paramertized paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171850>`__
(issue `#298474212 <https://issues.pigweed.dev/issues/298474212>`__)
* `Split out shared_platform <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170791>`__
* `Write our own version.cc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170790>`__
(issue `#300633363 <https://issues.pigweed.dev/issues/300633363>`__)
* `Add barebones CHRE <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162510>`__
(issue `#294106526 <https://issues.pigweed.dev/issues/294106526>`__)
pw_console
----------
When invoking ``pw_console`` directly from Python, you can now provide arguments
through an ``argparse.Namespace`` instead of messing with ``sys.argv`` or forking
another process.
* `Allow injecting args via Python call <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172414>`__
pw_containers
-------------
`MemorySanitizer <https://github.com/google/sanitizers/wiki/MemorySanitizer>`__ has
been disabled in some of the ``InlineDeque`` implementation to prevent some false
positive detections of uninitialized memory reads.
* `Silence MSAN false positives <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171990>`__
pw_env_setup
------------
Work continues on making the Windows bootstrap process more robust.
* `Better highlight bootstrap failure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172415>`__
* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__
(issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
* `Enable overriding Clang CIPD version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171838>`__
* `PyPI version bump to 0.0.15 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171836>`__
* `Add relative_pigweed_root to pigweed.json <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171218>`__
(issue `#300632028 <https://issues.pigweed.dev/issues/300632028>`__)
* `Roll cipd to 0f08b927516 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170452>`__
pw_function
-----------
The documentation has been updated for accuracy.
* `Update config.h comments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171250>`__
* `Add configurable Allocator default <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171130>`__
* `Update example to match guidelines for parameters <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170651>`__
* `Add Allocator injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170190>`__
pw_fuzzer
---------
Conditional logic around fuzzing support has been refactored to allow for
dedicated targets based on specific conditions and to make it clearer
exactly what configurations and dependencies are being used.
* `Refactor conditional GN targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169712>`__
pw_ide
------
* `Reformat json files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172310>`__
* `Fix clangd path on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171099>`__
* `Move VSC extension into npm package dir <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170995>`__
pw_libc
-------
The initial implementation work continues.
* `Pull in 'abort' <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/138518>`__
* `Use .test convention <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171793>`__
* `Use underscore prefixed variables <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171792>`__
* `Add documentation for pw_libc_source_set <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171693>`__
* `Pull in 'gmtime' <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137699>`__
* `Fix printf for newer llvm-libc commits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170831>`__
* `Fix llvm-libc after internal assert changes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168830>`__
pw_log
------
The implementation work continues to enable an Android component to read logs
from a component running the ``pw_log_rpc`` service.
* `Update Android.bp to generate RPC header files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169530>`__
(issue `#298693458 <https://issues.pigweed.dev/issues/298693458>`__)
pw_log_string
-------------
* `Fix the default impl to handle zero length va args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169975>`__
pw_package
----------
Mirrors are now being used for various third-party dependencies.
* `Use mirror for zephyrproject-rtos/zephyr <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170355>`__
(issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
* `Use Pigweed mirror for google/emboss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170356>`__
(issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
* `Use mirror for raspberrypi/picotool <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170040>`__
(issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
pw_polyfill
-----------
* `Increase __GNUC__ for __constinit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171150>`__
(issue `#300478321 <https://issues.pigweed.dev/issues/300478321>`__)
pw_presubmit
------------
A new JSON formatting check has been added. The missing newline check has been
made more robust.
* `Add JSON formatter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171991>`__
* `Better handling of missing newlines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172230>`__
(issue `#301315329 <https://issues.pigweed.dev/issues/301315329>`__)
* `Expand Bazel parser to tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171890>`__
* `Remove now-unnecessary flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171670>`__
(issue `#271299438 <https://issues.pigweed.dev/issues/271299438>`__)
* `Additional functions for handling gn args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170594>`__
* `Include bazel_build in full program <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170056>`__
pw_protobuf
-----------
* `Fix "Casting..." heading level <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171030>`__
.. _docs-changelog-pw_rpc-20230922:
pw_rpc
------
``pw::rpc::SynchronousCall`` now supports the use of custom response message
classes that set field callbacks in their constructor. See
:ref:`module-pw_rpc-client-sync-call-wrappers`.
.. todo-check: disable
* `Refer to bug in TODO and fix format <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172453>`__
* `Support custom response messages in SynchronousCall <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170041>`__
(issue `#299920227 <https://issues.pigweed.dev/issues/299920227>`__)
* `Add fuzz tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/143474>`__
.. todo-check: enable
pw_stream
---------
* `Add Windows socket support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172413>`__
pw_string
---------
* `Fix signed integer overflow <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171839>`__
pw_system
---------
* `Add arm_none_eabi_gcc_support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158730>`__
pw_thread
---------
* `Fix small typo in docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171750>`__
.. _docs-changelog-pw_tokenizer-20230922:
pw_tokenizer
------------
``pw::tokenizer::Detokenizer`` has new ``DetokenizeBase64Message()`` and
``DetokenizeBase64()`` methods for detokenizing Base64-encoded strings.
The new ``pw_tokenizer_EncodeInt()`` and ``pw_tokenizer_EncodeInt64()``
functions in the C API make it easier to manually encode tokenized messages
with integers from C.
* `C++ Base64 detokenization improvements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171675>`__
* `Add base64 detokenizer handler <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165010>`__
* `C functions for encoding arguments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169976>`__
pw_toolchain
------------
``arm_gcc`` now supports Cortex-M33.
* `Add missing objcopy tool to bazel toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171697>`__
(issue `#301004620 <https://issues.pigweed.dev/issues/301004620>`__)
* `Add cpu flags to asmopts as well <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171671>`__
* `Add cortex-m33 support to arm_gcc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171237>`__
pw_toolchain_bazel
------------------
* `Support ar opts in pw_toolchain_features <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171673>`__
* `Add cortex-m7 constraint_value <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171071>`__
(issue `#300467616 <https://issues.pigweed.dev/issues/300467616>`__)
.. _docs-changelog-pw_varint-20230922:
pw_varint
---------
The C encoding functions now have an output size argument, making them much
easier to use. There's a new macro for calculating the encoded size of an
integer in a C constant expression. Incremental versions of the encode and
decode functions have been exposed to support in-place encoding and decoding
with non-contiguous buffers.
* `C API updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170050>`__
pw_web
------
The ``ProgressStats`` and ``ProgressCallback`` types are now exported.
Styling and scrolling behavior in the log viewer has been improved.
* `Remove need for Buffer package in pw_hdlc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172377>`__
* `Remove date-fns <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172371>`__
* `Export ProgressStats, ProgressCallback types <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171707>`__
* `Add back 'buffer' dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171891>`__
* `NPM version bump to 0.0.13 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171110>`__
* `Improve scrolling behavior <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171290>`__
(issue `#298097109 <https://issues.pigweed.dev/issues/298097109>`__)
* `Fix leading white spaces, scrollbar size, and filters in quotes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170811>`__
* `NPM version bump to 0.0.12 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170597>`__
* `Fix column sizing & toggling, update UI <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169591>`__
* `Replace Map() with object in proto collection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170493>`__
pw_work_queue
-------------
* `Don't lock around work_notification_ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170450>`__
* `Migrate API reference to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169830>`__
(issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
Build
=====
* `Update Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171510>`__
Bazel
-----
* `Add platform-printing aspect <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/122974>`__
* `Retire pigweed_config (part 2) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170058>`__
(issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__)
* `Retire pigweed_config (part 1) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168721>`__
(issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__)
* `Remove -Wno-private-header from copts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170951>`__
(issue `#240466562 <https://issues.pigweed.dev/issues/240466562>`__)
* `Remove bazelembedded dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170650>`__
(issue `#297239780 <https://issues.pigweed.dev/issues/297239780>`__)
* `Move cxxopts out of bazelrc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170639>`__
(issue `#269195628 <https://issues.pigweed.dev/issues/269195628>`__)
* `Use the same clang version as in GN <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170638>`__
* `Arm gcc configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168192>`__
(issue `#297239780 <https://issues.pigweed.dev/issues/297239780>`__)
Targets
=======
* `Fix pico_sdk elf2uf2 on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170770>`__
* `Add pw_strict_host_clang_debug_dynamic_allocation tc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171674>`__
Docs
====
The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code
review process.
* `Add Doxygen @endcode guidance <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172470>`__
* `Clean up remaining instances of code:: <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172050>`__
(issue `#300317685 <https://issues.pigweed.dev/issues/300317685>`__)
* `Document code review process <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171774>`__
* `Add link to in-progress hardware targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171239>`__
* `Fix link title for pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170670>`__
* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170055>`__
(issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
SEEDs
=====
* `Update process document <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170390>`__
* (SEED-0104) `Display Support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
* (SEED-0109) `Make link externally accessible <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170043>`__
* (SEED-0110) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170038>`__
* (SEED-0111) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171672>`__
* (SEED-0112) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168359>`__
Third party
===========
* `Add public configs for FuzzTest deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169711>`__
third_party/fuchsia
-------------------
* `Copybara import <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171010>`__
* `Update patch script and patch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170890>`__
* `Update patch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170794>`__
* `Support specifying the Fuchsia repo to use <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170170>`__
third_party/pico_sdk
--------------------
* `Selectively disable elf2uf2 warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171072>`__
(issue `#300474559 <https://issues.pigweed.dev/issues/300474559>`__)
* `Fix multicore source filename <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170330>`__
Miscellaneous
=============
.. todo-check: disable
* `Use new TODO style <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170730>`__
* `Add toolchain team members <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172170>`__
* `Fix double bootstrap.bat failures on Windows" <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__
(issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
.. todo-check: enable
-----------
Sep 8, 2023
-----------
Highlights (Aug 25, 2023 to Sep 8, 2023):
* SEED :ref:`seed-0107` has been approved! Pigweed will adopt a new sockets API as
its primary networking abstraction. The sockets API will be backed by a new,
lightweight embedded-focused network protocol stack inspired by TCP/IP.
* SEED :ref:`seed-0108` has also been approved! Coming soon, the new ``pw_emu``
module will make it easier to work with emulators.
Active SEEDs
============
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
Modules
=======
pw_assert
---------
We fixed circular dependencies in Bazel.
* `Remove placeholder target <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168844>`__
* `Fix Bazel circular deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160794>`__
(issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__)
* `Introduce pw_assert_backend_impl <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168774>`__
(issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__)
pw_bluetooth
------------
We added :ref:`Emboss <module-pw_third_party_emboss>` definitions.
* `Add SimplePairingCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169916>`__
* `Add UserPasskeyRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169912>`__
* `Add UserConfirmationRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169871>`__
* `Use hci.LinkKey in LinkKeyNotificationEvent.link_key <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168858>`__
* `Add IoCapabilityResponseEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168354>`__
* `Add IoCapabilityRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168353>`__
* `Add EncryptionKeyRefreshCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168331>`__
* `Add ExtendedInquiryResultEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168330>`__
pw_build
--------
* `Force watch and default recipe names <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169911>`__
pw_build_mcuxpresso
-------------------
* `Output formatted bazel target <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169740>`__
pw_cpu_exception
----------------
We added Bazel support.
* `bazel build support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169733>`__
(issue `#242183021 <https://issues.pigweed.dev/issues/242183021>`__)
pw_crypto
---------
The complete ``pw_crypto`` API reference is now documented on :ref:`module-pw_crypto`.
* `Add API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169572>`__
(issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
pw_env_setup
------------
Banners should not print correctly on Windows.
* `Add i2c protos to python deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169231>`__
* `Fix banner printing on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169172>`__
(issue `#289008307 <https://issues.pigweed.dev/issues/289008307>`__)
pw_file
-------
* `Add pw_file python package <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168831>`__
pw_function
-----------
The :cpp:func:`pw::bind_member()` template is now exposed in the public API.
``bind_member()`` is useful for binding the ``this`` argument of a callable.
We added a section to the docs explaining :ref:`why pw::Function is not a
literal <module-pw_function-non-literal>`.
* `Explain non-literal design rationale <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168777>`__
* `Expose \`bind_member\` <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169123>`__
pw_fuzzer
---------
We refactored ``pw_fuzzer`` logic to be more robust and expanded the
:ref:`module-pw_fuzzer-guides-reproducing_oss_fuzz_bugs` doc.
* `Refactor OSS-Fuzz support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167348>`__
(issue `#56955 <https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56955>`__)
pw_i2c
------
* `Use new k{FieldName}MaxSize constants to get buffer size <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168913>`__
pw_kvs
------
We are discouraging the use of the shorter macros because they collide with
Abseil's logging API.
* `Remove usage of pw_log/shorter.h API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169920>`__
(issue `#299520256 <https://issues.pigweed.dev/issues/299520256>`__)
pw_libc
-------
``snprintf()`` support was added.
* `Import LLVM libc's snprintf <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137735>`__
pw_log_string
-------------
We added more detail to :ref:`module-pw_log_string`.
* `Fix the default impl to handle zero length va args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169975>`__
* `Provide more detail in the getting started docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168934>`__
(issue `#298124226 <https://issues.pigweed.dev/issues/298124226>`__)
pw_log_zephyr
-------------
It's now possible to define ``pw_log_tokenized_HandleLog()`` outside of Pigweed
so that Zephyr projects have more flexibility around how they capture tokenized
logs.
* `Split tokenize handler into its own config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168612>`__
pw_package
----------
* `Handle failed cipd acl checks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168530>`__
pw_persistent_ram
-----------------
* `Add persistent_buffer flat_file_system_entry <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168832>`__
pw_presubmit
------------
We added a reStructuredText formatter.
* `Make builds_from_previous_iteration ints <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169721>`__
(issue `#299336222 <https://issues.pigweed.dev/issues/299336222>`__)
* `Move colorize_diff to tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168839>`__
* `RST formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168541>`__
pw_protobuf
-----------
``max_size`` and ``max_count`` are now exposed in generated headers.
The new ``proto_message_field_props()`` helper function makes it easier to
iterate through a messages fields and properties.
* `Expose max_size, max_count in generated header file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168973>`__
(issue `#297364973 <https://issues.pigweed.dev/issues/297364973>`__)
* `Introduce proto_message_field_props() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168972>`__
* `Change PROTO_FIELD_PROPERTIES to a dict of classes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168971>`__
* `Rename 'node' to 'message' in forward_declare() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168970>`__
* `Simplify unnecessary Tuple return type <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168910>`__
pw_random
---------
We're now auto-generating the ``XorShiftStarRng64`` API reference via Doxygen.
* `Doxygenify xor_shift.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164510>`__
pw_rpc
------
The new ``request_completion()`` method in Python enables you to send a
completion packet for server streaming calls.
* `Add request_completion to ServerStreamingCall python API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168439>`__
pw_spi
------
* `Fix Responder.SetCompletionHandler() signature <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169130>`__
pw_symbolizer
-------------
The ``LlvmSymbolizer`` Python class has a new ``close()`` method to
deterministically close the background process.
* `LlvmSymbolizer tool improvement <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168863>`__
pw_sync
-------
We added :ref:`module-pw_sync-genericbasiclockable`.
* `Add GenericBasicLockable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165930>`__
pw_system
---------
``pw_system`` now supports different channels for primary and logging RPC.
* `Multi-channel configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167158>`__
(issue `#297076185 <https://issues.pigweed.dev/issues/297076185>`__)
pw_thread_freertos
------------------
* `Add missing dep to library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169239>`__
pw_tokenizer
------------
We added :c:macro:`PW_TOKENIZE_FORMAT_STRING_ANY_ARG_COUNT` and
:c:macro:`PW_TOKENIZER_REPLACE_FORMAT_STRING`. We refactored the docs
so that you don't have to jump around the docs as much when learning about
key topics like tokenization and token databases. Database loads now happen
in a separate thread to avoid blocking the main thread. Change detection for
directory databases now works more as expected. The config API is now exposed
in the API reference.
* `Remove some unused deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169573>`__
* `Simplify implementing a custom tokenization macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169121>`__
* `Refactor the docs to be task-focused <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169124>`__
* `Reload database in dedicated thread <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168866>`__
* `Combine duplicated docs sections <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168865>`__
* `Support change detection for directory dbs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168630>`__
* `Move config value check to .cc file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168615>`__
pw_unit_test
------------
We added ``testing::Test::HasFailure()``, ``FRIEND_TEST``, and ``<<`` messages
to improve gTest compatibility.
* `Add testing::Test::HasFailure() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168810>`__
* `Add FRIEND_TEST <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169270>`__
* `Allow <<-style messages in test expectations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168860>`__
pw_varint
---------
``pw_varint`` now has a :ref:`C-only API <module-pw_varint-api-c>`.
* `Add C-only implementation; cleanup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169122>`__
pw_web
------
Logs can now be downloaded as plaintext.
* `Fix TypeScript errors in Device files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169930>`__
* `Json Log Source example <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169176>`__
* `Enable downloading logs as plain text <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168130>`__
* `Fix UI/state bugs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167911>`__
* `NPM version bump to 0.0.11 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168591>`__
* `Add basic bundling tests for log viewer bundle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168539>`__
Build
=====
Bazel
-----
* `Fix alwayslink support in MacOS host_clang <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168614>`__
(issue `#297413805 <https://issues.pigweed.dev/issues/297413805>`__)
* `Fix lint issues after roll <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169611>`__
Docs
====
* `Fix broken links <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169579>`__
(issue `#299181944 <https://issues.pigweed.dev/issues/299181944>`__)
* `Recommend enabling long file paths on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169578>`__
* `Update Windows command for git hook <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168592>`__
* `Fix main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168555>`__
(issue `#297384789 <https://issues.pigweed.dev/issues/297384789>`__)
* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168540>`__
(issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
* `Use code-block:: instead of code:: everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168617>`__
* `Add function signature line breaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168554>`__
* `Cleanup indentation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168537>`__
SEEDs
=====
* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
Third party
===========
* `Add public configs for FuzzTest deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169711>`__
* `Reconfigure deps & add cflags to config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152691>`__
Miscellaneous
=============
* `Fix formatting with new clang version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169078>`__
mimxrt595_evk_freertos
----------------------
* `Use config_assert helper <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160378>`__
------------
Aug 25, 2023
------------
Highlights (Aug 11, 2023 to Aug 25, 2023):
* ``pw_tokenizer`` now has Rust support.
* The ``pw_web`` log viewer now has advanced filtering and a jump-to-bottom
button.
* The ``run_tests()`` method of ``pw_unit_test`` now returns a new
``TestRecord`` dataclass which provides more detailed information
about the test run.
* A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS
has been added.
Active SEEDs
============
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
Modules
=======
pw_bloat
--------
* `Fix typo in method name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166832>`__
pw_bluetooth
------------
The :ref:`module-pw_third_party_emboss` files were refactored.
* `Add SynchronousConnectionCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167862>`__
* `Add all Emboss headers/deps to emboss_test & fix errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168355>`__
* `Add InquiryResultWithRssiEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167859>`__
* `Add DataBufferOverflowEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167858>`__
* `Add LinkKeyNotificationEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167855>`__
* `Add LinkKeyRequestEvent emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167349>`__
* `Remove unused hci emboss files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167090>`__
* `Add RoleChangeEvent emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167230>`__
* `Add missing test dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167130>`__
* `Add new hci subset files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166730>`__
pw_build
--------
The ``pw_build`` docs were split up so that each build system has its own page
now. The new ``output_logs`` flag enables you to not output logs for ``pw_python_venv``.
* `Handle read-only files when deleting venvs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167863>`__
* `Split build system docs into separate pages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165071>`__
* `Use pw_toolchain_clang_tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167671>`__
* `Add missing pw_linker_script flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167632>`__
(issue `#296928739 <https://issues.pigweed.dev/issues/296928739>`__)
* `Fix output_logs_ unused warning <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166991>`__
(issue `#295524695 <https://issues.pigweed.dev/issues/295524695>`__)
* `Don't include compile cmds when preprocessing ldscripts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166490>`__
* `Add pw_python_venv.output_logs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165330>`__
(issue `#295524695 <https://issues.pigweed.dev/issues/295524695>`__)
* `Increase size of test linker script memory region <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164823>`__
* `Add integration test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154553>`__
pw_cli
------
* `Default change pw_protobuf default <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126806>`__
(issue `#266298474 <https://issues.pigweed.dev/issues/266298474>`__)
pw_console
----------
* `Update web viewer to use pigweedjs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162995>`__
pw_containers
-------------
* `Silence MSAN false positive in pw::Vector <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167111>`__
pw_docgen
---------
Docs builds should be faster now because Sphinx has been configured to use
all available cores.
* `Remove top nav bar <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168446>`__
* `Parallelize Sphinx <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164738>`__
pw_env_setup
------------
Sphinx was updated from v5.3.0 to v7.1.2. We switched back to the upstream Furo
theme and updated to v2023.8.19. The content of ``pigweed_environment.gni`` now
gets logged. There was an update to ensure that ``arm-none-eabi-gdb`` errors
propagate correctly. There is now a way to override Bazel build files for CIPD
repos.
* `Upgrade sphinx and dependencies for docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168431>`__
* `Upgrade sphinx-design <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168339>`__
* `Copy pigweed_environment.gni to logs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167850>`__
* `arm-gdb: propagate errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165411>`__
* `arm-gdb: exclude %VIRTUAL_ENV%\Scripts from search paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164370>`__
* `Add ability to override bazel BUILD file for CIPD repos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165530>`__
pw_function
-----------
* `Rename template parameter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168334>`__
pw_fuzzer
---------
* `Add test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154555>`__
pw_hdlc
-------
A new ``close()`` method was added to ``HdlcRpcClient`` to signal to the thread
to stop.
* `Use explicit logger name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166591>`__
* `Mitigate errors on Python background thread <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162712>`__
(issue `#293595266 <https://issues.pigweed.dev/issues/293595266>`__)
pw_ide
------
A new ``--install-editable`` flag was added to install Pigweed Python modules
in editable mode so that code changes are instantly realized.
* `Add cmd to install Py packages as editable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163572>`__
* `Make VSC extension run on older versions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167054>`__
pw_perf_test
------------
* `Add test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154554>`__
pw_presubmit
------------
``pw_presubmit`` now has an ESLint check for linting and a Prettier check for
formatting JavaScript and TypeScript files.
* `Add msan to OTHER_CHECKS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168325>`__
(issue `#234876100 <https://issues.pigweed.dev/issues/234876100>`__)
* `Upstream constraint file output fix <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166270>`__
* `JavaScript and TypeScript lint check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165410>`__
* `Apply TypeScript formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164825>`__
* `Use prettier for JS and TS files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165390>`__
pw_rpc
------
A ``request_completion()`` method was added to the ``ServerStreamingCall``
Python API. A bug was fixed related to encoding failures when dynamic buffers
are enabled.
* `Add request_completion to ServerStreamingCall python API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168439>`__
* `Various small enhancements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167162>`__
* `Remove deprecated method from Service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165510>`__
* `Prevent encoding failure when dynamic buffer enabled <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166833>`__
(issue `#269633514 <https://issues.pigweed.dev/issues/269633514>`__)
pw_rpc_transport
----------------
* `Add simple_framing Soong rule <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165350>`__
pw_rust
-------
* `Update rules_rust to 0.26.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166831>`__
pw_stm32cube_build
------------------
* `Windows path fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167865>`__
pw_stream
---------
Error codes were updated to be more accurate and descriptive.
* `Use more appropriate error codes for Cursor <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164592>`__
pw_stream_uart_linux
--------------------
Common baud rates such as ``9600``, ``19200``, and so on are now supported.
* `Add support for baud rates other than 115200 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165070>`__
pw_sync
-------
Tests were added to make sure that ``pw::sync::Borrowable`` works with lock
annotations.
* `Test Borrowable with Mutex, TimedMutex, and InterruptSpinLock <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153575>`__
(issue `#261078330 <https://issues.pigweed.dev/issues/261078330>`__)
pw_system
---------
The ``pw_system.device.Device`` Python class can now be used as a
`context manager <https://realpython.com/python-with-statement/>`_.
* `Make pw_system.device.Device a context manager <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163410>`__
pw_tokenizer
------------
``pw_tokenizer`` now has Rust support. The ``pw_tokenizer`` C++ config API
is now documented at :ref:`module-pw_tokenizer-api-configuration` and
the C++ token database API is now documented at
:ref:`module-pw_tokenizer-api-token-databases`. When creating a token
database, parent directories are now automatically created if they don't
already exist. ``PrefixedMessageDecoder`` has been renamed to
``NestedMessageDecoder``.
* `Move config value check to .cc file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168615>`__
* `Create parent directory as needed <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168510>`__
* `Rework pw_tokenizer.detokenize.PrefixedMessageDecoder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167150>`__
* `Minor binary database improvements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167053>`__
* `Update binary DB docs and convert to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163570>`__
* `Deprecate tokenizer buffer size config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163257>`__
* `Fix instance of -Wconstant-logical-operand <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166731>`__
* `Add Rust support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/145389>`__
pw_toolchain
------------
A new Linux host toolchain built using ``pw_toolchain_bazel`` has been
started. CIPD-provided Rust toolchains are now being used.
* `Link against system libraries using libs not ldflags <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151050>`__
* `Use %package% for cxx_builtin_include_directories <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168340>`__
* `Extend documentation for tool prefixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167633>`__
* `Add Linux host toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164824>`__
(issue `#269204725 <https://issues.pigweed.dev/issues/269204725>`__)
* `Use CIPD provided Rust toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166852>`__
* `Switch macOS to use builtin_sysroot <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165414>`__
* `Add cmake helpers for getting clang compile+link flags <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163811>`__
pw_unit_test
------------
``run_tests()`` now returns the new ``TestRecord`` dataclass which provides
more detailed information about the test run. ``SetUpTestSuit()`` and
``TearDownTestSuite()`` were added to improve GoogleTest compatibility.
* `Add TestRecord of Test Results <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166273>`__
* `Reset static value before running tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166590>`__
(issue `#296157327 <https://issues.pigweed.dev/issues/296157327>`__)
* `Add per-fixture setup/teardown <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165210>`__
pw_web
------
Log viewers are now drawn every 100 milliseconds at most to prevent crashes
when many logs arrive simultaneously. The log viewer now has a jump-to-bottom
button. Advanced filtering has been added.
* `NPM version bump to 0.0.11 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168591>`__
* `Add basic bundling tests for log viewer bundle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168539>`__
* `Limit LogViewer redraws to 100ms <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167852>`__
* `Add jump to bottom button, fix UI bugs and fix state bugs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164272>`__
* `Implement advanced filtering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162070>`__
* `Remove object-path dependency from Device API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165013>`__
* `Log viewer toolbar button toggle style <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165412>`__
* `Log-viewer line wrap toggle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164010>`__
Targets
=======
targets
-------
A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS
has been added.
* `Ambiq Apollo4 support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/129490>`__
Language support
================
Python
------
* `Upgrade mypy to 1.5.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166272>`__
* `Upgrade pylint to 2.17.5 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166271>`__
Docs
====
Doxygen-generated function signatures now present each argument on a separate
line. Tabbed content looks visually different than before.
* `Use code-block:: instead of code:: everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168617>`__
* `Add function signature line breaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168554>`__
* `Cleanup indentation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168537>`__
* `Remove unused myst-parser <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168392>`__
* `Use sphinx-design for tabbed content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168341>`__
* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164810>`__
SEEDs
=====
:ref:`SEED-0107 (Pigweed Communications) <seed-0107>` was accepted and
SEED-0109 (Communication Buffers) was started.
* `Update protobuf SEED title in index <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166470>`__
* `Update status to Accepted <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167770>`__
* `Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__
* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168358>`__
Miscellaneous
=============
Build
-----
* `Make it possible to run MSAN in GN <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167112>`__
soong
-----
* `Remove host/vendor properties from defaults <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165270>`__
------------
Aug 11, 2023
------------
Highlights (Jul 27, 2023 to Aug 11, 2023):
* We're prototyping a Pigweed extension for VS Code. Learn more at
:ref:`module-pw_ide-guide-vscode`.
* We added ``pw_toolchain_bazel``, a new LLVM toolchain for building with
Bazel on macOS.
* We are working on many docs improvements in parallel: auto-generating ``rustdocs``
for modules that support Rust
(`example <https://pigweed.dev/rustdoc/pw_varint/>`_), refactoring the
:ref:`module-pw_tokenizer` docs, migrating API references to Doxygen,
fixing `longstanding docs site UI issues <https://issues.pigweed.dev/issues/292273650>`_,
and more.
Active SEEDs
============
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
* `SEED-0107: Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__
* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
Modules
=======
pw_alignment
------------
* `Fix typos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163250>`__
pw_analog
---------
Long-term, all of our API references will be generated from header comments via
Doxygen. Short-term, we are starting to show header files directly within the
docs as a stopgap solution for helping Pigweed users get a sense of each
module's API. See :ref:`module-pw_analog` for an example.
* `Include header files as stopgap API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161491>`__
(issue `#293895312 <https://issues.pigweed.dev/issues/293895312>`__)
pw_base64
---------
We finished migrating the ``pw_random`` API reference to Doxygen.
* `Finish Doxygenifying the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162911>`__
* `Doxygenify the Encode() functions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156532>`__
pw_boot_cortex_m
----------------
* `Allow explict target name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159790>`__
pw_build
--------
We added a ``log_build_steps`` option to ``ProjectBuilder`` that enables you
to log all build step lines to your screen and logfiles.
* `Handle ProcessLookupError exceptions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163710>`__
* `ProjectBuilder log build steps option <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162931>`__
* `Fix progress bar clear <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160791>`__
pw_cli
------
We polished tab completion support.
* `Zsh shell completion autoload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160796>`__
* `Make pw_cli tab completion reusable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160379>`__
pw_console
----------
We made copy-to-clipboard functionality more robust when running ``pw_console``
over SSH.
* `Set clipboard fallback methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150238>`__
pw_containers
-------------
We updated :cpp:class:`filteredview` constructors and migrated the
``FilteredView`` API reference to Doxygen.
* `Doxygenify pw::containers::FilteredView <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160373>`__
* `Support copying the FilteredView predicate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160372>`__
pw_docgen
---------
At the top of pages like :ref:`module-pw_tokenizer` there is a UI widget that
provides information about the module. Previously, this UI widget had links
to all the module's docs. This is no longer needed now that the site nav
automatically scrolls to the page you're on, which allows you to see the
module's other docs.
* `Remove the navbar from the module docs header widget <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162991>`__
(issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__)
pw_env_setup
------------
We made Python setup more flexible.
* `Add clang_next.json <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163810>`__
(issue `#295020927 <https://issues.pigweed.dev/issues/295020927>`__)
* `Pip installs from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162093>`__
* `Include Python packages from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162073>`__
* `Remove unused pep517 package <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162072>`__
* `Use more available Python 3.9 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161492>`__
(issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
* `Update Bazel to 2@6.3.0.6 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161010>`__
pw_ide
------
We are prototyping a ``pw_ide`` extension for VS Code.
* `Restore stable clangd settings link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164011>`__
* `Add command to install prototype extension <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162412>`__
* `Prototype VS Code extension <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151653>`__
pw_interrupt
------------
We added a backend for Xtensa processors.
* `Add backend for xtensa processors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160031>`__
* `Tidy up target compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160650>`__
(issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
pw_log_zephyr
-------------
We encoded tokenized messages to ``pw::InlineString`` so that the output is
always null-terminated.
* `Fix null termination of Base64 messages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163650>`__
pw_presubmit
------------
We increased
`LUCI <https://chromium.googlesource.com/infra/infra/+/main/doc/users/services/about_luci.md>`_
support and updated the ``#pragma once`` check to look for matching ``#ifndef``
and ``#define`` lines.
* `Fix overeager format_code matches <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162611>`__
* `Exclude vsix files from copyright <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163011>`__
* `Clarify unicode errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162993>`__
* `Upload coverage json to zoss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162090>`__
(issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
* `Add to context tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162311>`__
* `Add patchset to LuciTrigger <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162310>`__
* `Add helpers to LuciContext <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162091>`__
* `Update Python vendor wheel dir <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161514>`__
* `Add summaries to guard checks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161391>`__
(issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__)
* `Copy Python packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161490>`__
* `Add ifndef/define check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152173>`__
(issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__)
pw_protobuf_compiler
--------------------
We continued work to ensure that the Python environment in Bazel is hermetic.
* `Use hermetic protoc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162913>`__
(issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
* `Move reference to python interpreter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162932>`__
(issue `#294414535 <https://issues.pigweed.dev/issues/294414535>`__)
* `Make nanopb hermetic <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162313>`__
(issue `#293792686 <https://issues.pigweed.dev/issues/293792686>`__)
pw_python
---------
We fixed bugs related to ``requirements.txt`` files not getting found.
* `setup.sh requirements arg fix path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164430>`__
* `setup.sh arg spaces bug <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163510>`__
pw_random
---------
We continued migrating the ``pw_random`` API reference to Doxygen.
* `Doxygenify random.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163730>`__
pw_rpc
------
We made the Java client more robust.
* `Java client backwards compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164515>`__
* `Avoid reflection in Java client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162930>`__
(issue `#293361955 <https://issues.pigweed.dev/issues/293361955>`__)
* `Use hermetic protoc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162913>`__
(issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
* `Improve Java client error message for missing parser() method <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159471>`__
pw_spi
------
We continued work on implementing a SPI responder interface.
* `Responder interface definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159230>`__
pw_status
---------
We fixed the nesting on a documentation section.
* `Promote Zephyr heading to h2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160730>`__
pw_stream
---------
We added ``remaining()``, ``len()``, and ``position()`` methods to the
``Cursor`` wrapping in Rust.
* `Add infalible methods to Rust Cursor <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164271>`__
pw_stream_shmem_mcuxpresso
--------------------------
We added the :ref:`module-pw_stream_shmem_mcuxpresso` backend for ``pw_stream``.
* `Add shared memory stream for NXP MCU cores <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160831>`__
(issue `#294406620 <https://issues.pigweed.dev/issues/294406620>`__)
pw_sync_freertos
----------------
* `Fix ODR violation in tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160795>`__
pw_thread
---------
* `Fix test_thread_context typo and presubmit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162770>`__
pw_tokenizer
------------
We added support for unaligned token databases and continued the
:ref:`seed-0102` update of the ``pw_tokenizer`` docs.
* `Separate API reference and how-to guide content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163256>`__
* `Polish the sales pitch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163571>`__
* `Support unaligned databases <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163333>`__
* `Move the basic overview into getting started <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163253>`__
* `Move the case study to guides.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163255>`__
* `Restore info that get lost during the SEED-0102 migration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163330>`__
* `Use the same tagline on every doc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163332>`__
* `Replace savings table with flowchart <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158893>`__
* `Ignore string nonliteral warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162092>`__
pw_toolchain
------------
We fixed a regression that made it harder to use Pigweed in an environment where
``pw_env_setup`` has not been run and fixed a bug related to incorrect Clang linking.
* `Optionally depend on pw_env_setup_CIPD_PIGWEED <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163790>`__
(issue `#294886611 <https://issues.pigweed.dev/issues/294886611>`__)
* `Prefer start-group over whole-archive <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150610>`__
(issue `#285357895 <https://issues.pigweed.dev/issues/285357895>`__)
pw_toolchain_bazel
------------------
We added a an LLVM toolchain for building with Bazel on macOS.
* `LLVM toolchain for macOS Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157634>`__
(issue `#291795899 <https://issues.pigweed.dev/issues/291795899>`__)
pw_trace_tokenized
------------------
We made tracing more robust.
* `Replace trace callback singletons with dep injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156912>`__
pw_transfer
-----------
We made integration tests more robust.
* `Fix use-after-destroy in integration test client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163252>`__
(issue `#294101325 <https://issues.pigweed.dev/issues/294101325>`__)
* `Fix legacy binary path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162914>`__
(issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
* `Mark linux-only Bazel tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162094>`__
(issue `#294101325 <https://issues.pigweed.dev/issues/294101325>`__)
pw_web
------
We added support for storing user preferences in ``localStorage``.
* `Fix TypeScript warnings in web_serial_transport.ts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164591>`__
* `Add state for view number, search string, and columns visible <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161390>`__
* `Fix TypeScript warnings in transfer.ts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162411>`__
* `Fix TypeScript warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162095>`__
* `Remove dependency on 'crc' and 'buffer' NPM packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160830>`__
Build
=====
We made the Bazel system more hermetic and fixed an error related to not
finding the Java runtime.
* `Do not allow PATH leakage into Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162610>`__
(issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
* `Use remote Java runtime for Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160793>`__
(issue `#291791485 <https://issues.pigweed.dev/issues/291791485>`__)
Docs
====
We created a new doc that explains how to improve Pigweed
support in various IDEs. We standardized how we present call-to-action buttons
on module homepages. See :ref:`module-pw_tokenizer` for an example. We fixed a
longstanding UI issue around the site nav not scrolling to the page that you're
currently on.
* `Add call-to-action buttons <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163331>`__
* `Update module items in site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163251>`__
* `Add editor support doc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/110261>`__
* `Delay nav scrolling to fix main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162990>`__
(issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__)
* `Suggest editor configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162710>`__
* `Scroll to the current page in the site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162410>`__
(issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__)
* `Add changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160170>`__
(issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
SEEDs
=====
We created a UI widget to standardize how we present SEED status information.
See the start of :ref:`seed-0102` for an example.
* `Create Sphinx directive for metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161517>`__
Third party
===========
third_party/mbedtls
-------------------
* `3.3.0 compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160790>`__
(issue `#293612945 <https://issues.pigweed.dev/issues/293612945>`__)
Miscellaneous
=============
OWNERS
------
* `Add kayce@ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163254>`__
------------
Jul 28, 2023
------------
Highlights (Jul 13, 2023 to Jul 28, 2023):
* `SEED-0107: Pigweed Communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__,
a proposal for an embedded-focused network protocol stack, is under
discussion. Please review and provide your input!
* ``pw_cli`` now supports tab completion!
* A new UART Linux backend for ``pw_stream`` was added (``pw_stream_uart_linux``).
Active SEEDs
============
* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
* `SEED-0107: Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__
* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
Modules
=======
pw_allocator
------------
We started migrating the ``pw_allocator`` API reference to Doxygen.
* `Doxygenify the freelist chunk methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155395>`__
pw_async
--------
We increased Bazel support.
* `Fill in bazel build rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156911>`__
pw_async_basic
--------------
We reduced logging noisiness.
* `Remove debug logging <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158193>`__
pw_base64
---------
We continued migrating the ``pw_base64`` API reference to Doxygen.
* `Doxygenify MaxDecodedSize() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157091>`__
pw_bloat
--------
We improved the performance of label creation. One benchmark moved from 120
seconds to 0.02 seconds!
* `Cache and optimize label production <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159474>`__
pw_bluetooth
------------
Support for 3 events was added.
* `Add 3 Event packets & format hci.emb <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157663>`__
pw_build
--------
* `Fix progress bar clear <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160791>`__
* `Upstream build script fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159473>`__
* `Add pw_test_info <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154551>`__
* `Upstream build script & presubmit runner <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137130>`__
* `pw_watch: Redraw interval and bazel steps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159490>`__
* `Avoid extra newlines for docs in generate_3p_gn <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150233>`__
* `pip install GN args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155270>`__
(issue `#240701682 <https://issues.pigweed.dev/issues/240701682>`__)
* `pw_python_venv generate_hashes option <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157630>`__
(issue `#292098416 <https://issues.pigweed.dev/issues/292098416>`__)
pw_build_mcuxpresso
-------------------
Some H3 elements in the ``pw_build_mcuxpresso`` docs were being incorrectly
rendered as H2.
* `Fix doc headings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155570>`__
pw_chrono_freertos
------------------
We investigated what appeared to be a race condition but turned out to be an
unreliable FreeRTOS variable.
* `Update SystemTimer comments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159231>`__
(issue `#291346908 <https://issues.pigweed.dev/issues/291346908>`__)
* `Remove false callback precondition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156091>`__
(issue `#291346908 <https://issues.pigweed.dev/issues/291346908>`__)
pw_cli
------
``pw_cli`` now supports tab completion!
* `Zsh shell completion autoload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160796>`__
* `Make pw_cli tab completion reusable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160379>`__
* `Print tab completions for pw commands <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160032>`__
* `Fix logging msec timestamp format <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159930>`__
pw_console
----------
Communication errors are now handled more gracefully.
* `Detect comms errors in Python <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155814>`__
pw_containers
-------------
The flat map implementation and docs have been improved.
* `Doxygenify pw::containers::FilteredView <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160373>`__
* `Support copying the FilteredView predicate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160372>`__
* `Improve FlatMap algorithm and filtered_view support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156652>`__
* `Improve FlatMap doc example <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156651>`__
* `Update FlatMap doc example so it compiles <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156650>`__
pw_digital_io
-------------
We continued migrating the API reference to Doxygen. An RPC service was added.
* `Doxygenify the interrupt handler methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154193>`__
* `Doxygenify Enable() and Disable() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155817>`__
* `Add digital_io rpc service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154974>`__
pw_digital_io_mcuxpresso
------------------------
We continued migrating the API reference to Doxygen. Support for a new RPC
service was added.
* `Remove unneeded constraints <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155394>`__
pw_docgen
---------
Support for auto-linking to Rust docs (when available) was added. We also
explained how to debug Pigweed's Sphinx extensions.
* `Add rustdoc linking support to pigweed-module tag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159292>`__
* `Add extension debugging instructions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156090>`__
pw_env_setup
------------
There were lots of updates around how the Pigweed environment uses Python.
* `pw_build: Disable pip version check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160551>`__
* `Add docstrings to visitors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159131>`__
* `Sort pigweed_environment.gni lines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158892>`__
* `Mac and Windows Python requirements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158912>`__
(issue `#292098416 <https://issues.pigweed.dev/issues/292098416>`__)
* `Add more Python versions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158891>`__
(issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
* `Remove python.json from Bazel CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158911>`__
(issue `#292585791 <https://issues.pigweed.dev/issues/292585791>`__)
* `Redirect variables from empty dirs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158890>`__
(issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
* `Split Python constraints per OS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157657>`__
(issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
* `Add --additional-cipd-file argument <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158170>`__
(issue `#292280529 <https://issues.pigweed.dev/issues/292280529>`__)
* `Upgrade Python cryptography to 41.0.2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157654>`__
* `Upgrade ipython to 8.12.2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157653>`__
* `Upgrade PyYAML to 6.0.1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157652>`__
* `Add Python constraints with hashes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153470>`__
(issue `#287302102 <https://issues.pigweed.dev/issues/287302102>`__)
* `Bump pip and pip-tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156470>`__
* `Add coverage utilities <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155810>`__
(issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
pw_fuzzer
---------
A fuzzer example was updated to more closely follow Pigweed code conventions.
* `Update fuzzers to use Pigweed domains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/148337>`__
pw_hdlc
-------
Communication errors are now handled more gracefully.
* `Detect comms errors in Python <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155814>`__
* `Add target to Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157651>`__
pw_i2c
------
An RPC service was added. Docs and code comments were updated to use ``responder``
and ``initiator`` terminology consistently.
* `Standardize naming on initiator/responder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159132>`__
* `Add i2c rpc service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155250>`__
pw_i2c_mcuxpresso
-----------------
* `Allow for static initialization of initiator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155790>`__
* `Add test to ensure compilation of module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155390>`__
pw_ide
------
* `Support multiple comp DB search paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144210>`__
(issue `#280363633 <https://issues.pigweed.dev/issues/280363633>`__)
pw_interrupt
------------
Work continued on how facade backend selection works in Bazel.
* `Add backend for xtensa processors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160031>`__
* `Tidy up target compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160650>`__
(issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
* `Remove cpu-based backend selection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160380>`__
(issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
* `Add backend constraint setting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160371>`__
(issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154500>`__
(issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
pw_log_rpc
----------
A docs section was added that explains how ``pw_log``, ``pw_log_tokenized``,
and ``pw_log_rpc`` interact with each other.
* `Explain relation to pw_log and pw_log_tokenized <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157231>`__
pw_package
----------
Raspberry Pi Pico and Zephyr support improved.
* `Add picotool package installer <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155791>`__
* `Handle windows Zephyr SDK setup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157030>`__
* `Run Zephyr SDK setup.sh after syncing from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156530>`__
pw_perf_test
------------
* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154498>`__
(issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
pw_presubmit
------------
* `Add ifndef/define check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152173>`__
(issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__)
* `Remove deprecated gn_docs_build step <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159291>`__
* `Fix issues with running docs_build twice <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159290>`__
* `Add Rust docs to docs site <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157656>`__
pw_protobuf_compiler
--------------------
* `Disable legacy namespace <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157232>`__
* `Transition to our own proto compiler rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157033>`__
(issue `#234874064 <https://issues.pigweed.dev/issues/234874064>`__)
* `Allow external usage of macros <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155432>`__
pw_ring_buffer
--------------
``pw_ring_buffer`` now builds with ``-Wconversion`` enabled.
* `Conversion warning cleanups <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157430>`__
(issue `#259746255 <https://issues.pigweed.dev/issues/259746255>`__)
pw_rpc
------
* `Create client call hook in Python client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157870>`__
* `Provide way to populate response callbacks during tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156670>`__
* `Add Soong rule for pwpb echo service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156270>`__
pw_rpc_transport
----------------
* `Add more Soong rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155035>`__
pw_rust
-------
We are preparing pigweed.dev to automatically link to auto-generated
Rust module documentation when available.
* `Add combined Rust doc support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157632>`__
* `Update @rust_crates sha <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155051>`__
pw_spi
------
We updated docs and code comments to use ``initiator`` and ``responder``
terminology consistently.
* `Standardize naming on initiator/responder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159132>`__
pw_status
---------
* `Add Clone and Copy to Rust Error enum <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157093>`__
pw_stream
---------
We continued work on Rust support.
* `Fix Doxygen typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154732>`__
* `Add read_exact() an write_all() to Rust Read and Write traits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157094>`__
* `Clean up rustdoc warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157092>`__
* `Add Rust varint reading and writing support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156451>`__
* `Refactor Rust cursor to reduce monomorphization <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155391>`__
* `Add Rust integer reading support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155053>`__
* `Move Rust Cursor to it's own sub-module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155052>`__
pw_stream_uart_linux
--------------------
A new UART Linux backend for ``pw_stream`` was added.
* `Add stream for UART on Linux <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156910>`__
pw_sync
-------
C++ lock traits were added and used.
* `Improve Borrowable lock traits and annotations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153573>`__
(issue `#261078330 <https://issues.pigweed.dev/issues/261078330>`__)
* `Add lock traits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153572>`__
pw_sync_freertos
----------------
* `Fix ODR violation in tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160795>`__
pw_sys_io
---------
* `Add android to alias as host system <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157871>`__
(issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
* `Add chromiumos to alias as host system <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155811>`__
(issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
pw_system
---------
* `Update IPython init API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157872>`__
* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154497>`__
(issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
pw_tokenizer
------------
We refactored the ``pw_tokenizer`` docs to adhere to :ref:`seed-0102`.
* `Update tagline, restore missing info, move sections <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158192>`__
* `Migrate the proto docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157655>`__
* `Remove stub sections and add guides link (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157631>`__
* `Migrate the custom macro example (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157032>`__
* `Migrate the Base64 docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156531>`__
* `Migrate token collision docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155818>`__
* `Migrate detokenization docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155815>`__
* `Migrate masking docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155812>`__
pw_toolchain
------------
The build system was modified to use relative paths to avoid unintentionally
relying on the path environment variable. Map file generation is now optional
to avoid generating potentially large map files when they're not needed.
* `Test trivially destructible class <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159232>`__
* `Make tools use relative paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159130>`__
(issue `#290848929 <https://issues.pigweed.dev/issues/290848929>`__)
* `Support conditionally creating mapfiles <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157431>`__
pw_trace_tokenized
------------------
* `Replace singletons with dependency injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155813>`__
* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154499>`__
(issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
pw_unit_test
------------
* `Update metadata test type for unit tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154550>`__
pw_varint
---------
* `Update Rust API to return number of bytes written <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156450>`__
pw_watch
--------
We fixed an issue where builds were getting triggered when files were opened
or closed without modication.
* `Trigger build only on file modifications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157633>`__
pw_web
------
* `Remove dependency on 'crc' and 'buffer' NPM packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160830>`__
* `Update theme token values and usage <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155970>`__
* `Add disconnect() method to WebSerialTransport <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156471>`__
* `Add docs section for log viewer component <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155050>`__
Build
=====
bazel
-----
* `Add host_backend_alias macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160550>`__
(issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
* `Fix missing deps in some modules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160376>`__
* `Support user bazelrc files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160030>`__
* `Update rules_python to 0.24.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158913>`__
(issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__)
build
-----
* `Use remote Java runtime for Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160793>`__
(issue `#291791485 <https://issues.pigweed.dev/issues/291791485>`__)
* `Add Rust toolchain to Bazel macOS build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159491>`__
(issue `#291749888 <https://issues.pigweed.dev/issues/291749888>`__)
* `Mark linux-only Bazel build targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158191>`__
Targets
=======
targets/rp2040_pw_system
------------------------
Some of the Pico docs incorrectly referred to another hardware platform.
* `Fix references to STM32 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157233>`__
(issue `#286652309 <https://issues.pigweed.dev/issues/286652309>`__)
Language support
================
python
------
* `Remove setup.py files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159472>`__
rust
----
* `Add rustdoc links for existing crates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159470>`__
OS support
==========
zephyr
------
* `Add project name to unit test root <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156850>`__
* `Add pigweed root as module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156596>`__
* `Fix setup.sh call <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156591>`__
Docs
====
We added a feature grid to the homepage and fixed outdated info in various
docs.
* `pigweed.dev feature grid <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157658>`__
* `Mention SEED-0102 in module_structure.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157234>`__
(issue `#286477675 <https://issues.pigweed.dev/issues/286477675>`__)
* `Remove outdated Homebrew info in getting_started.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157291>`__
(issue `#287528787 <https://issues.pigweed.dev/issues/287528787>`__)
* `Fix "gn args" examples which reference pw_env_setup_PACKAGE_ROOT <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156452>`__
* `Consolidate contributing docs in site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155816>`__
SEEDs
=====
SEED-0107
---------
* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157031>`__
SEED-0108
---------
* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158171>`__
Third party
===========
third_party
-----------
* `Remove now unused rules_proto_grpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157290>`__
third_party/mbedtls
-------------------
* `3.3.0 compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160790>`__
(issue `#293612945 <https://issues.pigweed.dev/issues/293612945>`__)