• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1:tocdepth: 2
2
3.. _docs-changelog:
4
5=====================
6What's New In Pigweed
7=====================
8
9--------------------------------
10Talk to the team at Pigweed Live
11--------------------------------
12.. pigweed-live::
13
14.. _docs-changelog-latest:
15
16------------
17May 30, 2024
18------------
19.. changelog_highlights_start
20
21Highlights (May 17, 2024 to May 30, 2024):
22
23* **Clock management**: The new :ref:`module-pw_clock_tree` module manages
24  generic clock tree elements such as clocks, clock selectors, and clock
25  dividers.
26* **GitHub Actions**: The new :ref:`docs-github` guide shows you
27  how to set up GitHub Actions to build and test a Bazel-based Pigweed
28  project when a pull request is received.
29* **pw_system and Bazel**:ref:`module-pw_system` usage in Bazel has been
30  simplified by gathering all required ``pw_system`` components into one
31  target and providing label flags that can set platform-dependent
32  dependencies.
33* **Channels and Linux Epoll**: The new :cpp:class:`pw::channel::EpollChannel`
34  class sends and receives data through a file descriptor, with read and write
35  notifications backed by Linux's epoll system.
36
37.. changelog_highlights_end
38
39Active SEEDs
40============
41Help shape the future of Pigweed! Please visit :ref:`seed-0000`
42and leave feedback on the RFCs (i.e. SEEDs) marked
43``Open for Comments``.
44
45Modules
46=======
47
48pw_allocator
49------------
50* `Add BlockAllocator::MeasureFragmentation
51  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209933>`__
52* `Fix Android build
53  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211871>`__
54* `Refactor optional Allocator methods
55  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210402>`__
56* `Make Init methods infallible
57  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209044>`__
58  (issue `#338389412 <https://issues.pigweed.dev/issues/338389412>`__)
59* `Reduce Block fragmentation
60  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209538>`__
61  (issue `#328831791 <https://issues.pigweed.dev/issues/328831791>`__)
62* `Fix #if PW_HAVE_FEATURE(__cpp_rtti)
63  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210816>`__
64  (issue `#341975367 <https://issues.pigweed.dev/issues/341975367>`__)
65* `Track requested sizes in blocks
66  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210395>`__
67* `Fix Android build
68  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210571>`__
69  (issue `#A <https://issues.pigweed.dev/issues/N/A>`__)
70* `Move large values to test fixtures
71  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210398>`__
72* `Add AsPmrAllocator
73  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207170>`__
74
75pw_assert
76---------
77* `Add missing dep in Android.bp
78  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211271>`__
79
80pw_build
81--------
82The new ``PW_MUST_PLACE`` macro ensures that linker script inputs are
83non-zero sized.
84
85* `Introduce PW_MUST_PLACE linker script macro
86  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211924>`__
87* `Add deps support to pw_linker_script
88  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211194>`__
89  (issue `#331927492 <https://issues.pigweed.dev/issues/331927492>`__)
90
91pw_channel
92----------
93The new :cpp:class:`pw::channel::EpollChannel` class sends and receives
94data through a file descriptor, with read and write notifications backed
95by Linux's epoll system.
96
97* `Only open read/write if channel is readable/writable
98  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212212>`__
99* `Add EpollChannel
100  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210813>`__
101* `Consistent datagram/byte channel aliases
102  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210796>`__
103
104pw_chre
105-------
106* `Update CHRE revision
107  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210011>`__
108  (issue `#341137451 <https://issues.pigweed.dev/issues/341137451>`__)
109
110pw_clock_tree
111-------------
112The new :ref:`module-pw_clock_tree` module manages generic clock tree
113elements such as clocks, clock selectors, and clock dividers.
114
115* `Introduce new ClockDivider class
116  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211292>`__
117  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
118* `ClockTree support Element ops
119  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211149>`__
120  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
121* `Introduce Element may_block()
122  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211148>`__
123  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
124* `Generic clock tree management
125  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204310>`__
126  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
127
128pw_clock_tree_mcuxpresso
129------------------------
130The new :ref:`module-pw_clock_tree_mcuxpresso` module is an NXP
131MCUXPresso backend for :ref:`module-pw_clock_tree`.
132
133* `Mcuxpresso module
134  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204245>`__
135  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
136
137pw_config_loader
138----------------
139* `Remove unnecessary dep
140  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210286>`__
141
142pw_cpu_exception_cortex_m
143-------------------------
144The new crash analysis API provides data about CPU state during exceptions.
145See :ref:`module-pw_cpu_exception_cortex_m-crash-facade-setup`.
146
147* `Add crash analysis API
148  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204248>`__
149* `Fix incorrect inputs to util_test
150  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211551>`__
151* `Fix checks for ARMv8
152  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210272>`__
153
154pw_emu
155------
156* `Exclude tests module from the Pigweed Python package
157  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211977>`__
158
159pw_env_setup
160------------
161* `PyPI version bump to 0.0.16
162  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211136>`__
163* `Build an extra example pypi distribution
164  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211134>`__
165* `Remove f-strings from github_visitor
166  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210274>`__
167
168pw_grpc
169-------
170* `Fix warnings in format strings
171  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211391>`__
172
173pw_hex_dump
174-----------
175* `Add Android.bp
176  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212231>`__
177
178pw_libcxx
179---------
180* `Only enable in clang builds
181  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211941>`__
182
183pw_log_basic
184------------
185* `Fixing sign conversion error for logging
186  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210331>`__
187
188pw_multisink
189------------
190* `Fix compiler warnings for tests
191  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212051>`__
192  (issue `#343480404 <https://issues.pigweed.dev/issues/343480404>`__)
193
194pw_preprocessor
195---------------
196* `Remove PW_HAVE_FEATURE
197  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211016>`__
198  (issue `#341975367 <https://issues.pigweed.dev/issues/341975367>`__)
199
200pw_rpc
201------
202* `Include FakeChannelOutput in soong target
203  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209991>`__
204  (issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__)
205
206pw_spi_mcuxpresso
207-----------------
208* `Remove unnecessary debug messages
209  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210711>`__
210
211pw_stream_uart_mcuxpresso
212-------------------------
213* `Fix unused parameter warnings
214  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211571>`__
215
216pw_system
217---------
218:ref:`module-pw_system` usage in Bazel has been simplified by gathering
219all required ``pw_system`` components into one target and providing label
220flags that can set platform-dependent dependencies.
221
222* `Simplify pw_system usage in Bazel
223  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210116>`__
224  (issue `#341144405 <https://issues.pigweed.dev/issues/341144405>`__)
225
226pw_thread
227---------
228* `Fix thread snapshot service test
229  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212111>`__
230
231pw_toolchain
232------------
233* `Add manual tag to Rust toolchains
234  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211934>`__
235  (issue `#342695883 <https://issues.pigweed.dev/issues/342695883>`__)
236* `Add clang-apply-replacements plugin
237  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210405>`__
238  (issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__)
239
240pw_transfer
241-----------
242* `Fix transfer_thread_test initialization order
243  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210352>`__
244* `End active transfers when RPC stream changes
245  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209876>`__
246
247pw_uart
248-------
249* `Add pw_uart to CMakeLists
250  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210731>`__
251
252pw_unit_test
253------------
254* `Don't execute multiple test suites at the same time
255  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210531>`__
256* `Ensure alignment of test fixtures
257  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210278>`__
258
259pw_web
260------
261* `Move shoelace split panel import
262  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211940>`__
263* `Add split/resize view guide in docs
264  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211471>`__
265* `Implement split log views with resize
266  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209471>`__
267  (issue `#333891204 <https://issues.pigweed.dev/issues/333891204>`__)
268
269Build
270=====
271
272Bazel
273-----
274Clang's ``AddressSanitizer`` is now supported. See
275:ref:`docs-automated-analysis-clang-sanitizers`.
276
277* `Support asan in Bazel
278  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211369>`__
279  (issue `#301487567 <https://issues.pigweed.dev/issues/301487567>`__)
280* `Update rules_rust to 0.45.1
281  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211939>`__
282  (issue `#342673389 <https://issues.pigweed.dev/issues/https://pwbug.dev/342673389>`__)
283* `Explicitly load rules_python in BUILD.bazel files
284  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211361>`__
285
286Targets
287=======
288
289rp2040
290------
291* `Additional bazel build file coverage
292  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211351>`__
293  (issue `#303255049, 305746219 <https://issues.pigweed.dev/issues/303255049, 305746219>`__)
294* `Enable thread high water accounting
295  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210831>`__
296* `Update docs to add missing picotool dependency
297  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210811>`__
298* `Save test run log files
299  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210814>`__
300* `Increase RPC thread stack size to 16K
301  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210832>`__
302* `Allow using rp2040 devices in bootloader mode
303  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210525>`__
304* `Refresh target docs
305  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210404>`__
306* `Update openocd flashing instructions
307  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210400>`__
308* `Increase device_detector verbosity
309  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210411>`__
310* `Add upstream Bazel platform definition
311  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211592>`__
312* `Renable tests that pass with larger stack frames
313  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211147>`__
314* `Raise minimal stack size to 1KB
315  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210517>`__
316* `Replace exceptions with logging
317  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210396>`__
318
319OS support
320==========
321
322freertos
323--------
324* `Clarify Bazel documentation
325  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211052>`__
326
327Docs
328====
329The new :ref:`docs-github` guide shows you how to set up GitHub Actions
330to build and test a Pigweed project when a pull request is received.
331
332* `Add notes about GitHub Actions
333  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211135>`__
334  (issue `#338083578 <https://issues.pigweed.dev/issues/338083578>`__)
335* `Instructions for freertos.BUILD.bazel
336  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211193>`__
337* `Create files in current directory
338  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206196>`__
339* `Update changelog
340  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210285>`__
341
342Miscellaneous
343=============
344.. common_typos_disable
345
346* `Fix typo succesfully->successfully
347  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210671>`__
348* `Update Android.bp after GetAlignedSubspan move
349  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210518>`__
350* `Add link to format
351  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211011>`__
352
353.. common_typos_enable
354
355------------
356May 16, 2024
357------------
358Highlights (May 2, 2024 to May 16, 2024):
359
360* **Coroutines**: You can now create asynchronous tasks using C++20
361  :ref:`coroutines <module-pw_async2-coroutines>`.
362* **Rust with Bazel**: The Rust toolchain can now be used by downstream projects
363  using Bazel.
364* **More MCUXpresso support**: Several modules have additional support for
365  projects built using the NXP MCUXpresso SDK, including multiple core support
366  in :ref:`module-pw_build_mcuxpresso`, a new initiator in
367  :ref:`module-pw_i2c_mcuxpresso`, a new responder in
368  :ref:`module-pw_spi_mcuxpresso`, and a new :ref:`module-pw_dma_mcuxpresso`
369  module.
370
371Active SEEDs
372============
373Help shape the future of Pigweed! Please visit :ref:`seed-0000`
374and leave feedback on the RFCs (i.e. SEEDs) marked
375``Open for Comments``.
376
377.. Note: There is space between the following section headings
378.. and commit lists to remind you to write a summary for each
379.. section. If a summary is not needed, delete the extra
380.. space.
381
382Modules
383=======
384
385pw_allocator
386------------
387* `Fix data race
388  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208412>`__
389  (issue `#333386065 <https://issues.pigweed.dev/issues/333386065>`__)
390* `Add BucketBlockAllocator
391  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198155>`__
392* `Improve namespacing
393  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206153>`__
394* `Use singletons for stateless allocators
395  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207337>`__
396
397pw_assert
398---------
399* `Ensure condition does not contain stray %
400  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208140>`__
401  (issue `#337268540 <https://issues.pigweed.dev/issues/337268540>`__)
402
403pw_async2
404---------
405C++20 users can now define asynchronous tasks using
406:ref:`module-pw_async2-coroutines`.
407
408* `Move PW_CO_TRY functions
409  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209911>`__
410* `Add Coro<T> coroutine API
411  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207690>`__
412
413pw_bloat
414--------
415Padding is now included as part of utilization in code size reports. This allows
416developers to monitor changes in application size that smaller than the used
417space alignment defined in the linker script.
418
419* `Add padding to utilization
420  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209972>`__
421  (issue `#276370736 <https://issues.pigweed.dev/issues/276370736>`__)
422
423pw_bluetooth
424------------
425* `Add a constant for max controller delay
426  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209271>`__
427* `Put cmake tests in modules group
428  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208897>`__
429* `Disable emboss enum traits
430  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208591>`__
431  (issue `#339029458 <https://issues.pigweed.dev/issues/339029458>`__)
432* `Remove hci_vendor
433  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208313>`__
434  (issue `#338269786 <https://issues.pigweed.dev/issues/338269786>`__)
435
436pw_bluetooth_proxy
437------------------
438* `Also support V2 of LE read buffer event
439  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209879>`__
440  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
441* `Use LE read buffer event
442  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209878>`__
443  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
444* `Removing trailing comma in PW_LOG call
445  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209231>`__
446  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
447* `Allow setting the # of credits to reserve
448  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208895>`__
449  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
450* `Add cmake build rules
451  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208653>`__
452  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
453* `Update tests to remove RVNO assumptions
454  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208652>`__
455  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
456* `Reserve ACL LE slots from host
457  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207671>`__
458  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
459
460pw_boot_cortex_m
461----------------
462* `Emit pw_boot_Entry without prologue
463  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208931>`__
464  (issue `#339107121 <https://issues.pigweed.dev/issues/339107121>`__)
465
466pw_build
467--------
468* `pw_cc_test.lib fixup
469  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210231>`__
470  (issue `#307825072, 341109859 <https://issues.pigweed.dev/issues/307825072, 341109859>`__)
471* `Fix type hint
472  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208137>`__
473  (issue `#338462905 <https://issues.pigweed.dev/issues/338462905>`__)
474
475pw_build_mcuxpresso
476-------------------
477:ref:`module-pw_build_mcuxpresso` now can support multiple device cores.
478
479* `Support multiple cores
480  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208654>`__
481
482pw_config_loader
483----------------
484* `Add missing types dep
485  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210236>`__
486
487pw_cpu_exception_cortex_m
488-------------------------
489* `Add error flag masks
490  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210072>`__
491* `Fix PSP unit test
492  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210071>`__
493
494pw_digital_io_linux
495-------------------
496* `Add test_utils.h for ASSERT_OK and friends
497  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209592>`__
498* `Minor updates to OwnedFd
499  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209591>`__
500* `Refactor test
501  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196051>`__
502
503pw_dma_mcuxpresso
504-----------------
505:ref:`module-pw_dma_mcuxpresso` is a new module for working with an MCUXpresso
506DMA controller.
507
508* `Module for working with NXP DMA controller
509  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208655>`__
510
511pw_docs
512-------
513* `Add inline search to sidebar
514  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207674>`__
515
516pw_env_setup
517------------
518* `Remove f-strings from github_visitor
519  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210274>`__
520* `Change Bazel library name
521  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210198>`__
522  (issue `#340328100 <https://issues.pigweed.dev/issues/340328100>`__)
523* `Add GitHub environment visitor
524  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210045>`__
525  (issue `#340900493 <https://issues.pigweed.dev/issues/340900493>`__)
526* `Bazel support for config_file
527  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209913>`__
528  (issue `#340328100 <https://issues.pigweed.dev/issues/340328100>`__)
529
530pw_format
531---------
532* `Add Rust support for field width and zero padding
533  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208898>`__
534* `Add Rust support for formatting integers in hex
535  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208415>`__
536* `Add test for escaped curly brackets
537  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208291>`__
538* `Refactor format string parsing for better core::fmt support
539  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208656>`__
540
541pw_i2c
542------
543* `Update OWNERS
544  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208413>`__
545
546pw_i2c_mcuxpresso
547-----------------
548The new ``I3cMcuxpressoInitiator`` implements the ``pw_i2c`` initiator interface
549using the MCUXpresso I3C driver, allowing normal I2C API's to work after setup.
550
551* `Fix Clang compilation
552  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209191>`__
553* `Add i3c initiator
554  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208136>`__
555* `Remove swatiwagh from OWNERS
556  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208671>`__
557
558pw_ide
559------
560* `Add .pw_ide.user.yaml to .gitignore
561  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208894>`__
562* `Raise specific error on bad settings file
563  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208132>`__
564  (issue `#336799314 <https://issues.pigweed.dev/issues/336799314>`__)
565
566pw_libcxx
567---------
568Added initial support for using LLVM's `libcxx <https://libcxx.llvm.org/>`__ as
569a standard C++ library implementation.
570
571* `Minimal implementation
572  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201918>`__
573
574pw_log
575------
576Logging messages with untyped string arguments is now supported in the Rust
577implementation.
578
579.. todo-check: disable
580
581* `Make TODO actionable
582  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209571>`__
583* `Add core::fmt style format string support to Rust API
584  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207331>`__
585* `Rename Rust logging API to be less verbose
586  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207330>`__
587* `Add Rust support for untyped strings
588  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206673>`__
589
590.. todo-check: enable
591
592pw_multibuf
593-----------
594* `Remove deprecated Chunk::DiscardFront
595  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206676>`__
596
597pw_package
598----------
599* `Suppress package progress messages
600  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208331>`__
601
602pw_presubmit
603------------
604* `Auto fix unsorted-dict-items
605  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209881>`__
606  (issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__)
607* `Fix missing pico-sdk for docs_build
608  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209931>`__
609* `Add repo tool API
610  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179230>`__
611* `Exclude all OWNERS from copyright
612  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209031>`__
613
614pw_proto
615--------
616* `Create genrule for raw rpc with prefix
617  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209992>`__
618  (issue `#340749161 <https://issues.pigweed.dev/issues/340749161>`__)
619
620pw_protobuf
621-----------
622* `Build common.proto with Nanopb+Soong
623  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209851>`__
624  (issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__)
625
626pw_protobuf_compiler
627--------------------
628* `Disable layering check less
629  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209111>`__
630  (issue `#323749176 <https://issues.pigweed.dev/issues/323749176>`__)
631* `Fix name collisions
632  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208658>`__
633* `Disable layering_check
634  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208932>`__
635  (issue `#339280821 <https://issues.pigweed.dev/issues/339280821>`__)
636* `Fix bazel failure if proto dir is empty
637  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208135>`__
638  (issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__)
639* `Add a no_prefix test
640  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208138>`__
641  (issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__)
642* `Tests fail to build under cmake
643  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208271>`__
644  (issue `#338622044 <https://issues.pigweed.dev/issues/338622044>`__)
645
646pw_result
647---------
648* `Fix typo in template member
649  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209667>`__
650  (issue `#339794389 <https://issues.pigweed.dev/issues/339794389>`__)
651
652pw_rpc
653------
654* `Include FakeChannelOutput in soong target
655  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209991>`__
656  (issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__)
657* `Update docs for channel ID remapping
658  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209431>`__
659* `Build compatibility fixes
660  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208893>`__
661* `Fix macro name in docs and comments
662  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208311>`__
663
664pw_spi_mcuxpresso
665-----------------
666The :ref:`module-pw_spi_mcuxpresso` module now includes an
667``McuxpressoResponder`` useing the SPI and DMA drivers from the NXP MCUXpresso
668SDK.
669
670* `Add responder implementation
671  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208657>`__
672
673pw_stm32cube_build
674------------------
675* `Fix a label flag name in documentation
676  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208231>`__
677
678pw_sys_io_rp2040
679----------------
680* `Bazel build file update
681  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209877>`__
682  (issue `#261603269, 300318025 <https://issues.pigweed.dev/issues/261603269, 300318025>`__)
683
684pw_sys_io_stdio
685---------------
686* `Expand allowed uses beyond host
687  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208511>`__
688
689pw_sys_io_stm32cube
690-------------------
691* `Fix build for f1xx family
692  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208471>`__
693
694pw_tokenizer
695------------
696* `Clean up rust docs
697  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208416>`__
698
699pw_toolchain
700------------
701Pigweed's Rust toolchain can now be used by downstream projects.
702
703* `Fix typos in newlib_os_interface_stubs.cc
704  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209952>`__
705* `Add clang-apply-replacements plugin
706  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209539>`__
707  (issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__)
708* `Support Rust toolchains in downstream projects
709  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209871>`__
710* `Add clang-apply-replacements plugin
711  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208896>`__
712  (issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__)
713* `Fix CMake build on macOS
714  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208139>`__
715* `Add no-canonical-system-headers
716  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208156>`__
717  (issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__)
718
719pw_trace_tokenized
720------------------
721* `Build compatibility fixes
722  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208893>`__
723
724pw_transfer
725-----------
726The transfer service now ends active transfers when the underlying stream
727changes, avoiding a case where a transfer could become stuck.
728
729* `End active transfers when RPC stream changes
730  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209876>`__
731* `Add tests for GetResourceStatus
732  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209753>`__
733* `Add py_proto_library target for update_bundle_proto
734  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209731>`__
735* `GetResoureStatus fix missing return
736  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208491>`__
737* `Lock resource_responder_ access
738  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208251>`__
739
740pw_unit_test
741------------
742* `Add missing :config dependency for gtest backend
743  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208472>`__
744
745Build
746=====
747
748bazel
749-----
750* `Ignore reformatting change in git blame
751  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210111>`__
752  (issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__)
753* `Fix unsorted-dict-items instances
754  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209880>`__
755  (issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__)
756* `Remove unnecessary .bazelrc flag
757  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208659>`__
758  (issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__)
759* `Re-enable sandbox_hermetic_tmp
760  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208312>`__
761  (issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__)
762
763Targets
764=======
765
766targets/rp2040
767--------------
768* `pre_init and freertos config
769  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209554>`__
770  (issue `#261603269, 300318025 <https://issues.pigweed.dev/issues/261603269, 300318025>`__)
771
772Docs
773====
774* `Update changelog
775  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208171>`__
776
777SEEDs
778=====
779
780SEED-0116
781---------
782* `Set status to On Hold
783  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208831>`__
784
785Third party
786===========
787
788third_party/emboss
789------------------
790* `Use absolute paths in source dependencies
791  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209131>`__
792  (issue `#339467547 <https://issues.pigweed.dev/issues/339467547>`__)
793* `Update emboss repo to tag v2024.0501.215421
794  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208314>`__
795  (issue `#338675057 <https://issues.pigweed.dev/issues/338675057>`__)
796* `Add additional owners for emboss
797  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208631>`__
798
799third_party/freertos
800--------------------
801* `Add CM3 support to Bazel build
802  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210211>`__
803
804third_party/perfetto
805--------------------
806* `Rename proto targets
807  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210040>`__
808* `Add third party perfetto repo
809  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203618>`__
810* `Copybara import
811  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207490>`__
812
813Miscellaneous
814=============
815* `Run clang-format
816  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208911>`__
817* `Add roller as WORKSPACE owner
818  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208900>`__
819  (issue `#245397913 <https://issues.pigweed.dev/issues/245397913>`__)
820
821-----------
822May 1, 2024
823-----------
824
825Highlights (Apr 19, 2024 to May 1, 2024):
826
827* **Thread kickoff via pw::Function:** Revamped the Thread API to use
828  pw::Function. The original Thread API was created before pw::Function was
829  stable; this change modernizes and increases usability of the Thread API.
830* **Thread creation SEED:** Creating threads in Pigweed is difficult due to our
831  strict adherence to portability. We're considering creating an additional API
832  that is more usable but less portable than the current approach.
833* **Transfer:** Adaptive windowing got a Java implementation, and improvements
834  to adaptive windowing in C++.
835* **Bluetooth:** Initial CLs towards a Bluetooth proxy.
836
837Active SEEDs
838============
839Help shape the future of Pigweed! Please visit :ref:`seed-0000`
840and leave feedback on the RFCs (i.e. SEEDs) marked
841``Open for Comments``.
842
843Modules
844=======
845
846pw_allocator
847------------
848Added two new allocators: BuddyAlloctor and BumpAllocator (also known as an
849arena allocator). Various cleanups and fixes, including splitting the
850Block-based allocators to their own files.
851
852* `Add missing return statement
853  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207171>`__
854  (issue `#337761967 <https://issues.pigweed.dev/issues/337761967>`__)
855* `Remove conflict marker
856  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206590>`__
857* `Move FallbackAllocator implementation
858  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206174>`__
859* `Clean up LibCAllocatorTest
860  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206173>`__
861* `Move block allocators to separate files
862  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198154>`__
863* `Add BuddyAllocator
864  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195952>`__
865* `Make AllMetrics internal
866  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205737>`__
867* `Fix SynchonizedAllocator data race
868  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205753>`__
869  (issue `#333386065 <https://issues.pigweed.dev/issues/333386065>`__)
870* `Add BumpAllocator
871  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195953>`__
872
873pw_assert
874---------
875* `Fix support for print_and_abort in Bazel
876  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206853>`__
877  (issue `#337271435 <https://issues.pigweed.dev/issues/337271435>`__)
878
879pw_async
880--------
881* `Add missing dispatcher facades to CMake
882  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204873>`__
883  (issue `#335866562 <https://issues.pigweed.dev/issues/335866562>`__)
884
885pw_bluetooth
886------------
887Continue filling out Bluetooth packet definitions; as well as some API
888extensions for e.g. RSSI control.
889
890* `Add header alias in command complete events
891  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207552>`__
892  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
893* `Add Event Codes to emboss
894  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207510>`__
895  (issue `#338068316 <https://issues.pigweed.dev/issues/338068316>`__)
896* `Add opcode_enum to command and response event
897  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207335>`__
898  (issue `#338068316 <https://issues.pigweed.dev/issues/338068316>`__)
899* `Sync with recent APCF changes
900  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205921>`__
901  (issue `#336608891 <https://issues.pigweed.dev/issues/336608891>`__)
902* `Define Common Data Types
903  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207470>`__
904  (issue `#336608891 <https://issues.pigweed.dev/issues/336608891>`__)
905* `Add LoopbackCommandEvent
906  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205920>`__
907  (issue `#336579564 <https://issues.pigweed.dev/issues/336579564>`__)
908* `Support Read RSSI command and event
909  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205919>`__
910  (issue `#336566041 <https://issues.pigweed.dev/issues/336566041>`__)
911* `Comment why we include all emboss headers in emboss_test
912  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203637>`__
913  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
914* `Correct emboss path in doc example
915  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204811>`__
916  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
917
918pw_bluetooth_*
919--------------
920* `Formatting fixes
921  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204750>`__
922
923pw_bluetooth_proxy
924------------------
925Start building the Bluetooth proxy subsystem.
926
927* `Rename ProcessH4 to HandleH4
928  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207651>`__
929  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
930* `Rename passthrough_test.cc to proxy_host_test.cc
931  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207670>`__
932  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
933* `Move ProxyHost methods to .cc
934  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207333>`__
935  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
936* `Rename HciProxy to ProxyHost
937  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207450>`__
938  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
939* `Delete policies functionality
940  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207332>`__
941  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
942* `Add some emboss helper functions
943  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205741>`__
944  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
945* `Template test emboss packet creation
946  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205740>`__
947  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
948* `Fix ordering of TEST arguments
949  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205739>`__
950  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
951
952pw_build
953--------
954* `Add a `test_main` param to `pw_cc_test`
955  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206851>`__
956  (issue `#337277617 <https://issues.pigweed.dev/issues/337277617>`__)
957* `Fix using pw_cc_blob_library target in external repos
958  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206552>`__
959
960pw_build_info
961-------------
962* `Make the python module importable
963  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206030>`__
964
965pw_cli
966------
967New SEED creation tool reduces the burden to create SEEDs. This will open the
968door to more contributors creating SEEDs for Pigweed changes and enhancements.
969
970* `Add SEED creation to CLI tool
971  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186762>`__
972* `Handle custom arguments in tools
973  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204192>`__
974* `Add git_repo.py and test to Bazel build
975  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204871>`__
976
977pw_containers
978-------------
979* `Omit size on FlatMap construction
980  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201030>`__
981
982pw_cpu_exception_cortex_m
983-------------------------
984* `Add util_test to tests
985  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207791>`__
986
987pw_digital_io_linux
988-------------------
989* `Move OwnedFd to its own header file
990  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207831>`__
991
992pw_env_setup
993------------
994* `Update default sysroot version
995  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204244>`__
996  (issue `#335438711 <https://issues.pigweed.dev/issues/335438711>`__)
997
998pw_format
999---------
1000* `Better explain core::fmt whitespace parsing in ccomments
1001  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206671>`__
1002* `Add support for core::fmt style format strings
1003  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203830>`__
1004
1005pw_grpc
1006-------
1007* `Support fragmented gRPC messages if an allocator is provided
1008  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204431>`__
1009  (issue `#323924487 <https://issues.pigweed.dev/issues/323924487>`__)
1010
1011pw_module
1012---------
1013* `Include :authors: in generated SEED file
1014  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206674>`__
1015
1016pw_presubmit
1017------------
1018* `Separate 'bazel info' stderr
1019  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206350>`__
1020  (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
1021* `Save 'bazel info output_base'
1022  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206270>`__
1023* `Remove --verbose_explanations flag
1024  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205933>`__
1025* `Use _LOG global for logging
1026  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205913>`__
1027* `RST format updates
1028  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204241>`__
1029* `Allow disabling hook creation
1030  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205912>`__
1031* `Drop '.' from Bazel symlinks
1032  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204870>`__
1033  (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
1034
1035pw_protobuf
1036-----------
1037* `Fix support for import_prefix on protos with options
1038  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204671>`__
1039
1040pw_rpc
1041------
1042Enhancements in pw_rpc to better integrate with pw_grpc.
1043
1044* `Add private method for sending internal::Packet directly
1045  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185669>`__
1046  (issue `#319162657 <https://issues.pigweed.dev/issues/319162657>`__)
1047
1048pw_rust
1049-------
1050* `Build examples in presubmit
1051  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207338>`__
1052  (issue `#337951363 <https://issues.pigweed.dev/issues/337951363>`__)
1053* `Fix Rust tokenized logging example
1054  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206672>`__
1055
1056pw_sensors
1057----------
1058Sensors subsystem continues moving along; note that most of the discussion and
1059development is happening in the SEEDs.
1060
1061* `Add support for triggers
1062  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203860>`__
1063  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
1064
1065pw_snapshot
1066-----------
1067* `Add python processor tests
1068  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205761>`__
1069* `Fix Bazel builds
1070  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205090>`__
1071
1072pw_spi_mcuxpresso
1073-----------------
1074* `Rename flexspi to flexio_spi
1075  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205711>`__
1076* `Fix Bazel build
1077  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205710>`__
1078
1079pw_stream_uart_mcuxpresso
1080-------------------------
1081* `Add interrupt safe write-only UART stream
1082  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207414>`__
1083
1084pw_string
1085---------
1086* `Add ToString for iterables
1087  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206650>`__
1088* `Add missing array include
1089  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204211>`__
1090
1091pw_thread
1092---------
1093API change to bring pw_thread up to date with pw::Function; see overview.
1094
1095* `Use pw::Function to start threads
1096  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205760>`__
1097  (issue `#243018475 <https://issues.pigweed.dev/issues/243018475>`__)
1098* `Fix pw_thread_zephyr compilability
1099  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206970>`__
1100
1101pw_thread_threadx
1102-----------------
1103* `Remove unused dependency
1104  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207191>`__
1105
1106pw_tls_client
1107-------------
1108* `Add CMake facades
1109  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204874>`__
1110  (issue `#335878898 <https://issues.pigweed.dev/issues/335878898>`__)
1111
1112pw_tokenizer
1113------------
1114Enhance the C++ host-side decoder to better handle the full suite of
1115capabilities, in particulaur, recursive decoding; also some build fixes.
1116
1117* `Add DecodeOptionallyTokenizedData
1118  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206070>`__
1119* `Switch detokenize.h docs to Doxygen
1120  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205751>`__
1121* `Support arbitrary recursion in C++ detokenizer
1122  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205770>`__
1123* `Add missing CMake dep
1124  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204316>`__
1125
1126pw_toolchain
1127------------
1128* `Add clang-tidy suggestion
1129  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206675>`__
1130
1131pw_transfer
1132-----------
1133Adaptive windowing improvements, including C++ enhancementsn to better handle
1134small window sizes, as well as adding a Java implementation.
1135
1136* `Add resource_id to all GetResourceStatus responses
1137  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207350>`__
1138  (issue `#336364832 <https://issues.pigweed.dev/issues/336364832>`__)
1139* `Assume a minimum window size when reserving space
1140  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206890>`__
1141* `Attempt to recover when receiving invalid size
1142  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206632>`__
1143* `Implement adaptive windowing in Java
1144  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/147511>`__
1145
1146pw_unit_test
1147------------
1148* `Add support for a test_main in CMake
1149  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204872>`__
1150  (issue `#335865646 <https://issues.pigweed.dev/issues/335865646>`__)
1151* `Standardize ASSERT_OK_AND_ASSIGN
1152  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205946>`__
1153* `Clarify status macros are gunit-only
1154  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206050>`__
1155* `Add IWYU export/private pragmas
1156  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204151>`__
1157  (issue `#335291547 <https://issues.pigweed.dev/issues/335291547>`__)
1158
1159pw_web
1160------
1161* `Fix icons in packaged version
1162  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207551>`__
1163* `Fix text download format
1164  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206551>`__
1165* `NPM version bump to 0.0.19
1166  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206330>`__
1167* `Add user guide page for features and filter syntax
1168  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203632>`__
1169  (issue `#307560371 <https://issues.pigweed.dev/issues/307560371>`__)
1170
1171Docs
1172====
1173
1174docs
1175----
1176* `Mention @deprecated in the Doxygen style guide
1177  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205762>`__
1178* `Update module docs contributor guidelines
1179  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205742>`__
1180* `Add GitHub pull request template
1181  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205810>`__
1182* `Require Bazel+GN+CMake for new contributions
1183  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204650>`__
1184* `Update changelog
1185  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204203>`__
1186
1187SEEDs
1188=====
1189* SEED-0124: `Getting Used Size from Multisink
1190  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188670>`__
1191  (issue `#326854807 <https://issues.pigweed.dev/issues/326854807>`__) landed
1192* SEED-0128: `Easier thread creation
1193  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206631>`__ started
1194* SEED-0129: `Support PW_ASSERT with non-argument message
1195  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207150>`__ started
1196
1197Miscellaneous
1198=============
1199* `Run clang-format
1200  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207412>`__
1201* `Remove remaining usages of legacy thread entry
1202  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206856>`__
1203* `Replace `string_view&` with `string_view`
1204  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204591>`__
1205
1206.bazelversion
1207-------------
1208* `Add file
1209  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205918>`__
1210  (issue `#336617748 <https://issues.pigweed.dev/issues/336617748>`__)
1211
1212Third party
1213===========
1214* boringssl: `Add CMake integration
1215  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204875>`__
1216  (issue `#335880025 <https://issues.pigweed.dev/issues/335880025>`__)
1217* emboss: `Update emboss repo to tag v2024.0419.155605
1218  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204202>`__
1219  (issue `#335724776 <https://issues.pigweed.dev/issues/335724776>`__)
1220* emboss: `Use COMPILE_LANGUAGE:CXX
1221  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205670>`__
1222  (issue `#336267050 <https://issues.pigweed.dev/issues/336267050>`__)
1223* fuchsia: `Add defer.h to Bazel build defs
1224  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206854>`__
1225  (issue `#337275846 <https://issues.pigweed.dev/issues/337275846>`__)
1226* npm: `Update package-lock.json
1227  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207336>`__
1228
1229------------
1230Apr 18, 2024
1231------------
1232
1233.. changelog_highlights_start
1234
1235Highlights (Apr 4, 2024 to Apr 18, 2024):
1236
1237* The Python and C++ interfaces of ``pw_transfer`` now support
1238  :ref:`adaptive windowing <module-pw_transfer-windowing>`.
1239* :ref:`SEED 0117: I3C <seed-0117>` was accepted.
1240* The new :ref:`docs-quickstart-zephyr` shows you how to set up a
1241  C++-based Zephyr project that's ready to use Pigweed.
1242
1243.. changelog_highlights_end
1244
1245Active SEEDs
1246============
1247Help shape the future of Pigweed! Please visit :ref:`seed-0000`
1248and leave feedback on the RFCs (i.e. SEEDs) marked
1249``Open for Comments``.
1250
1251Modules
1252=======
1253
1254pw_allocator
1255------------
1256The new :cpp:class:`pw::allocator::TypedPool` class is a slab allocator
1257that can allocate a specific object with very low overhead.
1258``pw::allocator::TypedPool`` is implemented using the new
1259:cpp:class:`pw::allocator::Pool` interface.
1260``pw::allocator::TrackingAllocatorImpl`` was renamed to
1261``pw::allocator::TrackingAllocator``.
1262
1263* `Add missing soong deps
1264  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203613>`__
1265* `Add Pool
1266  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195540>`__
1267* `Update OWNERS
1268  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203211>`__
1269* `Rename TrackingAllocatorImpl
1270  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203150>`__
1271  (issue `#326509341 <https://issues.pigweed.dev/issues/326509341>`__)
1272
1273pw_async2
1274---------
1275The new :cpp:class:`pw::async2::PendableAsTask` class is a ``Task`` that
1276delegates to a type with a ``Pend`` method.
1277
1278* `Add PendableAsTask
1279  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201920>`__
1280
1281pw_blob_store
1282-------------
1283The ``pw_add_library()`` call for the ``pw_blob_store`` target now compiles
1284as ``STATIC`` instead of ``INTERFACE`` to be more in line with the Bazel
1285build.
1286
1287* `Fix CMakeLists.txt pw_add_library()
1288  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203134>`__
1289
1290pw_bluetooth
1291------------
1292* `Formatting fixes
1293  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204315>`__
1294* `LEGetVendorCapabilitiesCommandCompleteEvent v1.04 fields
1295  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204198>`__
1296* `Add versions - LEGetVendorCapabilitiesCommandCompleteEvent
1297  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203795>`__
1298  (issue `#332924521 <https://issues.pigweed.dev/issues/332924521>`__)
1299* `Add EventMask and temp field in SetEventMaskCommand
1300  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192256>`__
1301  (issue `#42068631 <https://issues.pigweed.dev/issues/42068631>`__)
1302* `Store length max in virtual field
1303  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201794>`__
1304* `Define LEReadMaximumAdvertisingDataLengthCommandComplete
1305  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201951>`__
1306  (issue `#312898345 <https://issues.pigweed.dev/issues/312898345>`__)
1307
1308pw_bluetooth_sapphire
1309---------------------
1310In CIPD ``bt-host`` artifacts are now uploaded to ``fuchsia/prebuilt/bt-host``.
1311
1312* `Iterators
1313  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203855>`__
1314  (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
1315* `Change CIPD upload path
1316  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202690>`__
1317  (issue `#321267610 <https://issues.pigweed.dev/issues/321267610>`__)
1318* `Bump @fuchsia_sdk
1319  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202490>`__
1320  (issue `#329933586, 321267476 <https://issues.pigweed.dev/issues/329933586, 321267476>`__)
1321
1322pw_build
1323--------
1324* `Disable deprecated pragma warnings
1325  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203856>`__
1326  (issue `#333448202 <https://issues.pigweed.dev/issues/335328444, b/333448202>`__)
1327* `Iterators
1328  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
1329  (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
1330* `Collect wheel fix
1331  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202921>`__
1332* `Disable C23 extension warnings
1333  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202830>`__
1334  (issue `#333712899 <https://issues.pigweed.dev/issues/333712899>`__)
1335
1336pw_build_android
1337----------------
1338* `Update module guidance
1339  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203910>`__
1340* `Update cc_defaults guidance
1341  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203651>`__
1342* `Make Common Backends static
1343  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202090>`__
1344  (issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__)
1345
1346pw_build_info
1347-------------
1348* `Add missing header file for cmake
1349  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202210>`__
1350
1351pw_cli
1352------
1353The following interfaces were moved from ``pw_presubmit`` to ``pw_cli``
1354to make them more widely available: :py:class:`pw_cli.file_filter.FileFilter`,
1355:py:mod:`pw_cli.git_repo`, and :py:class:`pw_cli.tool_runner.ToolRunner`.
1356The new :py:func:`pw_cli.decorators.deprecated` decorator emits a
1357deprecation warning when the annotated function is used.
1358
1359* `Fix argument handling for GitRepo.has_uncommitted_changes()
1360  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204232>`__
1361* `Fix subprocess runner arg concatenation
1362  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202844>`__
1363* `Move FileFilter
1364  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194617>`__
1365* `Fix commit fallback handling for GitRepo.list_files()
1366  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203790>`__
1367* `Move git_repo to pw_cli
1368  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201279>`__
1369* `Add Python deprecation decorator
1370  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202929>`__
1371* `Update ToolRunner type hints
1372  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202737>`__
1373* `Move ToolRunner
1374  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201278>`__
1375
1376pw_containers
1377-------------
1378* `Iterators
1379  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
1380  (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
1381
1382pw_cpu_exception_risc_v
1383-----------------------
1384The new :ref:`module-pw_cpu_exception_risc_v` backend lays the foundation for
1385RISC-V CPU exception handling.
1386
1387* `Add initial backend structure
1388  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188230>`__
1389
1390pw_env_setup
1391------------
1392* `clang
1393  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202591>`__
1394  (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
1395
1396pw_hdlc
1397-------
1398* `Iterators
1399  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
1400  (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
1401
1402pw_ide
1403------
1404* `Fixes to support changing working_dir
1405  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204430>`__
1406  (issue `#335628872 <https://issues.pigweed.dev/issues/335628872>`__)
1407* `Enable cmake.format.allowOptionalArgumentIndentation
1408  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203638>`__
1409
1410pw_kvs
1411------
1412* `Make Key an alias for string_view
1413  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204590>`__
1414* `Depend on libraries for fake flash and store tests for Bazel
1415  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202212>`__
1416* `Add libraries to reuse partition and store tests for Bazel
1417  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202211>`__
1418
1419pw_log_zephyr
1420-------------
1421* `Tokenize Zephyr shell fprintf
1422  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202734>`__
1423
1424pw_presubmit
1425------------
1426The following interfaces were moved from ``pw_presubmit`` to ``pw_cli``
1427to make them more widely available: :py:class:`pw_cli.file_filter.FileFilter`,
1428:py:mod:`pw_cli.git_repo`, and :py:class:`pw_cli.tool_runner.ToolRunner`.
1429
1430* `Move FileFilter
1431  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194617>`__
1432* `Add bthost_package step
1433  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203797>`__
1434  (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
1435* `Don't overwrite Bazel stdout files
1436  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203796>`__
1437  (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
1438* `Remove cmake_clang from quick presubmit
1439  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198050>`__
1440* `Move git_repo to pw_cli
1441  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201279>`__
1442* `Fix copy/paste bug in _value()
1443  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202913>`__
1444* `Move ToolRunner
1445  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201278>`__
1446
1447pw_protobuf
1448-----------
1449
1450
1451* `Access raw proto values; change RPC packet channel ID
1452  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204152>`__
1453
1454pw_rpc
1455------
1456The new :cpp:func:`pw::rpc::ChangeEncodedChannelId` function lets you rewrite
1457an encoded packet's channel ID in place. See :ref:`module-pw_rpc-remap`.
1458
1459* `Access raw proto values; change RPC packet channel ID
1460  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204152>`__
1461* `Iterators
1462  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
1463  (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
1464
1465pw_rpc_transport
1466----------------
1467* `Soong lib names now follow style
1468  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203650>`__
1469
1470pw_sensor
1471---------
1472The new :ref:`module-pw_sensor` module is the start of the implementation
1473of :ref:`SEED 0119: Sensors <seed-0119>`.
1474
1475* `Fix Python install
1476  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204130>`__
1477* `Add attribute support to sensor-desc CLI
1478  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203791>`__
1479  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
1480* `Create a sensor-desc CLI
1481  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203670>`__
1482  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
1483* `Update validator schema to JSON schema
1484  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202925>`__
1485  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
1486* `Provide a validator
1487  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202912>`__
1488  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
1489* `Add module stub
1490  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202911>`__
1491  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
1492
1493pw_snapshot
1494-----------
1495* `Process snapshots based on CPU architecture
1496  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188232>`__
1497
1498pw_spi_linux
1499------------
1500``pw_spi_linux`` now has a basic :ref:`module-pw_spi_linux-cli` that lets
1501you read from and write to devices.
1502
1503* `Add pw_spi_linux_cli
1504  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201391>`__
1505
1506pw_thread_freertos
1507------------------
1508* `Use TCB for running stack pointer
1509  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188231>`__
1510
1511pw_tls_client
1512-------------
1513* `Only include <sys/time.h> if available
1514  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202555>`__
1515
1516pw_transfer
1517-----------
1518The Python and C++ interfaces now support
1519:ref:`adaptive windowing <module-pw_transfer-windowing>`.
1520
1521* `Iterators
1522  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
1523  (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
1524* `Implement adaptive windowing in Python
1525  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/147510>`__
1526* `Implement adaptive windowing in C++
1527  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/146392>`__
1528* `Convert arguments to std::fstream constructors
1529  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203151>`__
1530  (issue `#333957637 <https://issues.pigweed.dev/issues/333957637>`__)
1531
1532pw_web
1533------
1534* `Support creating client without using proto descriptor
1535  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203654>`__
1536* `NPM version bump to 0.0.18
1537  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203636>`__
1538* `Fix string manipulation in download logs
1539  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203612>`__
1540  (issue `#331480903 <https://issues.pigweed.dev/issues/331480903>`__)
1541* `Use existing col data when adding new View
1542  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200290>`__
1543  (issue `#331439176 <https://issues.pigweed.dev/issues/331439176>`__)
1544* `Enable column order on init
1545  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201530>`__
1546  (issue `#329712468 <https://issues.pigweed.dev/issues/329712468>`__)
1547* `Fix test format of log-source.test
1548  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202392>`__
1549  (issue `#333379333 <https://issues.pigweed.dev/issues/333379333>`__)
1550
1551Build
1552=====
1553
1554Bazel
1555-----
1556* `Use remote cache in infra
1557  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202754>`__
1558  (issue `#312215590 <https://issues.pigweed.dev/issues/312215590>`__)
1559
1560Docs
1561====
1562The new :ref:`docs-quickstart-zephyr` shows you how to set up a C++-based
1563Zephyr project that's ready to use Pigweed. The API references for all
1564functions or methods that return a set of ``pw_status`` codes have been
1565refactored for consistency. The :ref:`docs-style-doxygen` has been revamped.
1566
1567* `Add pw_status table for API references
1568  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202739>`__
1569* `Revamp Doxygen style guide
1570  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202590>`__
1571* `Add Zephyr quickstart
1572  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196671>`__
1573* `Update changelog
1574  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202150>`__
1575
1576SEEDs
1577=====
1578* (SEED-0117) `pw_i3c
1579  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178350>`__
1580
1581Miscellaneous
1582=============
1583* (clang) `Fix \`std::array\` iterators
1584  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202834>`__
1585  (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
1586* (emboss) `Loosen Emboss cmake dependency tracking
1587  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202831>`__
1588  (issue `#333735460 <https://issues.pigweed.dev/issues/333735460>`__)
1589* (many) `Move maxDiff to be a class attribute
1590  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204150>`__
1591
1592-----------
1593Apr 4, 2024
1594-----------
1595.. _epoll: https://man7.org/linux/man-pages/man7/epoll.7.html
1596
1597Highlights (Mar 21, 2024 to Apr 4, 2024):
1598
1599* **New modules**: :ref:`module-pw_i2c_rp2040` is a Pico SDK implementation of
1600  the ``pw_i2c`` interface, :ref:`module-pw_async2_epoll` is an
1601  `epoll`_-based backend for ``pw_async2``, :ref:`module-pw_spi_linux`
1602  is a Linux backend for ``pw_spi``, :ref:`module-pw_uart` provides
1603  core methods for UART communication, and :ref:`module-pw_bluetooth_proxy`
1604  provides a lightweight proxy host that can be placed between a Bluetooth
1605  host and a Bluetooth controller to add functionality or inspection.
1606* **Docs updates**: Pigweed's main docs builder now builds the
1607  :ref:`examples <seed-0122-examples>` repo; the examples will be available
1608  at ``https://pigweed.dev/examples``. An experimental complete Doxygen API
1609  reference is now being published to ``https://pigweed.dev/doxygen``. The
1610  :ref:`module-pw_i2c` docs, :ref:`docs-style-rest`, and
1611  :ref:`docs contributors homepage <docs-contrib-docs>` have been revamped.
1612* **Android platform updates**: Many modules were refactored to follow the
1613  guidance in :ref:`module-pw_build_android` to make it easier to build them in
1614  Soong.
1615
1616Active SEEDs
1617============
1618Help shape the future of Pigweed! Please visit :ref:`seed-0000`
1619and leave feedback on the RFCs (i.e. SEEDs) marked
1620``Open for Comments``.
1621
1622Modules
1623=======
1624
1625pw_allocator
1626------------
1627The new :ref:`module-pw_allocator-api-capabilities` API lets derived allocators
1628describe what optional features they support. ``pw::Allocator::GetLayout()``
1629has begun to be deprecated and replaced by ``pw::Allocator::GetRequestedLayout``,
1630``pw::Allocator::GetUsableLayout()``, and ``pw::Allocator::GetAllocatedLayout()``
1631to make it easier to distinguish between requested memory, usable memory, and
1632already used memory. Methods that took ``Layout`` arguments, such as
1633``pw::Allocator::GetRequestedLayout()``, have been deprecated.
1634
1635* `Restore DoDeallocate with Layout
1636  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201670>`__
1637  (issue `#332510307 <https://issues.pigweed.dev/issues/332510307>`__)
1638* `Move Layout and UniquePtr to their own header files
1639  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199534>`__
1640* `Remove Layout from Deallocate and Resize
1641  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198153>`__
1642* `Add allocation detail storage to TrackingAllocator
1643  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198152>`__
1644* `Distinguish between requested, usable, and allocated sizes
1645  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198150>`__
1646* `Add Capabilities
1647  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197133>`__
1648
1649pw_assert_log
1650-------------
1651* `Follow Soong guidelines
1652  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197536>`__
1653  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1654
1655pw_async2
1656---------
1657The new :cpp:class:`pw::async2::PendFuncTask` class delegates a task to a
1658provided function.
1659
1660* `Add Poll::Readiness helper
1661  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201910>`__
1662* `Fix TSAN for dispatcher_thread_test
1663  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201850>`__
1664* `Add PendFuncTask
1665  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199714>`__
1666
1667pw_async2_epoll
1668---------------
1669.. _epoll: https://man7.org/linux/man-pages/man7/epoll.7.html
1670
1671The new :ref:`module-pw_async2_epoll` module is an `epoll`_-based backend
1672for  :ref:`module-pw_async2`.
1673
1674* `Epoll-backed async2 dispatcher
1675  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200233>`__
1676
1677pw_bluetooth
1678------------
1679The :ref:`module-pw_bluetooth-usage` section now shows CMake usage and
1680the new :ref:`module-pw_bluetooth-contributing` section shows how to
1681contribute Emboss code.
1682
1683* `Define LEReadMaximumAdvertisingDataLengthCommandComplete
1684  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201951>`__
1685  (issue `#312898345 <https://issues.pigweed.dev/issues/312898345>`__)
1686* `Add more opcodes
1687  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201130>`__
1688* `Add example of using to_underlying
1689  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200970>`__
1690  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
1691* `Emboss formatting tweak
1692  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200230>`__
1693  (issue `#331195584 <https://issues.pigweed.dev/issues/331195584>`__)
1694* `Add cmake to usage guide
1695  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200012>`__
1696  (issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__)
1697* `Add opcode_full field to emboss HCI headers
1698  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199553>`__
1699  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
1700* `Add enum for opcodes
1701  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199671>`__
1702  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
1703* `Update cmake targets to be consistent
1704  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200011>`__
1705  (issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__)
1706* `Update build files to be consistent
1707  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200010>`__
1708  (issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__)
1709* `Add emboss ReadBufferSize v1 event
1710  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199070>`__
1711  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
1712* `Add emboss contributing section to docs.rst
1713  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199531>`__
1714  (issue `#331195584 <https://issues.pigweed.dev/issues/331195584>`__)
1715* `protocol.h comments tweak
1716  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199532>`__
1717  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
1718
1719pw_bluetooth_proxy
1720------------------
1721The new :ref:`module-pw_bluetooth_proxy` module provides a lightweight
1722proxy host that can be placed between a Bluetooth host and a Bluetooth
1723controller to add functionality or inspection.
1724
1725* `Move to cpp23::to_underlying
1726  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200971>`__
1727  (issue `#331281133 <https://issues.pigweed.dev/issues/331281133>`__)
1728* `Use emboss OpCode enum
1729  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199554>`__
1730  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
1731* `Bluetooth proxy module and initial classes
1732  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197290>`__
1733  (issue `#326496952 <https://issues.pigweed.dev/issues/326496952>`__)
1734
1735pw_bluetooth_sapphire
1736---------------------
1737``pw_bluetooth_sapphire`` now supports emulation, Fuchsia unit testing, and
1738ARM64 build targets.
1739
1740* `Add arm64 release variant
1741  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202050>`__
1742  (issue `#332928957 <https://issues.pigweed.dev/issues/332928957>`__)
1743* `Stub bt-host CIPD manifest
1744  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201390>`__
1745  (issue `#332357274, 321267610 <https://issues.pigweed.dev/issues/332357274, 321267610>`__)
1746* `Fuchsia testing support
1747  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198270>`__
1748  (issue `#331692493, 42178254 <https://issues.pigweed.dev/issues/331692493, 42178254>`__)
1749* `Add emulator start workflow
1750  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200270>`__
1751  (issue `#321267689 <https://issues.pigweed.dev/issues/321267689>`__)
1752
1753pw_build
1754--------
1755Modules can now be nested in subdirectories, which paves the way for
1756refactoring how modules are organized in the upstream Pigweed repo.
1757:ref:`module-pw_build-project_builder` is a new lightweight build command
1758for projects that need to run multiple commands to perform a build.
1759
1760* `Allow nesting Pigweed modules in subdirectories
1761  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201114>`__
1762* `Add alwayslink option to pw_cc_blob_library
1763  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201110>`__
1764* `ProjectBuilder documentation
1765  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200791>`__
1766* `BuildRecipe auto_create_build_dir option
1767  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200830>`__
1768* `Defer build directory existence check
1769  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200771>`__
1770
1771pw_build_android
1772----------------
1773* `Define rule with static libs
1774  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200351>`__
1775  (issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__)
1776
1777pw_build_info
1778-------------
1779The new ``pw::build_info::LogBuildId()`` function lets you print a GNU
1780build ID as hex.
1781
1782* `Add log function of GNU build ID
1783  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199471>`__
1784* `Fix Bazel baremetal compatibility
1785  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199470>`__
1786
1787pw_bytes
1788--------
1789* `Add example to docs of using _b suffix
1790  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201350>`__
1791
1792pw_channel
1793----------
1794The new :cpp:type:`pw::channel::LoopbackDatagramChannel` and
1795:cpp:type:`pw::channel::LoopbackByteChannel` aliases provide channel
1796implementations that read their own writes. The new
1797:cpp:class:`pw::channel::ForwardingChannelPair` class lets you connect two
1798subsystems with datagram channels without implementing a custom channel.
1799
1800* `Return status from PollReadyToWrite
1801  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200995>`__
1802* `Rename methods to Pend prefix
1803  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201090>`__
1804* `Add loopback channel
1805  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199150>`__
1806* `Split open bits for read and write
1807  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199712>`__
1808* `Seek is not async
1809  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199713>`__
1810* `Set closed bit on FAILED_PRECONDITION
1811  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199710>`__
1812* `Respect sibling closure
1813  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199035>`__
1814* `Introduce forwarding channels
1815  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197353>`__
1816
1817pw_chrono
1818---------
1819* `Update OWNERS
1820  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
1821* `Follow Soong guidelines
1822  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198290>`__
1823  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1824
1825pw_cli
1826------
1827The new ``pw_cli.alias`` Python module lets you create ``pw`` subcommands
1828that are effectively command line aliases. See :ref:`module-pw_cli-aliases`.
1829
1830* `Move plural()
1831  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201630>`__
1832* `Move status_reporter to pw_cli
1833  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201113>`__
1834* `Add pw ffx alias
1835  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200770>`__
1836  (issue `#329933586 <https://issues.pigweed.dev/issues/329933586>`__)
1837
1838pw_digital_io
1839-------------
1840* `Update OWNERS
1841  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__
1842
1843pw_emu
1844------
1845* `Fix a TypeError in TemporaryEmulator
1846  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200832>`__
1847  (issue `#316080297 <https://issues.pigweed.dev/issues/316080297>`__)
1848
1849pw_env_setup
1850------------
1851* `Run npm log viewer setup script after install
1852  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200211>`__
1853
1854pw_function
1855-----------
1856* `Define as cc_static_library
1857  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199092>`__
1858  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1859
1860pw_hdlc
1861-------
1862The new :cpp:class:`pw::hdlc::Router` class is an experimental async HDLC
1863router that uses :ref:`module-pw_channel`.
1864
1865* `Document members of router
1866  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201115>`__
1867* `Add async router
1868  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195538>`__
1869* `Fix sitenav
1870  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196499>`__
1871
1872pw_i2c
1873------
1874The :ref:`module-pw_i2c` docs have been revamped.
1875
1876* `Revamp docs
1877  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196330>`__
1878* `Update OWNERS
1879  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__
1880* `Update OWNERS
1881  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
1882
1883pw_i2c_rp2040
1884-------------
1885The new :ref:`module-pw_i2c_rp2040` module implements the :ref:`module-pw_i2c`
1886interface using the Raspberry Pi Pico SDK.
1887
1888* `Initiator implementation
1889  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173552>`__
1890  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
1891
1892pw_ide
1893------
1894:py:func:`pw_ide.settings.PigweedIdeSettings.compdb_searchpaths` now accepts
1895globs. The new :py:func:`pw_ide.settings.PigweedIdeSettings.targets_exclude`
1896method lets you specify a list of GN targets that code analysis should ignore.
1897
1898* `Support comp DB search path globs
1899  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200908>`__
1900* `Move status_reporter to pw_cli
1901  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201113>`__
1902* `Support including and/or excluding targets
1903  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195975>`__
1904
1905pw_libc
1906-------
1907* `Include strncpy
1908  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199110>`__
1909  (issue `#316936782 <https://issues.pigweed.dev/issues/316936782>`__)
1910
1911pw_log
1912------
1913* `Follow Soong guidelines
1914  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197536>`__
1915  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1916
1917pw_log_basic
1918------------
1919* `Fix Soong definitions
1920  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199034>`__
1921  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1922
1923pw_log_null
1924-----------
1925* `Define as cc_static_library
1926  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199090>`__
1927  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1928
1929pw_log_tokenized
1930----------------
1931* `Define as cc_static_library
1932  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198735>`__
1933  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1934
1935pw_minimal_cpp_stdlib
1936---------------------
1937* `Clarify purpose
1938  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200792>`__
1939
1940pw_module
1941---------
1942* `Jinja template refactor
1943  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201751>`__
1944* `Overwrite prompt with diff display
1945  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201851>`__
1946* `Allow nesting Pigweed modules in subdirectories
1947  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201114>`__
1948* `Add OWNERS file during module creation
1949  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200831>`__
1950
1951pw_multibuf
1952-----------
1953* `Replace Mutex with ISL
1954  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200996>`__
1955* `Define as cc_static_library
1956  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199091>`__
1957  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1958
1959pw_polyfill
1960-----------
1961* `Define as cc_static_library
1962  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199094>`__
1963  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1964* `Simplify backported features table
1965  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197891>`__
1966
1967pw_preprocessor
1968---------------
1969* `Define as cc_static_library
1970  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199031>`__
1971  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
1972
1973pw_presubmit
1974------------
1975Pigweed's main docs builder now builds the :ref:`examples <seed-0122-examples>`
1976repo; the examples will be available at ``https://pigweed.dev/examples``.
1977An experimental complete Doxygen API reference is now being published to
1978``https://pigweed.dev/doxygen``.
1979
1980* `Include examples repo docs in docs_builder
1981  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201990>`__
1982  (issue `#300317433 <https://issues.pigweed.dev/issues/300317433>`__)
1983* `Move plural()
1984  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201630>`__
1985* `Include doxygen html in docs_build
1986  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198553>`__
1987* `Refactor Python Black formatter support
1988  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194417>`__
1989* `Refactor Bazel formatter support
1990  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194416>`__
1991* `Refactor GN formatting support
1992  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194415>`__
1993  (issue `#326309165 <https://issues.pigweed.dev/issues/326309165>`__)
1994* `Make ToolRunner capture stdout/stderr by default
1995  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200972>`__
1996* `Update buildifier invocation
1997  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200350>`__
1998* `Switch format test data to importlib
1999  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200790>`__
2000* `Skip gn_teensy_build on mac-arm64
2001  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199670>`__
2002
2003pw_protobuf
2004-----------
2005* `Support full java protos
2006  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200530>`__
2007  (issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__)
2008
2009pw_python
2010---------
2011* `Update setup.sh requirements
2012  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200994>`__
2013
2014pw_result
2015---------
2016* `Avoid duplicate symbols with Soong
2017  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201277>`__
2018  (issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__)
2019* `Define as cc_static_library
2020  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199033>`__
2021  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2022
2023pw_router
2024---------
2025* `Define as cc_static_library
2026  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199130>`__
2027  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2028* `Add Android common backends as dep
2029  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198390>`__
2030  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2031
2032pw_rpc
2033------
2034* `List dependencies directly
2035  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199533>`__
2036  (issue `#331226283 <https://issues.pigweed.dev/issues/331226283>`__)
2037
2038pw_rpc_transport
2039----------------
2040* `Define as cc_static_library
2041  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199093>`__
2042  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2043
2044pw_span
2045-------
2046* `Define as cc_static_library
2047  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199032>`__
2048  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2049
2050pw_spi
2051------
2052* `Update OWNERS
2053  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__
2054* `Update OWNERS
2055  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
2056
2057pw_spi_linux
2058------------
2059Linux functionality that was previously in :ref:`module-pw_spi` has been
2060moved to its own module, :ref:`module-pw_spi_linux`.
2061
2062* `Move linux_spi from pw_spi to its own module
2063  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201351>`__
2064
2065pw_status
2066---------
2067The new ``pw::StatusWithSize::size_or()`` convenience method lets you return
2068a default size in place of ``pw::StatusWithSize::size()`` when the status is
2069not OK.
2070
2071* `Add StatusWithSize::size_or
2072  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198151>`__
2073
2074pw_stream_shmem_mcuxpresso
2075--------------------------
2076* `Fix interrupt pending check
2077  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198070>`__
2078  (issue `#330225861 <https://issues.pigweed.dev/issues/330225861>`__)
2079
2080pw_sync
2081-------
2082* `Follow Soong guidelines
2083  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197872>`__
2084  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2085
2086pw_sys_io
2087---------
2088* `Update OWNERS
2089  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
2090* `Fix Soong definitions
2091  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199034>`__
2092  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2093
2094pw_thread
2095---------
2096* `Follow Soong guidance
2097  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199030>`__
2098  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2099
2100pw_toolchain
2101------------
2102
2103
2104* `Fix Rust GN host build
2105  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201831>`__
2106* `Define as cc_static_library
2107  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198734>`__
2108  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2109* `Remove unusued source set
2110  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200190>`__
2111  (issue `#331260098 <https://issues.pigweed.dev/issues/331260098>`__)
2112* `LLVM compiler-rt builtins
2113  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198593>`__
2114
2115pw_trace_tokenized
2116------------------
2117* `Fix static initialization
2118  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200232>`__
2119
2120pw_transfer
2121-----------
2122New ``pw_transfer`` macros:
2123:c:macro:`PW_TRANSFER_LOG_DEFAULT_CHUNKS_BEFORE_RATE_LIMIT`,
2124:c:macro:`PW_TRANSFER_LOG_DEFAULT_RATE_PERIOD_MS`,
2125:c:macro:`PW_TRANSFER_CONFIG_LOG_LEVEL`, and
2126:c:macro:`PW_TRANSFER_CONFIG_DEBUG_DATA_CHUNKS`.
2127
2128* `Make numerous logging adjustments
2129  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194750>`__
2130
2131pw_uart
2132-------
2133The new :ref:`module-pw_uart` module defines core methods for UART
2134communication.
2135
2136* `Create OWNERS
2137  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200750>`__
2138* `Added UART interface
2139  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181710>`__
2140
2141pw_unit_test
2142------------
2143* `Add failing results test record
2144  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197852>`__
2145
2146pw_web
2147------
2148* `NPM version bump to 0.0.17
2149  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201091>`__
2150* `Fix logs not appearing in pw_console server
2151  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200793>`__
2152  (issue `#331483789 <https://issues.pigweed.dev/issues/331483789>`__)
2153
2154Build
2155=====
2156
2157Bazel
2158-----
2159* `Add missing Python deps
2160  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199850>`__
2161  (issue `#331267896 <https://issues.pigweed.dev/issues/331267896>`__)
2162* `Localize remaining backend label flags
2163  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199036>`__
2164  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2165
2166Docs
2167====
2168* `Mention that Windows flow needs admin rights
2169  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202030>`__
2170* `Update reST style guide
2171  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201650>`__
2172* `Organize the documentation style guides
2173  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201116>`__
2174* `Update references to quickstart/bazel
2175  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200131>`__
2176  (issue `#325472122 <https://issues.pigweed.dev/issues/325472122>`__)
2177* `Simplify module creation docs using script
2178  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200231>`__
2179* `Generate doxygen html output locally
2180  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199711>`__
2181* `Update changelog
2182  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198810>`__
2183
2184SEEDs
2185=====
2186* (SEED-0117) `Update status to Last Call
2187  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200710>`__
2188* (SEED-0126) `Claim SEED number
2189  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200911>`__
2190* (SEED-0127) `Reading sensor data
2191  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198134>`__
2192
2193Third party
2194===========
2195* (Emboss) `Assume newer emboss version 2/2
2196  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197363>`__
2197  (issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__)
2198* (FreeRTOS) `Fix typo in docs
2199  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201330>`__
2200* (Fuchsia) `Copybara import
2201  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200712>`__
2202  (issue `#331281133 <https://issues.pigweed.dev/issues/331281133>`__)
2203
2204Miscellaneous
2205=============
2206* `Delete move constructors of buffer wrappers
2207  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200753>`__
2208* (Soong) `Remove _headers from lib names
2209  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198330>`__
2210  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2211* (mbedtls) `Avoid the use of unsupported libc functions
2212  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199131>`__
2213  (issue `#316936782 <https://issues.pigweed.dev/issues/316936782>`__)
2214* (nanopb) `Fix nanopb_pb2.py generation
2215  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200772>`__
2216
2217------------
2218Mar 22, 2024
2219------------
2220Highlights (Mar 7, 2024 to Mar 22, 2024):
2221
2222* Pigweed's minimum supported Python version was changed to 3.10.
2223* Setting the new ``pw_build_TEST_TRANSITIVE_PYTHON_DEPS`` flag to ``false``
2224  in your project's ``.gn`` file turns off testing and linting of transitive
2225  dependencies in ``pw_python_package`` rules, which can speed up build
2226  times significantly.
2227* The new :ref:`module-pw_log_android` module is a ``pw_log`` backend for
2228  Android and the new :ref:`module-pw_build_android` module provides tools to
2229  help build Pigweed in Android platform applications.
2230* :ref:`seed-0120` introduces ``pw_sensor``, a module that will handle
2231  Pigweed's upcoming sensor framework.
2232* The new :c:macro:`PW_LOG_EVERY_N` and :c:macro:`PW_LOG_EVERY_N_DURATION`
2233  macros provide rate-limited logging.
2234
2235Active SEEDs
2236============
2237Help shape the future of Pigweed! Please visit :ref:`seed-0000`
2238and leave feedback on the RFCs (i.e. SEEDs) marked
2239``Open for Comments``.
2240
2241Modules
2242=======
2243
2244pw_allocator
2245------------
2246.. _//pw_allocator/examples: https://cs.opensource.google/pigweed/pigweed/+/main:pw_allocator/examples
2247
2248The :ref:`module-pw_allocator` docs have been revamped. Code examples from
2249the docs are now extracted from complete examples that are built and tested
2250alongside the rest of the main Pigweed repo; see `//pw_allocator/examples`_.
2251
2252* `Improve size report accuracy
2253  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196492>`__
2254* `Add buffer utilities
2255  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195353>`__
2256* `Improve UniquePtr ergonomics
2257  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196181>`__
2258* `Various API modifications
2259  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195973>`__
2260* `Add IsEqual
2261  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195954>`__
2262* `Soft-deprecate heap_viewer.py
2263  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195253>`__
2264  (issue `#328648868 <https://issues.pigweed.dev/issues/328648868>`__)
2265* `Move code snippets from docs to examples
2266  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195190>`__
2267  (issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__)
2268* `Clean up sources files
2269  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194948>`__
2270* `Remove erroneous quotes around tagline
2271  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195514>`__
2272* `Refactor code size reports
2273  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194947>`__
2274* `Remove metrics.cc
2275  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195450>`__
2276  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
2277* `Fix move semantics for UniquePtr
2278  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195470>`__
2279* `Refactor docs
2280  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194871>`__
2281  (issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__)
2282* `Make metrics configurable
2283  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193621>`__
2284  (issue `#326509341 <https://issues.pigweed.dev/issues/326509341>`__)
2285
2286pw_assert
2287---------
2288* `Add keep_dep tags to backend_impl
2289  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197531>`__
2290  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2291* `Introduce :backend, :backend_impl
2292  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196531>`__
2293  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2294* `Apply formatting fixes
2295  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195951>`__
2296
2297pw_assert_basic
2298---------------
2299* `Fix BUILD.bazel file
2300  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196292>`__
2301  (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
2302
2303pw_bluetooth
2304------------
2305* `Add command complete event
2306  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196030>`__
2307  (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
2308* `Add command complete event
2309  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195451>`__
2310  (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
2311* `Add H4 packet indicators in emboss
2312  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195535>`__
2313  (issue `#326499682 <https://issues.pigweed.dev/issues/326499682>`__)
2314* `Reformat l2cap_frames.emb
2315  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194790>`__
2316
2317pw_bluetooth_sapphire
2318---------------------
2319* `Use amd64 SDK
2320  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197510>`__
2321  (issue `#330214852 <https://issues.pigweed.dev/issues/330214852>`__)
2322* `Fuchsia SDK example
2323  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__
2324  (issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__)
2325
2326pw_build
2327--------
2328Setting the new ``pw_build_TEST_TRANSITIVE_PYTHON_DEPS`` flag to ``false``
2329in your project's ``.gn`` file turns off testing and linting of transitive
2330dependencies in ``pw_python_package`` rules, which can speed up build
2331times significantly.
2332
2333* `Option to not transitively run py .tests and .lint deps
2334  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186195>`__
2335
2336pw_build_android
2337----------------
2338The new :ref:`module-pw_build_android` module provides tools to help build
2339Pigweed in Android platform applications.
2340
2341* `Add new utils module
2342  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195139>`__
2343  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
2344
2345pw_bytes
2346--------
2347The new :cpp:func:`pw::bytes::ExtractBits` helper extracts bits between
2348specified left bit and right bit positions. New Rust helpers were added;
2349see `Crate pw_bytes <./rustdoc/pw_bytes>`_.
2350
2351* `Add ExtractBits template
2352  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196310>`__
2353  (issue `#329435173 <https://issues.pigweed.dev/issues/329435173>`__)
2354* `Add Rust helpers for contcatenating const slices and strs
2355  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187651>`__
2356
2357pw_channel
2358----------
2359Datagram-to-byte conversions must now be explicit.
2360
2361* `Enable GetWriteAllocator function
2362  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197534>`__
2363* `Require explicit datagram-to-byte conversions
2364  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197650>`__
2365* `Remove max_bytes argument from ReadPoll
2366  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197352>`__
2367* `Support datagram-to-byte conversions
2368  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196210>`__
2369* `Handle closed channels in base
2370  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194739>`__
2371
2372pw_checksum
2373-----------
2374* `Add missing #include <array>
2375  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196530>`__
2376  (issue `#329594026 <https://issues.pigweed.dev/issues/329594026>`__)
2377
2378pw_chre
2379-------
2380* `Remove unused files
2381  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170792>`__
2382
2383pw_containers
2384-------------
2385* `ConstexprSort in FlatMap takes an iterator
2386  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197217>`__
2387  (issue `#330072104 <https://issues.pigweed.dev/issues/330072104>`__)
2388* `Add move constructors to queues
2389  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197072>`__
2390
2391pw_digital_io_linux
2392-------------------
2393The new ``pw_digital_io_linux`` CLI tool lets you configure a GPIO line as an
2394input and gets its value, or configure a line as an output and set its value.
2395
2396* `Add Android.bp
2397  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194432>`__
2398* `Add test CLI
2399  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194431>`__
2400
2401pw_docgen
2402---------
2403* `Single-source the module metadata
2404  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193333>`__
2405  (issue `#292582625 <https://issues.pigweed.dev/issues/292582625>`__)
2406
2407pw_env_setup
2408------------
2409Pigweed's minimum supported Python version was changed to 3.10.
2410
2411* `Update min Python version to 3.10
2412  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197332>`__
2413  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
2414* `Update CIPD rust version
2415  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194620>`__
2416* `Use amd64 SDK
2417  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197510>`__
2418  (issue `#330214852 <https://issues.pigweed.dev/issues/330214852>`__)
2419* `Fuchsia SDK example
2420  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__
2421  (issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__)
2422
2423pw_format
2424---------
2425Initital support for untyped specifiers (``%v``) was added.
2426
2427* `Enhance Rust tests to check for arguments
2428  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196433>`__
2429  (issue `#329507809 <https://issues.pigweed.dev/issues/https://pwbug.dev/329507809>`__)
2430* `Add initial support for untyped specifiers
2431  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187650>`__
2432
2433pw_hdlc
2434-------
2435The newly public :cpp:class:`pw::hdlc::Encoder` class supports gradually
2436encoding frames without ever holding an entire frame in memory at once.
2437
2438* `Expose Encoder
2439  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197535>`__
2440
2441pw_hex_dump
2442-----------
2443CMake support was added.
2444
2445* `Add CMake support
2446  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198170>`__
2447
2448pw_json
2449-------
2450* `Move examples outside of the pw namespace
2451  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195890>`__
2452
2453pw_libc
2454-------
2455* `Define LIBC_FAST_MATH for the faster integral fixed point sqrt
2456  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196350>`__
2457  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
2458* `Add uksqrtui to stdfix
2459  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196230>`__
2460  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
2461* `Include sqrtur and expk in stdfix
2462  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195256>`__
2463  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
2464
2465pw_log
2466------
2467The new :c:macro:`PW_LOG_EVERY_N` and :c:macro:`PW_LOG_EVERY_N_DURATION`
2468macros provide rate-limited logging.
2469
2470* `Add rate limit log statements
2471  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183870>`__
2472* `Add keep_dep tags to backend_impl
2473  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197531>`__
2474  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2475* `Introduce localized backend label flags
2476  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196498>`__
2477  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2478* `Run bpfmt on all Android.bp
2479  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195490>`__
2480  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
2481
2482pw_log_android
2483--------------
2484The new :ref:`module-pw_log_android` module is a ``pw_log`` backend for
2485Android.
2486
2487* `Fix Soong build
2488  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197830>`__
2489* `Add pw_log_android_stderr
2490  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195050>`__
2491  (issue `#328281789 <https://issues.pigweed.dev/issues/328281789>`__)
2492* `Add module documentation
2493  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196410>`__
2494
2495pw_malloc
2496---------
2497* `Add backend label flags
2498  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196610>`__
2499  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2500
2501pw_multibuf
2502-----------
2503:cpp:class:`pw::multibuf::Stream` is a new multibuf-backed ``pw_stream``
2504implementation that can read from and write to a multibuf.
2505:cpp:class:`pw::multibuf::SimpleAllocator` is a simple, first-fit variant
2506of :cpp:class:`pw::multibuf::MultiBufAllocator`.
2507
2508* `Add stream implementation
2509  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196354>`__
2510* `Add empty() function
2511  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197351>`__
2512* `Pass reference instead of pointer
2513  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197132>`__
2514* `Add SimpleAllocator
2515  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195129>`__
2516
2517pw_package
2518----------
2519* `Match Emboss version used by Bazel
2520  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197359>`__
2521  (issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__)
2522
2523pw_polyfill
2524-----------
2525* `Update __cplusplus macro for C++23; support C
2526  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196113>`__
2527* `Remove PW_INLINE_VARIABLE
2528  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196122>`__
2529* `Detect C23
2530  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195266>`__
2531  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
2532
2533pw_presubmit
2534------------
2535* `Suppress stdout option for rst_format
2536  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197890>`__
2537* `Begin formatter modularization
2538  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193714>`__
2539  (issue `#326309165 <https://issues.pigweed.dev/issues/326309165>`__)
2540* `Switch default formatter to black
2541  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190453>`__
2542  (issue `#261025545 <https://issues.pigweed.dev/issues/261025545>`__)
2543* `Fuchsia SDK example
2544  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__
2545  (issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__)
2546
2547pw_rpc
2548------
2549* `Support full java protos
2550  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196231>`__
2551  (issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__)
2552* `Move some headers from srcs to hdrs
2553  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196850>`__
2554  (issue `#323749176 <https://issues.pigweed.dev/issues/323749176>`__)
2555* `Add TryFinish API for pw_rpc stream
2556  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195126>`__
2557  (issue `#328462705 <https://issues.pigweed.dev/issues/328462705>`__)
2558* `Remove deprecated functions from Java client
2559  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193503>`__
2560
2561pw_rust
2562-------
2563* `Tweak docs for Rust tokenized logging example
2564  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195351>`__
2565
2566pw_sensor
2567---------
2568:ref:`seed-0120` introduces ``pw_sensor``, a module that will handle
2569Pigweed's upcoming sensor framework.
2570
2571* `Add configuration SEED
2572  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183150>`__
2573
2574pw_spi
2575------
2576* `Update Android.bp to conform with new style
2577  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197410>`__
2578
2579pw_stream_shmem_mcuxpresso
2580--------------------------
2581* `Fix interrupt pending check
2582  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198070>`__
2583  (issue `#330225861 <https://issues.pigweed.dev/issues/330225861>`__)
2584
2585pw_sync_stl
2586-----------
2587* `Android.bp: Add missing dependency on pw_sync_headers
2588  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197030>`__
2589
2590pw_sys_io
2591----------
2592* `Add backend label flags
2593  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196610>`__
2594  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2595
2596pw_sys_io_rp2040
2597----------------
2598* `Use callbacks to block on input
2599  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191490>`__
2600  (issue `#324633376 <https://issues.pigweed.dev/issues/324633376>`__)
2601
2602pw_sys_io_stm32cube
2603-------------------
2604* `Fix build for f0xx, f1xx and f3xx families
2605  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195871>`__
2606
2607pw_thread_zephyr
2608-----------------
2609* `Apply formatting fixes
2610  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195951>`__
2611
2612pw_tokenizer
2613------------
2614The Rust library's hashing code was updated to support multi-input hashing.
2615
2616* `Refactor Rust hash code to allow multi-input hashing
2617  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186310>`__
2618
2619pw_transfer
2620-----------
2621The TypeScript client now has an ``abort()`` method for ending a transfer
2622without a completion chunk and a ``terminate()`` method for ending a transfer
2623with a completion chunk.
2624
2625* `Inline TRANSFER_CLIENT_DEPS
2626  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198592>`__
2627* `Support full java protos
2628  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196231>`__
2629  (issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__)
2630* `Add abort() and terminate() apis
2631  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194910>`__
2632* `Update the proxy to only consider transfer chunks
2633  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196170>`__
2634* `Fix Java client timeouts in terminating state
2635  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195123>`__
2636
2637pw_unit_test
2638------------
2639The new :cpp:class:`pw::unit_test::TestRecordEventHandler` class is a
2640predefined event handler that outputs a test summary in Chromium JSON Test
2641Results format.
2642
2643* `Flag to disable cmake pw_add_test calls
2644  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197530>`__
2645  (issue `#330205620 <https://issues.pigweed.dev/issues/330205620>`__)
2646* `Add duplicate test case
2647  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197170>`__
2648* `Localize the label flags
2649  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196670>`__
2650  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2651* `Add test record event handler
2652  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194050>`__
2653* `Adding googletest_handler_adapter to cmake
2654  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195070>`__
2655
2656pw_watch
2657--------
2658Changes to Emboss files now trigger rebuilds.
2659
2660* `Add emboss files to default watch patterns
2661  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195387>`__
2662
2663pw_web
2664------
2665* `NPM version bump to 0.0.16
2666  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198291>`__
2667* `Update createLogViewer to use union types
2668  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198210>`__
2669  (issue `#330564978 <https://issues.pigweed.dev/issues/330564978>`__)
2670* `Include file information in browser logs
2671  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196510>`__
2672  (issue `#329680229 <https://issues.pigweed.dev/issues/329680229>`__)
2673* `NPM version bump to 0.0.15
2674  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196120>`__
2675
2676Build
2677=====
2678
2679Bazel
2680-----
2681The new :ref:`module-pw_build-bazel-pw_facade` Bazel macro makes it easier
2682to create a :ref:`facade <docs-facades>`.
2683
2684* `Remove the deprecated pw_cc_facade macro
2685  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196121>`__
2686  (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
2687* `Treat Rust warnings as errors
2688  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196436>`__
2689  (issue `#329685244 <https://issues.pigweed.dev/issues/https://pwbug.dev/329685244>`__)
2690* `Localize backend label flags
2691  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196232>`__
2692  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2693* `Use pw_facade
2694  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195383>`__
2695  (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
2696* `Introduce pw_facade
2697  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193648>`__
2698  (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
2699* `Fix bazel query
2700  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195138>`__
2701
2702Language support
2703================
2704
2705Python
2706------
2707* `Use future annotations
2708  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198570>`__
2709* `Use future annotations
2710  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198051>`__
2711* `Remove PathOrStr variables
2712  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197538>`__
2713* `Switch from typing.Optional[...] to "... | None"
2714  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197347>`__
2715  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
2716* `Switch from typing.Union to "|"
2717  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197346>`__
2718  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
2719* `Use argparse.BooleanOptionalAction
2720  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197345>`__
2721  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
2722* `Use pathlib.Path.is_relative_to()
2723  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197344>`__
2724  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
2725* `Switch from typing.Dict to dict
2726  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197343>`__
2727  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
2728* `Switch from typing.Tuple to tuple
2729  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197342>`__
2730  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
2731* `Switch from typing.List to list
2732  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197341>`__
2733  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
2734
2735OS support
2736==========
2737
2738Zephyr
2739------
2740* `Add action for installing Zephyr SDK
2741  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194629>`__
2742
2743Docs
2744====
2745The new :ref:`CLI style guide <docs-pw-style-cli>` outlines how CLI utilities
2746in upstream Pigweed should behave.
2747
2748.. todo-check: disable
2749
2750* `Add CLI style guide
2751  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197010>`__
2752  (issue `#329532962 <https://issues.pigweed.dev/issues/329532962>`__)
2753* `Move TODO style guide
2754  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197730>`__
2755* `Fix redirect paths
2756  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197368>`__
2757  (issue `#324241028 <https://issues.pigweed.dev/issues/324241028>`__)
2758* `Fix code-block indentation
2759  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197533>`__
2760* `Add redirects infrastructure and docs contributor section
2761  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197339>`__
2762  (issue `#324241028 <https://issues.pigweed.dev/issues/324241028>`__)
2763* `Fix some incorrect target names
2764  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196495>`__
2765  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
2766* `Fix mentions of sample_project
2767  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195974>`__
2768  (issue `#322859039 <https://issues.pigweed.dev/issues/322859039>`__)
2769* `TOC entry for API documentation from source
2770  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195970>`__
2771* `Update changelog
2772  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195354>`__
2773
2774.. todo-check: enable
2775
2776Third party
2777===========
2778* `Minor build file formatting fixes
2779  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197369>`__
2780* (Emboss) `Assume newer emboss version 1/2
2781  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197362>`__
2782  (issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__)
2783* (STM32Cube) `Fix bazel hal driver build
2784  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195870>`__
2785
2786-----------
2787Mar 7, 2024
2788-----------
2789Highlights (Feb 22, 2024 to Mar 7, 2024):
2790
2791* The new :ref:`module-pw_digital_io_linux` module is a
2792  :ref:`module-pw_digital_io` backend for Linux userspace.
2793* :cpp:class:`pw::multibuf::MultiBufAllocator` class is a new interface
2794  for allocating ``pw::multibuf::MultiBuf`` objects.
2795* The ``pw_web`` log viewer now captures browser console logs. It also
2796  now supports creating log stores and downloading logs from stores.
2797
2798Active SEEDs
2799============
2800Help shape the future of Pigweed! Please visit :ref:`seed-0000`
2801and leave feedback on the RFCs (i.e. SEEDs) marked
2802``Open for Comments``.
2803
2804Modules
2805=======
2806
2807pw_allocator
2808------------
2809* `Remove split_free_list_allocator.cc from Android.bp
2810  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194551>`__
2811* `Add missing dep
2812  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194231>`__
2813* `Use BlockAllocator instead of alternatives
2814  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188354>`__
2815* `Make TrackingAllocator correct by construction
2816  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193330>`__
2817
2818pw_assert_log
2819-------------
2820* `Depend on pw_log_headers in Android.bp
2821  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194434>`__
2822* `Fix PW_HANDLE_CRASH to handle 0 args
2823  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194450>`__
2824  (issue `#327201811 <https://issues.pigweed.dev/issues/327201811>`__)
2825
2826pw_async2
2827---------
2828* `Address post-submit comments
2829  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194693>`__
2830* `Add converting constructors to Poll
2831  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193593>`__
2832
2833pw_blob_store
2834-------------
2835* `Set module name to BLOB
2836  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195170>`__
2837
2838pw_bluetooth
2839------------
2840* `Add hci_data.emb
2841  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194631>`__
2842  (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
2843* `Add ISO feature bit to controllers
2844  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194550>`__
2845* `Add ISO definitions to Controller
2846  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194470>`__
2847
2848pw_build
2849--------
2850* `Remove FUZZTEST_OPTS
2851  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189317>`__
2852* `Fix ProjectBuilder recipe percentage
2853  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194392>`__
2854
2855pw_config_loader
2856----------------
2857* `Support custom overloading rules
2858  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190833>`__
2859
2860pw_containers
2861-------------
2862* `Rename VariableLengthEntryQueue
2863  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187311>`__
2864* `Rename VariableLengthEntryQueue files
2865  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187310>`__
2866* `VariableLengthEntryQueue C++ API
2867  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169910>`__
2868
2869pw_digital_io_linux
2870-------------------
2871The new :ref:`module-pw_digital_io_linux` module is a
2872:ref:`module-pw_digital_io` backend for Linux userspace.
2873
2874* `Introduce new module
2875  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194430>`__
2876
2877pw_json
2878-------
2879* `Update example; fix typo and declaration order
2880  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194411>`__
2881
2882pw_libc
2883-------
2884* `Add stdfix target
2885  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194628>`__
2886  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
2887* `Facilitate next llvm-libc roll
2888  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194603>`__
2889
2890pw_log
2891------
2892* `Fix stdout race in println_backend_test_test
2893  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195122>`__
2894  (issue `#328498798 <https://issues.pigweed.dev/issues/328498798>`__)
2895* `Add tests for Rust printf and println backends
2896  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194952>`__
2897* `Show child docs in site nav
2898  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193830>`__
2899* `Fix the Pigweed Soong build
2900  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193690>`__
2901  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
2902
2903pw_module
2904---------
2905* `Remove README.md check
2906  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194934>`__
2907  (issue `#328265397 <https://issues.pigweed.dev/issues/328265397>`__)
2908
2909pw_multibuf
2910-----------
2911The new :cpp:class:`pw::multibuf::MultiBufAllocator` class is an interface
2912for allocating ``pw::multibuf::MultiBuf`` objects.
2913
2914* `Add MultiBufAllocator interface
2915  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180840>`__
2916* `Deduplicate const+non_const iterators
2917  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194405>`__
2918* `Clean up API
2919  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194600>`__
2920  (issue `#327673957 <https://issues.pigweed.dev/issues/327673957>`__)
2921* `Add +=N and +n operators to iterator
2922  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194310>`__
2923* `Add slicing operations to MultiBuf
2924  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192895>`__
2925
2926pw_presubmit
2927------------
2928* `Remove unused presubmit step
2929  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194940>`__
2930
2931pw_proto_compiler
2932-----------------
2933* `strip_import_prefix + options
2934  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194949>`__
2935  (issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__)
2936
2937pw_result
2938---------
2939* `Add constructor deduction guide
2940  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194612>`__
2941
2942pw_rpc
2943------
2944The newly public :cpp:class:`pw::rpc::CloseAndWaitForCallbacks` function
2945abandons an RPC and blocks on the completion of any running callbacks.
2946
2947* `Expose CloseAndWaitForCallbacks in client call API
2948  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194697>`__
2949
2950pw_rpc_transport
2951----------------
2952* `Add log for no packet available
2953  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194592>`__
2954
2955pw_rust
2956-------
2957* `Add Rust tokenized logging example
2958  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181268>`__
2959
2960pw_stream_uart_mcuxpresso
2961-------------------------
2962``pw_stream_uart_mcuxpresso`` now supports direct memory access reads and
2963writes.
2964
2965* `Fix code examples in docs
2966  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194630>`__
2967* `Implement DoRead DMA
2968  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192893>`__
2969  (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
2970* `Implement DoWrite DMA
2971  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192892>`__
2972  (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
2973* `Implement init / deinit
2974  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192891>`__
2975  (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
2976* `USART DMA scaffolding
2977  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192890>`__
2978  (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
2979
2980pw_string
2981---------
2982``pw::InlineByteString`` is a new alias of ``pw::InlineBasicString<std::byte>``
2983that can be used as a simple and efficient byte container.
2984
2985* `Add ToString for Result and Poll
2986  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194621>`__
2987* `Support InlineBasicString<std::byte>; InlineByteString alias
2988  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194710>`__
2989  (issue `#327497061 <https://issues.pigweed.dev/issues/327497061>`__)
2990
2991pw_sync
2992-------
2993* `Allow implict conversion when moving BorrowedPointer
2994  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194394>`__
2995
2996pw_tokenizer
2997------------
2998* `Fix missing bazel filegroup
2999  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194399>`__
3000* `Add Detokenizer constructor with elf binary section
3001  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190650>`__
3002* `Add code size optimization to Rust implementation
3003  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193504>`__
3004
3005pw_toolchain_bazel
3006------------------
3007* `Apply more common attrs to cc_toolchain targets
3008  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194890>`__
3009* `Support Windows in toolchain template build files
3010  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194591>`__
3011
3012pw_transfer
3013-----------
3014* `Respect user-specified resource size
3015  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194935>`__
3016* `Temporarily disable broken integration test
3017  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194850>`__
3018* `Only request a single chunk in test
3019  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194151>`__
3020  (issue `#323386167 <https://issues.pigweed.dev/issues/323386167>`__)
3021* `Fix WindowPacketDropper proxy filter
3022  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194030>`__
3023  (issue `#322497823 <https://issues.pigweed.dev/issues/322497823>`__)
3024
3025pw_unit_test
3026------------
3027The :ref:`module-pw_unit_test` docs have been revamped. Using the full upstream
3028GoogleTest backend with ``simple_printing_main`` in Bazel has been fixed.
3029
3030* `Update docs
3031  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193671>`__
3032* `Fix googletest backend
3033  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190593>`__
3034  (issue `#324116813 <https://issues.pigweed.dev/issues/324116813>`__)
3035
3036pw_watch
3037--------
3038``pw_watch`` now rebuilds when Bazel files are changed.
3039
3040* `Add bazel files to default watch patterns
3041  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195310>`__
3042  (issue `#328619290 <https://issues.pigweed.dev/issues/328619290>`__)
3043
3044pw_web
3045------
3046The ``pw_web`` log viewer now captures browser console logs. It also
3047now supports creating log stores and downloading logs from stores.
3048
3049* `Capture browser logs in the log viewer
3050  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194451>`__
3051  (issue `#325096768 <https://issues.pigweed.dev/issues/325096768>`__)
3052* `Create log store and enable download logs from it
3053  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186874>`__
3054  (issue `#316966729 <https://issues.pigweed.dev/issues/316966729>`__)
3055
3056Bazel
3057-----
3058* `Update rust_crates in Bazel WORKSPACE
3059  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194938>`__
3060* `Mark more targets testonly
3061  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193626>`__
3062  (issue `#324116813 <https://issues.pigweed.dev/issues/324116813>`__)
3063
3064Docs
3065====
3066The new :ref:`protobuf style guide <docs-pw-style-protobuf>` describes how
3067protobufs should be styled throughout Pigweed.
3068
3069* `Add protobuf style guide
3070  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190723>`__
3071  (issue `#232867615 <https://issues.pigweed.dev/issues/232867615>`__)
3072* `Clarify that Pigweed doesn't support msan
3073  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194877>`__
3074  (issue `#234876100 <https://issues.pigweed.dev/issues/234876100>`__)
3075* `Clarify rvalue docs
3076  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194696>`__
3077* `Reorder tocdepth and title
3078  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193970>`__
3079* `Prefer rvalue references
3080  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193647>`__
3081* `Update changelog
3082  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193620>`__
3083
3084Third party
3085===========
3086* `Android.bp: Export fuchsia_sdk_lib_stdcompat headers
3087  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194370>`__
3088* (Emboss) `Support latest version of Emboss in GN
3089  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194876>`__
3090* (Emboss) `Add CMake support for emboss
3091  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194400>`__
3092  (issue `#326500136 <https://issues.pigweed.dev/issues/326500136>`__)
3093* (FreeRTOS) `Tidy up Bazel build
3094  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193633>`__
3095  (issue `#326625641 <https://issues.pigweed.dev/issues/326625641>`__)
3096* (FreeRTOS) `Create Bazel build template
3097  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193645>`__
3098  (issue `#326625641 <https://issues.pigweed.dev/issues/326625641>`__)
3099* (STM32Cube) `Build template formatting fixes
3100  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194723>`__
3101
3102Miscellaneous
3103=============
3104* `Unrecommendify
3105  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194852>`__
3106* `Clean up Python proto imports
3107  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193641>`__
3108  (issue `#241456982 <https://issues.pigweed.dev/issues/241456982>`__)
3109
3110------------
3111Feb 23, 2024
3112------------
3113Highlights (Feb 9, 2024 to Feb 23, 2024):
3114
3115* The new :ref:`module-pw_json` module provides classes for serializing JSON.
3116* Raspberry Pi RP2040 support was expanded, including a new
3117  ``pw::digital_io::Rp2040Config`` struct enables you to configure polarity for
3118  RP2040 GPIO pins, and a new ``pw::spi::Rp2040Initiator`` class which is a
3119  Pico SDK userspace implementation of Pigweed's SPI ``Initiator`` class.
3120* The new ``pw::spi::DigitalOutChipSelector`` class sets the state of a
3121  :ref:`module-pw_digital_io` output when activated.
3122* The :ref:`module-pw_kvs` docs were overhauled.
3123
3124Active SEEDs
3125============
3126Help shape the future of Pigweed! Please visit :ref:`seed-0000`
3127and leave feedback on the RFCs (i.e. SEEDs) marked
3128``Open for Comments``.
3129
3130Modules
3131=======
3132
3133pw_allocator
3134------------
3135* `Remove total_bytes metric
3136  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193251>`__
3137* `Expose TrackingAllocator's initialization state
3138  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192570>`__
3139
3140pw_assert
3141---------
3142* `Apply formatting changes
3143  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193496>`__
3144
3145pw_assert_log
3146-------------
3147* `Fix Soong rules
3148  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190602>`__
3149  (issue `#324266698 <https://issues.pigweed.dev/issues/324266698>`__)
3150* `Fix missing lib in soong rule
3151  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192259>`__
3152
3153pw_bluetooth
3154------------
3155* `Add Emboss rules to BUILD.bazel
3156  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192513>`__
3157* `Update emboss imports to match Bazel rule
3158  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192392>`__
3159
3160pw_build
3161--------
3162* `Silence warnings from linker script test
3163  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191850>`__
3164
3165pw_bytes
3166--------
3167* `Add missing export in soong rule
3168  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192257>`__
3169
3170pw_chrono_rp2040
3171----------------
3172* `Minor tweaks to documentation and test
3173  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183730>`__
3174  (issue `#303297807 <https://issues.pigweed.dev/issues/303297807>`__)
3175
3176pw_cli
3177------
3178* `Add exit codes
3179  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__
3180
3181pw_config_loader
3182----------------
3183The new ``skip_files__without_sections`` option enables you to just move on
3184to the next file rather than raise an exception if a relevant section doesn't
3185exist in a config file.
3186
3187* `Allow skipping files
3188  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191970>`__
3189
3190pw_containers
3191-------------
3192* `Add default move operator for FilteredView
3193  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192830>`__
3194* `Add move constructor to FiltertedView
3195  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191832>`__
3196
3197pw_digital_io_rp2040
3198--------------------
3199The new ``pw::digital_io::Rp2040Config`` struct enables you to configure
3200polarity for RP2040 GPIO pins.
3201
3202* `Config with polarity
3203  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176290>`__
3204  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
3205
3206pw_env_setup
3207------------
3208* `Use amd64 host tools on arm64
3209  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192763>`__
3210  (issue `#325498131 <https://issues.pigweed.dev/issues/325498131>`__)
3211
3212pw_function
3213-----------
3214The new ``//third_party/fuchsia:fit`` label flag enables Bazel-based projects
3215to provide an alternate implementation for ``fit()`` when needed.
3216
3217* `//third_party/fuchsia:fit label_flag
3218  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192391>`__
3219
3220pw_fuzzer
3221---------
3222* `Fix Bazel example, add presubmit test
3223  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191310>`__
3224  (issue `#324617297 <https://issues.pigweed.dev/issues/324617297>`__)
3225
3226pw_grpc
3227-------
3228* `Fix some minor bugs
3229  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191831>`__
3230
3231pw_hdlc
3232-------
3233* `Add android_library targets
3234  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__
3235  (issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__)
3236
3237pw_i2c
3238------
3239The API reference for :cpp:class:`pw::i2c::RegisterDevice` is now published on
3240``pigweed.dev``.
3241
3242* `Doxygenify RegisterDevice
3243  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191833>`__
3244
3245pw_ide
3246------
3247* `Fix environment inference
3248  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191371>`__
3249
3250pw_json
3251-------
3252The new :ref:`module-pw_json` module provides classes for serializing JSON.
3253
3254* `Classes for serializing JSON
3255  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190458>`__
3256
3257pw_kvs
3258------
3259The :ref:`module-pw_kvs` docs were overhauled.
3260
3261* `Follow new module docs guidelines
3262  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189430>`__
3263
3264pw_log
3265------
3266* `Add android_library targets
3267  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__
3268  (issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__)
3269
3270pw_log_android
3271--------------
3272* `Fix missing libs in soong rule
3273  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192258>`__
3274
3275pw_metric
3276---------
3277* `Fix Bazel build
3278  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190971>`__
3279  (issue `#258078909 <https://issues.pigweed.dev/issues/258078909>`__)
3280
3281pw_module
3282---------
3283* `Add exit codes
3284  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__
3285
3286pw_multibuf
3287-----------
3288* `Fix soong support
3289  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192894>`__
3290  (issue `#325320103 <https://issues.pigweed.dev/issues/325320103>`__)
3291
3292pw_package
3293----------
3294* `Update GoogleTest
3295  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193250>`__
3296* `Remove capture_output=True
3297  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192530>`__
3298
3299pw_preprocessor
3300---------------
3301The :ref:`module-pw_preprocessor` reference is now being generated via Doxygen.
3302
3303* `Do not check for __VA_OPT__ on older compilers
3304  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193434>`__
3305  (issue `#326135018 <https://issues.pigweed.dev/issues/326135018>`__)
3306* `Switch to Doxygen
3307  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192730>`__
3308* `Use __VA_OPT__ when available
3309  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187099>`__
3310
3311pw_presubmit
3312------------
3313.. todo-check: disable
3314
3315* `Allow markdown style TODOs and adjust rustdocs
3316  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192253>`__
3317  (issue `#315389119 <https://issues.pigweed.dev/issues/315389119>`__)
3318* `Log format --fix output
3319  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192394>`__
3320* `Fix formatting of typescript code
3321  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192393>`__
3322* `Disallow FIXME and recommend TODO
3323  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188367>`__
3324* `Allow pwbug.dev in TODOs
3325  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191795>`__
3326* `Allow Bazel issues in TODOs
3327  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190970>`__
3328
3329.. todo-check: disable
3330
3331.. _docs-changelog-20240226-pw_rpc:
3332
3333pw_rpc
3334------
3335``pw_rpc`` clients will once again accept unsolicited responses from ``pw_rpc``
3336servers that were built prior to September 2022. Unsolicited responses, also
3337known as "open" requests, let a server send a message to a client prior to the
3338client sending a request. This change fixed an incompatibility in which
3339``pw_rpc`` clients built after September 2022 would not accept unsolicited
3340responses from servers built before September 2022 (specifically,
3341change `#109077 <https://pwrev.dev/109077>`_).
3342
3343* `Remove use of deprecated Python API
3344  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187491>`__
3345  (issue `#306195999 <https://issues.pigweed.dev/issues/306195999>`__)
3346* `Add android_library targets
3347  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__
3348  (issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__)
3349* `Support legacy unsolicited responses
3350  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192311>`__
3351
3352pw_software_update
3353------------------
3354* `Add java build objects
3355  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193410>`__
3356
3357pw_spi
3358------
3359The new ``pw::spi::DigitalOutChipSelector`` class is an implementation of
3360``pw::spi::ChipSelector`` that sets the state of a :ref:`module-pw_digital_io`
3361output when activated.
3362
3363* `Add Android.bp
3364  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192590>`__
3365  (issue `#316067629 <https://issues.pigweed.dev/issues/316067629>`__)
3366* `DigitalOutChipSelector
3367  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192790>`__
3368  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
3369* `Correct full-duplex behavior of linux_spi
3370  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192591>`__
3371  (issue `#316067628 <https://issues.pigweed.dev/issues/316067628>`__)
3372
3373pw_spi_rp2040
3374-------------
3375The new ``pw::spi::Rp2040Initiator`` class is a Pico SDK userspace
3376implementation of Pigweed's SPI ``Initiator`` class.
3377
3378* `Initiator implementation
3379  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192791>`__
3380  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
3381
3382pw_stream
3383---------
3384* `Fix Pigweed build after sync
3385  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191250>`__
3386  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
3387
3388pw_string
3389---------
3390Debug error messages for assertions containing ``std::optional`` types have
3391been improved.
3392
3393* `Add ToString for std::optional
3394  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192514>`__
3395
3396pw_sync
3397-------
3398* `Add missing lib in soong rule
3399  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192260>`__
3400
3401pw_tokenizer
3402------------
3403The :ref:`module-pw_tokenizer` and :ref:`module-pw_snapshot` Python
3404libraries can now be used from Bazel as a result of the proto
3405migration. See issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__).
3406
3407* `Fix link breakage on linux
3408  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192511>`__
3409  (issue `#321306079 <https://issues.pigweed.dev/issues/321306079>`__)
3410* `Proto migration stage 5/5
3411  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191270>`__
3412  (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
3413* `Proto migration stage 3/5
3414  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189696>`__
3415  (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
3416* `Proto migration stage 1.5/5
3417  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191834>`__
3418  (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
3419* `Proto migration stage 1/5
3420  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191135>`__
3421  (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
3422
3423pw_toolchain
3424------------
3425* `Add missing #include
3426  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193430>`__
3427* `Rename `action_config_flag_sets` to `flag_sets`
3428  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192911>`__
3429* `Simplify macOS -nostdlib++ usage
3430  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192898>`__
3431* `Remove unnecessary toolchain arguments
3432  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192896>`__
3433* `Add missing macOS cxx_builtin_include_directories
3434  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192270>`__
3435  (issue `#324652164 <https://issues.pigweed.dev/issues/324652164>`__)
3436
3437pw_toolchain_bazel
3438------------------
3439* `Use llvm-libtool-darwin on macOS
3440  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190896>`__
3441  (issue `#297413805 <https://issues.pigweed.dev/issues/297413805>`__)
3442* `Explicitly depend on rules_cc
3443  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191430>`__
3444
3445pw_transfer
3446-----------
3447* `Add an android_library for the Java client
3448  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193534>`__
3449* `Change class to parser
3450  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193550>`__
3451* `Fix integration test START packet issue
3452  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192755>`__
3453  (issue `#322497491 <https://issues.pigweed.dev/issues/322497491>`__)
3454* `Add GetResourceStatus method
3455  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192810>`__
3456* `Limit test to sending a single chunk
3457  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192510>`__
3458* `Remove/hide deprecated handle interfaces
3459  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190972>`__
3460
3461pw_watch
3462--------
3463* `Add exit codes
3464  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__
3465
3466pw_web
3467------
3468The log viewer now supports multiple log sources.
3469
3470* `NPM version bump to 0.0.14
3471  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193510>`__
3472* `Enable multiple log sources
3473  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192370>`__
3474  (issue `#325096310 <https://issues.pigweed.dev/issues/325096310>`__)
3475
3476Build
3477=====
3478* `Fix docs build on mac-arm64
3479  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192910>`__
3480* `Use correct host_cpu when disabling docs on Arm Macs
3481  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192757>`__
3482* `Remove docs from default build on Arm Macs
3483  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192754>`__
3484  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
3485* `Build for Java 11
3486  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191830>`__
3487
3488Bazel
3489-----
3490* `Remove shallow_since attributes
3491  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193473>`__
3492* `Upgrade protobuf to 4.24.4
3493  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187431>`__
3494  (issue `#319717451 <https://issues.pigweed.dev/issues/319717451>`__)
3495
3496Targets
3497=======
3498* (rp2040) `Replace rp2040 target with rp2040_pw_system
3499  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192516>`__
3500* (rp2040) `Custom libusb backend
3501  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192630>`__
3502
3503OS support
3504==========
3505* (Zephyr) `Change the pinned Zephyr commit
3506  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192690>`__
3507* (Zephyr) `Add zephyr's west CLI
3508  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190547>`__
3509
3510Docs
3511====
3512`Breadcrumbs <https://en.wikipedia.org/wiki/Breadcrumb_navigation>`_ are now
3513shown at the top of all docs pages except the homepage.
3514
3515* `Add breadcrumbs
3516  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193508>`__
3517* `Fix incorrect module name in changelog
3518  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193331>`__
3519* `Fix canonical URLs for all */docs.html pages
3520  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193431>`__
3521* `Fix typo in facades documentation
3522  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192710>`__
3523* `Fix 404s
3524  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192251>`__
3525  (issue `#325086274 <https://issues.pigweed.dev/issues/325086274>`__)
3526
3527SEEDs
3528=====
3529* (SEED-0125) `Claim SEED number
3530  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192110>`__
3531* `Mark legacy Sensor SEED as Rejected
3532  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192250>`__
3533
3534Third party
3535===========
3536* `Roll FuzzTest and Abseil
3537  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189419>`__
3538
3539Miscellaneous
3540=============
3541* `Disable tests incompatible with rp2040
3542  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192764>`__
3543  (issue `#260624583 <https://issues.pigweed.dev/issues/260624583>`__)
3544* `Fix uses of std::chrono literals
3545  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192515>`__
3546* (pigweed.json) `Disallow Rosetta
3547  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188251>`__
3548  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
3549* (renode) `Update renode to latest daily build
3550  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192254>`__
3551
3552-----------
3553Feb 9, 2024
3554-----------
3555Highlights (Jan 26, 2024 to Feb 9, 2024):
3556
3557* The new :ref:`module-pw_grpc` module provides classes that map between
3558  ``pw_rpc`` packets and HTTP/2 gRPC frames, allowing ``pw_rpc`` services to
3559  be exposed as gRPC services.
3560* A lot of the remaining ``pw_toolchain_bazel`` feature work from
3561  :ref:`seed-0113` was finished and rough edges were polished up.
3562* The new generic ``pw::allocator::BlockAllocator`` interface supported several
3563  derived types that enable fine-grained control over how a block satisfies an
3564  allocation request.
3565
3566* ``pw_transfer`` now supports :ref:`resumable transfers
3567  <pw_transfer-nonzero-transfers>`.
3568
3569Active SEEDs
3570============
3571Help shape the future of Pigweed! Please visit :ref:`seed-0000`
3572and leave feedback on the RFCs (i.e. SEEDs) marked
3573``Open for Comments``.
3574
3575Modules
3576=======
3577
3578pw_alignment
3579------------
3580* `Add CMake & Soong support
3581  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189360>`__
3582
3583pw_allocator
3584------------
3585The new generic :cpp:class:`pw::allocator::BlockAllocator` interface supports
3586several derived types that enable fine-grained control over how a block
3587satisfies an allocation request. The new :cpp:func:`pw::allocator::GetLayout()`
3588method retrieves the layout that was used to allocate a given pointer. The new
3589:cpp:class:`pw::allocator::AllocatorSyncProxy` interface synchronizes access to
3590another allocator, allowing it to be used by multiple threads.
3591
3592* `Refactor metric collection for tests
3593  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190105>`__
3594* `Add Allocator::GetLayout
3595  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187764>`__
3596* `Add BlockAllocator
3597  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187657>`__
3598* `Fix SynchronizedAllocator typo
3599  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190721>`__
3600* `Streamline Block and improve testing
3601  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187656>`__
3602* `Separate metrics from Fallback-, MultiplexAllocator
3603  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190253>`__
3604* `Make TrackingAllocator::Init optional
3605  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190454>`__
3606* `Check for integer overflow in Layout
3607  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187654>`__
3608* `Add additional metrics
3609  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190250>`__
3610* `Rename AllocatorMetricProxy to TrackingAllocator
3611  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190230>`__
3612* `Add SynchronizedAllocator
3613  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189690>`__
3614* `Fix typo
3615  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189717>`__
3616* `Fix Allocator::Reallocate
3617  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189691>`__
3618
3619pw_assert
3620---------
3621* `Break out compatibility backend target
3622  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189106>`__
3623  (issue `#322057191 <https://issues.pigweed.dev/issues/322057191>`__)
3624
3625pw_async_basic
3626--------------
3627* `Remove unneeded locks from test
3628  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190238>`__
3629* `Test flake fix
3630  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189938>`__
3631  (issue `#323251704 <https://issues.pigweed.dev/issues/323251704>`__)
3632* `Fix data race in newly added test
3633  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189879>`__
3634* `Fix ordering of tasks posted at same time
3635  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189784>`__
3636
3637pw_bloat
3638--------
3639The new boolean argument ``ignore_unused_labels`` for ``pw_size_report()``
3640enables you to remove labels from the JSON size report that have a size of 0.
3641
3642* `Allow removal of zero sized labels
3643  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190599>`__
3644  (issue `#282057969 <https://issues.pigweed.dev/issues/282057969>`__)
3645
3646pw_bluetooth
3647------------
3648* `Add l2cap_frames.emb
3649  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185751>`__
3650* `Fix typo in SbcAllocationMethod
3651  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190130>`__
3652
3653pw_boot
3654-------
3655* `Update status and general doc cleanup
3656  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189298>`__
3657
3658pw_build
3659--------
3660The new ``PW_USE_COLOR``, ``NO_COLOR``, and ``CLICOLOR_FORCE`` OS environment
3661variables enable you to control whether output in CI/CQ is color formatted.
3662
3663* `Add Fuchsia to TARGET_COMPATIBLE_WITH_HOST_SELECT
3664  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190714>`__
3665* `Enable fixed point types for clang builds
3666  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190097>`__
3667  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
3668* `Support disabling colors
3669  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189611>`__
3670  (issue `#323056074 <https://issues.pigweed.dev/issues/323056074>`__)
3671
3672pw_bytes
3673--------
3674* `Check for integer overflow
3675  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187655>`__
3676
3677pw_channel
3678----------
3679The initial ``pw::channel::Channel`` class from :ref:`seed-0114` has been
3680introduced but it is experimental and should not be used yet.
3681
3682* `Docs fix
3683  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190624>`__
3684* `Module for async data exchange with minimal copying
3685  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189284>`__
3686
3687pw_cli
3688------
3689* `Add json_config_loader_mixin
3690  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190540>`__
3691
3692pw_compilation_testing
3693----------------------
3694* `Do not expand regexes
3695  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191030>`__
3696* `Minor improvements
3697  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189788>`__
3698
3699pw_config_loader
3700----------------
3701The code from ``pw_cli`` related to looking up user-specific configuration
3702files has been moved to this separate module.
3703
3704* `Add support for nested keys
3705  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190673>`__
3706* `Add tests
3707  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190672>`__
3708* `Initial commit
3709  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190671>`__
3710
3711pw_cpu_exception_cortex_m
3712-------------------------
3713* `Handle ARM v8.1 case
3714  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189828>`__
3715  (issue `#311766664 <https://issues.pigweed.dev/issues/311766664>`__)
3716
3717pw_digital_io
3718-------------
3719* `[[nodiscard]] on as() conversion functions
3720  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189815>`__
3721* `Use pw::internal::SiblingCast
3722  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__
3723
3724pw_env_setup
3725------------
3726* `Roll cipd
3727  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190737>`__
3728  (issue `#315378787 <https://issues.pigweed.dev/issues/315378787>`__)
3729* `Make npm actions more robust
3730  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189358>`__
3731  (issues `#323378974 <https://issues.pigweed.dev/issues/305042957>`__,
3732  `#322437881 <https://issues.pigweed.dev/issues/322437881>`__,
3733  `#323378974 <https://issues.pigweed.dev/issues/323378974>`__)
3734* `Only add mingw to PATH once
3735  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190030>`__
3736  (issue `#322437881 <https://issues.pigweed.dev/issues/322437881>`__)
3737
3738pw_format
3739---------
3740* `Fix safe buildifier warnings
3741  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189716>`__
3742  (issue `#242181811 <https://issues.pigweed.dev/issues/242181811>`__)
3743
3744pw_function
3745-----------
3746* `Follow new docs guidelines
3747  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188362>`__
3748
3749pw_fuzzer
3750---------
3751* `Fix Bazel run target instructions
3752  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188363>`__
3753
3754pw_grpc
3755-------
3756The new :ref:`module-pw_grpc` module is an implementation of the gRPC HTTP/2
3757protocol. It provides classes that map between :ref:`module-pw_rpc` packets
3758and ``pw_grpc`` HTTP/2 frames, allowing ``pw_rpc`` services to be exposed as
3759gRPC services.
3760
3761* `Fix off-by-one error when handling DATA frames
3762  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190470>`__
3763  (issue `#323924487 <https://issues.pigweed.dev/issues/323924487>`__)
3764* `Add new module
3765  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186796>`__
3766
3767pw_ide
3768------
3769* `Disable Python terminal activation in VSC
3770  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190592>`__
3771* `Remove terminal env vars from VSC settings
3772  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188470>`__
3773* `VSC extension 0.1.4 release
3774  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188742>`__
3775
3776pw_presubmit
3777------------
3778Color formatting in CI/CQ has been improved for readability.
3779
3780* `Simplify 'gn gen' color logic
3781  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190239>`__
3782* `Use color logic in gn gen call
3783  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189827>`__
3784* `Apply color logic in more cases
3785  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189829>`__
3786* `Support disabling colors
3787  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189611>`__
3788  (issue `#323056074 <https://issues.pigweed.dev/issues/323056074>`__)
3789
3790pw_protobuf
3791-----------
3792* `Use pw::internal::SiblingCast
3793  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__
3794
3795pw_random
3796---------
3797* `Clean up build files
3798  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189779>`__
3799
3800pw_result
3801---------
3802* `Add missing libs in Soong blueprint
3803  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190950>`__
3804
3805pw_rpc
3806------
3807* `Avoid undefined behavior when casting to rpc::Writer
3808  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189648>`__
3809
3810pw_stream
3811---------
3812* `Use pw::internal::SiblingCast
3813  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__
3814
3815pw_target_runner
3816----------------
3817* `Remove .dev from path name
3818  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190450>`__
3819
3820pw_thread
3821---------
3822* `Incease the sleep duration in tests
3823  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190270>`__
3824  (issue `#321832803 <https://issues.pigweed.dev/issues/321832803>`__)
3825
3826pw_tokenizer
3827------------
3828:ref:`Troubleshooting docs <module-pw_tokenizer-gcc-template-bug>` were added
3829that explain how to workaround GCC's template function tokenization bug in GCC
3830releases prior to 14.
3831
3832* `Mention GCC template bug in the docs
3833  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189820>`__
3834
3835pw_toolchain
3836------------
3837* `Disable unstable features in rust toolchains
3838  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189948>`__
3839* `Fix divergent configuration in arm_clang M0+ toolchain
3840  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190196>`__
3841* `Use less generic names for B1-B5
3842  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189732>`__
3843* `Use LLVM compiler-rt builtins
3844  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186232>`__
3845* `Internal wrapper for casting between siblings
3846  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189014>`__
3847  (issue `#319144706 <https://issues.pigweed.dev/issues/319144706>`__)
3848* `Small docs update
3849  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189278>`__
3850  (issue `#300471936 <https://issues.pigweed.dev/issues/300471936>`__)
3851
3852pw_toolchain_bazel
3853------------------
3854A lot of the remaining ``pw_toolchain_bazel`` feature work from
3855:ref:`seed-0113` was finished and rough edges were polished up.
3856
3857* `Remove support for *_files
3858  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190810>`__
3859  (issue `#323448214 <https://issues.pigweed.dev/issues/323448214>`__)
3860* `Add support for setting environment variables
3861  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190154>`__
3862  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
3863* `Implement per-action files
3864  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190152>`__
3865  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
3866* `Migrate to PwToolInfo
3867  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190150>`__
3868  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
3869* `Pull file collection into config rule
3870  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189971>`__
3871  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
3872* `Implement pw_cc_provides
3873  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189112>`__
3874  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
3875* `Implement PwActionConfigInfo
3876  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189990>`__
3877  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
3878* `Create temporary variable
3879  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189970>`__
3880  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
3881* `Add a concept of well-known features
3882  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189050>`__
3883  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
3884* `Implement requires_any_of for flag sets
3885  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189111>`__
3886  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
3887* `Migrate to custom PwFeatureInfo
3888  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189030>`__
3889  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
3890* `Add custom PwFlagSetInfo
3891  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188990>`__
3892  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
3893* `Replace bazel_tools providers with PW providers
3894  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189110>`__
3895  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
3896* `Support regular binaries as tools
3897  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190151>`__
3898  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
3899
3900pw_transfer
3901-----------
3902``pw_transfer`` now supports :ref:`resumable transfers
3903<pw_transfer-nonzero-transfers>`.
3904
3905* `Account for remaining_bytes in payload buffer
3906  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190572>`__
3907* `Rename TransferHandle -> Handle
3908  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189097>`__
3909* `Add resumeable transfers
3910  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182830>`__
3911* `Make cancellation a method on handles
3912  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189096>`__
3913* `Allow setting a transfer resource size in C++
3914  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189095>`__
3915  (issue `#319731837 <https://issues.pigweed.dev/issues/319731837>`__)
3916
3917pw_unit_test
3918------------
3919* `Remove obsolete label flag
3920  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190557>`__
3921
3922Build
3923=====
3924* (Bazel) `Update clang version
3925  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190256>`__
3926
3927OS support
3928==========
3929* (Zephyr) `Fix default logging in chromium CQ
3930  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190696>`__
3931
3932Docs
3933====
3934* `Nest backends under respective facades in sitenav
3935  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190245>`__
3936* `Add doxygengroup to the style guide
3937  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190625>`__
3938* `Update homepage
3939  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190018>`__
3940* `Update README links
3941  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189731>`__
3942* `Fix module homepage canonical URLs
3943  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189773>`__
3944  (issue `#323077749 <https://issues.pigweed.dev/issues/323077749>`__)
3945* `Update Bazel quickstart output sample
3946  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189412>`__
3947  (issue `#300471936 <https://issues.pigweed.dev/issues/300471936>`__)
3948
3949SEEDs
3950=====
3951* (SEED-0122) `Update status, add bug reference
3952  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189612>`__
3953* `Fix pw_seed_index template deps
3954  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190675>`__
3955* `Add authors to SEED document headers
3956  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189870>`__
3957* (SEED-0119) `Add sensors SEED
3958  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182653>`__
3959
3960Miscellaneous
3961=============
3962* `Update the bootstrap script to have start/end guards
3963  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190451>`__
3964* `Migrate bug numbers
3965  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189353>`__
3966  (issue `#298074672 <https://issues.pigweed.dev/issues/298074672>`__)
3967* `Upgrade mbedtls to 3.5.0
3968  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189273>`__
3969  (issue `#319289775 <https://issues.pigweed.dev/issues/319289775>`__)
3970* `Fix clang-format findings
3971  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190090>`__
3972
3973------------
3974Jan 26, 2024
3975------------
3976Highlights (Jan 12, 2024 to Jan 26, 2024):
3977
3978* The new :ref:`docs-bazel-integration` guide shows you how to integrate a
3979  single Pigweed module into an existing Bazel project.
3980* Initial support for :py:class:`pw_cc_feature` has been added, which completes
3981  the initial set of rules required for building toolchains with
3982  :ref:`module-pw_toolchain_bazel`.
3983* A longstanding GCC bug that caused tokenized logging within a function
3984  template to not work has been fixed.
3985
3986Active SEEDs
3987============
3988Help shape the future of Pigweed! Please visit :ref:`seed-0000`
3989and leave feedback on the RFCs (i.e. SEEDs) marked
3990``Open for Comments``.
3991
3992Modules
3993=======
3994
3995pw_allocator
3996------------
3997* `Add SplifFreeListAllocator fuzzer
3998  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178216>`__
3999
4000pw_bluetooth
4001------------
4002* `Add advertising packet content filter emboss definitions
4003  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188314>`__
4004* `Add android multiple advertising emboss structures
4005  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188313>`__
4006* `Add a2dp remaining offload emboss structures
4007  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188311>`__
4008* `Move emboss structures from hci_commands to hci_common
4009  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188312>`__
4010* `Reorganize hci_vendor.emb
4011  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188310>`__
4012* `Add new event definitions
4013  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188150>`__
4014  (issue `#311639432 <https://issues.pigweed.dev/issues/311639432>`__)
4015
4016pw_build
4017--------
4018The new :ref:`module-pw_build-bazel-pw_cc_binary_with_map` Bazel rule enables
4019you to generate a ``.map`` file when building a binary.
4020
4021* `Add pw_cc_binary variant to generate .map files
4022  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187710>`__
4023  (issue `#319746242 <https://issues.pigweed.dev/issues/319746242>`__)
4024
4025pw_bytes
4026--------
4027The :cpp:class:`pw::ByteBuilder` API reference is now being auto-generated
4028via Doxygen. The new :cpp:func:`pw::bytes::SignExtend` template enables
4029expanding the nth bit to the left up to the size of the destination type.
4030
4031* `Fix compilation error occured with Werror=all
4032  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188890>`__
4033* `Update documentation
4034  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188462>`__
4035* `SignExtend template
4036  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188456>`__
4037  (issue `#321114167 <https://issues.pigweed.dev/issues/321114167>`__)
4038* `Make _b literals error on values >255
4039  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188208>`__
4040
4041pw_compilation_testing
4042----------------------
4043* `Skip tests excluded by the preprocessor
4044  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188650>`__
4045  (issue `#321088147 <https://issues.pigweed.dev/issues/321088147>`__)
4046
4047pw_console
4048----------
4049* `Upgrade to ptpython 3.0.25
4050  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188146>`__
4051  (issue `#320509105 <https://issues.pigweed.dev/issues/320509105>`__)
4052
4053pw_containers
4054-------------
4055The destructors for ``pw::InlineQueue``, ``pw::InlineDeque``, and
4056``pw::Vector`` are now protected to prevent use with ``delete`` or
4057``std::unique_ptr`` and to prevent unusable declarations.
4058
4059* `Protected InlineQueue/Deque<T> destructor
4060  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187802>`__
4061* `Make Vector<T> destructor protected
4062  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187801>`__
4063
4064pw_digital_io
4065-------------
4066The private virtual API requirements for
4067:cpp:class:`pw::digital_io::DigitalIoOptional` are now documented because
4068they are needed when implementing concrete backends for ``pw_digital_io``.
4069
4070* `Document the private virtual API requirements
4071  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187669>`__
4072* `Remove conditional interrupt disabling requirements
4073  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187668>`__
4074
4075pw_doctor
4076---------
4077* `Update expected tools on POSIX
4078  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188102>`__
4079  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
4080
4081pw_env_setup
4082------------
4083* `Retrieve qemu on ARM Macs
4084  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187806>`__
4085  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
4086
4087pw_hdlc
4088-------
4089* `Remove unused targets
4090  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188226>`__
4091* `Remove unused rpc packet processor target
4092  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188233>`__
4093
4094pw_ide
4095------
4096* `Fix typo
4097  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188423>`__
4098* `Launch activated terminals in VSC
4099  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187195>`__
4100  (issue `#318583596 <https://issues.pigweed.dev/issues/318583596>`__)
4101* `VSC extension 0.1.3 release
4102  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186726>`__
4103
4104pw_kvs
4105------
4106The new ``pw::kvs::FlashMemory::EndOfWrittenData()`` method returns the first
4107byte of erased flash that has no more written bytes.
4108
4109* `Add EndOfWrittenData()
4110  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188872>`__
4111
4112pw_persistent_ram
4113-----------------
4114* `Add more tests to PersistentBuffer
4115  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188106>`__
4116  (issue `#320538351 <https://issues.pigweed.dev/issues/320538351>`__)
4117
4118pw_polyfill
4119-----------
4120``pw_polyfill/static_assert.h`` now provides a C23-style ``static_assert()``.
4121See :ref:`module-pw_polyfill-static_assert`.
4122
4123* `Remove _Static_assert workaround
4124  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188277>`__
4125* `Provide static_assert polyfill for C
4126  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188137>`__
4127
4128pw_preprocessor
4129---------------
4130The new ``PW_ADD_OVERFLOW``, ``PW_SUB_OVERFLOW``, and ``PW_MUL_OVERFLOW``
4131macros can be used to :ref:`check for integer overflows
4132<module-pw_preprocessor-integer-overflow>`.
4133
4134* `Add integer-overflow macros
4135  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187653>`__
4136
4137pw_presubmit
4138------------
4139* `Add more info to todo summary
4140  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188750>`__
4141* `Trim paths in ninja summary
4142  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188070>`__
4143* `No copyright for MODULE.bazel.lock
4144  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188170>`__
4145* `Exclude docs on Mac ARM hosts
4146  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187784>`__
4147  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
4148
4149pw_protobuf
4150-----------
4151* `Fix another &*nullptr in test
4152  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188717>`__
4153* `Fix undefined pointer deref in fuzz test
4154  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188281>`__
4155* `Fix out-of-range read
4156  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188095>`__
4157  (issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__)
4158
4159pw_thread
4160---------
4161* `Add missing include
4162  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189212>`__
4163
4164pw_tokenizer
4165------------
4166A longstanding GCC bug that caused tokenized logging within a function template
4167to not work has been fixed.
4168
4169* `Compensate for GCC template bug
4170  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188424>`__
4171  (issue `#321306079 <https://issues.pigweed.dev/issues/321306079>`__)
4172* `Allow use of static_assert in C99 test
4173  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188357>`__
4174* `Adjust rustdocs deps to only be in std environments
4175  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188138>`__
4176
4177pw_tool
4178-------
4179This incomplete module has been deleted.
4180
4181* `Delete module
4182  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188919>`__
4183
4184pw_toolchain_bazel
4185------------------
4186The ``//pw_toolchain_bazel`` directory is now configured to be compiled as a
4187standalone Bazel module. Initial support for :py:class:`pw_cc_feature` has been
4188added, which completes the initial set of rules required for building
4189toolchains with :ref:`module-pw_toolchain_bazel`.
4190
4191* `Remove deprecated action names
4192  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188991>`__
4193  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
4194* `Migrate to type-safe action names
4195  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187896>`__
4196  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
4197* `Require action labels in providers
4198  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188810>`__
4199  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
4200* `Define actions names as labels
4201  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187895>`__
4202  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
4203* `Make the pw_toolchain repository into a bazel module
4204  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187932>`__
4205  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
4206* `Add pw_cc_feature
4207  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181755>`__
4208  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
4209* `Set exec_transition_for_inputs to False
4210  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188361>`__
4211  (issue `#321268080 <https://issues.pigweed.dev/issues/321268080>`__)
4212* `Remove check_deps_provide
4213  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187894>`__
4214  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
4215
4216pw_transfer
4217-----------
4218The C++ client for :ref:`module-pw_transfer` now uses handles for
4219cancellation.
4220
4221* `Remove duplicated Builder call
4222  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188855>`__
4223* `Use handles for cancellation in C++ client
4224  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/134290>`__
4225  (issue `#272840682 <https://issues.pigweed.dev/issues/272840682>`__)
4226
4227pw_web
4228------
4229* `Init. improvements to resize performance
4230  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188050>`__
4231  (issue `#320475138 <https://issues.pigweed.dev/issues/320475138>`__)
4232
4233Build
4234=====
4235* `Use Python 3.11
4236  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182191>`__
4237  (issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__)
4238* `Use pre-release of rules_python
4239  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188852>`__
4240  (issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__)
4241* `Use rules_python in Bazel build files
4242  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188690>`__
4243
4244Targets
4245=======
4246
4247host_device_simulator
4248---------------------
4249* `Update docs
4250  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187430>`__
4251
4252Docs
4253====
4254* `How to use a single Pigweed module in Bazel
4255  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188922>`__
4256* `Add pre-reqs for non-Debian Linux distros
4257  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188770>`__
4258  (issue `#320519800 <https://issues.pigweed.dev/issues/320519800>`__)
4259* `Auto-generate module source code and issues URLs
4260  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187312>`__
4261* `Minor updates to the FAQ
4262  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188252>`__
4263* `Update changelog
4264  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187614>`__
4265
4266SEEDs
4267=====
4268* (SEED-0123) `Claim SEED number
4269  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188140>`__
4270* (SEED-0124) `Claim SEED number
4271  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188671>`__
4272
4273Miscellaneous
4274=============
4275* `Remove module-level README.md files
4276  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188374>`__
4277* `Fix how we ignore bazel- directories
4278  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188940>`__
4279
4280------------
4281Jan 12, 2024
4282------------
4283Highlights (Dec 29, 2023 to Jan 12, 2024):
4284
4285* :ref:`docs-changelog-20240112-pw_allocator` added parameter to make it easier
4286  to work with allocation metadata in a block's header and made it easier to
4287  omit flag-related code for blocks.
4288* ``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``.
4289* :ref:`docs-changelog-20240112-pw_thread_stl` disallowed
4290  ``std::thread::detach()`` on Windows because it's known to randomly hang
4291  indefinitely.
4292
4293Active SEEDs
4294============
4295Help shape the future of Pigweed! Please visit :ref:`seed-0000`
4296and leave feedback on the RFCs (i.e. SEEDs) marked
4297``Open for Comments``.
4298
4299Modules
4300=======
4301
4302.. _docs-changelog-20240112-pw_allocator:
4303
4304pw_allocator
4305------------
4306A new template parameter, ``kNumExtraBytes``, was added to ``Block``. This
4307parameter reserves space in the block's header for storing and fetching
4308allocation metadata.
4309
4310The ``kMaxSize`` parameter was removed from ``Block``
4311and replaced by ``kNumFlags`` to make it easier to omit flag-related code when
4312not needed and define fewer block types rather than one for each allocation
4313pool size.
4314
4315* `Fix source file list in soong rule
4316  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187127>`__
4317* `Fix MulitplexAllocator's deps
4318  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186873>`__
4319* `Add extra bytes to Block
4320  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185954>`__
4321* `Add initializing constructors
4322  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185953>`__
4323* `Add note to AllocatorMetricProxy tests
4324  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185952>`__
4325
4326pw_bluetooth_sapphire
4327---------------------
4328* `Advertise FCS Option
4329  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186850>`__
4330  (issue `#318002648 <https://issues.pigweed.dev/issues/318002648>`__)
4331* `Refactor method and variable names
4332  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182899>`__
4333  (issue `#312645622 <https://issues.pigweed.dev/issues/312645622>`__)
4334* `Revert commits to get to a known working state
4335  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183087>`__
4336
4337pw_containers
4338-------------
4339* `Remove DestructorHelper from vector
4340  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185521>`__
4341  (issue `#301329862 <https://issues.pigweed.dev/issues/301329862>`__)
4342
4343pw_doctor
4344---------
4345* `Fix overridden package check
4346  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187110>`__
4347
4348pw_emu
4349------
4350* `Remove psutil dependency
4351  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186830>`__
4352  (issue `#316080297 <https://issues.pigweed.dev/issues/316080297>`__)
4353
4354pw_env_setup
4355------------
4356* `Update ref to bazel version file
4357  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187118>`__
4358* `Drop reference to rust version file
4359  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187113>`__
4360* `Use correct arch for cipd in Bazel
4361  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184903>`__
4362  (issue `#234879770 <https://issues.pigweed.dev/issues/234879770>`__)
4363* `Switch to Fuchsia ninja CIPD package
4364  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184078>`__
4365  (issue `#311711323 <https://issues.pigweed.dev/issues/311711323>`__)
4366* `Prevent NPM output from interrupting bootstrap
4367  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186510>`__
4368
4369pw_ide
4370------
4371The new ``pigweed.enforceExtensionRecommendations`` configuration option for
4372VS Code makes extension recommendation enforcement optional. When you set this
4373flag to ``true`` in your project's ``extension.json``, recommended extensions
4374will need to be installed and non-recommended extensions will need to be
4375disabled.
4376
4377You can now submit Pigweed issues through VS Code. Open the Command Palette
4378and type ``Pigweed: File Bug``.
4379
4380* `Add Jest testing to VSC extension
4381  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187126>`__
4382* `Make VSC extension enforcement an option
4383  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187170>`__
4384* `Support alternate \`clangd\` paths
4385  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186730>`__
4386  (issue `#318413766 <https://issues.pigweed.dev/issues/318413766>`__)
4387* `VSC extension 0.1.2 release
4388  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184907>`__
4389* `Fix CLI command docs
4390  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184955>`__
4391* `Allow submitting bugs from VSC
4392  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184908>`__
4393* `Document \`compdb_gen_cmd\`
4394  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184899>`__
4395* `Improve VSC extension UX
4396  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184990>`__
4397
4398.. _docs-changelog-20240112-pw_log:
4399
4400pw_log
4401------
4402The Python API of the log decoder now accepts a ``logging.Logger`` or
4403``logging.LoggerAdapter`` instance as the default device logger. Previously
4404it only accepted ``logging.Logger``.
4405
4406* `Let Device accept logger adapter
4407  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187119>`__
4408
4409pw_log_zephyr
4410-------------
4411* `Add missing include for tokenized logging
4412  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186810>`__
4413
4414pw_multibuf
4415-----------
4416* `Add soong support
4417  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186815>`__
4418
4419pw_protobuf
4420-----------
4421* `Fix bool overflow
4422  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186801>`__
4423  (issue `#318732334 <https://issues.pigweed.dev/issues/318732334>`__)
4424* `Fix nullptr dereference in fuzz test
4425  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186800>`__
4426  (issue `#314829525 <https://issues.pigweed.dev/issues/314829525>`__)
4427* `Don't crash on invalid field number
4428  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186724>`__
4429  (issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__)
4430* `Fix conflict in messages with fields named 'other'
4431  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186951>`__
4432* `Properly fuzz nested encoders/decoders
4433  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186723>`__
4434  (issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__)
4435* `Fully qualify message namespace
4436  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186822>`__
4437
4438pw_rpc
4439------
4440The new ``PW_RPC_METHOD_STORES_TYPE`` config option provides a way at runtime
4441to determine a method's type. This is useful when implementing a translation
4442layer from another RPC system. Most Pigweed projects won't need this feature so
4443it's disabled by default.
4444
4445* `Have Method optionally store it's MethodType
4446  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185773>`__
4447* `Run tests with completion callback config enabled
4448  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187172>`__
4449* `Add some missing deps in Bazel targets
4450  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186934>`__
4451  (issue `#318850523 <https://issues.pigweed.dev/issues/318850523>`__)
4452
4453pw_stream
4454---------
4455* `Make stream adapters use reinterpret_cast
4456  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186766>`__
4457  (issue `#314829006 <https://issues.pigweed.dev/issues/314829006>`__)
4458
4459pw_system
4460---------
4461See :ref:`docs-changelog-20240112-pw_log`.
4462
4463* `Let Device accept logger adapter
4464  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187119>`__
4465
4466.. _docs-changelog-20240112-pw_thread_stl:
4467
4468pw_thread_stl
4469-------------
4470Using ``std::thread::detach()`` on Windows has been disallowed. When compiling
4471with MinGW on Windows, ``std::thread::detach()`` is known to randomly hang
4472indefinitely.
4473
4474* `Don't allow std::thread::detach() on Windows
4475  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186570>`__
4476  (issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__)
4477
4478pw_tokenizer
4479------------
4480* `Fix undefined dereference in fuzz test
4481  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186821>`__
4482  (issue `#314829057 <https://issues.pigweed.dev/issues/314829057>`__)
4483* `Make Rust hashing function const
4484  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186273>`__
4485
4486pw_toolchain
4487------------
4488``pw_toolchain`` now adds ``-fno-ms-compatibility`` to ``cflags`` on Windows.
4489When building with ``clang`` on Windows targeting ``msvc``, ``clang``
4490previously enabled a ``ms-compatibility`` mode that broke Pigweed's macro
4491magic.
4492
4493* `Remove duplicate config from Cortex-A32 toolchain
4494  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187270>`__
4495* `Add -fno-ms-compatibility to cflags on Windows
4496  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187173>`__
4497  (issue `#297542996 <https://issues.pigweed.dev/issues/297542996>`__)
4498
4499pw_unit_test
4500------------
4501* `Fix sanitize(r) directive
4502  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186650>`__
4503
4504pw_web
4505------
4506* `Fix autoscroll when window is resized
4507  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187193>`__
4508  (issue `#305022742 <https://issues.pigweed.dev/issues/305022742>`__)
4509
4510Build
4511=====
4512
4513Bazel
4514-----
4515All modules now support the injection of module configuration via
4516``label_flags``.
4517
4518``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``.
4519
4520* `Update to Bazel 7.0.0 release version
4521  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186935>`__
4522* `Add module configuration support
4523  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186725>`__
4524  (issue `#234872811 <https://issues.pigweed.dev/issues/234872811>`__)
4525* `Remove pw_cc_library
4526  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186770>`__
4527  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
4528* `Remove references to pw_cc_library
4529  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186765>`__
4530  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
4531* `Replace pw_cc_library with cc_library
4532  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186763>`__
4533  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
4534
4535OS support
4536==========
4537
4538Zephyr
4539------
4540You can now enable the ``pw_thread/sleep.h`` library in your Zephyr project by
4541setting ``CONFIG_PIGWEED_THREAD_SLEEP=Y`` in your Kconfig.
4542
4543* `Link pw_thread.sleep with appropriate kConfig
4544  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186825>`__
4545
4546Docs
4547====
4548* `Add example of conditionally enabling code based on module config
4549  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187171>`__
4550* `Mention pw format tool
4551  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186851>`__
4552* `Update changelog
4553  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186470>`__
4554* `Rework first-time setup
4555  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185730>`__
4556* `Add troubleshooting section to Bazel quickstart
4557  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186237>`__
4558
4559SEEDs
4560=====
4561* (SEED-0001) `Fix typo and formatting
4562  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187273>`__
4563* (SEED-0114) `Fix Compiler Explorer link
4564  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187330>`__
4565* (SEED-0122) `Claim SEED number
4566  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187120>`__
4567
4568------------
4569Dec 29, 2023
4570------------
4571Highlights (Dec 15, 2023 to Dec 29, 2023):
4572
4573* The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier
4574  to dispatch between allocators depending on an app-specific request type ID.
4575* ``pw_base64`` now has initial Rust support.
4576* ``pw_malloc_freertos``, a new FreeRTOS backend for :ref:`module-pw_malloc`,
4577  was added.
4578* The new ``pw::digital_io::Polarity`` helper enum makes it easier for backends
4579  to map logical levels to physical levels.
4580* The Rust macro ``tokenize_to_buffer!`` in the ``pw_tokenizer`` Rust crate now
4581  supports concatenation of format strings via the ``PW_FMT_CONCAT`` operator.
4582* The :ref:`module-pw_hdlc` and :ref:`module-pw_result` docs were updated to
4583  follow our latest :ref:`docs-contrib-docs-modules`.
4584
4585Active SEEDs
4586============
4587Help shape the future of Pigweed! Please visit :ref:`seed-0000`
4588and leave feedback on the RFCs (i.e. SEEDs) marked
4589``Open for Comments``.
4590
4591Modules
4592=======
4593
4594pw_allocator
4595------------
4596The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier to
4597dispatch between allocators depending on an app-specific request type ID.
4598
4599* `Add MultiplexAllocator
4600  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185027>`__
4601* `Add WithMetrics interface
4602  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185296>`__
4603* `Split up test utilities
4604  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185295>`__
4605
4606pw_base64
4607---------
4608``pw_base64`` now has initial Rust support. See `Crate pw_base64
4609</rustdoc/pw_base64/>`_.
4610
4611* `Add initial Rust support
4612  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185210>`__
4613
4614pw_containers
4615-------------
4616* `Remove DestructorHelper from queues
4617  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185030>`__
4618  (issue `#301329862 <https://issues.pigweed.dev/issues/301329862>`__)
4619
4620pw_digital_io
4621-------------
4622`pw::digital_io::Polarity <https://cs.opensource.google/pigweed/pigweed/+/main:pw_digital_io/public/pw_digital_io/polarity.h>`_
4623was added to make it easier for backends to map logical levels to physical levels.
4624
4625* `Add helper Polarity enum
4626  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185435>`__
4627
4628pw_emu
4629------
4630* `Use code-block instead of code
4631  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186170>`__
4632
4633pw_hdlc
4634-------
4635* `Follow new module docs guidelines
4636  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184799>`__
4637
4638pw_malloc
4639---------
4640``pw_malloc_freertos``, a FreeRTOS backend for ``pw_malloc`` was added.
4641
4642* `Require specifying a backend in bazel build
4643  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185441>`__
4644* `Add freertos backend
4645  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185452>`__
4646
4647pw_presubmit
4648------------
4649* `Use local prettier + eslint versions
4650  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185144>`__
4651
4652pw_result
4653---------
4654* `Rework docs to new standard
4655  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185147>`__
4656
4657pw_rpc
4658------
4659* `Adjust alarm_timer_test
4660  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186274>`__
4661  (issue `#317990451 <https://issues.pigweed.dev/issues/317990451>`__)
4662
4663pw_snapshot
4664-----------
4665* `Clean up RISCV CpuArchitecture
4666  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185690>`__
4667* `Add RISCV CpuArchitecture to metadata
4668  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185630>`__
4669
4670pw_thread_stl
4671-------------
4672* `Disable Bazel tests failing on Windows
4673  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186242>`__
4674  (issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__)
4675* `Disable tests failing on Windows
4676  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186253>`__
4677  (issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__)
4678
4679pw_tokenizer
4680------------
4681The Rust macro ``tokenize_to_buffer!`` now supports concatenation of format
4682strings via the ``PW_FMT_CONCAT`` operator.
4683
4684* `Support \`PW_FMT_CONCAT\` in \`tokenize_to_buffer!\`
4685  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185211>`__
4686
4687pw_toolchain
4688------------
4689The need to provide an ``unknown`` value for various ``pw_cc_toolchain`` fields
4690has been removed.
4691
4692* `Remove "unknown" from various fields
4693  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185170>`__
4694  (issue `#315206506 <https://issues.pigweed.dev/issues/315206506>`__)
4695
4696pw_transfer
4697-----------
4698* `Improve Python stream reopening and closing
4699  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184931>`__
4700
4701pw_unit_test
4702------------
4703* `Silence ASAN error in TestInfo
4704  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185654>`__
4705
4706pw_watch
4707--------
4708* `Build directory exclude list handling
4709  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185772>`__
4710  (issue `#317241320 <https://issues.pigweed.dev/issues/317241320>`__)
4711
4712pw_web
4713------
4714* `Add state UI unit tests
4715  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184909>`__
4716  (issue `#316218222 <https://issues.pigweed.dev/issues/316218222>`__)
4717
4718SEEDs
4719=====
4720* `Add facilitators to metadata and generated table
4721  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185932>`__
4722* (SEED-0105) `Use code-block instead of code
4723  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186171>`__
4724
4725------------
4726Dec 15, 2023
4727------------
4728Highlights (Dec 1, 2023 to Dec 15, 2023):
4729
4730* We started implementing our new async API, :ref:`module-pw_async2`.
4731* We deprecated the use of ``gtest/gtest.h`` header paths for tests intended
4732  to build against ``pw_unit_test``. See
4733  :ref:`docs-changelog-20231215-pw_unit_test` for details.
4734
4735  .. note::
4736
4737     All the commits titled ``Use unit test framework`` in the ``Dec 15, 2023``
4738     update are related to this change.
4739
4740* The :ref:`module-pw_alignment` and :ref:`module-pw_emu` docs have been updated
4741  to follow our latest :ref:`docs-contrib-docs-modules`.
4742* ``pw_system`` now supports an :ref:`extra logging channel
4743  <module-pw_system-logchannel>`.
4744* ``pw_toolchain_bazel`` has a new :ref:`get started guide
4745  <module-pw_toolchain_bazel-get-started>`.
4746
4747Active SEEDs
4748============
4749Help shape the future of Pigweed! Please visit :ref:`seed-0000`
4750and leave feedback on the RFCs (i.e. SEEDs) marked
4751``Open for Comments``.
4752
4753Modules
4754=======
4755
4756pw_alignment
4757------------
4758* `Follow the new docs guidelines
4759  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181432>`__
4760
4761pw_allocator
4762------------
4763* `Fix metric disabling
4764  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185026>`__
4765* `Add support for fuzzing Allocator implementations
4766  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178215>`__
4767* `Use unit test framework
4768  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183270>`__
4769
4770pw_analog
4771---------
4772* `Use unit test framework
4773  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183270>`__
4774
4775pw_async2
4776---------
4777We started implementing our new async API, :ref:`module-pw_async2`.
4778
4779* `Implement initial async API
4780  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182727>`__
4781
4782pw_base64
4783---------
4784* `Use unit test framework
4785  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183299>`__
4786
4787pw_blob_store
4788-------------
4789* `Use unit test framework
4790  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183299>`__
4791
4792pw_bluetooth
4793------------
4794* `Add LE Read Buffer Size [v2] command complete event
4795  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185070>`__
4796  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
4797* `Use unit test framework
4798  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184312>`__
4799* `Fix LEExtendedCreateConnectionCommandV1 data interleaving
4800  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183950>`__
4801  (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
4802* `Fix ExtendedCreateConnectionV1
4803  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183930>`__
4804  (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
4805* `Add new HCI definition
4806  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183771>`__
4807  (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
4808* `Re-format emboss files
4809  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183770>`__
4810
4811pw_bluetooth_sapphire
4812---------------------
4813* `Read ISO data buffer info on startup
4814  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184052>`__
4815  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
4816* `LE Read Buffer Size [v2]
4817  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183772>`__
4818  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
4819* `Add LE Set Host Feature
4820  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184050>`__
4821  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
4822* `Update name of ISO host support bit
4823  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184051>`__
4824  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
4825* `Fix BrEdrConnectionManager.Inspect test
4826  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183304>`__
4827  (issue `#42086629 <https://issues.fuchsia.dev/issues/42086629>`__)
4828
4829pw_build
4830--------
4831* `Fix use of TARGET_COMPATIBLE_WITH_HOST_SELECT in external repo
4832  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184095>`__
4833
4834pw_bytes
4835--------
4836* `Use unit test framework
4837  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183354>`__
4838
4839pw_checksum
4840-----------
4841* `Use unit test framework
4842  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183300>`__
4843
4844pw_chrono
4845---------
4846* `Use unit test framework
4847  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183300>`__
4848
4849pw_cli
4850------
4851You can now disable the printing of the banner by setting ``PW_ENVSETUP_QUIET``
4852or ``PW_ENVSETUP_NO_BANNER``.
4853
4854* `Allow banner to be suppressed
4855  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184970>`__
4856
4857pw_console
4858----------
4859* `Disable private attr auto-completion
4860  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184644>`__
4861
4862pw_containers
4863-------------
4864* `Fix missing include
4865  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184961>`__
4866* `Fix IntrusiveList::Item move assignment test
4867  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182951>`__
4868  (issue `#303634979 <https://issues.pigweed.dev/issues/303634979>`__)
4869* `Add missing dep for IntrusiveList test
4870  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184245>`__
4871
4872pw_digital_io
4873-------------
4874* `Use unit test framework
4875  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183301>`__
4876
4877pw_docgen
4878---------
4879We updated the docs server to use native hot reloading.
4880
4881* `Update Pigweed Live schedule
4882  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184960>`__
4883* `Add new docs server
4884  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181011>`__
4885
4886pw_emu
4887------
4888We're handling QEMU startup errors more gracefully now.
4889
4890* `Better handling for startup errors
4891  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184859>`__
4892  (issue `#315868463 <https://issues.pigweed.dev/issues/315868463>`__)
4893* `qemu: Improve the QMP handshake handling
4894  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184858>`__
4895  (issue `#315516286 <https://issues.pigweed.dev/issues/315516286>`__)
4896* `Link all the docs to each other
4897  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184310>`__
4898* `Update docs to follow new guidelines
4899  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183223>`__
4900
4901pw_env_setup
4902------------
4903The upstream Pigweed bootstrap script now runs ``npm install``. We worked
4904on native macOS support that doesn't rely on Rosetta. Use the
4905``--disable-rosetta`` flag to try it out. Note that the work isn't complete
4906yet.
4907
4908* `Run npm install on bootstrap
4909  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184639>`__
4910* `Remove "untested" warning
4911  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182813>`__
4912* `Use ARM protoc version on ARM Macs
4913  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184930>`__
4914  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
4915* `Fix typo in error message
4916  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184910>`__
4917* `Add flag to disable Rosetta
4918  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184804>`__
4919  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
4920* `Retrieve armgcc for ARM Macs
4921  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184785>`__
4922  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
4923* `Change case of armgcc version
4924  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184798>`__
4925  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
4926* `Roll cipd client
4927  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184277>`__
4928* `Bump executing Python package
4929  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183838>`__
4930
4931pw_file
4932-------
4933* `Use unit test framework
4934  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183301>`__
4935
4936pw_format
4937---------
4938Format strings can now be built by macros at compile-time by specifying the
4939format string as a set of string literals separated by the custom
4940``PW_FMT_CONCAT`` keyword.
4941
4942* `Allow format strings to be composed at compile time
4943  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184200>`__
4944
4945pw_fuzzer
4946---------
4947* `Fix ambiguous reference to ContainerOf
4948  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184284>`__
4949
4950pw_hdlc
4951-------
4952* `Use unit test framework
4953  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__
4954
4955pw_hex_dump
4956-----------
4957* `Use unit test framework
4958  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__
4959
4960pw_i2c
4961------
4962* `Use unit test framework
4963  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__
4964
4965pw_ide
4966------
4967``pw_ide`` now handles additional clang toolchains if your project specifies one
4968that's different from the one provided by Pigweed. We also shipped several UX
4969improvements to the Visual Studio Code extension.
4970
4971* `Add command to build VSC extension
4972  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184992>`__
4973* `Remove VSIX installation stuff
4974  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184991>`__
4975* `Don't warn on missing extensions.json
4976  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184895>`__
4977* `Alpha-sort the list of targets in VSC
4978  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184864>`__
4979* `Auto-run build system command
4980  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184809>`__
4981* `Update VSC Python config
4982  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184820>`__
4983* `Fix condition for Windows platform
4984  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184730>`__
4985* `Fix for clang installed to project dir
4986  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184010>`__
4987  (issue `#314693384 <https://issues.pigweed.dev/issues/314693384>`__)
4988
4989pw_kvs
4990------
4991* `Use unit test framework
4992  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__
4993
4994pw_libc
4995-------
4996* `Use unit test framework
4997  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__
4998
4999pw_log
5000------
5001* `Use unit test framework
5002  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__
5003
5004pw_malloc
5005---------
5006* `Use unit test framework
5007  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183308>`__
5008
5009pw_metric
5010---------
5011* `Use unit test framework
5012  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183308>`__
5013
5014pw_perf_test
5015------------
5016* `Refactor event handler types
5017  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179611>`__
5018* `Use unit test framework
5019  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183309>`__
5020
5021pw_presubmit
5022------------
5023* `Add LUCI_CONTEXT to ctx
5024  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184793>`__
5025* `Merge some of the "misc" checks
5026  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184778>`__
5027* `Better support downstream GnGenNinja use
5028  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183837>`__
5029  (issue `#314818274 <https://issues.pigweed.dev/issues/314818274>`__)
5030* `Automatically compute trim_prefix
5031  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183100>`__
5032  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
5033
5034pw_random
5035---------
5036* `Use unit test framework
5037  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183350>`__
5038
5039pw_result
5040---------
5041* `Use unit test framework
5042  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183350>`__
5043
5044pw_rust
5045-------
5046* `Remove excess newline in doc command line
5047  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182451>`__
5048
5049pw_snapshot
5050-----------
5051* `Use unit test framework
5052  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183351>`__
5053
5054pw_status
5055---------
5056* `Docs tweak
5057  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185146>`__
5058
5059pw_string
5060---------
5061* `Fix string_test build error under new clang revision
5062  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184219>`__
5063  (issue `#315190328 <https://issues.pigweed.dev/issues/315190328>`__)
5064* `Add missing include
5065  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183233>`__
5066  (issue `#314130408 <https://issues.pigweed.dev/issues/314130408>`__)
5067
5068pw_symbolizer
5069-------------
5070* `Fix symbolizer_test
5071  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184226>`__
5072  (issue `#315190328 <https://issues.pigweed.dev/issues/315190328>`__)
5073
5074pw_system
5075---------
5076We added an :ref:`extra logging channel <module-pw_system-logchannel>`.
5077
5078* `Support extra logging channel
5079  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184410>`__
5080  (issue `#315540660 <https://issues.pigweed.dev/issues/315540660>`__)
5081
5082pw_thread
5083---------
5084* `Use unit test framework
5085  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183352>`__
5086
5087pw_tls_client
5088-------------
5089* `Use unit test framework
5090  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183352>`__
5091
5092pw_tokenizer
5093------------
5094* `Mark \`pw_tokenizer_core\` as \`no_std\`
5095  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183197>`__
5096
5097pw_toolchain
5098------------
5099The Arm GCC toolchain now uses :ref:`module-pw_toolchain_bazel`.
5100
5101* `Move ARM toolchain to new API
5102  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183160>`__
5103  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5104* `Use action configs from LLVM tool repo
5105  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183010>`__
5106  (issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__)
5107
5108pw_toolchain_bazel
5109------------------
5110Support for :py:attr:`additional_files` was added to reduce ``*_files``
5111boilerplate. We added a new :ref:`get started guide
5112<module-pw_toolchain_bazel-get-started>`.
5113
5114* `Fix naming in docs
5115  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184753>`__
5116* `Add misc_files group
5117  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184698>`__
5118  (issue `#305737273 <https://issues.pigweed.dev/issues/305737273>`__)
5119* `Add automagic toolchain file collection
5120  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184299>`__
5121  (issue `#305737273 <https://issues.pigweed.dev/issues/305737273>`__)
5122* `Add getting started guide
5123  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184281>`__
5124  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5125* `Remove legacy tool API
5126  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184280>`__
5127* `Remove deprecated API
5128  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183235>`__
5129  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5130* `Rename build file templates part 2/2
5131  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183187>`__
5132
5133pw_trace
5134--------
5135* `Use unit test framework
5136  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183355>`__
5137
5138pw_transfer
5139-----------
5140We added support for setting different timeouts for clients and servers.
5141See ``PW_TRANSFER_DEFAULT_MAX_CLIENT_RETRIES`` and
5142``PW_TRANSFER_DEFAULT_MAX_SERVER_RETRIES`` in :ref:`module-pw_transfer-config`.
5143
5144* `Remove small hardcoded timeout in proxy_test
5145  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184638>`__
5146  (issue `#315459788 <https://issues.pigweed.dev/issues/315459788>`__)
5147* `Allow setting different timeouts for client and server
5148  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184210>`__
5149* `Update integration test documentation
5150  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183163>`__
5151  (issue `#250947749 <https://issues.pigweed.dev/issues/250947749>`__)
5152
5153.. _docs-changelog-20231215-pw_unit_test:
5154
5155pw_unit_test
5156------------
5157We deprecated use of ``gtest/gtest.h`` header paths for tests intended to build
5158against ``pw_unit_test``. Historically, we supported using the ``gtest/gtest.h``
5159include path to support compiling a test as either a ``pw_unit_test`` or with
5160the full GoogleTest on larger targets like desktop. However, this created a
5161problem since ``pw_unit_test`` only implements a subset of the GoogleTest API.
5162With the new approach, we require tests that are intended to compile on devices
5163to directly include ``pw_unit_test/framework.h``. In cases where GoogleTest is
5164available, that header will redirect to GoogleTest.
5165
5166* `Add compatibility in bazel
5167  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184911>`__
5168  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
5169* `Use googletest backend as a dep
5170  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184656>`__
5171  (issue `#315351886 <https://issues.pigweed.dev/issues/315351886>`__)
5172* `Fix building fuzztests with cmake
5173  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184268>`__
5174* `Use unit test framework
5175  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183353>`__
5176* `Create facade's header
5177  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183194>`__
5178  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
5179
5180pw_varint
5181---------
5182* `Use unit test framework
5183  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183354>`__
5184
5185pw_web
5186------
5187* `Handle unrequested responses after call_id changes
5188  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184320>`__
5189* `Add support for call_id in RPC calls
5190  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160792>`__
5191* `Add Mocha and Jest global vars to ESLint
5192  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183931>`__
5193* `Switch to pre-made subset of icon fonts
5194  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156852>`__
5195  (issue `#287270736 <https://issues.pigweed.dev/issues/287270736>`__)
5196
5197Build
5198=====
5199* `Set Zephyr toolchain to llvm in presubmit
5200  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179170>`__
5201
5202Targets
5203=======
5204* `Point deprecated flag to new backend
5205  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184262>`__
5206* (stm32f429i_disc1) `Fix test runner
5207  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184378>`__
5208
5209Language support
5210================
5211* (Python) `Remove references to non-existing setup.py
5212  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182770>`__
5213
5214OS support
5215==========
5216* (Zephyr) `Remove unecessary toolchain downloads & filter invalid targets
5217  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184072>`__
5218
5219Docs
5220====
5221.. todo-check: disable
5222
5223* `Remove inaccurate #include statements
5224  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185190>`__
5225  (issue `#295023422 <https://issues.pigweed.dev/issues/295023422>`__)
5226* `Add Bazel code coverage TODO
5227  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182812>`__
5228  (issue `#304833225 <https://issues.pigweed.dev/issues/304833225>`__)
5229* `Add sort by alignment to size optimizations
5230  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184150>`__
5231* `Fix build command typo
5232  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184170>`__
5233* `Update changelog
5234  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183310>`__
5235
5236.. todo-check: disable
5237
5238SEEDs
5239=====
5240* `Always use build metadata titles in index table
5241  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183750>`__
5242* (SEED-0001) `Add section about SEEDs & code changes
5243  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177084>`__
5244* (SEED-0001) `Update number selection guidance
5245  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184223>`__
5246* SEED-0117) `Open for comments
5247  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184795>`__
5248* (SEED-0121) `Claim SEED number
5249  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184225>`__
5250
5251Miscellaneous
5252=============
5253* `Fix formatting after clang roll
5254  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184752>`__
5255
5256-----------
5257Dec 1, 2023
5258-----------
5259Highlights (Nov 17, 2023 to Dec 1, 2023):
5260
5261* We now have an auto-generated :ref:`seed-0000` that shows you the current
5262  status of all SEEDs.
5263* We've started implementing a :ref:`Rust API for pw_log
5264  <docs-changelog-20231201-pw_log>`.
5265* The :ref:`module-pw_alignment`, :ref:`module-pw_perf_test`, and
5266  :ref:`module-pw_status` docs were refactored to follow our latest
5267  :ref:`docs-contrib-docs-modules`.
5268
5269Active SEEDs
5270============
5271Help shape the future of Pigweed! Please visit :ref:`seed-0000`
5272and leave feedback on the RFCs (i.e. SEEDs) marked
5273``Open for Comments``.
5274
5275Modules
5276=======
5277
5278pw_alignment
5279------------
5280The :ref:`docs <module-pw_alignment>` were updated to follow our new
5281:ref:`docs-contrib-docs-modules`.
5282
5283* `Follow the new docs guidelines
5284  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181432>`__
5285
5286pw_allocator
5287------------
5288Utilities were added that make it easier to write tests for custom allocator
5289implementations. The metric collection API was refactored. CMake support for
5290heap poisoning was added.
5291
5292* `Fix use-after-free in ~AllocatorForTest
5293  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182950>`__
5294* `Add AllocationTestHarness
5295  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183032>`__
5296* `Add AllocationTestHarness
5297  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180532>`__
5298* `Refactor metric collection
5299  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180456>`__
5300* `Improve heap poisoning configuration
5301  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180372>`__
5302
5303pw_bluetooth
5304------------
5305* `Add LE Set Host Feature command
5306  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181770>`__
5307  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
5308* `LE Request Peer SCA Complete event
5309  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182430>`__
5310  (issue `#311639272 <https://issues.pigweed.dev/issues/311639272>`__)
5311* `Fix LEExtendedAdvertisingReportData tx_power to be an Int
5312  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181756>`__
5313
5314pw_bluetooth_sapphire
5315---------------------
5316Migration of :ref:`module-pw_bluetooth_sapphire` into Pigweed has begun.
5317
5318* `Use pw_test_group for fuzzers target
5319  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183195>`__
5320  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
5321* `Use pw_fuzzer_group
5322  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183168>`__
5323  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
5324* `Add sales pitch & roadmap docs
5325  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181834>`__
5326  (issue `#312287470 <https://issues.pigweed.dev/issues/312287470>`__)
5327* `Add testonly to testing targets
5328  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182890>`__
5329  (issue `#136961 <https://issues.fuchsia.dev/issues/136961>`__)
5330* `Revert commits to get to a known working state
5331  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183014>`__
5332* `Use Write instead of UncheckedWrite
5333  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182734>`__
5334* `Remove now unnecessary use of std::optional
5335  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182490>`__
5336  (issue `#311256496 <https://issues.pigweed.dev/issues/311256496>`__)
5337* `Move LegacyLowEnergyScanner impl to base class
5338  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182017>`__
5339  (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
5340* `Create new LowEnergyScanner polymorphic methods
5341  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182016>`__
5342  (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
5343* `Extended scanning support, Fake(Controller|Peer)
5344  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182015>`__
5345  (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
5346* `Remove fidl fuzzer from build
5347  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182714>`__
5348  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
5349* `Use explicit constructor for SmartTask
5350  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182013>`__
5351* `Follow pigweed style for test files
5352  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182012>`__
5353* `Add OWNERS file
5354  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181759>`__
5355* `Delete unused build file
5356  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181830>`__
5357  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
5358* `Fix pragma_once lint
5359  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181394>`__
5360  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
5361* `Fix linter errors
5362  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181305>`__
5363  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
5364* `Fix bazel formatting
5365  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181303>`__
5366  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
5367* `Remove ICU from bazel build
5368  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181391>`__
5369  (issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__)
5370* `Refactor pw_bluetooth_sapphire & fix errors
5371  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173484>`__
5372  (issue `#42051324 <https://issues.fuchsia.dev/issues/42051324>`__)
5373* `Update copyright headers
5374  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177800>`__
5375
5376pw_build_info
5377-------------
5378* `Fix relative paths in Python tests
5379  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182681>`__
5380
5381pw_containers
5382-------------
5383A warning was added about ``pw::Vector`` being unsafe with
5384non-trivially-destructible, self-referencing types. See
5385`b/313899658 <https://issues.pigweed.dev/issues/313899658>`_.
5386
5387* `Warn about unsafe Vector usage
5388  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182970>`__
5389  (issue `#313899658 <https://issues.pigweed.dev/issues/313899658>`__)
5390
5391pw_format
5392---------
5393A ``core::fmt`` macro helper was added.
5394
5395* `Add core::fmt macro helper
5396  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178537>`__
5397
5398.. _docs-changelog-20231201-pw_log:
5399
5400pw_log
5401------
5402An initial Rust API has been added.
5403
5404* `Add initial Rust API
5405  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178538>`__
5406
5407pw_multibuf
5408-----------
5409* `Remove unused GN dep
5410  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183165>`__
5411* `Remove dep on external gtest
5412  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183158>`__
5413* `Make HeaderChunkRegionTracket public
5414  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183041>`__
5415* `Fix cmake build file
5416  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182898>`__
5417
5418pw_package
5419----------
5420* `Add ICU package
5421  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181269>`__
5422  (issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__)
5423
5424pw_perf_test
5425------------
5426The :ref:`docs <module-pw_perf_test>` have been refactored.
5427
5428* `Rename logging event handler files
5429  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178915>`__
5430* `Rework docs
5431  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179610>`__
5432
5433pw_presubmit
5434------------
5435.. todo-check: disable
5436
5437* `Automatically compute trim_prefix
5438  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183100>`__
5439  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
5440* `Allow full issues.pigweed.dev urls in TODO links
5441  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183095>`__
5442* `Fix TestTodoCheck.test_one_bug_legacy()
5443  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183094>`__
5444* `No coverage upload for shadow builds
5445  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183093>`__
5446  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
5447* `Remove some unused constants
5448  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183092>`__
5449* `Add is_shadow/is_prod members to context
5450  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183077>`__
5451* `Refactor the coverage options
5452  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182873>`__
5453  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
5454* `Show diffs when parser tests fail
5455  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182971>`__
5456* `Trim paths in Bazel summaries
5457  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182952>`__
5458* `Correct the codesearch_host
5459  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182850>`__
5460  (issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__)
5461* `Correct host in coverage presubmit
5462  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182702>`__
5463  (issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__)
5464* `Fix coverage options
5465  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182666>`__
5466  (issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__)
5467* `Add Fuchsia style to todo_check_with_exceptions
5468  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181433>`__
5469  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
5470* `Create Sapphire presubmit step
5471  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177453>`__
5472  (issue `#42051324 <https://issues.fuchsia.dev/issues/42051324>`__)
5473
5474.. todo-check: enable
5475
5476pw_protobuf
5477-----------
5478* `Add common_py_pb2 target
5479  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182650>`__
5480  (issue `#309351244 <https://issues.pigweed.dev/issues/309351244>`__)
5481
5482pw_rpc
5483------
5484* `Initialize serde_ members to nullptr
5485  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182851>`__
5486
5487pw_rpc_transport
5488----------------
5489* `Unblock sockets when stopping
5490  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181308>`__
5491  (issue `#309680612 <https://issues.pigweed.dev/issues/309680612>`__)
5492
5493pw_sensor
5494---------
5495* `Reserve SEED for configuring sensors
5496  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182805>`__
5497* `Claim SEED number for high level view
5498  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182673>`__
5499
5500pw_status
5501---------
5502The :ref:`docs <module-pw_status>` have been refactored to follow
5503our latest :ref:`docs-contrib-docs-modules`.
5504
5505* `Adopt latest docs standard
5506  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181181>`__
5507
5508pw_string
5509---------
5510* `Add missing include
5511  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183233>`__
5512
5513pw_system
5514---------
5515* `Load all domain tokens
5516  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181231>`__
5517* `Style fixes to Python scripts
5518  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182661>`__
5519* `Add missing dependency on pw_trace
5520  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181350>`__
5521
5522pw_tokenizer
5523------------
5524* `Move entry header to a separate struct
5525  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183193>`__
5526* `Catch accidental use of test macro
5527  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183192>`__
5528* `Fix NULL dereference in fuzz harness
5529  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182710>`__
5530* `Move ReadUint32
5531  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169714>`__
5532
5533pw_toolchain
5534------------
5535The Arm toolchain has been updated to use the new toolchain specified
5536in :ref:`seed-0113`. A helper for registering C/C++ toolchains in Bazel
5537was added to enable upstream Pigweed to make changes without needing to
5538manually update downstream projects. See
5539:ref:`module-pw_toolchain-bazel-upstream-pigweed-toolchains`.
5540
5541* `Move ARM toolchain to new API
5542  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183160>`__
5543  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5544* `Use action configs from LLVM tool repo
5545  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183010>`__
5546  (issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__)
5547* `Add Bazel toolchain registration helper
5548  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183157>`__
5549  (issue `#301336229 <https://issues.pigweed.dev/issues/301336229>`__)
5550* `Merge host toolchains
5551  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181760>`__
5552* `Expose non-hermetic toolchain
5553  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181330>`__
5554  (issue `#299151946 <https://issues.pigweed.dev/issues/299151946>`__)
5555* `Only fetch compatible Rust toolchains
5556  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181306>`__
5557
5558pw_toolchain/arm_clang
5559----------------------
5560* `Reduce binary size
5561  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169576>`__
5562  (issue `#254541584 <https://issues.pigweed.dev/issues/254541584>`__)
5563
5564pw_toolchain_bazel
5565------------------
5566Support for binding tools to toolchains was added. See :py:class:`pw_cc_tool`
5567and :py:class:`pw_cc_action_config`. Support for featureless sysroots was
5568added. See :py:attr:`pw_cc_toolchain.builtin_sysroot` and
5569:py:attr:`pw_cc_toolchain.cxx_builtin_include_directories`.
5570
5571* `Remove deprecated API
5572  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183235>`__
5573  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5574* `Rename build file templates part 2/2
5575  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183187>`__
5576* `Rename build file templates part 1/2
5577  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183186>`__
5578* `Add LLVM clang tool template
5579  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182969>`__
5580  (issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__)
5581* `Add ARM GCC toolchain template
5582  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182968>`__
5583  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5584* `Support featureless sysroots
5585  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181833>`__
5586  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5587* `Mirror features to be flag sets
5588  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181832>`__
5589  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5590* `Add initial pw_cc_action_config support
5591  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180842>`__
5592  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5593
5594pw_transfer
5595-----------
5596Commands in the :ref:`integration test docs
5597<module-pw_transfer-integration-tests>` were updated and docs were
5598added that explain how to :ref:`run more than one instance of tests
5599in parallel <module-pw_transfer-parallel-tests>`.
5600
5601* `Update integration test documentation
5602  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183163>`__
5603* `Set clients to transfer_v2
5604  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183050>`__
5605  (issue `#309686987 <https://issues.pigweed.dev/issues/309686987>`__)
5606* `Limit to sending a single chunk in tests
5607  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182665>`__
5608  (issue `#295037376 <https://issues.pigweed.dev/issues/295037376>`__)
5609* `Don't "block-network" by default
5610  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182010>`__
5611  (issue `#311297881 <https://issues.pigweed.dev/issues/311297881>`__)
5612* `Use StatusCode in integration tests
5613  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180828>`__
5614* `Make integration_test_server testonly, fix fx roller
5615  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182019>`__
5616  (issue `#312493408 <https://issues.pigweed.dev/issues/312493408>`__)
5617* `Tag integration tests block-network
5618  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181297>`__
5619  (issue `#311297881 <https://issues.pigweed.dev/issues/311297881>`__)
5620
5621pw_unit_test
5622------------
5623* `Skip googletest tests if not set
5624  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183089>`__
5625
5626pw_web
5627------
5628* `Install Web Test Runner and dependencies
5629  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181870>`__
5630
5631Build
5632=====
5633
5634Bazel
5635-----
5636More Bazel information has been added to :ref:`docs-module-structure`.
5637
5638* `Add simple module configuration mechanism
5639  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181032>`__
5640  (issue `#234872811 <https://issues.pigweed.dev/issues/234872811>`__)
5641* `Tidy up WORKSPACE
5642  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181292>`__
5643* `Rename Python toolchains
5644  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181762>`__
5645  (issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__)
5646* `Remove py_proto_library wrapper
5647  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180825>`__
5648  (issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__)
5649* `Use py_proto_library from rules_python
5650  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180537>`__
5651* `Partial pw_system_console fix
5652  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181304>`__
5653  (issue `#310307709 <https://issues.pigweed.dev/issues/310307709>`__)
5654
5655Docs
5656====
5657The tool that we use to semi-automate these changelog updates has been
5658added to the main Pigweed repository. Try out the tool on
5659:ref:`docs-contrib-docs-changelog` and see ``//docs/_static/js/changelog.js``
5660to view its implementation.
5661
5662* `Gerrit code coverage documentation
5663  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182799>`__
5664  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
5665* `Move copyright header info to style guide
5666  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182795>`__
5667* `Document the Test footer
5668  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181752>`__
5669* `Add changelog update instructions and tool
5670  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181765>`__
5671* `Update changelog
5672  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181393>`__
5673
5674SEEDs
5675=====
5676We now have an auto-generated :ref:`seed-0000` that shows you the current
5677status of all SEEDs.
5678
5679* `Generate the SEED index table
5680  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181267>`__
5681* (SEED-0114) `Update status; format header in table
5682  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182872>`__
5683* (SEED-0114) `Channels
5684  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
5685* (SEED-0118) `Claim SEED number
5686  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182654>`__
5687* (SEED-0118) `Claim SEED number
5688  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181837>`__
5689
5690Third party
5691===========
5692* `Add GN rules for ICU
5693  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181311>`__
5694  (issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__)
5695
5696------------
5697Nov 15, 2023
5698------------
5699Highlights (Nov 02, 2023 to Nov 15, 2023):
5700
5701* The API for writing proc macros with pw_format was simplified.
5702* ``pw_emu`` added a command for resuming the execution of paused emulators
5703  and now has limited support for inserting environment variables into
5704  configuration entries.
5705* ``pw_ide`` can now output logs to files.
5706* ``pw_unit_test`` added support for GoogleTest's
5707  ``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds``.
5708* Pigweed's :ref:`docs-mission` are now documented.
5709
5710Active SEEDs
5711============
5712Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
5713
5714* `SEED-0114: Channels
5715  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
5716* `SEED-0115: Sensors
5717  <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__
5718* `SEED-0116: Sockets
5719  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177696>`__
5720
5721Modules
5722=======
5723
5724pw_allocator
5725------------
5726The ``...Unchecked`` methods have been removed from the
5727``pw::allocator::Allocator`` interface and the NVI-style ``Do...`` methods
5728have been modified to take ``Layout`` parameters.
5729
5730* `Update interface based on final SEED-0110 design
5731  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176754>`__
5732* `Refactor test support and example allocator
5733  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177653>`__
5734  (issue `#306686936 <https://issues.pigweed.dev/issues/306686936>`__)
5735
5736pw_analog
5737---------
5738* `Mark libs as test only in bazel
5739  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179612>`__
5740  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
5741
5742pw_console
5743----------
5744``SocketClient`` has been updated to support both IPv4 and IPv6 addresses
5745in addition to Unix sockets.
5746
5747* `Add docs banner
5748  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180824>`__
5749* `Improve SocketClient addressing
5750  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178921>`__
5751
5752pw_emu
5753------
5754There is now limited supported for inserting environment variable values
5755into configuration entries. A command for resuming the execution
5756of a paused emulator was added.
5757
5758* `Add support for substitutions in config entries
5759  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179150>`__
5760  (issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__)
5761* `Add resume command to CLI
5762  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179030>`__
5763  (issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__)
5764* `Fix CLI gdb and load commands
5765  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178922>`__
5766  (issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__)
5767
5768pw_env_setup
5769------------
5770* `Make pigweed_environment.gni content gni-relative
5771  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180991>`__
5772* `Update Bazel to 7.0.0 pre-release
5773  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178950>`__
5774
5775pw_format
5776---------
5777The API for writing `proc macros </rustdoc/pw_format/#proc-macros>`__ that take
5778format strings and arguments was simplified.
5779
5780* `Add tests for macro helpers
5781  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181030>`__
5782* `Generalize format macro handling
5783  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178132>`__
5784
5785pw_fuzzer
5786---------
5787* `Move \`Domain\` from fuzztest::internal to fuzztest
5788  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178213>`__
5789* `Switch oss-fuzz build to Bazel
5790  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175618>`__
5791
5792pw_i2c
5793------
5794* `Mark libs as test only in bazel
5795  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179836>`__
5796  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
5797
5798pw_ide
5799------
5800Logs can now be output to files.
5801
5802* `Set 3-space tabs in VS Code
5803  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179671>`__
5804* `Support output to logs
5805  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163573>`__
5806* `Remove redundant licence
5807  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179613>`__
5808* `Remove clangd auto-restart
5809  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171691>`__
5810* `Make Sphinx extensions upstream-only
5811  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171690>`__
5812* `VSC extension 0.1.1 release
5813  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171070>`__
5814
5815pw_perf_test
5816------------
5817* `Reogranize source files
5818  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178914>`__
5819
5820pw_presubmit
5821------------
5822* `Create new fuzz program
5823  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181134>`__
5824  (issue `#311215681 <https://issues.pigweed.dev/issues/311215681>`__)
5825* `Add examples showing how to create formatters
5826  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180310>`__
5827* `Correct coverage ref
5828  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179452>`__
5829  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
5830
5831pw_stream
5832---------
5833* `Fix use of shutdown on Windows
5834  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180401>`__
5835  (issue `#309680612 <https://issues.pigweed.dev/issues/309680612>`__)
5836
5837pw_system
5838---------
5839* `Add tracing to the demo system
5840  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168834>`__
5841
5842pw_system_demo
5843--------------
5844* `Add clang to default stm32f4 build
5845  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178930>`__
5846  (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
5847
5848pw_tokenizer
5849------------
5850* `Add Java to supported languages list
5851  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179251>`__
5852
5853pw_toolchain
5854------------
5855* `Set alwayslink = 1 when using --wrap
5856  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180930>`__
5857* `Add objdump
5858  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175810>`__
5859
5860pw_toolchain_bazel
5861------------------
5862Core building blocks from the :ref:`seed-0113` plan were implemented:
5863:py:class:`pw_cc_flag_set` and :py:class:`pw_cc_flag_group`.
5864
5865* `Introduce pw_cc_flag_set and pw_cc_flag_group
5866  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179932>`__
5867  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
5868
5869pw_trace_tokenized
5870------------------
5871* `Add a transfer based trace service
5872  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168833>`__
5873
5874pw_transfer
5875-----------
5876There's been a concerted effort to reduce ``pw_transfer`` test flakiness.
5877
5878* `Limit data sent in handler clear test
5879  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180951>`__
5880  (issue `#297355578 <https://issues.pigweed.dev/issues/297355578>`__)
5881* `Limit data sent in manual cancel test
5882  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180826>`__
5883* `Use project-absolute imports for test fixture
5884  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180390>`__
5885  (issue `#310038737 <https://issues.pigweed.dev/issues/310038737>`__)
5886* `Prevent accidental timeouts in unit tests
5887  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180274>`__
5888
5889pw_unit_test
5890------------
5891The :ref:`module-pw_unit_test-api-expect` and
5892:ref:`module-pw_unit_test-api-assert` APIs were documented. Support for
5893GoogleTest's ``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds`` was
5894added.
5895
5896* `Document ASSERT_ and EXPECT_ macros
5897  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179873>`__
5898* `Include the right gmock header
5899  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180030>`__
5900  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
5901* `Mark libs as test only in bazel
5902  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179874>`__
5903  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
5904* `Support *_NEAR, *_FLOAT_EQ, *_DOUBLE_EQ
5905  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179770>`__
5906* `Allow googletest_test_matchers_test to run
5907  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179450>`__
5908* `Add more googletest test matchers
5909  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179151>`__
5910* `Add googletest test matchers
5911  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177878>`__
5912
5913pw_watch
5914--------
5915Support for ``httpwatcher`` was removed because it's not supported on modern
5916versions of Python.
5917
5918* `Remove httpwatcher support
5919  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179250>`__
5920  (issue `#304603192 <https://issues.pigweed.dev/issues/304603192>`__)
5921
5922pw_web
5923------
5924The log viewer has been polished and testing has been enhanced.
5925
5926* `Fix LogViewControls responsive behavior
5927  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179470>`__
5928  (issue `#308993282 <https://issues.pigweed.dev/issues/308993282>`__)
5929* `Resume autoscroll with clear logs event
5930  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179252>`__
5931* `Fix clear logs due to error thrown handling input text
5932  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176867>`__
5933* `Add manual testing page in docs
5934  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178923>`__
5935  (issue `#288587657 <https://issues.pigweed.dev/issues/288587657>`__)
5936
5937Build
5938=====
5939* `Update the default C++ standard
5940  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178913>`__
5941
5942Bazel
5943-----
5944* `Upgrade nanopb version
5945  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180871>`__
5946* `Update comment
5947  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180815>`__
5948* `Set --incompatible_default_to_explicit_init_py
5949  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180454>`__
5950  (issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__)
5951* `Make pw_cc_library an alias for cc_library
5952  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178924>`__
5953  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
5954* `Don't disable use_header_modules
5955  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178565>`__
5956  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
5957
5958Targets
5959=======
5960.. todo-check: disable
5961
5962* (``stm32f429i_disc1_stm32cube``)
5963  `Update TODO
5964  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179172>`__
5965
5966.. todo-check: enable
5967
5968Language support
5969================
5970* (Python) `Update constraint.list
5971  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179614>`__
5972* (Python) `Upgrade parameterized package
5973  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179451>`__
5974
5975Docs
5976====
5977A document about Pigweed's :ref:`docs-mission` was added. The
5978:ref:`style guide <docs-pw-style>` was split into multiple pages.
5979
5980* `Update Pigweed Live dates
5981  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181031>`__
5982* `Add mission & philosophies
5983  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178910>`__
5984* `Add Contribution Standards section
5985  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179171>`__
5986* `Add details to codependent docs
5987  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179879>`__
5988* `Update changelog
5989  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178911>`__
5990  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
5991* `Split the style guide: Doxygen & Sphinx
5992  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178912>`__
5993* `Split the style guide: C++
5994  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178952>`__
5995* `Split the style guide: commit style
5996  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178490>`__
5997
5998SEEDs
5999=====
6000* (SEED-0110) `Correct status
6001  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179436>`__
6002* (SEED-0110) `Memory Allocation Interfaces
6003  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
6004* (SEED-0113) `Add modular Bazel C/C++ toolchain API
6005  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__
6006
6007-----------
6008Nov 3, 2023
6009-----------
6010Highlights (Oct 19, 2023 to Nov 3, 2023):
6011
6012* A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented.
6013* :ref:`module-pw_format` is a new module dedicated to Rust format string parsing.
6014* The tokenizer prefix is now configurable via
6015  ``PW_TOKENIZER_NESTED_PREFIX_STR``.
6016* References to C++14 have been removed throughout the codebase. Pigweed no
6017  longer supports C++14; C++17 or newer is required.
6018* The upstream Pigweed GN build is now
6019  :ref:`more isolated <docs-changelog-20231103-pw_build>` so that downstream
6020  projects have less conflicts when importing Pigweed into their existing GN
6021  build.
6022* Build configuration is moving away from Bazel macros like ``pw_cc_library``
6023  and towards the toolchain configuration so that downstream projects can have
6024  :ref:`full control <docs-changelog-20231103-bazel>` over how Pigweed libraries
6025  are built.
6026* New guidelines for authoring module docs have been published at
6027  :ref:`docs-contrib-docs-modules`. :ref:`module-pw_string` is now an example
6028  of a "golden" module docs set that follows the new guidelines. Please leave
6029  feedback on the new guidelines (and module docs updated to follow the
6030  guidelines) in `issue #309123039 <https://issues.pigweed.dev/issues/309123039>`__.
6031
6032
6033Active SEEDs
6034============
6035Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
6036
6037* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
6038* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
6039* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
6040* `SEED-0113: Modular Bazel C/C++ Toolchain API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__
6041* `SEED-0114: Channels <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
6042* `SEED-0115: Sensors <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__
6043* `SEED-0116: Sockets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177696>`__
6044
6045Modules
6046=======
6047
6048pw_allocator
6049------------
6050The docs now have an auto-generated size report.
6051``pw::allocator::SplitFreeListAllocator`` has a new ``blocks()`` method for getting the
6052range of blocks being tracked. The class was also refactored to
6053use the existing ``Block`` API. The ``Block`` API itself was refactored to
6054encode offsets and flags into fields.
6055
6056* `Add size reporting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178370>`__
6057* `Return Range from SplitFreeListAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177807>`__
6058* `Refactor SplitFreeListAllocator to use Block <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176579>`__
6059* `Refactor Block to use encoded offsets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176578>`__
6060
6061pw_arduino_build
6062----------------
6063* `STM32 Core fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177750>`__
6064
6065pw_assert
6066---------
6067* `Update print_and_abort backend formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177845>`__
6068
6069pw_bluetooth
6070------------
6071More :ref:`Emboss <module-pw_third_party_emboss>` definitions were added.
6072
6073.. todo-check: disable
6074
6075* `Add TODO for issue 308794058 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151070>`__
6076  (issue `#308794058 <https://issues.pigweed.dev/issues/308794058>`__)
6077* `Remove anonymous entry in LEPeerAddressTypeNoAnon <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177881>`__
6078* `Separate LEAddressType and LEExtendedAddressType <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178010>`__
6079* `Define LEExtendedCreateConnectionV1 Emboss structure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176574>`__
6080  (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
6081* `Define LEEnhancedConnectionCompleteSubeventV1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176576>`__
6082  (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
6083* `Remove padding from Emboss command definitions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176772>`__
6084
6085.. todo-check: enable
6086
6087.. _docs-changelog-20231103-pw_build:
6088
6089pw_build
6090--------
6091Pigweed used to inject a selection of recommended configs into every ``pw_*``
6092C/C++ target in the GN build. These were previously only possible to remove
6093with the ``remove_configs`` argument. These configs are now bundled with
6094toolchains instead, and if you don't use a Pigweed-style toolchain you'll
6095no longer need to find ways to strip the default configs from Pigweed build rules.
6096More importantly, this changes makes Pigweed's recommended configs behave
6097identically to other toolchain configs, and they're now more clearly part of
6098GN toolchain definitions. This change is transparent to most projects, but some
6099Pigweed customers have been asking for this for a while.
6100
6101The :ref:`module-pw_build-bazel-empty_cc_library` Bazel utility was added.
6102
6103* `Add empty_cc_library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178555>`__
6104* `Remove pw_build_default_configs_in_toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177894>`__
6105* `Apply pigweed_default_configs in toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120610>`__
6106  (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
6107* `Fix blob attribute ordering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177458>`__
6108* `Only use -Wextra-semi on C++ files with GCC <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177171>`__
6109  (issues `#301262374 <https://issues.pigweed.dev/issues/306734552>`__,
6110  `#301262374 <https://issues.pigweed.dev/issues/301262374>`__)
6111* `Silence Windows-specific warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177172>`__
6112
6113pw_bytes
6114--------
6115A new ``_b`` literal was added to make it easier to create bytes for tests
6116and constants.
6117
6118* `Add _b suffix for byte literals <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178134>`__
6119
6120pw_containers
6121-------------
6122The reference docs for the variable length entry queue API in C and Python
6123were updated.
6124
6125* `Update VariableLengthEntryQueue size functions; cleanup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173454>`__
6126
6127pw_digital_io_mcuxpresso
6128------------------------
6129* `Remove RT595 size def <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178353>`__
6130
6131pw_doctor
6132---------
6133* `Trivial linter fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176939>`__
6134
6135pw_emu
6136------
6137* `renode: Show more details when failing to connect <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178563>`__
6138  (issue `#307736513 <https://issues.pigweed.dev/issues/307736513>`__)
6139
6140pw_env_setup
6141------------
6142``pip`` has been pinned to ``23.2.1`` and ``pip-tools`` to ``7.3.0`` to
6143prevent dependency resolution problems.
6144
6145* `Pin pip and pip-tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177834>`__
6146* `Update protoc to 2@24.4 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177050>`__
6147  (issue `#306461552 <https://issues.pigweed.dev/issues/306461552>`__)
6148
6149pw_format
6150---------
6151:ref:`module-pw_format` is a new module dedicated to Rust format string parsing.
6152
6153* `Correct crate name in docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178078>`__
6154* `Move Rust format string parsing into its own module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168362>`__
6155
6156pw_fuzzer
6157---------
6158* `Inline NonOkStatus() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178212>`__
6159* `Fix instrumentation config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178214>`__
6160
6161.. _docs-changelog-20231103-pw_hdlc:
6162
6163pw_hdlc
6164-------
6165Using read callbacks in ``RpcClient`` is no longer accepted and the use of
6166``CancellableReader`` is now enforced because it provides a safe and clean
6167shutdown process.
6168
6169* `Enforce use of CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173618>`__
6170  (issue `#301496598 <https://issues.pigweed.dev/issues/301496598>`__)
6171
6172pw_libcxx
6173---------
6174:ref:`module-pw_libcxx` is a new module that provides ``libcxx`` symbols and
6175will eventually facilitate pulling in headers as well.
6176
6177* `Add pw_libcxx library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144970>`__
6178
6179pw_log
6180------
6181A :ref:`module-pw_log-bazel-backend_impl` label flag was added to Bazel to
6182avoid circular dependencies.
6183
6184* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__
6185  (issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__)
6186* `Introduce backend_impl label flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177842>`__
6187  (issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__)
6188
6189pw_multibuf
6190-----------
6191A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented.
6192
6193* `Add basic MultiBuf operations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178036>`__
6194* `Add Chunk::Merge <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177636>`__
6195* `Fix TrackingAllocatorWithMemory UAF <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177694>`__
6196* `Add module and Chunk implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173951>`__
6197
6198pw_package
6199----------
6200* `Use mirror for stm32cube <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/142510>`__
6201  (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
6202* `Fix Zephyr URL <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177456>`__
6203
6204pw_presubmit
6205------------
6206A CSS formatter was added.
6207
6208* `Add basic CSS formatter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178810>`__
6209  (issue `#308948504 <https://issues.pigweed.dev/issues/308948504>`__)
6210* `Kalypsi-based coverage upload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175070>`__
6211  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
6212* `Handle missing upstream better <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177038>`__
6213  (issue `#282808936 <https://issues.pigweed.dev/issues/282808936>`__)
6214* `Trivial linter fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176939>`__
6215
6216pw_protobuf
6217-----------
6218* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__
6219  (issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__)
6220
6221pw_rpc
6222------
6223:ref:`pw::rpc::SynchronousCallFor() <module-pw_rpc-client-sync-call-wrappers>`
6224now supports :ref:`DynamicClient <module-pw_rpc_pw_protobuf-client>`.
6225
6226* `Update Java service error with tip <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178812>`__
6227  (issue `#293361955 <https://issues.pigweed.dev/issues/293361955>`__)
6228* `Support DynamicClient with SynchronousCallFor API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177637>`__
6229
6230pw_string
6231---------
6232The docs were updated to match the new :ref:`docs-contrib-docs-modules`.
6233
6234* `Docs tweaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177883>`__
6235
6236pw_sys_io
6237---------
6238Backends that depend on ``default_putget_bytes`` were updated to express the
6239dependency.
6240
6241* `Fix Bazel backends <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177656>`__
6242
6243pw_system
6244---------
6245See :ref:`docs-changelog-20231103-pw_hdlc` for an explanation of the
6246``CancellableReader`` change.
6247
6248* `Enforce use of CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173618>`__
6249  (issue `#301496598 <https://issues.pigweed.dev/issues/301496598>`__)
6250
6251pw_tls_client
6252-------------
6253* `Update to new boringssl API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178150>`__
6254
6255pw_tokenizer
6256------------
6257The tokenizer prefix is now configurable via ``PW_TOKENIZER_NESTED_PREFIX_STR``.
6258
6259* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__
6260  (issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__)
6261* `Let tokenizer prefix be configurable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177575>`__
6262
6263pw_toolchain
6264------------
6265You can now set the ``dir_pw_third_party_builtins`` GN var to your
6266``compiler-rt/builtins`` checkout to enable buildings LLVM ``builtins`` from
6267source instead of relying on a shipped ``libgcc``.
6268
6269* `Apply pigweed_default_configs in toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120610>`__
6270  (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
6271* `Build compiler-rt builtins to replace libgcc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144050>`__
6272
6273pw_unit_test
6274------------
6275* `Pass verbose flag to TestRunner <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177470>`__
6276
6277pw_web
6278------
6279* `Limit component rerendering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177810>`__
6280  (issue `#307559191 <https://issues.pigweed.dev/issues/307559191>`__)
6281
6282Build
6283=====
6284References to C++14 have been removed throughout the codebase. Pigweed no
6285longer supports C++14; C++17 or newer is required.
6286
6287* `Drop C++14 compatibility from the build and docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177610>`__
6288
6289.. _docs-changelog-20231103-bazel:
6290
6291Bazel
6292-----
6293Build configuration is moving away from Bazel macros like ``pw_cc_library``
6294and towards the toolchain configuration so that downstream projects can have
6295full control over how Pigweed libraries are built.
6296
6297* `Move Kythe copts to toolchain configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178592>`__
6298  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
6299* `Move warnings to toolchain configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178557>`__
6300  (issue `#240466562 <https://issues.pigweed.dev/issues/240466562>`__)
6301* `Silence warnings from external code <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178436>`__
6302  (issue `#300330623 <https://issues.pigweed.dev/issues/300330623>`__)
6303* `stm32cube support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177134>`__
6304* `Remove most copts from pw_cc_library macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170824>`__
6305  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
6306
6307Targets
6308=======
6309``pw_assert_BACKEND`` for :ref:`target-host` was set to
6310``print_and_abort_check_backend`` to enable compatibility with GoogleTest death
6311tests.
6312
6313* (``host``) `Change pw_assert_BACKEND <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177835>`__
6314
6315OS support
6316==========
6317* (``zephyr``) `Update checkout to v3.5 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177669>`__
6318
6319Docs
6320====
6321New guidelines for authoring module docs have been published at
6322:ref:`docs-contrib-docs-modules`. :ref:`module-pw_string` is now an example
6323of a "golden" module docs set that follows the new guidelines. Please leave
6324feedback on the new guidelines (and module docs updated to follow the
6325guidelines) in `issue #309123039 <https://issues.pigweed.dev/issues/309123039>`__.
6326
6327There's now a definition for :ref:`docs-glossary-facade` in the glossary.
6328
6329* `Update module docs authoring guidelines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177465>`__
6330* `Fix nav and main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178591>`__
6331  (issue `#303261476 <https://issues.pigweed.dev/issues/303261476>`__)
6332* `Add udev instructions to Bazel Get Started <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178435>`__
6333* `Add information on the experimental repo to contributing.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178272>`__
6334* `Mention command for updating Py dep hashes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177799>`__
6335* `Define facade in glossary <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177632>`__
6336* `Remove symlinks to files that were removed <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177530>`__
6337* `Mention upstream development guide in contributor guidelines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177459>`__
6338* `Move all images out of the repo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176751>`__
6339* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177085>`__
6340  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
6341* `Move CoC to Contributors section of sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177071>`__
6342
6343SEEDs
6344=====
6345* (SEED-0107) `Update SEED references; fix typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177698>`__
6346* (SEED-0112) `Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__
6347* (SEED-0115) `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177093>`__
6348* (SEED-0116) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177697>`__
6349
6350Third party
6351===========
6352* (nanopb) `Detect protoc updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177650>`__
6353
6354------------
6355Oct 20, 2023
6356------------
6357Highlights (Oct 5, 2023 to Oct 20, 2023):
6358
6359* ``pw_emu`` has launched! Check out :ref:`module-pw_emu` to get started.
6360  See :ref:`seed-0108` for background.
6361* :ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105`
6362  for background.
6363* The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler
6364  RAII API for allocating individual values within an allocator.
6365* A few SEEDs were accepted: :ref:`seed-0105`, :ref:`seed-0109`, and
6366  :ref:`seed-0111`.
6367* Lots of new docs, including a guide for
6368  :ref:`getting started with Bazel <docs-get-started-bazel>`, a
6369  conceptual explanation of :ref:`facades and backends <docs-facades>`,
6370  and an eng blog post detailing :ref:`Kudzu <docs-blog-01-kudzu>`, an
6371  electronic badge that the Pigweed team made for Maker Faire 2023.
6372
6373Active SEEDs
6374============
6375Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
6376
6377* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
6378* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
6379* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
6380* `SEED-0113: Modular Bazel C/C++ Toolchain API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__
6381* `SEED-0114: Channels <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
6382* `SEED-0115: Sensors <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__
6383
6384Modules
6385=======
6386
6387pw_allocator
6388------------
6389The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler
6390RAII API for allocating individual values within an allocator.
6391
6392* `Fix SplitFreeListAllocator region alignment <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175232>`__
6393* `Add UniquePtr\<T\> <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176781>`__
6394
6395pw_async
6396--------
6397* `Add CMake support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175475>`__
6398
6399pw_async_basic
6400--------------
6401* `Add missing include <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175476>`__
6402* `Fix build error when using pw_async:heap_dispatcher <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173480>`__
6403
6404pw_bluetooth
6405------------
6406* `Define LEChannelSelectionAlgorithmSubevent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176577>`__
6407* `Define LEScanTimeoutSubevent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176575>`__
6408  (issue `#265052417 <https://issues.pigweed.dev/issues/265052417>`__)
6409* `Use $size_in_bits instead of hardcoding size <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176573>`__
6410* `Switch from parameterized value to determining at run time <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176572>`__
6411  (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
6412* `Fix size reports <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173620>`__
6413
6414pw_build
6415--------
6416:ref:`module-pw_build-bazel-pw_linker_script` now describes how to work
6417with linker scripts.
6418
6419* `Update pw_linker_script docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174848>`__
6420* `Move pw_linker_script rule definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174872>`__
6421
6422pw_chre
6423-------
6424* `Remove TODOs for CHRE MacOS support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175490>`__
6425
6426pw_cli
6427------
6428* `Honor NO_COLOR and CLICOLOR_FORCE <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176860>`__
6429* `Use typing.Literal <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176778>`__
6430
6431pw_digital_io
6432-------------
6433* `Add Android.bp for proto/rpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176270>`__
6434
6435pw_emu
6436------
6437The module has launched! Check out :ref:`module-pw_emu` to get started.
6438
6439* `renode: Increase start timeout to 120s <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176865>`__
6440* `Fix pid file race condition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176782>`__
6441* `mock_emu: start listening before making the port available <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176856>`__
6442  (issue `#306155313 <https://issues.pigweed.dev/issues/306155313>`__)
6443* `qemu: Force using IPv4 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176430>`__
6444  (issue `#305810466 <https://issues.pigweed.dev/issues/305810466>`__)
6445* `Add renode support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173613>`__
6446* `Add QEMU support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173612>`__
6447* `core: Let the OS terminate foreground emulator processes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175638>`__
6448* `Add user APIs and the command line interface <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173611>`__
6449* `Add core components <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173610>`__
6450* `Add Emulators Frontend module boilerplate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162096>`__
6451
6452pw_env_setup
6453------------
6454* `Allow disabling CIPD cache <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176650>`__
6455* `Add prpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175236>`__
6456
6457pw_function
6458-----------
6459* `Move pw_function_CONFIG to .gni <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173652>`__
6460
6461pw_hdlc
6462-------
6463:ref:`module-pw_hdlc-api-rpc` now has much more information on how to use
6464``pw_hdlc`` for RPC in Python.
6465
6466* `Update Python RPC documents <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174825>`__
6467
6468pw_i2c
6469------
6470* `Fix accidental c++2a <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176511>`__
6471* `Add Android.bp for i2c proto/rpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176070>`__
6472
6473pw_kvs
6474------
6475The new ``FlashPartitionWithLogicalSectors`` variant of ``FlashPartition``
6476supports combining multiple physical ``FlashMemory`` sectors into a single
6477logical ``FlashPartition`` sector.
6478
6479* `Add FlashPartitionWithLogicalSectors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/106917>`__
6480
6481pw_log_tokenized
6482----------------
6483:ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105` for background.
6484
6485* `Add tokenized string args support to log backend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164514>`__
6486
6487pw_log_zephyr
6488-------------
6489* `Clean-up unused dependencies from TOKENIZED_LIB <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174813>`__
6490
6491pw_minimal_cpp_stdlib
6492---------------------
6493* `Support additional libraries <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173814>`__
6494* `Add Zephyr Kconfig to enable include path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173653>`__
6495
6496pw_package
6497----------
6498* `Update boringssl commit & skip clang-tidy <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175016>`__
6499* `Update Emboss commit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173619>`__
6500
6501pw_presubmit
6502------------
6503:ref:`module-pw_presubmit-presubmit-checks` has more guidance on when to use
6504``--base`` and ``--full``.
6505
6506* `Add note about --full and --base <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175633>`__
6507
6508pw_snapshot
6509-----------
6510* `More detokenization tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176759>`__
6511
6512pw_spi
6513------
6514* `Fix cmake integration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175190>`__
6515
6516pw_sync_zephyr
6517--------------
6518* `Add TimedThreadNotification::try_acquire_until <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175478>`__
6519
6520pw_system
6521---------
6522The ``Device`` class's constructor now accepts a ``logger`` argument
6523that enables you to specify which logger should be used.
6524
6525* `Add option to pass logger to Device <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175075>`__
6526
6527pw_third_party_freertos
6528-----------------------
6529* `Add arm_cm7_not_r0p1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172382>`__
6530
6531pw_thread
6532---------
6533* `More detokenization tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176759>`__
6534
6535pw_thread_freertos
6536------------------
6537* `Fix extra wakeups when detaching threads <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175310>`__
6538  (issue `#303885539 <https://issues.pigweed.dev/issues/303885539>`__)
6539
6540pw_tokenizer
6541------------
6542:ref:`module-pw_tokenizer-get-started-integration` has new guidance around
6543configuring linker scripts in Bazel.
6544
6545* `Expose linker_script in BUILD.bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175590>`__
6546
6547pw_toolchain
6548------------
6549* `Exclude googletest from static analysis <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173482>`__
6550
6551pw_transfer
6552-----------
6553* `Start the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170011>`__
6554  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
6555
6556pw_web
6557------
6558* `Reduce table cell padding <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176690>`__
6559  (issue `#305022558 <https://issues.pigweed.dev/issues/305022558>`__)
6560* `Fix invisible jump button <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175330>`__
6561* `Enable manual color scheme setting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173630>`__
6562  (issue `#301498553 <https://issues.pigweed.dev/issues/301498553>`__)
6563
6564Build
6565=====
6566* `Fix pw_BUILD_BROKEN_GROUPS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176114>`__
6567* `Update Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175631>`__
6568  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
6569
6570Bazel
6571-----
6572* `Don't autodetect C++ toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175613>`__
6573  (issue `#304880653 <https://issues.pigweed.dev/issues/304880653>`__)
6574* `Add O2 to arm_gcc toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175536>`__
6575  (issue `#299994234 <https://issues.pigweed.dev/issues/299994234>`__)
6576
6577Targets
6578=======
6579* (rp2040_pw_system) `Enable time slicing <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175074>`__
6580
6581OS support
6582==========
6583* (zephyr) `Allow direct CMake inclusions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175477>`__
6584
6585Docs
6586====
6587* `Move CoC to Contributors section of sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177071>`__
6588* `Create concepts section in sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177037>`__
6589* `Add facades and backends page <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170602>`__
6590* `Add Bazel getting started tutorial <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176319>`__
6591* `Remove css class on Kudzu image captions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176770>`__
6592* `Kudzu photos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176710>`__
6593* `Refactor the getting started section <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176331>`__
6594* `Add sitemap <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176492>`__
6595* `Add hat tip for pixel doubling technique <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175639>`__
6596* `Start eng blog and add Kudzu page <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175619>`__
6597* `Add Pigweed Live directive <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174892>`__
6598* `Add builder viz to CI/CQ intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175414>`__
6599  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
6600* `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175415>`__
6601  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
6602* `Add changelog highlight <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175231>`__
6603* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174818>`__
6604
6605SEEDs
6606=====
6607A few SEEDs were accepted and a few more started.
6608
6609* (SEED-0105) `Add nested tokens to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
6610* (SEED-0109) `Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
6611* (SEED-0111) `Update status, add link to SEED-0113 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176254>`__
6612* (SEED-0111) `Make Bazel Pigweed's Primary Build System <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__
6613* (SEED-0113) `Claim SEED number (Modular Bazel C/C++ Toolchain API) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175510>`__
6614* (SEED-0114) `Claim SEED number (Channels) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175412>`__
6615* (SEED-0115) `Clain SEED number (Sensors) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176763>`__
6616
6617Third party
6618===========
6619* (boringssl) `Remove crypto_sysrand.cc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175017>`__
6620* (fuchsia) `Copybara import <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173651>`__
6621* (fuchsia) `Update copybara with fit/defer.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173481>`__
6622
6623Miscellaneous
6624=============
6625* `Update formatting for new clang version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175311>`__
6626* `Use C++20 everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174630>`__
6627  (issue `#303371098 <https://issues.pigweed.dev/issues/303371098>`__)
6628* (revert) `Use .test convention" <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171793>`__
6629* `Add generated Emboss code <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176571>`__
6630
6631-----------
6632Oct 6, 2023
6633-----------
6634Highlights (Sep 21, 2023 to Oct 6, 2023):
6635
6636* We expanded our RP2040 support. See the new :ref:`module-pw_chrono_rp2040`
6637  and :ref:`module-pw_digital_io_rp2040` modules.
6638* The :ref:`new CancellableReader class in pw_hdlc <docs-changelog-20231009-pw_hdlc>`
6639  is an interface for receiving RPC packets that guarantees its read process can be
6640  stopped.
6641* ``pw_rpc`` now :ref:`automatically generates a new DynamicClient interface
6642  <docs-changelog-20231009-pw_rpc>` when dynamic allocation is enabled.
6643* The Python backend for ``pw_tokenizer`` now supports :ref:`tokenizing strings as
6644  arguments <docs-changelog-20231009-pw_tokenizer>`.
6645* The ``pigweed_config`` mechanism in Bazel is now officially retired.
6646
6647Active SEEDs
6648============
6649Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
6650
6651* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
6652* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
6653* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
6654* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
6655* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
6656* `SEED-0111: Make Bazel Pigweed's Primary Build System <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__
6657* `SEED-0112: Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__
6658
6659Modules
6660=======
6661
6662.. _docs-changelog-20231009-pw_allocator:
6663
6664pw_allocator
6665------------
6666We added a bunch of new allocator APIs! ``AllocatorMetricProxy`` is a wrapper for
6667``Allocator`` that tracks the number and total of current memory allocations as well
6668as peak memory usage. ``LibCAllocator`` is an allocator that uses ``malloc()`` and
6669``free()``. ``NullAllocator`` is an allocator that always fails which is useful for
6670disallowing memory allocations under certain circumstances. ``SplitFreeListAllocator``
6671uses a free list to reduce fragmentation. ``FallbackAllocator`` enables you to
6672specify primary and secondary allocators.
6673
6674* `Add Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173851>`__
6675* `Add pool accessors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173615>`__
6676* `Move Resize assertion <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173614>`__
6677* `Add AllocatorMetricProxy <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172380>`__
6678* `Add LibCAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172232>`__
6679* `Add NullAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172233>`__
6680* `Add SplitFreeListAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172231>`__
6681* `Add FallbackAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171837>`__
6682* `Generic interface for allocators <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171709>`__
6683
6684pw_analog
6685---------
6686* `Migrate MicrovoltInput to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170593>`__
6687  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
6688
6689pw_async
6690--------
6691* `Add OWNERS file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173690>`__
6692
6693pw_bloat
6694--------
6695``pw_size_report()`` has a new ``json_key_prefix`` argument which is an
6696optional prefix for key names in JSON size reports and a new
6697``full_json_summary`` argument which provides more control over how
6698much detail is provided in a JSON size report.
6699
6700* `Update API to allow verbose json content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168718>`__
6701  (issue `#282057969 <https://issues.pigweed.dev/issues/282057969>`__)
6702
6703pw_bluetooth
6704------------
6705* `Format Emboss files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174832>`__
6706* `Update comments in HCI event defs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174070>`__
6707  (issue `#265052417 <https://issues.pigweed.dev/issues/265052417>`__)
6708
6709pw_build
6710--------
6711
6712
6713* `Fix path in Bazel pw_linker_script <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174591>`__
6714* `Expose pw_linker_script in Bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174590>`__
6715  (issue `#303482154 <https://issues.pigweed.dev/issues/303482154>`__)
6716* `Define empty configs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174490>`__
6717* `Add bazel implementation of pw_cc_blob_library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173452>`__
6718  (issue `#238339027 <https://issues.pigweed.dev/issues/238339027>`__)
6719* `Clean up build_target.gni <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120215>`__
6720  (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
6721* `Allow add_global_link_deps to be overriden <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150050>`__
6722* `Expose pigweed_default_configs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173372>`__
6723  (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
6724* `Apply -Wextra-semi to C code as well as C++ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172372>`__
6725
6726pw_chre
6727-------
6728* `Update bug numbers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172330>`__
6729
6730pw_chrono
6731---------
6732* `Add clarification to is_nmi_safe <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174573>`__
6733
6734pw_chrono_rp2040
6735----------------
6736This module is a new ``pw::chrono::SystemClock`` backend for RP2040.
6737
6738* `System clock backend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174651>`__
6739
6740pw_cli
6741------
6742* `Update requires script <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126101>`__
6743* `Narrow logic around colors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173232>`__
6744
6745pw_containers
6746-------------
6747There's a new C implementation for ``VariableLengthEntryDeque`` which is a
6748double-ended queue buffer that stores variable-length entries inline in a
6749circular (ring) buffer. The old ``VariableLengthEntryDeque`` was renamed
6750to ``VariableLengthEntryQueue``.
6751
6752* `Add missing <utility> include for std::move <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173879>`__
6753* `Rename to VariableLengthEntryQueue <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173451>`__
6754* `Rename files to variable_length_entry_queue <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173450>`__
6755* `VariableLengthEntryDeque Entry struct <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173130>`__
6756* `VariableLengthEntryDeque C implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169731>`__
6757
6758pw_digital_io_rp2040
6759--------------------
6760This module is a new RP2040 backend for ``pw_digital_io``.
6761
6762* `Implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173550>`__
6763  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
6764
6765pw_env_setup
6766------------
6767We made the Pigweed bootstrap process on Windows more robust.
6768
6769* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172416>`__
6770  (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
6771* `Better highlight bootstrap failure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172415>`__
6772* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__
6773  (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
6774
6775.. _docs-changelog-20231009-pw_hdlc:
6776
6777pw_hdlc
6778-------
6779The new ``CancellableReader`` class is a new interface for receiving RPC
6780packets that guarantees its read process can be stopped.
6781
6782* `Add CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172051>`__
6783  (issue `#294858483 <https://issues.pigweed.dev/issues/294858483>`__)
6784
6785pw_i2c
6786------
6787* `Fix docs to use MakeExpectedTransactionArray <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173570>`__
6788* `Add cmake integration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172210>`__
6789
6790pw_kvs
6791------
6792The new ``FlashPartitionWithLogicalSectors`` C++ class supports combining
6793multiple physical ``FlashMemory`` sectors into a single logical
6794``FlashPartition`` sector.
6795
6796* `Add FlashPartitionWithLogicalSectors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/106917>`__
6797
6798pw_libc
6799-------
6800* `Don't implicitly link against global link_deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150051>`__
6801
6802pw_metric
6803---------
6804* `Make constructors constexpr <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172379>`__
6805
6806pw_minimal_cpp_stdlib
6807---------------------
6808* `Update to compile with stdcompat <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173350>`__
6809* `Namespace public/internal to module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173692>`__
6810
6811pw_perf_test
6812------------
6813* `Gate on pw_chrono_SYSTEM_TIMER_BACKEND <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174650>`__
6814
6815pw_presubmit
6816------------
6817* `Allow dots in module part of commit message <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174232>`__
6818* `Use autodoc for context classes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169119>`__
6819* `Allow passing kwargs to build.bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173853>`__
6820  (issue `#302045722 <https://issues.pigweed.dev/issues/302045722>`__)
6821* `No env_with_clang_vars with bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173656>`__
6822
6823pw_ring_buffer
6824--------------
6825* `Minor build and docs updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173030>`__
6826
6827.. _docs-changelog-20231009-pw_rpc:
6828
6829pw_rpc
6830------
6831If dynamic allocation is enabled via ``PW_RPC_DYNAMIC_ALLOCATION`` a new
6832``DynamicClient`` is now generated which dynamically allocates the call
6833object with ``PW_RPC_MAKE_UNIQUE_PTR``.
6834
6835* `Generate DynamicClient that dynamically allocates call objects <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168534>`__
6836* `Add CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172051>`__
6837  (issue `#294858483 <https://issues.pigweed.dev/issues/294858483>`__)
6838
6839pw_rpc_transport
6840----------------
6841* `Add a test loopback service registry <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171114>`__
6842  (issue `#300663813 <https://issues.pigweed.dev/issues/300663813>`__)
6843
6844pw_stream
6845---------
6846``pw_stream`` now has initial support for ``winsock2``.
6847
6848* `Add Windows socket support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172413>`__
6849
6850pw_sys_io_rp2040
6851----------------
6852* `Renamed from pw_sys_io_pico <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174910>`__
6853
6854.. _docs-changelog-20231009-pw_tokenizer:
6855
6856pw_tokenizer
6857------------
6858The Python backend now supports nested hashing tokenization. See
6859:ref:`module-pw_tokenizer-nested-arguments`.
6860
6861* `Support nested hashing tokenization (python backend) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/145339>`__
6862  (issue `#278890205 <https://issues.pigweed.dev/issues/278890205>`__)
6863* `Test for C99 support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170150>`__
6864
6865pw_toolchain
6866------------
6867* `Add libc stub for gettimeofday, update visibility rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173850>`__
6868* `Link against pw_libc for host clang toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151439>`__
6869
6870pw_transfer
6871-----------
6872* `Start the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170011>`__
6873  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
6874* `Remove old test server <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172951>`__
6875  (issue `#234875234 <https://issues.pigweed.dev/issues/234875234>`__)
6876
6877pw_unit_test
6878------------
6879* `Do not print contents of unknown objects <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174911>`__
6880* `Add more pw_unit_test_TESTONLY args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173670>`__
6881  (issue `#234873207 <https://issues.pigweed.dev/issues/234873207>`__)
6882* `Add pw_unit_test_TESTONLY build arg <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171970>`__
6883  (issue `#234873207 <https://issues.pigweed.dev/issues/234873207>`__)
6884
6885pw_watch
6886--------
6887* `Add link to served docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173456>`__
6888
6889pw_web
6890------
6891* `Make ongoing transfers accessible downstream <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174231>`__
6892* `TypeScript workarounds for disambiguation errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173590>`__
6893* `Throw error as an Error type <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173051>`__
6894* `Remove need for Buffer package in pw_hdlc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172377>`__
6895* `Remove date-fns <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172371>`__
6896
6897Build
6898=====
6899* `Fix extended default group <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174574>`__
6900  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
6901* `Fix \`all\` target in GN build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173050>`__
6902* `Add an extended default group <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/110391>`__
6903
6904Bazel
6905-----
6906* `Retire pigweed_config (part 3) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172411>`__
6907* `Retire pigweed_config (part 2) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170058>`__
6908  (issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__)
6909
6910Docs
6911====
6912We started a :ref:`glossary <docs-glossary>` and added new docs about
6913:ref:`rollers <docs-rollers>` and :ref:`CI/CQ <docs-ci-cq-intro>`.
6914
6915* `Add docs on rollers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174770>`__
6916  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
6917* `Remove redundant auto-submit section <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174890>`__
6918  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
6919* `Reformat CI/CQ Intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174870>`__
6920  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
6921* `Move CI/CQ Intro to infra/ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174776>`__
6922  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
6923* `Address comments on CI/CQ intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173932>`__
6924  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
6925* `Tidy up build system docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173658>`__
6926* `Fix typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173872>`__
6927* `Add CI/CQ Intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173455>`__
6928  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
6929* `Add policy on incomplete docs changes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173617>`__
6930* `Start the glossary <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172952>`__
6931* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172810>`__
6932  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
6933* `Add Doxygen @endcode guidance <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172470>`__
6934
6935SEEDs
6936=====
6937* (SEED-0112) `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174771>`__
6938
6939Miscellaneous
6940=============
6941
6942pigweed.json
6943------------
6944* `Exclude patches.json from formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174230>`__
6945  (issue `#232234662 <https://issues.pigweed.dev/issues/232234662>`__)
6946
6947------------
6948Sep 22, 2023
6949------------
6950Highlights (Sep 07, 2023 to Sep 22, 2023):
6951
6952* ``pw_tokenizer`` has :ref:`new C++ methods for detokenizing
6953  Base64-encoded strings and new C functions for manually encoding tokenized
6954  messages that contain integers <docs-changelog-pw_tokenizer-20230922>`.
6955* ``pw::rpc::SynchronousCall`` now supports the use of :ref:`custom response message
6956  classes <docs-changelog-pw_rpc-20230922>`.
6957* The C API for ``pw_varint`` got :ref:`lots of ergonomic improvements
6958  <docs-changelog-pw_varint-20230922>`.
6959* The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code
6960  review process.
6961
6962Active SEEDs
6963============
6964Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
6965
6966* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
6967* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
6968* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
6969* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
6970* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
6971* `SEED-0111: Future of Pigweed build systems <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__
6972* `SEED-0112: Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__
6973
6974Modules
6975=======
6976
6977pw function
6978-----------
6979* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__
6980  (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
6981
6982pw perf_test
6983------------
6984* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__
6985  (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
6986
6987pw_analog
6988---------
6989* `Migrate AnalogInput to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170511>`__
6990  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
6991
6992pw_async
6993--------
6994The ``Run*()`` methods of ``FakeDispatcher`` now return a boolean that indicates
6995whether any tasks were invoked.
6996
6997* `Return bool from FakeDispatcher Run*() methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170599>`__
6998
6999pw_async_basic
7000--------------
7001``release()`` is now only called outside of locked contexts to prevent an
7002issue where the thread wakes up and then immediately goes back to sleep.
7003An unnecessary 5-second wakeup has been removed from ``BasicDispatcher``.
7004
7005* `release outside of lock context <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171103>`__
7006* `Remove unnecessary 5-second wakeup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171102>`__
7007
7008pw_base64
7009---------
7010The new ``pw::base64::IsValidChar()`` method can help you determine if a
7011character is valid Base64.
7012
7013* `Add base64 detokenizer handler <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165010>`__
7014
7015pw_bluetooth
7016------------
7017More :ref:`Emboss <module-pw_third_party_emboss>` definitions were added.
7018
7019* `Add ReadLocalSupportedCommandsCommandCompleteEvent Emboss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169877>`__
7020* `Add LEReadLocalSupportedFeaturesCommandCompleteEvent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169931>`__
7021* `Add ReadBufferSizeCommandComplete Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169869>`__
7022* `Add ReadBdAddrCommandCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170052>`__
7023* `Add ReadLocalVersionInfoCommandCompleteEvent Emboss def <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169951>`__
7024* `Add LELongTermKeyRequestSubevent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169950>`__
7025* `Add UserPasskeyNotificationEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169917>`__
7026
7027pw_build
7028--------
7029* `Apply -Wextra-semi to C code as well as C++ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172372>`__
7030
7031pw_bytes
7032--------
7033The ``AlignDown()``, ``AlignUp()``, and ``Padding()`` methods of ``pw_kvs``
7034have moved to ``pw_bytes`` to enable ``pw_allocator`` to use them without
7035taking a dependency on ``pw_kvs``.
7036
7037* `Move Align functions from pw_kvs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171831>`__
7038
7039pw_checksum
7040-----------
7041* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__
7042  (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
7043
7044pw_chre
7045-------
7046The implementation of a module that will enable to work more seamlessly with
7047Android's `Context Hub Runtime Environment <https://source.android.com/docs/core/interaction/contexthub>`__
7048has begun.
7049
7050* `Update bug numbers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172330>`__
7051* `Minor fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171851>`__
7052  (issue `#301079509 <https://issues.pigweed.dev/issues/301079509>`__)
7053* `Fix build rules to use paramertized paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171850>`__
7054  (issue `#298474212 <https://issues.pigweed.dev/issues/298474212>`__)
7055* `Split out shared_platform <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170791>`__
7056* `Write our own version.cc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170790>`__
7057  (issue `#300633363 <https://issues.pigweed.dev/issues/300633363>`__)
7058* `Add barebones CHRE <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162510>`__
7059  (issue `#294106526 <https://issues.pigweed.dev/issues/294106526>`__)
7060
7061pw_console
7062----------
7063When invoking ``pw_console`` directly from Python, you can now provide arguments
7064through an ``argparse.Namespace`` instead of messing with ``sys.argv`` or forking
7065another process.
7066
7067* `Allow injecting args via Python call <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172414>`__
7068
7069pw_containers
7070-------------
7071`MemorySanitizer <https://github.com/google/sanitizers/wiki/MemorySanitizer>`__ has
7072been disabled in some of the ``InlineDeque`` implementation to prevent some false
7073positive detections of uninitialized memory reads.
7074
7075* `Silence MSAN false positives <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171990>`__
7076
7077pw_env_setup
7078------------
7079Work continues on making the Windows bootstrap process more robust.
7080
7081* `Better highlight bootstrap failure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172415>`__
7082* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__
7083  (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
7084* `Enable overriding Clang CIPD version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171838>`__
7085* `PyPI version bump to 0.0.15 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171836>`__
7086* `Add relative_pigweed_root to pigweed.json <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171218>`__
7087  (issue `#300632028 <https://issues.pigweed.dev/issues/300632028>`__)
7088* `Roll cipd to 0f08b927516 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170452>`__
7089
7090pw_function
7091-----------
7092The documentation has been updated for accuracy.
7093
7094* `Update config.h comments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171250>`__
7095* `Add configurable Allocator default <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171130>`__
7096* `Update example to match guidelines for parameters <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170651>`__
7097* `Add Allocator injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170190>`__
7098
7099pw_fuzzer
7100---------
7101Conditional logic around fuzzing support has been refactored to allow for
7102dedicated targets based on specific conditions and to make it clearer
7103exactly what configurations and dependencies are being used.
7104
7105* `Refactor conditional GN targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169712>`__
7106
7107pw_ide
7108------
7109* `Reformat json files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172310>`__
7110* `Fix clangd path on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171099>`__
7111* `Move VSC extension into npm package dir <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170995>`__
7112
7113pw_libc
7114-------
7115The initial implementation work continues.
7116
7117* `Pull in 'abort' <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/138518>`__
7118* `Use .test convention <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171793>`__
7119* `Use underscore prefixed variables <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171792>`__
7120* `Add documentation for pw_libc_source_set <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171693>`__
7121* `Pull in 'gmtime' <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137699>`__
7122* `Fix printf for newer llvm-libc commits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170831>`__
7123* `Fix llvm-libc after internal assert changes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168830>`__
7124
7125pw_log
7126------
7127The implementation work continues to enable an Android component to read logs
7128from a component running the ``pw_log_rpc`` service.
7129
7130* `Update Android.bp to generate RPC header files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169530>`__
7131  (issue `#298693458 <https://issues.pigweed.dev/issues/298693458>`__)
7132
7133pw_log_string
7134-------------
7135* `Fix the default impl to handle zero length va args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169975>`__
7136
7137pw_package
7138----------
7139Mirrors are now being used for various third-party dependencies.
7140
7141* `Use mirror for zephyrproject-rtos/zephyr <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170355>`__
7142  (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
7143* `Use Pigweed mirror for google/emboss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170356>`__
7144  (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
7145* `Use mirror for raspberrypi/picotool <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170040>`__
7146  (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
7147
7148pw_polyfill
7149-----------
7150* `Increase __GNUC__ for __constinit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171150>`__
7151  (issue `#300478321 <https://issues.pigweed.dev/issues/300478321>`__)
7152
7153pw_presubmit
7154------------
7155A new JSON formatting check has been added. The missing newline check has been
7156made more robust.
7157
7158* `Add JSON formatter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171991>`__
7159* `Better handling of missing newlines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172230>`__
7160  (issue `#301315329 <https://issues.pigweed.dev/issues/301315329>`__)
7161* `Expand Bazel parser to tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171890>`__
7162* `Remove now-unnecessary flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171670>`__
7163  (issue `#271299438 <https://issues.pigweed.dev/issues/271299438>`__)
7164* `Additional functions for handling gn args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170594>`__
7165* `Include bazel_build in full program <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170056>`__
7166
7167pw_protobuf
7168-----------
7169* `Fix "Casting..." heading level <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171030>`__
7170
7171.. _docs-changelog-pw_rpc-20230922:
7172
7173pw_rpc
7174------
7175``pw::rpc::SynchronousCall`` now supports the use of custom response message
7176classes that set field callbacks in their constructor. See
7177:ref:`module-pw_rpc-client-sync-call-wrappers`.
7178
7179.. todo-check: disable
7180
7181* `Refer to bug in TODO and fix format <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172453>`__
7182* `Support custom response messages in SynchronousCall <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170041>`__
7183  (issue `#299920227 <https://issues.pigweed.dev/issues/299920227>`__)
7184* `Add fuzz tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/143474>`__
7185
7186.. todo-check: enable
7187
7188pw_stream
7189---------
7190* `Add Windows socket support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172413>`__
7191
7192pw_string
7193---------
7194* `Fix signed integer overflow <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171839>`__
7195
7196pw_system
7197---------
7198* `Add arm_none_eabi_gcc_support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158730>`__
7199
7200pw_thread
7201---------
7202* `Fix small typo in docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171750>`__
7203
7204.. _docs-changelog-pw_tokenizer-20230922:
7205
7206pw_tokenizer
7207------------
7208``pw::tokenizer::Detokenizer`` has new ``DetokenizeBase64Message()`` and
7209``DetokenizeBase64()`` methods for detokenizing Base64-encoded strings.
7210The new ``pw_tokenizer_EncodeInt()`` and ``pw_tokenizer_EncodeInt64()``
7211functions in the C API make it easier to manually encode tokenized messages
7212with integers from C.
7213
7214* `C++ Base64 detokenization improvements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171675>`__
7215* `Add base64 detokenizer handler <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165010>`__
7216* `C functions for encoding arguments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169976>`__
7217
7218pw_toolchain
7219------------
7220``arm_gcc`` now supports Cortex-M33.
7221
7222* `Add missing objcopy tool to bazel toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171697>`__
7223  (issue `#301004620 <https://issues.pigweed.dev/issues/301004620>`__)
7224* `Add cpu flags to asmopts as well <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171671>`__
7225* `Add cortex-m33 support to arm_gcc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171237>`__
7226
7227pw_toolchain_bazel
7228------------------
7229* `Support ar opts in pw_toolchain_features <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171673>`__
7230* `Add cortex-m7 constraint_value <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171071>`__
7231  (issue `#300467616 <https://issues.pigweed.dev/issues/300467616>`__)
7232
7233.. _docs-changelog-pw_varint-20230922:
7234
7235pw_varint
7236---------
7237The C encoding functions now have an output size argument, making them much
7238easier to use. There's a new macro for calculating the encoded size of an
7239integer in a C constant expression. Incremental versions of the encode and
7240decode functions have been exposed to support in-place encoding and decoding
7241with non-contiguous buffers.
7242
7243* `C API updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170050>`__
7244
7245pw_web
7246------
7247The ``ProgressStats`` and ``ProgressCallback`` types are now exported.
7248Styling and scrolling behavior in the log viewer has been improved.
7249
7250* `Remove need for Buffer package in pw_hdlc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172377>`__
7251* `Remove date-fns <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172371>`__
7252* `Export ProgressStats, ProgressCallback types <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171707>`__
7253* `Add back 'buffer' dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171891>`__
7254* `NPM version bump to 0.0.13 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171110>`__
7255* `Improve scrolling behavior <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171290>`__
7256  (issue `#298097109 <https://issues.pigweed.dev/issues/298097109>`__)
7257* `Fix leading white spaces, scrollbar size, and filters in quotes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170811>`__
7258* `NPM version bump to 0.0.12 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170597>`__
7259* `Fix column sizing & toggling, update UI <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169591>`__
7260* `Replace Map() with object in proto collection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170493>`__
7261
7262pw_work_queue
7263-------------
7264* `Don't lock around work_notification_ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170450>`__
7265* `Migrate API reference to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169830>`__
7266  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
7267
7268Build
7269=====
7270* `Update Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171510>`__
7271
7272Bazel
7273-----
7274* `Add platform-printing aspect <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/122974>`__
7275* `Retire pigweed_config (part 2) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170058>`__
7276  (issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__)
7277* `Retire pigweed_config (part 1) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168721>`__
7278  (issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__)
7279* `Remove -Wno-private-header from copts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170951>`__
7280  (issue `#240466562 <https://issues.pigweed.dev/issues/240466562>`__)
7281* `Remove bazelembedded dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170650>`__
7282  (issue `#297239780 <https://issues.pigweed.dev/issues/297239780>`__)
7283* `Move cxxopts out of bazelrc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170639>`__
7284  (issue `#269195628 <https://issues.pigweed.dev/issues/269195628>`__)
7285* `Use the same clang version as in GN <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170638>`__
7286* `Arm gcc configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168192>`__
7287  (issue `#297239780 <https://issues.pigweed.dev/issues/297239780>`__)
7288
7289Targets
7290=======
7291* `Fix pico_sdk elf2uf2 on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170770>`__
7292* `Add pw_strict_host_clang_debug_dynamic_allocation tc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171674>`__
7293
7294Docs
7295====
7296The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code
7297review process.
7298
7299* `Add Doxygen @endcode guidance <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172470>`__
7300* `Clean up remaining instances of code:: <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172050>`__
7301  (issue `#300317685 <https://issues.pigweed.dev/issues/300317685>`__)
7302* `Document code review process <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171774>`__
7303* `Add link to in-progress hardware targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171239>`__
7304* `Fix link title for pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170670>`__
7305* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170055>`__
7306  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
7307
7308SEEDs
7309=====
7310* `Update process document <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170390>`__
7311* (SEED-0104) `Display Support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
7312* (SEED-0109) `Make link externally accessible <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170043>`__
7313* (SEED-0110) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170038>`__
7314* (SEED-0111) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171672>`__
7315* (SEED-0112) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168359>`__
7316
7317Third party
7318===========
7319* `Add public configs for FuzzTest deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169711>`__
7320
7321third_party/fuchsia
7322-------------------
7323* `Copybara import <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171010>`__
7324* `Update patch script and patch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170890>`__
7325* `Update patch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170794>`__
7326* `Support specifying the Fuchsia repo to use <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170170>`__
7327
7328third_party/pico_sdk
7329--------------------
7330* `Selectively disable elf2uf2 warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171072>`__
7331  (issue `#300474559 <https://issues.pigweed.dev/issues/300474559>`__)
7332* `Fix multicore source filename <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170330>`__
7333
7334Miscellaneous
7335=============
7336.. todo-check: disable
7337
7338* `Use new TODO style <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170730>`__
7339* `Add toolchain team members <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172170>`__
7340* `Fix double bootstrap.bat failures on Windows" <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__
7341  (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
7342
7343.. todo-check: enable
7344
7345-----------
7346Sep 8, 2023
7347-----------
7348Highlights (Aug 25, 2023 to Sep 8, 2023):
7349
7350* SEED :ref:`seed-0107` has been approved! Pigweed will adopt a new sockets API as
7351  its primary networking abstraction. The sockets API will be backed by a new,
7352  lightweight embedded-focused network protocol stack inspired by TCP/IP.
7353* SEED :ref:`seed-0108` has also been approved! Coming soon, the new ``pw_emu``
7354  module will make it easier to work with emulators.
7355
7356Active SEEDs
7357============
7358Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
7359
7360* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
7361* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
7362* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
7363* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
7364* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
7365
7366Modules
7367=======
7368
7369pw_assert
7370---------
7371We fixed circular dependencies in Bazel.
7372
7373* `Remove placeholder target <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168844>`__
7374* `Fix Bazel circular deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160794>`__
7375  (issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__)
7376* `Introduce pw_assert_backend_impl <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168774>`__
7377  (issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__)
7378
7379pw_bluetooth
7380------------
7381We added :ref:`Emboss <module-pw_third_party_emboss>` definitions.
7382
7383* `Add SimplePairingCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169916>`__
7384* `Add UserPasskeyRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169912>`__
7385* `Add UserConfirmationRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169871>`__
7386* `Use hci.LinkKey in LinkKeyNotificationEvent.link_key <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168858>`__
7387* `Add IoCapabilityResponseEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168354>`__
7388* `Add IoCapabilityRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168353>`__
7389* `Add EncryptionKeyRefreshCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168331>`__
7390* `Add ExtendedInquiryResultEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168330>`__
7391
7392pw_build
7393--------
7394* `Force watch and default recipe names <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169911>`__
7395
7396pw_build_mcuxpresso
7397-------------------
7398* `Output formatted bazel target <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169740>`__
7399
7400pw_cpu_exception
7401----------------
7402We added Bazel support.
7403
7404* `bazel build support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169733>`__
7405  (issue `#242183021 <https://issues.pigweed.dev/issues/242183021>`__)
7406
7407pw_crypto
7408---------
7409The complete ``pw_crypto`` API reference is now documented on :ref:`module-pw_crypto`.
7410
7411* `Add API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169572>`__
7412  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
7413
7414pw_env_setup
7415------------
7416Banners should not print correctly on Windows.
7417
7418* `Add i2c protos to python deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169231>`__
7419* `Fix banner printing on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169172>`__
7420  (issue `#289008307 <https://issues.pigweed.dev/issues/289008307>`__)
7421
7422pw_file
7423-------
7424* `Add pw_file python package <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168831>`__
7425
7426pw_function
7427-----------
7428The :cpp:func:`pw::bind_member()` template is now exposed in the public API.
7429``bind_member()`` is useful for binding the ``this`` argument of a callable.
7430We added a section to the docs explaining :ref:`why pw::Function is not a
7431literal <module-pw_function-non-literal>`.
7432
7433* `Explain non-literal design rationale <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168777>`__
7434* `Expose \`bind_member\` <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169123>`__
7435
7436pw_fuzzer
7437---------
7438We refactored ``pw_fuzzer`` logic to be more robust and expanded the
7439:ref:`module-pw_fuzzer-guides-reproducing_oss_fuzz_bugs` doc.
7440
7441* `Refactor OSS-Fuzz support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167348>`__
7442  (issue `#56955 <https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56955>`__)
7443
7444pw_i2c
7445------
7446* `Use new k{FieldName}MaxSize constants to get buffer size <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168913>`__
7447
7448pw_kvs
7449------
7450We are discouraging the use of the shorter macros because they collide with
7451Abseil's logging API.
7452
7453* `Remove usage of pw_log/shorter.h API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169920>`__
7454  (issue `#299520256 <https://issues.pigweed.dev/issues/299520256>`__)
7455
7456pw_libc
7457-------
7458``snprintf()`` support was added.
7459
7460* `Import LLVM libc's snprintf <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137735>`__
7461
7462pw_log_string
7463-------------
7464We added more detail to :ref:`module-pw_log_string`.
7465
7466* `Fix the default impl to handle zero length va args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169975>`__
7467* `Provide more detail in the getting started docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168934>`__
7468  (issue `#298124226 <https://issues.pigweed.dev/issues/298124226>`__)
7469
7470pw_log_zephyr
7471-------------
7472It's now possible to define ``pw_log_tokenized_HandleLog()`` outside of Pigweed
7473so that Zephyr projects have more flexibility around how they capture tokenized
7474logs.
7475
7476* `Split tokenize handler into its own config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168612>`__
7477
7478pw_package
7479----------
7480* `Handle failed cipd acl checks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168530>`__
7481
7482pw_persistent_ram
7483-----------------
7484* `Add persistent_buffer flat_file_system_entry <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168832>`__
7485
7486pw_presubmit
7487------------
7488We added a reStructuredText formatter.
7489
7490* `Make builds_from_previous_iteration ints <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169721>`__
7491  (issue `#299336222 <https://issues.pigweed.dev/issues/299336222>`__)
7492* `Move colorize_diff to tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168839>`__
7493* `RST formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168541>`__
7494
7495pw_protobuf
7496-----------
7497``max_size`` and ``max_count`` are now exposed in generated headers.
7498The new ``proto_message_field_props()`` helper function makes it easier to
7499iterate through a messages fields and properties.
7500
7501* `Expose max_size, max_count in generated header file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168973>`__
7502  (issue `#297364973 <https://issues.pigweed.dev/issues/297364973>`__)
7503* `Introduce proto_message_field_props() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168972>`__
7504* `Change PROTO_FIELD_PROPERTIES to a dict of classes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168971>`__
7505* `Rename 'node' to 'message' in forward_declare() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168970>`__
7506* `Simplify unnecessary Tuple return type <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168910>`__
7507
7508pw_random
7509---------
7510We're now auto-generating the ``XorShiftStarRng64`` API reference via Doxygen.
7511
7512* `Doxygenify xor_shift.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164510>`__
7513
7514pw_rpc
7515------
7516The new ``request_completion()`` method in Python enables you to send a
7517completion packet for server streaming calls.
7518
7519* `Add request_completion to ServerStreamingCall python API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168439>`__
7520
7521pw_spi
7522------
7523* `Fix Responder.SetCompletionHandler() signature <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169130>`__
7524
7525pw_symbolizer
7526-------------
7527The ``LlvmSymbolizer`` Python class has a new ``close()`` method to
7528deterministically close the background process.
7529
7530* `LlvmSymbolizer tool improvement <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168863>`__
7531
7532pw_sync
7533-------
7534We added :ref:`module-pw_sync-genericbasiclockable`.
7535
7536* `Add GenericBasicLockable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165930>`__
7537
7538pw_system
7539---------
7540``pw_system`` now supports different channels for primary and logging RPC.
7541
7542* `Multi-channel configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167158>`__
7543  (issue `#297076185 <https://issues.pigweed.dev/issues/297076185>`__)
7544
7545pw_thread_freertos
7546------------------
7547* `Add missing dep to library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169239>`__
7548
7549pw_tokenizer
7550------------
7551We added :c:macro:`PW_TOKENIZE_FORMAT_STRING_ANY_ARG_COUNT` and
7552:c:macro:`PW_TOKENIZER_REPLACE_FORMAT_STRING`. We refactored the docs
7553so that you don't have to jump around the docs as much when learning about
7554key topics like tokenization and token databases. Database loads now happen
7555in a separate thread to avoid blocking the main thread. Change detection for
7556directory databases now works more as expected. The config API is now exposed
7557in the API reference.
7558
7559* `Remove some unused deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169573>`__
7560* `Simplify implementing a custom tokenization macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169121>`__
7561* `Refactor the docs to be task-focused <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169124>`__
7562* `Reload database in dedicated thread <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168866>`__
7563* `Combine duplicated docs sections <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168865>`__
7564* `Support change detection for directory dbs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168630>`__
7565* `Move config value check to .cc file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168615>`__
7566
7567pw_unit_test
7568------------
7569We added ``testing::Test::HasFailure()``, ``FRIEND_TEST``, and ``<<`` messages
7570to improve gTest compatibility.
7571
7572* `Add testing::Test::HasFailure() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168810>`__
7573* `Add FRIEND_TEST <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169270>`__
7574* `Allow <<-style messages in test expectations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168860>`__
7575
7576pw_varint
7577---------
7578``pw_varint`` now has a :ref:`C-only API <module-pw_varint-api-c>`.
7579
7580* `Add C-only implementation; cleanup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169122>`__
7581
7582pw_web
7583------
7584Logs can now be downloaded as plaintext.
7585
7586* `Fix TypeScript errors in Device files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169930>`__
7587* `Json Log Source example <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169176>`__
7588* `Enable downloading logs as plain text <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168130>`__
7589* `Fix UI/state bugs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167911>`__
7590* `NPM version bump to 0.0.11 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168591>`__
7591* `Add basic bundling tests for log viewer bundle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168539>`__
7592
7593Build
7594=====
7595
7596Bazel
7597-----
7598* `Fix alwayslink support in MacOS host_clang <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168614>`__
7599  (issue `#297413805 <https://issues.pigweed.dev/issues/297413805>`__)
7600* `Fix lint issues after roll <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169611>`__
7601
7602Docs
7603====
7604* `Fix broken links <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169579>`__
7605  (issue `#299181944 <https://issues.pigweed.dev/issues/299181944>`__)
7606* `Recommend enabling long file paths on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169578>`__
7607* `Update Windows command for git hook <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168592>`__
7608* `Fix main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168555>`__
7609  (issue `#297384789 <https://issues.pigweed.dev/issues/297384789>`__)
7610* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168540>`__
7611  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
7612* `Use code-block:: instead of code:: everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168617>`__
7613* `Add function signature line breaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168554>`__
7614* `Cleanup indentation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168537>`__
7615
7616SEEDs
7617=====
7618* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
7619
7620Third party
7621===========
7622* `Add public configs for FuzzTest deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169711>`__
7623* `Reconfigure deps & add cflags to config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152691>`__
7624
7625Miscellaneous
7626=============
7627* `Fix formatting with new clang version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169078>`__
7628
7629mimxrt595_evk_freertos
7630----------------------
7631* `Use config_assert helper <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160378>`__
7632
7633------------
7634Aug 25, 2023
7635------------
7636Highlights (Aug 11, 2023 to Aug 25, 2023):
7637
7638* ``pw_tokenizer`` now has Rust support.
7639* The ``pw_web`` log viewer now has advanced filtering and a jump-to-bottom
7640  button.
7641* The ``run_tests()`` method of ``pw_unit_test`` now returns a new
7642  ``TestRecord`` dataclass which provides more detailed information
7643  about the test run.
7644* A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS
7645  has been added.
7646
7647Active SEEDs
7648============
7649Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
7650
7651* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
7652* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
7653* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
7654* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
7655* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
7656
7657Modules
7658=======
7659
7660pw_bloat
7661--------
7662* `Fix typo in method name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166832>`__
7663
7664pw_bluetooth
7665------------
7666The :ref:`module-pw_third_party_emboss` files were refactored.
7667
7668* `Add SynchronousConnectionCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167862>`__
7669* `Add all Emboss headers/deps to emboss_test & fix errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168355>`__
7670* `Add InquiryResultWithRssiEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167859>`__
7671* `Add DataBufferOverflowEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167858>`__
7672* `Add LinkKeyNotificationEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167855>`__
7673* `Add LinkKeyRequestEvent emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167349>`__
7674* `Remove unused hci emboss files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167090>`__
7675* `Add RoleChangeEvent emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167230>`__
7676* `Add missing test dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167130>`__
7677* `Add new hci subset files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166730>`__
7678
7679pw_build
7680--------
7681The ``pw_build`` docs were split up so that each build system has its own page
7682now. The new ``output_logs`` flag enables you to not output logs for ``pw_python_venv``.
7683
7684* `Handle read-only files when deleting venvs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167863>`__
7685* `Split build system docs into separate pages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165071>`__
7686* `Use pw_toolchain_clang_tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167671>`__
7687* `Add missing pw_linker_script flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167632>`__
7688  (issue `#296928739 <https://issues.pigweed.dev/issues/296928739>`__)
7689* `Fix output_logs_ unused warning <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166991>`__
7690  (issue `#295524695 <https://issues.pigweed.dev/issues/295524695>`__)
7691* `Don't include compile cmds when preprocessing ldscripts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166490>`__
7692* `Add pw_python_venv.output_logs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165330>`__
7693  (issue `#295524695 <https://issues.pigweed.dev/issues/295524695>`__)
7694* `Increase size of test linker script memory region <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164823>`__
7695* `Add integration test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154553>`__
7696
7697pw_cli
7698------
7699* `Default change pw_protobuf default <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126806>`__
7700  (issue `#266298474 <https://issues.pigweed.dev/issues/266298474>`__)
7701
7702pw_console
7703----------
7704* `Update web viewer to use pigweedjs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162995>`__
7705
7706pw_containers
7707-------------
7708* `Silence MSAN false positive in pw::Vector <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167111>`__
7709
7710pw_docgen
7711---------
7712Docs builds should be faster now because Sphinx has been configured to use
7713all available cores.
7714
7715* `Remove top nav bar <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168446>`__
7716* `Parallelize Sphinx <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164738>`__
7717
7718pw_env_setup
7719------------
7720Sphinx was updated from v5.3.0 to v7.1.2. We switched back to the upstream Furo
7721theme and updated to v2023.8.19. The content of ``pigweed_environment.gni`` now
7722gets logged. There was an update to ensure that ``arm-none-eabi-gdb`` errors
7723propagate correctly. There is now a way to override Bazel build files for CIPD
7724repos.
7725
7726* `Upgrade sphinx and dependencies for docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168431>`__
7727* `Upgrade sphinx-design <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168339>`__
7728* `Copy pigweed_environment.gni to logs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167850>`__
7729* `arm-gdb: propagate errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165411>`__
7730* `arm-gdb: exclude %VIRTUAL_ENV%\Scripts from search paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164370>`__
7731* `Add ability to override bazel BUILD file for CIPD repos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165530>`__
7732
7733pw_function
7734-----------
7735* `Rename template parameter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168334>`__
7736
7737pw_fuzzer
7738---------
7739* `Add test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154555>`__
7740
7741pw_hdlc
7742-------
7743A new ``close()`` method was added to ``HdlcRpcClient`` to signal to the thread
7744to stop.
7745
7746* `Use explicit logger name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166591>`__
7747* `Mitigate errors on Python background thread <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162712>`__
7748  (issue `#293595266 <https://issues.pigweed.dev/issues/293595266>`__)
7749
7750pw_ide
7751------
7752A new ``--install-editable`` flag was added to install Pigweed Python modules
7753in editable mode so that code changes are instantly realized.
7754
7755* `Add cmd to install Py packages as editable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163572>`__
7756* `Make VSC extension run on older versions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167054>`__
7757
7758pw_perf_test
7759------------
7760* `Add test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154554>`__
7761
7762pw_presubmit
7763------------
7764``pw_presubmit`` now has an ESLint check for linting and a Prettier check for
7765formatting JavaScript and TypeScript files.
7766
7767* `Add msan to OTHER_CHECKS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168325>`__
7768  (issue `#234876100 <https://issues.pigweed.dev/issues/234876100>`__)
7769* `Upstream constraint file output fix <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166270>`__
7770* `JavaScript and TypeScript lint check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165410>`__
7771* `Apply TypeScript formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164825>`__
7772* `Use prettier for JS and TS files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165390>`__
7773
7774pw_rpc
7775------
7776A ``request_completion()`` method was added to the ``ServerStreamingCall``
7777Python API. A bug was fixed related to encoding failures when dynamic buffers
7778are enabled.
7779
7780* `Add request_completion to ServerStreamingCall python API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168439>`__
7781* `Various small enhancements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167162>`__
7782* `Remove deprecated method from Service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165510>`__
7783* `Prevent encoding failure when dynamic buffer enabled <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166833>`__
7784  (issue `#269633514 <https://issues.pigweed.dev/issues/269633514>`__)
7785
7786pw_rpc_transport
7787----------------
7788* `Add simple_framing Soong rule <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165350>`__
7789
7790pw_rust
7791-------
7792* `Update rules_rust to 0.26.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166831>`__
7793
7794pw_stm32cube_build
7795------------------
7796* `Windows path fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167865>`__
7797
7798pw_stream
7799---------
7800Error codes were updated to be more accurate and descriptive.
7801
7802* `Use more appropriate error codes for Cursor <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164592>`__
7803
7804pw_stream_uart_linux
7805--------------------
7806Common baud rates such as ``9600``, ``19200``, and so on are now supported.
7807
7808* `Add support for baud rates other than 115200 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165070>`__
7809
7810pw_sync
7811-------
7812Tests were added to make sure that ``pw::sync::Borrowable`` works with lock
7813annotations.
7814
7815* `Test Borrowable with Mutex, TimedMutex, and InterruptSpinLock <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153575>`__
7816  (issue `#261078330 <https://issues.pigweed.dev/issues/261078330>`__)
7817
7818pw_system
7819---------
7820The ``pw_system.device.Device`` Python class can now be used as a
7821`context manager <https://realpython.com/python-with-statement/>`_.
7822
7823* `Make pw_system.device.Device a context manager <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163410>`__
7824
7825pw_tokenizer
7826------------
7827``pw_tokenizer`` now has Rust support. The ``pw_tokenizer`` C++ config API
7828is now documented at :ref:`module-pw_tokenizer-api-configuration` and
7829the C++ token database API is now documented at
7830:ref:`module-pw_tokenizer-api-token-databases`. When creating a token
7831database, parent directories are now automatically created if they don't
7832already exist. ``PrefixedMessageDecoder`` has been renamed to
7833``NestedMessageDecoder``.
7834
7835* `Move config value check to .cc file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168615>`__
7836* `Create parent directory as needed <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168510>`__
7837* `Rework pw_tokenizer.detokenize.PrefixedMessageDecoder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167150>`__
7838* `Minor binary database improvements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167053>`__
7839* `Update binary DB docs and convert to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163570>`__
7840* `Deprecate tokenizer buffer size config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163257>`__
7841* `Fix instance of -Wconstant-logical-operand <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166731>`__
7842* `Add Rust support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/145389>`__
7843
7844pw_toolchain
7845------------
7846A new Linux host toolchain built using ``pw_toolchain_bazel`` has been
7847started. CIPD-provided Rust toolchains are now being used.
7848
7849* `Link against system libraries using libs not ldflags <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151050>`__
7850* `Use %package% for cxx_builtin_include_directories <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168340>`__
7851* `Extend documentation for tool prefixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167633>`__
7852* `Add Linux host toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164824>`__
7853  (issue `#269204725 <https://issues.pigweed.dev/issues/269204725>`__)
7854* `Use CIPD provided Rust toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166852>`__
7855* `Switch macOS to use builtin_sysroot <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165414>`__
7856* `Add cmake helpers for getting clang compile+link flags <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163811>`__
7857
7858pw_unit_test
7859------------
7860``run_tests()`` now returns the new ``TestRecord`` dataclass which provides
7861more detailed information about the test run. ``SetUpTestSuit()`` and
7862``TearDownTestSuite()`` were added to improve GoogleTest compatibility.
7863
7864* `Add TestRecord of Test Results <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166273>`__
7865* `Reset static value before running tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166590>`__
7866  (issue `#296157327 <https://issues.pigweed.dev/issues/296157327>`__)
7867* `Add per-fixture setup/teardown <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165210>`__
7868
7869pw_web
7870------
7871Log viewers are now drawn every 100 milliseconds at most to prevent crashes
7872when many logs arrive simultaneously. The log viewer now has a jump-to-bottom
7873button. Advanced filtering has been added.
7874
7875* `NPM version bump to 0.0.11 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168591>`__
7876* `Add basic bundling tests for log viewer bundle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168539>`__
7877* `Limit LogViewer redraws to 100ms <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167852>`__
7878* `Add jump to bottom button, fix UI bugs and fix state bugs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164272>`__
7879* `Implement advanced filtering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162070>`__
7880* `Remove object-path dependency from Device API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165013>`__
7881* `Log viewer toolbar button toggle style <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165412>`__
7882* `Log-viewer line wrap toggle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164010>`__
7883
7884Targets
7885=======
7886
7887targets
7888-------
7889A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS
7890has been added.
7891
7892* `Ambiq Apollo4 support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/129490>`__
7893
7894Language support
7895================
7896
7897Python
7898------
7899* `Upgrade mypy to 1.5.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166272>`__
7900* `Upgrade pylint to 2.17.5 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166271>`__
7901
7902Docs
7903====
7904Doxygen-generated function signatures now present each argument on a separate
7905line. Tabbed content looks visually different than before.
7906
7907* `Use code-block:: instead of code:: everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168617>`__
7908* `Add function signature line breaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168554>`__
7909* `Cleanup indentation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168537>`__
7910* `Remove unused myst-parser <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168392>`__
7911* `Use sphinx-design for tabbed content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168341>`__
7912* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164810>`__
7913
7914SEEDs
7915=====
7916:ref:`SEED-0107 (Pigweed Communications) <seed-0107>` was accepted and
7917SEED-0109 (Communication Buffers) was started.
7918
7919* `Update protobuf SEED title in index <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166470>`__
7920* `Update status to Accepted <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167770>`__
7921* `Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__
7922* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168358>`__
7923
7924Miscellaneous
7925=============
7926
7927Build
7928-----
7929* `Make it possible to run MSAN in GN <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167112>`__
7930
7931soong
7932-----
7933* `Remove host/vendor properties from defaults <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165270>`__
7934
7935------------
7936Aug 11, 2023
7937------------
7938Highlights (Jul 27, 2023 to Aug 11, 2023):
7939
7940* We're prototyping a Pigweed extension for VS Code. Learn more at
7941  :ref:`docs-editors`.
7942* We added ``pw_toolchain_bazel``, a new LLVM toolchain for building with
7943  Bazel on macOS.
7944* We are working on many docs improvements in parallel: auto-generating ``rustdocs``
7945  for modules that support Rust
7946  (`example <https://pigweed.dev/rustdoc/pw_varint/>`_), refactoring the
7947  :ref:`module-pw_tokenizer` docs, migrating API references to Doxygen,
7948  fixing `longstanding docs site UI issues <https://issues.pigweed.dev/issues/292273650>`_,
7949  and more.
7950
7951Active SEEDs
7952============
7953Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
7954
7955* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
7956* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
7957* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
7958* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
7959* `SEED-0107: Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__
7960* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
7961
7962Modules
7963=======
7964
7965pw_alignment
7966------------
7967* `Fix typos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163250>`__
7968
7969pw_analog
7970---------
7971Long-term, all of our API references will be generated from header comments via
7972Doxygen. Short-term, we are starting to show header files directly within the
7973docs as a stopgap solution for helping Pigweed users get a sense of each
7974module's API. See :ref:`module-pw_analog` for an example.
7975
7976* `Include header files as stopgap API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161491>`__
7977  (issue `#293895312 <https://issues.pigweed.dev/issues/293895312>`__)
7978
7979pw_base64
7980---------
7981We finished migrating the ``pw_random`` API reference to Doxygen.
7982
7983* `Finish Doxygenifying the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162911>`__
7984* `Doxygenify the Encode() functions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156532>`__
7985
7986pw_boot_cortex_m
7987----------------
7988* `Allow explict target name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159790>`__
7989
7990pw_build
7991--------
7992We added a ``log_build_steps`` option to ``ProjectBuilder`` that enables you
7993to log all build step lines to your screen and logfiles.
7994
7995* `Handle ProcessLookupError exceptions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163710>`__
7996* `ProjectBuilder log build steps option <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162931>`__
7997* `Fix progress bar clear <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160791>`__
7998
7999pw_cli
8000------
8001We polished tab completion support.
8002
8003* `Zsh shell completion autoload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160796>`__
8004* `Make pw_cli tab completion reusable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160379>`__
8005
8006pw_console
8007----------
8008We made copy-to-clipboard functionality more robust when running ``pw_console``
8009over SSH.
8010
8011* `Set clipboard fallback methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150238>`__
8012
8013pw_containers
8014-------------
8015We updated :cpp:class:`filteredview` constructors and migrated the
8016``FilteredView`` API reference to Doxygen.
8017
8018* `Doxygenify pw::containers::FilteredView <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160373>`__
8019* `Support copying the FilteredView predicate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160372>`__
8020
8021pw_docgen
8022---------
8023At the top of pages like :ref:`module-pw_tokenizer` there is a UI widget that
8024provides information about the module. Previously, this UI widget had links
8025to all the module's docs. This is no longer needed now that the site nav
8026automatically scrolls to the page you're on, which allows you to see the
8027module's other docs.
8028
8029* `Remove the navbar from the module docs header widget <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162991>`__
8030  (issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__)
8031
8032pw_env_setup
8033------------
8034We made Python setup more flexible.
8035
8036* `Add clang_next.json <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163810>`__
8037  (issue `#295020927 <https://issues.pigweed.dev/issues/295020927>`__)
8038* `Pip installs from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162093>`__
8039* `Include Python packages from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162073>`__
8040* `Remove unused pep517 package <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162072>`__
8041* `Use more available Python 3.9 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161492>`__
8042  (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
8043* `Update Bazel to 2@6.3.0.6 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161010>`__
8044
8045pw_ide
8046------
8047We are prototyping a ``pw_ide`` extension for VS Code.
8048
8049* `Restore stable clangd settings link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164011>`__
8050* `Add command to install prototype extension <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162412>`__
8051* `Prototype VS Code extension <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151653>`__
8052
8053pw_interrupt
8054------------
8055We added a backend for Xtensa processors.
8056
8057* `Add backend for xtensa processors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160031>`__
8058* `Tidy up target compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160650>`__
8059  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
8060
8061pw_log_zephyr
8062-------------
8063We encoded tokenized messages to ``pw::InlineString`` so that the output is
8064always null-terminated.
8065
8066* `Fix null termination of Base64 messages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163650>`__
8067
8068pw_presubmit
8069------------
8070We increased
8071`LUCI <https://chromium.googlesource.com/infra/infra/+/main/doc/users/services/about_luci.md>`_
8072support and updated the ``#pragma once`` check to look for matching ``#ifndef``
8073and ``#define`` lines.
8074
8075* `Fix overeager format_code matches <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162611>`__
8076* `Exclude vsix files from copyright <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163011>`__
8077* `Clarify unicode errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162993>`__
8078* `Upload coverage json to zoss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162090>`__
8079  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
8080* `Add to context tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162311>`__
8081* `Add patchset to LuciTrigger <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162310>`__
8082* `Add helpers to LuciContext <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162091>`__
8083* `Update Python vendor wheel dir <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161514>`__
8084* `Add summaries to guard checks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161391>`__
8085  (issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__)
8086* `Copy Python packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161490>`__
8087* `Add ifndef/define check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152173>`__
8088  (issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__)
8089
8090pw_protobuf_compiler
8091--------------------
8092We continued work to ensure that the Python environment in Bazel is hermetic.
8093
8094* `Use hermetic protoc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162913>`__
8095  (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
8096* `Move reference to python interpreter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162932>`__
8097  (issue `#294414535 <https://issues.pigweed.dev/issues/294414535>`__)
8098* `Make nanopb hermetic <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162313>`__
8099  (issue `#293792686 <https://issues.pigweed.dev/issues/293792686>`__)
8100
8101pw_python
8102---------
8103We fixed bugs related to ``requirements.txt`` files not getting found.
8104
8105* `setup.sh requirements arg fix path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164430>`__
8106* `setup.sh arg spaces bug <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163510>`__
8107
8108pw_random
8109---------
8110We continued migrating the ``pw_random`` API reference to Doxygen.
8111
8112* `Doxygenify random.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163730>`__
8113
8114pw_rpc
8115------
8116We made the Java client more robust.
8117
8118* `Java client backwards compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164515>`__
8119* `Avoid reflection in Java client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162930>`__
8120  (issue `#293361955 <https://issues.pigweed.dev/issues/293361955>`__)
8121* `Use hermetic protoc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162913>`__
8122  (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
8123* `Improve Java client error message for missing parser() method <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159471>`__
8124
8125pw_spi
8126------
8127We continued work on implementing a SPI responder interface.
8128
8129* `Responder interface definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159230>`__
8130
8131pw_status
8132---------
8133We fixed the nesting on a documentation section.
8134
8135* `Promote Zephyr heading to h2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160730>`__
8136
8137pw_stream
8138---------
8139We added ``remaining()``, ``len()``, and ``position()`` methods to the
8140``Cursor`` wrapping in Rust.
8141
8142* `Add infalible methods to Rust Cursor <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164271>`__
8143
8144pw_stream_shmem_mcuxpresso
8145--------------------------
8146We added the :ref:`module-pw_stream_shmem_mcuxpresso` backend for ``pw_stream``.
8147
8148* `Add shared memory stream for NXP MCU cores <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160831>`__
8149  (issue `#294406620 <https://issues.pigweed.dev/issues/294406620>`__)
8150
8151pw_sync_freertos
8152----------------
8153* `Fix ODR violation in tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160795>`__
8154
8155pw_thread
8156---------
8157* `Fix test_thread_context typo and presubmit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162770>`__
8158
8159pw_tokenizer
8160------------
8161We added support for unaligned token databases and continued the
8162:ref:`seed-0102` update of the ``pw_tokenizer`` docs.
8163
8164* `Separate API reference and how-to guide content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163256>`__
8165* `Polish the sales pitch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163571>`__
8166* `Support unaligned databases <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163333>`__
8167* `Move the basic overview into getting started <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163253>`__
8168* `Move the case study to guides.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163255>`__
8169* `Restore info that get lost during the SEED-0102 migration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163330>`__
8170* `Use the same tagline on every doc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163332>`__
8171* `Replace savings table with flowchart <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158893>`__
8172* `Ignore string nonliteral warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162092>`__
8173
8174pw_toolchain
8175------------
8176We fixed a regression that made it harder to use Pigweed in an environment where
8177``pw_env_setup`` has not been run and fixed a bug related to incorrect Clang linking.
8178
8179* `Optionally depend on pw_env_setup_CIPD_PIGWEED <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163790>`__
8180  (issue `#294886611 <https://issues.pigweed.dev/issues/294886611>`__)
8181* `Prefer start-group over whole-archive <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150610>`__
8182  (issue `#285357895 <https://issues.pigweed.dev/issues/285357895>`__)
8183
8184pw_toolchain_bazel
8185------------------
8186We added a an LLVM toolchain for building with Bazel on macOS.
8187
8188* `LLVM toolchain for macOS Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157634>`__
8189  (issue `#291795899 <https://issues.pigweed.dev/issues/291795899>`__)
8190
8191pw_trace_tokenized
8192------------------
8193We made tracing more robust.
8194
8195* `Replace trace callback singletons with dep injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156912>`__
8196
8197pw_transfer
8198-----------
8199We made integration tests more robust.
8200
8201* `Fix use-after-destroy in integration test client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163252>`__
8202  (issue `#294101325 <https://issues.pigweed.dev/issues/294101325>`__)
8203* `Fix legacy binary path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162914>`__
8204  (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
8205* `Mark linux-only Bazel tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162094>`__
8206  (issue `#294101325 <https://issues.pigweed.dev/issues/294101325>`__)
8207
8208pw_web
8209------
8210We added support for storing user preferences in ``localStorage``.
8211
8212* `Fix TypeScript warnings in web_serial_transport.ts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164591>`__
8213* `Add state for view number, search string, and columns visible <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161390>`__
8214* `Fix TypeScript warnings in transfer.ts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162411>`__
8215* `Fix TypeScript warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162095>`__
8216* `Remove dependency on 'crc' and 'buffer' NPM packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160830>`__
8217
8218Build
8219=====
8220We made the Bazel system more hermetic and fixed an error related to not
8221finding the Java runtime.
8222
8223* `Do not allow PATH leakage into Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162610>`__
8224  (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
8225* `Use remote Java runtime for Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160793>`__
8226  (issue `#291791485 <https://issues.pigweed.dev/issues/291791485>`__)
8227
8228Docs
8229====
8230We created a new doc (:ref:`docs-editors`) that explains how to improve Pigweed
8231support in various IDEs. We standardized how we present call-to-action buttons
8232on module homepages. See :ref:`module-pw_tokenizer` for an example. We fixed a
8233longstanding UI issue around the site nav not scrolling to the page that you're
8234currently on.
8235
8236* `Add call-to-action buttons <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163331>`__
8237* `Update module items in site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163251>`__
8238* `Add editor support doc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/110261>`__
8239* `Delay nav scrolling to fix main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162990>`__
8240  (issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__)
8241* `Suggest editor configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162710>`__
8242* `Scroll to the current page in the site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162410>`__
8243  (issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__)
8244* `Add changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160170>`__
8245  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
8246
8247SEEDs
8248=====
8249We created a UI widget to standardize how we present SEED status information.
8250See the start of :ref:`seed-0102` for an example.
8251
8252* `Create Sphinx directive for metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161517>`__
8253
8254Third party
8255===========
8256
8257third_party/mbedtls
8258-------------------
8259* `3.3.0 compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160790>`__
8260  (issue `#293612945 <https://issues.pigweed.dev/issues/293612945>`__)
8261
8262Miscellaneous
8263=============
8264
8265OWNERS
8266------
8267* `Add kayce@ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163254>`__
8268
8269------------
8270Jul 28, 2023
8271------------
8272Highlights (Jul 13, 2023 to Jul 28, 2023):
8273
8274* `SEED-0107: Pigweed Communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__,
8275  a proposal for an embedded-focused network protocol stack, is under
8276  discussion. Please review and provide your input!
8277* ``pw_cli`` now supports tab completion!
8278* A new UART Linux backend for ``pw_stream`` was added (``pw_stream_uart_linux``).
8279
8280Active SEEDs
8281============
8282* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
8283* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
8284* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
8285* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
8286* `SEED-0107: Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__
8287* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
8288
8289Modules
8290=======
8291
8292pw_allocator
8293------------
8294We started migrating the ``pw_allocator`` API reference to Doxygen.
8295
8296* `Doxygenify the freelist chunk methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155395>`__
8297
8298pw_async
8299--------
8300We increased Bazel support.
8301
8302* `Fill in bazel build rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156911>`__
8303
8304pw_async_basic
8305--------------
8306We reduced logging noisiness.
8307
8308* `Remove debug logging <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158193>`__
8309
8310pw_base64
8311---------
8312We continued migrating the ``pw_base64`` API reference to Doxygen.
8313
8314* `Doxygenify MaxDecodedSize() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157091>`__
8315
8316pw_bloat
8317--------
8318We improved the performance of label creation. One benchmark moved from 120
8319seconds to 0.02 seconds!
8320
8321* `Cache and optimize label production <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159474>`__
8322
8323pw_bluetooth
8324------------
8325Support for 3 events was added.
8326
8327* `Add 3 Event packets & format hci.emb <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157663>`__
8328
8329pw_build
8330--------
8331* `Fix progress bar clear <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160791>`__
8332* `Upstream build script fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159473>`__
8333* `Add pw_test_info <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154551>`__
8334* `Upstream build script & presubmit runner <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137130>`__
8335* `pw_watch: Redraw interval and bazel steps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159490>`__
8336* `Avoid extra newlines for docs in generate_3p_gn <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150233>`__
8337* `pip install GN args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155270>`__
8338  (issue `#240701682 <https://issues.pigweed.dev/issues/240701682>`__)
8339* `pw_python_venv generate_hashes option <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157630>`__
8340  (issue `#292098416 <https://issues.pigweed.dev/issues/292098416>`__)
8341
8342pw_build_mcuxpresso
8343-------------------
8344Some H3 elements in the ``pw_build_mcuxpresso`` docs were being incorrectly
8345rendered as H2.
8346
8347* `Fix doc headings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155570>`__
8348
8349pw_chrono_freertos
8350------------------
8351We investigated what appeared to be a race condition but turned out to be an
8352unreliable FreeRTOS variable.
8353
8354* `Update SystemTimer comments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159231>`__
8355  (issue `#291346908 <https://issues.pigweed.dev/issues/291346908>`__)
8356* `Remove false callback precondition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156091>`__
8357  (issue `#291346908 <https://issues.pigweed.dev/issues/291346908>`__)
8358
8359pw_cli
8360------
8361``pw_cli`` now supports tab completion!
8362
8363* `Zsh shell completion autoload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160796>`__
8364* `Make pw_cli tab completion reusable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160379>`__
8365* `Print tab completions for pw commands <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160032>`__
8366* `Fix logging msec timestamp format <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159930>`__
8367
8368pw_console
8369----------
8370Communication errors are now handled more gracefully.
8371
8372* `Detect comms errors in Python <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155814>`__
8373
8374pw_containers
8375-------------
8376The flat map implementation and docs have been improved.
8377
8378* `Doxygenify pw::containers::FilteredView <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160373>`__
8379* `Support copying the FilteredView predicate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160372>`__
8380* `Improve FlatMap algorithm and filtered_view support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156652>`__
8381* `Improve FlatMap doc example <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156651>`__
8382* `Update FlatMap doc example so it compiles <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156650>`__
8383
8384pw_digital_io
8385-------------
8386We continued migrating the API reference to Doxygen. An RPC service was added.
8387
8388* `Doxygenify the interrupt handler methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154193>`__
8389* `Doxygenify Enable() and Disable() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155817>`__
8390* `Add digital_io rpc service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154974>`__
8391
8392pw_digital_io_mcuxpresso
8393------------------------
8394We continued migrating the API reference to Doxygen. Support for a new RPC
8395service was added.
8396
8397* `Remove unneeded constraints <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155394>`__
8398
8399pw_docgen
8400---------
8401Support for auto-linking to Rust docs (when available) was added. We also
8402explained how to debug Pigweed's Sphinx extensions.
8403
8404* `Add rustdoc linking support to pigweed-module tag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159292>`__
8405* `Add extension debugging instructions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156090>`__
8406
8407pw_env_setup
8408------------
8409There were lots of updates around how the Pigweed environment uses Python.
8410
8411* `pw_build: Disable pip version check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160551>`__
8412* `Add docstrings to visitors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159131>`__
8413* `Sort pigweed_environment.gni lines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158892>`__
8414* `Mac and Windows Python requirements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158912>`__
8415  (issue `#292098416 <https://issues.pigweed.dev/issues/292098416>`__)
8416* `Add more Python versions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158891>`__
8417  (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
8418* `Remove python.json from Bazel CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158911>`__
8419  (issue `#292585791 <https://issues.pigweed.dev/issues/292585791>`__)
8420* `Redirect variables from empty dirs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158890>`__
8421  (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
8422* `Split Python constraints per OS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157657>`__
8423  (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
8424* `Add --additional-cipd-file argument <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158170>`__
8425  (issue `#292280529 <https://issues.pigweed.dev/issues/292280529>`__)
8426* `Upgrade Python cryptography to 41.0.2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157654>`__
8427* `Upgrade ipython to 8.12.2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157653>`__
8428* `Upgrade PyYAML to 6.0.1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157652>`__
8429* `Add Python constraints with hashes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153470>`__
8430  (issue `#287302102 <https://issues.pigweed.dev/issues/287302102>`__)
8431* `Bump pip and pip-tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156470>`__
8432* `Add coverage utilities <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155810>`__
8433  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
8434
8435pw_fuzzer
8436---------
8437A fuzzer example was updated to more closely follow Pigweed code conventions.
8438
8439* `Update fuzzers to use Pigweed domains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/148337>`__
8440
8441pw_hdlc
8442-------
8443Communication errors are now handled more gracefully.
8444
8445* `Detect comms errors in Python <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155814>`__
8446* `Add target to Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157651>`__
8447
8448pw_i2c
8449------
8450An RPC service was added. Docs and code comments were updated to use ``responder``
8451and ``initiator`` terminology consistently.
8452
8453* `Standardize naming on initiator/responder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159132>`__
8454* `Add i2c rpc service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155250>`__
8455
8456pw_i2c_mcuxpresso
8457-----------------
8458* `Allow for static initialization of initiator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155790>`__
8459* `Add test to ensure compilation of module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155390>`__
8460
8461pw_ide
8462------
8463* `Support multiple comp DB search paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144210>`__
8464  (issue `#280363633 <https://issues.pigweed.dev/issues/280363633>`__)
8465
8466pw_interrupt
8467------------
8468Work continued on how facade backend selection works in Bazel.
8469
8470* `Add backend for xtensa processors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160031>`__
8471* `Tidy up target compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160650>`__
8472  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
8473* `Remove cpu-based backend selection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160380>`__
8474  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
8475* `Add backend constraint setting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160371>`__
8476  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
8477* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154500>`__
8478  (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
8479
8480pw_log_rpc
8481----------
8482A docs section was added that explains how ``pw_log``, ``pw_log_tokenized``,
8483and ``pw_log_rpc`` interact with each other.
8484
8485* `Explain relation to pw_log and pw_log_tokenized <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157231>`__
8486
8487pw_package
8488----------
8489Raspberry Pi Pico and Zephyr support improved.
8490
8491* `Add picotool package installer <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155791>`__
8492* `Handle windows Zephyr SDK setup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157030>`__
8493* `Run Zephyr SDK setup.sh after syncing from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156530>`__
8494
8495pw_perf_test
8496------------
8497* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154498>`__
8498  (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
8499
8500pw_presubmit
8501------------
8502* `Add ifndef/define check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152173>`__
8503  (issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__)
8504* `Remove deprecated gn_docs_build step <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159291>`__
8505* `Fix issues with running docs_build twice <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159290>`__
8506* `Add Rust docs to docs site <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157656>`__
8507
8508pw_protobuf_compiler
8509--------------------
8510* `Disable legacy namespace <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157232>`__
8511* `Transition to our own proto compiler rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157033>`__
8512  (issue `#234874064 <https://issues.pigweed.dev/issues/234874064>`__)
8513* `Allow external usage of macros <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155432>`__
8514
8515pw_ring_buffer
8516--------------
8517``pw_ring_buffer`` now builds with ``-Wconversion`` enabled.
8518
8519* `Conversion warning cleanups <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157430>`__
8520  (issue `#259746255 <https://issues.pigweed.dev/issues/259746255>`__)
8521
8522pw_rpc
8523------
8524* `Create client call hook in Python client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157870>`__
8525* `Provide way to populate response callbacks during tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156670>`__
8526* `Add Soong rule for pwpb echo service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156270>`__
8527
8528pw_rpc_transport
8529----------------
8530* `Add more Soong rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155035>`__
8531
8532pw_rust
8533-------
8534We are preparing pigweed.dev to automatically link to auto-generated
8535Rust module documentation when available.
8536
8537* `Add combined Rust doc support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157632>`__
8538* `Update @rust_crates sha <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155051>`__
8539
8540pw_spi
8541------
8542We updated docs and code comments to use ``initiator`` and ``responder``
8543terminology consistently.
8544
8545* `Standardize naming on initiator/responder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159132>`__
8546
8547pw_status
8548---------
8549* `Add Clone and Copy to Rust Error enum <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157093>`__
8550
8551pw_stream
8552---------
8553We continued work on Rust support.
8554
8555* `Fix Doxygen typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154732>`__
8556* `Add read_exact() an write_all() to Rust Read and Write traits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157094>`__
8557* `Clean up rustdoc warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157092>`__
8558* `Add Rust varint reading and writing support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156451>`__
8559* `Refactor Rust cursor to reduce monomorphization <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155391>`__
8560* `Add Rust integer reading support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155053>`__
8561* `Move Rust Cursor to it's own sub-module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155052>`__
8562
8563pw_stream_uart_linux
8564--------------------
8565A new UART Linux backend for ``pw_stream`` was added.
8566
8567* `Add stream for UART on Linux <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156910>`__
8568
8569pw_sync
8570-------
8571C++ lock traits were added and used.
8572
8573* `Improve Borrowable lock traits and annotations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153573>`__
8574  (issue `#261078330 <https://issues.pigweed.dev/issues/261078330>`__)
8575* `Add lock traits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153572>`__
8576
8577pw_sync_freertos
8578----------------
8579* `Fix ODR violation in tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160795>`__
8580
8581pw_sys_io
8582---------
8583* `Add android to alias as host system <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157871>`__
8584  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
8585* `Add chromiumos to alias as host system <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155811>`__
8586  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
8587
8588pw_system
8589---------
8590* `Update IPython init API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157872>`__
8591* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154497>`__
8592  (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
8593
8594pw_tokenizer
8595------------
8596We refactored the ``pw_tokenizer`` docs to adhere to :ref:`seed-0102`.
8597
8598* `Update tagline, restore missing info, move sections <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158192>`__
8599* `Migrate the proto docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157655>`__
8600* `Remove stub sections and add guides link (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157631>`__
8601* `Migrate the custom macro example (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157032>`__
8602* `Migrate the Base64 docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156531>`__
8603* `Migrate token collision docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155818>`__
8604* `Migrate detokenization docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155815>`__
8605* `Migrate masking docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155812>`__
8606
8607pw_toolchain
8608------------
8609The build system was modified to use relative paths to avoid unintentionally
8610relying on the path environment variable. Map file generation is now optional
8611to avoid generating potentially large map files when they're not needed.
8612
8613* `Test trivially destructible class <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159232>`__
8614* `Make tools use relative paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159130>`__
8615  (issue `#290848929 <https://issues.pigweed.dev/issues/290848929>`__)
8616* `Support conditionally creating mapfiles <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157431>`__
8617
8618pw_trace_tokenized
8619------------------
8620* `Replace singletons with dependency injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155813>`__
8621* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154499>`__
8622  (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
8623
8624pw_unit_test
8625------------
8626* `Update metadata test type for unit tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154550>`__
8627
8628pw_varint
8629---------
8630* `Update Rust API to return number of bytes written <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156450>`__
8631
8632pw_watch
8633--------
8634We fixed an issue where builds were getting triggered when files were opened
8635or closed without modication.
8636
8637* `Trigger build only on file modifications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157633>`__
8638
8639pw_web
8640------
8641* `Remove dependency on 'crc' and 'buffer' NPM packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160830>`__
8642* `Update theme token values and usage <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155970>`__
8643* `Add disconnect() method to WebSerialTransport <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156471>`__
8644* `Add docs section for log viewer component <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155050>`__
8645
8646Build
8647=====
8648
8649bazel
8650-----
8651* `Add host_backend_alias macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160550>`__
8652  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
8653* `Fix missing deps in some modules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160376>`__
8654* `Support user bazelrc files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160030>`__
8655* `Update rules_python to 0.24.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158913>`__
8656  (issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__)
8657
8658build
8659-----
8660* `Use remote Java runtime for Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160793>`__
8661  (issue `#291791485 <https://issues.pigweed.dev/issues/291791485>`__)
8662* `Add Rust toolchain to Bazel macOS build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159491>`__
8663  (issue `#291749888 <https://issues.pigweed.dev/issues/291749888>`__)
8664* `Mark linux-only Bazel build targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158191>`__
8665
8666Targets
8667=======
8668
8669targets/rp2040_pw_system
8670------------------------
8671Some of the Pico docs incorrectly referred to another hardware platform.
8672
8673* `Fix references to STM32 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157233>`__
8674  (issue `#286652309 <https://issues.pigweed.dev/issues/286652309>`__)
8675
8676Language support
8677================
8678
8679python
8680------
8681* `Remove setup.py files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159472>`__
8682
8683rust
8684----
8685* `Add rustdoc links for existing crates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159470>`__
8686
8687OS support
8688==========
8689
8690zephyr
8691------
8692* `Add project name to unit test root <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156850>`__
8693* `Add pigweed root as module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156596>`__
8694* `Fix setup.sh call <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156591>`__
8695
8696Docs
8697====
8698We added a feature grid to the homepage and fixed outdated info in various
8699docs.
8700
8701* `pigweed.dev feature grid <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157658>`__
8702* `Mention SEED-0102 in module_structure.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157234>`__
8703  (issue `#286477675 <https://issues.pigweed.dev/issues/286477675>`__)
8704* `Remove outdated Homebrew info in getting_started.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157291>`__
8705  (issue `#287528787 <https://issues.pigweed.dev/issues/287528787>`__)
8706* `Fix "gn args" examples which reference pw_env_setup_PACKAGE_ROOT <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156452>`__
8707* `Consolidate contributing docs in site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155816>`__
8708
8709SEEDs
8710=====
8711
8712SEED-0107
8713---------
8714* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157031>`__
8715
8716SEED-0108
8717---------
8718* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158171>`__
8719
8720Third party
8721===========
8722
8723third_party
8724-----------
8725* `Remove now unused rules_proto_grpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157290>`__
8726
8727third_party/mbedtls
8728-------------------
8729* `3.3.0 compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160790>`__
8730  (issue `#293612945 <https://issues.pigweed.dev/issues/293612945>`__)
8731