aboutsummaryrefslogtreecommitdiff
path: root/docs/changelog.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/changelog.rst')
-rw-r--r--docs/changelog.rst2741
1 files changed, 2741 insertions, 0 deletions
diff --git a/docs/changelog.rst b/docs/changelog.rst
new file mode 100644
index 000000000..26465d7b7
--- /dev/null
+++ b/docs/changelog.rst
@@ -0,0 +1,2741 @@
+:tocdepth: 2
+
+.. _docs-changelog:
+
+=====================
+What's New In Pigweed
+=====================
+
+----------------------------------------
+Discuss what's new with the Pigweed team
+----------------------------------------
+.. pigweed-live::
+
+.. _docs-changelog-latest:
+
+-----------
+Nov 3, 2023
+-----------
+.. changelog_highlights_start
+
+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-moduledocs`. :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>`__.
+
+.. changelog_highlights_end
+
+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 :ref:`module-pw_allocator-size`.
+``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>`__
+ (issue `#301262374 <https://issues.pigweed.dev/issues/306734552, b/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-moduledocs`.
+
+* `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-moduledocs`. :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 overriden <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:`docs-editors`.
+* 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 (:ref:`docs-editors`) 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>`__)