xref: /aosp_15_r20/external/pigweed/docs/changelog.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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.. _docs-changelog-2024-11-27:
16
17------------
18Nov 27, 2024
19------------
20.. changelog_highlights_start
21
22Highlights (Nov 15, 2024 to Nov 27, 2024):
23
24* **pw_allocator updates**: The :ref:`module-pw_allocator-api-bucket` class
25  has been refactored to be more flexible and the :ref:`block API
26  <module-pw_allocator-api-block>` has been refactored to support static
27  polymorphism.
28
29.. changelog_highlights_end
30
31.. _docs-changelog-2024-11-27-Modules:
32
33Modules
34=======
35
36.. _docs-changelog-2024-11-27-Modules-pw_allocator:
37
38pw_allocator
39------------
40Changes:
41
42.. 0942b69025f2987ca9512141fe3cf3a7046f042c
43
44* ``BestFitBlockAllocator`` was renamed to ``BestFitAllocator`` and
45  ``WorstFitBlockAllocator`` was renamed to ``WorstFitAllocator``. These
46  classes have been refactored to use :ref:`buckets
47  <module-pw_allocator-api-bucket>`. Commit: `Refactor best- and worst-fit
48  allocators to use buckets <https://pwrev.dev/234817>`__.
49
50.. 0766dbaf5305202c6f67e18184bb165df8426713
51
52* ``FirstFitBlockAllocator``, ``LastFitBlockAllocator``, and
53  ``DualFirstFitBlockAllocator`` were merged into a single class:
54  :ref:`module-pw_allocator-api-first_fit_allocator`. Commit: `Refactor
55  first fit allocators <https://pwrev.dev/234816>`__.
56
57.. 3bfdac7a7826a4e2a1dc7a7174fd8d6276546c26
58
59* The :ref:`module-pw_allocator-api-bucket` class has been refactored to
60  be more flexible. Commit: `Refactor Bucket
61  <https://pwrev.dev/234815>`__.
62
63.. 65b5e336df018fbc9d124ca09d71a5dcccd1a8c0
64
65* Metric calculation for blocks that shift bytes has changed. Commit:
66  `Fix metrics for blocks that shift bytes <https://pwrev.dev/249372>`__.
67  Bug: :bug:`378743727`.
68
69.. 33d00a77472a6ff545032b213aa24dfe6a39d606
70
71* :cpp:class:`pw::allocator::BlockAllocator` now returns
72  :cpp:class:`pw::allocator::BlockResult`. Commit: `Use BlockResult in
73  BlockAllocator <https://pwrev.dev/234811>`__.
74
75.. 6417a523b06e03dce3453e96c3a1bec6ab511768
76
77* The :ref:`block API <module-pw_allocator-api-block>` has been
78  refactored to support static polymorphism. Commit: `Add static
79  polymorphism to Block <https://pwrev.dev/232214>`__.
80
81.. _docs-changelog-2024-11-27-Modules-pw_bytes:
82
83pw_bytes
84--------
85New features:
86
87.. a287811e5e99eab8d4ddfcaf9f1a505fd1e3eb17
88
89* The new :cpp:func:`pw::IsAlignedAs` utility functions make it easier
90  to check alignment. Commit: `Add utility for checking alignment
91  <https://pwrev.dev/248192>`__.
92
93.. _docs-changelog-2024-11-27-Modules-pw_presubmit:
94
95pw_presubmit
96------------
97New features:
98
99.. e278ead3bfe1361c3ff08e5329636a35abbcef6c
100
101* The new ``includes_presubmit_check`` verifies that ``cc_library``
102  Bazel targets don't use the ``includes`` attribute. Commit: `Add check
103  for cc_library includes <https://pwrev.dev/251172>`__. Bug:
104  :bug:`380934893`.
105
106.. _docs-changelog-2024-11-27-Modules-pw_protobuf:
107
108pw_protobuf
109-----------
110New features:
111
112.. f776679bbea5f4ae376ab924d80760bb2f1e69a0
113
114* :ref:`pw_protobuf-message-limitations` now has more guidance around
115  protobuf versioning and ``optional`` fields. Commit: `Expand message
116  structure limitations docs section <https://pwrev.dev/249072>`__.
117
118.. _docs-changelog-2024-11-27-Modules-pw_transfer:
119
120pw_transfer
121-----------
122Changes:
123
124.. 1c771e0fd88511ef3550108572572db1f036d0a5
125
126* Warnings logs are now emitted when client or server streams close
127  unexpectedly. Commit: `Log when streams close unexpectedly
128  <https://pwrev.dev/249912>`__.
129
130.. 48712ad0655654b4dcc9b62085a58445fe0af696
131
132* The window size on retried data now shrinks in an attempt to reduce
133  network congestion. Commit: `Shrink window size on retried data
134  <https://pwrev.dev/249532>`__.
135
136.. _docs-changelog-2024-11-27-Modules-pw_unit_test:
137
138pw_unit_test
139------------
140Changes:
141
142.. c4d59ce4d011e11781bcb6dc6660ad947a7ee8df
143
144* Successful expectations are no longer stringified by default. Commit:
145  `Stop stringifying successful expectations
146  <https://pwrev.dev/248693>`__.
147
148.. _docs-changelog-2024-11-27-Modules-pw_rpc:
149
150pw_rpc
151------
152Changes:
153
154.. 92e854a4d179f0b340a0f8b5a662012ea4b8635c
155
156* A warning log is now emitted when a server receives a completion
157  request but client completion callbacks have been disabled. Commit:
158  `Warn when client completion callback is disabled
159  <https://pwrev.dev/249414>`__.
160
161.. _docs-changelog-2024-11-14:
162
163------------
164Nov 14, 2024
165------------
166.. changelog_highlights_start
167
168Highlights (Nov 1, 2024 to Nov 14, 2024):
169
170* **ELF API**: The new :cpp:class:`pw::elf::ElfReader` class is a
171  basic reader for ELF files.
172* **Updated Bluetooth APIs**: There's a new low energy
173  connection-oriented channels API and the :ref:`module-pw_bluetooth`
174  API has been modernized.
175* **Updated SEED process**: "Intent Approved" and "On Hold" statuses
176  were added to the SEED lifecycle.
177
178.. changelog_highlights_end
179
180.. _docs-changelog-2024-11-14-Modules:
181
182Modules
183=======
184
185.. _docs-changelog-2024-11-14-Modules-pw_allocator:
186
187pw_allocator
188------------
189Changes:
190
191.. 1dcac6a863b8adfc930de769ec56fd44f1e4448f
192
193* ``pw::allocator::AsPmrAllocator`` was renamed to
194  :cpp:class:`pw::allocator::PmrAllocator`. Commit: `Separate PMR from
195  Allocator <https://pwrev.dev/246412>`__.
196
197.. _docs-changelog-2024-11-14-Modules-pw_async2:
198
199pw_async2
200---------
201New features:
202
203.. 21933c60384c25d73dba60c90e74cc44d2a446de
204
205* The ``new`` operator for coroutines now accepts an optional alignment
206  argument. Commit: `Accept alignment in CoroPromiseType::operator new
207  <https://pwrev.dev/248638>`__. Bug: :bug:`378929156`.
208
209.. d20009a8e35dfdb881f77b6d171c697b61dba5c3
210
211* The new :c:macro:`PW_TRY_READY` and :c:macro:`PW_TRY_READY_ASSIGN`
212  helper macros reduce boilerplate in non-coroutine async code. Commit:
213  `Add PW_TRY_READY_* control flow macros <https://pwrev.dev/243818>`__.
214
215.. _docs-changelog-2024-11-14-Modules-pw_bluetooth:
216
217pw_bluetooth
218------------
219New features:
220
221.. c9ad96cf7be8a05a7d1bf6ec933114c7cc39f012
222
223* The new :cpp:class:`pw::bluetooth::low_energy::Channel`,
224  :cpp:class:`pw::bluetooth::low_energy::ChannelListener`, and
225  :cpp:class:`pw::bluetooth::low_energy::ChannelListenerRegistry` classes
226  provide a low energy connection-oriented channels API. Commit: `Add LE
227  Connection-Oriented Channels API <https://pwrev.dev/227371>`__. Bug:
228  :bug:`357142749`.
229
230Changes:
231
232.. a615b8bf5234f48b8a33e6c837aa7521fa80d92a
233
234* The :ref:`module-pw_bluetooth` API has been modernized. Commit:
235  `Modernize APIs <https://pwrev.dev/219393>`__. Bug: :bug:`350994818`.
236
237.. _docs-changelog-2024-11-14-Modules-pw_bluetooth_proxy:
238
239pw_bluetooth_proxy
240------------------
241New features:
242
243.. b8ee89e76ff4e8c467ea35291b2a141175c737e9
244
245* :cpp:class:`pw::bluetooth::proxy::L2capCoc` now supports reading.
246  Commit: `L2CAP CoC supports reading <https://pwrev.dev/232172>`__. Bug:
247  :bug:`360934032`.
248
249.. _docs-changelog-2024-11-14-Modules-pw_channel:
250
251pw_channel
252----------
253New features:
254
255.. 0a4e6db6ad35d0bf062c22b471fef2a66948a90f
256
257* The new :cpp:func:`pw::Channel::PendAllocateWriteBuffer` method
258  simplifies the allocation of write buffers that need small
259  modifications. Commit: `Move to PendAllocateWriteBuffer
260  <https://pwrev.dev/246239>`__.
261
262Changes:
263
264.. bd17ed6971f608e2d66da8b2954bc13ad3e2c664
265
266* The ``pw::channel::WriteToken`` method was removed. Commit: `Remove
267  WriteToken <https://pwrev.dev/245932>`__.
268
269.. 0422de1761e52ad5d1fad821880025fc27facf1c
270
271* ``pw_channel`` inheritance has been refactored
272  to ensure that conversions between compatible variants are valid.
273  Commit: `Rework inheritance to avoid SiblingCast
274  <https://pwrev.dev/247732>`__.
275
276.. _docs-changelog-2024-11-14-Modules-pw_elf:
277
278pw_elf
279------
280New features:
281
282.. 8ee78791500354f85df94b228f63b3a42a882040
283
284* The new :cpp:class:`pw::elf::ElfReader` class is a basic reader for
285  ELF files. Commit: `Add ElfReader <https://pwrev.dev/244893>`__.
286
287.. _docs-changelog-2024-11-14-Modules-pw_i2c:
288
289pw_i2c
290------
291Bug fixes:
292
293.. 6165aa470b35106b79b2e57ecec9951cff30acdc
294
295* I2C flags are now correctly set for transactions that occur on an I3C
296  bus. Commit: `Set the i2c flags correctly for transactions on an i3c bus
297  <https://pwrev.dev/245754>`__. Bug: :bug:`373451623`.
298
299.. _docs-changelog-2024-11-14-Modules-pw_metric:
300
301pw_metric
302---------
303New features:
304
305.. a751fa9bd38a30f08a14c336e7bc77878a5d60c5
306
307* ``pwpb`` now prioritizes the ``.pwpb_options`` for protobuf codegen.
308  Commit: `Add metrics_service.pwpb_options to BUILD.gn
309  <https://pwrev.dev/246112>`__.
310
311.. aacf94efb59dac4a661e88e2ba95acda20c5ccb1
312
313* The new :cpp:func:`PW_METRIC_TOKEN` makes it easier for tests to
314  create tokens for metrics. Commit: `Expose metric token format via
315  PW_METRIC_TOKEN <https://pwrev.dev/244332>`__.
316
317.. _docs-changelog-2024-11-14-Modules-pw_protobuf:
318
319pw_protobuf
320-----------
321New features:
322
323.. acbeaab3d280f748d235a31025d7a35dd38fa516
324
325* The ``Find*()`` methods have been extended to support iterating over
326  repeated fields. See :ref:`module-pw_protobuf-read`. Commit:
327  `Extend Find() APIs to support repeated fields <https://pwrev.dev/248432>`__.
328
329Changes:
330
331.. 6a16fab34795f2976e04457d099a05c671b79b54
332
333* It's no longer necessary to set a callback for every possible field in
334  a message when you're only interested in a few fields. Commit: `Allow
335  unset oneof callbacks <https://pwrev.dev/246692>`__.
336
337.. _docs-changelog-2024-11-14-Modules-pw_protobuf_compiler:
338
339pw_protobuf_compiler
340--------------------
341Changes:
342
343.. cd0b4fb52d8fb2012fbd8483f66a48d593e83bb9
344
345* ``pwpb_options`` files are now explicitly processed first, followed by
346  regular ``.options`` files. Commit: `Don't rely on options file ordering
347  <https://pwrev.dev/247472>`__.
348
349.. _docs-changelog-2024-11-14-Modules-pw_rpc:
350
351pw_rpc
352------
353Changes:
354
355.. f0ba9b05187506d7526ca3585401c8df7b4e9d4d
356
357* The Python client previously reused call IDs after ``16384``. The limit
358  has been increased to ``2097152``. Commit: `Allocate more call IDs in
359  the Python client <https://pwrev.dev/245067>`__. Bug: :bug:`375658481`.
360
361.. _docs-changelog-2024-11-14-Modules-pw_rpc_transport:
362
363pw_rpc_transport
364----------------
365New features:
366
367.. 18d5fbfb289c8675dd683d62ab69b83147e9d70e
368
369* The new ``pw::rpc::RpcIngress::num_total_packets`` method tracks how
370  many packets an ingress RPC handler has received. Commit: `Track number
371  of RPC packets received <https://pwrev.dev/247194>`__. Bug:
372  :bug:`373449543`.
373
374.. _docs-changelog-2024-11-14-Modules-pw_sensor:
375
376pw_sensor
377---------
378New features:
379
380.. b7246bf88df6aa030dec7b9510e7015b5035616c
381
382* The new ``extras`` key lets applications specify additional metadata
383  that's not supported or used by Pigweed. Commit: `Add freeform extras
384  field to sensor.yaml <https://pwrev.dev/248195>`__.
385
386.. _docs-changelog-2024-11-14-Modules-pw_spi:
387
388pw_spi
389------
390Changes:
391
392.. 6aadd54afb308c09edb833985b387442df732fef
393
394* :cpp:class:`pw::spi::Initiator` is now a `non-virtual interface
395  <https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-Virtual_Interface>`__.
396  Commit: `Finalize non-Virtual interface on
397  Initiator <https://pwrev.dev/236236>`__. Bug: :bug:`308479791`.
398
399.. _docs-changelog-2024-11-14-Modules-pw_spi_linux:
400
401pw_spi_linux
402------------
403Bug fixes:
404
405.. d17b5acd42c6e983ce4b12a7ebc3184205a06d45
406
407* The ``pw::Spi::Initiator::DoWriteRead()`` method now correctly handles
408  transfers where either the write buffer or the read buffer is empty.
409  Commit: `Fix read/write-only transfers <https://pwrev.dev/246053>`__.
410
411.. _docs-changelog-2024-11-14-Modules-pw_stream:
412
413pw_stream
414---------
415New features:
416
417.. b2c1616caaff13d41e434cbcb8ae0530a20962ca
418
419* The new :cpp:func:`pw::stream::Stream::ReadExact` method reads exactly
420  the number of bytes requested into a provided buffer, if supported.
421  Commit: `Add ReadExact() wrapper <https://pwrev.dev/243552>`__.
422
423.. _docs-changelog-2024-11-14-Modules-pw_tokenizer:
424
425pw_tokenizer
426------------
427New features:
428
429.. 94e2314ddea1499a7868bd3d30621b709e25f7d4
430
431* The new :cpp:func:`pw::tokenizer::Detokenizer::FromElfFile` method
432  constructs a detokenizer from the ``.pw_tokenizer.entries`` section of
433  an ELF binary. Commit: `Add Detokenizer::FromElfFile
434  <https://pwrev.dev/243532>`__. Bug: :bug:`374367947`.
435
436Bug fixes:
437
438.. 7fb7bb1dc5d69c79de1b0b72316a34a800f2d5b0
439
440* The Python detokenizer now correctly handles multiple nested tokens in
441  one log string. Commit: `Update regex for nested args
442  <https://pwrev.dev/248232>`__.
443
444.. _docs-changelog-2024-11-14-SEEDs:
445
446SEEDs
447=====
448New features:
449
450.. a1acd00d02ebe42116a4982ad809264f3c673021
451
452* "Intent Approved" and "On Hold" statuses were added to the SEED
453  lifecycle. Commit: `(SEED-0001) Add "Intent Approved" and "On Hold"
454  states to lifecycle <https://pwrev.dev/248692>`__.
455
456.. _docs-changelog-2024-10-31:
457
458------------
459Oct 31, 2024
460------------
461Highlights (Oct 18, 2024 to Oct 31, 2024):
462
463* The new :c:macro:`PW_TEST_EXPECT_OK`, :c:macro:`PW_TEST_ASSERT_OK`,
464  and :c:macro:`PW_TEST_ASSERT_OK_AND_ASSIGN` macros provide test matchers
465  for :ref:`module-pw_status` and :ref:`module-pw_result` values.
466* The Sense tutorial has expanded guidance around :ref:`handling crashes
467  and viewing snapshots <showcase-sense-tutorial-crash-handler>`.
468* The new :cpp:class:`pw::LinkerSymbol` class represents a symbol
469  provided by a linker.
470* The new ``extra_frame_handlers`` parameter lets you add custom HDLC frame
471  handlers when using the Python-based :ref:`module-pw_system` console.
472
473.. _docs-changelog-2024-10-31-Modules:
474
475Modules
476=======
477
478.. _docs-changelog-2024-10-31-Modules-pw_allocator:
479
480pw_allocator
481------------
482New features:
483
484.. 6fd4792308999b9c5949e9b778994d064a80a8b7
485
486* The new :c:macro:`PW_ALLOCATOR_ENABLE_PMR` macro lets you disable the
487  ability to use an allocator with the polymorphic versions of standard
488  library containers. Commit: `Make pw::Allocator::as_pmr optional
489  <https://pwrev.dev/245254>`__.
490
491Changes:
492
493.. c3c61885927ee9e8fac187a52b1ab139919fe5e7
494
495* Multiple methods were renamed or removed in preparation for upcoming
496  work to split up :cpp:class:`pw::allocator::Block`. Commit: `Streamline
497  Block API <https://pwrev.dev/232213>`__.
498
499.. _docs-changelog-2024-10-31-Modules-pw_assert:
500
501pw_assert
502---------
503Changes:
504
505.. 673e56ac476a345a0f25319633d8ce0ad0c0cd93
506
507* ``pw_assert`` now verifies whether ``PW_CHECK`` message arguments are
508  valid, regardless of what ``pw_assert`` backend is being used. Commit:
509  `Verify PW_CHECK message arguments in the API
510  <https://pwrev.dev/244744>`__.
511
512.. _docs-changelog-2024-10-31-Modules-pw_assert_tokenized:
513
514pw_assert_tokenized
515-------------------
516New features:
517
518.. ef5f6bf505343c0926532f53dc788b26c3640048
519
520* :c:macro:`pw_assert_HandleFailure` is now supported. Commit: `Support
521  pw_assert_HandleFailure <https://pwrev.dev/244793>`__.
522
523.. _docs-changelog-2024-10-31-Modules-pw_async2:
524
525pw_async2
526---------
527New features:
528
529.. cec451dc5c2cb132717068d686e4e034b06762c9
530
531* :cpp:class:`pw::async2::Join` lets you join several separate pendable
532  values. Commit: `Add Join combinator <https://pwrev.dev/244612>`__.
533
534.. 0945ffb46234253d08467adebd8869ebb39234fa
535
536* The new :cpp:func:`pw::async2::TimeFuture::Reset` method resets a
537  ``TimeFuture`` instance to expire at a specified time. Commit: `Add
538  TimerFuture::Reset <https://pwrev.dev/243993>`__.
539
540Changes:
541
542.. 9528eac2b6c6243dc5fb6a4d72f33d8d7e0d573c
543
544* Waker storage has moved to a macro-based API. See
545  :c:macro:`PW_ASYNC_STORE_WAKER` and :c:macro:`PW_ASYNC_CLONE_WAKER`.
546  Commit: `Move to macro-based Waker API <https://pwrev.dev/245068>`__.
547  Bug: :bug:`376123061`.
548
549.. _docs-changelog-2024-10-31-Modules-pw_bluetooth_proxy:
550
551pw_bluetooth_proxy
552------------------
553New features:
554
555.. a8c756860ae104ef5e87439ef4f8cc4fbbb2fab7
556
557* Bazel builds are now supported. Commit: `Add bazel build support
558  <https://pwrev.dev/243874>`__.
559
560.. _docs-changelog-2024-10-31-Modules-pw_build:
561
562pw_build
563--------
564New features:
565
566.. 170f745d98d101d73564fa61420f1a0836053033
567
568* The new :cpp:class:`pw::LinkerSymbol` class represents a symbol
569  provided by a linker. Commit: `Add LinkerSymbol
570  <https://pwrev.dev/242635>`__.
571
572.. _docs-changelog-2024-10-31-Modules-pw_channel:
573
574pw_channel
575----------
576Changes:
577
578.. 5f2649a6e5afdecd7b5d59aab06f59bb4d73d9f3
579
580* ``pw::channel::AnyChannel::Write`` was renamed to
581  :cpp:func:`pw::channel::AnyChannel::StageWrite` and
582  ``pw::channel::AnyChannel::PendFlush`` was renamed to
583  :cpp:func:`pw::channel::AnyChannel::PendWrite`. Commit: `Rename
584  {Write->StageWrite, PendFlush->PendWrite} <https://pwrev.dev/245539>`__.
585
586.. _docs-changelog-2024-10-31-Modules-pw_containers:
587
588pw_containers
589-------------
590New features:
591
592.. afb18a6ded0c43e91ce85e5ec97ae0206c4873ca
593
594* :cpp:class:`pw::IntrusiveSet` is a new class like ``std::set<Key,
595  Compare>`` that uses intrusive items as keys and
596  :cpp:class:`pw::IntrusiveMultiSet` is a new class like
597  ``std::multiset<Key, Compare>`` that uses intrusive items. Commit: `Add
598  IntrusiveSet and IntrusiveMultiSet <https://pwrev.dev/240053>`__.
599
600Changes:
601
602.. bde3f80e6e038cebe264283af625faf06a64d8d0
603
604* The ``erase`` methods of
605  :cpp:class:`pw::containers::future::IntrusiveList`,
606  :cpp:class:`pw::IntrusiveMap`, and :cpp:class:`pw::IntrusiveMultiMap`
607  have been overloaded to make them easier to use. Commit: `Add methods to
608  erase by item <https://pwrev.dev/243257>`__.
609
610.. _docs-changelog-2024-10-31-Modules-pw_log:
611
612pw_log
613------
614Changes:
615
616.. 661bf47f06e604384a4c7eb7bf79d2f3da71ee74
617
618* The signature for :c:macro:`PW_LOG` macro changed. A ``verbosity``
619  level must now always be passed as the second argument when invoking
620  ``PW_LOG``. Commit: `Explicitly pass verbosity to PW_LOG
621  <https://pwrev.dev/239035>`__.
622
623.. _docs-changelog-2024-10-31-Modules-pw_multibuf:
624
625pw_multibuf
626-----------
627New features:
628
629.. 9ab6e749821eddb8a82f7724c1af10ef6accc016
630
631* The new :cpp:func:`pw::multibuf::FromSpan` function creates a multibuf from
632  an existing span and a ``deleter`` callback. Commit: `Add FromSpan
633  <https://pwrev.dev/245132>`__. Bug: :bug:`373725545`.
634
635.. _docs-changelog-2024-10-31-Modules-pw_multisink:
636
637pw_multisink
638------------
639New features:
640
641.. 773331a904413e92d86c6e4cb658af77cf889d76
642
643* The new :cpp:func:`pw::multisink::UnsafeDumpMultiSinkLogsFromEnd`
644  utilitiy function dumps contents as a series of log entries. Commit:
645  `Add UnsafeForEachEntryFromEnd() <https://pwrev.dev/244556>`__. Bug:
646  :bug:`375653884`.
647
648.. _docs-changelog-2024-10-31-Modules-pw_polyfill:
649
650pw_polyfill
651-----------
652Changes:
653
654.. d3e10fad55171d8cdce399916acbf37b2dec732b
655
656* :c:macro:`PW_CONSTINIT` now fails when used without compiler support.
657  Commit: `Make PW_CONSTINIT support mandatory
658  <https://pwrev.dev/243892>`__.
659
660.. _docs-changelog-2024-10-31-Modules-pw_protobuf:
661
662pw_protobuf
663-----------
664Bug fixes:
665
666.. 368cf8be3cb1909453c9c2cc67ec951517943086
667
668* ``pw_protobuf`` now fails when the ``max_count`` or ``fixed_count``
669  options of ``pwpb`` are used on unsupported field types. Commit: `Fail
670  when a max count is set with an unsupported type
671  <https://pwrev.dev/236816>`__.
672
673Changes:
674
675.. 9525d75843cede1c67f78de7c2f86bb30ac98efe
676
677* Code generator options can now be specified in files ending with
678  ``.pwpb_options``. This is useful for projects that wish to strictly
679  separate Nanopb and ``pw_protobuf`` options. Commit: `Allow
680  .pwpb_options as an options file extension
681  <https://pwrev.dev/241137>`__.
682
683.. _docs-changelog-2024-10-31-Modules-pw_ring_buffer:
684
685pw_ring_buffer
686--------------
687New features:
688
689.. b90180561658453318c36b125fd8af37de713a3f
690
691* ``pw_ring_buffer`` readers now support the ``--`` decrement operator.
692  Commit: `Add a decrement operator <https://pwrev.dev/244555>`__. Bug:
693  :bug:`375653884`.
694
695.. _docs-changelog-2024-10-31-Modules-pw_system:
696
697pw_system
698---------
699New features:
700
701.. 1f2341cd64eaacb9de474510293397b50165b3b5
702
703* The new ``extra_frame_handlers`` parameter lets you add custom HDLC
704  frame handlers when using the Python-based ``pw_system`` console.
705  Commit: `Make console support extra hdlc frame handlers
706  <https://pwrev.dev/245192>`__.
707
708Bug fixes:
709
710.. 9b2dd9ccb35a49f57c053e88a55da35ad24fc93d
711
712* A bug was fixed where the latest logs were not being captured in crash
713  snapshots. Commit: `Ensure latest logs are captured in crash snapshot
714  <https://pwrev.dev/244557>`__. Bug: :bug:`375653884`.
715
716.. 0aa57cea2e06c48a24266b21d472155c2379189f
717
718* The ``pw_system`` crash dump now includes a main stack thread
719  backtrace. Commit: `Add main stack thread backtrace capture to crash
720  dump <https://pwrev.dev/242337>`__. Bug: :bug:`354767156`.
721
722.. ed55dbc3fa5eb05e2b557fad0eff2b1bf1f93751
723
724* The ``pw_system`` crash dump now includes FreeRTOS thread backtraces.
725  Commit: `Add freertos thread backtrace capture to crash dump
726  <https://pwrev.dev/234155>`__. Bug: :bug:`354767156`.
727
728.. _docs-changelog-2024-10-31-Modules-pw_thread:
729
730pw_thread
731---------
732Changes:
733
734.. e5db91d7df18444134ce4fede3a1a0c3a9f5c1fc
735
736* The legacy ``thread::Id`` alias has been migrated to
737  ``pw::Thread::id``. Commit: `Migrate to Thread::id
738  <https://pwrev.dev/238432>`__. Bug: :bug:`373524945`.
739
740.. _docs-changelog-2024-10-31-Modules-pw_tokenizer:
741
742pw_tokenizer
743------------
744New features:
745
746.. 4b7733f3f0c9e010ccd6bee3ff45d64b92e65fa7
747
748* :c:macro:`PW_APPLY` is a new general macro that supports macro
749  expansion and makes tokenizing enums easier. Commit: `Create generic
750  macro for tokenizing enums <https://pwrev.dev/242715>`__. Bug:
751  :bug:`3627557773`.
752
753.. _docs-changelog-2024-10-31-Modules-pw_toolchain:
754
755pw_toolchain
756------------
757New features:
758
759.. b40ecc98b47a37b187f40408ae0c3d89ef9b5f79
760
761* ``pw_toolchain`` now supports the Arm Cortex-M55F GCC toolchain.
762  Commit: `Add ARM Cortex-M55F GCC toolchain
763  <https://pwrev.dev/244672>`__. Bug: :bug:`375562597`.
764
765.. _docs-changelog-2024-10-31-Modules-pw_unit_test:
766
767pw_unit_test
768------------
769New features:
770
771.. ce0e3e2d1b7eec7cdf59fbb2ceed2b1cb3edd1ec
772
773* The new :c:macro:`PW_TEST_EXPECT_OK`, :c:macro:`PW_TEST_ASSERT_OK`,
774  and :c:macro:`PW_TEST_ASSERT_OK_AND_ASSIGN` macros provide test matchers
775  for :ref:`module-pw_status` and :ref:`module-pw_result` values. Commit:
776  `Define pw::Status matchers <https://pwrev.dev/243615>`__. Bugs:
777  :bug:`338094795`, :bug:`315370328`.
778
779Changes:
780
781.. 618eaa4f4c1ee0357bdfba85290a9a6e8c9aee71
782
783* :cpp:func:`RUN_ALL_TESTS` is now a function. Previously it was a
784  macro. Commit: `Use a function for RUN_ALL_TESTS()
785  <https://pwrev.dev/243889>`__.
786
787.. _docs-changelog-2024-10-31-Modules-pw_watch:
788
789pw_watch
790--------
791New features:
792
793.. 5e7d1a0fddab1204d94ff43cee833431eda75af8
794
795* ``pw_watch`` can now be invoked through ``bazelisk``. Commit: `Bazel
796  run support <https://pwrev.dev/242094>`__. Bug: :bug:`360140397`.
797
798.. _docs-changelog-2024-10-31-Docs:
799
800Docs
801====
802New features:
803
804.. c5e6cab3b190f4cdc32e3209582a7697f2992a85
805
806* The Sense tutorial has expanded guidance around :ref:`handling crashes
807  and viewing snapshots <showcase-sense-tutorial-crash-handler>`. Commit:
808  `Add crash handler section to sense tutorial
809  <https://pwrev.dev/242735>`__. Bug: :bug:`354767156`.
810
811.. _docs-changelog-2024-10-31-Targets:
812
813Targets
814=======
815
816.. _docs-changelog-2024-10-31-Targets-RP2350:
817
818RP2350
819------
820New features:
821
822.. 892394fe74db6decd3799873f910862cef6a182d
823
824* ``MemManage``, ``BusFault``, and ``UsageFault`` exception handlers are
825  now enabled on the RP2350 target. Commit: `Add MemManage, BusFault &
826  UsageFault exception handler <https://pwrev.dev/242336>`__. Bug:
827  :bug:`354767156`.
828
829.. _docs-changelog-2024-10-17:
830
831------------
832Oct 17, 2024
833------------
834Highlights (Oct 04, 2024 to Oct 17, 2024):
835
836* **Math module**: The new :ref:`module-pw_numeric` module is a collection of
837  mathematical utilities optimized for embedded systems.
838* **C++ Coroutines**: The new :ref:`docs-blog-05-coroutines` blog post
839  discusses the nuances of using coroutines in embedded systems.
840* **New SEEDs**: SEEDs :ref:`seed-0103` and :ref:`seed-0128` were accepted.
841
842.. _docs-changelog-2024-10-17-Modules:
843
844Modules
845=======
846
847.. _docs-changelog-2024-10-17-Modules-pw_allocator:
848
849pw_allocator
850------------
851New features:
852
853.. 9aae89c7bab1de5a914c462f814fec6528e27a0f
854
855* The new :cpp:func:`pw::Allocator::MakeUniqueArray` template function
856  allows a ``UniquePtr`` to hold an array of elements. Commit: `Add
857  UniquePtr::MakeUniqueArray <https://pwrev.dev/239913>`__.
858
859.. d3a6358972d5897266e2b5ecf50681a8e8456e5b
860
861* The new :cpp:class:`pw::allocator::BlockResult` class communicates the
862  results and side effects of allocation requests. Commit: `Add
863  BlockResult <https://pwrev.dev/232212>`__.
864
865Bug fixes:
866
867.. 57183dee645126c67dcccbb479c730492ef168f6
868
869* A data race was fixed. Commit: `Fix data race
870  <https://pwrev.dev/242736>`__. Bug: :bug:`372446436`.
871
872.. _docs-changelog-2024-10-17-Modules-pw_async2:
873
874pw_async2
875---------
876New features:
877
878.. 068949bbe9f8a5a03d9b44ae740461c4c01691ca
879
880* The new :cpp:func:`pw::async2::EnqueueHeapFunc` function heap-allocates
881  space for a function and enqueues it to run on a dispatcher.
882  Commit: `Add EnqueueHeapFunc <https://pwrev.dev/242035>`__.
883
884Changes:
885
886.. eb03d32b80c25d59000d86fc8417cce91cbc243a
887
888* :cpp:class:`pw::async2::PendFuncTask` now has a default template type
889  of :cpp:type:`pw::Function`. Commit: `Provide default template type for
890  PendFuncTask <https://pwrev.dev/242918>`__.
891
892.. _docs-changelog-2024-10-17-Modules-pw_build:
893
894pw_build
895--------
896New features:
897
898.. 7698704f57a69ff5a913f0b2d43d3cc419d10446
899
900* The newly relanded ``pw_copy_and_patch_file`` feature provides the
901  ability to patch a file during a Bazel or GN build. Commit: `Add
902  pw_copy_and_patch_file <https://pwrev.dev/240832>`__.
903
904.. _docs-changelog-2024-10-17-Modules-pw_cli_analytics:
905
906pw_cli_analytics
907----------------
908New features:
909
910.. 6ae64ef2889810d43682b85e0c793018ae9a507c
911
912* The new :ref:`module-pw_cli_analytics` module collects and transmits
913  analytics on usage of the ``pw`` command line interface. Commit:
914  `Initial commit <https://pwrev.dev/188432>`__. Bug: :bug:`319320838`.
915
916.. _docs-changelog-2024-10-17-Modules-pw_console:
917
918pw_console
919----------
920Bug fixes:
921
922.. 8bd77aba07ab3dce5220b23994cd3ecfbcefda10
923
924* A divide-by-zero error in the ``pw_console`` progress bar was fixed.
925  Commit: `Fix progress bar division by zero
926  <https://pwrev.dev/233033>`__.
927
928.. _docs-changelog-2024-10-17-Modules-pw_env_setup:
929
930pw_env_setup
931------------
932Changes:
933
934.. a789e9c308f3b289c950e8afb3d891fa5b7b39ac
935
936* ``//pw_env_setup/py/pw_env_setup/cipd_setup/black.json`` has been
937  removed. Commit: `Remove black.json <https://pwrev.dev/241359>`__.
938
939.. c42ec10b3824a5e15bc4e92d2065bd95143e9aad
940
941* Python 2 support has been removed from ``pw_env_setup``. Commit: `Drop
942  Python 2 support <https://pwrev.dev/242713>`__. Bug: :bug:`373905972`.
943
944.. _docs-changelog-2024-10-17-Modules-pw_numeric:
945
946pw_numeric
947----------
948New features:
949
950.. 0c98e51f046d2de13e5ea8509452b99beb6776ec
951
952* The new :ref:`module-pw_numeric` module is a collection of
953  mathematical utilities optimized for embedded systems. Commit: `New
954  module for mathematical utilities <https://pwrev.dev/240655>`__.
955
956.. 1eadbb9e0d8de149ee300c9f60933878498b3544
957
958* The new :cpp:func:`pw::IntegerDivisionRoundNearest` function performs
959  integer division and rounds to the nearest integer. It gives the same
960  result as ``std::round(static_cast<double>(dividend) /
961  static_cast<double>(divisor))`` but requires no floating point
962  operations and is ``constexpr``. Commit: `Rounded integer division
963  <https://pwrev.dev/240656>`__.
964
965.. _docs-changelog-2024-10-17-Modules-pw_protobuf:
966
967pw_protobuf
968-----------
969Changes:
970
971.. 205570386eac8fe6e0269b7fbbab1449eb565036
972
973* ``oneof`` protobuf fields can't be inlined within a message structure.
974  They must be encoded and decoded using callbacks. See
975  :ref:`pw_protobuf-per-field-apis`. Commit: `Force use of callbacks for oneof
976  <https://pwrev.dev/242392>`__. Bug: :bug:`373693434`.
977
978.. 6efc99b3ee854dd54a0b1465d9014c54e01b21b9
979
980* The ``import_prefix`` parameter in the
981  ``pw_protobuf.options.load_options`` Python function was replaced with
982  an ``options_files`` parameter that lets you directly specify the
983  location of ``.options`` files. Commit: `Support directly specifying
984  options file locations <https://pwrev.dev/240833>`__. Bug:
985  :bug:`253068333`.
986
987.. _docs-changelog-2024-10-17-Modules-pw_rpc:
988
989pw_rpc
990------
991Bug fixes:
992
993.. 05e93dadc080e45d624d92b80879297cfade417c
994
995* A bug was fixed where previously ``Call`` objects were not getting
996  reinitialized correctly. Commit: `Fix Call not getting reset on default
997  constructor assignment <https://pwrev.dev/239718>`__. Bug:
998  :bug:`371211198`.
999
1000.. _docs-changelog-2024-10-17-Modules-pw_spi:
1001
1002pw_spi
1003------
1004Changes:
1005
1006.. 4321a46654fae21df8e8fb971cd5c618b8b73d3f
1007
1008* :cpp:class:`pw::spi::Initiator` now uses a non-virtual interface (NVI)
1009  pattern. Commit: `Use non-virtual interface (NVI) pattern on
1010  pw::spi::Initiator <https://pwrev.dev/236234>`__. Bug: :bug:`308479791`.
1011
1012.. _docs-changelog-2024-10-17-Modules-pw_stream_uart_mcuxpresso:
1013
1014pw_stream_uart_mcuxpresso
1015-------------------------
1016Changes:
1017
1018.. d08c60cad881afa835a22d2bbfe36a0d6f018c1c
1019
1020* :ref:`module-pw_stream_uart_mcuxpresso` is being merged into
1021  :ref:`module-pw_uart_mcuxpresso`. Commit: `Remove dma_stream
1022  <https://pwrev.dev/241201>`__. Bug: :bug:`331617914`.
1023
1024.. _docs-changelog-2024-10-17-Modules-pw_system:
1025
1026pw_system
1027---------
1028New features:
1029
1030.. fd6b7a96cd142fcfbf979c2ebf3ea4ac2e342612
1031
1032* The new ``--debugger-listen`` and ``--debugger-wait-for-client``
1033  options make it easier to debug the ``pw_system`` console. Commit: `Add
1034  \`debugger-listen\` and \`debugger-wait-for-client\` options
1035  <https://pwrev.dev/233752>`__.
1036
1037.. _docs-changelog-2024-10-17-Modules-pw_tokenizer:
1038
1039pw_tokenizer
1040------------
1041New features:
1042
1043.. be439834757b0abcd0e81a77a0c8c39beca2d4db
1044
1045* All domains from ELF files are now loaded by default. Commit: `Load
1046  all domains from ELF files by default <https://pwrev.dev/239509>`__.
1047  Bugs: :bug:`364955916`, :bug:`265334753`.
1048
1049.. 56aa667aaa527d86241d27c5361e0d27f5aed06d
1050
1051* CSV databases now include the token's domain as the third column.
1052  Commit: `Include the domain in CSV databases
1053  <https://pwrev.dev/234414>`__. Bug: :bug:`364955916`.
1054
1055.. 9c37b722d9a807222c289069967222166c8613f5
1056
1057* Tokenizing enums is now supported. Commit: `Add support for tokenizing
1058  enums <https://pwrev.dev/236262>`__. Bug: :bug:`362753838`.
1059
1060Changes:
1061
1062.. 17df82d4c2b77d1667f24f5b27a256dbab31686f
1063
1064* When a domain is specified, any whitespace will be ignored in domain
1065  names and removed from the database. Commit: `Ignore whitespace in
1066  domain values <https://pwrev.dev/241212>`__. Bug: :bug:`362753840`.
1067
1068.. _docs-changelog-2024-10-17-Modules-pw_toolchain:
1069
1070pw_toolchain
1071------------
1072New features:
1073
1074.. 0125f4a94c827612f1ae863b60d3fa301fbd773c
1075
1076* The new :ref:`module-pw_toolchain-bazel-compiler-specific-logic`
1077  documentation provides guidance on how to handle
1078  logic that differs between compilers. Commit: `Add Bazel mechansim for
1079  clang/gcc-specific flags <https://pwrev.dev/238429>`__. Bug:
1080  :bug:`361229275`.
1081
1082.. _docs-changelog-2024-10-17-Modules-pw_uart:
1083
1084pw_uart
1085-------
1086New features:
1087
1088.. b39ad5c71df860223a8f908219bfdcfbdda1e5f5
1089
1090* The new :cpp:class:`pw::uart::UartStream` class implements the
1091  :cpp:class:`pw::stream::NonSeekableReaderWriter` interface on top of a
1092  UART device. Commit: `Add pw::uart::UartStream
1093  <https://pwrev.dev/241200>`__. Bug: :bug:`331603164`.
1094
1095.. f6a7bb781754447aa9eea82af60962070815b4f8
1096
1097* The new :cpp:class:`pw::uart::UartBlockingAdapter` class provides a
1098  blocking UART interface on top of a
1099  :cpp:class:`pw::uart::UartNonBlocking` device. Commit: `Add
1100  UartBlockingAdapter <https://pwrev.dev/238393>`__. Bug:
1101  :bug:`369679732`.
1102
1103.. bdcf65850213372533c9422fdec0a199af112161
1104
1105* The new :cpp:func:`pw::uart::UartNonBlocking::FlushOutput` function
1106  ensures that all enqueued data has been transmitted. Commit: `Add
1107  UartNonBlocking::FlushOutput() <https://pwrev.dev/238572>`__. Bug:
1108  :bug:`370051726`.
1109
1110.. _docs-changelog-2024-10-17-Modules-pw_web:
1111
1112pw_web
1113------
1114Changes:
1115
1116.. c4ea179e91c6aee6b9d41b9fe301269189970850
1117
1118* The ``device`` RPC APIs now support creating request messages for RPCs
1119  and calling the ``device`` API with those request messages. Commit:
1120  `Improvements to \`device\` RPC APIs <https://pwrev.dev/238052>`__.
1121
1122.. _docs-changelog-2024-10-17-Docs:
1123
1124Docs
1125====
1126New features:
1127
1128.. 91d4349e08e22c50e5a738dee31cc95724eab50d
1129
1130* The new :ref:`docs-blog-05-coroutines` blog post discusses the nuances
1131  of using coroutines in embedded systems. Commit: `Add coroutine blog
1132  post <https://pwrev.dev/216111>`__.
1133
1134Changes:
1135
1136.. 84375274c2a7dbc0fc29cb1e718d8cdfa05085fa
1137
1138* Guides for contributing ``pigweed.dev`` documentation have been
1139  consolidated into :ref:`contrib-docs-guides`. Commit: `Consolidate
1140  content for pigweed.dev contributors <https://pwrev.dev/242192>`__.
1141
1142.. _docs-changelog-2024-10-17-SEEDs:
1143
1144SEEDs
1145=====
1146New features:
1147
1148.. 385019a0292797dd63f00f008efe36d52d4d698a
1149
1150* SEED :ref:`seed-0103` was accepted. Commit: `(SEED-0103) pw_protobuf:
1151  Past, present, and future <https://pwrev.dev/133971>`__.
1152
1153.. ec62be9c7c9e28c8bae26d9e73f1ce341e5e5cd5
1154
1155* :ref:`seed-0128` was accepted. Commit: `(SEED-0128) Abstracting thread
1156  creation <https://pwrev.dev/206670>`__.
1157
1158.. _docs-changelog-2024-10-17-Targets:
1159
1160Targets
1161=======
1162
1163.. _docs-changelog-2024-10-17-Targets-rp2040:
1164
1165RP2040
1166------
1167New features:
1168
1169.. 8e0d91c3f7da31448419584ae9287de57ed5452f
1170
1171* A new helper, ``flash_rp2350``, was added to
1172  ``//targets/rp2040/flash.bzl``. Commit: `Update \`flash_rp2040\` helper
1173  with --chip argument <https://pwrev.dev/242917>`__.
1174
1175.. _docs-changelog-2024-10-03:
1176
1177-----------
1178Oct 3, 2024
1179-----------
1180
1181Highlights (Sep 20, 2024 to Oct 3, 2024):
1182
1183* The :ref:`module-pw_async2` and :ref:`module-pw_containers` docs
1184  now contain code examples that are built and tested alongside the rest
1185  of Pigweed, minimizing the chance that they bit rot over time.
1186* The new :cpp:class:`pw::async2::Dispatcher` class is a single-
1187  threaded, cooperatively scheduled runtime for async tasks.
1188* The new :cpp:class:`pw::uart::UartBase` class provides a common
1189  abstract base class for UART interfaces.
1190* :cpp:class:`pw::rpc::RawServerReaderWriter` and
1191  :cpp:class:`pw::rpc::RawClientReaderWriter` have new methods that let
1192  you directly serialize RPC payloads to the RPC system's encoding buffer
1193  instead of requiring a copy from an externally managed buffer.
1194
1195.. _docs-changelog-2024-10-03-Modules:
1196
1197Modules
1198=======
1199
1200.. _docs-changelog-2024-10-03-Modules-pw_allocator:
1201
1202pw_allocator
1203------------
1204New features:
1205
1206.. 020780642847dba69a9b2025f1f698fe3d8e4801
1207
1208* The new :cpp:func:`pw::allocator::CalculateFragmentation` method
1209  calculates a fragmentation metric. This should not be invoked on-device
1210  unless the device has robust floating-point support. Commit: `Add
1211  MeasureFragmentation <https://pwrev.dev/238417>`__.
1212
1213.. _docs-changelog-2024-10-03-Modules-pw_async2:
1214
1215pw_async2
1216---------
1217New features:
1218
1219.. 801fb32919777aefd7a734ce9c2c1e6aec782ab7
1220
1221* The new :cpp:class:`pw::async2::Dispatcher` class is a single-
1222  threaded, cooperatively scheduled runtime for async tasks. Commit:
1223  `Refactor Dispatcher to raise top-level API out of CRTP
1224  <https://pwrev.dev/237972>`__. Bug: :bug:`342000726`.
1225
1226.. 846bb7d3672e94c13451bec81098d3304d8395a9
1227
1228* The :ref:`module-pw_async2` docs now have examples. Commit: `Expand
1229  docs with examples <https://pwrev.dev/234095>`__.
1230
1231.. _docs-changelog-2024-10-03-Modules-pw_boot:
1232
1233pw_boot
1234-------
1235Changes:
1236
1237.. fba0833c176a79ec83403fa9d48407c5ddebb99f
1238
1239* The ``main()`` function forward declaration has been moved out of an
1240  explicit ``extern C`` block to prevent pedantic warnings in newer Clang
1241  toolchains. Commit: `Move main forward declaration out of extern "C"
1242  block <https://pwrev.dev/237333>`__. Bug: :bug:`366374135`.
1243
1244.. _docs-changelog-2024-10-03-Modules-pw_build:
1245
1246pw_build
1247--------
1248Changes:
1249
1250.. 53b16cd8d2907855b13bec9159286927de602a72
1251
1252* The rules that previously existed in ``//pw_build/pigweed.bzl`` have
1253  been split into separate files. If you relied on
1254  ``//pw_build/pigweed.bzl`` you may need to update some ``load()``
1255  statements in your Bazel files. Commit: `Break apart pigweed.bzl
1256  <https://pwrev.dev/239133>`__. Bug: :bug:`370792896`.
1257
1258.. _docs-changelog-2024-10-03-Modules-pw_chrono:
1259
1260pw_chrono
1261---------
1262New features:
1263
1264.. 279ab4a35543900b62e674d14c2e663532ad5a18
1265
1266* The new ``--stamp`` Bazel flag ensures that Bazel builds properly
1267  record the actual build time as opposed to a cached value. Commit:
1268  `Properly stamp build time in Bazel <https://pwrev.dev/237809>`__. Bug:
1269  :bug:`367739962`.
1270
1271.. _docs-changelog-2024-10-03-Modules-pw_containers:
1272
1273pw_containers
1274-------------
1275New features:
1276
1277.. 819dd2ceb430eae53909bea7d5a23c7743ef0fc2
1278
1279* The ``pw_containers`` docs now provides examples on how to add
1280  intrusive items to multiple containers. See
1281  :ref:`module-pw_containers-intrusive_list-example`. Commit:
1282  `Multiple container example <https://pwrev.dev/237472>`__.
1283
1284.. 85469bdd7f4b8eea95fad4514002383e09210a6f
1285
1286* The :ref:`module-pw_containers` docs now have code examples that are
1287  built and tested as part of the normal upstream Pigweed build, which
1288  helps ensure that they don't bit rot. Commit: `Add examples
1289  <https://pwrev.dev/236612>`__.
1290
1291Bug fixes:
1292
1293.. 92ab0326113d1d6732a6d81dcc25abb330053b22
1294
1295* A bug was fixed where nodes in an ``AATreeItem`` could become
1296  orphaned. Commit: `Fix tree rebalancing <https://pwrev.dev/237415>`__.
1297
1298.. _docs-changelog-2024-10-03-Modules-pw_log:
1299
1300pw_log
1301------
1302Changes:
1303
1304.. 5d9a1e84e7c55a7b194a8bf459b720cbba220d0c
1305
1306* The ``PW_MODULE_LOG_NAME_DEFINED`` macro has been removed. Commit:
1307  `Remove unused macro PW_MODULE_LOG_NAME_DEFINED
1308  <https://pwrev.dev/238554>`__.
1309
1310.. _docs-changelog-2024-10-03-Modules-pw_metric:
1311
1312pw_metric
1313---------
1314Bug fixes:
1315
1316.. 30dcf2b202c792599151e7b09699e836e3cc44a3
1317
1318* A bug causing ``pw::metric::Metric::Dump()`` and
1319  ``pw::metric::Group::Dump()`` to log invalid JSON objects was fixed.
1320  Commit: `Emit valid JSON from Metric::Dump
1321  <https://pwrev.dev/237933>`__.
1322
1323.. _docs-changelog-2024-10-03-Modules-pw_preprocessor:
1324
1325pw_preprocessor
1326---------------
1327Changes:
1328
1329.. 92438518417d49c3457090c1b3c57f71007743e8
1330
1331* ``PW_MACRO_ARG_COUNT`` now supports up to 256 arguments. Commit:
1332  `Expand PW_MACRO_ARG_COUNT to 256 arguments
1333  <https://pwrev.dev/237993>`__.
1334
1335.. _docs-changelog-2024-10-03-Modules-pw_presubmit:
1336
1337pw_presubmit
1338------------
1339Bug fixes:
1340
1341.. 6422c9ae137ad37a9ec172dcd95f294ce5631f82
1342
1343* A bug was fixed that was causing Pigweed's auto-generated ``rustdoc``
1344  API references to not be built. ``rustdoc`` documentation at
1345  ``pigweed.dev/rustdoc/*`` should be working again. Commit: `Have
1346  docs_build check rust docs <https://pwrev.dev/238189>`__. Bug:
1347  :bug:`369864378`.
1348
1349.. _docs-changelog-2024-10-03-Modules-pw_rpc:
1350
1351pw_rpc
1352------
1353New features:
1354
1355.. 8e2fc6cfe825631416043a972cdd93875562a4fd
1356
1357* :cpp:class:`pw::rpc::RawServerReaderWriter` and
1358  :cpp:class:`pw::rpc::RawClientReaderWriter` have new methods that let
1359  you directly serialize RPC payloads to the RPC system's encoding buffer
1360  instead of requiring a copy from an externally managed buffer. Commit:
1361  `Add callback writes to raw RPC call objects
1362  <https://pwrev.dev/239353>`__.
1363
1364.. _docs-changelog-2024-10-03-Modules-pw_spi:
1365
1366pw_spi
1367------
1368New features:
1369
1370.. c25923e13c339cc678e8900770a512b85064f99a
1371
1372* ``operator!=`` is now implemented. Commit: `Minor enhancements to
1373  pw::spi::Config <https://pwrev.dev/238932>`__.
1374
1375Changes:
1376
1377.. c25923e13c339cc678e8900770a512b85064f99a
1378
1379* ``operator()``, ``operator==``, and ``operator!=`` are now marked
1380  ``constexpr`` to enable compile-time equality checking. Commit: `Minor
1381  enhancements to pw::spi::Config <https://pwrev.dev/238932>`__.
1382
1383.. _docs-changelog-2024-10-03-Modules-pw_spi_rp2040:
1384
1385pw_spi_rp2040
1386-------------
1387Changes:
1388
1389.. 783b29c23dd865fde344501c1b99adba4c956479
1390
1391* ``spi_init()`` from the Pico SDK must be called before using the
1392  ``pw_spi`` initiator. Commit: `Minor cleanup
1393  <https://pwrev.dev/236233>`__.
1394
1395.. _docs-changelog-2024-10-03-Modules-pw_thread:
1396
1397pw_thread
1398---------
1399Changes:
1400
1401.. 30bdace4866039e26a05f8baa379630e066ad660
1402
1403* The old ``pw::Thread`` constructor that takes ``void(void*)`` has been
1404  removed from the public API. This is a breaking change. Constructor
1405  usage should be migrated to the new constructor that takes
1406  ``pw::Function<void()>``. Commit: `Make the deprecated Thread
1407  constructor private <https://pwrev.dev/236435>`__. Bug:
1408  :bug:`367786892`.
1409
1410.. 2a0f0dfccc19b86a686777afa647b0c75a87c863
1411
1412* The ``pw::thread::Thread`` class was renamed to
1413  :cpp:type:`pw::Thread`. Commit: `Migrate from pw::thread::Thread to
1414  pw::Thread <https://pwrev.dev/236723>`__.
1415
1416.. f1070484e7d2f4e429332c6d8520a3676b8cb965
1417
1418* ``pw::thread::Id`` has been renamed to ``pw::Thread::id``. Commit:
1419  `Introduce pw::Thread and pw::Thread::id <https://pwrev.dev/236796>`__.
1420
1421.. _docs-changelog-2024-10-03-Modules-pw_tokenizer:
1422
1423pw_tokenizer
1424------------
1425New features:
1426
1427.. e26be58d6db0215e6a762a5a28ad74584e9a0482
1428
1429* The new :c:macro:`PW_TOKENIZER_DEFINE_TOKEN` macro makes it easier to
1430  support tokenized enums and domains. Commit: `Expose API to define new
1431  token entry <https://pwrev.dev/238272>`__. Bug: :bug:`369881416`.
1432
1433Changes:
1434
1435.. 02a68bb680ebddeba8f0ad6cbbc6bb81d7568759
1436
1437* CSV databases now have 4 columns: token, date removed, domain, and
1438  string. The domain column was added as part of :ref:`seed-0105`. Legacy
1439  databases that only support the other 3 columns continue to be
1440  supported. Tokens in legacy databases are always in the default domain
1441  ``""``. Commit: `Support CSV databases with the domain
1442  <https://pwrev.dev/234413>`__. Bug: :bug:`364955916`.
1443
1444.. _docs-changelog-2024-10-03-Modules-pw_toolchain:
1445
1446pw_toolchain
1447------------
1448Changes:
1449
1450.. bf7078a044353df9683ecb65561a0edca45a4f95
1451
1452* The ``pw_toolchain`` docs were refactored. Bazel-specific guidance is
1453  now in :ref:`module-pw_toolchain-bazel` and GN-specific guidance is now
1454  in :ref:`module-pw_toolchain-gn`. Commit: `Split out build-system
1455  specific docs <https://pwrev.dev/238816>`__.
1456
1457.. 3d0fac908c139ce83eed93727601d13747b03bf7
1458
1459* The Bazel rules at ``//pw_toolchain/args/BUILD.bazel`` moved to
1460  ``//pw_toolchain/cc/args/BUILD.bazel``. If you rely on these rules you
1461  may need to update your ``load()`` statements. Commit: `Move
1462  pw_toolchain/args to pw_toolchain/cc/args <https://pwrev.dev/238817>`__.
1463
1464.. _docs-changelog-2024-10-03-Modules-pw_transfer:
1465
1466pw_transfer
1467-----------
1468Bug fixes:
1469
1470.. da9a7e7cc2bd983d428949a6f5d85b9757b5178f
1471
1472* A bug was fixed where resumed transfers would send a window of ``0``
1473  repeatedly. Commit: `Fix offset receive transfer startup
1474  <https://pwrev.dev/237095>`__. Bug: :bug:`368620868`.
1475
1476.. _docs-changelog-2024-10-03-Modules-pw_uart:
1477
1478pw_uart
1479-------
1480New features:
1481
1482.. 7dc3b1b2a69972ae19bbe43f922aefd6dda73a3e
1483
1484* The new :cpp:class:`pw::uart::UartBase` class provides a common
1485  abstract base class for UART interfaces. Commit: `Add UartBase class
1486  <https://pwrev.dev/238092>`__. Bug: :bug:`369678735`.
1487
1488.. b4e75393442526d409968e4aac685515944b3e3e
1489
1490* The new :cpp:func:`pw::uart::Uart::ReadAtLeast` method reads data from
1491  the UART and blocks until at least the specified number of bytes have
1492  been received. The new :cpp:func:`pw::uart::Uart::ReadExactly` method
1493  reads data from the UART and blocks until the entire buffer has been
1494  filled. Commit: `Add ReadAtLeast and ReadExactly methods
1495  <https://pwrev.dev/236268>`__. Bug: :bug:`368149122`.
1496
1497.. f946f6ae13c3bbc2a648b36f9ff55642e9d23b34
1498
1499* The new :cpp:class:`pw::uart::UartNonBlocking` class provides a
1500  callback-based interface for performing non-blocking UART communication.
1501  It defines the interface that concrete UART implementations must adhere
1502  to. Commit: `Add uart_non_blocking.h API <https://pwrev.dev/210371>`__.
1503  Bugs: :bug:`341356437`, :bug:`331617095`.
1504
1505.. 1dc9a789f52aad1f0e738a1cfd5993e2272c38d2
1506
1507* The new :cpp:func:`pw::uart::Uart::SetFlowControl` method lets
1508  applications configure hardware flow control on UART devices. Commit:
1509  `Add method to set flow control <https://pwrev.dev/237953>`__.
1510
1511Changes:
1512
1513.. d31705b84d24f0ef17e6b8eef6cae13f96f942e4
1514
1515* ``pw::uart::Uart::ConservativeReadAvailable()`` was moved to
1516  :cpp:func:`pw::uart::UartBase::ConservativeReadAvailable()` and
1517  ``pw::uart::Uart::ClearPendingReceiveBytes()`` was moved to
1518  :cpp:func:`pw::uart::UartBase::ClearPendingReceiveBytes()`. Commit:
1519  `Move non-blocking methods from Uart to UartBase
1520  <https://pwrev.dev/238533>`__. Bug: :bug:`369679732`.
1521
1522.. _docs-changelog-2024-10-03-Modules-pw_uart_mcuxpresso:
1523
1524pw_uart_mcuxpresso
1525------------------
1526Bug fixes:
1527
1528.. 94d2c3995c8a14995490ef7de015e933a960c2d5
1529
1530* A bug was fixed where the ``pw::uart::DmaUartMcuxpresso::Deinit()``
1531  method didn't clear an initialization flag, which caused the
1532  ``pw::uart::DmaUartMcuxpresso::Init()`` method to be skipped on
1533  subsequent enables. Commit: `Fix disable bug
1534  <https://pwrev.dev/237394>`__.
1535
1536.. _docs-changelog-2024-10-03-Docs:
1537
1538Docs
1539====
1540New features:
1541
1542.. 2ef99131bbb73e475f64281b6515eedba4a8cb79
1543
1544* The Pigweed blog now has an `RSS feed <https://pigweed.dev/rss.xml>`_.
1545  Commit: `Create RSS feed for blog <https://pwrev.dev/225491>`__. Bug:
1546  :bug:`345857642`.
1547
1548.. 8f18755dc9a225caacf2b190d1114ebfda4a2642
1549
1550* The new blog post :ref:`blog-04-fixed-point` outlines how replacing
1551  soft floats with fixed-point arithmetic can result in speed improvements
1552  and binary size reductions without sacrificing correctness. Commit: `Add
1553  fixed point blog <https://pwrev.dev/234312>`__.
1554
1555Bug fixes:
1556
1557.. e81cd5e642a0c92264caafb14a2f4931cb14fced
1558
1559* When a Pigweed module is listed as supporting Rust in
1560  ``//docs/module_metadata.json``, a link to that module's ``rustdoc`` API
1561  reference is now auto-generated in the ``pigweed.dev`` site nav. Commit:
1562  `Auto-link to Rust API references <https://pwrev.dev/237934>`__. Bug:
1563  :bug:`328503976`.
1564
1565.. _docs-changelog-2024-10-03-SEEDs:
1566
1567SEEDs
1568=====
1569Changes:
1570
1571.. 905bce3bd61280a8254ac5b3b2f78e2d3059faa0
1572
1573* SEED-0123 was rejected because Pigweed ended up upstreaming the
1574  relevant APIs to ``rules_cc`` instead of sprouting them into a separate
1575  repo. Commit: `(SEED-123) Reject the SEED <https://pwrev.dev/236453>`__.
1576
1577.. _docs-changelog-2024-10-03-Targets:
1578
1579Targets
1580=======
1581.. a5a199593f1375177d5805f882f303d4c8b8cea2
1582
1583* The ``main()`` forward declaration for ``emcraft_sf2_som``,
1584  ``host_device_simulator``, and ``stm32f429i_disc1_stm32cube`` are no
1585  longer explicitly marked ``extern C`` to prevent pedantic warnings in
1586  newer Clang toolchains. Commit: `Remove implicit extern C
1587  <https://pwrev.dev/237092>`__. Bug: :bug:`366374135`.
1588
1589.. _docs-changelog-2024-09-19:
1590
1591------------
1592Sep 19, 2024
1593------------
1594Highlights (Sep 06, 2024 to Sep 19, 2024):
1595
1596* **New container classes**: The new :cpp:class:`pw::IntrusiveMap` and
1597  :cpp:class:`pw::IntrusiveMultiMap` classes can be used for associative
1598  dictionaries, sorted lists, and more.
1599* **Protobuf Editions**: Initial support for `Protobuf Editions
1600  <https://protobuf.dev/editions/overview>`__ was added for GN-based and
1601  CMake-based projects.
1602* **Token domains**: The :ref:`Detokenizer
1603  <module-pw_tokenizer-detokenization>` now supports
1604  :ref:`token domains <seed-0105>`.
1605
1606.. _docs-changelog-2024-09-19-Modules:
1607
1608Modules
1609=======
1610
1611.. _docs-changelog-2024-09-19-Modules-pw_allocator:
1612
1613pw_allocator
1614------------
1615New features:
1616
1617.. d5fcc90b39ee7568855390535fa854cea8f33c95
1618
1619* The new :c:macro:`PW_ALLOCATOR_STRICT_VALIDATION` option lets you
1620  enable more expensive checks to aggressively enforce invariants when
1621  testing. The new :c:macro:`PW_ALLOCATOR_BLOCK_POISON_INTERVAL` option
1622  allows setting the poisoning rate more easily from the build rather than
1623  in code via template parameters. See
1624  :ref:`module-pw_allocator-module-configuration`. Commit: `Add module config
1625  <https://pwrev.dev/232211>`__.
1626
1627Bug fixes:
1628
1629.. 82759ccb711c3f34320ae9ae37bf70a029baec57
1630
1631* A bug was fixed where ``pw_allocator`` always split the first block
1632  even if there was not enough room for the first block to be split into
1633  two, which could cause heap corruption and crashes. Commit: `Check for
1634  room to split the first block <https://pwrev.dev/235312>`__. Bug:
1635  :bug:`366175024`.
1636
1637.. _docs-changelog-2024-09-19-Modules-pw_assert:
1638
1639pw_assert
1640---------
1641Changes:
1642
1643.. cfcf0059926589e26f318e29df8733e5a09c2928
1644
1645* :c:macro:`PW_CHECK_OK` now accepts any expression that's convertible
1646  to :cpp:class:`pw::Status`. Commit: `Update PW_CHECK_OK() to handle any
1647  expr convertible to Status <https://pwrev.dev/234820>`__. Bugs:
1648  :bug:`357682413`, :bug:`365592494`.
1649
1650.. _docs-changelog-2024-09-19-Modules-pw_async2:
1651
1652pw_async2
1653---------
1654New features:
1655
1656.. cfcbaf5bbc67288b5e8954f22528c4de9312effe
1657
1658* The new
1659  :cpp:func:`pw::async2::SimulatedTimeProvider::AdvanceUntilNextExpiration`
1660  utility method is useful for advancing test time without
1661  random periods or endless iterations. Commit: `Add more
1662  SimulatedTimeProvider utilities <https://pwrev.dev/234929>`__.
1663
1664Changes:
1665
1666.. ed0fd1f45a3a137965dbb2075227b8ef0e91f935
1667
1668* Coroutines now log the requested size when an allocation fails.
1669  Commit: `Log size of failed coroutine allocations
1670  <https://pwrev.dev/234801>`__.
1671
1672.. _docs-changelog-2024-09-19-Modules-pw_build:
1673
1674pw_build
1675--------
1676Bug fixes:
1677
1678.. 3919d9638b6454512595c8ad39fb8806d4ac9629
1679
1680* An issue was fixed where bootstrap failed when
1681  ``pw_rust_static_library`` was used. Commit: `Fix Undefined identifier
1682  <https://pwrev.dev/232371>`__.
1683
1684.. _docs-changelog-2024-09-19-Modules-pw_bytes:
1685
1686pw_bytes
1687--------
1688New features:
1689
1690.. cda5ba673366d189e0ea326a0fa808df181730a7
1691
1692* The new :cpp:class:`pw::PackedPtr` template class provides a way to
1693  store extra data in the otherwise unused least significant bits of a
1694  pointer. Commit: `Add PackedPtr <https://pwrev.dev/235104>`__.
1695
1696.. _docs-changelog-2024-09-19-Modules-pw_containers:
1697
1698pw_containers
1699-------------
1700New features:
1701
1702.. df3b7ba1f94902e81e375ce9935749163c411515
1703
1704* ``pw::IntrusiveList`` now has a :ref:`size report
1705  <module-pw_containers-intrusivelist-size-report>`. Commit:
1706  `Add IntrusiveForwardList size report to the docs
1707  <https://pwrev.dev/233651>`__.
1708
1709.. 8a3250d2f4287c2f66c4afd7679f9b10f789e764
1710
1711* The new :cpp:class:`pw::IntrusiveMap` and
1712  :cpp:class:`pw::IntrusiveMultiMap` classes can be used for associative
1713  dictionaries, sorted lists, and more. Commit: `Add IntrusiveMap and
1714  IntrusiveMultiMap <https://pwrev.dev/216828>`__.
1715
1716Changes:
1717
1718.. 314e457eaf3a801115542d777e2157e6df85fb31
1719
1720* ``pw::IntrusiveList<T>`` was renamed to
1721  ``pw::IntrusiveForwardList<T>`` and a new doubly-linked intrusive list
1722  was added as ``pw::containers::future::IntrusiveList<T>``. An alias,
1723  ``pw::IntrusiveList<T>``, was added to maintain compatibility with
1724  existing code and will be removed in the future. The original
1725  implementation can still be temporarily enabled by setting
1726  ``PW_CONTAINERS_USE_LEGACY_INTRUSIVE_LIST``. Commit: `Add doubly linked
1727  list <https://pwrev.dev/230811>`__. Bug: :bug:`362348318`.
1728
1729.. _docs-changelog-2024-09-19-Modules-pw_env_setup:
1730
1731pw_env_setup
1732------------
1733Changes:
1734
1735.. 16f0f6387505dc27e7c1a76387b05524752b4602
1736
1737* The Git submodule check is now skipped when no ``.git`` file or
1738  directory is detected. Commit: `Add check for git in
1739  _check_submodule_presence <https://pwrev.dev/234212>`__. Bug:
1740  :bug:`365557573`.
1741
1742.. _docs-changelog-2024-09-19-Modules-pw_ide:
1743
1744pw_ide
1745------
1746Bug fixes:
1747
1748.. 145b45747105fb95e5625c00a7533e5375d124ea
1749
1750* When ``clangd`` is not found, ``pw ide sync`` now cleanly handles the
1751  lack of ``clangd`` and successfully completes the rest of the sync.
1752  Commit: `Don't fail sync on missing clangd
1753  <https://pwrev.dev/236475>`__. Bug: :bug:`349189723`.
1754
1755.. _docs-changelog-2024-09-19-Modules-pw_protobuf:
1756
1757pw_protobuf
1758-----------
1759New features:
1760
1761.. b299522cffb0a18e07528e923f376ceee3e9c188
1762
1763* Initial support for `Protobuf Editions
1764  <https://protobuf.dev/editions/overview>`__ was added for GN-based and
1765  CMake-based projects. Commit: `Basic edition support
1766  <https://pwrev.dev/235873>`__.
1767
1768.. _docs-changelog-2024-09-19-Modules-pw_spi_linux:
1769
1770pw_spi_linux
1771------------
1772Bug fixes:
1773
1774.. eefd313bdb13098552cd713598b937debe80d3d4
1775
1776* A performance issue was fixed where ``Configure()`` was being called
1777  on each ``pw::spi::Device::WriteRead()`` call. Commit: `Avoid
1778  unnecessary ioctl()s in Configure() <https://pwrev.dev/235877>`__. Bug:
1779  :bug:`366541694`.
1780
1781.. _docs-changelog-2024-09-19-Modules-pw_spi_mcuxpresso:
1782
1783pw_spi_mcuxpresso
1784-----------------
1785Changes:
1786
1787.. 9d175062d56972f082ce99753092b75419a228ce
1788
1789* ``pw::spi::McuxpressoInitiator::DoConfigure()`` was renamed to
1790  ``pw::spi::McuxpressoInitiator::DoConfigureLocked()``. Commit: `Rename
1791  DoConfigure() to DoConfigureLocked() <https://pwrev.dev/236232>`__.
1792
1793.. _docs-changelog-2024-09-19-Modules-pw_sys_io_stm32cube:
1794
1795pw_sys_io_stm32cube
1796-------------------
1797Bug fixes:
1798
1799.. b0f73feb04effde3b7751c53c21b7a163f234eb8
1800
1801* A bug was fixed where the GPIO mode of the UART RX GPIO pin on
1802  STM32F1XX devices was not being correctly set. Commit: `Fix UART RX GPIO
1803  mode for f1xx family <https://pwrev.dev/235332>`__.
1804
1805.. _docs-changelog-2024-09-19-Modules-pw_system:
1806
1807pw_system
1808---------
1809New features:
1810
1811.. 5e148c19477521afbbedcc8a91a2c5b2a07bc334
1812
1813* The console's new ``timestamp_decoder`` constructor parameter lets
1814  applications provide custom timestamp parsers. Commit: `Support
1815  timestamp parser as an argument <https://pwrev.dev/234931>`__. Bug:
1816  :bug:`344606797`.
1817
1818Changes:
1819
1820.. faac61757b5428be3787729d328f6f2f3ebfa9f1
1821
1822* The log library header (``pw_system/log.h``) of ``pw_system`` is now
1823  public and can be used outside of ``pw_system``. Commit: `Make log
1824  library header public <https://pwrev.dev/233411>`__.
1825
1826.. _docs-changelog-2024-09-19-Modules-pw_thread:
1827
1828pw_thread
1829---------
1830Changes:
1831
1832.. 8a67d6b57b526757ffa010be2be402c42cd13ac4
1833
1834* ``pw::thread::Thread`` now takes ``pw::Function<void()>``, which
1835  should be used in place of the ``void(void*)`` function pointer and
1836  ``void*`` argument. Commit: `Mark legacy function* / void* constructor
1837  as deprecated <https://pwrev.dev/236454>`__. Bug: :bug:`367786892`.
1838
1839.. _docs-changelog-2024-09-19-Modules-pw_tokenizer:
1840
1841pw_tokenizer
1842------------
1843New features:
1844
1845.. 9fb87e78e4c41778fc950714d58e6602f63d27e6
1846
1847* The :ref:`Detokenizer <module-pw_tokenizer-detokenization>` now
1848  supports :ref:`token domains <seed-0105>`. Commit:
1849  `Add token domain support to Detokenizer <https://pwrev.dev/234968>`__.
1850  Bug: :bug:`362752722`.
1851
1852.. 08ff555993b8ab250ea03a9f12aaf5c2d1c9c705
1853
1854* :py:class:`pw_tokenizer.tokens.Database` now supports :ref:`token
1855  domains <seed-0105>`. Commit: `Use domains in the Python tokens.Database
1856  class <https://pwrev.dev/234412>`__.
1857
1858.. _docs-changelog-2024-09-19-Modules-pw_toolchain:
1859
1860pw_toolchain
1861------------
1862New features:
1863
1864.. 40f756e2d3c40eeb32832309dbcae989fb750268
1865
1866* ``WORKSPACE`` toolchain registration is now configurable so that
1867  downstream projects can manually control which toolchains get
1868  registered. Commit: `Make toolchain registration configurable
1869  <https://pwrev.dev/235712>`__. Bug: :bug:`346388161`.
1870
1871.. _docs-changelog-2024-09-19-Modules-pw_transfer:
1872
1873pw_transfer
1874-----------
1875Bug fixes:
1876
1877.. f1f654a15a3adce476c2d68643eee56f3c225dd4
1878
1879* A bug was fixed where a handshake timeout was not set after
1880  ``START_ACK`` is processed. Commit: `Bugfix for start handshake, and
1881  rate limit logs <https://pwrev.dev/236572>`__. Bug: :bug:`361281209`.
1882
1883Changes:
1884
1885.. 2496aee1a4ab3d98526a7357943b69347a39903a
1886
1887* When a receiver receives a chunk of data it already has the receiver
1888  now sends a ``PARAMETERS_CONTINUE`` chunk instead of requesting
1889  retransmission. Commit: `Send continue parameters for already received
1890  chunks <https://pwrev.dev/235100>`__.
1891
1892.. f1f654a15a3adce476c2d68643eee56f3c225dd4
1893
1894* TX data chunk logs have been rate-limited to only send once every 3
1895  seconds. Commit: `Bugfix for start handshake, and rate limit logs
1896  <https://pwrev.dev/236572>`__. Bug: :bug:`361281209`.
1897
1898.. _docs-changelog-2024-09-19-Modules-pw_uart_mcuxpresso:
1899
1900pw_uart_mcuxpresso
1901------------------
1902New features:
1903
1904.. e8ab2b0ac31c0dde6febd0d384c0ea7d688f6803
1905
1906* Flow control can now be configured. Commit: `Add support for
1907  configuring flow control <https://pwrev.dev/236896>`__. Bug:
1908  :bug:`368150004`.
1909
1910Changes:
1911
1912.. e8ab2b0ac31c0dde6febd0d384c0ea7d688f6803
1913
1914* Flow control, parity mode, and stop bits now have default values.
1915  Commit: `Add support for configuring flow control
1916  <https://pwrev.dev/236896>`__. Bug: :bug:`368150004`.
1917
1918.. _docs-changelog-2024-09-19-Build-systems:
1919
1920Build systems
1921=============
1922
1923.. _docs-changelog-2024-09-19-Build-systems-Bazel:
1924
1925Bazel
1926-----
1927New features:
1928
1929.. 4ceb5b8bf0faf75c0b051114abf85a2ea73ca39c
1930
1931* The new ``do_not_build`` tag specifies targets that should be excluded
1932  from wildcard builds. The new ``do_not_run_test`` tag specifies test
1933  targets that should be built but not executed. Commit: `Introduce
1934  do_not_build, do_no_run_test tags <https://pwrev.dev/223492>`__. Bug:
1935  :bug:`353531487`.
1936
1937.. 54679d205e4888302ab24882e6fb64bf8ba964c6
1938
1939* `Platform-based flags <https://github.com/bazelbuild/proposals/blob/ma
1940  in/designs/2023-06-08-platform-based-flags.md>`__ have been re-enabled.
1941  Commit: `Re-enable platform-based flags <https://pwrev.dev/234135>`__.
1942  Bug: :bug:`301334234`.
1943
1944.. _docs-changelog-2024-09-19-Miscellaneous:
1945
1946Miscellaneous
1947=============
1948Bug fixes:
1949
1950.. 982c7f42878871e7f85dbc5420ff17f0b8ede237
1951
1952* An issue was fixed where the Fuchsia SDK was always fetched during
1953  Bazel workspace initialization and caused unnecessary downloads. Commit:
1954  `Use @fuchsia_clang as a cipd repository <https://pwrev.dev/233531>`__.
1955  Bug: :bug:`346416385`.
1956
1957-----------
1958Sep 5, 2024
1959-----------
1960.. note::
1961
1962   This changelog update is shorter than previous ones because we're
1963   experimenting with only showing user-facing new features, changes,
1964   and bug fixes. I.e. we're omitting commits that don't affect
1965   downstream Pigweed projects.
1966
1967Highlights (Aug 24, 2024 to Sep 5, 2024):
1968
1969* **New backends**: :ref:`module-pw_async_fuchsia` (a ``pw_async``
1970  backend for Fuchsia that implements ``Task`` and ``FakeDispatcher``),
1971  :ref:`module-pw_log_fuchsia` (a ``pw_log`` backend for Fuchsia
1972  that uses the ``fuchsia.logger.LogSink`` FIDL API to send logs),
1973  :ref:`module-pw_random_fuchsia` (a ``pw_random`` backend for Fuchsia
1974  that implements :cpp:class:`pw::random::RandomGenerator`)
1975  and :ref:`module-pw_uart_mcuxpresso` (a ``pw_uart`` backend for
1976  NXP MCUXpresso devices).
1977* **New theme**: The underlying Sphinx theme powering ``pigweed.dev`` is now
1978  `PyData <https://pydata-sphinx-theme.readthedocs.io/en/stable/>`_. In
1979  addition to improving website usability, this theme should also reduce
1980  the ``pigweed.dev`` maintenance workload over time. See
1981  :ref:`seed-0130` for more information.
1982* **Arm Cortex-M55 support**: ``pw_toolchain`` and ``pw_system`` now
1983  support Arm Cortex-M55 cores.
1984* **Bazel cloud demo**: The new :ref:`Bazel cloud features
1985  <showcase-sense-tutorial-bazel_cloud>`
1986  page in the Sense tutorial shows you how to use BuildBuddy
1987  to share logs and speed up builds with remote caching.
1988
1989Modules
1990=======
1991
1992pw_async2
1993---------
1994* The new :cpp:class:`pw::async2::TimeProvider` class can be used to
1995  create timers in a dependency-injection-friendly way.
1996  Commit: `Add TimeProvider
1997  <https://pwrev.dev/232411>`__
1998
1999pw_async_fuchsia
2000----------------
2001* :ref:`module-pw_async_fuchsia` is a new ``pw_async`` backend for Fuchsia
2002  that implements ``Task`` and ``FakeDispatcher``.
2003  Commit: `Create pw_async Fuchsia backend
2004  <https://pwrev.dev/230896>`__
2005
2006pw_chrono
2007---------
2008* :cpp:class:`pw::chrono::VirtualClock` is a new virtual base class for
2009  timers that enables writing
2010  timing-sensitive code that can be tested using simulated clocks such as
2011  :cpp:class:`pw::chrono::SimulatedSystemClock`.
2012  Commit: `Add VirtualClock
2013  <https://pwrev.dev/233031>`__
2014
2015pw_cli
2016------
2017* The new :py:meth:`pw_cli.git_repo.GitRepo.commit_date()` method returns
2018  the datetime of a specified commit.
2019  Commit: `Add in option to retrieve commit date
2020  <https://pwrev.dev/216275>`__
2021
2022pw_digital_io_mcuxpresso
2023------------------------
2024* The GPIO clock is now enabled even when GPIO is disabled.
2025  Commit: `Enable gpio clock even when disabling gpio
2026  <https://pwrev.dev/232131>`__
2027  (issue `#356689514 <https://pwbug.dev/356689514>`__)
2028
2029pw_log_fuchsia
2030--------------
2031* :ref:`module-pw_log_fuchsia` is a new ``pw_log`` backend that uses the
2032  ``fuchsia.logger.LogSink`` FIDL API to send logs.
2033  Commit: `Create pw_log Fuchsia backend
2034  <https://pwrev.dev/231052>`__
2035
2036pw_log_rpc
2037----------
2038* ``pw_log_rpc.LogStreamHandler.listen_to_logs()`` was renamed to
2039  :py:meth:`pw_log_rpc.LogStreamHandler.start_logging()`.
2040  Commit: `Invoke pw.log.Logs.Listen() to restore prior behavior
2041  <https://pwrev.dev/233991>`__
2042  (issue `#364421706 <https://pwbug.dev/364421706>`__)
2043
2044pw_log_zephyr
2045-------------
2046* Use of shell ``printf`` macros within ``if`` blocks that don't use
2047  braces no longer causes compile errors.
2048  Commit: `Make shell printf macros safe for use in if/else blocks
2049  <https://pwrev.dev/232031>`__
2050
2051pw_package
2052----------
2053* ``picotool`` installation on macOS was fixed.
2054  Commit: `Fix pictotool install on mac
2055  <https://pwrev.dev/234238>`__
2056
2057pw_random_fuchsia
2058-----------------
2059* :ref:`module-pw_random_fuchsia` provides an implementation of
2060  :cpp:class:`pw::random::RandomGenerator` that uses Zircon.
2061  Commit: `Create Fuchsia backend for pw_random
2062  <https://pwrev.dev/230895>`__
2063
2064pw_rpc
2065------
2066* New documentation (:ref:`module-pw_rpc-guides-raw-fallback`) was added that
2067  explains how to define a raw method within a non-raw service.
2068  Commit: `Provide examples of raw methods in docs
2069  <https://pwrev.dev/232877>`__
2070* Many RPC-related classes were moved out of ``pw_hdlc`` and into
2071  ``pw_rpc`` or ``pw_stream``.
2072  Commit: `Relocate RPC classes from pw_hdlc
2073  <https://pwrev.dev/230172>`__
2074  (issues `#330177657 <https://pwbug.dev/330177657>`__,
2075  `#360178854 <https://pwbug.dev/360178854>`__)
2076
2077pw_spi_mcuxpresso
2078-----------------
2079* The new ``pw::spi::FifoErrorCheck`` enum lets you configure whether
2080  ``pw::spi::McuxpressoResponder`` instances should log FIFO errors.
2081  Commit: `Add check_fifo_error to responder config
2082  <https://pwrev.dev/232215>`__
2083
2084pw_stream_uart_linux
2085--------------------
2086* The new :cpp:struct:`pw::stream::UartStreamLinux::Config` struct lets
2087  you configure baud rate and control flow.
2088  Commit: `Add Config struct
2089  <https://pwrev.dev/233591>`__
2090  (issue `#331871421 <https://pwbug.dev/331871421>`__)
2091
2092pw_sync
2093-------
2094* :cpp:func:`pw::sync::InterruptSpinLock::try_lock` and similar functions
2095  have been annotated with ``[[nodiscard]]`` which means that ignoring
2096  their return values will result in compiler warnings.
2097  Commit: `[[nodiscard]] for try_lock() and similar functions
2098  <https://pwrev.dev/229311>`__
2099
2100pw_system
2101---------
2102* :ref:`module-pw_system` now supports Arm Cortex-M55 systems.
2103  Commit: `Support ARM Cortex M55 system
2104  <https://pwrev.dev/231632>`__
2105  (issue `#361691368 <https://pwbug.dev/361691368>`__)
2106
2107pw_thread
2108---------
2109* :cpp:class:`pw::thread::Options` has moved to its own header
2110  (``pw_thread/options.h``) to make it possible to work with the class
2111  without relying on the thread facade.
2112  Commit: `Move pw::thread::Options to its own header
2113  <https://pwrev.dev/232151>`__
2114
2115pw_tokenizer
2116------------
2117* In Python the detokenizer prefix is now set in the
2118  :py:class:`pw_tokenizer.detokenize.Detokenizer` constructor.
2119  Commit: `Set prefix in Detokenizer; fix typing issues
2120  <https://pwrev.dev/234311>`__
2121
2122pw_toolchain
2123------------
2124* Arm Cortex-M55 toolchain support was added.
2125  Commit: `Add ARM Cortex-M55 toolchain
2126  <https://pwrev.dev/231631>`__
2127  (issue `#361691368 <https://pwbug.dev/361691368>`__)
2128
2129pw_uart_mcuxpresso
2130------------------
2131* The new :ref:`module-pw_uart_mcuxpresso` module is a
2132  :ref:`module-pw_uart` backend for NXP MCUXpresso devices.
2133  Commit: `Introduce DMA UART backend for NXP devices
2134  <https://pwrev.dev/232831>`__
2135
2136Docs
2137====
2138* New documentation (:ref:`docs-pw-style-cpp-logging`) about logging best
2139  practices was added.
2140  Commit: `Add logging recommendations
2141  <https://pwrev.dev/210204>`__
2142* The new :ref:`Bazel cloud features <showcase-sense-tutorial-bazel_cloud>`
2143  page in the Sense tutorial shows you how to use BuildBuddy
2144  to share logs and speed up builds with remote caching.
2145  Commit: `Add cloud build section to Sense tutorial
2146  <https://pwrev.dev/233751>`__
2147  (issue `#363070027 <https://pwbug.dev/363070027>`__)
2148* :ref:`docs-contributing` now links to good first issues for people who
2149  want to contribute to upstream Pigweed.
2150  Commit: `Add link to good first issue list
2151  <https://pwrev.dev/233652>`__
2152* ``pigweed.dev/live`` now links to the Pigweed Live meeting notes.
2153  Commit: `Add shortlink for Pigweed Live notes
2154  <https://pwrev.dev/232032>`__
2155
2156Targets
2157=======
2158
2159RP2350
2160------
2161* RP2350 crash snapshots now show the correct architecture.
2162  Commit: `Fix architecture in crash snapshot
2163  <https://pwrev.dev/232231>`__
2164  (issue `#362506213 <https://pwbug.dev/362506213>`__)
2165
2166------------
2167Aug 23, 2024
2168------------
2169.. _Google Pigweed comes to our new RP2350: https://www.raspberrypi.com/news/google-pigweed-comes-to-our-new-rp2350/
2170
2171Highlights (Aug 8, 2024 to Aug 23, 2024):
2172
2173* **RP2350 Support**: Pigweed now supports the new Raspberry Pi RP2350 MCU.
2174  Check out `Google Pigweed comes to our new RP2350`_ on the Raspberry Pi
2175  blog for the full story and :ref:`showcase-sense` to try it out.
2176
2177Build systems
2178=============
2179
2180Bazel
2181-----
2182* `Add missing counting_semaphore and thread_yield backends
2183  <https://pwrev.dev/228392>`__
2184
2185Modules
2186=======
2187
2188pw_allocator
2189------------
2190* `Disable example spin_lock test on RP2
2191  <https://pwrev.dev/231251>`__
2192  (issues `#358411629 <https://pwbug.dev/358411629>`__,
2193  `#361354335 <https://pwbug.dev/361354335>`__)
2194
2195pw_async2
2196---------
2197The new ``pw::async2::MakeOnceSenderAndReceiver()`` function template makes it
2198easier to simultaneously create a sender and receiver for asynchronously
2199sending values. The new ``pw::async2::MakeOnceSenderAndReceiver()`` function
2200template works similarly but is used for references.
2201
2202* `Create OnceSender & OnceReceiver
2203  <https://pwrev.dev/226231>`__
2204  (issue `#350994818 <https://pwbug.dev/350994818>`__)
2205* `Remove accidental macro #undef
2206  <https://pwrev.dev/229275>`__
2207
2208pw_bloat
2209--------
2210The ``pw bloat`` CLI command now supports a ``--custom-config`` option to
2211specify a custom Bloaty config file so that non-memory regions can be
2212analyzed.
2213
2214* `Support custom bloaty configs in CLI command
2215  <https://pwrev.dev/216133>`__
2216
2217pw_bluetooth
2218------------
2219* `Create more emboss event definitions
2220  <https://pwrev.dev/231091>`__
2221  (issue `#42167863 <https://pwbug.dev/42167863>`__)
2222* `Add create connection cancel return
2223  <https://pwrev.dev/230251>`__
2224  (issue `#42167863 <https://pwbug.dev/42167863>`__)
2225* `Add LEReadSupportedStates emboss event
2226  <https://pwrev.dev/228961>`__
2227* `Add HCI Command OpCode definitions
2228  <https://pwrev.dev/228672>`__
2229* `Add more emboss definitions
2230  <https://pwrev.dev/228671>`__
2231  (issue `#42167863 <https://pwbug.dev/42167863>`__)
2232* `Make SupportedCommands emboss struct more ergonomic
2233  <https://pwrev.dev/228155>`__
2234
2235pw_bluetooth_proxy
2236------------------
2237* `Release H4 buff on error
2238  <https://pwrev.dev/229011>`__
2239
2240pw_bluetooth_sapphire
2241---------------------
2242* `Add common bt-host clang warnings
2243  <https://pwrev.dev/228651>`__
2244  (issue `#345799180 <https://pwbug.dev/345799180>`__)
2245* `Add new emboss compiler file ir_data_fields.py
2246  <https://pwrev.dev/228655>`__
2247  (issue `#358665524 <https://pwbug.dev/358665524>`__,
2248  `#335724776 <https://pwbug.dev/335724776>`__)
2249
2250pw_build
2251--------
2252The new ``glob_dirs()`` Starlark helper returns a list of directories matching
2253the provided glob pattern. The new ``match_dir()`` Starlark helper returns a
2254single directory that matches the provided glob pattern and fails if there's
2255more than one match.
2256
2257* `Add mod proc_macro to rust macro targets
2258  <https://pwrev.dev/230013>`__
2259* `Remove output_name attr in rust_library
2260  <https://pwrev.dev/230012>`__
2261* `Make pw_load_phase_test host only
2262  <https://pwrev.dev/230072>`__
2263* `Add glob_dirs() Starlark helper
2264  <https://pwrev.dev/228956>`__
2265
2266pw_channel
2267----------
2268* `Ensure that stream_channel_test resources live forever
2269  <https://pwrev.dev/228154>`__
2270  (issue `#358078118 <https://pwbug.dev/358078118>`__)
2271
2272pw_cpu_exception_cortex_m
2273-------------------------
2274* `Fix cpu exception handler on armv8m
2275  <https://pwrev.dev/231372>`__
2276  (issue `#323215726 <https://pwbug.dev/323215726>`__)
2277
2278pw_display
2279----------
2280The new :ref:`module-pw_display` experimental module provides graphic display
2281support and framebuffer management.
2282
2283* `Color library
2284  <https://pwrev.dev/229606>`__
2285  (issue `#359953386 <https://pwbug.dev/359953386>`__)
2286* `Create module directory
2287  <https://pwrev.dev/229712>`__
2288
2289pw_env_setup
2290------------
2291* `Get bazelisk instead of bazel
2292  <https://pwrev.dev/226376>`__
2293  (issue `#355438774 <https://pwbug.dev/355438774>`__)
2294
2295pw_grpc
2296-------
2297When a frame with a payload has a stream-reset error, the payload is now skipped.
2298
2299* `Improve logging when receiving unknown RPC
2300  <https://pwrev.dev/231011>`__
2301* `Skip HTTP2 frame payload for frames that result in stream reset
2302  <https://pwrev.dev/230951>`__
2303
2304pw_i2c_rp2040
2305-------------
2306The ``clock_frequency`` field in ``pw::i2c::Rp2040Initiator::Config`` has been
2307renamed to ``clock_frequency_hz``.
2308
2309* `Include label in clock_frequency
2310  <https://pwrev.dev/221412>`__
2311
2312pw_ide
2313------
2314``pw_ide`` now searches all parent directories for the presence of a
2315``pigweed.json`` file to determine the root directory. The workspace
2316root can be programmatically configured via the new
2317``pw_ide.settings.PigweedIdeSettings.workspace_root`` property. The
2318``pigweed.activateBazeliskInNewTerminals`` option in VS Code now defaults
2319to ``false``.
2320
2321* `Fix .pw_ide.yaml paths
2322  <https://pwrev.dev/230991>`__
2323* `Support different workspace root
2324  <https://pwrev.dev/217220>`__
2325* `Disable Bazelisk auto-activation by default
2326  <https://pwrev.dev/228493>`__
2327  (issue `#358384211 <https://pwbug.dev/358384211>`__)
2328
2329pw_kvs
2330------
2331References to ``pw::kvs::Key`` must be replaced with ``std::string_view``.
2332
2333* `Remove unnecessary Key alias and test
2334  <https://pwrev.dev/229976>`__
2335* `Pass EntryHeader by const reference
2336  <https://pwrev.dev/229727>`__
2337  (issue `#254601862 <https://pwbug.dev/254601862>`__)
2338* `Move inline variable definition to .cc file
2339  <https://pwrev.dev/228514>`__
2340  (issue `#357162923 <https://pwbug.dev/357162923>`__)
2341
2342pw_module
2343---------
2344* `Fix OWNERS file parsing
2345  <https://pwrev.dev/226177>`__
2346
2347pw_multibuf
2348-----------
2349The ``pw::multibuf::MultiBuf::Chunks()`` method and
2350``pw::multibuf::MultiBuf::ChunkIterable`` class have been removed; use the
2351new ``pw::multibuf::MultiBufChunks`` class instead.
2352
2353* `Restructure ChunkIterable
2354  <https://pwrev.dev/230892>`__
2355* `Comment updates for consistency
2356  <https://pwrev.dev/230891>`__
2357
2358pw_package
2359----------
2360* `Use bazel to build picotool package
2361  <https://pwrev.dev/229431>`__
2362
2363pw_preprocessor
2364---------------
2365The new ``PW_MODIFY_DIAGNOSTIC_CLANG`` define lets you handle Clang-only
2366warnings separately from other compilers.
2367
2368* `Test GCC/Clang diagnostic modification macros
2369  <https://pwrev.dev/231336>`__
2370* `Introduce PW_MODIFY_DIAGNOSTIC_CLANG
2371  <https://pwrev.dev/231332>`__
2372  (issue `#356935569 <https://pwbug.dev/356935569>`__)
2373* `Expand comment for PW_PACKED
2374  <https://pwrev.dev/226994>`__
2375
2376pw_rpc
2377------
2378Java client: The new ``PacketByteFactory`` Java class is a helper for creating
2379request and response packets during testing.
2380
2381Python client: The ``pw_rpc.console_tools.watchdog.Watchdog`` Python class has a
2382new ``stop()`` method to stop the watchdog.  The
2383``pw_rpc.callback_client.call.Call`` Python class now accepts a
2384``max_responses`` argument that lets you limit how many responses should be
2385received after a streaming RPC call.  The ``ignore_errors``,
2386``cancel_duplicate_calls``, and ``override_pending_options`` arguments
2387previously available in some Python client methods have been removed.
2388
2389TypeScript client: The ``invoke()`` method in the TypeScript client now accepts
2390a ``maxResponses`` argument which lets you limit how many responses to a
2391streaming RPC call should be stored.
2392
2393* `Avoid recompiling protos for every test
2394  <https://pwrev.dev/230135>`__
2395  (issue `#360184800 <https://pwbug.dev/360184800>`__)
2396* `Fix typing in unaryWait return value in TS client
2397  <https://pwrev.dev/231071>`__
2398* `Create PacketByteFactory
2399  <https://pwrev.dev/230011>`__
2400  (issue `#360174359 <https://pwbug.dev/360174359>`__)
2401* `Add stop method to Watchdog
2402  <https://pwrev.dev/230692>`__
2403  (issue `#350822543 <https://pwbug.dev/350822543>`__)
2404* `Limit maximum stored responses in TypeScript client
2405  <https://pwrev.dev/229975>`__
2406* `Add missing Bazel test rules
2407  <https://pwrev.dev/230691>`__
2408* `Restore RpcIds for testing; move packet encoding to packets.py
2409  <https://pwrev.dev/230471>`__
2410* `Limit maximum stored responses in Python client
2411  <https://pwrev.dev/229974>`__
2412  (issue `#262749163 <https://pwbug.dev/262749163>`__)
2413* `Remove deprecated / obsolete features
2414  <https://pwrev.dev/229908>`__
2415* `Fix open in callback_client
2416  <https://pwrev.dev/169174>`__
2417  (issue `#309159260 <https://pwbug.dev/309159260>`__)
2418* `Merge PendingRpc and RpcIds
2419  <https://pwrev.dev/228952>`__
2420* `Require an output function for channels
2421  <https://pwrev.dev/227855>`__
2422
2423pw_spi_linux
2424------------
2425* `Remove linkage specification from cli main
2426  <https://pwrev.dev/230291>`__
2427
2428pw_status
2429---------
2430The ``StatusWithSize::size_or()`` method has been removed.
2431
2432* `Convert StatusWithSize to Doxygen
2433  <https://pwrev.dev/229980>`__
2434* `Remove StatusWithSize::size_or()
2435  <https://pwrev.dev/229979>`__
2436
2437pw_stream
2438---------
2439* `Disable mpsc_stream_test for Pi Pico
2440  <https://pwrev.dev/231212>`__
2441  (issue `#361369435 <https://pwbug.dev/361369435>`__)
2442
2443pw_system
2444---------
2445The ``pw_system.device.Device`` class constructor now accepts an ``Iterable``
2446of proto libraries rather than a ``list``.
2447
2448* `Add type annotation to pw_system.device.Device() write arg
2449  <https://pwrev.dev/229653>`__
2450* `Update Device ctor to take Iterable of proto libraries
2451  <https://pwrev.dev/229811>`__
2452
2453pw_thread
2454---------
2455* `Disable test_thread_context_facade_test on Pi Pico
2456  <https://pwrev.dev/231291>`__
2457  (issue `#361369192 <https://pwbug.dev/361369192>`__)
2458
2459pw_tokenizer
2460------------
2461* `Remove unsupported C++11 and C++14 code
2462  <https://pwrev.dev/222432>`__
2463
2464pw_trace_tokenized
2465------------------
2466* `Fix TokenizedTracer initialization
2467  <https://pwrev.dev/230314>`__
2468  (issue `#357835484 <https://pwbug.dev/357835484>`__)
2469
2470pw_transfer
2471-----------
2472Transfer handler registration and unregistration functions now return a boolean
2473indicating success or failure. The C++ client now always includes a protocol
2474version in the final chunk.
2475
2476* `Add return values to handler registrations
2477  <https://pwrev.dev/230912>`__
2478* `Always set protocol version in final chunk
2479  <https://pwrev.dev/229289>`__
2480
2481pw_unit_test
2482------------
2483* `Delete unsupported C++14 compatibility code
2484  <https://pwrev.dev/229972>`__
2485* `Fix multi-line test macros
2486  <https://pwrev.dev/229314>`__
2487
2488Docs
2489====
2490* `Require unit tests to be in unnamed namespace
2491  <https://pwrev.dev/231211>`__
2492* `Add structured data to Kudzu blog post
2493  <https://pwrev.dev/230647>`__
2494  (issue `#360924425 <https://pwbug.dev/360924425>`__)
2495* `Fix Pigweed Live CTA link
2496  <https://pwrev.dev/230693>`__
2497  (issue `#357957451 <https://pwbug.dev/357957451>`__)
2498* `Replace 'bazel' with 'bazelisk'
2499  <https://pwrev.dev/226377>`__
2500* `Update Sense flashing instructions
2501  <https://pwrev.dev/229608>`__
2502* `Update RP2 family udev rules
2503  <https://pwrev.dev/228513>`__
2504  (issue `#355291899 <https://pwbug.dev/355291899>`__)
2505* `Update "Who's using Pigweed" section
2506  <https://pwrev.dev/228494>`__
2507* `Update Bazel quickstart mentions
2508  <https://pwrev.dev/228531>`__
2509* `Launch Sense
2510  <https://pwrev.dev/228431>`__
2511
2512Targets
2513=======
2514
2515rp2350
2516------
2517Pigweed now supports the new Raspberry Pi RP2350 MCU.
2518
2519* `Add support for RP2350
2520  <https://pwrev.dev/228326>`__
2521  (issue `#354942782 <https://pwbug.dev/354942782>`__)
2522
2523rp2040
2524------
2525* `Reset tty flags after successful flash on posix
2526  <https://pwrev.dev/229721>`__
2527* `Remove references to b/261603269
2528  <https://pwrev.dev/229397>`__
2529* `Add -fexceptions for the rp2040 PIO assembler
2530  <https://pwrev.dev/229531>`__
2531* `Get Pico SDK and Picotool from BCR
2532  <https://pwrev.dev/228327>`__
2533
2534Third-party software
2535====================
2536
2537Emboss
2538------
2539* `Remove -Wdeprecated-copy from public_config
2540  <https://pwrev.dev/228563>`__
2541  (issue `#345526399 <https://pwbug.dev/345526399>`__)
2542* `Update emboss to v2024.0809.170004
2543  <https://pwrev.dev/228562>`__
2544  (issue `#345526399 <https://pwbug.dev/345526399>`__)
2545
2546Fuchsia
2547-------
2548* `Update patch to ignore warnings in result.h
2549  <https://pwrev.dev/231253>`__
2550* `Copybara import
2551  <https://pwrev.dev/231293>`__
2552
2553Rolls
2554-----
2555* `fuchsia_infra: [roll] Roll fuchsia-infra-bazel-rules-bazel_sdk-ci
2556  <https://pwrev.dev/230635>`__
2557* `fuchsia_infra 54 commits
2558  <https://pwrev.dev/230634>`__
2559* `go
2560  <https://pwrev.dev/230631>`__
2561* `rust
2562  <https://pwrev.dev/230472>`__
2563* `go
2564  <https://pwrev.dev/228811>`__
2565* `gn
2566  <https://pwrev.dev/228731>`__
2567* `fuchsia_infra 27 commits
2568  <https://pwrev.dev/228712>`__
2569* `rust
2570  <https://pwrev.dev/228566>`__
2571
2572Miscellaneous
2573=============
2574* `Change typedef to using
2575  <https://pwrev.dev/230351>`__
2576* `Handle ignored status comments
2577  <https://pwrev.dev/229652>`__
2578  (issues `#357136096 <https://pwbug.dev/357136096>`__,
2579  `#357139112 <https://pwbug.dev/357139112>`__)
2580
2581Owners
2582------
2583* `Add davidroth@
2584  <https://pwrev.dev/230071>`__
2585
2586-----------
2587Aug 7, 2024
2588-----------
2589Highlights (Jul 26, 2024 to Aug 7, 2024):
2590
2591* **Tour of Pigweed**: The new :ref:`Tour of Pigweed <showcase-sense>`
2592  is a hands-on, guided walkthrough of many key Pigweed features working
2593  together in a medium-complexity application.
2594* **Easier pw_digital_io testing**: The new
2595  ``pw::digital_io::DigitalInOutMock`` class is a mock implementation of
2596  ``pw:digital_io::DigitalInOut`` that can be used for testing.
2597* **Code intelligence in VS Code**: The new
2598  :ref:`module-pw_ide-guide-vscode-code-intelligence` document provides
2599  guides on using the code intelligence features of the ``pw_ide``
2600  extension for VS Code.
2601
2602Build systems
2603=============
2604
2605Bazel
2606-----
2607* `Get picotool from the BCR
2608  <https://pwrev.dev/227838>`__
2609  (issue `#354270165 <https://pwbug.dev/354270165>`__)
2610* `Manage pw_ide deps via bzlmod
2611  <https://pwrev.dev/226733>`__
2612  (issue `#258836641 <https://pwbug.dev/258836641>`__)
2613* `Manage Java deps through bzlmod
2614  <https://pwrev.dev/226481>`__
2615  (issue `#258836641 <https://pwbug.dev/258836641>`__)
2616* `Provide symlink to clangd at root
2617  <https://pwrev.dev/226451>`__
2618  (issue `#355655415 <https://pwbug.dev/355655415>`__)
2619* `Partial revert of http://pwrev.dev/226007
2620  <https://pwrev.dev/226271>`__
2621  (issue `#352389854 <https://pwbug.dev/352389854>`__)
2622
2623Modules
2624=======
2625
2626pw_allocator
2627------------
2628* `Fix bucketed block corruption
2629  <https://pwrev.dev/227604>`__
2630  (issue `#345526413 <https://pwbug.dev/345526413>`__)
2631* `Add missing include
2632  <https://pwrev.dev/227174>`__
2633  (issue `#356667663 <https://pwbug.dev/356667663>`__)
2634
2635pw_bluetooth
2636------------
2637``ReadLocalSupportedCommandsCommandCompleteEvent`` now provides both a raw bytes
2638field (``supported_commands_bytes``) and a sub-struct (``supported_commands``)
2639for easier access to command bits. You can use either ``SupportedCommandsOctet``
2640or ``SupportedCommands`` to parse a saved ``uint8_t[64]``.
2641
2642* `Improve ergonomics of emboss SupportedCommands
2643  <https://pwrev.dev/227931>`__
2644* `Add more emboss definitions
2645  <https://pwrev.dev/227951>`__
2646  (issue `#42167863 <https://pwbug.dev/42167863>`__)
2647
2648pw_bluetooth_proxy
2649------------------
2650* `Release active connections once zero
2651  <https://pwrev.dev/226400>`__
2652* `Only log disconnect events for active connections
2653  <https://pwrev.dev/226393>`__
2654
2655pw_bluetooth_sapphire
2656---------------------
2657* `Handle switch warning with pigweed
2658  <https://pwrev.dev/227044>`__
2659  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2660* `Handle switch warning with pigweed
2661  <https://pwrev.dev/227043>`__
2662  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2663* `Handle switch warning with pigweed
2664  <https://pwrev.dev/227025>`__
2665  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2666* `Write Variable PIN Type for Legacy Pairing
2667  <https://pwrev.dev/227042>`__
2668  (issues `#42173830 <https://pwbug.dev/42173830>`__,
2669  `# b/342151162 <https://pwbug.dev/ b/342151162>`__)
2670* `Add LegacyPairingState to BrEdrConnectionRequest
2671  <https://pwrev.dev/227041>`__
2672  (issue `#42173830 <https://pwbug.dev/42173830>`__)
2673* `Create and implement LegacyPairingState class
2674  <https://pwrev.dev/227023>`__
2675  (issues `#342150626 <https://pwbug.dev/342150626>`__,
2676  `#42173830 <https://pwbug.dev/42173830>`__)
2677* `Handle switch warning with pigweed
2678  <https://pwrev.dev/227040>`__
2679  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2680* `Handle switch warning with pigweed
2681  <https://pwrev.dev/227039>`__
2682  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2683* `Translate information & additional attributes
2684  <https://pwrev.dev/227038>`__
2685  (issue `#327758656 <https://pwbug.dev/327758656>`__)
2686* `Return registered services after bredr.Advertise
2687  <https://pwrev.dev/227022>`__
2688  (issue `#327758656 <https://pwbug.dev/327758656>`__)
2689* `Handle switch enum warning with pigweed
2690  <https://pwrev.dev/227037>`__
2691  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2692* `Handle switch warning with pigweed
2693  <https://pwrev.dev/227021>`__
2694  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2695* `Fix shadow variable warnings
2696  <https://pwrev.dev/227036>`__
2697  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2698* `Add panic to EventTypeToString
2699  <https://pwrev.dev/227035>`__
2700  (issue `#356388419 <https://pwbug.dev/356388419>`__)
2701* `Switch over to pw::utf8
2702  <https://pwrev.dev/227020>`__
2703  (issue `#337305285 <https://pwbug.dev/337305285>`__)
2704* `Remove unnecessary cast qual pragma
2705  <https://pwrev.dev/227034>`__
2706  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2707* `Fix statement expression extension warnings
2708  <https://pwrev.dev/227033>`__
2709  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2710* `Fix variadic macro warnings
2711  <https://pwrev.dev/227019>`__
2712  (issue `#355511476 <https://pwbug.dev/355511476>`__)
2713* `Add SetupDataPath FIDL handler
2714  <https://pwrev.dev/227018>`__
2715  (issue `#311639690 <https://pwbug.dev/311639690>`__)
2716* `Create abstract base for IsoStream
2717  <https://pwrev.dev/227017>`__
2718* `Remove CommandPacketVariant
2719  <https://pwrev.dev/227032>`__
2720  (issue `#42167863 <https://pwbug.dev/42167863>`__)
2721* `Use emboss for setting ACL priority
2722  <https://pwrev.dev/227031>`__
2723  (issue `#42167863 <https://pwbug.dev/42167863>`__)
2724* `Add test for A2DP offloading
2725  <https://pwrev.dev/227014>`__
2726  (issue `#330921787 <https://pwbug.dev/330921787>`__)
2727* `Explicitly move WeakRef in GetWeakPtr
2728  <https://pwrev.dev/227013>`__
2729  (issue `#354026910 <https://pwbug.dev/354026910>`__)
2730* `Clean up some type sizes
2731  <https://pwrev.dev/227012>`__
2732  (issue `#354057871 <https://pwbug.dev/354057871>`__)
2733* `Use emboss for LELongTermKeyRequestReply
2734  <https://pwrev.dev/227011>`__
2735  (issue `#42167863 <https://pwbug.dev/42167863>`__)
2736* `Remove manufacturer list
2737  <https://pwrev.dev/226472>`__
2738
2739pw_build
2740--------
2741* `Fix configs in pw_rust_executable
2742  <https://pwrev.dev/212171>`__
2743  (issue `#343111481 <https://pwbug.dev/343111481>`__)
2744* `Auto disable project builder progress bars
2745  <https://pwrev.dev/226379>`__
2746
2747pw_chrono_stl
2748-------------
2749System clock and timer interfaces have been moved to separate directories so
2750that you can pick up the backend of one of these without bringing in the other.
2751This makes it possible to use a custom system timer with the STL system clock,
2752for example.
2753
2754* `Move system clock and timer into separate directories
2755  <https://pwrev.dev/225992>`__
2756
2757pw_clock_tree_mcuxpresso
2758------------------------
2759The new ``pw::clock_tree::ClockMcuxpressoClockIp`` class lets you manage
2760``clock_ip_name_t`` clocks with the clock tree to save power when
2761``FSL_SDK_DISABLE_DRIVE_CLOCK_CONTROL`` is set.
2762
2763* `Introduce ClockMcuxpressoClockIp
2764  <https://pwrev.dev/226069>`__
2765  (issue `#355486338 <https://pwbug.dev/355486338>`__)
2766
2767pw_console
2768----------
2769* `Additional UI and code themes
2770  <https://pwrev.dev/226720>`__
2771* `Bump version of console js, add titles to log panes
2772  <https://pwrev.dev/226831>`__
2773
2774pw_digital_io
2775-------------
2776The new ``pw::digital_io::DigitalInOutMock`` class is a mock implementation
2777of ``pw:digital_io::DigitalInOut`` that can be used for testing.
2778
2779* `Add Mock
2780  <https://pwrev.dev/227836>`__
2781
2782pw_digital_io_linux
2783-------------------
2784The default ``pw_log`` logging level changed from ``DEBUG`` to ``INFO``.
2785
2786* `Set log level to INFO
2787  <https://pwrev.dev/225912>`__
2788
2789pw_digital_io_rp2040
2790--------------------
2791* `Don't discard status returns
2792  <https://pwrev.dev/227712>`__
2793  (issue `#357090965 <https://pwbug.dev/357090965>`__)
2794
2795pw_env_setup
2796------------
2797* `Update rust thumbv7m target
2798  <https://pwrev.dev/226951>`__
2799* `Add rustc thumbv7m target
2800  <https://pwrev.dev/211991>`__
2801  (issue `#343111481 <https://pwbug.dev/343111481>`__)
2802
2803pw_hex_dump
2804-----------
2805* `Add rule for pw_hex_dump/log_bytes.h
2806  <https://pwrev.dev/227651>`__
2807  (issue `#357595992 <https://pwbug.dev/357595992>`__)
2808
2809pw_ide
2810------
2811The Pigweed extension for VS Code will now immediately update the code analysis
2812target if the ``pigweed.codeAnalysisTarget`` setting in ``settings.json`` is
2813changed. The new ``pigweed.activateBazeliskInNewTerminals`` setting lets you
2814specify whether the path to Bazelisk should be added when a VS Code terminal is
2815launched. The new :ref:`module-pw_ide-guide-vscode-code-intelligence` document
2816provides guides on using the VS Code extension's code intelligence features.
2817
2818* `VSC extension 1.3.2 release
2819  <https://pwrev.dev/225391>`__
2820* `Show progress bar on manual refreshes
2821  <https://pwrev.dev/227731>`__
2822* `Detect manual target change in settings
2823  <https://pwrev.dev/227606>`__
2824* `Much faster VSC config parsing
2825  <https://pwrev.dev/227605>`__
2826* `Automatically activate Bazelisk in new terminals
2827  <https://pwrev.dev/226382>`__
2828* `Use stable clangd path
2829  <https://pwrev.dev/226431>`__
2830  (issue `#355655415 <https://pwbug.dev/355655415>`__)
2831* `Add inactive source file decoration
2832  <https://pwrev.dev/225733>`__
2833* `VSC extension refactoring
2834  <https://pwrev.dev/226059>`__
2835
2836pw_multibuf
2837-----------
2838* `Add missing includes
2839  <https://pwrev.dev/227331>`__
2840  (issue `#356667663 <https://pwbug.dev/356667663>`__)
2841
2842pw_multisink
2843------------
2844The new ``pw::multisink::Drain::GetUnreadEntriesCount()`` method is a
2845thread-safe way to return the number of unread entries in a drain's sink.
2846
2847* `Interface to read entries count
2848  <https://pwrev.dev/226351>`__
2849  (issue `#355104976 <https://pwbug.dev/355104976>`__)
2850
2851pw_presubmit
2852------------
2853* `Fix incl-lang when not at repo root
2854  <https://pwrev.dev/227185>`__
2855* `Remove misc program
2856  <https://pwrev.dev/226995>`__
2857  (issue `#356888002 <https://pwbug.dev/356888002>`__)
2858* `Rename "misc" program to "sapphire"
2859  <https://pwrev.dev/226993>`__
2860  (issue `#356888002 <https://pwbug.dev/356888002>`__)
2861* `Add new presubmit steps
2862  <https://pwrev.dev/226712>`__
2863  (issue `#356619766 <https://pwbug.dev/356619766>`__)
2864* `Allow fxbug.dev and crbug.com TODOs
2865  <https://pwrev.dev/226474>`__
2866* `Expose name of Bazel executable
2867  <https://pwrev.dev/226378>`__
2868  (issue `#355438774 <https://pwbug.dev/355438774>`__)
2869
2870pw_router
2871---------
2872* `Add missing includes
2873  <https://pwrev.dev/227331>`__
2874  (issue `#356667663 <https://pwbug.dev/356667663>`__)
2875
2876pw_rpc
2877------
2878* `Fix TypeScript client streaming return type
2879  <https://pwrev.dev/226717>`__
2880* `Add yield mode constraint_setting
2881  <https://pwrev.dev/226551>`__
2882  (issue `#345199579 <https://pwbug.dev/345199579>`__)
2883
2884pw_rust
2885-------
2886The new ``pw_rust_USE_STD`` toolchain configuration option lets you control
2887whether the "std" feature should be used when building executables.
2888
2889* `Add no_std build to basic_executable
2890  <https://pwrev.dev/211993>`__
2891  (issue `#343111481 <https://pwbug.dev/343111481>`__)
2892* `Rename host_executable
2893  <https://pwrev.dev/211992>`__
2894  (issue `#343111481 <https://pwbug.dev/343111481>`__)
2895
2896pw_spi_mcuxpresso
2897-----------------
2898* `Add SPI_RxError() and SPI_TxError()
2899  <https://pwrev.dev/226992>`__
2900
2901pw_status
2902---------
2903``PW_STATUS_CFG_CHECK_IF_USED`` now defaults to ``true`` in Bazel projects,
2904meaning that ``pw::Status`` objects returned from function calls must be used or
2905else a compilation error is raised. See :ref:`module-pw_status-reference-unused`.
2906
2907* `In Bazel, make Status nodiscard
2908  <https://pwrev.dev/227411>`__
2909  (issue `#357090965 <https://pwbug.dev/357090965>`__)
2910* `Don't silently discard status returns
2911  <https://pwrev.dev/227277>`__
2912  (issue `#357090965 <https://pwbug.dev/357090965>`__)
2913
2914pw_symbolizer
2915-------------
2916* `Add missing runfiles dep
2917  <https://pwrev.dev/226719>`__
2918  (issue `#355527449 <https://pwbug.dev/355527449>`__)
2919* `Get llvm-symbolizer path from Bazel
2920  <https://pwrev.dev/226254>`__
2921  (issue `#355527449 <https://pwbug.dev/355527449>`__)
2922
2923pw_system
2924---------
2925The ``pw_system`` console now lets you control host log and device log levels
2926separately via the new ``--host-log-level`` and ``--device-log-level``
2927arguments. The new ``echo()``, ``reboot()``, and ``crash()`` methods of
2928``pw_system.device.Device`` make it easier to access these common
2929operations. Crash snapshots are now saved to ``/tmp`` (``C:\\TEMP`` on Windows)
2930by default. Crash detection logs are now printed across multiple lines to make
2931them easier to spot.
2932
2933* `Separate host and device console log levels
2934  <https://pwrev.dev/227599>`__
2935* `Don't use implementation_deps
2936  <https://pwrev.dev/226977>`__
2937  (issues `#304374970 <https://pwbug.dev/304374970>`__,
2938  `#356667663 <https://pwbug.dev/356667663>`__)
2939* `Add console device aliases for common RPCs
2940  <https://pwrev.dev/226476>`__
2941* `Save snapshots to /tmp
2942  <https://pwrev.dev/226392>`__
2943* `Make crash detection logs louder
2944  <https://pwrev.dev/226373>`__
2945
2946pw_tokenizer
2947------------
2948* `decode_optionally_tokenized without a Detokenizer
2949  <https://pwrev.dev/226727>`__
2950
2951pw_toolchain
2952------------
2953* `Clang support for Arm Cortex-M33
2954  <https://pwrev.dev/228391>`__
2955  (issue `#358108912 <https://pwbug.dev/358108912>`__)
2956* `Register Cortex-M7 toolchain
2957  <https://pwrev.dev/227598>`__
2958* `Use \`crate_name\` for GN rust targets
2959  <https://pwrev.dev/223391>`__
2960* `proc_macro GN cross compile
2961  <https://pwrev.dev/215011>`__
2962* `Rustc cross compile to qemu-clang
2963  <https://pwrev.dev/211994>`__
2964  (issue `#343111481 <https://pwbug.dev/343111481>`__)
2965* `Expose a symlink to clangd
2966  <https://pwrev.dev/226262>`__
2967  (issue `#355655415 <https://pwbug.dev/355655415>`__)
2968
2969pw_transfer
2970-----------
2971* `Add a delay after opening a stream to delay transfer start
2972  <https://pwrev.dev/225734>`__
2973  (issue `#355249134 <https://pwbug.dev/355249134>`__)
2974* `Use initial timeout when resending start chunks
2975  <https://pwrev.dev/226452>`__
2976
2977pw_web
2978------
2979The log viewer now defaults to using line wrapping in table cells. The new
2980``logViews`` property makes it easier to customize each individual log view.
2981The ``severity`` field for controlling what types of logs to display has
2982been renamed to ``level``.
2983
2984* `Add resize handler to message col
2985  <https://pwrev.dev/221433>`__
2986  (issue `#351901512 <https://pwbug.dev/351901512>`__)
2987* `Change word-wrap to default true and save to state
2988  <https://pwrev.dev/226730>`__
2989  (issue `#354283022 <https://pwbug.dev/354283022>`__)
2990* `NPM version bump to 0.0.22
2991  <https://pwrev.dev/226726>`__
2992* `Show REPL message at every run
2993  <https://pwrev.dev/226872>`__
2994* `NPM version bump to 0.0.21
2995  <https://pwrev.dev/226713>`__
2996* `Enable custom titles, log-view access
2997  <https://pwrev.dev/226771>`__
2998  (issue `#355272099 <https://pwbug.dev/355272099>`__)
2999* `Change severity to level
3000  <https://pwrev.dev/225573>`__
3001  (issue `#354282161 <https://pwbug.dev/354282161>`__)
3002* `Replace column menu with MWC components
3003  <https://pwrev.dev/226151>`__
3004  (issues `#354712931 <https://pwbug.dev/354712931>`__,
3005  `#342452087 <https://pwbug.dev/342452087>`__)
3006
3007Docs
3008====
3009The new :ref:`Tour of Pigweed <showcase-sense>` is a hands-on, guided
3010walkthrough of many key Pigweed features working together in a medium-complexity
3011application.
3012
3013* `Start Sense tutorial
3014  <https://pwrev.dev/220311>`__
3015* `Fix some bad links in the changelog
3016  <https://pwrev.dev/226811>`__
3017* `Update changelog
3018  <https://pwrev.dev/226251>`__
3019
3020Rolls
3021=====
3022* `gn
3023  <https://pwrev.dev/227612>`__
3024* `fuchsia_infra 119 commits
3025  <https://pwrev.dev/227476>`__
3026* `cmake
3027  <https://pwrev.dev/227289>`__
3028* `rust
3029  <https://pwrev.dev/227287>`__
3030* `Clang
3031  <https://pwrev.dev/226725>`__
3032  (issue `#356689444 <https://pwbug.dev/356689444>`__)
3033* `bazel_skylib
3034  <https://pwrev.dev/226979>`__
3035* `rust
3036  <https://pwrev.dev/226257>`__
3037
3038Third-party software
3039====================
3040
3041Emboss
3042------
3043* `Append public_deps in GN template
3044  <https://pwrev.dev/227062>`__
3045
3046ICU
3047---
3048* `Remove ICU
3049  <https://pwrev.dev/228234>`__
3050
3051STM32Cube
3052---------
3053* `bzlmod-friendly changes
3054  <https://pwrev.dev/226479>`__
3055  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3056
3057Miscellaneous
3058-------------
3059* `Run 'pw format --fix'
3060  <https://pwrev.dev/227186>`__
3061
3062------------
3063Jul 25, 2024
3064------------
3065Highlights (Jul 12, 2024 to Jul 25, 2024):
3066
3067* **Extensive Bazel support in the Pigweed extension for VS Code**:
3068  See :ref:`docs-changelog-20240725-pw_ide` for the full story.
3069* **Bazel module support**: Upstream Pigweed is now usable as a `Bazel
3070  module <https://bazel.build/external/module>`_ dependency.
3071* **Trapping backend for pw_assert**: :ref:`module-pw_assert_trap` is a
3072  new backend for :ref:`module-pw_assert` that calls ``__builtin_trap()``
3073  when an assert is triggered.
3074* **Crash handling in async pw_system**: Crash snapshots can be downloaded
3075  from ``pw_console`` by calling ``device.get_crash_snapshots()`` in the
3076  REPL.
3077
3078Build systems
3079=============
3080
3081Bazel
3082-----
3083Toolchain registration moved from ``WORKSPACE`` to ``MODULE.bazel``, making
3084it possible for downstream projects to use upstream Pigweed's toolchains
3085directly. Pigweed is now usable as a Bazel module dependency. Pigweed now
3086provides an example ``.bazelrc`` at ``//pw_build/pigweed.bazelrc`` that
3087downstream users can copy into their own projects.
3088
3089* `Remove @pigweed from bzl files
3090  <https://pwrev.dev/226007>`__
3091  (issue `#352389854 <https://pwbug.dev/352389854>`__)
3092* `Remove stray @pigweed in load statement
3093  <https://pwrev.dev/226006>`__
3094  (issue `#352389854 <https://pwbug.dev/352389854>`__)
3095* `Move toolchain registration to MODULE.bazel
3096  <https://pwrev.dev/225471>`__
3097  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3098* `Enable bzlmod
3099  <https://pwrev.dev/211362>`__
3100  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3101* `Remove sanitizers from default program
3102  <https://pwrev.dev/223572>`__
3103  (issue `#301487567 <https://pwbug.dev/301487567>`__)
3104* `Modernize pip deps style (2)
3105  <https://pwrev.dev/224316>`__
3106* `Organize and document required flags
3107  <https://pwrev.dev/223817>`__
3108  (issue `#353750350 <https://pwbug.dev/353750350>`__)
3109* `Use Python toolchain in custom rules
3110  <https://pwrev.dev/224298>`__
3111  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3112* `Use Python toolchain in custom rules
3113  <https://pwrev.dev/224272>`__
3114  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3115* `Use Python toolchain in custom rules
3116  <https://pwrev.dev/224272>`__
3117  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3118* `Modernize pip deps style
3119  <https://pwrev.dev/223871>`__
3120  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3121* `Create separate "sanitizers" CI program
3122  <https://pwrev.dev/223595>`__
3123  (issue `#301487567 <https://pwbug.dev/301487567>`__)
3124* `Run under tsan, ubsan in presubmit
3125  <https://pwrev.dev/223631>`__
3126  (issue `#301487567 <https://pwbug.dev/301487567>`__)
3127* `Run tests with asan in CQ
3128  <https://pwrev.dev/222792>`__
3129  (issue `#301487567 <https://pwbug.dev/301487567>`__)
3130
3131Docs
3132====
3133The fonts on ``pigweed.dev`` have been updated.
3134
3135* `Prefer "change" to Google-specific "CL"
3136  <https://pwrev.dev/226004>`__
3137* `Minor changelog update
3138  <https://pwrev.dev/224271>`__
3139* `Update pigweed.dev fonts
3140  <https://pwrev.dev/223591>`__
3141  (issue `#353530954 <https://pwbug.dev/353530954>`__)
3142* `Minor updates
3143  <https://pwrev.dev/223571>`__
3144* `Update changelog
3145  <https://pwrev.dev/222831>`__
3146
3147Modules
3148=======
3149
3150pw_assert_trap
3151--------------
3152:ref:`module-pw_assert_trap` is a new backend for :ref:`module-pw_assert`
3153that calls ``__builtin_trap()`` when an assert is triggered.
3154
3155* `Add a new assert backend which traps on assert
3156  <https://pwrev.dev/220135>`__
3157  (issues `#351888988 <https://pwbug.dev/https://pwbug.dev/351888988>`__,
3158  `#351886597 <https://pwbug.dev/https://pwbug.dev/351886597>`__)
3159
3160pw_async2
3161---------
3162The new :cpp:class:`pw::async2::CoroOrElseTask` class lets you run a coroutine
3163in a task and invokes a handler function on error. The new
3164:cpp:func:`pw::async2::Task::IsRegistered` method checks if a task is
3165currently registered with a dispatcher. The new
3166:cpp:func:`pw::async2::Coro::Empty()` method creates an empty, invalid
3167coroutine object. The new :cpp:func:`pw::async2::Task::Deregister` method
3168unlinks a task from a dispatcher and any associated waker values.
3169
3170* `Fix minor doc issues
3171  <https://pwrev.dev/226111>`__
3172* `Add CoroOrElseTask
3173  <https://pwrev.dev/225778>`__
3174* `Add Task::IsRegistered
3175  <https://pwrev.dev/225995>`__
3176* `Add Coro::Empty
3177  <https://pwrev.dev/225993>`__
3178* `Add Task::Deregister
3179  <https://pwrev.dev/225775>`__
3180
3181pw_async2_epoll
3182---------------
3183* `Fix block on racing wakeups
3184  <https://pwrev.dev/224291>`__
3185
3186pw_bluetooth
3187------------
3188* `Generate emboss headers in Soong
3189  <https://pwrev.dev/225152>`__
3190  (issue `#352364622 <https://pwbug.dev/352364622>`__)
3191* `Add generic HCI command definition
3192  <https://pwrev.dev/224931>`__
3193  (issue `#42167863 <https://pwbug.dev/42167863>`__)
3194
3195pw_bluetooth_proxy
3196------------------
3197* `Create Soong library for pw_bluetooth_proxy
3198  <https://pwrev.dev/225153>`__
3199  (issue `#352393966 <https://pwbug.dev/352393966>`__)
3200* `Update emboss deps
3201  <https://pwrev.dev/224991>`__
3202* `Do not pass on NOCP events without credits
3203  <https://pwrev.dev/224434>`__
3204  (issue `#353546115 <https://pwbug.dev/353546115>`__)
3205* `Have functions handle passing on the packet
3206  <https://pwrev.dev/224433>`__
3207  (issue `#353546115 <https://pwbug.dev/353546115>`__)
3208* `Update tests to verify number of sent packets
3209  <https://pwrev.dev/224300>`__
3210* `Remove debugging log
3211  <https://pwrev.dev/224032>`__
3212  (issue `#353546115 <https://pwbug.dev/353546115>`__)
3213
3214pw_bluetooth_sapphire
3215---------------------
3216The latest ``pw_bluetooth_sapphire`` commits were brought
3217into Pigweed from the Fuchsia repository.
3218
3219* `Reduce scope of security_manager
3220  <https://pwrev.dev/225036>`__
3221  (issue `#337315598 <https://pwbug.dev/337315598>`__)
3222* `Cleanup BrEdrConnectionManager test file
3223  <https://pwrev.dev/225035>`__
3224* `Fix integer conversion warnings
3225  <https://pwrev.dev/225034>`__
3226  (issue `#354057871 <https://pwbug.dev/354057871>`__)
3227* `Cleanup WritePageScanType into shared test file
3228  <https://pwrev.dev/225033>`__
3229* `Add missing optional include
3230  <https://pwrev.dev/225051>`__
3231  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3232* `Remove unused method
3233  <https://pwrev.dev/224043>`__
3234  (issue `#42167863 <https://pwbug.dev/42167863>`__)
3235* `Remove variant from LE SendCommands
3236  <https://pwrev.dev/224042>`__
3237  (issue `#42167863 <https://pwbug.dev/42167863>`__)
3238* `Remove CommandPacketVariant
3239  <https://pwrev.dev/224041>`__
3240  (issue `#42167863 <https://pwbug.dev/42167863>`__)
3241* `Remove variant from QueueCommand
3242  <https://pwrev.dev/224040>`__
3243  (issue `#42167863 <https://pwbug.dev/42167863>`__)
3244* `Remove variant from QueueLeAsyncCommand
3245  <https://pwrev.dev/224112>`__
3246  (issue `#42167863 <https://pwbug.dev/42167863>`__)
3247* `Create IsoDataChannel
3248  <https://pwrev.dev/224039>`__
3249  (issue `#311639040 <https://pwbug.dev/311639040>`__)
3250* `Check legacy adv for rand addr in FakeController
3251  <https://pwrev.dev/224038>`__
3252  (issue `#42161900 <https://pwbug.dev/42161900>`__)
3253* `Use platform-independent format strings
3254  <https://pwrev.dev/224096>`__
3255  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3256* `Processing of CIS Established event
3257  <https://pwrev.dev/224037>`__
3258  (issue `#311639432 <https://pwbug.dev/311639432>`__)
3259* `Use pw_bytes for endianness conversions
3260  <https://pwrev.dev/224036>`__
3261  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3262* `Cleanup WritePageScanActivity
3263  <https://pwrev.dev/224095>`__
3264* `Cleanup into shared test file
3265  <https://pwrev.dev/224035>`__
3266* `Cleanup WriteLocalNameResponse to shared file
3267  <https://pwrev.dev/224094>`__
3268* `Fix camel case for CIS acronym
3269  <https://pwrev.dev/224034>`__
3270* `Cleanup Inquiry command packets into shared file
3271  <https://pwrev.dev/224033>`__
3272* `Implement AcceptCis()
3273  <https://pwrev.dev/224093>`__
3274  (issue `#311639432 <https://pwbug.dev/311639432>`__)
3275* `Use pw_bytes for endianness conversions
3276  <https://pwrev.dev/221311>`__
3277  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3278* `Use pw_bytes for endianness conversions
3279  <https://pwrev.dev/221250>`__
3280  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3281* `Reorganize test_packets.h/.cc files
3282  <https://pwrev.dev/221249>`__
3283* `Cleanup WriteInquiryScanActivity packets
3284  <https://pwrev.dev/221266>`__
3285* `Use pw_bytes for endianness conversions
3286  <https://pwrev.dev/221265>`__
3287  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3288* `Use pw_bytes for endianness conversions
3289  <https://pwrev.dev/221264>`__
3290  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3291* `Use pw_bytes for endianness conversions
3292  <https://pwrev.dev/221248>`__
3293  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3294* `Remove unneeded #include
3295  <https://pwrev.dev/221262>`__
3296  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3297* `Use pw_bytes for endianness conversions
3298  <https://pwrev.dev/221261>`__
3299  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3300* `Use pw_bytes for endianness conversions
3301  <https://pwrev.dev/221247>`__
3302  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3303* `Use pw_bytes for endianness conversions
3304  <https://pwrev.dev/221246>`__
3305  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3306* `Use pw_bytes for endianness conversions
3307  <https://pwrev.dev/221245>`__
3308  (issue `#313665184 <https://pwbug.dev/313665184>`__)
3309* `Rename link_initiated to outgoing_connection
3310  <https://pwrev.dev/221244>`__
3311* `Cleanup WriteScanEnable packets into shared file
3312  <https://pwrev.dev/221243>`__
3313* `Cleanup ReadScanEnable packets into shared file
3314  <https://pwrev.dev/221260>`__
3315* `Remove alias for BrEdrConnectionRequest
3316  <https://pwrev.dev/221242>`__
3317* `BrEdrConnectionRequest create HCI connection req
3318  <https://pwrev.dev/221241>`__
3319* `Add connection role to fake controller
3320  <https://pwrev.dev/221258>`__
3321  (issue `#311639432 <https://pwbug.dev/311639432>`__)
3322* `Remove double std::move in PairingStateManager
3323  <https://pwrev.dev/221238>`__
3324* `Fix BrEdrDynamicChannel crash
3325  <https://pwrev.dev/221257>`__
3326  (issue `#42076625 <https://pwbug.dev/42076625>`__)
3327* `Cleanup BrEdrConnectionRequest and Manager
3328  <https://pwrev.dev/221237>`__
3329* `Implement IsoStreamServer
3330  <https://pwrev.dev/221256>`__
3331  (issue `#311639275 <https://pwbug.dev/311639275>`__)
3332* `Modernize fuchsia.hardware.bluetooth.Peer API
3333  <https://pwrev.dev/221255>`__
3334  (issue `#330591131 <https://pwbug.dev/330591131>`__)
3335* `Rename to secure_simple_pairing_state
3336  <https://pwrev.dev/221236>`__
3337  (issue `#342150626 <https://pwbug.dev/342150626>`__)
3338* `Use weak hci::BrEdrConnection pointer
3339  <https://pwrev.dev/221253>`__
3340* `Create and use PairingStateManager class
3341  <https://pwrev.dev/221252>`__
3342  (issues `#342150626 <https://pwbug.dev/342150626>`__,
3343  `#42173830 <https://pwbug.dev/42173830>`__)
3344* `Implement GetCodecLocalDelayRange
3345  <https://pwrev.dev/221251>`__
3346  (issue `#311639690 <https://pwbug.dev/311639690>`__)
3347* `Add Bazel rules for FIDL layer
3348  <https://pwrev.dev/221190>`__
3349  (issue `#324105856 <https://pwbug.dev/324105856>`__)
3350* `Refactor ScoConnection
3351  <https://pwrev.dev/221189>`__
3352  (issue `#330590954 <https://pwbug.dev/330590954>`__)
3353* `Fix max connection event length value
3354  <https://pwrev.dev/221188>`__
3355  (issue `#323255182 <https://pwbug.dev/323255182>`__)
3356* `Add AdvertisingData.ToString
3357  <https://pwrev.dev/221187>`__
3358  (issue `#42157647 <https://pwbug.dev/42157647>`__)
3359* `Make UUID string parsing optional
3360  <https://pwrev.dev/221234>`__
3361  (issue `#339726884 <https://pwbug.dev/339726884>`__)
3362* `Add Adapter::GetSupportedDelayRange
3363  <https://pwrev.dev/221233>`__
3364  (issue `#311639690 <https://pwbug.dev/311639690>`__)
3365* `Clean up legacy advertising report parsing API
3366  <https://pwrev.dev/221185>`__
3367  (issue `#308500308 <https://pwbug.dev/308500308>`__)
3368* `Add missing climits include
3369  <https://pwrev.dev/221183>`__
3370  (issue `#338408169 <https://pwbug.dev/338408169>`__)
3371* `Add Emboss support to SendCommand completion
3372  <https://pwrev.dev/221182>`__
3373  (issue `#311639690 <https://pwbug.dev/311639690>`__)
3374* `Improve naming of android namespace aliases
3375  <https://pwrev.dev/221232>`__
3376  (issue `#335491380 <https://pwbug.dev/335491380>`__)
3377* `Migrate emboss aliases to new names
3378  <https://pwrev.dev/221181>`__
3379  (issue `#338068316 <https://pwbug.dev/338068316>`__)
3380* `Add tests for LE Read Max. Adv. Data Length
3381  <https://pwrev.dev/221180>`__
3382  (issue `#338058140 <https://pwbug.dev/338058140>`__)
3383* `Ensure command is supported before issuing it
3384  <https://pwrev.dev/221178>`__
3385  (issue `#338058140 <https://pwbug.dev/338058140>`__)
3386* `Use duration_cast for constants
3387  <https://pwrev.dev/221029>`__
3388  (issue `#337928450 <https://pwbug.dev/337928450>`__)
3389* `Implement extended adv. pdus with fragmentation
3390  <https://pwrev.dev/221177>`__
3391  (issue `#312898345 <https://pwbug.dev/312898345>`__,
3392  `#309013696 <https://pwbug.dev/309013696>`__)
3393* `Use \`ull\` constants for enums
3394  <https://pwrev.dev/221028>`__
3395  (issue `#337928450 <https://pwbug.dev/337928450>`__)
3396* `Update semantics of \`bredr.Advertise\`
3397  <https://pwrev.dev/221176>`__
3398  (issues `#330590954 <https://pwbug.dev/330590954>`__,
3399  `#327758656 <https://pwbug.dev/327758656>`__)
3400* `Add the credit-based flow control RxEngine
3401  <https://pwrev.dev/221175>`__
3402* `Migrate LEAdvertisingReportSubevent to Emboss
3403  <https://pwrev.dev/221174>`__
3404  (issue `#86811 <https://pwbug.dev/86811>`__)
3405* `Lenient LEGetVendorCapabilitiesCommandComplete
3406  <https://pwrev.dev/221027>`__
3407  (issues `#337947318 <https://pwbug.dev/337947318>`__,
3408  `#332924521 <https://pwbug.dev/332924521>`__,
3409  `#332924195 <https://pwbug.dev/332924195>`__)
3410* `Migrate FIDL to bt::testing::TestLoopFixture
3411  <https://pwrev.dev/221172>`__
3412  (issue `#324105856 <https://pwbug.dev/324105856>`__)
3413* `Fix all available lint errors
3414  <https://pwrev.dev/221171>`__
3415* `Move LinkKey simple constructors to the h file
3416  <https://pwrev.dev/221025>`__
3417* `Add operator!= for LinkKey
3418  <https://pwrev.dev/221049>`__
3419* `Add extra diagnostics
3420  <https://pwrev.dev/221048>`__
3421* `Improve management of advertising modes
3422  <https://pwrev.dev/221045>`__
3423  (issue `#309013696 <https://pwbug.dev/309013696>`__)
3424* `Add Bazel rules for socket library
3425  <https://pwrev.dev/221024>`__
3426  (issue `#324105856 <https://pwbug.dev/324105856>`__)
3427* `Update LowEnergyAdvertiser to use std::vector
3428  <https://pwrev.dev/221023>`__
3429  (issue `#312898345 <https://pwbug.dev/312898345>`__,
3430  `#309013696 <https://pwbug.dev/309013696>`__)
3431* `Add more values to LEEventMask
3432  <https://pwrev.dev/221022>`__
3433* `Pass hci::AdvertisingIntervalRange as const
3434  <https://pwrev.dev/221044>`__
3435* `Shorten pw::bluetooth::emboss to pwemb
3436  <https://pwrev.dev/221021>`__
3437* `Pass extended_pdu booleans through the stack
3438  <https://pwrev.dev/221043>`__
3439  (issue `#312898345 <https://pwbug.dev/312898345>`__,
3440  `#309013696 <https://pwbug.dev/309013696>`__)
3441* `Update AdvertisingHandleMap for extended PDUs
3442  <https://pwrev.dev/221020>`__
3443  (issue `#312898345 <https://pwbug.dev/312898345>`__,
3444  `#309013696 <https://pwbug.dev/309013696>`__)
3445* `Update missing header
3446  <https://pwrev.dev/221019>`__
3447  (issue `#331673100 <https://pwbug.dev/331673100>`__)
3448* `Add the credit-based flow control TxEngine
3449  <https://pwrev.dev/221017>`__
3450* `Prevent protected member access in TxEngine
3451  <https://pwrev.dev/221016>`__
3452* `Add Bazel tests
3453  <https://pwrev.dev/221015>`__
3454* `Fix conversions from iterators to raw pointers
3455  <https://pwrev.dev/221014>`__
3456  (issue `#328282937 <https://pwbug.dev/328282937>`__)
3457* `Add bt-host Bazel tests
3458  <https://pwrev.dev/221042>`__
3459  (issue `#324105856 <https://pwbug.dev/324105856>`__)
3460* `Low energy advertiser general cleanup
3461  <https://pwrev.dev/221041>`__
3462* `Use using aliases for Emboss type references
3463  <https://pwrev.dev/221012>`__
3464* `Add Bazel build files
3465  <https://pwrev.dev/221036>`__
3466  (issue `#324105856 <https://pwbug.dev/324105856>`__)
3467
3468pw_build
3469--------
3470``pw_py_binary`` is a new wrapper for ``py_binary`` that provides some
3471defaults, such as marking all Python binaries as incompatible with MCUs.
3472
3473* `Introduce pw_py_binary
3474  <https://pwrev.dev/224296>`__
3475  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3476* `Use incompatible_with_mcu in pw_py_test
3477  <https://pwrev.dev/224294>`__
3478
3479pw_channel
3480----------
3481The new :cpp:class:`pw::channel::StreamChannel` adapter makes it easier for
3482a channel to interact with an underlying reader and writer stream.
3483
3484* `Add StreamChannel adapter
3485  <https://pwrev.dev/225651>`__
3486
3487pw_chrono_freertos
3488------------------
3489* `Work around no std::unique_lock in baremetal libc++
3490  <https://pwrev.dev/223636>`__
3491  (issue `#353601672 <https://pwbug.dev/353601672>`__)
3492
3493pw_chrono_stl
3494-------------
3495* `Consolidate SystemTimer into a single thread
3496  <https://pwrev.dev/224295>`__
3497
3498pw_console
3499----------
3500Typing out RPCs to invoke from the web console REPL should now autocomplete
3501as expected. The web console log viewer now has a default config, defined
3502at ``//pw_console/py/pw_console/html/defaultconfig.json``. A new boolean
3503config option, ``recolor_log_lines_to_match_level``, has been added to
3504allow users to control whether log messages should be restyled to match
3505their severity level.
3506
3507* `Fix RPC autocompletion in web kernel
3508  <https://pwrev.dev/225935>`__
3509* `Set a default config for web console's log viewer
3510  <https://pwrev.dev/225751>`__
3511* `Pass rpc completions to web_kernel
3512  <https://pwrev.dev/224311>`__
3513* `Add config option for log message recoloring
3514  <https://pwrev.dev/224475>`__
3515* `Default WebHandler.kernel_params to an empty dictionary
3516  <https://pwrev.dev/223932>`__
3517* `Handle web logging in a separate thread
3518  <https://pwrev.dev/223691>`__
3519* `Cleanup web kernel on page close
3520  <https://pwrev.dev/223178>`__
3521* `Replace placeholder page with real web console
3522  <https://pwrev.dev/223155>`__
3523
3524pw_cpu_exception_cortex_m
3525-------------------------
3526The new ``PW_CPU_EXCEPTION_CORTEX_M_CRASH_ANALYSIS_INCLUDE_PC_LR``
3527option lets you control whether PC and LR register values are included
3528in the ``AnalyzeCpuStateAndCrash()`` analysis.
3529
3530* `Make PC LR optional
3531  <https://pwrev.dev/221731>`__
3532* `Fix assembly
3533  <https://pwrev.dev/223131>`__
3534  (issue `#261603269 <https://pwbug.dev/261603269>`__)
3535* `Temporarily disable tests on Cortex-M33
3536  <https://pwrev.dev/223594>`__
3537  (issues `#353533678 <https://pwbug.dev/353533678>`__,
3538  `#323215726 <https://pwbug.dev/323215726>`__)
3539
3540pw_crypto
3541---------
3542* `Don't build micro-ecc
3543  <https://pwrev.dev/223152>`__
3544  (issue `#261603269 <https://pwbug.dev/261603269>`__)
3545
3546pw_env_setup
3547------------
3548* `Add luci-cv to environment
3549  <https://pwrev.dev/222811>`__
3550
3551pw_grpc
3552-------
3553* `Fix shadowed variable warning
3554  <https://pwrev.dev/225931>`__
3555
3556.. _docs-changelog-20240725-pw_ide:
3557
3558pw_ide
3559------
3560General updates: ``pw_ide`` now detects Bazel projects based on the presence
3561of ``MODULE.bazel`` files. The :ref:`module-pw_ide` docs have been revamped.
3562Shared VS Code settings can now be stored in ``.vscode/settings.shared.json``.
3563The extension no longer attempts to infer the working directory if a project
3564root isn't explicitly provided; instead it prompts users to manually specify
3565the project root. The VS Code extension now has better support for Fish
3566terminals.
3567
3568VS Code extension updates related to code intelligence in Bazel-based projects:
3569The new ``Pigweed: Select Code Analysis Target`` command controls which Bazel
3570target in your project to use for code intelligence. The new ``Pigweed: Refresh
3571Compile Commands`` command lets you manually refresh code intelligence data.
3572There's also a ``Pigweed: Refresh Compile Commands and Select Code Analysis
3573Target`` that combines these two steps. In the VS Code status bar there's a new
3574icon to indicate whether ``clangd`` code intelligence is on or off. Code
3575intelligence data compilation output is now streamed so that you can monitor
3576the progress of the tool in real-time. The easiest way to access these logs is
3577by running the new ``Pigweed: Open Output Panel`` command. The extension now
3578supports a ``.clangd.shared`` file that can be used to control project-wide
3579``clangd`` settings.
3580
3581VS Code extension updates related to other Bazel tools: The extension now
3582bundles Bazelisk and Buildifier. These bundled versions get updated when the
3583extension itself updates. The extension recommends users to use these bundled
3584versions by default. You can use the new ``Activate Bazelisk in Terminal``
3585command to manually specify which Bazelisk version to use.
3586
3587* `Support bzlmod projects
3588  <https://pwrev.dev/225913>`__
3589* `Block on spawned refresh process
3590  <https://pwrev.dev/225731>`__
3591* `Status bar item for inactive file disabling
3592  <https://pwrev.dev/225392>`__
3593* `Support disabling clangd for inactive files
3594  <https://pwrev.dev/224893>`__
3595* `Update vendored tools on extension update
3596  <https://pwrev.dev/225934>`__
3597* `Use vendored Bazelisk in recommended config
3598  <https://pwrev.dev/225933>`__
3599* `Improve VSC settings interface
3600  <https://pwrev.dev/225932>`__
3601* `Add shared settings management
3602  <https://pwrev.dev/224573>`__
3603* `Associate target groups with active files
3604  <https://pwrev.dev/222735>`__
3605* `Don't unnecessarily infer working dir
3606  <https://pwrev.dev/224572>`__
3607* `VSC extension 1.1.1 release
3608  <https://pwrev.dev/224897>`__
3609* `Add missing command stubs
3610  <https://pwrev.dev/224892>`__
3611* `Stream refresh compile commands output
3612  <https://pwrev.dev/224313>`__
3613* `Update dev build configs
3614  <https://pwrev.dev/224312>`__
3615* `Add fish to Bazelisk+VSC terminal
3616  <https://pwrev.dev/224292>`__
3617* `VSC extension 1.1.0 release
3618  <https://pwrev.dev/224171>`__
3619* `Patch Bazelisk into VSC terminal
3620  <https://pwrev.dev/223823>`__
3621* `VSC extension 1.0.0 release
3622  <https://pwrev.dev/223911>`__
3623* `Revise docs
3624  <https://pwrev.dev/223157>`__
3625* `Update VSC extension packaging
3626  <https://pwrev.dev/223634>`__
3627* `Add proto extension as dependency
3628  <https://pwrev.dev/223156>`__
3629* `Fix VSC troubleshooting links
3630  <https://pwrev.dev/223576>`__
3631* `Update compile commands tool version
3632  <https://pwrev.dev/222575>`__
3633* `Don't show root comp DB dir as target
3634  <https://pwrev.dev/223633>`__
3635* `VSC status bar item for target selection
3636  <https://pwrev.dev/220134>`__
3637* `Add IDE support refresh manager
3638  <https://pwrev.dev/219973>`__
3639* `Integrate Bazelisk in VSC
3640  <https://pwrev.dev/219971>`__
3641* `Bazel comp DB management in VSC
3642  <https://pwrev.dev/218832>`__
3643* `VSC/JS project management
3644  <https://pwrev.dev/222734>`__
3645* `Create VSC settings interface
3646  <https://pwrev.dev/222733>`__
3647* `Use VSC output panel for logging
3648  <https://pwrev.dev/222732>`__
3649* `VSC extension cleanup
3650  <https://pwrev.dev/222731>`__
3651
3652pw_kvs
3653------
3654* `Missing <string> includes
3655  <https://pwrev.dev/223352>`__
3656  (issue `#298822102 <https://pwbug.dev/298822102>`__)
3657* `Update bazel config
3658  <https://pwrev.dev/223171>`__
3659
3660pw_libcxx
3661---------
3662``pw_libcxx`` now has support for the ``new`` operator.
3663
3664* `Actually implement operator delete
3665  <https://pwrev.dev/223692>`__
3666* `Add operator new
3667  <https://pwrev.dev/223632>`__
3668
3669pw_log
3670------
3671* `Log decoder timestamp cleanup
3672  <https://pwrev.dev/223271>`__
3673* `Fix log_decoder timestamp formatting
3674  <https://pwrev.dev/222771>`__
3675  (issue `#351905996 <https://pwbug.dev/351905996>`__)
3676
3677pw_multibuf
3678-----------
3679* `Add more context on chunk regions
3680  <https://pwrev.dev/222431>`__
3681
3682pw_presubmit
3683------------
3684``pw_presubmit.inclusive_language.check_file`` now accepts an optional
3685``check_path`` argument which controls whether to check the path for
3686non-inclusive language.
3687
3688* `Add attributes to docstring
3689  <https://pwrev.dev/223095>`__
3690* `Allow disabling checks in unit tests
3691  <https://pwrev.dev/223577>`__
3692  (issue `#352515663 <https://pwbug.dev/352515663>`__)
3693* `No copyright check in .vscodeignore
3694  <https://pwrev.dev/223575>`__
3695* `Skip commit message check for merges
3696  <https://pwrev.dev/223574>`__
3697* `Add test for inclusive language check
3698  <https://pwrev.dev/222311>`__
3699  (issue `#352515663 <https://pwbug.dev/352515663>`__)
3700
3701pw_result
3702---------
3703* `Fix docs.rst example
3704  <https://pwrev.dev/223251>`__
3705* `Add missing header
3706  <https://pwrev.dev/223176>`__
3707  (issue `#261603269 <https://pwbug.dev/261603269>`__)
3708* `Missing <string> includes
3709  <https://pwrev.dev/223352>`__
3710  (issue `#298822102 <https://pwbug.dev/298822102>`__)
3711
3712pw_rpc
3713------
3714Soong proto building is now more flexible; genrules can now have protos from
3715different sources. ``.option`` files can now be used in Soong genrules sources.
3716
3717* `Build proto path arg list for Soong
3718  <https://pwrev.dev/225031>`__
3719* `Pass .proto files to compiler in Soong
3720  <https://pwrev.dev/222737>`__
3721
3722pw_rpc_transport
3723----------------
3724* `Don't write empty header in StreamRpcFrameSender
3725  <https://pwrev.dev/220211>`__
3726
3727pw_sensor
3728---------
3729* `Add units to sensor::channels final output
3730  <https://pwrev.dev/224711>`__
3731  (issue `#293466822 <https://pwbug.dev/293466822>`__)
3732* `Implement attributes, channels, triggers, and units
3733  <https://pwrev.dev/204199>`__
3734  (issue `#293466822 <https://pwbug.dev/293466822>`__)
3735
3736pw_stream
3737---------
3738* `Update bazel config
3739  <https://pwrev.dev/223171>`__
3740
3741pw_stream_uart_mcuxpresso
3742-------------------------
3743* `Check init state in Deinit()
3744  <https://pwrev.dev/224031>`__
3745
3746pw_string
3747---------
3748The new :cpp:func:`pw::utf8::ReadCodePoint`,
3749:cpp:func:`pw::utf8::EncodeCodePoint`, and
3750:cpp:func:`pw::utf8::WriteCodePoint` methods provide basic UTF-8 decoding
3751and encoding.
3752
3753* `Add utf_codecs
3754  <https://pwrev.dev/222738>`__
3755  (issue `#337305285 <https://pwbug.dev/337305285>`__)
3756* `Disable wchar test for libcpp
3757  <https://pwrev.dev/223581>`__
3758  (issue `#353604434 <https://pwbug.dev/353604434>`__)
3759
3760pw_sync
3761-------
3762The condition variable interface has been deprecated. See
3763:ref:`module-pw_sync-condition-variables`.
3764
3765* `Document that CV should not be used
3766  <https://pwrev.dev/162771>`__
3767  (issue `#294395229 <https://pwbug.dev/294395229>`__)
3768
3769pw_system
3770---------
3771Async ``pw_system`` now supports a crash handling service. When a crash
3772snapshot is available, ``pw_system`` now logs instructions on how to download
3773it. The ``pw_system`` console API now accepts an optional
3774``device_connection`` object, allowing for more flexible connection
3775management. Device class creation has been refactored to make it easier for
3776Python scripts to setup connections to devices in the same way that the
3777``pw_system`` console does. As part of this refactor the ``--output``
3778and ``--proto-globs`` flags were removed from the ``pw_system`` console.
3779
3780* `Enable crash handler in async system
3781  <https://pwrev.dev/225911>`__
3782* `Improve message when crash snapshot exists
3783  <https://pwrev.dev/225851>`__
3784  (issue `#354767156 <https://pwbug.dev/354767156>`__)
3785* `Add crash handling and device service
3786  <https://pwrev.dev/224299>`__
3787  (issue `#350807773 <https://pwbug.dev/350807773>`__)
3788* `Make pw_system_console work for rp2040
3789  <https://pwrev.dev/224714>`__
3790  (issue `#354203490 <https://pwbug.dev/354203490>`__)
3791* `Console device connection override
3792  <https://pwrev.dev/223173>`__
3793* `Add synchronization to pw::System allocator
3794  <https://pwrev.dev/222794>`__
3795  (issues `#352592037 <https://pwbug.dev/352592037>`__,
3796  `#352818465 <https://pwbug.dev/352818465>`__)
3797* `Reusable DeviceConnection functionality
3798  <https://pwrev.dev/221752>`__
3799
3800pw_target_runner
3801----------------
3802* `Increase maximum message size for binaries
3803  <https://pwrev.dev/222736>`__
3804
3805pw_thread
3806---------
3807The new ``pw::thread::TestThreadContext()`` interface makes it easier to
3808create threads for unit tests.
3809
3810* `Add TestThreadContext for FreeRTOS
3811  <https://pwrev.dev/222671>`__
3812
3813pw_tokenizer
3814------------
3815* `Missing <string> includes
3816  <https://pwrev.dev/223352>`__
3817  (issue `#298822102 <https://pwbug.dev/298822102>`__)
3818
3819pw_toolchain
3820------------
3821The new ``minimum_cxx_20()`` Bazel helper can be used with
3822``target_compatible_with`` attributes to express that a target
3823requires C++20 or newer.
3824
3825* `Select Bazel C++ version with config_setting
3826  <https://pwrev.dev/221453>`__
3827  (issue `#352379527 <https://pwbug.dev/352379527>`__)
3828* `Hide toolchain path behind variable
3829  <https://pwrev.dev/224851>`__
3830  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3831* `Add linux_sysroot.bzl
3832  <https://pwrev.dev/223578>`__
3833  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3834* `Host clang toolchain for Bazel
3835  <https://pwrev.dev/223172>`__
3836* `Pico Bazel build
3837  <https://pwrev.dev/223312>`__
3838  (issue `#261603269 <https://pwbug.dev/261603269>`__)
3839* `Add tsan support for host builds
3840  <https://pwrev.dev/222891>`__
3841  (issue `#301487567 <https://pwbug.dev/301487567>`__)
3842* `Add ubsan support for host builds
3843  <https://pwrev.dev/222791>`__
3844
3845pw_trace_tokenized
3846------------------
3847* `Fix bazel build
3848  <https://pwrev.dev/223093>`__
3849  (issues `#260641850 <https://pwbug.dev/issues/260641850>`__,
3850  `#258071921 <https://pwbug.dev/issues/258071921>`__)
3851
3852pw_transfer
3853-----------
3854The new ``PW_TRANSFER_EVENT_PROCESSING_TIMEOUT_MS`` lets you control how
3855long incoming transfer events should block on the previous event being
3856processed before dropping the new event.
3857
3858* `Don't block indefinitely on events
3859  <https://pwrev.dev/224693>`__
3860* `Fix initial timeout and missing start chunk
3861  <https://pwrev.dev/222511>`__
3862
3863pw_unit_test
3864------------
3865* `Removed duplicate from forwarded variables list in pw_test
3866  <https://pwrev.dev/223431>`__
3867* `Update logging_main compatibility
3868  <https://pwrev.dev/223579>`__
3869* `Missing <string> includes
3870  <https://pwrev.dev/223352>`__
3871  (issue `#298822102 <https://pwbug.dev/298822102>`__)
3872* `Introduce googtest_platform
3873  <https://pwrev.dev/222812>`__
3874  (issue `#352808542 <https://pwbug.dev/352808542>`__)
3875
3876pw_web
3877------
3878The REPL in the web console now provides a welcome message that lists commonly
3879used keyboard shortcuts. The log viewer UI is now more dense. The REPL is now
3880positioned on the left by default. Pressing :kbd:`Shift+Enter` in the REPL
3881now goes to a new line rather than evaluating.
3882
3883* `Add icon for info
3884  <https://pwrev.dev/225413>`__
3885  (issue `#354282161 <https://pwbug.dev/354282161>`__)
3886* `Fix keyboard shortcut in repl.rst
3887  <https://pwrev.dev/226003>`__
3888* `Add repl intro message and title param
3889  <https://pwrev.dev/225757>`__
3890  (issue `#354283703 <https://pwbug.dev/354283703>`__)
3891* `Increase default log viewer density
3892  <https://pwrev.dev/225671>`__
3893  (issues `# 354282977 <https://pwbug.dev/ 354282977>`__,
3894  `# 342451299 <https://pwbug.dev/ 342451299>`__)
3895* `Move REPL to left, reduce default division to 40%
3896  <https://pwrev.dev/225755>`__
3897* `Fix bug in code editor to not eval empty snippet
3898  <https://pwrev.dev/224315>`__
3899* `NPM version bump to 0.0.20
3900  <https://pwrev.dev/223154>`__
3901* `Change repl keybinding to eval
3902  <https://pwrev.dev/223174>`__
3903* `Bundle console.ts, fix log source handlers
3904  <https://pwrev.dev/222534>`__
3905* `Save state on input change and adjust filter logs logic
3906  <https://pwrev.dev/222774>`__
3907  (issue `#235253336 <https://pwbug.dev/235253336>`__)
3908* `Add filter field buttons and placeholder
3909  <https://pwrev.dev/222711>`__
3910
3911Third-party software
3912====================
3913
3914Emboss
3915------
3916Emboss was updated to v2024.0718.173957. Emboss build steps that involve
3917Python now use an optimized version of Python, resulting in a 15% speedup.
3918
3919* `Disable using pw_python_action
3920  <https://pwrev.dev/226009>`__
3921  (issue `#354195492 <https://pwbug.dev/354195492>`__)
3922* `Update emboss repo to v2024.0718.173957
3923  <https://pwrev.dev/224713>`__
3924  (issue `#354195492 <https://pwbug.dev/354195492>`__)
3925* `Run python with optimization on
3926  <https://pwrev.dev/224712>`__
3927  (issue `#354195492 <https://pwbug.dev/354195492>`__)
3928* `Make emboss_runner_py Soong target
3929  <https://pwrev.dev/225151>`__
3930  (issue `#352364622 <https://pwbug.dev/352364622>`__)
3931* `Remove -Wno-format-invalid-specifier
3932  <https://pwrev.dev/213660>`__
3933* `Update emboss repo to v2024.0716.040724
3934  <https://pwrev.dev/223592>`__
3935  (issue `#353533164 <https://pwbug.dev/353533164>`__)
3936
3937Go
3938--
3939* `Create a Pigweed-wide go.mod file
3940  <https://pwrev.dev/225011>`__
3941  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3942
3943Miscellaneous
3944=============
3945
3946Rolls
3947-----
3948FreeRTOS was updated to version ``10.5.1.bcr.2``. CMake was bumped to version
3949``[email protected]``. Rust was updated to Git revision
3950``73a228116ae8c8ce73e309eee8c730ce90feac78``.
3951
3952* `FreeRTOS for upstream
3953  <https://pwrev.dev/226091>`__
3954  (issue `#355203454 <https://pwbug.dev/355203454>`__)
3955* `FreeRTOS
3956  <https://pwrev.dev/225791>`__
3957* `cmake
3958  <https://pwrev.dev/225172>`__
3959* `rust
3960  <https://pwrev.dev/225171>`__
3961* `rules_python
3962  <https://pwrev.dev/224054>`__
3963  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3964* `Fuchsia SDK
3965  <https://pwrev.dev/223593>`__
3966  (issues `#258836641 <https://pwbug.dev/258836641>`__,
3967  `#353749536 <https://pwbug.dev/353749536>`__)
3968* `310, 311
3969  <https://pwrev.dev/222650>`__
3970
3971Targets
3972=======
3973
3974RP2040
3975------
3976* `Add pw_libcxx as dep for system_async_example
3977  <https://pwrev.dev/223573>`__
3978* `Import statement fix
3979  <https://pwrev.dev/225754>`__
3980  (issue `#258836641 <https://pwbug.dev/258836641>`__)
3981* `Enhance on-device testing instructions
3982  <https://pwrev.dev/225311>`__
3983* `Fix assert basic termination behavior
3984  <https://pwrev.dev/223580>`__
3985
3986------------
3987Jul 11, 2024
3988------------
3989Highlights (Jun 28, 2024 to Jul 11, 2024):
3990
3991* **Bazel 8 pre-release**: Upstream Pigweed is now using a pre-release version
3992  of Bazel 8, the first version to include platform-based flags.
3993* **ARMv6-M support**: :ref:`module-pw_cpu_exception_cortex_m` now supports
3994  ARMv6-M cores.
3995* **Browser-based pw_system console**: The new ``--browser`` option lets
3996  you start a ``pw_system`` console in a web browser rather than the default
3997  Python-based terminal console.
3998* **Updated pw_rpc docs**: The :ref:`module-pw_rpc` docs
3999  have been revamped to make getting started easier and to
4000  provide more Bazel guidance.
4001
4002Build systems
4003=============
4004
4005Bazel
4006-----
4007Pigweed is now using version 8.0.0-pre.20240618.2 of Bazel, the first version
4008to include platform-based flags. Some backend collection targets are now being
4009provided as dictionaries to enable downstream projects to use the pattern
4010described in :ref:`docs-bazel-compatibility-facade-backend-dict`.  The
4011``incompatible_with_mcu`` Bazel helper has been introduced to help express
4012whether a target is only compatible with platforms that have a full-featured
4013OS.
4014
4015* `Run all tests with googletest backend in CI
4016  <https://pwrev.dev/222532>`__
4017  (issue `#352584464 <https://pwbug.dev/352584464>`__)
4018* `Add missing dependencies
4019  <https://pwrev.dev/222572>`__
4020  (issue `#352584464 <https://pwbug.dev/352584464>`__)
4021* `Don't propagate flags to exec config
4022  <https://pwrev.dev/220812>`__
4023  (issues `#234877642 <https://pwbug.dev/234877642>`__,
4024  `#315871648 <https://pwbug.dev/315871648>`__)
4025* `Provide backend collections as dicts
4026  <https://pwrev.dev/219911>`__
4027  (issue `#344654805 <https://pwbug.dev/344654805>`__)
4028* `Roll out incompatible_with_mcu
4029  <https://pwrev.dev/216852>`__
4030  (issue `#348008794 <https://pwbug.dev/348008794>`__)
4031* `Introduce incompatible_with_mcu
4032  <https://pwrev.dev/216851>`__
4033  (issue `#348008794 <https://pwbug.dev/348008794>`__,
4034  `#343481391 <https://pwbug.dev/343481391>`__)
4035* `Add back to CI some building targets
4036  <https://pwrev.dev/218698>`__
4037  (issue `#261603269 <https://pwbug.dev/261603269>`__)
4038
4039Docs
4040====
4041* `Fix shortlink URL
4042  <https://pwrev.dev/221751>`__
4043* `Add shortlink to pw_enviro draft
4044  <https://pwrev.dev/221533>`__
4045* `Update changelog
4046  <https://pwrev.dev/219131>`__
4047
4048Modules
4049=======
4050
4051pw_allocator
4052------------
4053A bug was fixed that caused builds to break when
4054``-Wmissing-template-arg-list-after-template-kw`` is turned on.
4055
4056* `Remove unnecessary template
4057  <https://pwrev.dev/220111>`__
4058
4059pw_assert
4060---------
4061Downstream projects using Bazel now need to set the new backend label flags
4062``@pigweed//pw_assert:check_backend`` and
4063``@pigweed//pw_assert:check_backend_impl`` and include them in their link
4064deps.
4065
4066* `Split up Bazel assert backend, part 2
4067  <https://pwrev.dev/219791>`__
4068  (issue `#350585010 <https://pwbug.dev/350585010>`__)
4069* `Split up Bazel assert backend, part 1
4070  <https://pwrev.dev/219611>`__
4071  (issue `#350585010 <https://pwbug.dev/350585010>`__)
4072
4073pw_async2
4074---------
4075* `Add missing thread_stl dependency
4076  <https://pwrev.dev/219291>`__
4077
4078pw_async2_epoll
4079---------------
4080* `Use unordered_map; silence persistent warnings
4081  <https://pwrev.dev/218860>`__
4082
4083pw_async_basic
4084--------------
4085* `Fix size report build error
4086  <https://pwrev.dev/219691>`__
4087  (issue `#350780546 <https://pwbug.dev/350780546>`__)
4088
4089pw_bluetooth
4090------------
4091* `Format emboss files
4092  <https://pwrev.dev/219351>`__
4093
4094pw_bluetooth_proxy
4095------------------
4096``pw::bluetooth::proxy::sendGattNotify()`` (lowercase first letter) has been
4097removed; use ``pw::bluetooth::proxy::SendGattNotify()`` (uppercase first
4098letter) instead. The new
4099``pw::bluetooth::proxy::GetNumSimultaneousAclSendsSupported()`` function
4100returns the max number of LE ACL sends that can be in-flight at one time.
4101The new ``pw::bluetooth::proxy::AclDataChannel::Reset()`` and
4102``pw::bluetooth::proxy::ProxyHost::Reset()`` methods let you reset the internal
4103state of those classes.
4104
4105* `Delete "sendGattNotify"
4106  <https://pwrev.dev/220951>`__
4107  (issue `#350106534 <https://pwbug.dev/350106534>`__)
4108* `Include <optional> in proxy_host.h
4109  <https://pwrev.dev/220657>`__
4110* `ProxyHost supports multiple sends
4111  <https://pwrev.dev/220573>`__
4112  (issues `#348680331 <https://pwbug.dev/348680331>`__,
4113  `#326499764 <https://pwbug.dev/326499764>`__)
4114* `Remove unneeded PW_EXCLUSIVE_LOCKS_REQUIRED
4115  <https://pwrev.dev/219417>`__
4116  (issue `#350106534 <https://pwbug.dev/350106534>`__)
4117* `Soft transition to SendGattNotify
4118  <https://pwrev.dev/219120>`__
4119  (issue `#350106534 <https://pwbug.dev/350106534>`__)
4120* `Add ProxyHost/AclDataChannel::Reset()
4121  <https://pwrev.dev/219119>`__
4122  (issue `#350497803 <https://pwbug.dev/350497803>`__)
4123* `Dedup NOCP construction in tests
4124  <https://pwrev.dev/219118>`__
4125* `Document which events are expected
4126  <https://pwrev.dev/219353>`__
4127  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4128* `Adjust const for pw::span
4129  <https://pwrev.dev/218877>`__
4130  (issue `#326497489 <https://pwbug.dev/326497489>`__)
4131* `Remove use of <mutex>
4132  <https://pwrev.dev/218893>`__
4133  (issue `#350009505 <https://pwbug.dev/350009505>`__)
4134* `Prevent crash in GattNotifyTest
4135  <https://pwrev.dev/218834>`__
4136
4137pw_bluetooth_sapphire
4138---------------------
4139* `Remove modulo operator from asserts
4140  <https://pwrev.dev/222233>`__
4141* `Add Bazel build files to lib/ packages
4142  <https://pwrev.dev/222232>`__
4143* `Use pwemb namespace alias in FakeController
4144  <https://pwrev.dev/221034>`__
4145* `Unmask LE Connection Complete
4146  <https://pwrev.dev/221033>`__
4147* `Implement ExtendedLowEnergyConnector
4148  <https://pwrev.dev/221032>`__
4149  (issue `#305976440 <https://pwbug.dev/305976440>`__)
4150* `Enable bt-host component
4151  <https://pwrev.dev/221011>`__
4152  (issues `#303116559 <https://pwbug.dev/303116559>`__,
4153  `# b/324109634 <https://pwbug.dev/ b/324109634>`__,
4154  `#326079781 <https://pwbug.dev/326079781>`__,
4155  `# b/325142183 <https://pwbug.dev/ b/325142183>`__)
4156* `Support ISO Channel FIDL Protocol in Drivers
4157  <https://pwrev.dev/221267>`__
4158  (issue `#328457492 <https://pwbug.dev/328457492>`__,
4159  issue `# b/328459391 <https://pwbug.dev/ b/328459391>`__)
4160* `Add ISO support to controllers
4161  <https://pwrev.dev/218992>`__
4162  (issue `#311639690 <https://pwbug.dev/311639690>`__)
4163* `Tag integration test
4164  <https://pwrev.dev/220991>`__
4165  (issue `#344654806 <https://pwbug.dev/344654806>`__)
4166* `Implement ExtendedLowEnergyScanner
4167  <https://pwrev.dev/218979>`__
4168  (issue `#305975969 <https://pwbug.dev/305975969>`__)
4169* `Add packet filtering consts to vendor protocol
4170  <https://pwrev.dev/218978>`__
4171* `Update LEAdvertisers to use EmbossCommandPacket
4172  <https://pwrev.dev/218991>`__
4173  (issue `#312896684 <https://pwbug.dev/312896684>`__)
4174* `Use Emboss for android vendor exts multi advert
4175  <https://pwrev.dev/218977>`__
4176  (issue `#312896673 <https://pwbug.dev/312896673>`__)
4177* `Use Emboss versions of a2dp offload structs
4178  <https://pwrev.dev/218976>`__
4179* `Refactor LowEnergyScanResult to its own class
4180  <https://pwrev.dev/218975>`__
4181* `Refactor TxEngine to allow queueing SDUs
4182  <https://pwrev.dev/218915>`__
4183* `Add incoming CIS request handler
4184  <https://pwrev.dev/218972>`__
4185* `Add IsoStreamManager class
4186  <https://pwrev.dev/218971>`__
4187* `Add CIS events and commands
4188  <https://pwrev.dev/218914>`__
4189  (issue `#311639432 <https://pwbug.dev/311639432>`__)
4190* `Retrieve sleep clock accuracy for peers
4191  <https://pwrev.dev/218913>`__
4192  (issue `#311639272 <https://pwbug.dev/311639272>`__)
4193* `Fix LowEnergyScanner crash
4194  <https://pwrev.dev/218974>`__
4195  (issue `#323098126 <https://pwbug.dev/323098126>`__)
4196* `Remove unused include
4197  <https://pwrev.dev/214677>`__
4198* `Add infrastructure for SCA operations
4199  <https://pwrev.dev/214676>`__
4200  (issue `#311639272 <https://pwbug.dev/311639272>`__)
4201* `Use Write instead of UncheckedWrite
4202  <https://pwrev.dev/214675>`__
4203* `Remove now unnecessary use of std::optional
4204  <https://pwrev.dev/214654>`__
4205* `Expose connection role to le handle
4206  <https://pwrev.dev/214653>`__
4207  (issue `#311639432 <https://pwbug.dev/311639432>`__)
4208* `Disambiguate comment
4209  <https://pwrev.dev/214673>`__
4210* `Fix typo in comment
4211  <https://pwrev.dev/214652>`__
4212
4213pw_build
4214--------
4215The new macros in ``//pw_build:merge_flags.bzl`` help with using
4216platform-based flags.
4217
4218* `Add flags_from_dict
4219  <https://pwrev.dev/221691>`__
4220  (issue `#301334234 <https://pwbug.dev/301334234>`__)
4221
4222pw_cli
4223------
4224``pw_cli`` has increased support for letting users select from interactive
4225prompts. The RP2040 flasher utility uses the new interactive prompting
4226features to let users select which detected device to flash.
4227
4228* `Interactive user index prompt
4229  <https://pwrev.dev/220931>`__
4230
4231pw_console
4232----------
4233* `Headless mode with web/ws server running
4234  <https://pwrev.dev/215860>`__
4235
4236pw_cpu_exception
4237----------------
4238* `Remove multiplexers
4239  <https://pwrev.dev/219371>`__
4240  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4241
4242pw_cpu_exception_cortex_m
4243-------------------------
4244``pw_cpu_exception_cortex_m`` now supports ARMv6-M cores.
4245
4246* `Add armv6-m support
4247  <https://pwrev.dev/219132>`__
4248  (issues `#350747553 <https://pwbug.dev/https://pwbug.dev/350747553>`__,
4249  `#350747562 <https://pwbug.dev/https://pwbug.dev/350747562>`__)
4250
4251pw_digital_io_rp2040
4252--------------------
4253The new ``enable_pull_up`` and ``enable_pull_down`` fields in the
4254``pw::digital_io::Rp2040Config`` struct let you configure whether resistors
4255should be pulled up or down.
4256
4257* `Add pull up/down resistors to Rp2040Config
4258  <https://pwrev.dev/219731>`__
4259* `Remove manual tags
4260  <https://pwrev.dev/219052>`__
4261  (issue `#261603269 <https://pwbug.dev/261603269>`__)
4262
4263pw_env_setup
4264------------
4265* `Use full paths for proj action imports
4266  <https://pwrev.dev/222571>`__
4267
4268pw_function
4269-----------
4270* `Dynamic allocation for upstream host
4271  <https://pwrev.dev/221871>`__
4272
4273pw_log_string
4274-------------
4275* `Require backend_impl to be set explicitly
4276  <https://pwrev.dev/221293>`__
4277
4278pw_malloc_freertos
4279------------------
4280* `Fix typo
4281  <https://pwrev.dev/220751>`__
4282  (issue `#351945325 <https://pwbug.dev/351945325>`__)
4283
4284pw_presubmit
4285------------
4286* `Narrow copyright notice exclusions
4287  <https://pwrev.dev/221532>`__
4288  (issue `#347062591 <https://pwbug.dev/347062591>`__)
4289* `Add copyright notice to some test data
4290  <https://pwrev.dev/221395>`__
4291  (issue `#347062591 <https://pwbug.dev/347062591>`__)
4292* `Exclude test_data from bazel_lint
4293  <https://pwrev.dev/221152>`__
4294* `Exclude files from copyright
4295  <https://pwrev.dev/221151>`__
4296* `Don't automatically use exclusions
4297  <https://pwrev.dev/216355>`__
4298  (issue `#347274642 <https://pwbug.dev/347274642>`__)
4299
4300pw_rpc
4301------
4302The :ref:`module-pw_rpc` docs have been revamped to make getting started
4303easier and to provide more Bazel guidance.
4304
4305* `Expand comment for internal::ClientServerTestComment
4306  <https://pwrev.dev/220574>`__
4307* `Update docs
4308  <https://pwrev.dev/219392>`__
4309  (issue `#349832019 <https://pwbug.dev/349832019>`__)
4310
4311pw_stream_uart_mcuxpresso
4312-------------------------
4313* `Clean up dma stream comments
4314  <https://pwrev.dev/222111>`__
4315
4316pw_sys_io
4317---------
4318* `Remove multiplexer, constraints
4319  <https://pwrev.dev/218736>`__
4320  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4321
4322pw_sys_io_baremetal_stm32f429
4323-----------------------------
4324Bazel projects should now set the ``--@pigweed//pw_sys_io:backend``
4325label flag to ``@pigweed//pw_sys_io_baremetal_stm32f429`` and add the
4326``@pigweed//pw_sys_io_baremetal_stm32f429:compatible`` constraint to their
4327platform to indicate that the platform is compatible with
4328``pw_sys_io_baremetal_stm32f429``.
4329
4330* `Add constraint
4331  <https://pwrev.dev/218831>`__
4332  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4333
4334pw_sys_io_stm32cube
4335-------------------
4336* `Remove target_compatible_with
4337  <https://pwrev.dev/218704>`__
4338  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4339
4340pw_system
4341---------
4342The new ``--browser`` option lets you start a browser-based ``pw_system``
4343console instead of a terminal-based one.Thread stack sizes for the new
4344async version of ``pw_system`` can now be configured with
4345``PW_SYSTEM_ASYNC_LOG_THREAD_STACK_SIZE_BYTES``,
4346``PW_SYSTEM_ASYNC_RPC_THREAD_STACK_SIZE_BYTES``,
4347``PW_SYSTEM_ASYNC_TRANSFER_THREAD_STACK_SIZE_BYTES``, and
4348``PW_SYSTEM_ASYNC_DISPATCHER_THREAD_STACK_SIZE_BYTES``. The new
4349``pw::system::AsyncCore::RunOnce()`` method provides a way to run a function
4350once on a separate thread. The ``--ipython`` option has been removed from the
4351``pw_system`` console. See :ref:`module-pw_console-embedding-ipython` for
4352guidance on how to embed IPython.
4353
4354* `Add web console option
4355  <https://pwrev.dev/221071>`__
4356* `Add missing work queue thread
4357  <https://pwrev.dev/222372>`__
4358* `Clean up pw_system/threads.cc
4359  <https://pwrev.dev/222371>`__
4360* `Configurable thread stack sizes
4361  <https://pwrev.dev/221394>`__
4362* `RunOnce function for work queue functionality
4363  <https://pwrev.dev/218954>`__
4364* `Remove IPython from pw_system console
4365  <https://pwrev.dev/218882>`__
4366* `Organize pw_system:async build targets
4367  <https://pwrev.dev/218737>`__
4368
4369pw_thread
4370---------
4371* `Remove backend multiplexers
4372  <https://pwrev.dev/218238>`__
4373  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4374
4375pw_thread_stl
4376-------------
4377The ``pw::thread::Thread::native_handle()`` method now returns a pointer to
4378the underlying thread object instead of a reference and the docs have been
4379updated to make it clear that using this is inherently non-portable.
4380
4381* `Change NativeThreadHandle to ptr
4382  <https://pwrev.dev/219251>`__
4383  (issue `#350349092 <https://pwbug.dev/350349092>`__)
4384
4385pw_toolchain
4386------------
4387Go binaries have been updated to no longer link with position-independent
4388executables (PIE) on Linux.
4389
4390* `Disable PIE for Golang
4391  <https://pwrev.dev/220191>`__
4392  (issue `#347708308 <https://pwbug.dev/347708308>`__)
4393
4394pw_toolchain_bazel
4395------------------
4396* `Add native binary for clang-tidy
4397  <https://pwrev.dev/221471>`__
4398  (issue `#352343585 <https://pwbug.dev/352343585>`__)
4399
4400pw_trace
4401--------
4402* `Remove backend multiplexer
4403  <https://pwrev.dev/219792>`__
4404  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4405
4406pw_transfer
4407-----------
4408* `Don't assert on resource status responder
4409  <https://pwrev.dev/219037>`__
4410
4411pw_unit_test
4412------------
4413* `Fix CMake test runner argument forwarding
4414  <https://pwrev.dev/218973>`__
4415
4416pw_web
4417------
4418Upstream Pigweed protos are now provided alongside downstream project protos.
4419
4420* `Include core .proto files in the npm bundle
4421  <https://pwrev.dev/222533>`__
4422* `Add newlines, separators, and clear for output
4423  <https://pwrev.dev/222531>`__
4424  (issue `#348650028 <https://pwbug.dev/348650028>`__)
4425* `Set min width for message
4426  <https://pwrev.dev/221592>`__
4427  (issue `#351901512 <https://pwbug.dev/351901512>`__)
4428* `Implement console-level split panels
4429  <https://pwrev.dev/220691>`__
4430  (issue `#348649945 <https://pwbug.dev/348649945>`__)
4431* `Update REPL styles
4432  <https://pwrev.dev/220971>`__
4433  (issue `#348650028 <https://pwbug.dev/348650028>`__)
4434* `Repl kernel interface and litjs component for repl
4435  <https://pwrev.dev/217311>`__
4436* `Fix columns on first load
4437  <https://pwrev.dev/218551>`__
4438  (issue `#346869281 <https://pwbug.dev/346869281>`__)
4439* `Debounce grid template calc on resize
4440  <https://pwrev.dev/218377>`__
4441  (issues `#346596380 <https://pwbug.dev/346596380>`__,
4442  `#342450728 <https://pwbug.dev/342450728>`__)
4443
4444Rolls
4445=====
4446Pigweed is now using version 8.0.0-pre.20240618.2 of Bazel, the first version
4447to include platform-based flags. Go was updated to version ``[email protected]``. CMake
4448was updated to version ``[email protected]``.
4449
4450* `Update Bazel to 8.0 rolling release
4451  <https://pwrev.dev/220118>`__
4452  (issue `#344013743 <https://pwbug.dev/344013743>`__)
4453* `Update Bazel to 7.2
4454  <https://pwrev.dev/220571>`__
4455  (issue `#347708308 <https://pwbug.dev/347708308>`__)
4456* `go
4457  <https://pwrev.dev/220471>`__
4458* `cmake
4459  <https://pwrev.dev/220351>`__
4460* `310, 311
4461  <https://pwrev.dev/219173>`__
4462
4463Targets
4464=======
4465
4466RP2040
4467------
4468The RP2040 flasher now provides more feedback when a board has been
4469successfully flashed.
4470
4471* `Fix FreeRTOS tick rate
4472  <https://pwrev.dev/220791>`__
4473  (issue `#351906735 <https://pwbug.dev/351906735>`__)
4474* `Log on successful flash
4475  <https://pwrev.dev/220575>`__
4476  (issue `#352052013 <https://pwbug.dev/352052013>`__)
4477* `Fix build command in docs
4478  <https://pwrev.dev/219359>`__
4479
4480Third-party software
4481====================
4482
4483Emboss
4484------
4485Emboss was updated to version ``2024.0702.215418``.
4486
4487* `Add missing ir_data_utils.py to GN build
4488  <https://pwrev.dev/220114>`__
4489  (issue `#350970460 <https://pwbug.dev/350970460>`__)
4490* `Update emboss to v2024.0702.215418
4491  <https://pwrev.dev/219793>`__
4492  (issue `#350970460 <https://pwbug.dev/350970460>`__)
4493
4494FreeRTOS
4495--------
4496* `Add missing CM33_NTZ header
4497  <https://pwrev.dev/222574>`__
4498
4499GoogleTest
4500----------
4501* `Fix the docs
4502  <https://pwrev.dev/222573>`__
4503  (issue `#352584464 <https://pwbug.dev/352584464>`__)
4504
4505ICU
4506---
4507* `Update Bazel rules for dependent headers
4508  <https://pwrev.dev/222231>`__
4509* `Add Bazel build rules
4510  <https://pwrev.dev/218702>`__
4511  (issue `#321300565 <https://pwbug.dev/321300565>`__)
4512
4513Mbed TLS
4514--------
4515* `Remove old build file
4516  <https://pwrev.dev/220137>`__
4517* `Rename build file
4518  <https://pwrev.dev/218709>`__
4519
4520Miscellaneous
4521=============
4522
4523GitHub
4524------
4525* `Add copyright notice
4526  <https://pwrev.dev/221491>`__
4527  (issue `#347062591 <https://pwbug.dev/347062591>`__)
4528
4529dotfiles
4530--------
4531* `Add copyright notice
4532  <https://pwrev.dev/221531>`__
4533  (issue `#347062591 <https://pwbug.dev/347062591>`__)
4534
4535------------
4536Jun 27, 2024
4537------------
4538Highlights (Jun 14, 2024 to Jun 27, 2024):
4539
4540* **RP2040 implementation for pw_channel**:
4541  :cpp:func:`pw::channel::Rp2StdioChannelInit` is a new
4542  :ref:`module-pw_channel` implementation that reads from and writes
4543  to RP2040's ``stdio``.
4544* **Bazel compatibility patterns guide**: The new
4545  :ref:`docs-bazel-compatibility` guide describes the Bazel patterns that
4546  Pigweed uses to express that a build target is compatible with a platform.
4547* **Hex dump helper**: The new :cpp:func:`pw::dump::LogBytes` helper makes
4548  it easier to log binary data as human-readable hex dumps. The number of
4549  input bytes to display per line can be configured via the ``kBytesPerLine``
4550  template parameter.
4551
4552Build systems
4553=============
4554
4555Bazel
4556-----
4557The obsolete ``testonly_freertos`` platform has been removed.
4558
4559.. todo-check: disable
4560
4561* `Encapsulate rp2040 WORKSPACE deps into deps.bazl
4562  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217219>`__
4563* `Update pin for rules_libusb
4564  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217212>`__
4565* `Update TODO in bazelrc
4566  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216274>`__
4567  (issue `#347317581 <https://pwbug.dev/347317581>`__)
4568* `Stop using deprecated pw_facade aliases, v3
4569  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216436>`__
4570  (issue `#328679085 <https://pwbug.dev/328679085>`__)
4571* `Stop using deprecated pw_facade aliases, v2
4572  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216271>`__
4573  (issue `#328679085 <https://pwbug.dev/328679085>`__)
4574* `Remove testonly_freertos platform
4575  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216181>`__
4576* `Remove unnecessary @pigweed references
4577  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218411>`__
4578* `Add clippy to CI
4579  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218271>`__
4580  (issue `#268087116 <https://pwbug.dev/268087116>`__)
4581
4582.. todo-check: enable
4583
4584Docs
4585====
4586The new :ref:`Bazel installation guide <docs-install-bazel>` provides
4587Pigweed's recommendations on how to install Bazel. The
4588:ref:`docs-github-actions` guide was updated. The new :ref:`docs-bazel-compatibility`
4589guide describes the Bazel patterns that Pigweed uses to express that a build target
4590is compatible with a platform.
4591
4592* `Add emboss to packages installed for build_docs
4593  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216893>`__
4594* `Remove mention of multiplexers
4595  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216672>`__
4596  (issue `#344654805 <https://pwbug.dev/344654805>`__)
4597* `Add OWNERS
4598  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216834>`__
4599* `Add Bazel installation guide
4600  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216531>`__
4601* `Update GitHub actions tutorial
4602  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216276>`__
4603* `Update Pigweed Live schedule
4604  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216354>`__
4605  (issue `#347677570 <https://pwbug.dev/347677570>`__)
4606* `Bazel compatibility patterns
4607  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214971>`__
4608  (issue `#344654805 <https://pwbug.dev/344654805>`__)
4609* `Update changelog
4610  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216153>`__
4611
4612Modules
4613=======
4614
4615pw_allocator
4616------------
4617The ``//pw_allocator:block_allocator`` target has been removed. Consumers
4618are now expected to depend on and include individual block allocator targets.
4619
4620* `Use specific block allocator headers and targets
4621  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211917>`__
4622* `Fix Android build
4623  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216511>`__
4624* `Clean up Block interface
4625  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211916>`__
4626  (issue `#326509341 <https://pwbug.dev/326509341>`__)
4627
4628pw_assert
4629---------
4630* `Remove backend multiplexer
4631  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215914>`__
4632  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4633
4634pw_bluetooth
4635------------
4636New Emboss structs added: ``NumberOfCompletedPacketsEvent``,
4637``WritePinTypeCommandCompleteEvent``, ``PinCodeRequestNegativeReplyCommandCompleteEvent``,
4638``ReadPinTypeCommandCompleteEvent``, ``PinCodeRequestEvent``,
4639``PinCodeRequestReplyCommandCompleteEvent``, ``WritePinTypeCommand``,
4640``ReadPinTypeCommand``, ``PinCodeRequestNegativeReplyCommand``,
4641``PinCodeRequestReplyCommand``.
4642
4643* `Add NumberOfCompletedPacketsEvent
4644  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216250>`__
4645  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4646* `Add AttNotifyOverAcl to att.emb
4647  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218311>`__
4648* `Add PinCodeRequestEvent
4649  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217791>`__
4650  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4651* `Add IoCapability enum field
4652  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217074>`__
4653* `Add ACL & L2CAP B-frame Emboss definitions
4654  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216248>`__
4655  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4656* `Add att.emb
4657  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216247>`__
4658  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4659* `Add WritePinTypeCommandCompleteEvent Emboss struct
4660  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216923>`__
4661  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4662* `Add ReadPinTypeCommandCompleteEvent Emboss struct
4663  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216922>`__
4664  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4665* `Add PinCodeRequestNegativeReplyCommandCompleteEvent Emboss
4666  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216921>`__
4667  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4668* `Add PinCodeRequestReplyCommandCompleteEvent Emboss struct
4669  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216920>`__
4670  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4671* `Add WritePinTypeCommand Emboss struct
4672  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216919>`__
4673  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4674* `Add ReadPinTypeCommand Emboss struct
4675  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216918>`__
4676  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4677* `Add PinCodeRequestNegativeReplyCommand Emboss struct
4678  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216917>`__
4679  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4680* `Add PinCodeRequestReplyCommand Emboss struct
4681  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216916>`__
4682  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4683* `Add PinType enum
4684  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216915>`__
4685  (issue `#342151162 <https://pwbug.dev/342151162>`__)
4686
4687pw_bluetooth_proxy
4688------------------
4689The new ``pw::bluetooth::proxy::AclDataChannel::ProcessDisconnectionCompleteEvent()``
4690method frees up resources when a connection is removed. The new
4691``pw::bluetooth::proxy::AclDataChannel::ProcessNumberOfCompletedPacketsEvent()`` method
4692removes completed packets as necessary to reclaim LE ACL credits. The new
4693``pw::bluetooth::proxy::ProxyHost::sendGattNotify()`` method is a simple
4694implementation of sending a GATT notification to a connected peer.
4695
4696* `Process Disconnection_Complete event
4697  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218652>`__
4698  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4699* `Implement basic ACL credit tracking
4700  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216411>`__
4701  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4702* `Implement sendGattNotify
4703  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216249>`__
4704  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4705* `Have release_fn take buffer*
4706  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217414>`__
4707  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4708* `Add GetH4Span
4709  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217413>`__
4710  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4711* `Add release_fn to H4PacketWithH4
4712  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216971>`__
4713  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4714* `Fix case style for some test variables
4715  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216914>`__
4716  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4717* `Move to-controller flow to using h4-based packets
4718  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216897>`__
4719  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4720* `Add H4PacketWithH4 ctor that takes type
4721  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216896>`__
4722  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4723* `Move H4Packet to using move semantics
4724  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216913>`__
4725  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4726* `Fix naming of SetH4Type
4727  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216895>`__
4728  (issue `#326499764 <https://pwbug.dev/326499764>`__)
4729* `Move to using H4Packet wrapper classes
4730  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215222>`__
4731  (issues `#326499764 <https://pwbug.dev/326499764>`__,
4732  `#326497489 <https://pwbug.dev/326497489>`__)
4733
4734pw_bluetooth_sapphire
4735---------------------
4736* `Move LegacyLowEnergyScanner impl to base class
4737  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214674>`__
4738* `Add spec reference to comment
4739  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217111>`__
4740  (issue `#311639040 <https://pwbug.dev/311639040>`__)
4741
4742pw_boot
4743-------
4744* `Remove backend multiplexer
4745  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217213>`__
4746  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4747
4748pw_build
4749--------
4750The ``BuildCommand`` Python class now has an optional ``working_dir`` argument
4751that allows you to specify the working directory in which a build command
4752should be executed. The new ``boolean_constraint_value`` syntactic sugar macro
4753makes it easier to declare a constraint setting with just two possible
4754constraint values.
4755
4756* `Add optional working directory arg to BuildCommand
4757  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217831>`__
4758  (issue `#328083083 <https://pwbug.dev/328083083>`__)
4759* `Introduce boolean_constraint_value
4760  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216832>`__
4761  (issue `#344654805 <https://pwbug.dev/344654805>`__)
4762* `Move host_backend_alias (part 2)
4763  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215741>`__
4764  (issue `#344654805 <https://pwbug.dev/344654805>`__)
4765
4766pw_build_android
4767----------------
4768Dynamic allocation for ``pw::Function`` is now always enabled in Android
4769builds to allow ``pw::Function`` to exceed the inline size limit.
4770
4771* `Enable function dynamic alloc
4772  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218219>`__
4773  (issue `#349352849 <https://pwbug.dev/349352849>`__)
4774
4775pw_build_info
4776-------------
4777The new ``//pw_build_info:git_build_info`` Bazel rule lets you embed which
4778Git commit your binary was built from.
4779
4780* `Add git_build_info.h header for embedding git info
4781  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213854>`__
4782
4783pw_build_mcuxpresso
4784-------------------
4785The type for the ``include`` parameter in the
4786``pw_build_mcuxpresso.components.Project`` Python class constructor changed
4787from ``list[str]`` to ``Collection[str]`` and the type for the ``exclude``
4788parameter changed from  ``list[str]`` to ``Container[str]``.
4789``pw_build_mcuxpresso.bazel.bazel_output()`` now accepts an optional
4790``extra_args`` argument, which is a dictionary of additional arguments to be
4791added to the generated Bazel target.
4792
4793* `Fix bug in create_project()
4794  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218272>`__
4795* `Add extra_args to bazel.bazel_output()
4796  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217754>`__
4797
4798pw_channel
4799----------
4800:cpp:func:`pw::channel::Rp2StdioChannelInit` is a new
4801:ref:`module-pw_channel` implementation that reads from and writes
4802to RP2040's ``stdio``.
4803
4804* `Add Rp2StdioChannel
4805  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217954>`__
4806* `Cleanup redundant checks in epoll_channel
4807  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218376>`__
4808
4809pw_chrono
4810---------
4811The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets FreeRTOS
4812backends for ``pw_chrono``, ``pw_sync``, and ``pw_thread`` in one go. Each
4813backend can be individually overridden if needed.
4814
4815* `Add docs metadata
4816  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217752>`__
4817* `Group common backends in the GN build
4818  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
4819
4820pw_cli
4821------
4822* `Add missing modules to Bazel build
4823  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217571>`__
4824* `Improve messaging for GitErrors
4825  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217054>`__
4826
4827pw_clock_tree
4828-------------
4829The new :cpp:func:`pw::clock_tree::ClockTree::AcquireWith` method lets
4830you acquire a clock tree element while enabling another one.
4831
4832* `Introduce ClockTree AcquireWith method
4833  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217131>`__
4834  (issue `#331672574 <https://pwbug.dev/331672574>`__)
4835
4836pw_clock_tree_mcuxpresso
4837------------------------
4838:cpp:func:`AcquireWith` should now be used when enabling clock tree
4839elements that are sourced from the audio PLL or SYS PLL.
4840
4841* `Use AcquireWith for audio PLL
4842  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216911>`__
4843  (issue `#331672574 <https://pwbug.dev/331672574>`__)
4844
4845pw_cpu_exception_cortex_m
4846-------------------------
4847* `rm backend multiplexer
4848  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217214>`__
4849  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4850
4851pw_docgen
4852---------
4853* `Add bug Docutils role
4854  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215911>`__
4855
4856pw_emu
4857------
4858``pw_emu`` now supports Bazel.
4859
4860* `Add bazel python build
4861  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217053>`__
4862
4863pw_env_setup
4864------------
4865The version of ``cffi`` that ``pw_env_setup`` uses was updated to
4866``1.16.0`` to fix Windows failures. The "fatal error" that
4867``pw_env_setup`` used to log when running from a directory that's
4868outside of a Git repo has been suppressed.
4869
4870* `Update cffi
4871  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217218>`__
4872  (issue `#348697900 <https://pwbug.dev/348697900>`__)
4873* `Suppress error message when running outside git repo
4874  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217216>`__
4875
4876pw_format
4877---------
4878* `Fix and enable disabled Rust tests
4879  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217135>`__
4880
4881pw_grpc
4882-------
4883The C++ module now handles corrupt frames more gracefully.
4884
4885* `Avoid buffer overflow when processing corrupt frames
4886  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216651>`__
4887
4888pw_hex_dump
4889-----------
4890The ``pw_log_bytes`` target has been renamed to ``log_bytes``. The new
4891:cpp:func:`pw::dump::LogBytes` helper makes it easier to log binary data
4892as human-readable hex dumps. The number of input bytes to display per line
4893can be configured via the ``kBytesPerLine`` template parameter.
4894
4895* `Remove pw prefix from log_bytes
4896  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218531>`__
4897* `Add LogBytes helper
4898  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216711>`__
4899
4900pw_i2c
4901------
4902* `Handle unaligned buffer reads in register_device_test
4903  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217811>`__
4904  (issue `#325509758 <https://pwbug.dev/325509758>`__)
4905
4906pw_ide
4907------
4908A ``--process-files`` (``-P``) flag was added to ``pw ide cpp`` to process
4909compilation databases at the provided paths. Bazel support for ``pw_ide`` has
4910started. ``pw_ide`` now explicitly runs all commands from the ``PW_PROJECT_ROOT``
4911directory.
4912
4913* `Point to compile commands extractor fork
4914  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218631>`__
4915* `Add option to process comp DBs by path
4916  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218334>`__
4917* `Add Bazel dependencies wrapper
4918  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218320>`__
4919* `Bazelify
4920  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217572>`__
4921* `Run commands from PW_PROJECT_ROOT dir
4922  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216471>`__
4923
4924pw_log
4925------
4926* `Remove backend multiplexer
4927  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215892>`__
4928  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4929
4930pw_malloc
4931---------
4932* `Add docs metadata
4933  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217951>`__
4934
4935pw_multibuf
4936-----------
4937* `Fix Android build
4938  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216611>`__
4939
4940pw_preprocessor
4941---------------
4942* `Add docs metadata
4943  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217952>`__
4944
4945pw_presubmit
4946------------
4947* `Add check for rp2040_binary transition
4948  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218273>`__
4949* `Build STM32F429i baremetal in CI
4950  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217231>`__
4951
4952pw_rpc
4953------
4954* `Restructure Channel / internal::Channel
4955  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216037>`__
4956
4957pw_rust
4958-------
4959* `Static Library Linking
4960  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216313>`__
4961
4962pw_spi_mcuxpresso
4963-----------------
4964* `Separate Bazel build targets
4965  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217313>`__
4966* `Fix unused parameter warning
4967  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217312>`__
4968  (issue `#348512572 <https://pwbug.dev/348512572>`__)
4969
4970pw_sync
4971-------
4972The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets FreeRTOS
4973backends for ``pw_chrono``, ``pw_sync``, and ``pw_thread`` in one go. Each
4974backend can be individually overridden if needed.
4975
4976* `Remove multiplexers
4977  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216819>`__
4978  (issue `#347998044 <https://pwbug.dev/347998044>`__)
4979* `Group common backends in the GN build
4980  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
4981
4982pw_system
4983---------
4984``pw_system:async`` is a new version of ``pw_system`` based on
4985:ref:`module-pw_async2`. The ``pw_system`` console now has a
4986``--device-tracing`` flag to turn device tracing on or off.
4987
4988* `pw_system:async
4989  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216239>`__
4990* `Async packet processing component
4991  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214798>`__
4992* `Rename target_io.cc
4993  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217051>`__
4994* `Allow disabling of DeviceTracing RPC calls
4995  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216332>`__
4996
4997pw_target_runner
4998----------------
4999The ``pw_target_runner`` client in Go now supports a ``server_suggestion``
5000flag, which allows specifying a command to suggest to the user if the server
5001is unavailable. The Go client's ``RunBinary`` method can now accept a binary
5002as a byte array instead of a file path.
5003
5004* `Add suggested server command
5005  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218011>`__
5006* `Send test binaries over gRPC
5007  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216050>`__
5008
5009pw_thread
5010---------
5011The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets FreeRTOS
5012backends for ``pw_chrono``, ``pw_sync``, and ``pw_thread`` in one go. Each
5013backend can be individually overridden if needed.
5014
5015* `Group common backends in the GN build
5016  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
5017
5018pw_toolchain
5019------------
5020Compiler diagnostics colors are now enabled in Bazel.
5021
5022* `Color diagnostics in Bazel
5023  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217715>`__
5024* `Closer align the bazel arm-gcc flags with GN
5025  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215734>`__
5026* `Add clippy-driver to rust toolchains
5027  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217211>`__
5028  (issue `#268087116 <https://pwbug.dev/268087116>`__)
5029
5030pw_transfer
5031-----------
5032* `Java style fixes; remove unused variable and dependencies
5033  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215858>`__
5034
5035pw_watch
5036--------
5037``pw_watch`` now ignores ``bazel-*`` directories.
5038
5039* `Do not watch bazel-* symlinks
5040  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217931>`__
5041
5042pw_web
5043------
5044The function signature for ``createLogViewer`` changed to
5045``createLogViewer(logSource, root, { columnOrder })``. The ``columnOrder``
5046field in the optional third parameter lets you control the ordering of
5047columns in the log viewer.The new ``useShoelaceFeatures`` boolean lets you
5048control whether the log viewer uses Shoelace components. The log viewer's
5049toolbar is now responsive.
5050
5051* `Add optional parameters to createLogViewer
5052  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217052>`__
5053  (issue `#333537914 <https://pwbug.dev/333537914>`__)
5054* `Add Shoelace component flag
5055  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217093>`__
5056  (issue `#347966938 <https://pwbug.dev/347966938>`__)
5057* `Implement responsive toolbar behavior
5058  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215591>`__
5059  (issue `#309650360 <https://pwbug.dev/309650360>`__)
5060
5061Languages
5062=========
5063
5064Python
5065------
5066* `Add python targets for pw_i2c, pw_digital_io protos
5067  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216736>`__
5068
5069Rust
5070----
5071
5072* `Fix clippy lints
5073  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217136>`__
5074
5075Miscellaneous
5076=============
5077
5078OWNERS
5079------
5080* `Add gwsq
5081  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207731>`__
5082
5083Targets
5084=======
5085References to ``configGENERATE_RUN_TIME_STATS`` have been removed because
5086the implementations are incomplete.
5087
5088* `Remove configGENERATE_RUN_TIME_STATS functions
5089  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218711>`__
5090
5091RP2040
5092------
5093The new ``flash_rp2040`` rule makes it easier to flash Raspberry Pi RP2040s
5094in Bazel.The new ``flash`` Bazel rule makes it easier to flash RP2040s from
5095a Python script.
5096
5097* `Add pw_system_async example
5098  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218691>`__
5099* `Mark rp2040_binary as a non-executable target for host
5100  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218394>`__
5101* `Update docs
5102  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217039>`__
5103* `Add debugprobe version detection and warning
5104  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217055>`__
5105* `Switch to use upstream develop branch of Pico SDK
5106  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216234>`__
5107* `Add IFTT to keep the rp2040 transition and config in sync
5108  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218431>`__
5109* `Add missing backends
5110  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218373>`__
5111* `Unify board selection cmdline args
5112  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217716>`__
5113  (issue `#348067379 <https://pwbug.dev/348067379>`__)
5114* `Add a bazel rule for flashing
5115  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216314>`__
5116* `Add interrupt and freertos backends
5117  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216493>`__
5118* `Add flash main target
5119  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216492>`__
5120* `Add rp2040_binary transition
5121  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216491>`__
5122* `Refactor test runner and extract flashing
5123  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216152>`__
5124
5125Third-party
5126===========
5127
5128FreeRTOS
5129--------
5130``configUSE_MALLOC_FAILED_HOOK`` can now be enabled to detect out-of-memory
5131errors when using FreeRTOS's heap implementation.
5132
5133* `Add failed malloc hook to support lib
5134  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218380>`__
5135* `Fix Bazel build
5136  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218351>`__
5137
5138Nanopb
5139------
5140* `Import proto module
5141  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216991>`__
5142
5143Pico SDK
5144--------
5145* `Fix exception names in GN build
5146  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216435>`__
5147  (issue `#347355069 <https://pwbug.dev/347355069>`__)
5148
5149------------
5150Jun 13, 2024
5151------------
5152.. _bootstrap.fish: https://cs.opensource.google/pigweed/pigweed/+/main:bootstrap.fish
5153
5154Highlights (May 30, 2024 to Jun 13, 2024):
5155
5156* **pw_allocator support in pw_mallc**: ``pw_malloc`` now supports
5157  :ref:`pw_allocator <module-pw_allocator>`-based backends.
5158* **New pw_build Bazel rules**: ``pw_py_test`` rule wraps ``py_test``,
5159  :ref:`pw_elf_to_dump <module-pw_build-bazel-pw_elf_to_dump>` takes a
5160  binary executable and produces a text file containing the full binary layout,
5161  and :ref:`pw_elf_to_bin <module-pw_build-bazel-pw_elf_to_bin>` rule takes
5162  a binary executable and produces a file with all ELF headers removed.
5163* **Improved Fish shell support**: The ``pw`` and ``pw build``
5164  commands now support `Fish <https://fishshell.com/>`__ shell completion.
5165  The new `bootstrap.fish`_ script demonstrates how to bootstrap a Pigweed
5166  project from a Fish shell and makes it easier for Fish users to contribute
5167  to upstream Pigweed.
5168* **More informative modules index**: The :ref:`modules index <docs-module-guides>`
5169  now shoes useful metadata for each module, such as a summary of the
5170  module's purpose and the programming languages that the module supports.
5171
5172Active SEEDs
5173============
5174Help shape the future of Pigweed! Please visit :ref:`seed-0000`
5175and leave feedback on the RFCs (i.e. SEEDs) marked
5176``Open for Comments``.
5177
5178Modules
5179=======
5180
5181pw_allocator
5182------------
5183The ``pw::allocator::Layout`` constructor is now marked ``explicit`` to
5184ensure that functions that take ``Layout`` instances as arguments don't
5185silently accept and convert other types. The ``pw::allocator::FreeList`` and
5186``pw::allocator::FreeListHeap`` interfaces have been removed.
5187
5188* `Make Layout constructor explicit
5189  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211915>`__
5190* `Remove FreeList and FreeListHeap
5191  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211914>`__
5192  (issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__)
5193* `Refactor Bucket chunk list
5194  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215488>`__
5195  (issue `#345526413 <https://issues.pigweed.dev/issues/345526413>`__)
5196
5197pw_analog
5198---------
5199* `Add module metadata
5200  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214500>`__
5201  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5202
5203pw_android_toolchain
5204--------------------
5205* `Add module metadata
5206  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214501>`__
5207  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5208
5209pw_arduino_build
5210----------------
5211* `Add module metadata
5212  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214173>`__
5213  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5214
5215pw_assert
5216---------
5217* `Add module metadata
5218  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214539>`__
5219  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5220
5221pw_async
5222--------
5223* `Add module metadata
5224  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214499>`__
5225  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5226
5227pw_async2
5228---------
5229* `Fix location of backends in sitenav
5230  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213914>`__
5231  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5232
5233pw_base64
5234---------
5235* `Add module metadata
5236  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214540>`__
5237  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5238
5239pw_bloat
5240--------
5241* `Build and run \`pw bloat\` CLI command in Bazel
5242  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215456>`__
5243* `Add module metadata
5244  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214177>`__
5245  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5246
5247pw_blob_store
5248-------------
5249* `Add module metadata
5250  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214502>`__
5251  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5252
5253pw_bluetooth
5254------------
5255* `Add module metadata
5256  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214575>`__
5257  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5258* `Add HCI StatusCode values
5259  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213553>`__
5260
5261pw_bluetooth_hci
5262----------------
5263* `Add module metadata
5264  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214576>`__
5265  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5266
5267pw_bluetooth_profiles
5268---------------------
5269* `Add module metadata
5270  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214612>`__
5271  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5272
5273pw_bluetooth_proxy
5274------------------
5275The new ``pw::bluetooth::proxy::HasSendAclCapability()`` function indicates
5276whether the proxy has the capability to send ACL packets.
5277
5278* `Remove H4HciPacketSendFn alias
5279  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215221>`__
5280  (issue `#326499764 <https://issues.pigweed.dev/issues/326499764>`__)
5281* `Fix const on sendGattNotify param
5282  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214864>`__
5283  (issue `#326499764 <https://issues.pigweed.dev/issues/326499764>`__)
5284* `Mark unused parameters with [[maybe_unused]]
5285  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214637>`__
5286  (issue `#345526399 <https://issues.pigweed.dev/issues/345526399>`__)
5287* `Add maybe_unused to make downstream happy
5288  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214360>`__
5289  (issue `#344031126 <https://issues.pigweed.dev/issues/344031126>`__)
5290* `Add ProxyHost::HasSendAclCapability()
5291  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214101>`__
5292  (issue `#344030724 <https://issues.pigweed.dev/issues/344030724>`__)
5293* `Update H4HciPacket construction
5294  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214233>`__
5295* `Add sendGattNotify stub
5296  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214106>`__
5297  (issue `#344031126 <https://issues.pigweed.dev/issues/344031126>`__)
5298* `Fix compilation errors
5299  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213733>`__
5300* `Pass H4 as event type plus an HCI span
5301  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213664>`__
5302  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
5303* `Tweak CreateNonInteractingToHostBuffer to take array
5304  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213663>`__
5305  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
5306
5307pw_boot_cortex_m
5308----------------
5309* `Add module metadata
5310  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215458>`__
5311
5312pw_build
5313--------
5314The new ``pw_py_test`` rule wraps ``py_test`` and defaults to setting
5315``target_compatible_with`` to ``host`` only. The new
5316:ref:`pw_elf_to_dump <module-pw_build-bazel-pw_elf_to_dump>` rule takes a
5317binary executable and produces a text file containing the full binary layout.
5318The new :ref:`pw_elf_to_bin <module-pw_build-bazel-pw_elf_to_bin>` rule takes
5319a binary executable and produces a file with all ELF headers removed.
5320
5321* `Move host_backend_alias (part 1)
5322  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215740>`__
5323  (issue `#344654805 <https://issues.pigweed.dev/issues/344654805>`__)
5324* `Add python.install into the default GN group
5325  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215791>`__
5326* `Introduce pw_py_test to bazel
5327  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215258>`__
5328* `Add module metadata
5329  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214506>`__
5330  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5331* `Clarify docs on pw_elf_to_bin
5332  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213616>`__
5333* `Update intro
5334  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214062>`__
5335  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5336* `Add pw_elf_to_dump rule
5337  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212851>`__
5338* `Add pw_elf_to_bin rule
5339  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212671>`__
5340* `Populate executable field in return from link_cc utility
5341  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212631>`__
5342
5343pw_build_info
5344-------------
5345* `Add module metadata
5346  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214616>`__
5347
5348pw_build_mcuxpresso
5349-------------------
5350* `Add module metadata
5351  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214507>`__
5352  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5353
5354pw_bytes
5355--------
5356* `Add module metadata
5357  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214509>`__
5358  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5359
5360pw_channel
5361----------
5362* `Add module metadata
5363  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214621>`__
5364  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5365* `Update function documentation
5366  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213712>`__
5367* `Remove manual registration from epoll channel
5368  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213653>`__
5369
5370pw_checksum
5371-----------
5372* `Add module metadata
5373  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214623>`__
5374  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5375
5376pw_chre
5377-------
5378* `Add module metadata
5379  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214633>`__
5380  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5381
5382pw_chrono
5383---------
5384:ref:`libc time wrappers <module-pw_chrono-libc-time-wrappers>` are now
5385provided to improve compatibility with software not written for embedded
5386systems that depends on ``gettimeofday`` and ``time`` from POSIX.
5387
5388* `Group common backends in the GN build
5389  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
5390* `Introduce SystemClock backed link time wrappers
5391  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213551>`__
5392
5393pw_cli
5394------
5395.. _Fish: https://fishshell.com/
5396
5397The ``pw`` and ``pw build`` commands now support `Fish`_ shell completion.
5398
5399* `Fish shell completion
5400  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213734>`__
5401
5402pw_clock_tree
5403-------------
5404The new ``pw::clock_tree::ClockSourceNoOp`` class can be used to satisfy
5405the dependency of a source clock tree element for other clock source classes.
5406The new ``pw::clock_tree::ElementController`` class provides easier integration
5407of optional clock tree logic into existing drivers.
5408
5409* `Introduce ClockSourceNoOp class
5410  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213851>`__
5411  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5412* `Introduce ElementController class
5413  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212095>`__
5414  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5415* `Fix source set name and visibility
5416  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212151>`__
5417  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5418
5419pw_clock_tree_mcuxpresso
5420------------------------
5421* `Comment clean up
5422  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214573>`__
5423  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5424* `Add ClockMcuxpressoRtc support
5425  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214572>`__
5426  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5427* `Remove unnecessary pw::
5428  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214494>`__
5429  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5430* `Add ClockMcuxpressoAudioPll support
5431  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214332>`__
5432  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5433* `Configure ClkIn as source for osc_clk
5434  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214234>`__
5435  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5436* `Make Mclk and ClkIn dependent elements
5437  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213853>`__
5438  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5439* `Move example code out of docs
5440  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213852>`__
5441  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5442* `Fix source set name and visibility
5443  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212152>`__
5444  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5445
5446pw_console
5447----------
5448Theme colors are now correctly applied when running ``pw console`` with the
5449``--config-file`` option.
5450
5451* `Reload theme when using a config-file
5452  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214891>`__
5453
5454pw_containers
5455-------------
5456The ``pw::Vector::at()`` function signature was changed to take ``size_t``
5457instead of ``size_type``.  The new ``pw::InlineVarLenEntryQueue::try_push()``
5458function is similar to ``pw::InlineVarLenEntryQueue::push_overwrite()`` but it
5459drops entries instead of overwriting old ones. The new
5460``pw::InlineVarLenEntryQueue::max_size()`` function returns the maximum number
5461of empty entries.
5462
5463* `Make Vector::at() use size_t
5464  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215859>`__
5465* `Disallow deletion from InlineVarLenEntryQueue base
5466  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210639>`__
5467* `InlineVarLenEntryQueue::try_push() function
5468  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213612>`__
5469
5470pw_digital_io
5471-------------
5472* `Remove invalid digital_io_controller reference
5473  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214691>`__
5474
5475pw_digital_io_linux
5476-------------------
5477``pw_digital_io_linux`` now supports input interrupts. The new
5478:ref:`watch <module-pw_digital_io_linux-cli-watch>` command in the CLI
5479tool configures a GPIO line as an input and watches for interrupt events.
5480
5481* `Add trigger option to CLI watch command
5482  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213131>`__
5483* `Add "watch" command
5484  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209596>`__
5485* `Add support for input interrupts
5486  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209595>`__
5487* `Move examples out to compiled source files
5488  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209771>`__
5489* `Update mock_vfs
5490  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209594>`__
5491* `Add log_errno.h
5492  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209593>`__
5493
5494pw_docgen
5495---------
5496* `Update module metadata status badge colors
5497  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214574>`__
5498  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5499* `Add module metadata
5500  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214182>`__
5501  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5502* `Fix search results increasing in width
5503  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215332>`__
5504
5505pw_env_setup
5506------------
5507The new `bootstrap.fish`_ script demonstrates how to bootstrap a Pigweed
5508project from a Fish shell and makes it easier for Fish users to contribute
5509to upstream Pigweed.
5510
5511* `Update clang next version
5512  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212432>`__
5513* `Bootstrap fish-shell support
5514  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/56840>`__
5515
5516pw_grpc
5517-------
5518* `Remove send queue timeout
5519  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214099>`__
5520  (issue `#345088816 <https://issues.pigweed.dev/issues/345088816>`__)
5521
5522pw_ide
5523------
5524* `Add module metadata
5525  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215512>`__
5526* `Preserve modified editor settings
5527  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213670>`__
5528  (issue `#344681641 <https://issues.pigweed.dev/issues/344681641>`__)
5529* `Fix constant Pylance crashes
5530  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213668>`__
5531  (issue `#338607100 <https://issues.pigweed.dev/issues/338607100>`__)
5532
5533pw_log
5534------
5535* `Add module metadata
5536  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214184>`__
5537  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5538* `Cast log level to int32_t
5539  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212092>`__
5540  (issue `#343518613 <https://issues.pigweed.dev/issues/343518613>`__)
5541
5542pw_log_string
5543-------------
5544* `Introduce link time assert() wrapper for newlib
5545  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213072>`__
5546* `Set default log backend
5547  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212832>`__
5548
5549pw_malloc
5550---------
5551``pw_malloc`` now supports :ref:`pw_allocator <module-pw_allocator>`-based
5552backends.
5553
5554* `Add allocator backends
5555  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208417>`__
5556
5557pw_multibuf
5558-----------
5559The new ``pw::multibuf::MultiBuf::IsContiguous()`` method checks if a multibuf
5560is contiguous and the new ``pw::multibuf::MultiBuf::ContiguousSpan()`` method
5561provides a way to access contiguous data as a span. The new ``CopyTo()``,
5562``CopyFrom()``, and ``CopyFromAndTruncate()`` methods also simplify
5563interactions with contiguous byte spans.
5564
5565* `Contiguous span functions
5566  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214859>`__
5567* `Functions for copying into and out of a MultiBuf
5568  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214858>`__
5569* `Truncate after an iterator
5570  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214857>`__
5571* `AdvanceToData in iterator constructor
5572  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214503>`__
5573* `Fix Truncate(0) on empty MultiBuf
5574  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213661>`__
5575* `SimpleAllocatorForTest
5576  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212312>`__
5577
5578pw_multisink
5579------------
5580The new ``pw::multisink::MultiSink::GetUnreadEntriesSize()`` and
5581``pw::multisink::MultiSink::UnsafeGetUnreadEntriesSize()`` methods
5582implement :ref:`seed-0124`. The new ``PW_MULTISINK_CONFIG_LOCK_TYPE``
5583macro configures the underlying lock that's used to guard multisink
5584reads or writes.
5585
5586* `Add GetUnreadEntriesSize to Drain
5587  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213472>`__
5588* `Add option to inject a user defined lock
5589  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213211>`__
5590
5591pw_presubmit
5592------------
5593* `Add --fresh to cmake presubmits
5594  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215736>`__
5595* `Add coverage of rp2040 build
5596  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215231>`__
5597  (issue `#342638018 <https://issues.pigweed.dev/issues/342638018>`__)
5598* `Add module metadata
5599  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214571>`__
5600  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5601* `Remove shellcheck from lintformat program
5602  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213617>`__
5603
5604pw_protobuf
5605-----------
5606* `Add module metadata
5607  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214187>`__
5608  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5609
5610pw_ring_buffer
5611--------------
5612* `Add EntriesSize API to Reader
5613  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213471>`__
5614  (issue `#337150071 <https://issues.pigweed.dev/issues/337150071>`__)
5615
5616pw_router
5617---------
5618* `Add module metadata
5619  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214190>`__
5620  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5621
5622pw_rpc
5623------
5624The Python client API now uses positional-only arguments.
5625
5626* `Use positional-only arguments in Python client API
5627  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215532>`__
5628* `Add module metadata
5629  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214032>`__
5630  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5631* `Fix hyperlink
5632  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213556>`__
5633
5634pw_sensor
5635---------
5636* `Add Bazel support for Python package
5637  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214534>`__
5638
5639pw_spi
5640------
5641* `Fix sitenav location for RP2040 backend
5642  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214031>`__
5643  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5644
5645pw_spi_rp2040
5646-------------
5647* `Add module metadata
5648  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214232>`__
5649  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5650
5651pw_stream
5652---------
5653* `Fix include in mpsc_stream
5654  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215075>`__
5655
5656pw_stream_uart_mcuxpresso
5657-------------------------
5658* `Make dma_stream Write of size 0 succeed
5659  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214151>`__
5660* `InterruptSafeWriter example
5661  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212513>`__
5662  (issue `#343773769 <https://issues.pigweed.dev/issues/343773769>`__)
5663* `Stream example
5664  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212512>`__
5665  (issue `#343773769 <https://issues.pigweed.dev/issues/343773769>`__)
5666* `Use clock tree
5667  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209534>`__
5668  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
5669* `DMA stream example
5670  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212391>`__
5671  (issue `#343773769 <https://issues.pigweed.dev/issues/343773769>`__)
5672
5673pw_sync
5674-------
5675The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets up multiple
5676modules to use FreeRTOS backends.
5677
5678* `Group common backends in the GN build
5679  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
5680
5681pw_system
5682---------
5683``pw-system-console`` now connects to the first detected port if ``--device``
5684isn't provided and only one port is detected or it shows an interactive
5685prompt if multiple ports are detected. :ref:`target-host-device-simulator-demo`
5686now shows how to run ``pw-system-console`` with ``host_device_simulator`` in
5687Bazel-based projects.
5688
5689* `Console interactive serial port selection
5690  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214912>`__
5691  (issue `#343949763 <https://issues.pigweed.dev/issues/343949763>`__)
5692* `Host device simulator entrypoint
5693  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214972>`__
5694* `Move config variables to config.h
5695  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213811>`__
5696* `Mention that extra libs need alwayslink
5697  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212831>`__
5698* `Add host_device_simulator transitions
5699  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212414>`__
5700
5701pw_target_runner
5702----------------
5703* `Switch to Bazel build
5704  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214059>`__
5705* `Add module metadata
5706  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214317>`__
5707  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5708
5709pw_thread
5710---------
5711* `Group common backends in the GN build
5712  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__
5713
5714pw_thread_freertos
5715------------------
5716* `Expand comment to help when debugging linker errors
5717  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213669>`__
5718
5719pw_toolchain
5720------------
5721* `Enable PIC on host
5722  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214495>`__
5723* `Add bazel toolchain for cortex-m0plus
5724  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215479>`__
5725  (issue `#346609655 <https://issues.pigweed.dev/issues/346609655>`__)
5726* `Add module metadata
5727  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214351>`__
5728  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5729* `Add IOKit and Security headers to mac toolchains
5730  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214013>`__
5731
5732pw_toolchain_bazel
5733------------------
5734* `Add cortex-a32 mcpu value
5735  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213855>`__
5736  (issue `#342510882 <https://issues.pigweed.dev/issues/342510882>`__)
5737
5738pw_transfer
5739-----------
5740* `Remove unused imports
5741  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215478>`__
5742* `Fix ConcurrentModificationException in handleTimeouts()
5743  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214065>`__
5744  (issue `#322919275 <https://issues.pigweed.dev/issues/322919275>`__)
5745* `Always terminate transfers on stream reopen
5746  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212953>`__
5747
5748pw_uart
5749-------
5750* `Add module metadata
5751  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214252>`__
5752  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5753
5754pw_varint
5755---------
5756* `Add module metadata
5757  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214352>`__
5758  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5759
5760pw_watch
5761--------
5762Watching now works in directories other than ``PW_ROOT``.
5763
5764* `Enable watching from non-PW_ROOT
5765  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215735>`__
5766  (issue `#328083083 <https://issues.pigweed.dev/issues/328083083>`__)
5767
5768pw_web
5769------
5770* `Get icon fonts via Google Fonts URL
5771  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212871>`__
5772  (issue `#332587834 <https://issues.pigweed.dev/issues/332587834>`__)
5773* `Fix last column filling space in log table
5774  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212154>`__
5775
5776Build systems
5777=============
5778
5779Bazel
5780-----
5781* `Stop using deprecated pw_facade aliases
5782  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216151>`__
5783  (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
5784* `Don't use llvm_toolchain for fuchsia_clang
5785  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215651>`__
5786  (issue `#346354914 <https://issues.pigweed.dev/issues/346354914>`__)
5787* `Fix reference to nonexistent file
5788  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215511>`__
5789* `Roll latest rules_libusb
5790  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214792>`__
5791* `No integration tests in wildcard build
5792  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214056>`__
5793  (issue `#344654806 <https://issues.pigweed.dev/issues/344654806>`__)
5794* `Move integration build config in-repo
5795  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214092>`__
5796  (issue `#344654806 <https://issues.pigweed.dev/issues/344654806>`__)
5797
5798Hardware targets
5799================
5800
5801host_device_simulator
5802---------------------
5803* `Make host_device_simulator_binary \`bazel run\`-able
5804  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214693>`__
5805
5806rp2040
5807------
5808* `Add bazel picotool support
5809  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214861>`__
5810* `Add bazel support for rp2040_utils pylib
5811  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211591>`__
5812  (issue `#342634966 <https://issues.pigweed.dev/issues/342634966>`__)
5813* `Support running tests using the debug probe
5814  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211363>`__
5815* `Add pico/debug probe filtering flags
5816  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212611>`__
5817* `Temporarily disable remaining failing rp2040 tests
5818  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215490>`__
5819* `Fix test runner scripts to correct check if args are specified
5820  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214794>`__
5821* `Support bazel wildcard build on rp2040
5822  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213071>`__
5823  (issue `#343467774 <https://issues.pigweed.dev/issues/343467774>`__)
5824
5825stm32f429i
5826----------
5827* `Add baremetal bazel build support
5828  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214626>`__
5829  (issue `#344661765 <https://issues.pigweed.dev/issues/344661765>`__)
5830
5831OS support
5832==========
5833
5834Zephyr
5835------
5836* `Fix typo
5837  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213271>`__
5838
5839FreeRTOS
5840--------
5841FreeRTOS application function implementations like ``vApplicationStackOverflowHook()``
5842are now shared between multiple hardware targets.
5843
5844* `Share common FreeRTOS function implementations
5845  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213737>`__
5846
5847Docs
5848====
5849The :ref:`modules index <docs-module-guides>` now includes metadata for each
5850module such as a summary of each module and what languages each module
5851supports. The ``pigweed.dev`` sitenav was simplified.
5852:ref:`docs-blog-02-bazel-feature-flags` was published. A "skip to main
5853content" accessibility feature was added to ``pigweed.dev``.
5854
5855* `Fix Python package dependencies for sphinx
5856  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215852>`__
5857* `Auto-generate modules index from metadata
5858  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214711>`__
5859  (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__)
5860* `Update sitenav
5861  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214797>`__
5862* `Update homepage tagline
5863  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213951>`__
5864* `Add "skip to main content" a11y feature
5865  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213659>`__
5866  (issue `#344643289 <https://issues.pigweed.dev/issues/344643289>`__)
5867* `blog: Bazel feature flags
5868  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209922>`__
5869* `Update changelog
5870  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212491>`__
5871
5872Third-party software support
5873============================
5874* `Add @libusb to bazel workspace
5875  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214094>`__
5876* `Symlink probe-rs binary into common location
5877  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214057>`__
5878* `Add probe-rs
5879  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213693>`__
5880
5881mimxrt595
5882---------
5883* `Upgrade to SDK_2_14_0_EVK-MIMXRT59
5884  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212451>`__
5885  (issue `#343775421 <https://issues.pigweed.dev/issues/343775421>`__)
5886
5887GitHub
5888------
5889* `Fix step name
5890  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213692>`__
5891
5892io_bazel_rules_go
5893-----------------
5894* `Update to fork which disables warnings
5895  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214851>`__
5896
5897pigweed.json
5898============
5899* `Add config for Bazel builders
5900  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213991>`__
5901  (issue `#275107504 <https://issues.pigweed.dev/issues/275107504>`__)
5902
5903------------
5904May 30, 2024
5905------------
5906Highlights (May 17, 2024 to May 30, 2024):
5907
5908* **Clock management**: The new :ref:`module-pw_clock_tree` module manages
5909  generic clock tree elements such as clocks, clock selectors, and clock
5910  dividers.
5911* **GitHub Actions**: The new :ref:`docs-github-actions` guide shows you
5912  how to set up GitHub Actions to build and test a Bazel-based Pigweed
5913  project when a pull request is received.
5914* **pw_system and Bazel**: :ref:`module-pw_system` usage in Bazel has been
5915  simplified by gathering all required ``pw_system`` components into one
5916  target and providing label flags that can set platform-dependent
5917  dependencies.
5918* **Channels and Linux Epoll**: The new :cpp:class:`pw::channel::EpollChannel`
5919  class sends and receives data through a file descriptor, with read and write
5920  notifications backed by Linux's epoll system.
5921
5922Active SEEDs
5923============
5924Help shape the future of Pigweed! Please visit :ref:`seed-0000`
5925and leave feedback on the RFCs (i.e. SEEDs) marked
5926``Open for Comments``.
5927
5928Modules
5929=======
5930
5931pw_allocator
5932------------
5933* `Add BlockAllocator::MeasureFragmentation
5934  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209933>`__
5935* `Fix Android build
5936  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211871>`__
5937* `Refactor optional Allocator methods
5938  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210402>`__
5939* `Make Init methods infallible
5940  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209044>`__
5941  (issue `#338389412 <https://issues.pigweed.dev/issues/338389412>`__)
5942* `Reduce Block fragmentation
5943  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209538>`__
5944  (issue `#328831791 <https://issues.pigweed.dev/issues/328831791>`__)
5945* `Fix #if PW_HAVE_FEATURE(__cpp_rtti)
5946  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210816>`__
5947  (issue `#341975367 <https://issues.pigweed.dev/issues/341975367>`__)
5948* `Track requested sizes in blocks
5949  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210395>`__
5950* `Fix Android build
5951  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210571>`__
5952  (issue `#A <https://issues.pigweed.dev/issues/N/A>`__)
5953* `Move large values to test fixtures
5954  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210398>`__
5955* `Add AsPmrAllocator
5956  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207170>`__
5957
5958pw_assert
5959---------
5960* `Add missing dep in Android.bp
5961  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211271>`__
5962
5963pw_build
5964--------
5965The new ``PW_MUST_PLACE`` macro ensures that linker script inputs are
5966non-zero sized.
5967
5968* `Introduce PW_MUST_PLACE linker script macro
5969  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211924>`__
5970* `Add deps support to pw_linker_script
5971  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211194>`__
5972  (issue `#331927492 <https://issues.pigweed.dev/issues/331927492>`__)
5973
5974pw_channel
5975----------
5976The new :cpp:class:`pw::channel::EpollChannel` class sends and receives
5977data through a file descriptor, with read and write notifications backed
5978by Linux's epoll system.
5979
5980* `Only open read/write if channel is readable/writable
5981  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212212>`__
5982* `Add EpollChannel
5983  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210813>`__
5984* `Consistent datagram/byte channel aliases
5985  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210796>`__
5986
5987pw_chre
5988-------
5989* `Update CHRE revision
5990  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210011>`__
5991  (issue `#341137451 <https://issues.pigweed.dev/issues/341137451>`__)
5992
5993pw_clock_tree
5994-------------
5995The new :ref:`module-pw_clock_tree` module manages generic clock tree
5996elements such as clocks, clock selectors, and clock dividers.
5997
5998* `Introduce new ClockDivider class
5999  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211292>`__
6000  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
6001* `ClockTree support Element ops
6002  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211149>`__
6003  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
6004* `Introduce Element may_block()
6005  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211148>`__
6006  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
6007* `Generic clock tree management
6008  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204310>`__
6009  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
6010
6011pw_clock_tree_mcuxpresso
6012------------------------
6013The new :ref:`module-pw_clock_tree_mcuxpresso` module is an NXP
6014MCUXPresso backend for :ref:`module-pw_clock_tree`.
6015
6016* `Mcuxpresso module
6017  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204245>`__
6018  (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__)
6019
6020pw_config_loader
6021----------------
6022* `Remove unnecessary dep
6023  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210286>`__
6024
6025pw_cpu_exception_cortex_m
6026-------------------------
6027The new crash analysis API provides data about CPU state during exceptions.
6028See :ref:`module-pw_cpu_exception_cortex_m-crash-facade-setup`.
6029
6030* `Add crash analysis API
6031  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204248>`__
6032* `Fix incorrect inputs to util_test
6033  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211551>`__
6034* `Fix checks for ARMv8
6035  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210272>`__
6036
6037pw_emu
6038------
6039* `Exclude tests module from the Pigweed Python package
6040  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211977>`__
6041
6042pw_env_setup
6043------------
6044* `PyPI version bump to 0.0.16
6045  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211136>`__
6046* `Build an extra example pypi distribution
6047  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211134>`__
6048* `Remove f-strings from github_visitor
6049  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210274>`__
6050
6051pw_grpc
6052-------
6053* `Fix warnings in format strings
6054  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211391>`__
6055
6056pw_hex_dump
6057-----------
6058* `Add Android.bp
6059  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212231>`__
6060
6061pw_libcxx
6062---------
6063* `Only enable in clang builds
6064  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211941>`__
6065
6066pw_log_basic
6067------------
6068* `Fixing sign conversion error for logging
6069  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210331>`__
6070
6071pw_multisink
6072------------
6073* `Fix compiler warnings for tests
6074  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212051>`__
6075  (issue `#343480404 <https://issues.pigweed.dev/issues/343480404>`__)
6076
6077pw_preprocessor
6078---------------
6079* `Remove PW_HAVE_FEATURE
6080  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211016>`__
6081  (issue `#341975367 <https://issues.pigweed.dev/issues/341975367>`__)
6082
6083pw_rpc
6084------
6085* `Include FakeChannelOutput in soong target
6086  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209991>`__
6087  (issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__)
6088
6089pw_spi_mcuxpresso
6090-----------------
6091* `Remove unnecessary debug messages
6092  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210711>`__
6093
6094pw_stream_uart_mcuxpresso
6095-------------------------
6096* `Fix unused parameter warnings
6097  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211571>`__
6098
6099pw_system
6100---------
6101:ref:`module-pw_system` usage in Bazel has been simplified by gathering
6102all required ``pw_system`` components into one target and providing label
6103flags that can set platform-dependent dependencies.
6104
6105* `Simplify pw_system usage in Bazel
6106  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210116>`__
6107  (issue `#341144405 <https://issues.pigweed.dev/issues/341144405>`__)
6108
6109pw_thread
6110---------
6111* `Fix thread snapshot service test
6112  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212111>`__
6113
6114pw_toolchain
6115------------
6116* `Add manual tag to Rust toolchains
6117  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211934>`__
6118  (issue `#342695883 <https://issues.pigweed.dev/issues/342695883>`__)
6119* `Add clang-apply-replacements plugin
6120  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210405>`__
6121  (issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__)
6122
6123pw_transfer
6124-----------
6125* `Fix transfer_thread_test initialization order
6126  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210352>`__
6127* `End active transfers when RPC stream changes
6128  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209876>`__
6129
6130pw_uart
6131-------
6132* `Add pw_uart to CMakeLists
6133  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210731>`__
6134
6135pw_unit_test
6136------------
6137* `Don't execute multiple test suites at the same time
6138  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210531>`__
6139* `Ensure alignment of test fixtures
6140  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210278>`__
6141
6142pw_web
6143------
6144* `Move shoelace split panel import
6145  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211940>`__
6146* `Add split/resize view guide in docs
6147  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211471>`__
6148* `Implement split log views with resize
6149  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209471>`__
6150  (issue `#333891204 <https://issues.pigweed.dev/issues/333891204>`__)
6151
6152Build
6153=====
6154
6155Bazel
6156-----
6157Clang's ``AddressSanitizer`` is now supported. See
6158:ref:`docs-automated-analysis-clang-sanitizers`.
6159
6160* `Support asan in Bazel
6161  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211369>`__
6162  (issue `#301487567 <https://issues.pigweed.dev/issues/301487567>`__)
6163* `Update rules_rust to 0.45.1
6164  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211939>`__
6165  (issue `#342673389 <https://issues.pigweed.dev/issues/https://pwbug.dev/342673389>`__)
6166* `Explicitly load rules_python in BUILD.bazel files
6167  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211361>`__
6168
6169Targets
6170=======
6171
6172rp2040
6173------
6174* `Additional bazel build file coverage
6175  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211351>`__
6176  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__,
6177  issue `#305746219 <https://issues.pigweed.dev/issues/305746219>`__)
6178
6179* `Enable thread high water accounting
6180  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210831>`__
6181* `Update docs to add missing picotool dependency
6182  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210811>`__
6183* `Save test run log files
6184  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210814>`__
6185* `Increase RPC thread stack size to 16K
6186  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210832>`__
6187* `Allow using rp2040 devices in bootloader mode
6188  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210525>`__
6189* `Refresh target docs
6190  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210404>`__
6191* `Update openocd flashing instructions
6192  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210400>`__
6193* `Increase device_detector verbosity
6194  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210411>`__
6195* `Add upstream Bazel platform definition
6196  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211592>`__
6197* `Renable tests that pass with larger stack frames
6198  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211147>`__
6199* `Raise minimal stack size to 1KB
6200  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210517>`__
6201* `Replace exceptions with logging
6202  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210396>`__
6203
6204OS support
6205==========
6206
6207freertos
6208--------
6209* `Clarify Bazel documentation
6210  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211052>`__
6211
6212Docs
6213====
6214The new :ref:`docs-github-actions` guide shows you how to set up GitHub Actions
6215to build and test a Pigweed project when a pull request is received.
6216
6217* `Add notes about GitHub Actions
6218  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211135>`__
6219  (issue `#338083578 <https://issues.pigweed.dev/issues/338083578>`__)
6220* `Instructions for freertos.BUILD.bazel
6221  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211193>`__
6222* `Create files in current directory
6223  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206196>`__
6224* `Update changelog
6225  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210285>`__
6226
6227Miscellaneous
6228=============
6229.. common_typos_disable
6230
6231* `Fix typo succesfully->successfully
6232  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210671>`__
6233* `Update Android.bp after GetAlignedSubspan move
6234  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210518>`__
6235* `Add link to format
6236  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211011>`__
6237
6238.. common_typos_enable
6239
6240------------
6241May 16, 2024
6242------------
6243Highlights (May 2, 2024 to May 16, 2024):
6244
6245* **Coroutines**: You can now create asynchronous tasks using C++20
6246  :ref:`coroutines <module-pw_async2-guides-coroutines>`.
6247* **Rust with Bazel**: The Rust toolchain can now be used by downstream projects
6248  using Bazel.
6249* **More MCUXpresso support**: Several modules have additional support for
6250  projects built using the NXP MCUXpresso SDK, including multiple core support
6251  in :ref:`module-pw_build_mcuxpresso`, a new initiator in
6252  :ref:`module-pw_i2c_mcuxpresso`, a new responder in
6253  :ref:`module-pw_spi_mcuxpresso`, and a new :ref:`module-pw_dma_mcuxpresso`
6254  module.
6255
6256Active SEEDs
6257============
6258Help shape the future of Pigweed! Please visit :ref:`seed-0000`
6259and leave feedback on the RFCs (i.e. SEEDs) marked
6260``Open for Comments``.
6261
6262.. Note: There is space between the following section headings
6263.. and commit lists to remind you to write a summary for each
6264.. section. If a summary is not needed, delete the extra
6265.. space.
6266
6267Modules
6268=======
6269
6270pw_allocator
6271------------
6272* `Fix data race
6273  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208412>`__
6274  (issue `#333386065 <https://issues.pigweed.dev/issues/333386065>`__)
6275* `Add BucketBlockAllocator
6276  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198155>`__
6277* `Improve namespacing
6278  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206153>`__
6279* `Use singletons for stateless allocators
6280  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207337>`__
6281
6282pw_assert
6283---------
6284* `Ensure condition does not contain stray %
6285  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208140>`__
6286  (issue `#337268540 <https://issues.pigweed.dev/issues/337268540>`__)
6287
6288pw_async2
6289---------
6290C++20 users can now define asynchronous tasks using
6291:ref:`module-pw_async2-guides-coroutines`.
6292
6293* `Move PW_CO_TRY functions
6294  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209911>`__
6295* `Add Coro<T> coroutine API
6296  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207690>`__
6297
6298pw_bloat
6299--------
6300Padding is now included as part of utilization in code size reports. This allows
6301developers to monitor changes in application size that smaller than the used
6302space alignment defined in the linker script.
6303
6304* `Add padding to utilization
6305  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209972>`__
6306  (issue `#276370736 <https://issues.pigweed.dev/issues/276370736>`__)
6307
6308pw_bluetooth
6309------------
6310* `Add a constant for max controller delay
6311  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209271>`__
6312* `Put cmake tests in modules group
6313  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208897>`__
6314* `Disable emboss enum traits
6315  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208591>`__
6316  (issue `#339029458 <https://issues.pigweed.dev/issues/339029458>`__)
6317* `Remove hci_vendor
6318  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208313>`__
6319  (issue `#338269786 <https://issues.pigweed.dev/issues/338269786>`__)
6320
6321pw_bluetooth_proxy
6322------------------
6323* `Also support V2 of LE read buffer event
6324  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209879>`__
6325  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6326* `Use LE read buffer event
6327  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209878>`__
6328  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6329* `Removing trailing comma in PW_LOG call
6330  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209231>`__
6331  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6332* `Allow setting the # of credits to reserve
6333  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208895>`__
6334  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6335* `Add cmake build rules
6336  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208653>`__
6337  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6338* `Update tests to remove RVNO assumptions
6339  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208652>`__
6340  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6341* `Reserve ACL LE slots from host
6342  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207671>`__
6343  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6344
6345pw_boot_cortex_m
6346----------------
6347* `Emit pw_boot_Entry without prologue
6348  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208931>`__
6349  (issue `#339107121 <https://issues.pigweed.dev/issues/339107121>`__)
6350
6351pw_build
6352--------
6353* `pw_cc_test.lib fixup
6354  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210231>`__
6355  (issue `#307825072 <https://issues.pigweed.dev/issues/307825072>`__,
6356  issue `#341109859 <https://issues.pigweed.dev/issues/341109859>`__)
6357* `Fix type hint
6358  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208137>`__
6359  (issue `#338462905 <https://issues.pigweed.dev/issues/338462905>`__)
6360
6361pw_build_mcuxpresso
6362-------------------
6363:ref:`module-pw_build_mcuxpresso` now can support multiple device cores.
6364
6365* `Support multiple cores
6366  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208654>`__
6367
6368pw_config_loader
6369----------------
6370* `Add missing types dep
6371  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210236>`__
6372
6373pw_cpu_exception_cortex_m
6374-------------------------
6375* `Add error flag masks
6376  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210072>`__
6377* `Fix PSP unit test
6378  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210071>`__
6379
6380pw_digital_io_linux
6381-------------------
6382* `Add test_utils.h for ASSERT_OK and friends
6383  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209592>`__
6384* `Minor updates to OwnedFd
6385  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209591>`__
6386* `Refactor test
6387  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196051>`__
6388
6389pw_dma_mcuxpresso
6390-----------------
6391:ref:`module-pw_dma_mcuxpresso` is a new module for working with an MCUXpresso
6392DMA controller.
6393
6394* `Module for working with NXP DMA controller
6395  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208655>`__
6396
6397pw_docs
6398-------
6399* `Add inline search to sidebar
6400  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207674>`__
6401
6402pw_env_setup
6403------------
6404* `Remove f-strings from github_visitor
6405  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210274>`__
6406* `Change Bazel library name
6407  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210198>`__
6408  (issue `#340328100 <https://issues.pigweed.dev/issues/340328100>`__)
6409* `Add GitHub environment visitor
6410  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210045>`__
6411  (issue `#340900493 <https://issues.pigweed.dev/issues/340900493>`__)
6412* `Bazel support for config_file
6413  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209913>`__
6414  (issue `#340328100 <https://issues.pigweed.dev/issues/340328100>`__)
6415
6416pw_format
6417---------
6418* `Add Rust support for field width and zero padding
6419  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208898>`__
6420* `Add Rust support for formatting integers in hex
6421  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208415>`__
6422* `Add test for escaped curly brackets
6423  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208291>`__
6424* `Refactor format string parsing for better core::fmt support
6425  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208656>`__
6426
6427pw_i2c
6428------
6429* `Update OWNERS
6430  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208413>`__
6431
6432pw_i2c_mcuxpresso
6433-----------------
6434The new ``I3cMcuxpressoInitiator`` implements the ``pw_i2c`` initiator interface
6435using the MCUXpresso I3C driver, allowing normal I2C API's to work after setup.
6436
6437* `Fix Clang compilation
6438  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209191>`__
6439* `Add i3c initiator
6440  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208136>`__
6441* `Remove swatiwagh from OWNERS
6442  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208671>`__
6443
6444pw_ide
6445------
6446* `Add .pw_ide.user.yaml to .gitignore
6447  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208894>`__
6448* `Raise specific error on bad settings file
6449  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208132>`__
6450  (issue `#336799314 <https://issues.pigweed.dev/issues/336799314>`__)
6451
6452pw_libcxx
6453---------
6454Added initial support for using LLVM's `libcxx <https://libcxx.llvm.org/>`__ as
6455a standard C++ library implementation.
6456
6457* `Minimal implementation
6458  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201918>`__
6459
6460pw_log
6461------
6462Logging messages with untyped string arguments is now supported in the Rust
6463implementation.
6464
6465.. todo-check: disable
6466
6467* `Make TODO actionable
6468  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209571>`__
6469* `Add core::fmt style format string support to Rust API
6470  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207331>`__
6471* `Rename Rust logging API to be less verbose
6472  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207330>`__
6473* `Add Rust support for untyped strings
6474  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206673>`__
6475
6476.. todo-check: enable
6477
6478pw_multibuf
6479-----------
6480* `Remove deprecated Chunk::DiscardFront
6481  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206676>`__
6482
6483pw_package
6484----------
6485* `Suppress package progress messages
6486  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208331>`__
6487
6488pw_presubmit
6489------------
6490* `Auto fix unsorted-dict-items
6491  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209881>`__
6492  (issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__)
6493* `Fix missing pico-sdk for docs_build
6494  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209931>`__
6495* `Add repo tool API
6496  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179230>`__
6497* `Exclude all OWNERS from copyright
6498  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209031>`__
6499
6500pw_proto
6501--------
6502* `Create genrule for raw rpc with prefix
6503  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209992>`__
6504  (issue `#340749161 <https://issues.pigweed.dev/issues/340749161>`__)
6505
6506pw_protobuf
6507-----------
6508* `Build common.proto with Nanopb+Soong
6509  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209851>`__
6510  (issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__)
6511
6512pw_protobuf_compiler
6513--------------------
6514* `Disable layering check less
6515  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209111>`__
6516  (issue `#323749176 <https://issues.pigweed.dev/issues/323749176>`__)
6517* `Fix name collisions
6518  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208658>`__
6519* `Disable layering_check
6520  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208932>`__
6521  (issue `#339280821 <https://issues.pigweed.dev/issues/339280821>`__)
6522* `Fix bazel failure if proto dir is empty
6523  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208135>`__
6524  (issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__)
6525* `Add a no_prefix test
6526  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208138>`__
6527  (issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__)
6528* `Tests fail to build under cmake
6529  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208271>`__
6530  (issue `#338622044 <https://issues.pigweed.dev/issues/338622044>`__)
6531
6532pw_result
6533---------
6534* `Fix typo in template member
6535  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209667>`__
6536  (issue `#339794389 <https://issues.pigweed.dev/issues/339794389>`__)
6537
6538pw_rpc
6539------
6540* `Include FakeChannelOutput in soong target
6541  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209991>`__
6542  (issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__)
6543* `Update docs for channel ID remapping
6544  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209431>`__
6545* `Build compatibility fixes
6546  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208893>`__
6547* `Fix macro name in docs and comments
6548  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208311>`__
6549
6550pw_spi_mcuxpresso
6551-----------------
6552The :ref:`module-pw_spi_mcuxpresso` module now includes an
6553``McuxpressoResponder`` useing the SPI and DMA drivers from the NXP MCUXpresso
6554SDK.
6555
6556* `Add responder implementation
6557  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208657>`__
6558
6559pw_stm32cube_build
6560------------------
6561* `Fix a label flag name in documentation
6562  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208231>`__
6563
6564pw_sys_io_rp2040
6565----------------
6566* `Bazel build file update
6567  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209877>`__
6568  (issue `#261603269 <https://issues.pigweed.dev/issues/261603269>`__,
6569  issue `#300318025 <https://issues.pigweed.dev/issues/300318025>`__)
6570
6571pw_sys_io_stdio
6572---------------
6573* `Expand allowed uses beyond host
6574  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208511>`__
6575
6576pw_sys_io_stm32cube
6577-------------------
6578* `Fix build for f1xx family
6579  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208471>`__
6580
6581pw_tokenizer
6582------------
6583* `Clean up rust docs
6584  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208416>`__
6585
6586pw_toolchain
6587------------
6588Pigweed's Rust toolchain can now be used by downstream projects.
6589
6590* `Fix typos in newlib_os_interface_stubs.cc
6591  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209952>`__
6592* `Add clang-apply-replacements plugin
6593  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209539>`__
6594  (issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__)
6595* `Support Rust toolchains in downstream projects
6596  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209871>`__
6597* `Add clang-apply-replacements plugin
6598  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208896>`__
6599  (issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__)
6600* `Fix CMake build on macOS
6601  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208139>`__
6602* `Add no-canonical-system-headers
6603  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208156>`__
6604  (issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__)
6605
6606pw_trace_tokenized
6607------------------
6608* `Build compatibility fixes
6609  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208893>`__
6610
6611pw_transfer
6612-----------
6613The transfer service now ends active transfers when the underlying stream
6614changes, avoiding a case where a transfer could become stuck.
6615
6616* `End active transfers when RPC stream changes
6617  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209876>`__
6618* `Add tests for GetResourceStatus
6619  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209753>`__
6620* `Add py_proto_library target for update_bundle_proto
6621  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209731>`__
6622* `GetResoureStatus fix missing return
6623  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208491>`__
6624* `Lock resource_responder_ access
6625  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208251>`__
6626
6627pw_unit_test
6628------------
6629* `Add missing :config dependency for gtest backend
6630  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208472>`__
6631
6632Build
6633=====
6634
6635bazel
6636-----
6637* `Ignore reformatting change in git blame
6638  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210111>`__
6639  (issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__)
6640* `Fix unsorted-dict-items instances
6641  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209880>`__
6642  (issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__)
6643* `Remove unnecessary .bazelrc flag
6644  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208659>`__
6645  (issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__)
6646* `Re-enable sandbox_hermetic_tmp
6647  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208312>`__
6648  (issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__)
6649
6650Targets
6651=======
6652
6653targets/rp2040
6654--------------
6655* `pre_init and freertos config
6656  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209554>`__
6657  (issue `#261603269, 300318025 <https://issues.pigweed.dev/issues/261603269, 300318025>`__)
6658
6659Docs
6660====
6661* `Update changelog
6662  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208171>`__
6663
6664SEEDs
6665=====
6666
6667SEED-0116
6668---------
6669* `Set status to On Hold
6670  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208831>`__
6671
6672Third party
6673===========
6674
6675third_party/emboss
6676------------------
6677* `Use absolute paths in source dependencies
6678  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209131>`__
6679  (issue `#339467547 <https://issues.pigweed.dev/issues/339467547>`__)
6680* `Update emboss repo to tag v2024.0501.215421
6681  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208314>`__
6682  (issue `#338675057 <https://issues.pigweed.dev/issues/338675057>`__)
6683* `Add additional owners for emboss
6684  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208631>`__
6685
6686third_party/freertos
6687--------------------
6688* `Add CM3 support to Bazel build
6689  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210211>`__
6690
6691third_party/perfetto
6692--------------------
6693* `Rename proto targets
6694  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210040>`__
6695* `Add third party perfetto repo
6696  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203618>`__
6697* `Copybara import
6698  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207490>`__
6699
6700Miscellaneous
6701=============
6702* `Run clang-format
6703  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208911>`__
6704* `Add roller as WORKSPACE owner
6705  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208900>`__
6706  (issue `#245397913 <https://issues.pigweed.dev/issues/245397913>`__)
6707
6708-----------
6709May 1, 2024
6710-----------
6711
6712Highlights (Apr 19, 2024 to May 1, 2024):
6713
6714* **Thread kickoff via pw::Function:** Revamped the Thread API to use
6715  pw::Function. The original Thread API was created before pw::Function was
6716  stable; this change modernizes and increases usability of the Thread API.
6717* **Thread creation SEED:** Creating threads in Pigweed is difficult due to our
6718  strict adherence to portability. We're considering creating an additional API
6719  that is more usable but less portable than the current approach.
6720* **Transfer:** Adaptive windowing got a Java implementation, and improvements
6721  to adaptive windowing in C++.
6722* **Bluetooth:** Initial CLs towards a Bluetooth proxy.
6723
6724Active SEEDs
6725============
6726Help shape the future of Pigweed! Please visit :ref:`seed-0000`
6727and leave feedback on the RFCs (i.e. SEEDs) marked
6728``Open for Comments``.
6729
6730Modules
6731=======
6732
6733pw_allocator
6734------------
6735Added two new allocators: BuddyAlloctor and BumpAllocator (also known as an
6736arena allocator). Various cleanups and fixes, including splitting the
6737Block-based allocators to their own files.
6738
6739* `Add missing return statement
6740  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207171>`__
6741  (issue `#337761967 <https://issues.pigweed.dev/issues/337761967>`__)
6742* `Remove conflict marker
6743  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206590>`__
6744* `Move FallbackAllocator implementation
6745  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206174>`__
6746* `Clean up LibCAllocatorTest
6747  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206173>`__
6748* `Move block allocators to separate files
6749  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198154>`__
6750* `Add BuddyAllocator
6751  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195952>`__
6752* `Make AllMetrics internal
6753  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205737>`__
6754* `Fix SynchonizedAllocator data race
6755  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205753>`__
6756  (issue `#333386065 <https://issues.pigweed.dev/issues/333386065>`__)
6757* `Add BumpAllocator
6758  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195953>`__
6759
6760pw_assert
6761---------
6762* `Fix support for print_and_abort in Bazel
6763  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206853>`__
6764  (issue `#337271435 <https://issues.pigweed.dev/issues/337271435>`__)
6765
6766pw_async
6767--------
6768* `Add missing dispatcher facades to CMake
6769  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204873>`__
6770  (issue `#335866562 <https://issues.pigweed.dev/issues/335866562>`__)
6771
6772pw_bluetooth
6773------------
6774Continue filling out Bluetooth packet definitions; as well as some API
6775extensions for e.g. RSSI control.
6776
6777* `Add header alias in command complete events
6778  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207552>`__
6779  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6780* `Add Event Codes to emboss
6781  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207510>`__
6782  (issue `#338068316 <https://issues.pigweed.dev/issues/338068316>`__)
6783* `Add opcode_enum to command and response event
6784  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207335>`__
6785  (issue `#338068316 <https://issues.pigweed.dev/issues/338068316>`__)
6786* `Sync with recent APCF changes
6787  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205921>`__
6788  (issue `#336608891 <https://issues.pigweed.dev/issues/336608891>`__)
6789* `Define Common Data Types
6790  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207470>`__
6791  (issue `#336608891 <https://issues.pigweed.dev/issues/336608891>`__)
6792* `Add LoopbackCommandEvent
6793  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205920>`__
6794  (issue `#336579564 <https://issues.pigweed.dev/issues/336579564>`__)
6795* `Support Read RSSI command and event
6796  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205919>`__
6797  (issue `#336566041 <https://issues.pigweed.dev/issues/336566041>`__)
6798* `Comment why we include all emboss headers in emboss_test
6799  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203637>`__
6800  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6801* `Correct emboss path in doc example
6802  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204811>`__
6803  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
6804
6805pw_bluetooth_*
6806--------------
6807* `Formatting fixes
6808  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204750>`__
6809
6810pw_bluetooth_proxy
6811------------------
6812Start building the Bluetooth proxy subsystem.
6813
6814* `Rename ProcessH4 to HandleH4
6815  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207651>`__
6816  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6817* `Rename passthrough_test.cc to proxy_host_test.cc
6818  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207670>`__
6819  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6820* `Move ProxyHost methods to .cc
6821  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207333>`__
6822  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6823* `Rename HciProxy to ProxyHost
6824  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207450>`__
6825  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6826* `Delete policies functionality
6827  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207332>`__
6828  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6829* `Add some emboss helper functions
6830  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205741>`__
6831  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6832* `Template test emboss packet creation
6833  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205740>`__
6834  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6835* `Fix ordering of TEST arguments
6836  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205739>`__
6837  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
6838
6839pw_build
6840--------
6841* `Add a `test_main` param to `pw_cc_test`
6842  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206851>`__
6843  (issue `#337277617 <https://issues.pigweed.dev/issues/337277617>`__)
6844* `Fix using pw_cc_blob_library target in external repos
6845  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206552>`__
6846
6847pw_build_info
6848-------------
6849* `Make the python module importable
6850  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206030>`__
6851
6852pw_cli
6853------
6854New SEED creation tool reduces the burden to create SEEDs. This will open the
6855door to more contributors creating SEEDs for Pigweed changes and enhancements.
6856
6857* `Add SEED creation to CLI tool
6858  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186762>`__
6859* `Handle custom arguments in tools
6860  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204192>`__
6861* `Add git_repo.py and test to Bazel build
6862  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204871>`__
6863
6864pw_containers
6865-------------
6866* `Omit size on FlatMap construction
6867  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201030>`__
6868
6869pw_cpu_exception_cortex_m
6870-------------------------
6871* `Add util_test to tests
6872  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207791>`__
6873
6874pw_digital_io_linux
6875-------------------
6876* `Move OwnedFd to its own header file
6877  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207831>`__
6878
6879pw_env_setup
6880------------
6881* `Update default sysroot version
6882  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204244>`__
6883  (issue `#335438711 <https://issues.pigweed.dev/issues/335438711>`__)
6884
6885pw_format
6886---------
6887* `Better explain core::fmt whitespace parsing in ccomments
6888  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206671>`__
6889* `Add support for core::fmt style format strings
6890  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203830>`__
6891
6892pw_grpc
6893-------
6894* `Support fragmented gRPC messages if an allocator is provided
6895  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204431>`__
6896  (issue `#323924487 <https://issues.pigweed.dev/issues/323924487>`__)
6897
6898pw_module
6899---------
6900* `Include :authors: in generated SEED file
6901  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206674>`__
6902
6903pw_presubmit
6904------------
6905* `Separate 'bazel info' stderr
6906  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206350>`__
6907  (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
6908* `Save 'bazel info output_base'
6909  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206270>`__
6910* `Remove --verbose_explanations flag
6911  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205933>`__
6912* `Use _LOG global for logging
6913  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205913>`__
6914* `RST format updates
6915  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204241>`__
6916* `Allow disabling hook creation
6917  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205912>`__
6918* `Drop '.' from Bazel symlinks
6919  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204870>`__
6920  (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
6921
6922pw_protobuf
6923-----------
6924* `Fix support for import_prefix on protos with options
6925  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204671>`__
6926
6927pw_rpc
6928------
6929Enhancements in pw_rpc to better integrate with pw_grpc.
6930
6931* `Add private method for sending internal::Packet directly
6932  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185669>`__
6933  (issue `#319162657 <https://issues.pigweed.dev/issues/319162657>`__)
6934
6935pw_rust
6936-------
6937* `Build examples in presubmit
6938  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207338>`__
6939  (issue `#337951363 <https://issues.pigweed.dev/issues/337951363>`__)
6940* `Fix Rust tokenized logging example
6941  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206672>`__
6942
6943pw_sensors
6944----------
6945Sensors subsystem continues moving along; note that most of the discussion and
6946development is happening in the SEEDs.
6947
6948* `Add support for triggers
6949  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203860>`__
6950  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
6951
6952pw_snapshot
6953-----------
6954* `Add python processor tests
6955  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205761>`__
6956* `Fix Bazel builds
6957  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205090>`__
6958
6959pw_spi_mcuxpresso
6960-----------------
6961* `Rename flexspi to flexio_spi
6962  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205711>`__
6963* `Fix Bazel build
6964  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205710>`__
6965
6966pw_stream_uart_mcuxpresso
6967-------------------------
6968* `Add interrupt safe write-only UART stream
6969  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207414>`__
6970
6971pw_string
6972---------
6973* `Add ToString for iterables
6974  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206650>`__
6975* `Add missing array include
6976  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204211>`__
6977
6978pw_thread
6979---------
6980API change to bring pw_thread up to date with pw::Function; see overview.
6981
6982* `Use pw::Function to start threads
6983  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205760>`__
6984  (issue `#243018475 <https://issues.pigweed.dev/issues/243018475>`__)
6985* `Fix pw_thread_zephyr compilability
6986  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206970>`__
6987
6988pw_thread_threadx
6989-----------------
6990* `Remove unused dependency
6991  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207191>`__
6992
6993pw_tls_client
6994-------------
6995* `Add CMake facades
6996  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204874>`__
6997  (issue `#335878898 <https://issues.pigweed.dev/issues/335878898>`__)
6998
6999pw_tokenizer
7000------------
7001Enhance the C++ host-side decoder to better handle the full suite of
7002capabilities, in particulaur, recursive decoding; also some build fixes.
7003
7004* `Add DecodeOptionallyTokenizedData
7005  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206070>`__
7006* `Switch detokenize.h docs to Doxygen
7007  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205751>`__
7008* `Support arbitrary recursion in C++ detokenizer
7009  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205770>`__
7010* `Add missing CMake dep
7011  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204316>`__
7012
7013pw_toolchain
7014------------
7015* `Add clang-tidy suggestion
7016  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206675>`__
7017
7018pw_transfer
7019-----------
7020Adaptive windowing improvements, including C++ enhancementsn to better handle
7021small window sizes, as well as adding a Java implementation.
7022
7023* `Add resource_id to all GetResourceStatus responses
7024  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207350>`__
7025  (issue `#336364832 <https://issues.pigweed.dev/issues/336364832>`__)
7026* `Assume a minimum window size when reserving space
7027  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206890>`__
7028* `Attempt to recover when receiving invalid size
7029  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206632>`__
7030* `Implement adaptive windowing in Java
7031  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/147511>`__
7032
7033pw_unit_test
7034------------
7035* `Add support for a test_main in CMake
7036  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204872>`__
7037  (issue `#335865646 <https://issues.pigweed.dev/issues/335865646>`__)
7038* `Standardize ASSERT_OK_AND_ASSIGN
7039  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205946>`__
7040* `Clarify status macros are gunit-only
7041  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206050>`__
7042* `Add IWYU export/private pragmas
7043  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204151>`__
7044  (issue `#335291547 <https://issues.pigweed.dev/issues/335291547>`__)
7045
7046pw_web
7047------
7048* `Fix icons in packaged version
7049  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207551>`__
7050* `Fix text download format
7051  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206551>`__
7052* `NPM version bump to 0.0.19
7053  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206330>`__
7054* `Add user guide page for features and filter syntax
7055  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203632>`__
7056  (issue `#307560371 <https://issues.pigweed.dev/issues/307560371>`__)
7057
7058Docs
7059====
7060
7061docs
7062----
7063* `Mention @deprecated in the Doxygen style guide
7064  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205762>`__
7065* `Update module docs contributor guidelines
7066  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205742>`__
7067* `Add GitHub pull request template
7068  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205810>`__
7069* `Require Bazel+GN+CMake for new contributions
7070  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204650>`__
7071* `Update changelog
7072  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204203>`__
7073
7074SEEDs
7075=====
7076* SEED-0124: `Getting Used Size from Multisink
7077  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188670>`__
7078  (issue `#326854807 <https://issues.pigweed.dev/issues/326854807>`__) landed
7079* SEED-0128: `Easier thread creation
7080  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206631>`__ started
7081* SEED-0129: `Support PW_ASSERT with non-argument message
7082  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207150>`__ started
7083
7084Miscellaneous
7085=============
7086* `Run clang-format
7087  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207412>`__
7088* `Remove remaining usages of legacy thread entry
7089  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206856>`__
7090* `Replace `string_view&` with `string_view`
7091  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204591>`__
7092
7093.bazelversion
7094-------------
7095* `Add file
7096  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205918>`__
7097  (issue `#336617748 <https://issues.pigweed.dev/issues/336617748>`__)
7098
7099Third party
7100===========
7101* boringssl: `Add CMake integration
7102  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204875>`__
7103  (issue `#335880025 <https://issues.pigweed.dev/issues/335880025>`__)
7104* emboss: `Update emboss repo to tag v2024.0419.155605
7105  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204202>`__
7106  (issue `#335724776 <https://issues.pigweed.dev/issues/335724776>`__)
7107* emboss: `Use COMPILE_LANGUAGE:CXX
7108  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205670>`__
7109  (issue `#336267050 <https://issues.pigweed.dev/issues/336267050>`__)
7110* fuchsia: `Add defer.h to Bazel build defs
7111  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206854>`__
7112  (issue `#337275846 <https://issues.pigweed.dev/issues/337275846>`__)
7113* npm: `Update package-lock.json
7114  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207336>`__
7115
7116------------
7117Apr 18, 2024
7118------------
7119
7120.. changelog_highlights_start
7121
7122Highlights (Apr 4, 2024 to Apr 18, 2024):
7123
7124* The Python and C++ interfaces of ``pw_transfer`` now support
7125  :ref:`adaptive windowing <module-pw_transfer-windowing>`.
7126* :ref:`SEED 0117: I3C <seed-0117>` was accepted.
7127* The new :ref:`docs-quickstart-zephyr` shows you how to set up a
7128  C++-based Zephyr project that's ready to use Pigweed.
7129
7130.. changelog_highlights_end
7131
7132Active SEEDs
7133============
7134Help shape the future of Pigweed! Please visit :ref:`seed-0000`
7135and leave feedback on the RFCs (i.e. SEEDs) marked
7136``Open for Comments``.
7137
7138Modules
7139=======
7140
7141pw_allocator
7142------------
7143The new :cpp:class:`pw::allocator::TypedPool` class is a slab allocator
7144that can allocate a specific object with very low overhead.
7145``pw::allocator::TypedPool`` is implemented using the new
7146:cpp:class:`pw::allocator::Pool` interface.
7147``pw::allocator::TrackingAllocatorImpl`` was renamed to
7148``pw::allocator::TrackingAllocator``.
7149
7150* `Add missing soong deps
7151  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203613>`__
7152* `Add Pool
7153  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195540>`__
7154* `Update OWNERS
7155  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203211>`__
7156* `Rename TrackingAllocatorImpl
7157  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203150>`__
7158  (issue `#326509341 <https://issues.pigweed.dev/issues/326509341>`__)
7159
7160pw_async2
7161---------
7162The new :cpp:class:`pw::async2::PendableAsTask` class is a ``Task`` that
7163delegates to a type with a ``Pend`` method.
7164
7165* `Add PendableAsTask
7166  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201920>`__
7167
7168pw_blob_store
7169-------------
7170The ``pw_add_library()`` call for the ``pw_blob_store`` target now compiles
7171as ``STATIC`` instead of ``INTERFACE`` to be more in line with the Bazel
7172build.
7173
7174* `Fix CMakeLists.txt pw_add_library()
7175  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203134>`__
7176
7177pw_bluetooth
7178------------
7179* `Formatting fixes
7180  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204315>`__
7181* `LEGetVendorCapabilitiesCommandCompleteEvent v1.04 fields
7182  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204198>`__
7183* `Add versions - LEGetVendorCapabilitiesCommandCompleteEvent
7184  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203795>`__
7185  (issue `#332924521 <https://issues.pigweed.dev/issues/332924521>`__)
7186* `Add EventMask and temp field in SetEventMaskCommand
7187  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192256>`__
7188  (issue `#42068631 <https://issues.pigweed.dev/issues/42068631>`__)
7189* `Store length max in virtual field
7190  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201794>`__
7191* `Define LEReadMaximumAdvertisingDataLengthCommandComplete
7192  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201951>`__
7193  (issue `#312898345 <https://issues.pigweed.dev/issues/312898345>`__)
7194
7195pw_bluetooth_sapphire
7196---------------------
7197In CIPD ``bt-host`` artifacts are now uploaded to ``fuchsia/prebuilt/bt-host``.
7198
7199* `Iterators
7200  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203855>`__
7201  (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
7202* `Change CIPD upload path
7203  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202690>`__
7204  (issue `#321267610 <https://issues.pigweed.dev/issues/321267610>`__)
7205* `Bump @fuchsia_sdk
7206  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202490>`__
7207  (issue `#329933586 <https://issues.pigweed.dev/issues/329933586>`__,
7208  issue `#321267476 <https://issues.pigweed.dev/issues/321267476>`__)
7209
7210pw_build
7211--------
7212* `Disable deprecated pragma warnings
7213  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203856>`__
7214  (issue `#333448202 <https://issues.pigweed.dev/issues/335328444>`__,
7215  issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
7216* `Iterators
7217  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
7218  (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__,
7219  issue `#335024633 <https://issues.pigweed.dev/issues/335024633>`__,
7220  issue `#335021928 <https://issues.pigweed.dev/issues/335021928>`__)
7221* `Collect wheel fix
7222  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202921>`__
7223* `Disable C23 extension warnings
7224  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202830>`__
7225  (issue `#333712899 <https://issues.pigweed.dev/issues/333712899>`__)
7226
7227pw_build_android
7228----------------
7229* `Update module guidance
7230  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203910>`__
7231* `Update cc_defaults guidance
7232  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203651>`__
7233* `Make Common Backends static
7234  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202090>`__
7235  (issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__)
7236
7237pw_build_info
7238-------------
7239* `Add missing header file for cmake
7240  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202210>`__
7241
7242pw_cli
7243------
7244The following interfaces were moved from ``pw_presubmit`` to ``pw_cli``
7245to make them more widely available: :py:class:`pw_cli.file_filter.FileFilter`,
7246:py:mod:`pw_cli.git_repo`, and :py:class:`pw_cli.tool_runner.ToolRunner`.
7247The new :py:func:`pw_cli.decorators.deprecated` decorator emits a
7248deprecation warning when the annotated function is used.
7249
7250* `Fix argument handling for GitRepo.has_uncommitted_changes()
7251  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204232>`__
7252* `Fix subprocess runner arg concatenation
7253  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202844>`__
7254* `Move FileFilter
7255  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194617>`__
7256* `Fix commit fallback handling for GitRepo.list_files()
7257  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203790>`__
7258* `Move git_repo to pw_cli
7259  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201279>`__
7260* `Add Python deprecation decorator
7261  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202929>`__
7262* `Update ToolRunner type hints
7263  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202737>`__
7264* `Move ToolRunner
7265  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201278>`__
7266
7267pw_containers
7268-------------
7269* `Iterators
7270  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
7271  (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
7272
7273pw_cpu_exception_risc_v
7274-----------------------
7275The new :ref:`module-pw_cpu_exception_risc_v` backend lays the foundation for
7276RISC-V CPU exception handling.
7277
7278* `Add initial backend structure
7279  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188230>`__
7280
7281pw_env_setup
7282------------
7283* `clang
7284  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202591>`__
7285  (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
7286
7287pw_hdlc
7288-------
7289* `Iterators
7290  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
7291  (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
7292
7293pw_ide
7294------
7295* `Fixes to support changing working_dir
7296  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204430>`__
7297  (issue `#335628872 <https://issues.pigweed.dev/issues/335628872>`__)
7298* `Enable cmake.format.allowOptionalArgumentIndentation
7299  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203638>`__
7300
7301pw_kvs
7302------
7303* `Make Key an alias for string_view
7304  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204590>`__
7305* `Depend on libraries for fake flash and store tests for Bazel
7306  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202212>`__
7307* `Add libraries to reuse partition and store tests for Bazel
7308  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202211>`__
7309
7310pw_log_zephyr
7311-------------
7312* `Tokenize Zephyr shell fprintf
7313  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202734>`__
7314
7315pw_presubmit
7316------------
7317The following interfaces were moved from ``pw_presubmit`` to ``pw_cli``
7318to make them more widely available: :py:class:`pw_cli.file_filter.FileFilter`,
7319:py:mod:`pw_cli.git_repo`, and :py:class:`pw_cli.tool_runner.ToolRunner`.
7320
7321* `Move FileFilter
7322  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194617>`__
7323* `Add bthost_package step
7324  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203797>`__
7325  (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
7326* `Don't overwrite Bazel stdout files
7327  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203796>`__
7328  (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__)
7329* `Remove cmake_clang from quick presubmit
7330  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198050>`__
7331* `Move git_repo to pw_cli
7332  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201279>`__
7333* `Fix copy/paste bug in _value()
7334  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202913>`__
7335* `Move ToolRunner
7336  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201278>`__
7337
7338pw_protobuf
7339-----------
7340
7341
7342* `Access raw proto values; change RPC packet channel ID
7343  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204152>`__
7344
7345pw_rpc
7346------
7347The new :cpp:func:`pw::rpc::ChangeEncodedChannelId` function lets you rewrite
7348an encoded packet's channel ID in place. See :ref:`module-pw_rpc-remap`.
7349
7350* `Access raw proto values; change RPC packet channel ID
7351  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204152>`__
7352* `Iterators
7353  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
7354  (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
7355
7356pw_rpc_transport
7357----------------
7358* `Soong lib names now follow style
7359  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203650>`__
7360
7361pw_sensor
7362---------
7363The new :ref:`module-pw_sensor` module is the start of the implementation
7364of :ref:`SEED 0119: Sensors <seed-0119>`.
7365
7366* `Fix Python install
7367  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204130>`__
7368* `Add attribute support to sensor-desc CLI
7369  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203791>`__
7370  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
7371* `Create a sensor-desc CLI
7372  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203670>`__
7373  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
7374* `Update validator schema to JSON schema
7375  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202925>`__
7376  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
7377* `Provide a validator
7378  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202912>`__
7379  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
7380* `Add module stub
7381  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202911>`__
7382  (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__)
7383
7384pw_snapshot
7385-----------
7386* `Process snapshots based on CPU architecture
7387  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188232>`__
7388
7389pw_spi_linux
7390------------
7391``pw_spi_linux`` now has a basic :ref:`module-pw_spi_linux-cli` that lets
7392you read from and write to devices.
7393
7394* `Add pw_spi_linux_cli
7395  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201391>`__
7396
7397pw_thread_freertos
7398------------------
7399* `Use TCB for running stack pointer
7400  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188231>`__
7401
7402pw_tls_client
7403-------------
7404* `Only include <sys/time.h> if available
7405  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202555>`__
7406
7407pw_transfer
7408-----------
7409The Python and C++ interfaces now support
7410:ref:`adaptive windowing <module-pw_transfer-windowing>`.
7411
7412* `Iterators
7413  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__
7414  (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__)
7415* `Implement adaptive windowing in Python
7416  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/147510>`__
7417* `Implement adaptive windowing in C++
7418  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/146392>`__
7419* `Convert arguments to std::fstream constructors
7420  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203151>`__
7421  (issue `#333957637 <https://issues.pigweed.dev/issues/333957637>`__)
7422
7423pw_web
7424------
7425* `Support creating client without using proto descriptor
7426  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203654>`__
7427* `NPM version bump to 0.0.18
7428  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203636>`__
7429* `Fix string manipulation in download logs
7430  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203612>`__
7431  (issue `#331480903 <https://issues.pigweed.dev/issues/331480903>`__)
7432* `Use existing col data when adding new View
7433  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200290>`__
7434  (issue `#331439176 <https://issues.pigweed.dev/issues/331439176>`__)
7435* `Enable column order on init
7436  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201530>`__
7437  (issue `#329712468 <https://issues.pigweed.dev/issues/329712468>`__)
7438* `Fix test format of log-source.test
7439  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202392>`__
7440  (issue `#333379333 <https://issues.pigweed.dev/issues/333379333>`__)
7441
7442Build
7443=====
7444
7445Bazel
7446-----
7447* `Use remote cache in infra
7448  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202754>`__
7449  (issue `#312215590 <https://issues.pigweed.dev/issues/312215590>`__)
7450
7451Docs
7452====
7453The new :ref:`docs-quickstart-zephyr` shows you how to set up a C++-based
7454Zephyr project that's ready to use Pigweed. The API references for all
7455functions or methods that return a set of ``pw_status`` codes have been
7456refactored for consistency. The :ref:`docs-style-doxygen` has been revamped.
7457
7458* `Add pw_status table for API references
7459  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202739>`__
7460* `Revamp Doxygen style guide
7461  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202590>`__
7462* `Add Zephyr quickstart
7463  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196671>`__
7464* `Update changelog
7465  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202150>`__
7466
7467SEEDs
7468=====
7469* (SEED-0117) `pw_i3c
7470  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178350>`__
7471
7472Miscellaneous
7473=============
7474* (clang) `Fix \`std::array\` iterators
7475  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202834>`__
7476  (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__)
7477* (emboss) `Loosen Emboss cmake dependency tracking
7478  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202831>`__
7479  (issue `#333735460 <https://issues.pigweed.dev/issues/333735460>`__)
7480* (many) `Move maxDiff to be a class attribute
7481  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204150>`__
7482
7483-----------
7484Apr 4, 2024
7485-----------
7486.. _epoll: https://man7.org/linux/man-pages/man7/epoll.7.html
7487
7488Highlights (Mar 21, 2024 to Apr 4, 2024):
7489
7490* **New modules**: :ref:`module-pw_i2c_rp2040` is a Pico SDK implementation of
7491  the ``pw_i2c`` interface, :ref:`module-pw_async2_epoll` is an
7492  `epoll`_-based backend for ``pw_async2``, :ref:`module-pw_spi_linux`
7493  is a Linux backend for ``pw_spi``, :ref:`module-pw_uart` provides
7494  core methods for UART communication, and :ref:`module-pw_bluetooth_proxy`
7495  provides a lightweight proxy host that can be placed between a Bluetooth
7496  host and a Bluetooth controller to add functionality or inspection.
7497* **Docs updates**: Pigweed's main docs builder now builds the
7498  :ref:`examples <seed-0122-examples>` repo; the examples will be available
7499  at ``https://pigweed.dev/examples``. An experimental complete Doxygen API
7500  reference is now being published to ``https://pigweed.dev/doxygen``. The
7501  :ref:`module-pw_i2c` docs, :ref:`docs-style-rest`, and
7502  :ref:`docs contributors homepage <docs-contrib-docs>` have been revamped.
7503* **Android platform updates**: Many modules were refactored to follow the
7504  guidance in :ref:`module-pw_build_android` to make it easier to build them in
7505  Soong.
7506
7507Active SEEDs
7508============
7509Help shape the future of Pigweed! Please visit :ref:`seed-0000`
7510and leave feedback on the RFCs (i.e. SEEDs) marked
7511``Open for Comments``.
7512
7513Modules
7514=======
7515
7516pw_allocator
7517------------
7518The new :ref:`module-pw_allocator-api-capabilities` API lets derived allocators
7519describe what optional features they support. ``pw::Allocator::GetLayout()``
7520has begun to be deprecated and replaced by ``pw::Allocator::GetRequestedLayout``,
7521``pw::Allocator::GetUsableLayout()``, and ``pw::Allocator::GetAllocatedLayout()``
7522to make it easier to distinguish between requested memory, usable memory, and
7523already used memory. Methods that took ``Layout`` arguments, such as
7524``pw::Allocator::GetRequestedLayout()``, have been deprecated.
7525
7526* `Restore DoDeallocate with Layout
7527  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201670>`__
7528  (issue `#332510307 <https://issues.pigweed.dev/issues/332510307>`__)
7529* `Move Layout and UniquePtr to their own header files
7530  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199534>`__
7531* `Remove Layout from Deallocate and Resize
7532  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198153>`__
7533* `Add allocation detail storage to TrackingAllocator
7534  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198152>`__
7535* `Distinguish between requested, usable, and allocated sizes
7536  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198150>`__
7537* `Add Capabilities
7538  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197133>`__
7539
7540pw_assert_log
7541-------------
7542* `Follow Soong guidelines
7543  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197536>`__
7544  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7545
7546pw_async2
7547---------
7548The new :cpp:class:`pw::async2::PendFuncTask` class delegates a task to a
7549provided function.
7550
7551* `Add Poll::Readiness helper
7552  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201910>`__
7553* `Fix TSAN for dispatcher_thread_test
7554  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201850>`__
7555* `Add PendFuncTask
7556  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199714>`__
7557
7558pw_async2_epoll
7559---------------
7560.. _epoll: https://man7.org/linux/man-pages/man7/epoll.7.html
7561
7562The new :ref:`module-pw_async2_epoll` module is an `epoll`_-based backend
7563for  :ref:`module-pw_async2`.
7564
7565* `Epoll-backed async2 dispatcher
7566  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200233>`__
7567
7568pw_bluetooth
7569------------
7570The :ref:`module-pw_bluetooth-usage` section now shows CMake usage and
7571the new :ref:`module-pw_bluetooth-contributing` section shows how to
7572contribute Emboss code.
7573
7574* `Define LEReadMaximumAdvertisingDataLengthCommandComplete
7575  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201951>`__
7576  (issue `#312898345 <https://issues.pigweed.dev/issues/312898345>`__)
7577* `Add more opcodes
7578  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201130>`__
7579* `Add example of using to_underlying
7580  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200970>`__
7581  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
7582* `Emboss formatting tweak
7583  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200230>`__
7584  (issue `#331195584 <https://issues.pigweed.dev/issues/331195584>`__)
7585* `Add cmake to usage guide
7586  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200012>`__
7587  (issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__)
7588* `Add opcode_full field to emboss HCI headers
7589  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199553>`__
7590  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
7591* `Add enum for opcodes
7592  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199671>`__
7593  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
7594* `Update cmake targets to be consistent
7595  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200011>`__
7596  (issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__)
7597* `Update build files to be consistent
7598  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200010>`__
7599  (issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__)
7600* `Add emboss ReadBufferSize v1 event
7601  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199070>`__
7602  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
7603* `Add emboss contributing section to docs.rst
7604  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199531>`__
7605  (issue `#331195584 <https://issues.pigweed.dev/issues/331195584>`__)
7606* `protocol.h comments tweak
7607  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199532>`__
7608  (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__)
7609
7610pw_bluetooth_proxy
7611------------------
7612The new :ref:`module-pw_bluetooth_proxy` module provides a lightweight
7613proxy host that can be placed between a Bluetooth host and a Bluetooth
7614controller to add functionality or inspection.
7615
7616* `Move to cpp23::to_underlying
7617  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200971>`__
7618  (issue `#331281133 <https://issues.pigweed.dev/issues/331281133>`__)
7619* `Use emboss OpCode enum
7620  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199554>`__
7621  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
7622* `Bluetooth proxy module and initial classes
7623  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197290>`__
7624  (issue `#326496952 <https://issues.pigweed.dev/issues/326496952>`__)
7625
7626pw_bluetooth_sapphire
7627---------------------
7628``pw_bluetooth_sapphire`` now supports emulation, Fuchsia unit testing, and
7629ARM64 build targets.
7630
7631* `Add arm64 release variant
7632  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202050>`__
7633  (issue `#332928957 <https://issues.pigweed.dev/issues/332928957>`__)
7634* `Stub bt-host CIPD manifest
7635  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201390>`__
7636  (issue `#332357274, 321267610 <https://issues.pigweed.dev/issues/332357274, 321267610>`__)
7637* `Fuchsia testing support
7638  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198270>`__
7639  (issue `#331692493, 42178254 <https://issues.pigweed.dev/issues/331692493, 42178254>`__)
7640* `Add emulator start workflow
7641  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200270>`__
7642  (issue `#321267689 <https://issues.pigweed.dev/issues/321267689>`__)
7643
7644pw_build
7645--------
7646Modules can now be nested in subdirectories, which paves the way for
7647refactoring how modules are organized in the upstream Pigweed repo.
7648:ref:`module-pw_build-project_builder` is a new lightweight build command
7649for projects that need to run multiple commands to perform a build.
7650
7651* `Allow nesting Pigweed modules in subdirectories
7652  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201114>`__
7653* `Add alwayslink option to pw_cc_blob_library
7654  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201110>`__
7655* `ProjectBuilder documentation
7656  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200791>`__
7657* `BuildRecipe auto_create_build_dir option
7658  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200830>`__
7659* `Defer build directory existence check
7660  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200771>`__
7661
7662pw_build_android
7663----------------
7664* `Define rule with static libs
7665  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200351>`__
7666  (issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__)
7667
7668pw_build_info
7669-------------
7670The new ``pw::build_info::LogBuildId()`` function lets you print a GNU
7671build ID as hex.
7672
7673* `Add log function of GNU build ID
7674  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199471>`__
7675* `Fix Bazel baremetal compatibility
7676  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199470>`__
7677
7678pw_bytes
7679--------
7680* `Add example to docs of using _b suffix
7681  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201350>`__
7682
7683pw_channel
7684----------
7685The new :cpp:type:`pw::channel::LoopbackDatagramChannel` and
7686:cpp:type:`pw::channel::LoopbackByteChannel` aliases provide channel
7687implementations that read their own writes. The new
7688:cpp:class:`pw::channel::ForwardingChannelPair` class lets you connect two
7689subsystems with datagram channels without implementing a custom channel.
7690
7691* `Return status from PollReadyToWrite
7692  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200995>`__
7693* `Rename methods to Pend prefix
7694  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201090>`__
7695* `Add loopback channel
7696  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199150>`__
7697* `Split open bits for read and write
7698  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199712>`__
7699* `Seek is not async
7700  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199713>`__
7701* `Set closed bit on FAILED_PRECONDITION
7702  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199710>`__
7703* `Respect sibling closure
7704  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199035>`__
7705* `Introduce forwarding channels
7706  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197353>`__
7707
7708pw_chrono
7709---------
7710* `Update OWNERS
7711  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
7712* `Follow Soong guidelines
7713  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198290>`__
7714  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7715
7716pw_cli
7717------
7718The new ``pw_cli.alias`` Python module lets you create ``pw`` subcommands
7719that are effectively command line aliases. See :ref:`module-pw_cli-aliases`.
7720
7721* `Move plural()
7722  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201630>`__
7723* `Move status_reporter to pw_cli
7724  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201113>`__
7725* `Add pw ffx alias
7726  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200770>`__
7727  (issue `#329933586 <https://issues.pigweed.dev/issues/329933586>`__)
7728
7729pw_digital_io
7730-------------
7731* `Update OWNERS
7732  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__
7733
7734pw_emu
7735------
7736* `Fix a TypeError in TemporaryEmulator
7737  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200832>`__
7738  (issue `#316080297 <https://issues.pigweed.dev/issues/316080297>`__)
7739
7740pw_env_setup
7741------------
7742* `Run npm log viewer setup script after install
7743  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200211>`__
7744
7745pw_function
7746-----------
7747* `Define as cc_static_library
7748  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199092>`__
7749  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7750
7751pw_hdlc
7752-------
7753The new :cpp:class:`pw::hdlc::Router` class is an experimental async HDLC
7754router that uses :ref:`module-pw_channel`.
7755
7756* `Document members of router
7757  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201115>`__
7758* `Add async router
7759  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195538>`__
7760* `Fix sitenav
7761  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196499>`__
7762
7763pw_i2c
7764------
7765The :ref:`module-pw_i2c` docs have been revamped.
7766
7767* `Revamp docs
7768  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196330>`__
7769* `Update OWNERS
7770  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__
7771* `Update OWNERS
7772  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
7773
7774pw_i2c_rp2040
7775-------------
7776The new :ref:`module-pw_i2c_rp2040` module implements the :ref:`module-pw_i2c`
7777interface using the Raspberry Pi Pico SDK.
7778
7779* `Initiator implementation
7780  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173552>`__
7781  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
7782
7783pw_ide
7784------
7785:py:func:`pw_ide.settings.PigweedIdeSettings.compdb_searchpaths` now accepts
7786globs. The new :py:func:`pw_ide.settings.PigweedIdeSettings.targets_exclude`
7787method lets you specify a list of GN targets that code analysis should ignore.
7788
7789* `Support comp DB search path globs
7790  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200908>`__
7791* `Move status_reporter to pw_cli
7792  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201113>`__
7793* `Support including and/or excluding targets
7794  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195975>`__
7795
7796pw_libc
7797-------
7798* `Include strncpy
7799  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199110>`__
7800  (issue `#316936782 <https://issues.pigweed.dev/issues/316936782>`__)
7801
7802pw_log
7803------
7804* `Follow Soong guidelines
7805  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197536>`__
7806  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7807
7808pw_log_basic
7809------------
7810* `Fix Soong definitions
7811  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199034>`__
7812  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7813
7814pw_log_null
7815-----------
7816* `Define as cc_static_library
7817  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199090>`__
7818  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7819
7820pw_log_tokenized
7821----------------
7822* `Define as cc_static_library
7823  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198735>`__
7824  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7825
7826pw_minimal_cpp_stdlib
7827---------------------
7828* `Clarify purpose
7829  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200792>`__
7830
7831pw_module
7832---------
7833* `Jinja template refactor
7834  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201751>`__
7835* `Overwrite prompt with diff display
7836  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201851>`__
7837* `Allow nesting Pigweed modules in subdirectories
7838  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201114>`__
7839* `Add OWNERS file during module creation
7840  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200831>`__
7841
7842pw_multibuf
7843-----------
7844* `Replace Mutex with ISL
7845  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200996>`__
7846* `Define as cc_static_library
7847  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199091>`__
7848  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7849
7850pw_polyfill
7851-----------
7852* `Define as cc_static_library
7853  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199094>`__
7854  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7855* `Simplify backported features table
7856  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197891>`__
7857
7858pw_preprocessor
7859---------------
7860* `Define as cc_static_library
7861  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199031>`__
7862  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7863
7864pw_presubmit
7865------------
7866Pigweed's main docs builder now builds the :ref:`examples <seed-0122-examples>`
7867repo; the examples will be available at ``https://pigweed.dev/examples``.
7868An experimental complete Doxygen API reference is now being published to
7869``https://pigweed.dev/doxygen``.
7870
7871* `Include examples repo docs in docs_builder
7872  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201990>`__
7873  (issue `#300317433 <https://issues.pigweed.dev/issues/300317433>`__)
7874* `Move plural()
7875  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201630>`__
7876* `Include doxygen html in docs_build
7877  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198553>`__
7878* `Refactor Python Black formatter support
7879  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194417>`__
7880* `Refactor Bazel formatter support
7881  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194416>`__
7882* `Refactor GN formatting support
7883  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194415>`__
7884  (issue `#326309165 <https://issues.pigweed.dev/issues/326309165>`__)
7885* `Make ToolRunner capture stdout/stderr by default
7886  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200972>`__
7887* `Update buildifier invocation
7888  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200350>`__
7889* `Switch format test data to importlib
7890  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200790>`__
7891* `Skip gn_teensy_build on mac-arm64
7892  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199670>`__
7893
7894pw_protobuf
7895-----------
7896* `Support full java protos
7897  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200530>`__
7898  (issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__)
7899
7900pw_python
7901---------
7902* `Update setup.sh requirements
7903  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200994>`__
7904
7905pw_result
7906---------
7907* `Avoid duplicate symbols with Soong
7908  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201277>`__
7909  (issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__)
7910* `Define as cc_static_library
7911  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199033>`__
7912  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7913
7914pw_router
7915---------
7916* `Define as cc_static_library
7917  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199130>`__
7918  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7919* `Add Android common backends as dep
7920  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198390>`__
7921  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7922
7923pw_rpc
7924------
7925* `List dependencies directly
7926  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199533>`__
7927  (issue `#331226283 <https://issues.pigweed.dev/issues/331226283>`__)
7928
7929pw_rpc_transport
7930----------------
7931* `Define as cc_static_library
7932  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199093>`__
7933  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7934
7935pw_span
7936-------
7937* `Define as cc_static_library
7938  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199032>`__
7939  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7940
7941pw_spi
7942------
7943* `Update OWNERS
7944  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__
7945* `Update OWNERS
7946  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
7947
7948pw_spi_linux
7949------------
7950Linux functionality that was previously in :ref:`module-pw_spi` has been
7951moved to its own module, :ref:`module-pw_spi_linux`.
7952
7953* `Move linux_spi from pw_spi to its own module
7954  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201351>`__
7955
7956pw_status
7957---------
7958The new ``pw::StatusWithSize::size_or()`` convenience method lets you return
7959a default size in place of ``pw::StatusWithSize::size()`` when the status is
7960not OK.
7961
7962* `Add StatusWithSize::size_or
7963  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198151>`__
7964
7965pw_stream_shmem_mcuxpresso
7966--------------------------
7967* `Fix interrupt pending check
7968  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198070>`__
7969  (issue `#330225861 <https://issues.pigweed.dev/issues/330225861>`__)
7970
7971pw_sync
7972-------
7973* `Follow Soong guidelines
7974  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197872>`__
7975  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7976
7977pw_sys_io
7978---------
7979* `Update OWNERS
7980  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__
7981* `Fix Soong definitions
7982  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199034>`__
7983  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7984
7985pw_thread
7986---------
7987* `Follow Soong guidance
7988  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199030>`__
7989  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
7990
7991pw_toolchain
7992------------
7993
7994
7995* `Fix Rust GN host build
7996  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201831>`__
7997* `Define as cc_static_library
7998  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198734>`__
7999  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
8000* `Remove unusued source set
8001  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200190>`__
8002  (issue `#331260098 <https://issues.pigweed.dev/issues/331260098>`__)
8003* `LLVM compiler-rt builtins
8004  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198593>`__
8005
8006pw_trace_tokenized
8007------------------
8008* `Fix static initialization
8009  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200232>`__
8010
8011pw_transfer
8012-----------
8013New ``pw_transfer`` macros:
8014:c:macro:`PW_TRANSFER_LOG_DEFAULT_CHUNKS_BEFORE_RATE_LIMIT`,
8015:c:macro:`PW_TRANSFER_LOG_DEFAULT_RATE_PERIOD_MS`,
8016:c:macro:`PW_TRANSFER_CONFIG_LOG_LEVEL`, and
8017:c:macro:`PW_TRANSFER_CONFIG_DEBUG_DATA_CHUNKS`.
8018
8019* `Make numerous logging adjustments
8020  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194750>`__
8021
8022pw_uart
8023-------
8024The new :ref:`module-pw_uart` module defines core methods for UART
8025communication.
8026
8027* `Create OWNERS
8028  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200750>`__
8029* `Added UART interface
8030  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181710>`__
8031
8032pw_unit_test
8033------------
8034* `Add failing results test record
8035  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197852>`__
8036
8037pw_web
8038------
8039* `NPM version bump to 0.0.17
8040  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201091>`__
8041* `Fix logs not appearing in pw_console server
8042  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200793>`__
8043  (issue `#331483789 <https://issues.pigweed.dev/issues/331483789>`__)
8044
8045Build
8046=====
8047
8048Bazel
8049-----
8050* `Add missing Python deps
8051  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199850>`__
8052  (issue `#331267896 <https://issues.pigweed.dev/issues/331267896>`__)
8053* `Localize remaining backend label flags
8054  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199036>`__
8055  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8056
8057Docs
8058====
8059* `Mention that Windows flow needs admin rights
8060  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202030>`__
8061* `Update reST style guide
8062  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201650>`__
8063* `Organize the documentation style guides
8064  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201116>`__
8065* `Update references to quickstart/bazel
8066  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200131>`__
8067  (issue `#325472122 <https://issues.pigweed.dev/issues/325472122>`__)
8068* `Simplify module creation docs using script
8069  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200231>`__
8070* `Generate doxygen html output locally
8071  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199711>`__
8072* `Update changelog
8073  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198810>`__
8074
8075SEEDs
8076=====
8077* (SEED-0117) `Update status to Last Call
8078  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200710>`__
8079* (SEED-0126) `Claim SEED number
8080  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200911>`__
8081* (SEED-0127) `Reading sensor data
8082  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198134>`__
8083
8084Third party
8085===========
8086* (Emboss) `Assume newer emboss version 2/2
8087  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197363>`__
8088  (issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__)
8089* (FreeRTOS) `Fix typo in docs
8090  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201330>`__
8091* (Fuchsia) `Copybara import
8092  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200712>`__
8093  (issue `#331281133 <https://issues.pigweed.dev/issues/331281133>`__)
8094
8095Miscellaneous
8096=============
8097* `Delete move constructors of buffer wrappers
8098  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200753>`__
8099* (Soong) `Remove _headers from lib names
8100  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198330>`__
8101  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
8102* (mbedtls) `Avoid the use of unsupported libc functions
8103  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199131>`__
8104  (issue `#316936782 <https://issues.pigweed.dev/issues/316936782>`__)
8105* (nanopb) `Fix nanopb_pb2.py generation
8106  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200772>`__
8107
8108------------
8109Mar 22, 2024
8110------------
8111Highlights (Mar 7, 2024 to Mar 22, 2024):
8112
8113* Pigweed's minimum supported Python version was changed to 3.10.
8114* Setting the new ``pw_build_TEST_TRANSITIVE_PYTHON_DEPS`` flag to ``false``
8115  in your project's ``.gn`` file turns off testing and linting of transitive
8116  dependencies in ``pw_python_package`` rules, which can speed up build
8117  times significantly.
8118* The new :ref:`module-pw_log_android` module is a ``pw_log`` backend for
8119  Android and the new :ref:`module-pw_build_android` module provides tools to
8120  help build Pigweed in Android platform applications.
8121* :ref:`seed-0120` introduces ``pw_sensor``, a module that will handle
8122  Pigweed's upcoming sensor framework.
8123* The new :c:macro:`PW_LOG_EVERY_N` and :c:macro:`PW_LOG_EVERY_N_DURATION`
8124  macros provide rate-limited logging.
8125
8126Active SEEDs
8127============
8128Help shape the future of Pigweed! Please visit :ref:`seed-0000`
8129and leave feedback on the RFCs (i.e. SEEDs) marked
8130``Open for Comments``.
8131
8132Modules
8133=======
8134
8135pw_allocator
8136------------
8137.. _//pw_allocator/examples: https://cs.opensource.google/pigweed/pigweed/+/main:pw_allocator/examples
8138
8139The :ref:`module-pw_allocator` docs have been revamped. Code examples from
8140the docs are now extracted from complete examples that are built and tested
8141alongside the rest of the main Pigweed repo; see `//pw_allocator/examples`_.
8142
8143* `Improve size report accuracy
8144  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196492>`__
8145* `Add buffer utilities
8146  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195353>`__
8147* `Improve UniquePtr ergonomics
8148  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196181>`__
8149* `Various API modifications
8150  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195973>`__
8151* `Add IsEqual
8152  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195954>`__
8153* `Soft-deprecate heap_viewer.py
8154  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195253>`__
8155  (issue `#328648868 <https://issues.pigweed.dev/issues/328648868>`__)
8156* `Move code snippets from docs to examples
8157  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195190>`__
8158  (issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__)
8159* `Clean up sources files
8160  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194948>`__
8161* `Remove erroneous quotes around tagline
8162  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195514>`__
8163* `Refactor code size reports
8164  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194947>`__
8165* `Remove metrics.cc
8166  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195450>`__
8167  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
8168* `Fix move semantics for UniquePtr
8169  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195470>`__
8170* `Refactor docs
8171  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194871>`__
8172  (issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__)
8173* `Make metrics configurable
8174  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193621>`__
8175  (issue `#326509341 <https://issues.pigweed.dev/issues/326509341>`__)
8176
8177pw_assert
8178---------
8179* `Add keep_dep tags to backend_impl
8180  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197531>`__
8181  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8182* `Introduce :backend, :backend_impl
8183  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196531>`__
8184  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8185* `Apply formatting fixes
8186  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195951>`__
8187
8188pw_assert_basic
8189---------------
8190* `Fix BUILD.bazel file
8191  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196292>`__
8192  (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
8193
8194pw_bluetooth
8195------------
8196* `Add command complete event
8197  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196030>`__
8198  (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
8199* `Add command complete event
8200  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195451>`__
8201  (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
8202* `Add H4 packet indicators in emboss
8203  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195535>`__
8204  (issue `#326499682 <https://issues.pigweed.dev/issues/326499682>`__)
8205* `Reformat l2cap_frames.emb
8206  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194790>`__
8207
8208pw_bluetooth_sapphire
8209---------------------
8210* `Use amd64 SDK
8211  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197510>`__
8212  (issue `#330214852 <https://issues.pigweed.dev/issues/330214852>`__)
8213* `Fuchsia SDK example
8214  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__
8215  (issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__)
8216
8217pw_build
8218--------
8219Setting the new ``pw_build_TEST_TRANSITIVE_PYTHON_DEPS`` flag to ``false``
8220in your project's ``.gn`` file turns off testing and linting of transitive
8221dependencies in ``pw_python_package`` rules, which can speed up build
8222times significantly.
8223
8224* `Option to not transitively run py .tests and .lint deps
8225  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186195>`__
8226
8227pw_build_android
8228----------------
8229The new :ref:`module-pw_build_android` module provides tools to help build
8230Pigweed in Android platform applications.
8231
8232* `Add new utils module
8233  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195139>`__
8234  (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__)
8235
8236pw_bytes
8237--------
8238The new :cpp:func:`pw::bytes::ExtractBits` helper extracts bits between
8239specified left bit and right bit positions. New Rust helpers were added;
8240see `Crate pw_bytes <./rustdoc/pw_bytes>`_.
8241
8242* `Add ExtractBits template
8243  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196310>`__
8244  (issue `#329435173 <https://issues.pigweed.dev/issues/329435173>`__)
8245* `Add Rust helpers for contcatenating const slices and strs
8246  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187651>`__
8247
8248pw_channel
8249----------
8250Datagram-to-byte conversions must now be explicit.
8251
8252* `Enable GetWriteAllocator function
8253  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197534>`__
8254* `Require explicit datagram-to-byte conversions
8255  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197650>`__
8256* `Remove max_bytes argument from ReadPoll
8257  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197352>`__
8258* `Support datagram-to-byte conversions
8259  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196210>`__
8260* `Handle closed channels in base
8261  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194739>`__
8262
8263pw_checksum
8264-----------
8265* `Add missing #include <array>
8266  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196530>`__
8267  (issue `#329594026 <https://issues.pigweed.dev/issues/329594026>`__)
8268
8269pw_chre
8270-------
8271* `Remove unused files
8272  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170792>`__
8273
8274pw_containers
8275-------------
8276* `ConstexprSort in FlatMap takes an iterator
8277  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197217>`__
8278  (issue `#330072104 <https://issues.pigweed.dev/issues/330072104>`__)
8279* `Add move constructors to queues
8280  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197072>`__
8281
8282pw_digital_io_linux
8283-------------------
8284The new ``pw_digital_io_linux`` CLI tool lets you configure a GPIO line as an
8285input and gets its value, or configure a line as an output and set its value.
8286
8287* `Add Android.bp
8288  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194432>`__
8289* `Add test CLI
8290  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194431>`__
8291
8292pw_docgen
8293---------
8294* `Single-source the module metadata
8295  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193333>`__
8296  (issue `#292582625 <https://issues.pigweed.dev/issues/292582625>`__)
8297
8298pw_env_setup
8299------------
8300Pigweed's minimum supported Python version was changed to 3.10.
8301
8302* `Update min Python version to 3.10
8303  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197332>`__
8304  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
8305* `Update CIPD rust version
8306  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194620>`__
8307* `Use amd64 SDK
8308  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197510>`__
8309  (issue `#330214852 <https://issues.pigweed.dev/issues/330214852>`__)
8310* `Fuchsia SDK example
8311  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__
8312  (issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__)
8313
8314pw_format
8315---------
8316Initital support for untyped specifiers (``%v``) was added.
8317
8318* `Enhance Rust tests to check for arguments
8319  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196433>`__
8320  (issue `#329507809 <https://issues.pigweed.dev/issues/https://pwbug.dev/329507809>`__)
8321* `Add initial support for untyped specifiers
8322  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187650>`__
8323
8324pw_hdlc
8325-------
8326The newly public :cpp:class:`pw::hdlc::Encoder` class supports gradually
8327encoding frames without ever holding an entire frame in memory at once.
8328
8329* `Expose Encoder
8330  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197535>`__
8331
8332pw_hex_dump
8333-----------
8334CMake support was added.
8335
8336* `Add CMake support
8337  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198170>`__
8338
8339pw_json
8340-------
8341* `Move examples outside of the pw namespace
8342  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195890>`__
8343
8344pw_libc
8345-------
8346* `Define LIBC_FAST_MATH for the faster integral fixed point sqrt
8347  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196350>`__
8348  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
8349* `Add uksqrtui to stdfix
8350  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196230>`__
8351  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
8352* `Include sqrtur and expk in stdfix
8353  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195256>`__
8354  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
8355
8356pw_log
8357------
8358The new :c:macro:`PW_LOG_EVERY_N` and :c:macro:`PW_LOG_EVERY_N_DURATION`
8359macros provide rate-limited logging.
8360
8361* `Add rate limit log statements
8362  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183870>`__
8363* `Add keep_dep tags to backend_impl
8364  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197531>`__
8365  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8366* `Introduce localized backend label flags
8367  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196498>`__
8368  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8369* `Run bpfmt on all Android.bp
8370  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195490>`__
8371  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
8372
8373pw_log_android
8374--------------
8375The new :ref:`module-pw_log_android` module is a ``pw_log`` backend for
8376Android.
8377
8378* `Fix Soong build
8379  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197830>`__
8380* `Add pw_log_android_stderr
8381  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195050>`__
8382  (issue `#328281789 <https://issues.pigweed.dev/issues/328281789>`__)
8383* `Add module documentation
8384  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196410>`__
8385
8386pw_malloc
8387---------
8388* `Add backend label flags
8389  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196610>`__
8390  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8391
8392pw_multibuf
8393-----------
8394:cpp:class:`pw::multibuf::Stream` is a new multibuf-backed ``pw_stream``
8395implementation that can read from and write to a multibuf.
8396:cpp:class:`pw::multibuf::SimpleAllocator` is a simple, first-fit variant
8397of :cpp:class:`pw::multibuf::MultiBufAllocator`.
8398
8399* `Add stream implementation
8400  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196354>`__
8401* `Add empty() function
8402  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197351>`__
8403* `Pass reference instead of pointer
8404  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197132>`__
8405* `Add SimpleAllocator
8406  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195129>`__
8407
8408pw_package
8409----------
8410* `Match Emboss version used by Bazel
8411  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197359>`__
8412  (issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__)
8413
8414pw_polyfill
8415-----------
8416* `Update __cplusplus macro for C++23; support C
8417  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196113>`__
8418* `Remove PW_INLINE_VARIABLE
8419  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196122>`__
8420* `Detect C23
8421  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195266>`__
8422  (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__)
8423
8424pw_presubmit
8425------------
8426* `Suppress stdout option for rst_format
8427  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197890>`__
8428* `Begin formatter modularization
8429  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193714>`__
8430  (issue `#326309165 <https://issues.pigweed.dev/issues/326309165>`__)
8431* `Switch default formatter to black
8432  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190453>`__
8433  (issue `#261025545 <https://issues.pigweed.dev/issues/261025545>`__)
8434* `Fuchsia SDK example
8435  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__
8436  (issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__)
8437
8438pw_rpc
8439------
8440* `Support full java protos
8441  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196231>`__
8442  (issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__)
8443* `Move some headers from srcs to hdrs
8444  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196850>`__
8445  (issue `#323749176 <https://issues.pigweed.dev/issues/323749176>`__)
8446* `Add TryFinish API for pw_rpc stream
8447  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195126>`__
8448  (issue `#328462705 <https://issues.pigweed.dev/issues/328462705>`__)
8449* `Remove deprecated functions from Java client
8450  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193503>`__
8451
8452pw_rust
8453-------
8454* `Tweak docs for Rust tokenized logging example
8455  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195351>`__
8456
8457pw_sensor
8458---------
8459:ref:`seed-0120` introduces ``pw_sensor``, a module that will handle
8460Pigweed's upcoming sensor framework.
8461
8462* `Add configuration SEED
8463  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183150>`__
8464
8465pw_spi
8466------
8467* `Update Android.bp to conform with new style
8468  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197410>`__
8469
8470pw_stream_shmem_mcuxpresso
8471--------------------------
8472* `Fix interrupt pending check
8473  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198070>`__
8474  (issue `#330225861 <https://issues.pigweed.dev/issues/330225861>`__)
8475
8476pw_sync_stl
8477-----------
8478* `Android.bp: Add missing dependency on pw_sync_headers
8479  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197030>`__
8480
8481pw_sys_io
8482----------
8483* `Add backend label flags
8484  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196610>`__
8485  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8486
8487pw_sys_io_rp2040
8488----------------
8489* `Use callbacks to block on input
8490  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191490>`__
8491  (issue `#324633376 <https://issues.pigweed.dev/issues/324633376>`__)
8492
8493pw_sys_io_stm32cube
8494-------------------
8495* `Fix build for f0xx, f1xx and f3xx families
8496  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195871>`__
8497
8498pw_thread_zephyr
8499-----------------
8500* `Apply formatting fixes
8501  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195951>`__
8502
8503pw_tokenizer
8504------------
8505The Rust library's hashing code was updated to support multi-input hashing.
8506
8507* `Refactor Rust hash code to allow multi-input hashing
8508  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186310>`__
8509
8510pw_transfer
8511-----------
8512The TypeScript client now has an ``abort()`` method for ending a transfer
8513without a completion chunk and a ``terminate()`` method for ending a transfer
8514with a completion chunk.
8515
8516* `Inline TRANSFER_CLIENT_DEPS
8517  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198592>`__
8518* `Support full java protos
8519  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196231>`__
8520  (issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__)
8521* `Add abort() and terminate() apis
8522  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194910>`__
8523* `Update the proxy to only consider transfer chunks
8524  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196170>`__
8525* `Fix Java client timeouts in terminating state
8526  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195123>`__
8527
8528pw_unit_test
8529------------
8530The new :cpp:class:`pw::unit_test::TestRecordEventHandler` class is a
8531predefined event handler that outputs a test summary in Chromium JSON Test
8532Results format.
8533
8534* `Flag to disable cmake pw_add_test calls
8535  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197530>`__
8536  (issue `#330205620 <https://issues.pigweed.dev/issues/330205620>`__)
8537* `Add duplicate test case
8538  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197170>`__
8539* `Localize the label flags
8540  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196670>`__
8541  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8542* `Add test record event handler
8543  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194050>`__
8544* `Adding googletest_handler_adapter to cmake
8545  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195070>`__
8546
8547pw_watch
8548--------
8549Changes to Emboss files now trigger rebuilds.
8550
8551* `Add emboss files to default watch patterns
8552  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195387>`__
8553
8554pw_web
8555------
8556* `NPM version bump to 0.0.16
8557  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198291>`__
8558* `Update createLogViewer to use union types
8559  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198210>`__
8560  (issue `#330564978 <https://issues.pigweed.dev/issues/330564978>`__)
8561* `Include file information in browser logs
8562  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196510>`__
8563  (issue `#329680229 <https://issues.pigweed.dev/issues/329680229>`__)
8564* `NPM version bump to 0.0.15
8565  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196120>`__
8566
8567Build
8568=====
8569
8570Bazel
8571-----
8572The new :ref:`module-pw_build-bazel-pw_facade` Bazel macro makes it easier
8573to create a :ref:`facade <docs-facades>`.
8574
8575* `Remove the deprecated pw_cc_facade macro
8576  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196121>`__
8577  (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
8578* `Treat Rust warnings as errors
8579  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196436>`__
8580  (issue `#329685244 <https://issues.pigweed.dev/issues/https://pwbug.dev/329685244>`__)
8581* `Localize backend label flags
8582  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196232>`__
8583  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8584* `Use pw_facade
8585  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195383>`__
8586  (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
8587* `Introduce pw_facade
8588  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193648>`__
8589  (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__)
8590* `Fix bazel query
8591  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195138>`__
8592
8593Language support
8594================
8595
8596Python
8597------
8598* `Use future annotations
8599  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198570>`__
8600* `Use future annotations
8601  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198051>`__
8602* `Remove PathOrStr variables
8603  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197538>`__
8604* `Switch from typing.Optional[...] to "... | None"
8605  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197347>`__
8606  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
8607* `Switch from typing.Union to "|"
8608  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197346>`__
8609  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
8610* `Use argparse.BooleanOptionalAction
8611  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197345>`__
8612  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
8613* `Use pathlib.Path.is_relative_to()
8614  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197344>`__
8615  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
8616* `Switch from typing.Dict to dict
8617  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197343>`__
8618  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
8619* `Switch from typing.Tuple to tuple
8620  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197342>`__
8621  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
8622* `Switch from typing.List to list
8623  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197341>`__
8624  (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__)
8625
8626OS support
8627==========
8628
8629Zephyr
8630------
8631* `Add action for installing Zephyr SDK
8632  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194629>`__
8633
8634Docs
8635====
8636The new :ref:`CLI style guide <docs-pw-style-cli>` outlines how CLI utilities
8637in upstream Pigweed should behave.
8638
8639.. todo-check: disable
8640
8641* `Add CLI style guide
8642  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197010>`__
8643  (issue `#329532962 <https://issues.pigweed.dev/issues/329532962>`__)
8644* `Move TODO style guide
8645  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197730>`__
8646* `Fix redirect paths
8647  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197368>`__
8648  (issue `#324241028 <https://issues.pigweed.dev/issues/324241028>`__)
8649* `Fix code-block indentation
8650  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197533>`__
8651* `Add redirects infrastructure and docs contributor section
8652  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197339>`__
8653  (issue `#324241028 <https://issues.pigweed.dev/issues/324241028>`__)
8654* `Fix some incorrect target names
8655  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196495>`__
8656  (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__)
8657* `Fix mentions of sample_project
8658  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195974>`__
8659  (issue `#322859039 <https://issues.pigweed.dev/issues/322859039>`__)
8660* `TOC entry for API documentation from source
8661  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195970>`__
8662* `Update changelog
8663  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195354>`__
8664
8665.. todo-check: enable
8666
8667Third party
8668===========
8669* `Minor build file formatting fixes
8670  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197369>`__
8671* (Emboss) `Assume newer emboss version 1/2
8672  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197362>`__
8673  (issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__)
8674* (STM32Cube) `Fix bazel hal driver build
8675  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195870>`__
8676
8677-----------
8678Mar 7, 2024
8679-----------
8680Highlights (Feb 22, 2024 to Mar 7, 2024):
8681
8682* The new :ref:`module-pw_digital_io_linux` module is a
8683  :ref:`module-pw_digital_io` backend for Linux userspace.
8684* :cpp:class:`pw::multibuf::MultiBufAllocator` class is a new interface
8685  for allocating ``pw::multibuf::MultiBuf`` objects.
8686* The ``pw_web`` log viewer now captures browser console logs. It also
8687  now supports creating log stores and downloading logs from stores.
8688
8689Active SEEDs
8690============
8691Help shape the future of Pigweed! Please visit :ref:`seed-0000`
8692and leave feedback on the RFCs (i.e. SEEDs) marked
8693``Open for Comments``.
8694
8695Modules
8696=======
8697
8698pw_allocator
8699------------
8700* `Remove split_free_list_allocator.cc from Android.bp
8701  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194551>`__
8702* `Add missing dep
8703  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194231>`__
8704* `Use BlockAllocator instead of alternatives
8705  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188354>`__
8706* `Make TrackingAllocator correct by construction
8707  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193330>`__
8708
8709pw_assert_log
8710-------------
8711* `Depend on pw_log_headers in Android.bp
8712  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194434>`__
8713* `Fix PW_HANDLE_CRASH to handle 0 args
8714  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194450>`__
8715  (issue `#327201811 <https://issues.pigweed.dev/issues/327201811>`__)
8716
8717pw_async2
8718---------
8719* `Address post-submit comments
8720  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194693>`__
8721* `Add converting constructors to Poll
8722  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193593>`__
8723
8724pw_blob_store
8725-------------
8726* `Set module name to BLOB
8727  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195170>`__
8728
8729pw_bluetooth
8730------------
8731* `Add hci_data.emb
8732  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194631>`__
8733  (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
8734* `Add ISO feature bit to controllers
8735  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194550>`__
8736* `Add ISO definitions to Controller
8737  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194470>`__
8738
8739pw_build
8740--------
8741* `Remove FUZZTEST_OPTS
8742  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189317>`__
8743* `Fix ProjectBuilder recipe percentage
8744  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194392>`__
8745
8746pw_config_loader
8747----------------
8748* `Support custom overloading rules
8749  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190833>`__
8750
8751pw_containers
8752-------------
8753* `Rename VariableLengthEntryQueue
8754  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187311>`__
8755* `Rename VariableLengthEntryQueue files
8756  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187310>`__
8757* `VariableLengthEntryQueue C++ API
8758  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169910>`__
8759
8760pw_digital_io_linux
8761-------------------
8762The new :ref:`module-pw_digital_io_linux` module is a
8763:ref:`module-pw_digital_io` backend for Linux userspace.
8764
8765* `Introduce new module
8766  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194430>`__
8767
8768pw_json
8769-------
8770* `Update example; fix typo and declaration order
8771  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194411>`__
8772
8773pw_libc
8774-------
8775* `Add stdfix target
8776  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194628>`__
8777  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
8778* `Facilitate next llvm-libc roll
8779  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194603>`__
8780
8781pw_log
8782------
8783* `Fix stdout race in println_backend_test_test
8784  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195122>`__
8785  (issue `#328498798 <https://issues.pigweed.dev/issues/328498798>`__)
8786* `Add tests for Rust printf and println backends
8787  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194952>`__
8788* `Show child docs in site nav
8789  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193830>`__
8790* `Fix the Pigweed Soong build
8791  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193690>`__
8792  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
8793
8794pw_module
8795---------
8796* `Remove README.md check
8797  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194934>`__
8798  (issue `#328265397 <https://issues.pigweed.dev/issues/328265397>`__)
8799
8800pw_multibuf
8801-----------
8802The new :cpp:class:`pw::multibuf::MultiBufAllocator` class is an interface
8803for allocating ``pw::multibuf::MultiBuf`` objects.
8804
8805* `Add MultiBufAllocator interface
8806  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180840>`__
8807* `Deduplicate const+non_const iterators
8808  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194405>`__
8809* `Clean up API
8810  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194600>`__
8811  (issue `#327673957 <https://issues.pigweed.dev/issues/327673957>`__)
8812* `Add +=N and +n operators to iterator
8813  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194310>`__
8814* `Add slicing operations to MultiBuf
8815  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192895>`__
8816
8817pw_presubmit
8818------------
8819* `Remove unused presubmit step
8820  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194940>`__
8821
8822pw_proto_compiler
8823-----------------
8824* `strip_import_prefix + options
8825  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194949>`__
8826  (issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__)
8827
8828pw_result
8829---------
8830* `Add constructor deduction guide
8831  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194612>`__
8832
8833pw_rpc
8834------
8835The newly public :cpp:class:`pw::rpc::CloseAndWaitForCallbacks` function
8836abandons an RPC and blocks on the completion of any running callbacks.
8837
8838* `Expose CloseAndWaitForCallbacks in client call API
8839  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194697>`__
8840
8841pw_rpc_transport
8842----------------
8843* `Add log for no packet available
8844  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194592>`__
8845
8846pw_rust
8847-------
8848* `Add Rust tokenized logging example
8849  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181268>`__
8850
8851pw_stream_uart_mcuxpresso
8852-------------------------
8853``pw_stream_uart_mcuxpresso`` now supports direct memory access reads and
8854writes.
8855
8856* `Fix code examples in docs
8857  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194630>`__
8858* `Implement DoRead DMA
8859  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192893>`__
8860  (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
8861* `Implement DoWrite DMA
8862  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192892>`__
8863  (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
8864* `Implement init / deinit
8865  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192891>`__
8866  (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
8867* `USART DMA scaffolding
8868  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192890>`__
8869  (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__)
8870
8871pw_string
8872---------
8873``pw::InlineByteString`` is a new alias of ``pw::InlineBasicString<std::byte>``
8874that can be used as a simple and efficient byte container.
8875
8876* `Add ToString for Result and Poll
8877  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194621>`__
8878* `Support InlineBasicString<std::byte>; InlineByteString alias
8879  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194710>`__
8880  (issue `#327497061 <https://issues.pigweed.dev/issues/327497061>`__)
8881
8882pw_sync
8883-------
8884* `Allow implict conversion when moving BorrowedPointer
8885  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194394>`__
8886
8887pw_tokenizer
8888------------
8889* `Fix missing bazel filegroup
8890  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194399>`__
8891* `Add Detokenizer constructor with elf binary section
8892  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190650>`__
8893* `Add code size optimization to Rust implementation
8894  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193504>`__
8895
8896pw_toolchain_bazel
8897------------------
8898* `Apply more common attrs to cc_toolchain targets
8899  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194890>`__
8900* `Support Windows in toolchain template build files
8901  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194591>`__
8902
8903pw_transfer
8904-----------
8905* `Respect user-specified resource size
8906  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194935>`__
8907* `Temporarily disable broken integration test
8908  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194850>`__
8909* `Only request a single chunk in test
8910  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194151>`__
8911  (issue `#323386167 <https://issues.pigweed.dev/issues/323386167>`__)
8912* `Fix WindowPacketDropper proxy filter
8913  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194030>`__
8914  (issue `#322497823 <https://issues.pigweed.dev/issues/322497823>`__)
8915
8916pw_unit_test
8917------------
8918The :ref:`module-pw_unit_test` docs have been revamped. Using the full upstream
8919GoogleTest backend with ``simple_printing_main`` in Bazel has been fixed.
8920
8921* `Update docs
8922  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193671>`__
8923* `Fix googletest backend
8924  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190593>`__
8925  (issue `#324116813 <https://issues.pigweed.dev/issues/324116813>`__)
8926
8927pw_watch
8928--------
8929``pw_watch`` now rebuilds when Bazel files are changed.
8930
8931* `Add bazel files to default watch patterns
8932  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195310>`__
8933  (issue `#328619290 <https://issues.pigweed.dev/issues/328619290>`__)
8934
8935pw_web
8936------
8937The ``pw_web`` log viewer now captures browser console logs. It also
8938now supports creating log stores and downloading logs from stores.
8939
8940* `Capture browser logs in the log viewer
8941  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194451>`__
8942  (issue `#325096768 <https://issues.pigweed.dev/issues/325096768>`__)
8943* `Create log store and enable download logs from it
8944  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186874>`__
8945  (issue `#316966729 <https://issues.pigweed.dev/issues/316966729>`__)
8946
8947Bazel
8948-----
8949* `Update rust_crates in Bazel WORKSPACE
8950  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194938>`__
8951* `Mark more targets testonly
8952  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193626>`__
8953  (issue `#324116813 <https://issues.pigweed.dev/issues/324116813>`__)
8954
8955Docs
8956====
8957The new :ref:`protobuf style guide <docs-pw-style-protobuf>` describes how
8958protobufs should be styled throughout Pigweed.
8959
8960* `Add protobuf style guide
8961  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190723>`__
8962  (issue `#232867615 <https://issues.pigweed.dev/issues/232867615>`__)
8963* `Clarify that Pigweed doesn't support msan
8964  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194877>`__
8965  (issue `#234876100 <https://issues.pigweed.dev/issues/234876100>`__)
8966* `Clarify rvalue docs
8967  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194696>`__
8968* `Reorder tocdepth and title
8969  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193970>`__
8970* `Prefer rvalue references
8971  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193647>`__
8972* `Update changelog
8973  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193620>`__
8974
8975Third party
8976===========
8977* `Android.bp: Export fuchsia_sdk_lib_stdcompat headers
8978  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194370>`__
8979* (Emboss) `Support latest version of Emboss in GN
8980  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194876>`__
8981* (Emboss) `Add CMake support for emboss
8982  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194400>`__
8983  (issue `#326500136 <https://issues.pigweed.dev/issues/326500136>`__)
8984* (FreeRTOS) `Tidy up Bazel build
8985  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193633>`__
8986  (issue `#326625641 <https://issues.pigweed.dev/issues/326625641>`__)
8987* (FreeRTOS) `Create Bazel build template
8988  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193645>`__
8989  (issue `#326625641 <https://issues.pigweed.dev/issues/326625641>`__)
8990* (STM32Cube) `Build template formatting fixes
8991  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194723>`__
8992
8993Miscellaneous
8994=============
8995* `Unrecommendify
8996  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194852>`__
8997* `Clean up Python proto imports
8998  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193641>`__
8999  (issue `#241456982 <https://issues.pigweed.dev/issues/241456982>`__)
9000
9001------------
9002Feb 23, 2024
9003------------
9004Highlights (Feb 9, 2024 to Feb 23, 2024):
9005
9006* The new :ref:`module-pw_json` module provides classes for serializing JSON.
9007* Raspberry Pi RP2040 support was expanded, including a new
9008  ``pw::digital_io::Rp2040Config`` struct enables you to configure polarity for
9009  RP2040 GPIO pins, and a new ``pw::spi::Rp2040Initiator`` class which is a
9010  Pico SDK userspace implementation of Pigweed's SPI ``Initiator`` class.
9011* The new ``pw::spi::DigitalOutChipSelector`` class sets the state of a
9012  :ref:`module-pw_digital_io` output when activated.
9013* The :ref:`module-pw_kvs` docs were overhauled.
9014
9015Active SEEDs
9016============
9017Help shape the future of Pigweed! Please visit :ref:`seed-0000`
9018and leave feedback on the RFCs (i.e. SEEDs) marked
9019``Open for Comments``.
9020
9021Modules
9022=======
9023
9024pw_allocator
9025------------
9026* `Remove total_bytes metric
9027  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193251>`__
9028* `Expose TrackingAllocator's initialization state
9029  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192570>`__
9030
9031pw_assert
9032---------
9033* `Apply formatting changes
9034  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193496>`__
9035
9036pw_assert_log
9037-------------
9038* `Fix Soong rules
9039  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190602>`__
9040  (issue `#324266698 <https://issues.pigweed.dev/issues/324266698>`__)
9041* `Fix missing lib in soong rule
9042  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192259>`__
9043
9044pw_bluetooth
9045------------
9046* `Add Emboss rules to BUILD.bazel
9047  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192513>`__
9048* `Update emboss imports to match Bazel rule
9049  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192392>`__
9050
9051pw_build
9052--------
9053* `Silence warnings from linker script test
9054  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191850>`__
9055
9056pw_bytes
9057--------
9058* `Add missing export in soong rule
9059  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192257>`__
9060
9061pw_chrono_rp2040
9062----------------
9063* `Minor tweaks to documentation and test
9064  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183730>`__
9065  (issue `#303297807 <https://issues.pigweed.dev/issues/303297807>`__)
9066
9067pw_cli
9068------
9069* `Add exit codes
9070  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__
9071
9072pw_config_loader
9073----------------
9074The new ``skip_files__without_sections`` option enables you to just move on
9075to the next file rather than raise an exception if a relevant section doesn't
9076exist in a config file.
9077
9078* `Allow skipping files
9079  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191970>`__
9080
9081pw_containers
9082-------------
9083* `Add default move operator for FilteredView
9084  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192830>`__
9085* `Add move constructor to FiltertedView
9086  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191832>`__
9087
9088pw_digital_io_rp2040
9089--------------------
9090The new ``pw::digital_io::Rp2040Config`` struct enables you to configure
9091polarity for RP2040 GPIO pins.
9092
9093* `Config with polarity
9094  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176290>`__
9095  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
9096
9097pw_env_setup
9098------------
9099* `Use amd64 host tools on arm64
9100  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192763>`__
9101  (issue `#325498131 <https://issues.pigweed.dev/issues/325498131>`__)
9102
9103pw_function
9104-----------
9105The new ``//third_party/fuchsia:fit`` label flag enables Bazel-based projects
9106to provide an alternate implementation for ``fit()`` when needed.
9107
9108* `//third_party/fuchsia:fit label_flag
9109  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192391>`__
9110
9111pw_fuzzer
9112---------
9113* `Fix Bazel example, add presubmit test
9114  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191310>`__
9115  (issue `#324617297 <https://issues.pigweed.dev/issues/324617297>`__)
9116
9117pw_grpc
9118-------
9119* `Fix some minor bugs
9120  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191831>`__
9121
9122pw_hdlc
9123-------
9124* `Add android_library targets
9125  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__
9126  (issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__)
9127
9128pw_i2c
9129------
9130The API reference for :cpp:class:`pw::i2c::RegisterDevice` is now published on
9131``pigweed.dev``.
9132
9133* `Doxygenify RegisterDevice
9134  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191833>`__
9135
9136pw_ide
9137------
9138* `Fix environment inference
9139  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191371>`__
9140
9141pw_json
9142-------
9143The new :ref:`module-pw_json` module provides classes for serializing JSON.
9144
9145* `Classes for serializing JSON
9146  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190458>`__
9147
9148pw_kvs
9149------
9150The :ref:`module-pw_kvs` docs were overhauled.
9151
9152* `Follow new module docs guidelines
9153  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189430>`__
9154
9155pw_log
9156------
9157* `Add android_library targets
9158  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__
9159  (issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__)
9160
9161pw_log_android
9162--------------
9163* `Fix missing libs in soong rule
9164  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192258>`__
9165
9166pw_metric
9167---------
9168* `Fix Bazel build
9169  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190971>`__
9170  (issue `#258078909 <https://issues.pigweed.dev/issues/258078909>`__)
9171
9172pw_module
9173---------
9174* `Add exit codes
9175  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__
9176
9177pw_multibuf
9178-----------
9179* `Fix soong support
9180  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192894>`__
9181  (issue `#325320103 <https://issues.pigweed.dev/issues/325320103>`__)
9182
9183pw_package
9184----------
9185* `Update GoogleTest
9186  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193250>`__
9187* `Remove capture_output=True
9188  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192530>`__
9189
9190pw_preprocessor
9191---------------
9192The :ref:`module-pw_preprocessor` reference is now being generated via Doxygen.
9193
9194* `Do not check for __VA_OPT__ on older compilers
9195  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193434>`__
9196  (issue `#326135018 <https://issues.pigweed.dev/issues/326135018>`__)
9197* `Switch to Doxygen
9198  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192730>`__
9199* `Use __VA_OPT__ when available
9200  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187099>`__
9201
9202pw_presubmit
9203------------
9204.. todo-check: disable
9205
9206* `Allow markdown style TODOs and adjust rustdocs
9207  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192253>`__
9208  (issue `#315389119 <https://issues.pigweed.dev/issues/315389119>`__)
9209* `Log format --fix output
9210  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192394>`__
9211* `Fix formatting of TypeScript code
9212  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192393>`__
9213* `Disallow FIXME and recommend TODO
9214  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188367>`__
9215* `Allow pwbug.dev in TODOs
9216  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191795>`__
9217* `Allow Bazel issues in TODOs
9218  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190970>`__
9219
9220.. todo-check: disable
9221
9222.. _docs-changelog-20240226-pw_rpc:
9223
9224pw_rpc
9225------
9226``pw_rpc`` clients will once again accept unsolicited responses from ``pw_rpc``
9227servers that were built prior to September 2022. Unsolicited responses, also
9228known as "open" requests, let a server send a message to a client prior to the
9229client sending a request. This change fixed an incompatibility in which
9230``pw_rpc`` clients built after September 2022 would not accept unsolicited
9231responses from servers built before September 2022 (specifically,
9232change `#109077 <https://pwrev.dev/109077>`_).
9233
9234* `Remove use of deprecated Python API
9235  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187491>`__
9236  (issue `#306195999 <https://issues.pigweed.dev/issues/306195999>`__)
9237* `Add android_library targets
9238  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__
9239  (issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__)
9240* `Support legacy unsolicited responses
9241  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192311>`__
9242
9243pw_software_update
9244------------------
9245* `Add java build objects
9246  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193410>`__
9247
9248pw_spi
9249------
9250The new ``pw::spi::DigitalOutChipSelector`` class is an implementation of
9251``pw::spi::ChipSelector`` that sets the state of a :ref:`module-pw_digital_io`
9252output when activated.
9253
9254* `Add Android.bp
9255  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192590>`__
9256  (issue `#316067629 <https://issues.pigweed.dev/issues/316067629>`__)
9257* `DigitalOutChipSelector
9258  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192790>`__
9259  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
9260* `Correct full-duplex behavior of linux_spi
9261  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192591>`__
9262  (issue `#316067628 <https://issues.pigweed.dev/issues/316067628>`__)
9263
9264pw_spi_rp2040
9265-------------
9266The new ``pw::spi::Rp2040Initiator`` class is a Pico SDK userspace
9267implementation of Pigweed's SPI ``Initiator`` class.
9268
9269* `Initiator implementation
9270  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192791>`__
9271  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
9272
9273pw_stream
9274---------
9275* `Fix Pigweed build after sync
9276  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191250>`__
9277  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
9278
9279pw_string
9280---------
9281Debug error messages for assertions containing ``std::optional`` types have
9282been improved.
9283
9284* `Add ToString for std::optional
9285  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192514>`__
9286
9287pw_sync
9288-------
9289* `Add missing lib in soong rule
9290  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192260>`__
9291
9292pw_tokenizer
9293------------
9294The :ref:`module-pw_tokenizer` and :ref:`module-pw_snapshot` Python
9295libraries can now be used from Bazel as a result of the proto
9296migration. See issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__).
9297
9298* `Fix link breakage on linux
9299  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192511>`__
9300  (issue `#321306079 <https://issues.pigweed.dev/issues/321306079>`__)
9301* `Proto migration stage 5/5
9302  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191270>`__
9303  (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
9304* `Proto migration stage 3/5
9305  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189696>`__
9306  (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
9307* `Proto migration stage 1.5/5
9308  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191834>`__
9309  (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
9310* `Proto migration stage 1/5
9311  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191135>`__
9312  (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__)
9313
9314pw_toolchain
9315------------
9316* `Add missing #include
9317  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193430>`__
9318* `Rename `action_config_flag_sets` to `flag_sets`
9319  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192911>`__
9320* `Simplify macOS -nostdlib++ usage
9321  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192898>`__
9322* `Remove unnecessary toolchain arguments
9323  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192896>`__
9324* `Add missing macOS cxx_builtin_include_directories
9325  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192270>`__
9326  (issue `#324652164 <https://issues.pigweed.dev/issues/324652164>`__)
9327
9328pw_toolchain_bazel
9329------------------
9330* `Use llvm-libtool-darwin on macOS
9331  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190896>`__
9332  (issue `#297413805 <https://issues.pigweed.dev/issues/297413805>`__)
9333* `Explicitly depend on rules_cc
9334  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191430>`__
9335
9336pw_transfer
9337-----------
9338* `Add an android_library for the Java client
9339  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193534>`__
9340* `Change class to parser
9341  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193550>`__
9342* `Fix integration test START packet issue
9343  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192755>`__
9344  (issue `#322497491 <https://issues.pigweed.dev/issues/322497491>`__)
9345* `Add GetResourceStatus method
9346  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192810>`__
9347* `Limit test to sending a single chunk
9348  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192510>`__
9349* `Remove/hide deprecated handle interfaces
9350  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190972>`__
9351
9352pw_watch
9353--------
9354* `Add exit codes
9355  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__
9356
9357pw_web
9358------
9359The log viewer now supports multiple log sources.
9360
9361* `NPM version bump to 0.0.14
9362  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193510>`__
9363* `Enable multiple log sources
9364  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192370>`__
9365  (issue `#325096310 <https://issues.pigweed.dev/issues/325096310>`__)
9366
9367Build
9368=====
9369* `Fix docs build on mac-arm64
9370  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192910>`__
9371* `Use correct host_cpu when disabling docs on Arm Macs
9372  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192757>`__
9373* `Remove docs from default build on Arm Macs
9374  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192754>`__
9375  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
9376* `Build for Java 11
9377  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191830>`__
9378
9379Bazel
9380-----
9381* `Remove shallow_since attributes
9382  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193473>`__
9383* `Upgrade protobuf to 4.24.4
9384  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187431>`__
9385  (issue `#319717451 <https://issues.pigweed.dev/issues/319717451>`__)
9386
9387Targets
9388=======
9389* (rp2040) `Replace rp2040 target with rp2040_pw_system
9390  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192516>`__
9391* (rp2040) `Custom libusb backend
9392  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192630>`__
9393
9394OS support
9395==========
9396* (Zephyr) `Change the pinned Zephyr commit
9397  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192690>`__
9398* (Zephyr) `Add zephyr's west CLI
9399  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190547>`__
9400
9401Docs
9402====
9403`Breadcrumbs <https://en.wikipedia.org/wiki/Breadcrumb_navigation>`_ are now
9404shown at the top of all docs pages except the homepage.
9405
9406* `Add breadcrumbs
9407  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193508>`__
9408* `Fix incorrect module name in changelog
9409  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193331>`__
9410* `Fix canonical URLs for all */docs.html pages
9411  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193431>`__
9412* `Fix typo in facades documentation
9413  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192710>`__
9414* `Fix 404s
9415  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192251>`__
9416  (issue `#325086274 <https://issues.pigweed.dev/issues/325086274>`__)
9417
9418SEEDs
9419=====
9420* (SEED-0125) `Claim SEED number
9421  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192110>`__
9422* `Mark legacy Sensor SEED as Rejected
9423  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192250>`__
9424
9425Third party
9426===========
9427* `Roll FuzzTest and Abseil
9428  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189419>`__
9429
9430Miscellaneous
9431=============
9432* `Disable tests incompatible with rp2040
9433  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192764>`__
9434  (issue `#260624583 <https://issues.pigweed.dev/issues/260624583>`__)
9435* `Fix uses of std::chrono literals
9436  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192515>`__
9437* (pigweed.json) `Disallow Rosetta
9438  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188251>`__
9439  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
9440* (renode) `Update renode to latest daily build
9441  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192254>`__
9442
9443-----------
9444Feb 9, 2024
9445-----------
9446Highlights (Jan 26, 2024 to Feb 9, 2024):
9447
9448* The new :ref:`module-pw_grpc` module provides classes that map between
9449  ``pw_rpc`` packets and HTTP/2 gRPC frames, allowing ``pw_rpc`` services to
9450  be exposed as gRPC services.
9451* A lot of the remaining ``pw_toolchain_bazel`` feature work from
9452  :ref:`seed-0113` was finished and rough edges were polished up.
9453* The new generic ``pw::allocator::BlockAllocator`` interface supported several
9454  derived types that enable fine-grained control over how a block satisfies an
9455  allocation request.
9456
9457* ``pw_transfer`` now supports :ref:`resumable transfers
9458  <pw_transfer-nonzero-transfers>`.
9459
9460Active SEEDs
9461============
9462Help shape the future of Pigweed! Please visit :ref:`seed-0000`
9463and leave feedback on the RFCs (i.e. SEEDs) marked
9464``Open for Comments``.
9465
9466Modules
9467=======
9468
9469pw_alignment
9470------------
9471* `Add CMake & Soong support
9472  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189360>`__
9473
9474pw_allocator
9475------------
9476The new generic :cpp:class:`pw::allocator::BlockAllocator` interface supports
9477several derived types that enable fine-grained control over how a block
9478satisfies an allocation request. The new :cpp:func:`pw::allocator::GetLayout()`
9479method retrieves the layout that was used to allocate a given pointer. The new
9480:cpp:class:`pw::allocator::AllocatorSyncProxy` interface synchronizes access to
9481another allocator, allowing it to be used by multiple threads.
9482
9483* `Refactor metric collection for tests
9484  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190105>`__
9485* `Add Allocator::GetLayout
9486  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187764>`__
9487* `Add BlockAllocator
9488  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187657>`__
9489* `Fix SynchronizedAllocator typo
9490  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190721>`__
9491* `Streamline Block and improve testing
9492  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187656>`__
9493* `Separate metrics from Fallback-, MultiplexAllocator
9494  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190253>`__
9495* `Make TrackingAllocator::Init optional
9496  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190454>`__
9497* `Check for integer overflow in Layout
9498  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187654>`__
9499* `Add additional metrics
9500  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190250>`__
9501* `Rename AllocatorMetricProxy to TrackingAllocator
9502  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190230>`__
9503* `Add SynchronizedAllocator
9504  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189690>`__
9505* `Fix typo
9506  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189717>`__
9507* `Fix Allocator::Reallocate
9508  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189691>`__
9509
9510pw_assert
9511---------
9512* `Break out compatibility backend target
9513  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189106>`__
9514  (issue `#322057191 <https://issues.pigweed.dev/issues/322057191>`__)
9515
9516pw_async_basic
9517--------------
9518* `Remove unneeded locks from test
9519  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190238>`__
9520* `Test flake fix
9521  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189938>`__
9522  (issue `#323251704 <https://issues.pigweed.dev/issues/323251704>`__)
9523* `Fix data race in newly added test
9524  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189879>`__
9525* `Fix ordering of tasks posted at same time
9526  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189784>`__
9527
9528pw_bloat
9529--------
9530The new boolean argument ``ignore_unused_labels`` for ``pw_size_report()``
9531enables you to remove labels from the JSON size report that have a size of 0.
9532
9533* `Allow removal of zero sized labels
9534  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190599>`__
9535  (issue `#282057969 <https://issues.pigweed.dev/issues/282057969>`__)
9536
9537pw_bluetooth
9538------------
9539* `Add l2cap_frames.emb
9540  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185751>`__
9541* `Fix typo in SbcAllocationMethod
9542  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190130>`__
9543
9544pw_boot
9545-------
9546* `Update status and general doc cleanup
9547  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189298>`__
9548
9549pw_build
9550--------
9551The new ``PW_USE_COLOR``, ``NO_COLOR``, and ``CLICOLOR_FORCE`` OS environment
9552variables enable you to control whether output in CI/CQ is color formatted.
9553
9554* `Add Fuchsia to TARGET_COMPATIBLE_WITH_HOST_SELECT
9555  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190714>`__
9556* `Enable fixed point types for clang builds
9557  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190097>`__
9558  (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__)
9559* `Support disabling colors
9560  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189611>`__
9561  (issue `#323056074 <https://issues.pigweed.dev/issues/323056074>`__)
9562
9563pw_bytes
9564--------
9565* `Check for integer overflow
9566  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187655>`__
9567
9568pw_channel
9569----------
9570The initial ``pw::channel::Channel`` class from :ref:`seed-0114` has been
9571introduced but it is experimental and should not be used yet.
9572
9573* `Docs fix
9574  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190624>`__
9575* `Module for async data exchange with minimal copying
9576  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189284>`__
9577
9578pw_cli
9579------
9580* `Add json_config_loader_mixin
9581  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190540>`__
9582
9583pw_compilation_testing
9584----------------------
9585* `Do not expand regexes
9586  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191030>`__
9587* `Minor improvements
9588  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189788>`__
9589
9590pw_config_loader
9591----------------
9592The code from ``pw_cli`` related to looking up user-specific configuration
9593files has been moved to this separate module.
9594
9595* `Add support for nested keys
9596  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190673>`__
9597* `Add tests
9598  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190672>`__
9599* `Initial commit
9600  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190671>`__
9601
9602pw_cpu_exception_cortex_m
9603-------------------------
9604* `Handle ARM v8.1 case
9605  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189828>`__
9606  (issue `#311766664 <https://issues.pigweed.dev/issues/311766664>`__)
9607
9608pw_digital_io
9609-------------
9610* `[[nodiscard]] on as() conversion functions
9611  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189815>`__
9612* `Use pw::internal::SiblingCast
9613  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__
9614
9615pw_env_setup
9616------------
9617* `Roll cipd
9618  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190737>`__
9619  (issue `#315378787 <https://issues.pigweed.dev/issues/315378787>`__)
9620* `Make npm actions more robust
9621  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189358>`__
9622  (issues `#323378974 <https://issues.pigweed.dev/issues/305042957>`__,
9623  `#322437881 <https://issues.pigweed.dev/issues/322437881>`__,
9624  `#323378974 <https://issues.pigweed.dev/issues/323378974>`__)
9625* `Only add mingw to PATH once
9626  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190030>`__
9627  (issue `#322437881 <https://issues.pigweed.dev/issues/322437881>`__)
9628
9629pw_format
9630---------
9631* `Fix safe buildifier warnings
9632  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189716>`__
9633  (issue `#242181811 <https://issues.pigweed.dev/issues/242181811>`__)
9634
9635pw_function
9636-----------
9637* `Follow new docs guidelines
9638  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188362>`__
9639
9640pw_fuzzer
9641---------
9642* `Fix Bazel run target instructions
9643  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188363>`__
9644
9645pw_grpc
9646-------
9647The new :ref:`module-pw_grpc` module is an implementation of the gRPC HTTP/2
9648protocol. It provides classes that map between :ref:`module-pw_rpc` packets
9649and ``pw_grpc`` HTTP/2 frames, allowing ``pw_rpc`` services to be exposed as
9650gRPC services.
9651
9652* `Fix off-by-one error when handling DATA frames
9653  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190470>`__
9654  (issue `#323924487 <https://issues.pigweed.dev/issues/323924487>`__)
9655* `Add new module
9656  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186796>`__
9657
9658pw_ide
9659------
9660* `Disable Python terminal activation in VSC
9661  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190592>`__
9662* `Remove terminal env vars from VSC settings
9663  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188470>`__
9664* `VSC extension 0.1.4 release
9665  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188742>`__
9666
9667pw_presubmit
9668------------
9669Color formatting in CI/CQ has been improved for readability.
9670
9671* `Simplify 'gn gen' color logic
9672  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190239>`__
9673* `Use color logic in gn gen call
9674  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189827>`__
9675* `Apply color logic in more cases
9676  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189829>`__
9677* `Support disabling colors
9678  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189611>`__
9679  (issue `#323056074 <https://issues.pigweed.dev/issues/323056074>`__)
9680
9681pw_protobuf
9682-----------
9683* `Use pw::internal::SiblingCast
9684  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__
9685
9686pw_random
9687---------
9688* `Clean up build files
9689  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189779>`__
9690
9691pw_result
9692---------
9693* `Add missing libs in Soong blueprint
9694  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190950>`__
9695
9696pw_rpc
9697------
9698* `Avoid undefined behavior when casting to rpc::Writer
9699  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189648>`__
9700
9701pw_stream
9702---------
9703* `Use pw::internal::SiblingCast
9704  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__
9705
9706pw_target_runner
9707----------------
9708* `Remove .dev from path name
9709  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190450>`__
9710
9711pw_thread
9712---------
9713* `Incease the sleep duration in tests
9714  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190270>`__
9715  (issue `#321832803 <https://issues.pigweed.dev/issues/321832803>`__)
9716
9717pw_tokenizer
9718------------
9719:ref:`Troubleshooting docs <module-pw_tokenizer-gcc-template-bug>` were added
9720that explain how to workaround GCC's template function tokenization bug in GCC
9721releases prior to 14.
9722
9723* `Mention GCC template bug in the docs
9724  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189820>`__
9725
9726pw_toolchain
9727------------
9728* `Disable unstable features in rust toolchains
9729  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189948>`__
9730* `Fix divergent configuration in arm_clang M0+ toolchain
9731  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190196>`__
9732* `Use less generic names for B1-B5
9733  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189732>`__
9734* `Use LLVM compiler-rt builtins
9735  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186232>`__
9736* `Internal wrapper for casting between siblings
9737  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189014>`__
9738  (issue `#319144706 <https://issues.pigweed.dev/issues/319144706>`__)
9739* `Small docs update
9740  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189278>`__
9741  (issue `#300471936 <https://issues.pigweed.dev/issues/300471936>`__)
9742
9743pw_toolchain_bazel
9744------------------
9745A lot of the remaining ``pw_toolchain_bazel`` feature work from
9746:ref:`seed-0113` was finished and rough edges were polished up.
9747
9748* `Remove support for *_files
9749  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190810>`__
9750  (issue `#323448214 <https://issues.pigweed.dev/issues/323448214>`__)
9751* `Add support for setting environment variables
9752  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190154>`__
9753  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
9754* `Implement per-action files
9755  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190152>`__
9756  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
9757* `Migrate to PwToolInfo
9758  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190150>`__
9759  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
9760* `Pull file collection into config rule
9761  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189971>`__
9762  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
9763* `Implement pw_cc_provides
9764  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189112>`__
9765  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
9766* `Implement PwActionConfigInfo
9767  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189990>`__
9768  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
9769* `Create temporary variable
9770  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189970>`__
9771  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
9772* `Add a concept of well-known features
9773  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189050>`__
9774  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
9775* `Implement requires_any_of for flag sets
9776  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189111>`__
9777  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
9778* `Migrate to custom PwFeatureInfo
9779  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189030>`__
9780  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
9781* `Add custom PwFlagSetInfo
9782  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188990>`__
9783  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
9784* `Replace bazel_tools providers with PW providers
9785  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189110>`__
9786  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
9787* `Support regular binaries as tools
9788  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190151>`__
9789  (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__)
9790
9791pw_transfer
9792-----------
9793``pw_transfer`` now supports :ref:`resumable transfers
9794<pw_transfer-nonzero-transfers>`.
9795
9796* `Account for remaining_bytes in payload buffer
9797  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190572>`__
9798* `Rename TransferHandle -> Handle
9799  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189097>`__
9800* `Add resumeable transfers
9801  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182830>`__
9802* `Make cancellation a method on handles
9803  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189096>`__
9804* `Allow setting a transfer resource size in C++
9805  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189095>`__
9806  (issue `#319731837 <https://issues.pigweed.dev/issues/319731837>`__)
9807
9808pw_unit_test
9809------------
9810* `Remove obsolete label flag
9811  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190557>`__
9812
9813Build
9814=====
9815* (Bazel) `Update clang version
9816  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190256>`__
9817
9818OS support
9819==========
9820* (Zephyr) `Fix default logging in chromium CQ
9821  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190696>`__
9822
9823Docs
9824====
9825* `Nest backends under respective facades in sitenav
9826  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190245>`__
9827* `Add doxygengroup to the style guide
9828  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190625>`__
9829* `Update homepage
9830  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190018>`__
9831* `Update README links
9832  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189731>`__
9833* `Fix module homepage canonical URLs
9834  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189773>`__
9835  (issue `#323077749 <https://issues.pigweed.dev/issues/323077749>`__)
9836* `Update Bazel quickstart output sample
9837  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189412>`__
9838  (issue `#300471936 <https://issues.pigweed.dev/issues/300471936>`__)
9839
9840SEEDs
9841=====
9842* (SEED-0122) `Update status, add bug reference
9843  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189612>`__
9844* `Fix pw_seed_index template deps
9845  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190675>`__
9846* `Add authors to SEED document headers
9847  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189870>`__
9848* (SEED-0119) `Add sensors SEED
9849  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182653>`__
9850
9851Miscellaneous
9852=============
9853* `Update the bootstrap script to have start/end guards
9854  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190451>`__
9855* `Migrate bug numbers
9856  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189353>`__
9857  (issue `#298074672 <https://issues.pigweed.dev/issues/298074672>`__)
9858* `Upgrade mbedtls to 3.5.0
9859  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189273>`__
9860  (issue `#319289775 <https://issues.pigweed.dev/issues/319289775>`__)
9861* `Fix clang-format findings
9862  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190090>`__
9863
9864------------
9865Jan 26, 2024
9866------------
9867Highlights (Jan 12, 2024 to Jan 26, 2024):
9868
9869* The new :ref:`docs-bazel-integration` guide shows you how to integrate a
9870  single Pigweed module into an existing Bazel project.
9871* Initial support for :py:class:`pw_cc_feature` has been added, which completes
9872  the initial set of rules required for building toolchains with
9873  :ref:`module-pw_toolchain_bazel`.
9874* A longstanding GCC bug that caused tokenized logging within a function
9875  template to not work has been fixed.
9876
9877Active SEEDs
9878============
9879Help shape the future of Pigweed! Please visit :ref:`seed-0000`
9880and leave feedback on the RFCs (i.e. SEEDs) marked
9881``Open for Comments``.
9882
9883Modules
9884=======
9885
9886pw_allocator
9887------------
9888* `Add SplifFreeListAllocator fuzzer
9889  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178216>`__
9890
9891pw_bluetooth
9892------------
9893* `Add advertising packet content filter emboss definitions
9894  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188314>`__
9895* `Add android multiple advertising emboss structures
9896  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188313>`__
9897* `Add a2dp remaining offload emboss structures
9898  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188311>`__
9899* `Move emboss structures from hci_commands to hci_common
9900  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188312>`__
9901* `Reorganize hci_vendor.emb
9902  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188310>`__
9903* `Add new event definitions
9904  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188150>`__
9905  (issue `#311639432 <https://issues.pigweed.dev/issues/311639432>`__)
9906
9907pw_build
9908--------
9909The new :ref:`module-pw_build-bazel-pw_cc_binary_with_map` Bazel rule enables
9910you to generate a ``.map`` file when building a binary.
9911
9912* `Add pw_cc_binary variant to generate .map files
9913  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187710>`__
9914  (issue `#319746242 <https://issues.pigweed.dev/issues/319746242>`__)
9915
9916pw_bytes
9917--------
9918The :cpp:class:`pw::ByteBuilder` API reference is now being auto-generated
9919via Doxygen. The new :cpp:func:`pw::bytes::SignExtend` template enables
9920expanding the nth bit to the left up to the size of the destination type.
9921
9922* `Fix compilation error occured with Werror=all
9923  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188890>`__
9924* `Update documentation
9925  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188462>`__
9926* `SignExtend template
9927  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188456>`__
9928  (issue `#321114167 <https://issues.pigweed.dev/issues/321114167>`__)
9929* `Make _b literals error on values >255
9930  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188208>`__
9931
9932pw_compilation_testing
9933----------------------
9934* `Skip tests excluded by the preprocessor
9935  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188650>`__
9936  (issue `#321088147 <https://issues.pigweed.dev/issues/321088147>`__)
9937
9938pw_console
9939----------
9940* `Upgrade to ptpython 3.0.25
9941  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188146>`__
9942  (issue `#320509105 <https://issues.pigweed.dev/issues/320509105>`__)
9943
9944pw_containers
9945-------------
9946The destructors for ``pw::InlineQueue``, ``pw::InlineDeque``, and
9947``pw::Vector`` are now protected to prevent use with ``delete`` or
9948``std::unique_ptr`` and to prevent unusable declarations.
9949
9950* `Protected InlineQueue/Deque<T> destructor
9951  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187802>`__
9952* `Make Vector<T> destructor protected
9953  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187801>`__
9954
9955pw_digital_io
9956-------------
9957The private virtual API requirements for
9958:cpp:class:`pw::digital_io::DigitalIoOptional` are now documented because
9959they are needed when implementing concrete backends for ``pw_digital_io``.
9960
9961* `Document the private virtual API requirements
9962  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187669>`__
9963* `Remove conditional interrupt disabling requirements
9964  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187668>`__
9965
9966pw_doctor
9967---------
9968* `Update expected tools on POSIX
9969  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188102>`__
9970  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
9971
9972pw_env_setup
9973------------
9974* `Retrieve qemu on ARM Macs
9975  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187806>`__
9976  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
9977
9978pw_hdlc
9979-------
9980* `Remove unused targets
9981  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188226>`__
9982* `Remove unused rpc packet processor target
9983  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188233>`__
9984
9985pw_ide
9986------
9987* `Fix typo
9988  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188423>`__
9989* `Launch activated terminals in VSC
9990  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187195>`__
9991  (issue `#318583596 <https://issues.pigweed.dev/issues/318583596>`__)
9992* `VSC extension 0.1.3 release
9993  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186726>`__
9994
9995pw_kvs
9996------
9997The new ``pw::kvs::FlashMemory::EndOfWrittenData()`` method returns the first
9998byte of erased flash that has no more written bytes.
9999
10000* `Add EndOfWrittenData()
10001  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188872>`__
10002
10003pw_persistent_ram
10004-----------------
10005* `Add more tests to PersistentBuffer
10006  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188106>`__
10007  (issue `#320538351 <https://issues.pigweed.dev/issues/320538351>`__)
10008
10009pw_polyfill
10010-----------
10011``pw_polyfill/static_assert.h`` now provides a C23-style ``static_assert()``.
10012See :ref:`module-pw_polyfill-static_assert`.
10013
10014* `Remove _Static_assert workaround
10015  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188277>`__
10016* `Provide static_assert polyfill for C
10017  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188137>`__
10018
10019pw_preprocessor
10020---------------
10021The new ``PW_ADD_OVERFLOW``, ``PW_SUB_OVERFLOW``, and ``PW_MUL_OVERFLOW``
10022macros can be used to :ref:`check for integer overflows
10023<module-pw_preprocessor-integer-overflow>`.
10024
10025* `Add integer-overflow macros
10026  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187653>`__
10027
10028pw_presubmit
10029------------
10030* `Add more info to todo summary
10031  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188750>`__
10032* `Trim paths in ninja summary
10033  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188070>`__
10034* `No copyright for MODULE.bazel.lock
10035  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188170>`__
10036* `Exclude docs on Mac ARM hosts
10037  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187784>`__
10038  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
10039
10040pw_protobuf
10041-----------
10042* `Fix another &*nullptr in test
10043  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188717>`__
10044* `Fix undefined pointer deref in fuzz test
10045  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188281>`__
10046* `Fix out-of-range read
10047  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188095>`__
10048  (issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__)
10049
10050pw_thread
10051---------
10052* `Add missing include
10053  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189212>`__
10054
10055pw_tokenizer
10056------------
10057A longstanding GCC bug that caused tokenized logging within a function template
10058to not work has been fixed.
10059
10060* `Compensate for GCC template bug
10061  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188424>`__
10062  (issue `#321306079 <https://issues.pigweed.dev/issues/321306079>`__)
10063* `Allow use of static_assert in C99 test
10064  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188357>`__
10065* `Adjust rustdocs deps to only be in std environments
10066  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188138>`__
10067
10068pw_tool
10069-------
10070This incomplete module has been deleted.
10071
10072* `Delete module
10073  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188919>`__
10074
10075pw_toolchain_bazel
10076------------------
10077The ``//pw_toolchain_bazel`` directory is now configured to be compiled as a
10078standalone Bazel module. Initial support for :py:class:`pw_cc_feature` has been
10079added, which completes the initial set of rules required for building
10080toolchains with :ref:`module-pw_toolchain_bazel`.
10081
10082* `Remove deprecated action names
10083  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188991>`__
10084  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
10085* `Migrate to type-safe action names
10086  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187896>`__
10087  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
10088* `Require action labels in providers
10089  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188810>`__
10090  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
10091* `Define actions names as labels
10092  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187895>`__
10093  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
10094* `Make the pw_toolchain repository into a bazel module
10095  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187932>`__
10096  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
10097* `Add pw_cc_feature
10098  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181755>`__
10099  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
10100* `Set exec_transition_for_inputs to False
10101  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188361>`__
10102  (issue `#321268080 <https://issues.pigweed.dev/issues/321268080>`__)
10103* `Remove check_deps_provide
10104  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187894>`__
10105  (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__)
10106
10107pw_transfer
10108-----------
10109The C++ client for :ref:`module-pw_transfer` now uses handles for
10110cancellation.
10111
10112* `Remove duplicated Builder call
10113  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188855>`__
10114* `Use handles for cancellation in C++ client
10115  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/134290>`__
10116  (issue `#272840682 <https://issues.pigweed.dev/issues/272840682>`__)
10117
10118pw_web
10119------
10120* `Init. improvements to resize performance
10121  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188050>`__
10122  (issue `#320475138 <https://issues.pigweed.dev/issues/320475138>`__)
10123
10124Build
10125=====
10126* `Use Python 3.11
10127  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182191>`__
10128  (issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__)
10129* `Use pre-release of rules_python
10130  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188852>`__
10131  (issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__)
10132* `Use rules_python in Bazel build files
10133  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188690>`__
10134
10135Targets
10136=======
10137
10138host_device_simulator
10139---------------------
10140* `Update docs
10141  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187430>`__
10142
10143Docs
10144====
10145* `How to use a single Pigweed module in Bazel
10146  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188922>`__
10147* `Add pre-reqs for non-Debian Linux distros
10148  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188770>`__
10149  (issue `#320519800 <https://issues.pigweed.dev/issues/320519800>`__)
10150* `Auto-generate module source code and issues URLs
10151  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187312>`__
10152* `Minor updates to the FAQ
10153  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188252>`__
10154* `Update changelog
10155  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187614>`__
10156
10157SEEDs
10158=====
10159* (SEED-0123) `Claim SEED number
10160  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188140>`__
10161* (SEED-0124) `Claim SEED number
10162  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188671>`__
10163
10164Miscellaneous
10165=============
10166* `Remove module-level README.md files
10167  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188374>`__
10168* `Fix how we ignore bazel- directories
10169  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188940>`__
10170
10171------------
10172Jan 12, 2024
10173------------
10174Highlights (Dec 29, 2023 to Jan 12, 2024):
10175
10176* :ref:`docs-changelog-20240112-pw_allocator` added parameter to make it easier
10177  to work with allocation metadata in a block's header and made it easier to
10178  omit flag-related code for blocks.
10179* ``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``.
10180* :ref:`docs-changelog-20240112-pw_thread_stl` disallowed
10181  ``std::thread::detach()`` on Windows because it's known to randomly hang
10182  indefinitely.
10183
10184Active SEEDs
10185============
10186Help shape the future of Pigweed! Please visit :ref:`seed-0000`
10187and leave feedback on the RFCs (i.e. SEEDs) marked
10188``Open for Comments``.
10189
10190Modules
10191=======
10192
10193.. _docs-changelog-20240112-pw_allocator:
10194
10195pw_allocator
10196------------
10197A new template parameter, ``kNumExtraBytes``, was added to ``Block``. This
10198parameter reserves space in the block's header for storing and fetching
10199allocation metadata.
10200
10201The ``kMaxSize`` parameter was removed from ``Block``
10202and replaced by ``kNumFlags`` to make it easier to omit flag-related code when
10203not needed and define fewer block types rather than one for each allocation
10204pool size.
10205
10206* `Fix source file list in soong rule
10207  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187127>`__
10208* `Fix MulitplexAllocator's deps
10209  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186873>`__
10210* `Add extra bytes to Block
10211  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185954>`__
10212* `Add initializing constructors
10213  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185953>`__
10214* `Add note to AllocatorMetricProxy tests
10215  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185952>`__
10216
10217pw_bluetooth_sapphire
10218---------------------
10219* `Advertise FCS Option
10220  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186850>`__
10221  (issue `#318002648 <https://issues.pigweed.dev/issues/318002648>`__)
10222* `Refactor method and variable names
10223  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182899>`__
10224  (issue `#312645622 <https://issues.pigweed.dev/issues/312645622>`__)
10225* `Revert commits to get to a known working state
10226  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183087>`__
10227
10228pw_containers
10229-------------
10230* `Remove DestructorHelper from vector
10231  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185521>`__
10232  (issue `#301329862 <https://issues.pigweed.dev/issues/301329862>`__)
10233
10234pw_doctor
10235---------
10236* `Fix overridden package check
10237  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187110>`__
10238
10239pw_emu
10240------
10241* `Remove psutil dependency
10242  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186830>`__
10243  (issue `#316080297 <https://issues.pigweed.dev/issues/316080297>`__)
10244
10245pw_env_setup
10246------------
10247* `Update ref to bazel version file
10248  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187118>`__
10249* `Drop reference to rust version file
10250  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187113>`__
10251* `Use correct arch for cipd in Bazel
10252  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184903>`__
10253  (issue `#234879770 <https://issues.pigweed.dev/issues/234879770>`__)
10254* `Switch to Fuchsia ninja CIPD package
10255  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184078>`__
10256  (issue `#311711323 <https://issues.pigweed.dev/issues/311711323>`__)
10257* `Prevent NPM output from interrupting bootstrap
10258  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186510>`__
10259
10260pw_ide
10261------
10262The new ``pigweed.enforceExtensionRecommendations`` configuration option for
10263VS Code makes extension recommendation enforcement optional. When you set this
10264flag to ``true`` in your project's ``extension.json``, recommended extensions
10265will need to be installed and non-recommended extensions will need to be
10266disabled.
10267
10268You can now submit Pigweed issues through VS Code. Open the Command Palette
10269and type ``Pigweed: File Bug``.
10270
10271* `Add Jest testing to VSC extension
10272  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187126>`__
10273* `Make VSC extension enforcement an option
10274  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187170>`__
10275* `Support alternate \`clangd\` paths
10276  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186730>`__
10277  (issue `#318413766 <https://issues.pigweed.dev/issues/318413766>`__)
10278* `VSC extension 0.1.2 release
10279  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184907>`__
10280* `Fix CLI command docs
10281  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184955>`__
10282* `Allow submitting bugs from VSC
10283  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184908>`__
10284* `Document \`compdb_gen_cmd\`
10285  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184899>`__
10286* `Improve VSC extension UX
10287  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184990>`__
10288
10289.. _docs-changelog-20240112-pw_log:
10290
10291pw_log
10292------
10293The Python API of the log decoder now accepts a ``logging.Logger`` or
10294``logging.LoggerAdapter`` instance as the default device logger. Previously
10295it only accepted ``logging.Logger``.
10296
10297* `Let Device accept logger adapter
10298  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187119>`__
10299
10300pw_log_zephyr
10301-------------
10302* `Add missing include for tokenized logging
10303  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186810>`__
10304
10305pw_multibuf
10306-----------
10307* `Add soong support
10308  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186815>`__
10309
10310pw_protobuf
10311-----------
10312* `Fix bool overflow
10313  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186801>`__
10314  (issue `#318732334 <https://issues.pigweed.dev/issues/318732334>`__)
10315* `Fix nullptr dereference in fuzz test
10316  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186800>`__
10317  (issue `#314829525 <https://issues.pigweed.dev/issues/314829525>`__)
10318* `Don't crash on invalid field number
10319  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186724>`__
10320  (issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__)
10321* `Fix conflict in messages with fields named 'other'
10322  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186951>`__
10323* `Properly fuzz nested encoders/decoders
10324  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186723>`__
10325  (issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__)
10326* `Fully qualify message namespace
10327  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186822>`__
10328
10329pw_rpc
10330------
10331The new ``PW_RPC_METHOD_STORES_TYPE`` config option provides a way at runtime
10332to determine a method's type. This is useful when implementing a translation
10333layer from another RPC system. Most Pigweed projects won't need this feature so
10334it's disabled by default.
10335
10336* `Have Method optionally store it's MethodType
10337  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185773>`__
10338* `Run tests with completion callback config enabled
10339  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187172>`__
10340* `Add some missing deps in Bazel targets
10341  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186934>`__
10342  (issue `#318850523 <https://issues.pigweed.dev/issues/318850523>`__)
10343
10344pw_stream
10345---------
10346* `Make stream adapters use reinterpret_cast
10347  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186766>`__
10348  (issue `#314829006 <https://issues.pigweed.dev/issues/314829006>`__)
10349
10350pw_system
10351---------
10352See :ref:`docs-changelog-20240112-pw_log`.
10353
10354* `Let Device accept logger adapter
10355  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187119>`__
10356
10357.. _docs-changelog-20240112-pw_thread_stl:
10358
10359pw_thread_stl
10360-------------
10361Using ``std::thread::detach()`` on Windows has been disallowed. When compiling
10362with MinGW on Windows, ``std::thread::detach()`` is known to randomly hang
10363indefinitely.
10364
10365* `Don't allow std::thread::detach() on Windows
10366  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186570>`__
10367  (issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__)
10368
10369pw_tokenizer
10370------------
10371* `Fix undefined dereference in fuzz test
10372  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186821>`__
10373  (issue `#314829057 <https://issues.pigweed.dev/issues/314829057>`__)
10374* `Make Rust hashing function const
10375  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186273>`__
10376
10377pw_toolchain
10378------------
10379``pw_toolchain`` now adds ``-fno-ms-compatibility`` to ``cflags`` on Windows.
10380When building with ``clang`` on Windows targeting ``msvc``, ``clang``
10381previously enabled a ``ms-compatibility`` mode that broke Pigweed's macro
10382magic.
10383
10384* `Remove duplicate config from Cortex-A32 toolchain
10385  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187270>`__
10386* `Add -fno-ms-compatibility to cflags on Windows
10387  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187173>`__
10388  (issue `#297542996 <https://issues.pigweed.dev/issues/297542996>`__)
10389
10390pw_unit_test
10391------------
10392* `Fix sanitize(r) directive
10393  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186650>`__
10394
10395pw_web
10396------
10397* `Fix autoscroll when window is resized
10398  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187193>`__
10399  (issue `#305022742 <https://issues.pigweed.dev/issues/305022742>`__)
10400
10401Build
10402=====
10403
10404Bazel
10405-----
10406All modules now support the injection of module configuration via
10407``label_flags``.
10408
10409``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``.
10410
10411* `Update to Bazel 7.0.0 release version
10412  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186935>`__
10413* `Add module configuration support
10414  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186725>`__
10415  (issue `#234872811 <https://issues.pigweed.dev/issues/234872811>`__)
10416* `Remove pw_cc_library
10417  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186770>`__
10418  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
10419* `Remove references to pw_cc_library
10420  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186765>`__
10421  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
10422* `Replace pw_cc_library with cc_library
10423  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186763>`__
10424  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
10425
10426OS support
10427==========
10428
10429Zephyr
10430------
10431You can now enable the ``pw_thread/sleep.h`` library in your Zephyr project by
10432setting ``CONFIG_PIGWEED_THREAD_SLEEP=Y`` in your Kconfig.
10433
10434* `Link pw_thread.sleep with appropriate kConfig
10435  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186825>`__
10436
10437Docs
10438====
10439* `Add example of conditionally enabling code based on module config
10440  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187171>`__
10441* `Mention pw format tool
10442  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186851>`__
10443* `Update changelog
10444  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186470>`__
10445* `Rework first-time setup
10446  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185730>`__
10447* `Add troubleshooting section to Bazel quickstart
10448  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186237>`__
10449
10450SEEDs
10451=====
10452* (SEED-0001) `Fix typo and formatting
10453  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187273>`__
10454* (SEED-0114) `Fix Compiler Explorer link
10455  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187330>`__
10456* (SEED-0122) `Claim SEED number
10457  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187120>`__
10458
10459------------
10460Dec 29, 2023
10461------------
10462Highlights (Dec 15, 2023 to Dec 29, 2023):
10463
10464* The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier
10465  to dispatch between allocators depending on an app-specific request type ID.
10466* ``pw_base64`` now has initial Rust support.
10467* ``pw_malloc_freertos``, a new FreeRTOS backend for :ref:`module-pw_malloc`,
10468  was added.
10469* The new ``pw::digital_io::Polarity`` helper enum makes it easier for backends
10470  to map logical levels to physical levels.
10471* The Rust macro ``tokenize_to_buffer!`` in the ``pw_tokenizer`` Rust crate now
10472  supports concatenation of format strings via the ``PW_FMT_CONCAT`` operator.
10473* The :ref:`module-pw_hdlc` and :ref:`module-pw_result` docs were updated to
10474  follow our latest :ref:`docs-contrib-docs-modules`.
10475
10476Active SEEDs
10477============
10478Help shape the future of Pigweed! Please visit :ref:`seed-0000`
10479and leave feedback on the RFCs (i.e. SEEDs) marked
10480``Open for Comments``.
10481
10482Modules
10483=======
10484
10485pw_allocator
10486------------
10487The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier to
10488dispatch between allocators depending on an app-specific request type ID.
10489
10490* `Add MultiplexAllocator
10491  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185027>`__
10492* `Add WithMetrics interface
10493  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185296>`__
10494* `Split up test utilities
10495  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185295>`__
10496
10497pw_base64
10498---------
10499``pw_base64`` now has initial Rust support. See `Crate pw_base64
10500</rustdoc/pw_base64/>`_.
10501
10502* `Add initial Rust support
10503  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185210>`__
10504
10505pw_containers
10506-------------
10507* `Remove DestructorHelper from queues
10508  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185030>`__
10509  (issue `#301329862 <https://issues.pigweed.dev/issues/301329862>`__)
10510
10511pw_digital_io
10512-------------
10513`pw::digital_io::Polarity <https://cs.opensource.google/pigweed/pigweed/+/main:pw_digital_io/public/pw_digital_io/polarity.h>`_
10514was added to make it easier for backends to map logical levels to physical levels.
10515
10516* `Add helper Polarity enum
10517  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185435>`__
10518
10519pw_emu
10520------
10521* `Use code-block instead of code
10522  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186170>`__
10523
10524pw_hdlc
10525-------
10526* `Follow new module docs guidelines
10527  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184799>`__
10528
10529pw_malloc
10530---------
10531``pw_malloc_freertos``, a FreeRTOS backend for ``pw_malloc`` was added.
10532
10533* `Require specifying a backend in bazel build
10534  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185441>`__
10535* `Add freertos backend
10536  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185452>`__
10537
10538pw_presubmit
10539------------
10540* `Use local prettier + eslint versions
10541  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185144>`__
10542
10543pw_result
10544---------
10545* `Rework docs to new standard
10546  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185147>`__
10547
10548pw_rpc
10549------
10550* `Adjust alarm_timer_test
10551  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186274>`__
10552  (issue `#317990451 <https://issues.pigweed.dev/issues/317990451>`__)
10553
10554pw_snapshot
10555-----------
10556* `Clean up RISCV CpuArchitecture
10557  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185690>`__
10558* `Add RISCV CpuArchitecture to metadata
10559  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185630>`__
10560
10561pw_thread_stl
10562-------------
10563* `Disable Bazel tests failing on Windows
10564  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186242>`__
10565  (issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__)
10566* `Disable tests failing on Windows
10567  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186253>`__
10568  (issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__)
10569
10570pw_tokenizer
10571------------
10572The Rust macro ``tokenize_to_buffer!`` now supports concatenation of format
10573strings via the ``PW_FMT_CONCAT`` operator.
10574
10575* `Support \`PW_FMT_CONCAT\` in \`tokenize_to_buffer!\`
10576  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185211>`__
10577
10578pw_toolchain
10579------------
10580The need to provide an ``unknown`` value for various ``pw_cc_toolchain`` fields
10581has been removed.
10582
10583* `Remove "unknown" from various fields
10584  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185170>`__
10585  (issue `#315206506 <https://issues.pigweed.dev/issues/315206506>`__)
10586
10587pw_transfer
10588-----------
10589* `Improve Python stream reopening and closing
10590  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184931>`__
10591
10592pw_unit_test
10593------------
10594* `Silence ASAN error in TestInfo
10595  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185654>`__
10596
10597pw_watch
10598--------
10599* `Build directory exclude list handling
10600  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185772>`__
10601  (issue `#317241320 <https://issues.pigweed.dev/issues/317241320>`__)
10602
10603pw_web
10604------
10605* `Add state UI unit tests
10606  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184909>`__
10607  (issue `#316218222 <https://issues.pigweed.dev/issues/316218222>`__)
10608
10609SEEDs
10610=====
10611* `Add facilitators to metadata and generated table
10612  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185932>`__
10613* (SEED-0105) `Use code-block instead of code
10614  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186171>`__
10615
10616------------
10617Dec 15, 2023
10618------------
10619Highlights (Dec 1, 2023 to Dec 15, 2023):
10620
10621* We started implementing our new async API, :ref:`module-pw_async2`.
10622* We deprecated the use of ``gtest/gtest.h`` header paths for tests intended
10623  to build against ``pw_unit_test``. See
10624  :ref:`docs-changelog-20231215-pw_unit_test` for details.
10625
10626  .. note::
10627
10628     All the commits titled ``Use unit test framework`` in the ``Dec 15, 2023``
10629     update are related to this change.
10630
10631* The :ref:`module-pw_alignment` and :ref:`module-pw_emu` docs have been updated
10632  to follow our latest :ref:`docs-contrib-docs-modules`.
10633* ``pw_system`` now supports an :ref:`extra logging channel
10634  <module-pw_system-logchannel>`.
10635* ``pw_toolchain_bazel`` has a new :ref:`get started guide
10636  <module-pw_toolchain_bazel-get-started>`.
10637
10638Active SEEDs
10639============
10640Help shape the future of Pigweed! Please visit :ref:`seed-0000`
10641and leave feedback on the RFCs (i.e. SEEDs) marked
10642``Open for Comments``.
10643
10644Modules
10645=======
10646
10647pw_alignment
10648------------
10649* `Follow the new docs guidelines
10650  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181432>`__
10651
10652pw_allocator
10653------------
10654* `Fix metric disabling
10655  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185026>`__
10656* `Add support for fuzzing Allocator implementations
10657  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178215>`__
10658* `Use unit test framework
10659  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183270>`__
10660
10661pw_analog
10662---------
10663* `Use unit test framework
10664  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183270>`__
10665
10666pw_async2
10667---------
10668We started implementing our new async API, :ref:`module-pw_async2`.
10669
10670* `Implement initial async API
10671  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182727>`__
10672
10673pw_base64
10674---------
10675* `Use unit test framework
10676  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183299>`__
10677
10678pw_blob_store
10679-------------
10680* `Use unit test framework
10681  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183299>`__
10682
10683pw_bluetooth
10684------------
10685* `Add LE Read Buffer Size [v2] command complete event
10686  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185070>`__
10687  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
10688* `Use unit test framework
10689  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184312>`__
10690* `Fix LEExtendedCreateConnectionCommandV1 data interleaving
10691  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183950>`__
10692  (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
10693* `Fix ExtendedCreateConnectionV1
10694  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183930>`__
10695  (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
10696* `Add new HCI definition
10697  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183771>`__
10698  (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__)
10699* `Re-format emboss files
10700  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183770>`__
10701
10702pw_bluetooth_sapphire
10703---------------------
10704* `Read ISO data buffer info on startup
10705  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184052>`__
10706  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
10707* `LE Read Buffer Size [v2]
10708  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183772>`__
10709  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
10710* `Add LE Set Host Feature
10711  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184050>`__
10712  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
10713* `Update name of ISO host support bit
10714  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184051>`__
10715  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
10716* `Fix BrEdrConnectionManager.Inspect test
10717  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183304>`__
10718  (issue `#42086629 <https://issues.fuchsia.dev/issues/42086629>`__)
10719
10720pw_build
10721--------
10722* `Fix use of TARGET_COMPATIBLE_WITH_HOST_SELECT in external repo
10723  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184095>`__
10724
10725pw_bytes
10726--------
10727* `Use unit test framework
10728  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183354>`__
10729
10730pw_checksum
10731-----------
10732* `Use unit test framework
10733  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183300>`__
10734
10735pw_chrono
10736---------
10737* `Use unit test framework
10738  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183300>`__
10739
10740pw_cli
10741------
10742You can now disable the printing of the banner by setting ``PW_ENVSETUP_QUIET``
10743or ``PW_ENVSETUP_NO_BANNER``.
10744
10745* `Allow banner to be suppressed
10746  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184970>`__
10747
10748pw_console
10749----------
10750* `Disable private attr auto-completion
10751  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184644>`__
10752
10753pw_containers
10754-------------
10755* `Fix missing include
10756  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184961>`__
10757* `Fix IntrusiveList::Item move assignment test
10758  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182951>`__
10759  (issue `#303634979 <https://issues.pigweed.dev/issues/303634979>`__)
10760* `Add missing dep for IntrusiveList test
10761  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184245>`__
10762
10763pw_digital_io
10764-------------
10765* `Use unit test framework
10766  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183301>`__
10767
10768pw_docgen
10769---------
10770We updated the docs server to use native hot reloading.
10771
10772* `Update Pigweed Live schedule
10773  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184960>`__
10774* `Add new docs server
10775  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181011>`__
10776
10777pw_emu
10778------
10779We're handling QEMU startup errors more gracefully now.
10780
10781* `Better handling for startup errors
10782  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184859>`__
10783  (issue `#315868463 <https://issues.pigweed.dev/issues/315868463>`__)
10784* `qemu: Improve the QMP handshake handling
10785  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184858>`__
10786  (issue `#315516286 <https://issues.pigweed.dev/issues/315516286>`__)
10787* `Link all the docs to each other
10788  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184310>`__
10789* `Update docs to follow new guidelines
10790  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183223>`__
10791
10792pw_env_setup
10793------------
10794The upstream Pigweed bootstrap script now runs ``npm install``. We worked
10795on native macOS support that doesn't rely on Rosetta. Use the
10796``--disable-rosetta`` flag to try it out. Note that the work isn't complete
10797yet.
10798
10799* `Run npm install on bootstrap
10800  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184639>`__
10801* `Remove "untested" warning
10802  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182813>`__
10803* `Use ARM protoc version on ARM Macs
10804  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184930>`__
10805  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
10806* `Fix typo in error message
10807  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184910>`__
10808* `Add flag to disable Rosetta
10809  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184804>`__
10810  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
10811* `Retrieve armgcc for ARM Macs
10812  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184785>`__
10813  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
10814* `Change case of armgcc version
10815  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184798>`__
10816  (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__)
10817* `Roll cipd client
10818  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184277>`__
10819* `Bump executing Python package
10820  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183838>`__
10821
10822pw_file
10823-------
10824* `Use unit test framework
10825  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183301>`__
10826
10827pw_format
10828---------
10829Format strings can now be built by macros at compile-time by specifying the
10830format string as a set of string literals separated by the custom
10831``PW_FMT_CONCAT`` keyword.
10832
10833* `Allow format strings to be composed at compile time
10834  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184200>`__
10835
10836pw_fuzzer
10837---------
10838* `Fix ambiguous reference to ContainerOf
10839  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184284>`__
10840
10841pw_hdlc
10842-------
10843* `Use unit test framework
10844  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__
10845
10846pw_hex_dump
10847-----------
10848* `Use unit test framework
10849  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__
10850
10851pw_i2c
10852------
10853* `Use unit test framework
10854  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__
10855
10856pw_ide
10857------
10858``pw_ide`` now handles additional clang toolchains if your project specifies one
10859that's different from the one provided by Pigweed. We also shipped several UX
10860improvements to the Visual Studio Code extension.
10861
10862* `Add command to build VSC extension
10863  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184992>`__
10864* `Remove VSIX installation stuff
10865  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184991>`__
10866* `Don't warn on missing extensions.json
10867  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184895>`__
10868* `Alpha-sort the list of targets in VSC
10869  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184864>`__
10870* `Auto-run build system command
10871  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184809>`__
10872* `Update VSC Python config
10873  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184820>`__
10874* `Fix condition for Windows platform
10875  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184730>`__
10876* `Fix for clang installed to project dir
10877  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184010>`__
10878  (issue `#314693384 <https://issues.pigweed.dev/issues/314693384>`__)
10879
10880pw_kvs
10881------
10882* `Use unit test framework
10883  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__
10884
10885pw_libc
10886-------
10887* `Use unit test framework
10888  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__
10889
10890pw_log
10891------
10892* `Use unit test framework
10893  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__
10894
10895pw_malloc
10896---------
10897* `Use unit test framework
10898  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183308>`__
10899
10900pw_metric
10901---------
10902* `Use unit test framework
10903  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183308>`__
10904
10905pw_perf_test
10906------------
10907* `Refactor event handler types
10908  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179611>`__
10909* `Use unit test framework
10910  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183309>`__
10911
10912pw_presubmit
10913------------
10914* `Add LUCI_CONTEXT to ctx
10915  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184793>`__
10916* `Merge some of the "misc" checks
10917  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184778>`__
10918* `Better support downstream GnGenNinja use
10919  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183837>`__
10920  (issue `#314818274 <https://issues.pigweed.dev/issues/314818274>`__)
10921* `Automatically compute trim_prefix
10922  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183100>`__
10923  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
10924
10925pw_random
10926---------
10927* `Use unit test framework
10928  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183350>`__
10929
10930pw_result
10931---------
10932* `Use unit test framework
10933  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183350>`__
10934
10935pw_rust
10936-------
10937* `Remove excess newline in doc command line
10938  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182451>`__
10939
10940pw_snapshot
10941-----------
10942* `Use unit test framework
10943  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183351>`__
10944
10945pw_status
10946---------
10947* `Docs tweak
10948  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185146>`__
10949
10950pw_string
10951---------
10952* `Fix string_test build error under new clang revision
10953  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184219>`__
10954  (issue `#315190328 <https://issues.pigweed.dev/issues/315190328>`__)
10955* `Add missing include
10956  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183233>`__
10957  (issue `#314130408 <https://issues.pigweed.dev/issues/314130408>`__)
10958
10959pw_symbolizer
10960-------------
10961* `Fix symbolizer_test
10962  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184226>`__
10963  (issue `#315190328 <https://issues.pigweed.dev/issues/315190328>`__)
10964
10965pw_system
10966---------
10967We added an :ref:`extra logging channel <module-pw_system-logchannel>`.
10968
10969* `Support extra logging channel
10970  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184410>`__
10971  (issue `#315540660 <https://issues.pigweed.dev/issues/315540660>`__)
10972
10973pw_thread
10974---------
10975* `Use unit test framework
10976  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183352>`__
10977
10978pw_tls_client
10979-------------
10980* `Use unit test framework
10981  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183352>`__
10982
10983pw_tokenizer
10984------------
10985* `Mark \`pw_tokenizer_core\` as \`no_std\`
10986  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183197>`__
10987
10988pw_toolchain
10989------------
10990The Arm GCC toolchain now uses :ref:`module-pw_toolchain_bazel`.
10991
10992* `Move ARM toolchain to new API
10993  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183160>`__
10994  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
10995* `Use action configs from LLVM tool repo
10996  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183010>`__
10997  (issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__)
10998
10999pw_toolchain_bazel
11000------------------
11001Support for :py:attr:`additional_files` was added to reduce ``*_files``
11002boilerplate. We added a new :ref:`get started guide
11003<module-pw_toolchain_bazel-get-started>`.
11004
11005* `Fix naming in docs
11006  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184753>`__
11007* `Add misc_files group
11008  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184698>`__
11009  (issue `#305737273 <https://issues.pigweed.dev/issues/305737273>`__)
11010* `Add automagic toolchain file collection
11011  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184299>`__
11012  (issue `#305737273 <https://issues.pigweed.dev/issues/305737273>`__)
11013* `Add getting started guide
11014  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184281>`__
11015  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
11016* `Remove legacy tool API
11017  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184280>`__
11018* `Remove deprecated API
11019  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183235>`__
11020  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
11021* `Rename build file templates part 2/2
11022  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183187>`__
11023
11024pw_trace
11025--------
11026* `Use unit test framework
11027  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183355>`__
11028
11029pw_transfer
11030-----------
11031We added support for setting different timeouts for clients and servers.
11032See ``PW_TRANSFER_DEFAULT_MAX_CLIENT_RETRIES`` and
11033``PW_TRANSFER_DEFAULT_MAX_SERVER_RETRIES`` in :ref:`module-pw_transfer-config`.
11034
11035* `Remove small hardcoded timeout in proxy_test
11036  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184638>`__
11037  (issue `#315459788 <https://issues.pigweed.dev/issues/315459788>`__)
11038* `Allow setting different timeouts for client and server
11039  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184210>`__
11040* `Update integration test documentation
11041  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183163>`__
11042  (issue `#250947749 <https://issues.pigweed.dev/issues/250947749>`__)
11043
11044.. _docs-changelog-20231215-pw_unit_test:
11045
11046pw_unit_test
11047------------
11048We deprecated use of ``gtest/gtest.h`` header paths for tests intended to build
11049against ``pw_unit_test``. Historically, we supported using the ``gtest/gtest.h``
11050include path to support compiling a test as either a ``pw_unit_test`` or with
11051the full GoogleTest on larger targets like desktop. However, this created a
11052problem since ``pw_unit_test`` only implements a subset of the GoogleTest API.
11053With the new approach, we require tests that are intended to compile on devices
11054to directly include ``pw_unit_test/framework.h``. In cases where GoogleTest is
11055available, that header will redirect to GoogleTest.
11056
11057* `Add compatibility in bazel
11058  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184911>`__
11059  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
11060* `Use googletest backend as a dep
11061  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184656>`__
11062  (issue `#315351886 <https://issues.pigweed.dev/issues/315351886>`__)
11063* `Fix building fuzztests with cmake
11064  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184268>`__
11065* `Use unit test framework
11066  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183353>`__
11067* `Create facade's header
11068  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183194>`__
11069  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
11070
11071pw_varint
11072---------
11073* `Use unit test framework
11074  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183354>`__
11075
11076pw_web
11077------
11078* `Handle unrequested responses after call_id changes
11079  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184320>`__
11080* `Add support for call_id in RPC calls
11081  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160792>`__
11082* `Add Mocha and Jest global vars to ESLint
11083  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183931>`__
11084* `Switch to pre-made subset of icon fonts
11085  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156852>`__
11086  (issue `#287270736 <https://issues.pigweed.dev/issues/287270736>`__)
11087
11088Build
11089=====
11090* `Set Zephyr toolchain to llvm in presubmit
11091  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179170>`__
11092
11093Targets
11094=======
11095* `Point deprecated flag to new backend
11096  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184262>`__
11097* (stm32f429i_disc1) `Fix test runner
11098  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184378>`__
11099
11100Language support
11101================
11102* (Python) `Remove references to non-existing setup.py
11103  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182770>`__
11104
11105OS support
11106==========
11107* (Zephyr) `Remove unecessary toolchain downloads & filter invalid targets
11108  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184072>`__
11109
11110Docs
11111====
11112.. todo-check: disable
11113
11114* `Remove inaccurate #include statements
11115  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185190>`__
11116  (issue `#295023422 <https://issues.pigweed.dev/issues/295023422>`__)
11117* `Add Bazel code coverage TODO
11118  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182812>`__
11119  (issue `#304833225 <https://issues.pigweed.dev/issues/304833225>`__)
11120* `Add sort by alignment to size optimizations
11121  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184150>`__
11122* `Fix build command typo
11123  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184170>`__
11124* `Update changelog
11125  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183310>`__
11126
11127.. todo-check: disable
11128
11129SEEDs
11130=====
11131* `Always use build metadata titles in index table
11132  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183750>`__
11133* (SEED-0001) `Add section about SEEDs & code changes
11134  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177084>`__
11135* (SEED-0001) `Update number selection guidance
11136  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184223>`__
11137* SEED-0117) `Open for comments
11138  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184795>`__
11139* (SEED-0121) `Claim SEED number
11140  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184225>`__
11141
11142Miscellaneous
11143=============
11144* `Fix formatting after clang roll
11145  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184752>`__
11146
11147-----------
11148Dec 1, 2023
11149-----------
11150Highlights (Nov 17, 2023 to Dec 1, 2023):
11151
11152* We now have an auto-generated :ref:`seed-0000` that shows you the current
11153  status of all SEEDs.
11154* We've started implementing a :ref:`Rust API for pw_log
11155  <docs-changelog-20231201-pw_log>`.
11156* The :ref:`module-pw_alignment`, :ref:`module-pw_perf_test`, and
11157  :ref:`module-pw_status` docs were refactored to follow our latest
11158  :ref:`docs-contrib-docs-modules`.
11159
11160Active SEEDs
11161============
11162Help shape the future of Pigweed! Please visit :ref:`seed-0000`
11163and leave feedback on the RFCs (i.e. SEEDs) marked
11164``Open for Comments``.
11165
11166Modules
11167=======
11168
11169pw_alignment
11170------------
11171The :ref:`docs <module-pw_alignment>` were updated to follow our new
11172:ref:`docs-contrib-docs-modules`.
11173
11174* `Follow the new docs guidelines
11175  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181432>`__
11176
11177pw_allocator
11178------------
11179Utilities were added that make it easier to write tests for custom allocator
11180implementations. The metric collection API was refactored. CMake support for
11181heap poisoning was added.
11182
11183* `Fix use-after-free in ~AllocatorForTest
11184  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182950>`__
11185* `Add AllocationTestHarness
11186  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183032>`__
11187* `Add AllocationTestHarness
11188  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180532>`__
11189* `Refactor metric collection
11190  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180456>`__
11191* `Improve heap poisoning configuration
11192  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180372>`__
11193
11194pw_bluetooth
11195------------
11196* `Add LE Set Host Feature command
11197  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181770>`__
11198  (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__)
11199* `LE Request Peer SCA Complete event
11200  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182430>`__
11201  (issue `#311639272 <https://issues.pigweed.dev/issues/311639272>`__)
11202* `Fix LEExtendedAdvertisingReportData tx_power to be an Int
11203  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181756>`__
11204
11205pw_bluetooth_sapphire
11206---------------------
11207Migration of :ref:`module-pw_bluetooth_sapphire` into Pigweed has begun.
11208
11209* `Use pw_test_group for fuzzers target
11210  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183195>`__
11211  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
11212* `Use pw_fuzzer_group
11213  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183168>`__
11214  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
11215* `Add sales pitch & roadmap docs
11216  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181834>`__
11217  (issue `#312287470 <https://issues.pigweed.dev/issues/312287470>`__)
11218* `Add testonly to testing targets
11219  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182890>`__
11220  (issue `#136961 <https://issues.fuchsia.dev/issues/136961>`__)
11221* `Revert commits to get to a known working state
11222  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183014>`__
11223* `Use Write instead of UncheckedWrite
11224  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182734>`__
11225* `Remove now unnecessary use of std::optional
11226  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182490>`__
11227  (issue `#311256496 <https://issues.pigweed.dev/issues/311256496>`__)
11228* `Move LegacyLowEnergyScanner impl to base class
11229  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182017>`__
11230  (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
11231* `Create new LowEnergyScanner polymorphic methods
11232  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182016>`__
11233  (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
11234* `Extended scanning support, Fake(Controller|Peer)
11235  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182015>`__
11236  (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
11237* `Remove fidl fuzzer from build
11238  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182714>`__
11239  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
11240* `Use explicit constructor for SmartTask
11241  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182013>`__
11242* `Follow pigweed style for test files
11243  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182012>`__
11244* `Add OWNERS file
11245  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181759>`__
11246* `Delete unused build file
11247  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181830>`__
11248  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
11249* `Fix pragma_once lint
11250  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181394>`__
11251  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
11252* `Fix linter errors
11253  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181305>`__
11254  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
11255* `Fix bazel formatting
11256  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181303>`__
11257  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
11258* `Remove ICU from bazel build
11259  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181391>`__
11260  (issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__)
11261* `Refactor pw_bluetooth_sapphire & fix errors
11262  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173484>`__
11263  (issue `#42051324 <https://issues.fuchsia.dev/issues/42051324>`__)
11264* `Update copyright headers
11265  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177800>`__
11266
11267pw_build_info
11268-------------
11269* `Fix relative paths in Python tests
11270  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182681>`__
11271
11272pw_containers
11273-------------
11274A warning was added about ``pw::Vector`` being unsafe with
11275non-trivially-destructible, self-referencing types. See
11276`b/313899658 <https://issues.pigweed.dev/issues/313899658>`_.
11277
11278* `Warn about unsafe Vector usage
11279  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182970>`__
11280  (issue `#313899658 <https://issues.pigweed.dev/issues/313899658>`__)
11281
11282pw_format
11283---------
11284A ``core::fmt`` macro helper was added.
11285
11286* `Add core::fmt macro helper
11287  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178537>`__
11288
11289.. _docs-changelog-20231201-pw_log:
11290
11291pw_log
11292------
11293An initial Rust API has been added.
11294
11295* `Add initial Rust API
11296  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178538>`__
11297
11298pw_multibuf
11299-----------
11300* `Remove unused GN dep
11301  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183165>`__
11302* `Remove dep on external gtest
11303  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183158>`__
11304* `Make HeaderChunkRegionTracket public
11305  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183041>`__
11306* `Fix cmake build file
11307  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182898>`__
11308
11309pw_package
11310----------
11311* `Add ICU package
11312  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181269>`__
11313  (issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__)
11314
11315pw_perf_test
11316------------
11317The :ref:`docs <module-pw_perf_test>` have been refactored.
11318
11319* `Rename logging event handler files
11320  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178915>`__
11321* `Rework docs
11322  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179610>`__
11323
11324pw_presubmit
11325------------
11326.. todo-check: disable
11327
11328* `Automatically compute trim_prefix
11329  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183100>`__
11330  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
11331* `Allow full issues.pigweed.dev urls in TODO links
11332  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183095>`__
11333* `Fix TestTodoCheck.test_one_bug_legacy()
11334  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183094>`__
11335* `No coverage upload for shadow builds
11336  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183093>`__
11337  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
11338* `Remove some unused constants
11339  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183092>`__
11340* `Add is_shadow/is_prod members to context
11341  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183077>`__
11342* `Refactor the coverage options
11343  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182873>`__
11344  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
11345* `Show diffs when parser tests fail
11346  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182971>`__
11347* `Trim paths in Bazel summaries
11348  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182952>`__
11349* `Correct the codesearch_host
11350  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182850>`__
11351  (issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__)
11352* `Correct host in coverage presubmit
11353  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182702>`__
11354  (issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__)
11355* `Fix coverage options
11356  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182666>`__
11357  (issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__)
11358* `Add Fuchsia style to todo_check_with_exceptions
11359  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181433>`__
11360  (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__)
11361* `Create Sapphire presubmit step
11362  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177453>`__
11363  (issue `#42051324 <https://issues.fuchsia.dev/issues/42051324>`__)
11364
11365.. todo-check: enable
11366
11367pw_protobuf
11368-----------
11369* `Add common_py_pb2 target
11370  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182650>`__
11371  (issue `#309351244 <https://issues.pigweed.dev/issues/309351244>`__)
11372
11373pw_rpc
11374------
11375* `Initialize serde_ members to nullptr
11376  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182851>`__
11377
11378pw_rpc_transport
11379----------------
11380* `Unblock sockets when stopping
11381  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181308>`__
11382  (issue `#309680612 <https://issues.pigweed.dev/issues/309680612>`__)
11383
11384pw_sensor
11385---------
11386* `Reserve SEED for configuring sensors
11387  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182805>`__
11388* `Claim SEED number for high level view
11389  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182673>`__
11390
11391pw_status
11392---------
11393The :ref:`docs <module-pw_status>` have been refactored to follow
11394our latest :ref:`docs-contrib-docs-modules`.
11395
11396* `Adopt latest docs standard
11397  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181181>`__
11398
11399pw_string
11400---------
11401* `Add missing include
11402  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183233>`__
11403
11404pw_system
11405---------
11406* `Load all domain tokens
11407  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181231>`__
11408* `Style fixes to Python scripts
11409  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182661>`__
11410* `Add missing dependency on pw_trace
11411  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181350>`__
11412
11413pw_tokenizer
11414------------
11415* `Move entry header to a separate struct
11416  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183193>`__
11417* `Catch accidental use of test macro
11418  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183192>`__
11419* `Fix NULL dereference in fuzz harness
11420  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182710>`__
11421* `Move ReadUint32
11422  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169714>`__
11423
11424pw_toolchain
11425------------
11426The Arm toolchain has been updated to use the new toolchain specified
11427in :ref:`seed-0113`. A helper for registering C/C++ toolchains in Bazel
11428was added to enable upstream Pigweed to make changes without needing to
11429manually update downstream projects. See
11430:ref:`module-pw_toolchain-bazel-upstream-pigweed-toolchains`.
11431
11432* `Move ARM toolchain to new API
11433  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183160>`__
11434  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
11435* `Use action configs from LLVM tool repo
11436  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183010>`__
11437  (issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__)
11438* `Add Bazel toolchain registration helper
11439  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183157>`__
11440  (issue `#301336229 <https://issues.pigweed.dev/issues/301336229>`__)
11441* `Merge host toolchains
11442  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181760>`__
11443* `Expose non-hermetic toolchain
11444  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181330>`__
11445  (issue `#299151946 <https://issues.pigweed.dev/issues/299151946>`__)
11446* `Only fetch compatible Rust toolchains
11447  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181306>`__
11448
11449pw_toolchain/arm_clang
11450----------------------
11451* `Reduce binary size
11452  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169576>`__
11453  (issue `#254541584 <https://issues.pigweed.dev/issues/254541584>`__)
11454
11455pw_toolchain_bazel
11456------------------
11457Support for binding tools to toolchains was added. See :py:class:`pw_cc_tool`
11458and :py:class:`pw_cc_action_config`. Support for featureless sysroots was
11459added. See :py:attr:`pw_cc_toolchain.builtin_sysroot` and
11460:py:attr:`pw_cc_toolchain.cxx_builtin_include_directories`.
11461
11462* `Remove deprecated API
11463  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183235>`__
11464  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
11465* `Rename build file templates part 2/2
11466  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183187>`__
11467* `Rename build file templates part 1/2
11468  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183186>`__
11469* `Add LLVM clang tool template
11470  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182969>`__
11471  (issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__)
11472* `Add ARM GCC toolchain template
11473  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182968>`__
11474  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
11475* `Support featureless sysroots
11476  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181833>`__
11477  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
11478* `Mirror features to be flag sets
11479  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181832>`__
11480  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
11481* `Add initial pw_cc_action_config support
11482  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180842>`__
11483  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
11484
11485pw_transfer
11486-----------
11487Commands in the :ref:`integration test docs
11488<module-pw_transfer-integration-tests>` were updated and docs were
11489added that explain how to :ref:`run more than one instance of tests
11490in parallel <module-pw_transfer-parallel-tests>`.
11491
11492* `Update integration test documentation
11493  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183163>`__
11494* `Set clients to transfer_v2
11495  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183050>`__
11496  (issue `#309686987 <https://issues.pigweed.dev/issues/309686987>`__)
11497* `Limit to sending a single chunk in tests
11498  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182665>`__
11499  (issue `#295037376 <https://issues.pigweed.dev/issues/295037376>`__)
11500* `Don't "block-network" by default
11501  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182010>`__
11502  (issue `#311297881 <https://issues.pigweed.dev/issues/311297881>`__)
11503* `Use StatusCode in integration tests
11504  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180828>`__
11505* `Make integration_test_server testonly, fix fx roller
11506  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182019>`__
11507  (issue `#312493408 <https://issues.pigweed.dev/issues/312493408>`__)
11508* `Tag integration tests block-network
11509  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181297>`__
11510  (issue `#311297881 <https://issues.pigweed.dev/issues/311297881>`__)
11511
11512pw_unit_test
11513------------
11514* `Skip googletest tests if not set
11515  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183089>`__
11516
11517pw_web
11518------
11519* `Install Web Test Runner and dependencies
11520  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181870>`__
11521
11522Build
11523=====
11524
11525Bazel
11526-----
11527More Bazel information has been added to :ref:`docs-module-structure`.
11528
11529* `Add simple module configuration mechanism
11530  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181032>`__
11531  (issue `#234872811 <https://issues.pigweed.dev/issues/234872811>`__)
11532* `Tidy up WORKSPACE
11533  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181292>`__
11534* `Rename Python toolchains
11535  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181762>`__
11536  (issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__)
11537* `Remove py_proto_library wrapper
11538  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180825>`__
11539  (issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__)
11540* `Use py_proto_library from rules_python
11541  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180537>`__
11542* `Partial pw_system_console fix
11543  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181304>`__
11544  (issue `#310307709 <https://issues.pigweed.dev/issues/310307709>`__)
11545
11546Docs
11547====
11548The tool that we use to semi-automate these changelog updates has been
11549added to the main Pigweed repository. Try out the tool on
11550:ref:`docs-contrib-docs-changelog` and see ``//docs/_static/js/changelog.js``
11551to view its implementation.
11552
11553* `Gerrit code coverage documentation
11554  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182799>`__
11555  (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__)
11556* `Move copyright header info to style guide
11557  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182795>`__
11558* `Document the Test footer
11559  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181752>`__
11560* `Add changelog update instructions and tool
11561  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181765>`__
11562* `Update changelog
11563  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181393>`__
11564
11565SEEDs
11566=====
11567We now have an auto-generated :ref:`seed-0000` that shows you the current
11568status of all SEEDs.
11569
11570* `Generate the SEED index table
11571  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181267>`__
11572* (SEED-0114) `Update status; format header in table
11573  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182872>`__
11574* (SEED-0114) `Channels
11575  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
11576* (SEED-0118) `Claim SEED number
11577  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182654>`__
11578* (SEED-0118) `Claim SEED number
11579  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181837>`__
11580
11581Third party
11582===========
11583* `Add GN rules for ICU
11584  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181311>`__
11585  (issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__)
11586
11587------------
11588Nov 15, 2023
11589------------
11590Highlights (Nov 02, 2023 to Nov 15, 2023):
11591
11592* The API for writing proc macros with pw_format was simplified.
11593* ``pw_emu`` added a command for resuming the execution of paused emulators
11594  and now has limited support for inserting environment variables into
11595  configuration entries.
11596* ``pw_ide`` can now output logs to files.
11597* ``pw_unit_test`` added support for GoogleTest's
11598  ``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds``.
11599* Pigweed's :ref:`docs-mission` are now documented.
11600
11601Active SEEDs
11602============
11603Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
11604
11605* `SEED-0114: Channels
11606  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
11607* `SEED-0115: Sensors
11608  <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__
11609* `SEED-0116: Sockets
11610  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177696>`__
11611
11612Modules
11613=======
11614
11615pw_allocator
11616------------
11617The ``...Unchecked`` methods have been removed from the
11618``pw::allocator::Allocator`` interface and the NVI-style ``Do...`` methods
11619have been modified to take ``Layout`` parameters.
11620
11621* `Update interface based on final SEED-0110 design
11622  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176754>`__
11623* `Refactor test support and example allocator
11624  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177653>`__
11625  (issue `#306686936 <https://issues.pigweed.dev/issues/306686936>`__)
11626
11627pw_analog
11628---------
11629* `Mark libs as test only in bazel
11630  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179612>`__
11631  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
11632
11633pw_console
11634----------
11635``SocketClient`` has been updated to support both IPv4 and IPv6 addresses
11636in addition to Unix sockets.
11637
11638* `Add docs banner
11639  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180824>`__
11640* `Improve SocketClient addressing
11641  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178921>`__
11642
11643pw_emu
11644------
11645There is now limited supported for inserting environment variable values
11646into configuration entries. A command for resuming the execution
11647of a paused emulator was added.
11648
11649* `Add support for substitutions in config entries
11650  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179150>`__
11651  (issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__)
11652* `Add resume command to CLI
11653  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179030>`__
11654  (issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__)
11655* `Fix CLI gdb and load commands
11656  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178922>`__
11657  (issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__)
11658
11659pw_env_setup
11660------------
11661* `Make pigweed_environment.gni content gni-relative
11662  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180991>`__
11663* `Update Bazel to 7.0.0 pre-release
11664  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178950>`__
11665
11666pw_format
11667---------
11668The API for writing `proc macros </rustdoc/pw_format/#proc-macros>`__ that take
11669format strings and arguments was simplified.
11670
11671* `Add tests for macro helpers
11672  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181030>`__
11673* `Generalize format macro handling
11674  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178132>`__
11675
11676pw_fuzzer
11677---------
11678* `Move \`Domain\` from fuzztest::internal to fuzztest
11679  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178213>`__
11680* `Switch oss-fuzz build to Bazel
11681  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175618>`__
11682
11683pw_i2c
11684------
11685* `Mark libs as test only in bazel
11686  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179836>`__
11687  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
11688
11689pw_ide
11690------
11691Logs can now be output to files.
11692
11693* `Set 3-space tabs in VS Code
11694  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179671>`__
11695* `Support output to logs
11696  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163573>`__
11697* `Remove redundant licence
11698  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179613>`__
11699* `Remove clangd auto-restart
11700  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171691>`__
11701* `Make Sphinx extensions upstream-only
11702  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171690>`__
11703* `VSC extension 0.1.1 release
11704  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171070>`__
11705
11706pw_perf_test
11707------------
11708* `Reogranize source files
11709  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178914>`__
11710
11711pw_presubmit
11712------------
11713* `Create new fuzz program
11714  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181134>`__
11715  (issue `#311215681 <https://issues.pigweed.dev/issues/311215681>`__)
11716* `Add examples showing how to create formatters
11717  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180310>`__
11718* `Correct coverage ref
11719  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179452>`__
11720  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
11721
11722pw_stream
11723---------
11724* `Fix use of shutdown on Windows
11725  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180401>`__
11726  (issue `#309680612 <https://issues.pigweed.dev/issues/309680612>`__)
11727
11728pw_system
11729---------
11730* `Add tracing to the demo system
11731  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168834>`__
11732
11733pw_system_demo
11734--------------
11735* `Add clang to default stm32f4 build
11736  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178930>`__
11737  (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
11738
11739pw_tokenizer
11740------------
11741* `Add Java to supported languages list
11742  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179251>`__
11743
11744pw_toolchain
11745------------
11746* `Set alwayslink = 1 when using --wrap
11747  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180930>`__
11748* `Add objdump
11749  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175810>`__
11750
11751pw_toolchain_bazel
11752------------------
11753Core building blocks from the :ref:`seed-0113` plan were implemented:
11754:py:class:`pw_cc_flag_set` and :py:class:`pw_cc_flag_group`.
11755
11756* `Introduce pw_cc_flag_set and pw_cc_flag_group
11757  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179932>`__
11758  (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__)
11759
11760pw_trace_tokenized
11761------------------
11762* `Add a transfer based trace service
11763  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168833>`__
11764
11765pw_transfer
11766-----------
11767There's been a concerted effort to reduce ``pw_transfer`` test flakiness.
11768
11769* `Limit data sent in handler clear test
11770  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180951>`__
11771  (issue `#297355578 <https://issues.pigweed.dev/issues/297355578>`__)
11772* `Limit data sent in manual cancel test
11773  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180826>`__
11774* `Use project-absolute imports for test fixture
11775  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180390>`__
11776  (issue `#310038737 <https://issues.pigweed.dev/issues/310038737>`__)
11777* `Prevent accidental timeouts in unit tests
11778  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180274>`__
11779
11780pw_unit_test
11781------------
11782The :ref:`module-pw_unit_test-api-expect` and
11783:ref:`module-pw_unit_test-api-assert` APIs were documented. Support for
11784GoogleTest's ``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds`` was
11785added.
11786
11787* `Document ASSERT_ and EXPECT_ macros
11788  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179873>`__
11789* `Include the right gmock header
11790  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180030>`__
11791  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
11792* `Mark libs as test only in bazel
11793  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179874>`__
11794  (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__)
11795* `Support *_NEAR, *_FLOAT_EQ, *_DOUBLE_EQ
11796  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179770>`__
11797* `Allow googletest_test_matchers_test to run
11798  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179450>`__
11799* `Add more googletest test matchers
11800  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179151>`__
11801* `Add googletest test matchers
11802  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177878>`__
11803
11804pw_watch
11805--------
11806Support for ``httpwatcher`` was removed because it's not supported on modern
11807versions of Python.
11808
11809* `Remove httpwatcher support
11810  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179250>`__
11811  (issue `#304603192 <https://issues.pigweed.dev/issues/304603192>`__)
11812
11813pw_web
11814------
11815The log viewer has been polished and testing has been enhanced.
11816
11817* `Fix LogViewControls responsive behavior
11818  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179470>`__
11819  (issue `#308993282 <https://issues.pigweed.dev/issues/308993282>`__)
11820* `Resume autoscroll with clear logs event
11821  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179252>`__
11822* `Fix clear logs due to error thrown handling input text
11823  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176867>`__
11824* `Add manual testing page in docs
11825  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178923>`__
11826  (issue `#288587657 <https://issues.pigweed.dev/issues/288587657>`__)
11827
11828Build
11829=====
11830* `Update the default C++ standard
11831  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178913>`__
11832
11833Bazel
11834-----
11835* `Upgrade nanopb version
11836  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180871>`__
11837* `Update comment
11838  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180815>`__
11839* `Set --incompatible_default_to_explicit_init_py
11840  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180454>`__
11841  (issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__)
11842* `Make pw_cc_library an alias for cc_library
11843  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178924>`__
11844  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
11845* `Don't disable use_header_modules
11846  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178565>`__
11847  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
11848
11849Targets
11850=======
11851.. todo-check: disable
11852
11853* (``stm32f429i_disc1_stm32cube``)
11854  `Update TODO
11855  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179172>`__
11856
11857.. todo-check: enable
11858
11859Language support
11860================
11861* (Python) `Update constraint.list
11862  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179614>`__
11863* (Python) `Upgrade parameterized package
11864  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179451>`__
11865
11866Docs
11867====
11868A document about Pigweed's :ref:`docs-mission` was added. The
11869:ref:`style guide <docs-pw-style>` was split into multiple pages.
11870
11871* `Update Pigweed Live dates
11872  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181031>`__
11873* `Add mission & philosophies
11874  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178910>`__
11875* `Add Contribution Standards section
11876  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179171>`__
11877* `Add details to codependent docs
11878  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179879>`__
11879* `Update changelog
11880  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178911>`__
11881  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
11882* `Split the style guide: Doxygen & Sphinx
11883  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178912>`__
11884* `Split the style guide: C++
11885  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178952>`__
11886* `Split the style guide: commit style
11887  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178490>`__
11888
11889SEEDs
11890=====
11891* (SEED-0110) `Correct status
11892  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179436>`__
11893* (SEED-0110) `Memory Allocation Interfaces
11894  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
11895* (SEED-0113) `Add modular Bazel C/C++ toolchain API
11896  <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__
11897
11898-----------
11899Nov 3, 2023
11900-----------
11901Highlights (Oct 19, 2023 to Nov 3, 2023):
11902
11903* A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented.
11904* :ref:`module-pw_format` is a new module dedicated to Rust format string parsing.
11905* The tokenizer prefix is now configurable via
11906  ``PW_TOKENIZER_NESTED_PREFIX_STR``.
11907* References to C++14 have been removed throughout the codebase. Pigweed no
11908  longer supports C++14; C++17 or newer is required.
11909* The upstream Pigweed GN build is now
11910  :ref:`more isolated <docs-changelog-20231103-pw_build>` so that downstream
11911  projects have less conflicts when importing Pigweed into their existing GN
11912  build.
11913* Build configuration is moving away from Bazel macros like ``pw_cc_library``
11914  and towards the toolchain configuration so that downstream projects can have
11915  :ref:`full control <docs-changelog-20231103-bazel>` over how Pigweed libraries
11916  are built.
11917* New guidelines for authoring module docs have been published at
11918  :ref:`docs-contrib-docs-modules`. :ref:`module-pw_string` is now an example
11919  of a "golden" module docs set that follows the new guidelines. Please leave
11920  feedback on the new guidelines (and module docs updated to follow the
11921  guidelines) in `issue #309123039 <https://issues.pigweed.dev/issues/309123039>`__.
11922
11923
11924Active SEEDs
11925============
11926Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
11927
11928* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
11929* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
11930* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
11931* `SEED-0113: Modular Bazel C/C++ Toolchain API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__
11932* `SEED-0114: Channels <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
11933* `SEED-0115: Sensors <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__
11934* `SEED-0116: Sockets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177696>`__
11935
11936Modules
11937=======
11938
11939pw_allocator
11940------------
11941The docs now have an auto-generated size report.
11942``pw::allocator::SplitFreeListAllocator`` has a new ``blocks()`` method for getting the
11943range of blocks being tracked. The class was also refactored to
11944use the existing ``Block`` API. The ``Block`` API itself was refactored to
11945encode offsets and flags into fields.
11946
11947* `Add size reporting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178370>`__
11948* `Return Range from SplitFreeListAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177807>`__
11949* `Refactor SplitFreeListAllocator to use Block <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176579>`__
11950* `Refactor Block to use encoded offsets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176578>`__
11951
11952pw_arduino_build
11953----------------
11954* `STM32 Core fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177750>`__
11955
11956pw_assert
11957---------
11958* `Update print_and_abort backend formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177845>`__
11959
11960pw_bluetooth
11961------------
11962More :ref:`Emboss <module-pw_third_party_emboss>` definitions were added.
11963
11964.. todo-check: disable
11965
11966* `Add TODO for issue 308794058 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151070>`__
11967  (issue `#308794058 <https://issues.pigweed.dev/issues/308794058>`__)
11968* `Remove anonymous entry in LEPeerAddressTypeNoAnon <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177881>`__
11969* `Separate LEAddressType and LEExtendedAddressType <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178010>`__
11970* `Define LEExtendedCreateConnectionV1 Emboss structure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176574>`__
11971  (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
11972* `Define LEEnhancedConnectionCompleteSubeventV1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176576>`__
11973  (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__)
11974* `Remove padding from Emboss command definitions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176772>`__
11975
11976.. todo-check: enable
11977
11978.. _docs-changelog-20231103-pw_build:
11979
11980pw_build
11981--------
11982Pigweed used to inject a selection of recommended configs into every ``pw_*``
11983C/C++ target in the GN build. These were previously only possible to remove
11984with the ``remove_configs`` argument. These configs are now bundled with
11985toolchains instead, and if you don't use a Pigweed-style toolchain you'll
11986no longer need to find ways to strip the default configs from Pigweed build rules.
11987More importantly, this changes makes Pigweed's recommended configs behave
11988identically to other toolchain configs, and they're now more clearly part of
11989GN toolchain definitions. This change is transparent to most projects, but some
11990Pigweed customers have been asking for this for a while.
11991
11992The :ref:`module-pw_build-bazel-empty_cc_library` Bazel utility was added.
11993
11994* `Add empty_cc_library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178555>`__
11995* `Remove pw_build_default_configs_in_toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177894>`__
11996* `Apply pigweed_default_configs in toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120610>`__
11997  (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
11998* `Fix blob attribute ordering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177458>`__
11999* `Only use -Wextra-semi on C++ files with GCC <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177171>`__
12000  (issues `#301262374 <https://issues.pigweed.dev/issues/306734552>`__,
12001  `#301262374 <https://issues.pigweed.dev/issues/301262374>`__)
12002* `Silence Windows-specific warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177172>`__
12003
12004pw_bytes
12005--------
12006A new ``_b`` literal was added to make it easier to create bytes for tests
12007and constants.
12008
12009* `Add _b suffix for byte literals <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178134>`__
12010
12011pw_containers
12012-------------
12013The reference docs for the variable length entry queue API in C and Python
12014were updated.
12015
12016* `Update VariableLengthEntryQueue size functions; cleanup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173454>`__
12017
12018pw_digital_io_mcuxpresso
12019------------------------
12020* `Remove RT595 size def <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178353>`__
12021
12022pw_doctor
12023---------
12024* `Trivial linter fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176939>`__
12025
12026pw_emu
12027------
12028* `renode: Show more details when failing to connect <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178563>`__
12029  (issue `#307736513 <https://issues.pigweed.dev/issues/307736513>`__)
12030
12031pw_env_setup
12032------------
12033``pip`` has been pinned to ``23.2.1`` and ``pip-tools`` to ``7.3.0`` to
12034prevent dependency resolution problems.
12035
12036* `Pin pip and pip-tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177834>`__
12037* `Update protoc to [email protected] <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177050>`__
12038  (issue `#306461552 <https://issues.pigweed.dev/issues/306461552>`__)
12039
12040pw_format
12041---------
12042:ref:`module-pw_format` is a new module dedicated to Rust format string parsing.
12043
12044* `Correct crate name in docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178078>`__
12045* `Move Rust format string parsing into its own module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168362>`__
12046
12047pw_fuzzer
12048---------
12049* `Inline NonOkStatus() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178212>`__
12050* `Fix instrumentation config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178214>`__
12051
12052.. _docs-changelog-20231103-pw_hdlc:
12053
12054pw_hdlc
12055-------
12056Using read callbacks in ``RpcClient`` is no longer accepted and the use of
12057``CancellableReader`` is now enforced because it provides a safe and clean
12058shutdown process.
12059
12060* `Enforce use of CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173618>`__
12061  (issue `#301496598 <https://issues.pigweed.dev/issues/301496598>`__)
12062
12063pw_libcxx
12064---------
12065:ref:`module-pw_libcxx` is a new module that provides ``libcxx`` symbols and
12066will eventually facilitate pulling in headers as well.
12067
12068* `Add pw_libcxx library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144970>`__
12069
12070pw_log
12071------
12072A :ref:`module-pw_log-bazel-backend_impl` label flag was added to Bazel to
12073avoid circular dependencies.
12074
12075* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__
12076  (issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__)
12077* `Introduce backend_impl label flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177842>`__
12078  (issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__)
12079
12080pw_multibuf
12081-----------
12082A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented.
12083
12084* `Add basic MultiBuf operations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178036>`__
12085* `Add Chunk::Merge <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177636>`__
12086* `Fix TrackingAllocatorWithMemory UAF <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177694>`__
12087* `Add module and Chunk implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173951>`__
12088
12089pw_package
12090----------
12091* `Use mirror for stm32cube <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/142510>`__
12092  (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
12093* `Fix Zephyr URL <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177456>`__
12094
12095pw_presubmit
12096------------
12097A CSS formatter was added.
12098
12099* `Add basic CSS formatter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178810>`__
12100  (issue `#308948504 <https://issues.pigweed.dev/issues/308948504>`__)
12101* `Kalypsi-based coverage upload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175070>`__
12102  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
12103* `Handle missing upstream better <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177038>`__
12104  (issue `#282808936 <https://issues.pigweed.dev/issues/282808936>`__)
12105* `Trivial linter fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176939>`__
12106
12107pw_protobuf
12108-----------
12109* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__
12110  (issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__)
12111
12112pw_rpc
12113------
12114:ref:`pw::rpc::SynchronousCallFor() <module-pw_rpc-client-sync-call-wrappers>`
12115now supports :ref:`DynamicClient <module-pw_rpc_pw_protobuf-client>`.
12116
12117* `Update Java service error with tip <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178812>`__
12118  (issue `#293361955 <https://issues.pigweed.dev/issues/293361955>`__)
12119* `Support DynamicClient with SynchronousCallFor API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177637>`__
12120
12121pw_string
12122---------
12123The docs were updated to match the new :ref:`docs-contrib-docs-modules`.
12124
12125* `Docs tweaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177883>`__
12126
12127pw_sys_io
12128---------
12129Backends that depend on ``default_putget_bytes`` were updated to express the
12130dependency.
12131
12132* `Fix Bazel backends <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177656>`__
12133
12134pw_system
12135---------
12136See :ref:`docs-changelog-20231103-pw_hdlc` for an explanation of the
12137``CancellableReader`` change.
12138
12139* `Enforce use of CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173618>`__
12140  (issue `#301496598 <https://issues.pigweed.dev/issues/301496598>`__)
12141
12142pw_tls_client
12143-------------
12144* `Update to new boringssl API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178150>`__
12145
12146pw_tokenizer
12147------------
12148The tokenizer prefix is now configurable via ``PW_TOKENIZER_NESTED_PREFIX_STR``.
12149
12150* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__
12151  (issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__)
12152* `Let tokenizer prefix be configurable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177575>`__
12153
12154pw_toolchain
12155------------
12156You can now set the ``dir_pw_third_party_builtins`` GN var to your
12157``compiler-rt/builtins`` checkout to enable buildings LLVM ``builtins`` from
12158source instead of relying on a shipped ``libgcc``.
12159
12160* `Apply pigweed_default_configs in toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120610>`__
12161  (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
12162* `Build compiler-rt builtins to replace libgcc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144050>`__
12163
12164pw_unit_test
12165------------
12166* `Pass verbose flag to TestRunner <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177470>`__
12167
12168pw_web
12169------
12170* `Limit component rerendering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177810>`__
12171  (issue `#307559191 <https://issues.pigweed.dev/issues/307559191>`__)
12172
12173Build
12174=====
12175References to C++14 have been removed throughout the codebase. Pigweed no
12176longer supports C++14; C++17 or newer is required.
12177
12178* `Drop C++14 compatibility from the build and docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177610>`__
12179
12180.. _docs-changelog-20231103-bazel:
12181
12182Bazel
12183-----
12184Build configuration is moving away from Bazel macros like ``pw_cc_library``
12185and towards the toolchain configuration so that downstream projects can have
12186full control over how Pigweed libraries are built.
12187
12188* `Move Kythe copts to toolchain configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178592>`__
12189  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
12190* `Move warnings to toolchain configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178557>`__
12191  (issue `#240466562 <https://issues.pigweed.dev/issues/240466562>`__)
12192* `Silence warnings from external code <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178436>`__
12193  (issue `#300330623 <https://issues.pigweed.dev/issues/300330623>`__)
12194* `stm32cube support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177134>`__
12195* `Remove most copts from pw_cc_library macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170824>`__
12196  (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__)
12197
12198Targets
12199=======
12200``pw_assert_BACKEND`` for :ref:`target-host` was set to
12201``print_and_abort_check_backend`` to enable compatibility with GoogleTest death
12202tests.
12203
12204* (``host``) `Change pw_assert_BACKEND <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177835>`__
12205
12206OS support
12207==========
12208* (``zephyr``) `Update checkout to v3.5 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177669>`__
12209
12210Docs
12211====
12212New guidelines for authoring module docs have been published at
12213:ref:`docs-contrib-docs-modules`. :ref:`module-pw_string` is now an example
12214of a "golden" module docs set that follows the new guidelines. Please leave
12215feedback on the new guidelines (and module docs updated to follow the
12216guidelines) in `issue #309123039 <https://issues.pigweed.dev/issues/309123039>`__.
12217
12218There's now a definition for :ref:`docs-glossary-facade` in the glossary.
12219
12220* `Update module docs authoring guidelines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177465>`__
12221* `Fix nav and main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178591>`__
12222  (issue `#303261476 <https://issues.pigweed.dev/issues/303261476>`__)
12223* `Add udev instructions to Bazel Get Started <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178435>`__
12224* `Add information on the experimental repo to contributing.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178272>`__
12225* `Mention command for updating Py dep hashes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177799>`__
12226* `Define facade in glossary <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177632>`__
12227* `Remove symlinks to files that were removed <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177530>`__
12228* `Mention upstream development guide in contributor guidelines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177459>`__
12229* `Move all images out of the repo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176751>`__
12230* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177085>`__
12231  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
12232* `Move CoC to Contributors section of sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177071>`__
12233
12234SEEDs
12235=====
12236* (SEED-0107) `Update SEED references; fix typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177698>`__
12237* (SEED-0112) `Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__
12238* (SEED-0115) `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177093>`__
12239* (SEED-0116) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177697>`__
12240
12241Third party
12242===========
12243* (nanopb) `Detect protoc updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177650>`__
12244
12245------------
12246Oct 20, 2023
12247------------
12248Highlights (Oct 5, 2023 to Oct 20, 2023):
12249
12250* ``pw_emu`` has launched! Check out :ref:`module-pw_emu` to get started.
12251  See :ref:`seed-0108` for background.
12252* :ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105`
12253  for background.
12254* The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler
12255  RAII API for allocating individual values within an allocator.
12256* A few SEEDs were accepted: :ref:`seed-0105`, :ref:`seed-0109`, and
12257  :ref:`seed-0111`.
12258* Lots of new docs, including a guide for
12259  :ref:`getting started with Bazel <docs-get-started-bazel>`, a
12260  conceptual explanation of :ref:`facades and backends <docs-facades>`,
12261  and an eng blog post detailing :ref:`Kudzu <docs-blog-01-kudzu>`, an
12262  electronic badge that the Pigweed team made for Maker Faire 2023.
12263
12264Active SEEDs
12265============
12266Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
12267
12268* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
12269* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
12270* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
12271* `SEED-0113: Modular Bazel C/C++ Toolchain API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__
12272* `SEED-0114: Channels <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__
12273* `SEED-0115: Sensors <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__
12274
12275Modules
12276=======
12277
12278pw_allocator
12279------------
12280The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler
12281RAII API for allocating individual values within an allocator.
12282
12283* `Fix SplitFreeListAllocator region alignment <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175232>`__
12284* `Add UniquePtr\<T\> <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176781>`__
12285
12286pw_async
12287--------
12288* `Add CMake support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175475>`__
12289
12290pw_async_basic
12291--------------
12292* `Add missing include <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175476>`__
12293* `Fix build error when using pw_async:heap_dispatcher <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173480>`__
12294
12295pw_bluetooth
12296------------
12297* `Define LEChannelSelectionAlgorithmSubevent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176577>`__
12298* `Define LEScanTimeoutSubevent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176575>`__
12299  (issue `#265052417 <https://issues.pigweed.dev/issues/265052417>`__)
12300* `Use $size_in_bits instead of hardcoding size <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176573>`__
12301* `Switch from parameterized value to determining at run time <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176572>`__
12302  (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__)
12303* `Fix size reports <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173620>`__
12304
12305pw_build
12306--------
12307:ref:`module-pw_build-bazel-pw_linker_script` now describes how to work
12308with linker scripts.
12309
12310* `Update pw_linker_script docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174848>`__
12311* `Move pw_linker_script rule definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174872>`__
12312
12313pw_chre
12314-------
12315* `Remove TODOs for CHRE MacOS support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175490>`__
12316
12317pw_cli
12318------
12319* `Honor NO_COLOR and CLICOLOR_FORCE <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176860>`__
12320* `Use typing.Literal <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176778>`__
12321
12322pw_digital_io
12323-------------
12324* `Add Android.bp for proto/rpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176270>`__
12325
12326pw_emu
12327------
12328The module has launched! Check out :ref:`module-pw_emu` to get started.
12329
12330* `renode: Increase start timeout to 120s <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176865>`__
12331* `Fix pid file race condition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176782>`__
12332* `mock_emu: start listening before making the port available <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176856>`__
12333  (issue `#306155313 <https://issues.pigweed.dev/issues/306155313>`__)
12334* `qemu: Force using IPv4 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176430>`__
12335  (issue `#305810466 <https://issues.pigweed.dev/issues/305810466>`__)
12336* `Add renode support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173613>`__
12337* `Add QEMU support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173612>`__
12338* `core: Let the OS terminate foreground emulator processes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175638>`__
12339* `Add user APIs and the command line interface <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173611>`__
12340* `Add core components <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173610>`__
12341* `Add Emulators Frontend module boilerplate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162096>`__
12342
12343pw_env_setup
12344------------
12345* `Allow disabling CIPD cache <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176650>`__
12346* `Add prpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175236>`__
12347
12348pw_function
12349-----------
12350* `Move pw_function_CONFIG to .gni <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173652>`__
12351
12352pw_hdlc
12353-------
12354:ref:`module-pw_hdlc-api-rpc` now has much more information on how to use
12355``pw_hdlc`` for RPC in Python.
12356
12357* `Update Python RPC documents <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174825>`__
12358
12359pw_i2c
12360------
12361* `Fix accidental c++2a <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176511>`__
12362* `Add Android.bp for i2c proto/rpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176070>`__
12363
12364pw_kvs
12365------
12366The new ``FlashPartitionWithLogicalSectors`` variant of ``FlashPartition``
12367supports combining multiple physical ``FlashMemory`` sectors into a single
12368logical ``FlashPartition`` sector.
12369
12370* `Add FlashPartitionWithLogicalSectors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/106917>`__
12371
12372pw_log_tokenized
12373----------------
12374:ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105` for background.
12375
12376* `Add tokenized string args support to log backend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164514>`__
12377
12378pw_log_zephyr
12379-------------
12380* `Clean-up unused dependencies from TOKENIZED_LIB <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174813>`__
12381
12382pw_minimal_cpp_stdlib
12383---------------------
12384* `Support additional libraries <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173814>`__
12385* `Add Zephyr Kconfig to enable include path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173653>`__
12386
12387pw_package
12388----------
12389* `Update boringssl commit & skip clang-tidy <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175016>`__
12390* `Update Emboss commit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173619>`__
12391
12392pw_presubmit
12393------------
12394:ref:`module-pw_presubmit-presubmit-checks` has more guidance on when to use
12395``--base`` and ``--full``.
12396
12397* `Add note about --full and --base <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175633>`__
12398
12399pw_snapshot
12400-----------
12401* `More detokenization tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176759>`__
12402
12403pw_spi
12404------
12405* `Fix cmake integration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175190>`__
12406
12407pw_sync_zephyr
12408--------------
12409* `Add TimedThreadNotification::try_acquire_until <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175478>`__
12410
12411pw_system
12412---------
12413The ``Device`` class's constructor now accepts a ``logger`` argument
12414that enables you to specify which logger should be used.
12415
12416* `Add option to pass logger to Device <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175075>`__
12417
12418pw_third_party_freertos
12419-----------------------
12420* `Add arm_cm7_not_r0p1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172382>`__
12421
12422pw_thread
12423---------
12424* `More detokenization tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176759>`__
12425
12426pw_thread_freertos
12427------------------
12428* `Fix extra wakeups when detaching threads <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175310>`__
12429  (issue `#303885539 <https://issues.pigweed.dev/issues/303885539>`__)
12430
12431pw_tokenizer
12432------------
12433:ref:`module-pw_tokenizer-get-started-integration` has new guidance around
12434configuring linker scripts in Bazel.
12435
12436* `Expose linker_script in BUILD.bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175590>`__
12437
12438pw_toolchain
12439------------
12440* `Exclude googletest from static analysis <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173482>`__
12441
12442pw_transfer
12443-----------
12444* `Start the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170011>`__
12445  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
12446
12447pw_web
12448------
12449* `Reduce table cell padding <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176690>`__
12450  (issue `#305022558 <https://issues.pigweed.dev/issues/305022558>`__)
12451* `Fix invisible jump button <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175330>`__
12452* `Enable manual color scheme setting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173630>`__
12453  (issue `#301498553 <https://issues.pigweed.dev/issues/301498553>`__)
12454
12455Build
12456=====
12457* `Fix pw_BUILD_BROKEN_GROUPS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176114>`__
12458* `Update Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175631>`__
12459  (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__)
12460
12461Bazel
12462-----
12463* `Don't autodetect C++ toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175613>`__
12464  (issue `#304880653 <https://issues.pigweed.dev/issues/304880653>`__)
12465* `Add O2 to arm_gcc toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175536>`__
12466  (issue `#299994234 <https://issues.pigweed.dev/issues/299994234>`__)
12467
12468Targets
12469=======
12470* (rp2040_pw_system) `Enable time slicing <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175074>`__
12471
12472OS support
12473==========
12474* (zephyr) `Allow direct CMake inclusions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175477>`__
12475
12476Docs
12477====
12478* `Move CoC to Contributors section of sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177071>`__
12479* `Create concepts section in sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177037>`__
12480* `Add facades and backends page <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170602>`__
12481* `Add Bazel getting started tutorial <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176319>`__
12482* `Remove css class on Kudzu image captions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176770>`__
12483* `Kudzu photos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176710>`__
12484* `Refactor the getting started section <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176331>`__
12485* `Add sitemap <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176492>`__
12486* `Add hat tip for pixel doubling technique <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175639>`__
12487* `Start eng blog and add Kudzu page <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175619>`__
12488* `Add Pigweed Live directive <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174892>`__
12489* `Add builder viz to CI/CQ intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175414>`__
12490  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
12491* `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175415>`__
12492  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
12493* `Add changelog highlight <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175231>`__
12494* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174818>`__
12495
12496SEEDs
12497=====
12498A few SEEDs were accepted and a few more started.
12499
12500* (SEED-0105) `Add nested tokens to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
12501* (SEED-0109) `Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
12502* (SEED-0111) `Update status, add link to SEED-0113 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176254>`__
12503* (SEED-0111) `Make Bazel Pigweed's Primary Build System <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__
12504* (SEED-0113) `Claim SEED number (Modular Bazel C/C++ Toolchain API) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175510>`__
12505* (SEED-0114) `Claim SEED number (Channels) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175412>`__
12506* (SEED-0115) `Clain SEED number (Sensors) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176763>`__
12507
12508Third party
12509===========
12510* (boringssl) `Remove crypto_sysrand.cc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175017>`__
12511* (fuchsia) `Copybara import <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173651>`__
12512* (fuchsia) `Update copybara with fit/defer.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173481>`__
12513
12514Miscellaneous
12515=============
12516* `Update formatting for new clang version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175311>`__
12517* `Use C++20 everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174630>`__
12518  (issue `#303371098 <https://issues.pigweed.dev/issues/303371098>`__)
12519* (revert) `Use .test convention" <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171793>`__
12520* `Add generated Emboss code <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176571>`__
12521
12522-----------
12523Oct 6, 2023
12524-----------
12525Highlights (Sep 21, 2023 to Oct 6, 2023):
12526
12527* We expanded our RP2040 support. See the new :ref:`module-pw_chrono_rp2040`
12528  and :ref:`module-pw_digital_io_rp2040` modules.
12529* The :ref:`new CancellableReader class in pw_hdlc <docs-changelog-20231009-pw_hdlc>`
12530  is an interface for receiving RPC packets that guarantees its read process can be
12531  stopped.
12532* ``pw_rpc`` now :ref:`automatically generates a new DynamicClient interface
12533  <docs-changelog-20231009-pw_rpc>` when dynamic allocation is enabled.
12534* The Python backend for ``pw_tokenizer`` now supports :ref:`tokenizing strings as
12535  arguments <docs-changelog-20231009-pw_tokenizer>`.
12536* The ``pigweed_config`` mechanism in Bazel is now officially retired.
12537
12538Active SEEDs
12539============
12540Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
12541
12542* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
12543* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
12544* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
12545* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
12546* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
12547* `SEED-0111: Make Bazel Pigweed's Primary Build System <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__
12548* `SEED-0112: Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__
12549
12550Modules
12551=======
12552
12553.. _docs-changelog-20231009-pw_allocator:
12554
12555pw_allocator
12556------------
12557We added a bunch of new allocator APIs! ``AllocatorMetricProxy`` is a wrapper for
12558``Allocator`` that tracks the number and total of current memory allocations as well
12559as peak memory usage. ``LibCAllocator`` is an allocator that uses ``malloc()`` and
12560``free()``. ``NullAllocator`` is an allocator that always fails which is useful for
12561disallowing memory allocations under certain circumstances. ``SplitFreeListAllocator``
12562uses a free list to reduce fragmentation. ``FallbackAllocator`` enables you to
12563specify primary and secondary allocators.
12564
12565* `Add Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173851>`__
12566* `Add pool accessors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173615>`__
12567* `Move Resize assertion <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173614>`__
12568* `Add AllocatorMetricProxy <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172380>`__
12569* `Add LibCAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172232>`__
12570* `Add NullAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172233>`__
12571* `Add SplitFreeListAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172231>`__
12572* `Add FallbackAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171837>`__
12573* `Generic interface for allocators <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171709>`__
12574
12575pw_analog
12576---------
12577* `Migrate MicrovoltInput to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170593>`__
12578  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
12579
12580pw_async
12581--------
12582* `Add OWNERS file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173690>`__
12583
12584pw_bloat
12585--------
12586``pw_size_report()`` has a new ``json_key_prefix`` argument which is an
12587optional prefix for key names in JSON size reports and a new
12588``full_json_summary`` argument which provides more control over how
12589much detail is provided in a JSON size report.
12590
12591* `Update API to allow verbose json content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168718>`__
12592  (issue `#282057969 <https://issues.pigweed.dev/issues/282057969>`__)
12593
12594pw_bluetooth
12595------------
12596* `Format Emboss files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174832>`__
12597* `Update comments in HCI event defs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174070>`__
12598  (issue `#265052417 <https://issues.pigweed.dev/issues/265052417>`__)
12599
12600pw_build
12601--------
12602
12603
12604* `Fix path in Bazel pw_linker_script <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174591>`__
12605* `Expose pw_linker_script in Bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174590>`__
12606  (issue `#303482154 <https://issues.pigweed.dev/issues/303482154>`__)
12607* `Define empty configs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174490>`__
12608* `Add bazel implementation of pw_cc_blob_library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173452>`__
12609  (issue `#238339027 <https://issues.pigweed.dev/issues/238339027>`__)
12610* `Clean up build_target.gni <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120215>`__
12611  (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
12612* `Allow add_global_link_deps to be overridden <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150050>`__
12613* `Expose pigweed_default_configs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173372>`__
12614  (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__)
12615* `Apply -Wextra-semi to C code as well as C++ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172372>`__
12616
12617pw_chre
12618-------
12619* `Update bug numbers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172330>`__
12620
12621pw_chrono
12622---------
12623* `Add clarification to is_nmi_safe <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174573>`__
12624
12625pw_chrono_rp2040
12626----------------
12627This module is a new ``pw::chrono::SystemClock`` backend for RP2040.
12628
12629* `System clock backend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174651>`__
12630
12631pw_cli
12632------
12633* `Update requires script <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126101>`__
12634* `Narrow logic around colors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173232>`__
12635
12636pw_containers
12637-------------
12638There's a new C implementation for ``VariableLengthEntryDeque`` which is a
12639double-ended queue buffer that stores variable-length entries inline in a
12640circular (ring) buffer. The old ``VariableLengthEntryDeque`` was renamed
12641to ``VariableLengthEntryQueue``.
12642
12643* `Add missing <utility> include for std::move <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173879>`__
12644* `Rename to VariableLengthEntryQueue <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173451>`__
12645* `Rename files to variable_length_entry_queue <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173450>`__
12646* `VariableLengthEntryDeque Entry struct <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173130>`__
12647* `VariableLengthEntryDeque C implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169731>`__
12648
12649pw_digital_io_rp2040
12650--------------------
12651This module is a new RP2040 backend for ``pw_digital_io``.
12652
12653* `Implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173550>`__
12654  (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__)
12655
12656pw_env_setup
12657------------
12658We made the Pigweed bootstrap process on Windows more robust.
12659
12660* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172416>`__
12661  (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
12662* `Better highlight bootstrap failure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172415>`__
12663* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__
12664  (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
12665
12666.. _docs-changelog-20231009-pw_hdlc:
12667
12668pw_hdlc
12669-------
12670The new ``CancellableReader`` class is a new interface for receiving RPC
12671packets that guarantees its read process can be stopped.
12672
12673* `Add CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172051>`__
12674  (issue `#294858483 <https://issues.pigweed.dev/issues/294858483>`__)
12675
12676pw_i2c
12677------
12678* `Fix docs to use MakeExpectedTransactionArray <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173570>`__
12679* `Add cmake integration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172210>`__
12680
12681pw_kvs
12682------
12683The new ``FlashPartitionWithLogicalSectors`` C++ class supports combining
12684multiple physical ``FlashMemory`` sectors into a single logical
12685``FlashPartition`` sector.
12686
12687* `Add FlashPartitionWithLogicalSectors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/106917>`__
12688
12689pw_libc
12690-------
12691* `Don't implicitly link against global link_deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150051>`__
12692
12693pw_metric
12694---------
12695* `Make constructors constexpr <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172379>`__
12696
12697pw_minimal_cpp_stdlib
12698---------------------
12699* `Update to compile with stdcompat <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173350>`__
12700* `Namespace public/internal to module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173692>`__
12701
12702pw_perf_test
12703------------
12704* `Gate on pw_chrono_SYSTEM_TIMER_BACKEND <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174650>`__
12705
12706pw_presubmit
12707------------
12708* `Allow dots in module part of commit message <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174232>`__
12709* `Use autodoc for context classes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169119>`__
12710* `Allow passing kwargs to build.bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173853>`__
12711  (issue `#302045722 <https://issues.pigweed.dev/issues/302045722>`__)
12712* `No env_with_clang_vars with bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173656>`__
12713
12714pw_ring_buffer
12715--------------
12716* `Minor build and docs updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173030>`__
12717
12718.. _docs-changelog-20231009-pw_rpc:
12719
12720pw_rpc
12721------
12722If dynamic allocation is enabled via ``PW_RPC_DYNAMIC_ALLOCATION`` a new
12723``DynamicClient`` is now generated which dynamically allocates the call
12724object with ``PW_RPC_MAKE_UNIQUE_PTR``.
12725
12726* `Generate DynamicClient that dynamically allocates call objects <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168534>`__
12727* `Add CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172051>`__
12728  (issue `#294858483 <https://issues.pigweed.dev/issues/294858483>`__)
12729
12730pw_rpc_transport
12731----------------
12732* `Add a test loopback service registry <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171114>`__
12733  (issue `#300663813 <https://issues.pigweed.dev/issues/300663813>`__)
12734
12735pw_stream
12736---------
12737``pw_stream`` now has initial support for ``winsock2``.
12738
12739* `Add Windows socket support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172413>`__
12740
12741pw_sys_io_rp2040
12742----------------
12743* `Renamed from pw_sys_io_pico <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174910>`__
12744
12745.. _docs-changelog-20231009-pw_tokenizer:
12746
12747pw_tokenizer
12748------------
12749The Python backend now supports nested hashing tokenization. See
12750:ref:`module-pw_tokenizer-nested-arguments`.
12751
12752* `Support nested hashing tokenization (python backend) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/145339>`__
12753  (issue `#278890205 <https://issues.pigweed.dev/issues/278890205>`__)
12754* `Test for C99 support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170150>`__
12755
12756pw_toolchain
12757------------
12758* `Add libc stub for gettimeofday, update visibility rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173850>`__
12759* `Link against pw_libc for host clang toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151439>`__
12760
12761pw_transfer
12762-----------
12763* `Start the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170011>`__
12764  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
12765* `Remove old test server <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172951>`__
12766  (issue `#234875234 <https://issues.pigweed.dev/issues/234875234>`__)
12767
12768pw_unit_test
12769------------
12770* `Do not print contents of unknown objects <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174911>`__
12771* `Add more pw_unit_test_TESTONLY args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173670>`__
12772  (issue `#234873207 <https://issues.pigweed.dev/issues/234873207>`__)
12773* `Add pw_unit_test_TESTONLY build arg <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171970>`__
12774  (issue `#234873207 <https://issues.pigweed.dev/issues/234873207>`__)
12775
12776pw_watch
12777--------
12778* `Add link to served docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173456>`__
12779
12780pw_web
12781------
12782* `Make ongoing transfers accessible downstream <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174231>`__
12783* `TypeScript workarounds for disambiguation errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173590>`__
12784* `Throw error as an Error type <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173051>`__
12785* `Remove need for Buffer package in pw_hdlc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172377>`__
12786* `Remove date-fns <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172371>`__
12787
12788Build
12789=====
12790* `Fix extended default group <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174574>`__
12791  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
12792* `Fix \`all\` target in GN build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173050>`__
12793* `Add an extended default group <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/110391>`__
12794
12795Bazel
12796-----
12797* `Retire pigweed_config (part 3) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172411>`__
12798* `Retire pigweed_config (part 2) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170058>`__
12799  (issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__)
12800
12801Docs
12802====
12803We started a :ref:`glossary <docs-glossary>` and added new docs about
12804:ref:`rollers <docs-rollers>` and :ref:`CI/CQ <docs-ci-cq-intro>`.
12805
12806* `Add docs on rollers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174770>`__
12807  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
12808* `Remove redundant auto-submit section <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174890>`__
12809  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
12810* `Reformat CI/CQ Intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174870>`__
12811  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
12812* `Move CI/CQ Intro to infra/ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174776>`__
12813  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
12814* `Address comments on CI/CQ intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173932>`__
12815  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
12816* `Tidy up build system docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173658>`__
12817* `Fix typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173872>`__
12818* `Add CI/CQ Intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173455>`__
12819  (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__)
12820* `Add policy on incomplete docs changes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173617>`__
12821* `Start the glossary <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172952>`__
12822* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172810>`__
12823  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
12824* `Add Doxygen @endcode guidance <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172470>`__
12825
12826SEEDs
12827=====
12828* (SEED-0112) `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174771>`__
12829
12830Miscellaneous
12831=============
12832
12833pigweed.json
12834------------
12835* `Exclude patches.json from formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174230>`__
12836  (issue `#232234662 <https://issues.pigweed.dev/issues/232234662>`__)
12837
12838------------
12839Sep 22, 2023
12840------------
12841Highlights (Sep 07, 2023 to Sep 22, 2023):
12842
12843* ``pw_tokenizer`` has :ref:`new C++ methods for detokenizing
12844  Base64-encoded strings and new C functions for manually encoding tokenized
12845  messages that contain integers <docs-changelog-pw_tokenizer-20230922>`.
12846* ``pw::rpc::SynchronousCall`` now supports the use of :ref:`custom response message
12847  classes <docs-changelog-pw_rpc-20230922>`.
12848* The C API for ``pw_varint`` got :ref:`lots of ergonomic improvements
12849  <docs-changelog-pw_varint-20230922>`.
12850* The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code
12851  review process.
12852
12853Active SEEDs
12854============
12855Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
12856
12857* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
12858* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
12859* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
12860* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
12861* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__
12862* `SEED-0111: Future of Pigweed build systems <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__
12863* `SEED-0112: Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__
12864
12865Modules
12866=======
12867
12868pw function
12869-----------
12870* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__
12871  (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
12872
12873pw perf_test
12874------------
12875* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__
12876  (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
12877
12878pw_analog
12879---------
12880* `Migrate AnalogInput to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170511>`__
12881  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
12882
12883pw_async
12884--------
12885The ``Run*()`` methods of ``FakeDispatcher`` now return a boolean that indicates
12886whether any tasks were invoked.
12887
12888* `Return bool from FakeDispatcher Run*() methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170599>`__
12889
12890pw_async_basic
12891--------------
12892``release()`` is now only called outside of locked contexts to prevent an
12893issue where the thread wakes up and then immediately goes back to sleep.
12894An unnecessary 5-second wakeup has been removed from ``BasicDispatcher``.
12895
12896* `release outside of lock context <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171103>`__
12897* `Remove unnecessary 5-second wakeup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171102>`__
12898
12899pw_base64
12900---------
12901The new ``pw::base64::IsValidChar()`` method can help you determine if a
12902character is valid Base64.
12903
12904* `Add base64 detokenizer handler <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165010>`__
12905
12906pw_bluetooth
12907------------
12908More :ref:`Emboss <module-pw_third_party_emboss>` definitions were added.
12909
12910* `Add ReadLocalSupportedCommandsCommandCompleteEvent Emboss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169877>`__
12911* `Add LEReadLocalSupportedFeaturesCommandCompleteEvent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169931>`__
12912* `Add ReadBufferSizeCommandComplete Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169869>`__
12913* `Add ReadBdAddrCommandCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170052>`__
12914* `Add ReadLocalVersionInfoCommandCompleteEvent Emboss def <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169951>`__
12915* `Add LELongTermKeyRequestSubevent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169950>`__
12916* `Add UserPasskeyNotificationEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169917>`__
12917
12918pw_build
12919--------
12920* `Apply -Wextra-semi to C code as well as C++ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172372>`__
12921
12922pw_bytes
12923--------
12924The ``AlignDown()``, ``AlignUp()``, and ``Padding()`` methods of ``pw_kvs``
12925have moved to ``pw_bytes`` to enable ``pw_allocator`` to use them without
12926taking a dependency on ``pw_kvs``.
12927
12928* `Move Align functions from pw_kvs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171831>`__
12929
12930pw_checksum
12931-----------
12932* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__
12933  (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__)
12934
12935pw_chre
12936-------
12937The implementation of a module that will enable to work more seamlessly with
12938Android's `Context Hub Runtime Environment <https://source.android.com/docs/core/interaction/contexthub>`__
12939has begun.
12940
12941* `Update bug numbers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172330>`__
12942* `Minor fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171851>`__
12943  (issue `#301079509 <https://issues.pigweed.dev/issues/301079509>`__)
12944* `Fix build rules to use paramertized paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171850>`__
12945  (issue `#298474212 <https://issues.pigweed.dev/issues/298474212>`__)
12946* `Split out shared_platform <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170791>`__
12947* `Write our own version.cc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170790>`__
12948  (issue `#300633363 <https://issues.pigweed.dev/issues/300633363>`__)
12949* `Add barebones CHRE <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162510>`__
12950  (issue `#294106526 <https://issues.pigweed.dev/issues/294106526>`__)
12951
12952pw_console
12953----------
12954When invoking ``pw_console`` directly from Python, you can now provide arguments
12955through an ``argparse.Namespace`` instead of messing with ``sys.argv`` or forking
12956another process.
12957
12958* `Allow injecting args via Python call <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172414>`__
12959
12960pw_containers
12961-------------
12962`MemorySanitizer <https://github.com/google/sanitizers/wiki/MemorySanitizer>`__ has
12963been disabled in some of the ``InlineDeque`` implementation to prevent some false
12964positive detections of uninitialized memory reads.
12965
12966* `Silence MSAN false positives <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171990>`__
12967
12968pw_env_setup
12969------------
12970Work continues on making the Windows bootstrap process more robust.
12971
12972* `Better highlight bootstrap failure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172415>`__
12973* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__
12974  (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
12975* `Enable overriding Clang CIPD version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171838>`__
12976* `PyPI version bump to 0.0.15 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171836>`__
12977* `Add relative_pigweed_root to pigweed.json <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171218>`__
12978  (issue `#300632028 <https://issues.pigweed.dev/issues/300632028>`__)
12979* `Roll cipd to 0f08b927516 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170452>`__
12980
12981pw_function
12982-----------
12983The documentation has been updated for accuracy.
12984
12985* `Update config.h comments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171250>`__
12986* `Add configurable Allocator default <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171130>`__
12987* `Update example to match guidelines for parameters <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170651>`__
12988* `Add Allocator injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170190>`__
12989
12990pw_fuzzer
12991---------
12992Conditional logic around fuzzing support has been refactored to allow for
12993dedicated targets based on specific conditions and to make it clearer
12994exactly what configurations and dependencies are being used.
12995
12996* `Refactor conditional GN targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169712>`__
12997
12998pw_ide
12999------
13000* `Reformat json files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172310>`__
13001* `Fix clangd path on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171099>`__
13002* `Move VSC extension into npm package dir <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170995>`__
13003
13004pw_libc
13005-------
13006The initial implementation work continues.
13007
13008* `Pull in 'abort' <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/138518>`__
13009* `Use .test convention <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171793>`__
13010* `Use underscore prefixed variables <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171792>`__
13011* `Add documentation for pw_libc_source_set <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171693>`__
13012* `Pull in 'gmtime' <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137699>`__
13013* `Fix printf for newer llvm-libc commits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170831>`__
13014* `Fix llvm-libc after internal assert changes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168830>`__
13015
13016pw_log
13017------
13018The implementation work continues to enable an Android component to read logs
13019from a component running the ``pw_log_rpc`` service.
13020
13021* `Update Android.bp to generate RPC header files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169530>`__
13022  (issue `#298693458 <https://issues.pigweed.dev/issues/298693458>`__)
13023
13024pw_log_string
13025-------------
13026* `Fix the default impl to handle zero length va args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169975>`__
13027
13028pw_package
13029----------
13030Mirrors are now being used for various third-party dependencies.
13031
13032* `Use mirror for zephyrproject-rtos/zephyr <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170355>`__
13033  (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
13034* `Use Pigweed mirror for google/emboss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170356>`__
13035  (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
13036* `Use mirror for raspberrypi/picotool <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170040>`__
13037  (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__)
13038
13039pw_polyfill
13040-----------
13041* `Increase __GNUC__ for __constinit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171150>`__
13042  (issue `#300478321 <https://issues.pigweed.dev/issues/300478321>`__)
13043
13044pw_presubmit
13045------------
13046A new JSON formatting check has been added. The missing newline check has been
13047made more robust.
13048
13049* `Add JSON formatter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171991>`__
13050* `Better handling of missing newlines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172230>`__
13051  (issue `#301315329 <https://issues.pigweed.dev/issues/301315329>`__)
13052* `Expand Bazel parser to tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171890>`__
13053* `Remove now-unnecessary flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171670>`__
13054  (issue `#271299438 <https://issues.pigweed.dev/issues/271299438>`__)
13055* `Additional functions for handling gn args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170594>`__
13056* `Include bazel_build in full program <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170056>`__
13057
13058pw_protobuf
13059-----------
13060* `Fix "Casting..." heading level <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171030>`__
13061
13062.. _docs-changelog-pw_rpc-20230922:
13063
13064pw_rpc
13065------
13066``pw::rpc::SynchronousCall`` now supports the use of custom response message
13067classes that set field callbacks in their constructor. See
13068:ref:`module-pw_rpc-client-sync-call-wrappers`.
13069
13070.. todo-check: disable
13071
13072* `Refer to bug in TODO and fix format <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172453>`__
13073* `Support custom response messages in SynchronousCall <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170041>`__
13074  (issue `#299920227 <https://issues.pigweed.dev/issues/299920227>`__)
13075* `Add fuzz tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/143474>`__
13076
13077.. todo-check: enable
13078
13079pw_stream
13080---------
13081* `Add Windows socket support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172413>`__
13082
13083pw_string
13084---------
13085* `Fix signed integer overflow <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171839>`__
13086
13087pw_system
13088---------
13089* `Add arm_none_eabi_gcc_support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158730>`__
13090
13091pw_thread
13092---------
13093* `Fix small typo in docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171750>`__
13094
13095.. _docs-changelog-pw_tokenizer-20230922:
13096
13097pw_tokenizer
13098------------
13099``pw::tokenizer::Detokenizer`` has new ``DetokenizeBase64Message()`` and
13100``DetokenizeBase64()`` methods for detokenizing Base64-encoded strings.
13101The new ``pw_tokenizer_EncodeInt()`` and ``pw_tokenizer_EncodeInt64()``
13102functions in the C API make it easier to manually encode tokenized messages
13103with integers from C.
13104
13105* `C++ Base64 detokenization improvements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171675>`__
13106* `Add base64 detokenizer handler <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165010>`__
13107* `C functions for encoding arguments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169976>`__
13108
13109pw_toolchain
13110------------
13111``arm_gcc`` now supports Cortex-M33.
13112
13113* `Add missing objcopy tool to bazel toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171697>`__
13114  (issue `#301004620 <https://issues.pigweed.dev/issues/301004620>`__)
13115* `Add cpu flags to asmopts as well <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171671>`__
13116* `Add cortex-m33 support to arm_gcc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171237>`__
13117
13118pw_toolchain_bazel
13119------------------
13120* `Support ar opts in pw_toolchain_features <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171673>`__
13121* `Add cortex-m7 constraint_value <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171071>`__
13122  (issue `#300467616 <https://issues.pigweed.dev/issues/300467616>`__)
13123
13124.. _docs-changelog-pw_varint-20230922:
13125
13126pw_varint
13127---------
13128The C encoding functions now have an output size argument, making them much
13129easier to use. There's a new macro for calculating the encoded size of an
13130integer in a C constant expression. Incremental versions of the encode and
13131decode functions have been exposed to support in-place encoding and decoding
13132with non-contiguous buffers.
13133
13134* `C API updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170050>`__
13135
13136pw_web
13137------
13138The ``ProgressStats`` and ``ProgressCallback`` types are now exported.
13139Styling and scrolling behavior in the log viewer has been improved.
13140
13141* `Remove need for Buffer package in pw_hdlc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172377>`__
13142* `Remove date-fns <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172371>`__
13143* `Export ProgressStats, ProgressCallback types <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171707>`__
13144* `Add back 'buffer' dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171891>`__
13145* `NPM version bump to 0.0.13 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171110>`__
13146* `Improve scrolling behavior <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171290>`__
13147  (issue `#298097109 <https://issues.pigweed.dev/issues/298097109>`__)
13148* `Fix leading white spaces, scrollbar size, and filters in quotes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170811>`__
13149* `NPM version bump to 0.0.12 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170597>`__
13150* `Fix column sizing & toggling, update UI <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169591>`__
13151* `Replace Map() with object in proto collection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170493>`__
13152
13153pw_work_queue
13154-------------
13155* `Don't lock around work_notification_ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170450>`__
13156* `Migrate API reference to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169830>`__
13157  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
13158
13159Build
13160=====
13161* `Update Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171510>`__
13162
13163Bazel
13164-----
13165* `Add platform-printing aspect <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/122974>`__
13166* `Retire pigweed_config (part 2) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170058>`__
13167  (issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__)
13168* `Retire pigweed_config (part 1) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168721>`__
13169  (issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__)
13170* `Remove -Wno-private-header from copts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170951>`__
13171  (issue `#240466562 <https://issues.pigweed.dev/issues/240466562>`__)
13172* `Remove bazelembedded dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170650>`__
13173  (issue `#297239780 <https://issues.pigweed.dev/issues/297239780>`__)
13174* `Move cxxopts out of bazelrc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170639>`__
13175  (issue `#269195628 <https://issues.pigweed.dev/issues/269195628>`__)
13176* `Use the same clang version as in GN <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170638>`__
13177* `Arm gcc configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168192>`__
13178  (issue `#297239780 <https://issues.pigweed.dev/issues/297239780>`__)
13179
13180Targets
13181=======
13182* `Fix pico_sdk elf2uf2 on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170770>`__
13183* `Add pw_strict_host_clang_debug_dynamic_allocation tc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171674>`__
13184
13185Docs
13186====
13187The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code
13188review process.
13189
13190* `Add Doxygen @endcode guidance <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172470>`__
13191* `Clean up remaining instances of code:: <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172050>`__
13192  (issue `#300317685 <https://issues.pigweed.dev/issues/300317685>`__)
13193* `Document code review process <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171774>`__
13194* `Add link to in-progress hardware targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171239>`__
13195* `Fix link title for pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170670>`__
13196* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170055>`__
13197  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
13198
13199SEEDs
13200=====
13201* `Update process document <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170390>`__
13202* (SEED-0104) `Display Support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
13203* (SEED-0109) `Make link externally accessible <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170043>`__
13204* (SEED-0110) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170038>`__
13205* (SEED-0111) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171672>`__
13206* (SEED-0112) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168359>`__
13207
13208Third party
13209===========
13210* `Add public configs for FuzzTest deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169711>`__
13211
13212third_party/fuchsia
13213-------------------
13214* `Copybara import <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171010>`__
13215* `Update patch script and patch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170890>`__
13216* `Update patch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170794>`__
13217* `Support specifying the Fuchsia repo to use <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170170>`__
13218
13219third_party/pico_sdk
13220--------------------
13221* `Selectively disable elf2uf2 warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171072>`__
13222  (issue `#300474559 <https://issues.pigweed.dev/issues/300474559>`__)
13223* `Fix multicore source filename <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170330>`__
13224
13225Miscellaneous
13226=============
13227.. todo-check: disable
13228
13229* `Use new TODO style <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170730>`__
13230* `Add toolchain team members <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172170>`__
13231* `Fix double bootstrap.bat failures on Windows" <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__
13232  (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__)
13233
13234.. todo-check: enable
13235
13236-----------
13237Sep 8, 2023
13238-----------
13239Highlights (Aug 25, 2023 to Sep 8, 2023):
13240
13241* SEED :ref:`seed-0107` has been approved! Pigweed will adopt a new sockets API as
13242  its primary networking abstraction. The sockets API will be backed by a new,
13243  lightweight embedded-focused network protocol stack inspired by TCP/IP.
13244* SEED :ref:`seed-0108` has also been approved! Coming soon, the new ``pw_emu``
13245  module will make it easier to work with emulators.
13246
13247Active SEEDs
13248============
13249Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
13250
13251* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
13252* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
13253* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
13254* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
13255* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__
13256
13257Modules
13258=======
13259
13260pw_assert
13261---------
13262We fixed circular dependencies in Bazel.
13263
13264* `Remove placeholder target <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168844>`__
13265* `Fix Bazel circular deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160794>`__
13266  (issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__)
13267* `Introduce pw_assert_backend_impl <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168774>`__
13268  (issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__)
13269
13270pw_bluetooth
13271------------
13272We added :ref:`Emboss <module-pw_third_party_emboss>` definitions.
13273
13274* `Add SimplePairingCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169916>`__
13275* `Add UserPasskeyRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169912>`__
13276* `Add UserConfirmationRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169871>`__
13277* `Use hci.LinkKey in LinkKeyNotificationEvent.link_key <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168858>`__
13278* `Add IoCapabilityResponseEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168354>`__
13279* `Add IoCapabilityRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168353>`__
13280* `Add EncryptionKeyRefreshCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168331>`__
13281* `Add ExtendedInquiryResultEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168330>`__
13282
13283pw_build
13284--------
13285* `Force watch and default recipe names <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169911>`__
13286
13287pw_build_mcuxpresso
13288-------------------
13289* `Output formatted bazel target <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169740>`__
13290
13291pw_cpu_exception
13292----------------
13293We added Bazel support.
13294
13295* `bazel build support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169733>`__
13296  (issue `#242183021 <https://issues.pigweed.dev/issues/242183021>`__)
13297
13298pw_crypto
13299---------
13300The complete ``pw_crypto`` API reference is now documented on :ref:`module-pw_crypto`.
13301
13302* `Add API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169572>`__
13303  (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__)
13304
13305pw_env_setup
13306------------
13307Banners should not print correctly on Windows.
13308
13309* `Add i2c protos to python deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169231>`__
13310* `Fix banner printing on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169172>`__
13311  (issue `#289008307 <https://issues.pigweed.dev/issues/289008307>`__)
13312
13313pw_file
13314-------
13315* `Add pw_file python package <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168831>`__
13316
13317pw_function
13318-----------
13319The :cpp:func:`pw::bind_member()` template is now exposed in the public API.
13320``bind_member()`` is useful for binding the ``this`` argument of a callable.
13321We added a section to the docs explaining :ref:`why pw::Function is not a
13322literal <module-pw_function-non-literal>`.
13323
13324* `Explain non-literal design rationale <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168777>`__
13325* `Expose \`bind_member\` <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169123>`__
13326
13327pw_fuzzer
13328---------
13329We refactored ``pw_fuzzer`` logic to be more robust and expanded the
13330:ref:`module-pw_fuzzer-guides-reproducing_oss_fuzz_bugs` doc.
13331
13332* `Refactor OSS-Fuzz support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167348>`__
13333  (issue `#56955 <https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56955>`__)
13334
13335pw_i2c
13336------
13337* `Use new k{FieldName}MaxSize constants to get buffer size <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168913>`__
13338
13339pw_kvs
13340------
13341We are discouraging the use of the shorter macros because they collide with
13342Abseil's logging API.
13343
13344* `Remove usage of pw_log/shorter.h API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169920>`__
13345  (issue `#299520256 <https://issues.pigweed.dev/issues/299520256>`__)
13346
13347pw_libc
13348-------
13349``snprintf()`` support was added.
13350
13351* `Import LLVM libc's snprintf <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137735>`__
13352
13353pw_log_string
13354-------------
13355We added more detail to :ref:`module-pw_log_string`.
13356
13357* `Fix the default impl to handle zero length va args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169975>`__
13358* `Provide more detail in the getting started docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168934>`__
13359  (issue `#298124226 <https://issues.pigweed.dev/issues/298124226>`__)
13360
13361pw_log_zephyr
13362-------------
13363It's now possible to define ``pw_log_tokenized_HandleLog()`` outside of Pigweed
13364so that Zephyr projects have more flexibility around how they capture tokenized
13365logs.
13366
13367* `Split tokenize handler into its own config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168612>`__
13368
13369pw_package
13370----------
13371* `Handle failed cipd acl checks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168530>`__
13372
13373pw_persistent_ram
13374-----------------
13375* `Add persistent_buffer flat_file_system_entry <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168832>`__
13376
13377pw_presubmit
13378------------
13379We added a reStructuredText formatter.
13380
13381* `Make builds_from_previous_iteration ints <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169721>`__
13382  (issue `#299336222 <https://issues.pigweed.dev/issues/299336222>`__)
13383* `Move colorize_diff to tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168839>`__
13384* `RST formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168541>`__
13385
13386pw_protobuf
13387-----------
13388``max_size`` and ``max_count`` are now exposed in generated headers.
13389The new ``proto_message_field_props()`` helper function makes it easier to
13390iterate through a messages fields and properties.
13391
13392* `Expose max_size, max_count in generated header file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168973>`__
13393  (issue `#297364973 <https://issues.pigweed.dev/issues/297364973>`__)
13394* `Introduce proto_message_field_props() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168972>`__
13395* `Change PROTO_FIELD_PROPERTIES to a dict of classes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168971>`__
13396* `Rename 'node' to 'message' in forward_declare() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168970>`__
13397* `Simplify unnecessary Tuple return type <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168910>`__
13398
13399pw_random
13400---------
13401We're now auto-generating the ``XorShiftStarRng64`` API reference via Doxygen.
13402
13403* `Doxygenify xor_shift.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164510>`__
13404
13405pw_rpc
13406------
13407The new ``request_completion()`` method in Python enables you to send a
13408completion packet for server streaming calls.
13409
13410* `Add request_completion to ServerStreamingCall python API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168439>`__
13411
13412pw_spi
13413------
13414* `Fix Responder.SetCompletionHandler() signature <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169130>`__
13415
13416pw_symbolizer
13417-------------
13418The ``LlvmSymbolizer`` Python class has a new ``close()`` method to
13419deterministically close the background process.
13420
13421* `LlvmSymbolizer tool improvement <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168863>`__
13422
13423pw_sync
13424-------
13425We added :ref:`module-pw_sync-genericbasiclockable`.
13426
13427* `Add GenericBasicLockable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165930>`__
13428
13429pw_system
13430---------
13431``pw_system`` now supports different channels for primary and logging RPC.
13432
13433* `Multi-channel configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167158>`__
13434  (issue `#297076185 <https://issues.pigweed.dev/issues/297076185>`__)
13435
13436pw_thread_freertos
13437------------------
13438* `Add missing dep to library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169239>`__
13439
13440pw_tokenizer
13441------------
13442We added :c:macro:`PW_TOKENIZE_FORMAT_STRING_ANY_ARG_COUNT` and
13443:c:macro:`PW_TOKENIZER_REPLACE_FORMAT_STRING`. We refactored the docs
13444so that you don't have to jump around the docs as much when learning about
13445key topics like tokenization and token databases. Database loads now happen
13446in a separate thread to avoid blocking the main thread. Change detection for
13447directory databases now works more as expected. The config API is now exposed
13448in the API reference.
13449
13450* `Remove some unused deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169573>`__
13451* `Simplify implementing a custom tokenization macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169121>`__
13452* `Refactor the docs to be task-focused <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169124>`__
13453* `Reload database in dedicated thread <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168866>`__
13454* `Combine duplicated docs sections <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168865>`__
13455* `Support change detection for directory dbs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168630>`__
13456* `Move config value check to .cc file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168615>`__
13457
13458pw_unit_test
13459------------
13460We added ``testing::Test::HasFailure()``, ``FRIEND_TEST``, and ``<<`` messages
13461to improve gTest compatibility.
13462
13463* `Add testing::Test::HasFailure() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168810>`__
13464* `Add FRIEND_TEST <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169270>`__
13465* `Allow <<-style messages in test expectations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168860>`__
13466
13467pw_varint
13468---------
13469``pw_varint`` now has a :ref:`C-only API <module-pw_varint-api-c>`.
13470
13471* `Add C-only implementation; cleanup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169122>`__
13472
13473pw_web
13474------
13475Logs can now be downloaded as plaintext.
13476
13477* `Fix TypeScript errors in Device files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169930>`__
13478* `Json Log Source example <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169176>`__
13479* `Enable downloading logs as plain text <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168130>`__
13480* `Fix UI/state bugs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167911>`__
13481* `NPM version bump to 0.0.11 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168591>`__
13482* `Add basic bundling tests for log viewer bundle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168539>`__
13483
13484Build
13485=====
13486
13487Bazel
13488-----
13489* `Fix alwayslink support in MacOS host_clang <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168614>`__
13490  (issue `#297413805 <https://issues.pigweed.dev/issues/297413805>`__)
13491* `Fix lint issues after roll <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169611>`__
13492
13493Docs
13494====
13495* `Fix broken links <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169579>`__
13496  (issue `#299181944 <https://issues.pigweed.dev/issues/299181944>`__)
13497* `Recommend enabling long file paths on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169578>`__
13498* `Update Windows command for git hook <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168592>`__
13499* `Fix main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168555>`__
13500  (issue `#297384789 <https://issues.pigweed.dev/issues/297384789>`__)
13501* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168540>`__
13502  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
13503* `Use code-block:: instead of code:: everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168617>`__
13504* `Add function signature line breaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168554>`__
13505* `Cleanup indentation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168537>`__
13506
13507SEEDs
13508=====
13509* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
13510
13511Third party
13512===========
13513* `Add public configs for FuzzTest deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169711>`__
13514* `Reconfigure deps & add cflags to config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152691>`__
13515
13516Miscellaneous
13517=============
13518* `Fix formatting with new clang version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169078>`__
13519
13520mimxrt595_evk_freertos
13521----------------------
13522* `Use config_assert helper <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160378>`__
13523
13524------------
13525Aug 25, 2023
13526------------
13527Highlights (Aug 11, 2023 to Aug 25, 2023):
13528
13529* ``pw_tokenizer`` now has Rust support.
13530* The ``pw_web`` log viewer now has advanced filtering and a jump-to-bottom
13531  button.
13532* The ``run_tests()`` method of ``pw_unit_test`` now returns a new
13533  ``TestRecord`` dataclass which provides more detailed information
13534  about the test run.
13535* A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS
13536  has been added.
13537
13538Active SEEDs
13539============
13540Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
13541
13542* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
13543* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
13544* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
13545* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
13546* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
13547
13548Modules
13549=======
13550
13551pw_bloat
13552--------
13553* `Fix typo in method name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166832>`__
13554
13555pw_bluetooth
13556------------
13557The :ref:`module-pw_third_party_emboss` files were refactored.
13558
13559* `Add SynchronousConnectionCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167862>`__
13560* `Add all Emboss headers/deps to emboss_test & fix errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168355>`__
13561* `Add InquiryResultWithRssiEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167859>`__
13562* `Add DataBufferOverflowEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167858>`__
13563* `Add LinkKeyNotificationEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167855>`__
13564* `Add LinkKeyRequestEvent emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167349>`__
13565* `Remove unused hci emboss files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167090>`__
13566* `Add RoleChangeEvent emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167230>`__
13567* `Add missing test dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167130>`__
13568* `Add new hci subset files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166730>`__
13569
13570pw_build
13571--------
13572The ``pw_build`` docs were split up so that each build system has its own page
13573now. The new ``output_logs`` flag enables you to not output logs for ``pw_python_venv``.
13574
13575* `Handle read-only files when deleting venvs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167863>`__
13576* `Split build system docs into separate pages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165071>`__
13577* `Use pw_toolchain_clang_tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167671>`__
13578* `Add missing pw_linker_script flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167632>`__
13579  (issue `#296928739 <https://issues.pigweed.dev/issues/296928739>`__)
13580* `Fix output_logs_ unused warning <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166991>`__
13581  (issue `#295524695 <https://issues.pigweed.dev/issues/295524695>`__)
13582* `Don't include compile cmds when preprocessing ldscripts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166490>`__
13583* `Add pw_python_venv.output_logs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165330>`__
13584  (issue `#295524695 <https://issues.pigweed.dev/issues/295524695>`__)
13585* `Increase size of test linker script memory region <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164823>`__
13586* `Add integration test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154553>`__
13587
13588pw_cli
13589------
13590* `Default change pw_protobuf default <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126806>`__
13591  (issue `#266298474 <https://issues.pigweed.dev/issues/266298474>`__)
13592
13593pw_console
13594----------
13595* `Update web viewer to use pigweedjs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162995>`__
13596
13597pw_containers
13598-------------
13599* `Silence MSAN false positive in pw::Vector <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167111>`__
13600
13601pw_docgen
13602---------
13603Docs builds should be faster now because Sphinx has been configured to use
13604all available cores.
13605
13606* `Remove top nav bar <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168446>`__
13607* `Parallelize Sphinx <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164738>`__
13608
13609pw_env_setup
13610------------
13611Sphinx was updated from v5.3.0 to v7.1.2. We switched back to the upstream Furo
13612theme and updated to v2023.8.19. The content of ``pigweed_environment.gni`` now
13613gets logged. There was an update to ensure that ``arm-none-eabi-gdb`` errors
13614propagate correctly. There is now a way to override Bazel build files for CIPD
13615repos.
13616
13617* `Upgrade sphinx and dependencies for docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168431>`__
13618* `Upgrade sphinx-design <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168339>`__
13619* `Copy pigweed_environment.gni to logs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167850>`__
13620* `arm-gdb: propagate errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165411>`__
13621* `arm-gdb: exclude %VIRTUAL_ENV%\Scripts from search paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164370>`__
13622* `Add ability to override bazel BUILD file for CIPD repos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165530>`__
13623
13624pw_function
13625-----------
13626* `Rename template parameter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168334>`__
13627
13628pw_fuzzer
13629---------
13630* `Add test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154555>`__
13631
13632pw_hdlc
13633-------
13634A new ``close()`` method was added to ``HdlcRpcClient`` to signal to the thread
13635to stop.
13636
13637* `Use explicit logger name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166591>`__
13638* `Mitigate errors on Python background thread <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162712>`__
13639  (issue `#293595266 <https://issues.pigweed.dev/issues/293595266>`__)
13640
13641pw_ide
13642------
13643A new ``--install-editable`` flag was added to install Pigweed Python modules
13644in editable mode so that code changes are instantly realized.
13645
13646* `Add cmd to install Py packages as editable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163572>`__
13647* `Make VSC extension run on older versions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167054>`__
13648
13649pw_perf_test
13650------------
13651* `Add test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154554>`__
13652
13653pw_presubmit
13654------------
13655``pw_presubmit`` now has an ESLint check for linting and a Prettier check for
13656formatting JavaScript and TypeScript files.
13657
13658* `Add msan to OTHER_CHECKS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168325>`__
13659  (issue `#234876100 <https://issues.pigweed.dev/issues/234876100>`__)
13660* `Upstream constraint file output fix <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166270>`__
13661* `JavaScript and TypeScript lint check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165410>`__
13662* `Apply TypeScript formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164825>`__
13663* `Use prettier for JS and TS files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165390>`__
13664
13665pw_rpc
13666------
13667A ``request_completion()`` method was added to the ``ServerStreamingCall``
13668Python API. A bug was fixed related to encoding failures when dynamic buffers
13669are enabled.
13670
13671* `Add request_completion to ServerStreamingCall python API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168439>`__
13672* `Various small enhancements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167162>`__
13673* `Remove deprecated method from Service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165510>`__
13674* `Prevent encoding failure when dynamic buffer enabled <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166833>`__
13675  (issue `#269633514 <https://issues.pigweed.dev/issues/269633514>`__)
13676
13677pw_rpc_transport
13678----------------
13679* `Add simple_framing Soong rule <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165350>`__
13680
13681pw_rust
13682-------
13683* `Update rules_rust to 0.26.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166831>`__
13684
13685pw_stm32cube_build
13686------------------
13687* `Windows path fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167865>`__
13688
13689pw_stream
13690---------
13691Error codes were updated to be more accurate and descriptive.
13692
13693* `Use more appropriate error codes for Cursor <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164592>`__
13694
13695pw_stream_uart_linux
13696--------------------
13697Common baud rates such as ``9600``, ``19200``, and so on are now supported.
13698
13699* `Add support for baud rates other than 115200 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165070>`__
13700
13701pw_sync
13702-------
13703Tests were added to make sure that ``pw::sync::Borrowable`` works with lock
13704annotations.
13705
13706* `Test Borrowable with Mutex, TimedMutex, and InterruptSpinLock <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153575>`__
13707  (issue `#261078330 <https://issues.pigweed.dev/issues/261078330>`__)
13708
13709pw_system
13710---------
13711The ``pw_system.device.Device`` Python class can now be used as a
13712`context manager <https://realpython.com/python-with-statement/>`_.
13713
13714* `Make pw_system.device.Device a context manager <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163410>`__
13715
13716pw_tokenizer
13717------------
13718``pw_tokenizer`` now has Rust support. The ``pw_tokenizer`` C++ config API
13719is now documented at :ref:`module-pw_tokenizer-api-configuration` and
13720the C++ token database API is now documented at
13721:ref:`module-pw_tokenizer-api-token-databases`. When creating a token
13722database, parent directories are now automatically created if they don't
13723already exist. ``PrefixedMessageDecoder`` has been renamed to
13724``NestedMessageDecoder``.
13725
13726* `Move config value check to .cc file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168615>`__
13727* `Create parent directory as needed <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168510>`__
13728* `Rework pw_tokenizer.detokenize.PrefixedMessageDecoder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167150>`__
13729* `Minor binary database improvements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167053>`__
13730* `Update binary DB docs and convert to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163570>`__
13731* `Deprecate tokenizer buffer size config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163257>`__
13732* `Fix instance of -Wconstant-logical-operand <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166731>`__
13733* `Add Rust support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/145389>`__
13734
13735pw_toolchain
13736------------
13737A new Linux host toolchain built using ``pw_toolchain_bazel`` has been
13738started. CIPD-provided Rust toolchains are now being used.
13739
13740* `Link against system libraries using libs not ldflags <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151050>`__
13741* `Use %package% for cxx_builtin_include_directories <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168340>`__
13742* `Extend documentation for tool prefixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167633>`__
13743* `Add Linux host toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164824>`__
13744  (issue `#269204725 <https://issues.pigweed.dev/issues/269204725>`__)
13745* `Use CIPD provided Rust toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166852>`__
13746* `Switch macOS to use builtin_sysroot <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165414>`__
13747* `Add cmake helpers for getting clang compile+link flags <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163811>`__
13748
13749pw_unit_test
13750------------
13751``run_tests()`` now returns the new ``TestRecord`` dataclass which provides
13752more detailed information about the test run. ``SetUpTestSuit()`` and
13753``TearDownTestSuite()`` were added to improve GoogleTest compatibility.
13754
13755* `Add TestRecord of Test Results <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166273>`__
13756* `Reset static value before running tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166590>`__
13757  (issue `#296157327 <https://issues.pigweed.dev/issues/296157327>`__)
13758* `Add per-fixture setup/teardown <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165210>`__
13759
13760pw_web
13761------
13762Log viewers are now drawn every 100 milliseconds at most to prevent crashes
13763when many logs arrive simultaneously. The log viewer now has a jump-to-bottom
13764button. Advanced filtering has been added.
13765
13766* `NPM version bump to 0.0.11 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168591>`__
13767* `Add basic bundling tests for log viewer bundle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168539>`__
13768* `Limit LogViewer redraws to 100ms <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167852>`__
13769* `Add jump to bottom button, fix UI bugs and fix state bugs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164272>`__
13770* `Implement advanced filtering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162070>`__
13771* `Remove object-path dependency from Device API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165013>`__
13772* `Log viewer toolbar button toggle style <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165412>`__
13773* `Log-viewer line wrap toggle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164010>`__
13774
13775Targets
13776=======
13777
13778targets
13779-------
13780A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS
13781has been added.
13782
13783* `Ambiq Apollo4 support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/129490>`__
13784
13785Language support
13786================
13787
13788Python
13789------
13790* `Upgrade mypy to 1.5.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166272>`__
13791* `Upgrade pylint to 2.17.5 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166271>`__
13792
13793Docs
13794====
13795Doxygen-generated function signatures now present each argument on a separate
13796line. Tabbed content looks visually different than before.
13797
13798* `Use code-block:: instead of code:: everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168617>`__
13799* `Add function signature line breaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168554>`__
13800* `Cleanup indentation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168537>`__
13801* `Remove unused myst-parser <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168392>`__
13802* `Use sphinx-design for tabbed content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168341>`__
13803* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164810>`__
13804
13805SEEDs
13806=====
13807:ref:`SEED-0107 (Pigweed Communications) <seed-0107>` was accepted and
13808SEED-0109 (Communication Buffers) was started.
13809
13810* `Update protobuf SEED title in index <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166470>`__
13811* `Update status to Accepted <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167770>`__
13812* `Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__
13813* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168358>`__
13814
13815Miscellaneous
13816=============
13817
13818Build
13819-----
13820* `Make it possible to run MSAN in GN <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167112>`__
13821
13822soong
13823-----
13824* `Remove host/vendor properties from defaults <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165270>`__
13825
13826------------
13827Aug 11, 2023
13828------------
13829Highlights (Jul 27, 2023 to Aug 11, 2023):
13830
13831* We're prototyping a Pigweed extension for VS Code. Learn more at
13832  :ref:`module-pw_ide-guide-vscode`.
13833* We added ``pw_toolchain_bazel``, a new LLVM toolchain for building with
13834  Bazel on macOS.
13835* We are working on many docs improvements in parallel: auto-generating ``rustdocs``
13836  for modules that support Rust
13837  (`example <https://pigweed.dev/rustdoc/pw_varint/>`_), refactoring the
13838  :ref:`module-pw_tokenizer` docs, migrating API references to Doxygen,
13839  fixing `longstanding docs site UI issues <https://issues.pigweed.dev/issues/292273650>`_,
13840  and more.
13841
13842Active SEEDs
13843============
13844Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
13845
13846* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
13847* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
13848* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
13849* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
13850* `SEED-0107: Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__
13851* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
13852
13853Modules
13854=======
13855
13856pw_alignment
13857------------
13858* `Fix typos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163250>`__
13859
13860pw_analog
13861---------
13862Long-term, all of our API references will be generated from header comments via
13863Doxygen. Short-term, we are starting to show header files directly within the
13864docs as a stopgap solution for helping Pigweed users get a sense of each
13865module's API. See :ref:`module-pw_analog` for an example.
13866
13867* `Include header files as stopgap API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161491>`__
13868  (issue `#293895312 <https://issues.pigweed.dev/issues/293895312>`__)
13869
13870pw_base64
13871---------
13872We finished migrating the ``pw_random`` API reference to Doxygen.
13873
13874* `Finish Doxygenifying the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162911>`__
13875* `Doxygenify the Encode() functions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156532>`__
13876
13877pw_boot_cortex_m
13878----------------
13879* `Allow explict target name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159790>`__
13880
13881pw_build
13882--------
13883We added a ``log_build_steps`` option to ``ProjectBuilder`` that enables you
13884to log all build step lines to your screen and logfiles.
13885
13886* `Handle ProcessLookupError exceptions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163710>`__
13887* `ProjectBuilder log build steps option <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162931>`__
13888* `Fix progress bar clear <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160791>`__
13889
13890pw_cli
13891------
13892We polished tab completion support.
13893
13894* `Zsh shell completion autoload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160796>`__
13895* `Make pw_cli tab completion reusable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160379>`__
13896
13897pw_console
13898----------
13899We made copy-to-clipboard functionality more robust when running ``pw_console``
13900over SSH.
13901
13902* `Set clipboard fallback methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150238>`__
13903
13904pw_containers
13905-------------
13906We updated :cpp:class:`filteredview` constructors and migrated the
13907``FilteredView`` API reference to Doxygen.
13908
13909* `Doxygenify pw::containers::FilteredView <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160373>`__
13910* `Support copying the FilteredView predicate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160372>`__
13911
13912pw_docgen
13913---------
13914At the top of pages like :ref:`module-pw_tokenizer` there is a UI widget that
13915provides information about the module. Previously, this UI widget had links
13916to all the module's docs. This is no longer needed now that the site nav
13917automatically scrolls to the page you're on, which allows you to see the
13918module's other docs.
13919
13920* `Remove the navbar from the module docs header widget <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162991>`__
13921  (issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__)
13922
13923pw_env_setup
13924------------
13925We made Python setup more flexible.
13926
13927* `Add clang_next.json <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163810>`__
13928  (issue `#295020927 <https://issues.pigweed.dev/issues/295020927>`__)
13929* `Pip installs from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162093>`__
13930* `Include Python packages from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162073>`__
13931* `Remove unused pep517 package <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162072>`__
13932* `Use more available Python 3.9 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161492>`__
13933  (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
13934* `Update Bazel to [email protected] <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161010>`__
13935
13936pw_ide
13937------
13938We are prototyping a ``pw_ide`` extension for VS Code.
13939
13940* `Restore stable clangd settings link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164011>`__
13941* `Add command to install prototype extension <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162412>`__
13942* `Prototype VS Code extension <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151653>`__
13943
13944pw_interrupt
13945------------
13946We added a backend for Xtensa processors.
13947
13948* `Add backend for xtensa processors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160031>`__
13949* `Tidy up target compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160650>`__
13950  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
13951
13952pw_log_zephyr
13953-------------
13954We encoded tokenized messages to ``pw::InlineString`` so that the output is
13955always null-terminated.
13956
13957* `Fix null termination of Base64 messages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163650>`__
13958
13959pw_presubmit
13960------------
13961We increased
13962`LUCI <https://chromium.googlesource.com/infra/infra/+/main/doc/users/services/about_luci.md>`_
13963support and updated the ``#pragma once`` check to look for matching ``#ifndef``
13964and ``#define`` lines.
13965
13966* `Fix overeager format_code matches <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162611>`__
13967* `Exclude vsix files from copyright <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163011>`__
13968* `Clarify unicode errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162993>`__
13969* `Upload coverage json to zoss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162090>`__
13970  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
13971* `Add to context tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162311>`__
13972* `Add patchset to LuciTrigger <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162310>`__
13973* `Add helpers to LuciContext <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162091>`__
13974* `Update Python vendor wheel dir <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161514>`__
13975* `Add summaries to guard checks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161391>`__
13976  (issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__)
13977* `Copy Python packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161490>`__
13978* `Add ifndef/define check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152173>`__
13979  (issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__)
13980
13981pw_protobuf_compiler
13982--------------------
13983We continued work to ensure that the Python environment in Bazel is hermetic.
13984
13985* `Use hermetic protoc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162913>`__
13986  (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
13987* `Move reference to python interpreter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162932>`__
13988  (issue `#294414535 <https://issues.pigweed.dev/issues/294414535>`__)
13989* `Make nanopb hermetic <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162313>`__
13990  (issue `#293792686 <https://issues.pigweed.dev/issues/293792686>`__)
13991
13992pw_python
13993---------
13994We fixed bugs related to ``requirements.txt`` files not getting found.
13995
13996* `setup.sh requirements arg fix path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164430>`__
13997* `setup.sh arg spaces bug <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163510>`__
13998
13999pw_random
14000---------
14001We continued migrating the ``pw_random`` API reference to Doxygen.
14002
14003* `Doxygenify random.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163730>`__
14004
14005pw_rpc
14006------
14007We made the Java client more robust.
14008
14009* `Java client backwards compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164515>`__
14010* `Avoid reflection in Java client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162930>`__
14011  (issue `#293361955 <https://issues.pigweed.dev/issues/293361955>`__)
14012* `Use hermetic protoc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162913>`__
14013  (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
14014* `Improve Java client error message for missing parser() method <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159471>`__
14015
14016pw_spi
14017------
14018We continued work on implementing a SPI responder interface.
14019
14020* `Responder interface definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159230>`__
14021
14022pw_status
14023---------
14024We fixed the nesting on a documentation section.
14025
14026* `Promote Zephyr heading to h2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160730>`__
14027
14028pw_stream
14029---------
14030We added ``remaining()``, ``len()``, and ``position()`` methods to the
14031``Cursor`` wrapping in Rust.
14032
14033* `Add infalible methods to Rust Cursor <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164271>`__
14034
14035pw_stream_shmem_mcuxpresso
14036--------------------------
14037We added the :ref:`module-pw_stream_shmem_mcuxpresso` backend for ``pw_stream``.
14038
14039* `Add shared memory stream for NXP MCU cores <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160831>`__
14040  (issue `#294406620 <https://issues.pigweed.dev/issues/294406620>`__)
14041
14042pw_sync_freertos
14043----------------
14044* `Fix ODR violation in tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160795>`__
14045
14046pw_thread
14047---------
14048* `Fix test_thread_context typo and presubmit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162770>`__
14049
14050pw_tokenizer
14051------------
14052We added support for unaligned token databases and continued the
14053:ref:`seed-0102` update of the ``pw_tokenizer`` docs.
14054
14055* `Separate API reference and how-to guide content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163256>`__
14056* `Polish the sales pitch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163571>`__
14057* `Support unaligned databases <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163333>`__
14058* `Move the basic overview into getting started <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163253>`__
14059* `Move the case study to guides.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163255>`__
14060* `Restore info that get lost during the SEED-0102 migration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163330>`__
14061* `Use the same tagline on every doc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163332>`__
14062* `Replace savings table with flowchart <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158893>`__
14063* `Ignore string nonliteral warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162092>`__
14064
14065pw_toolchain
14066------------
14067We fixed a regression that made it harder to use Pigweed in an environment where
14068``pw_env_setup`` has not been run and fixed a bug related to incorrect Clang linking.
14069
14070* `Optionally depend on pw_env_setup_CIPD_PIGWEED <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163790>`__
14071  (issue `#294886611 <https://issues.pigweed.dev/issues/294886611>`__)
14072* `Prefer start-group over whole-archive <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150610>`__
14073  (issue `#285357895 <https://issues.pigweed.dev/issues/285357895>`__)
14074
14075pw_toolchain_bazel
14076------------------
14077We added a an LLVM toolchain for building with Bazel on macOS.
14078
14079* `LLVM toolchain for macOS Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157634>`__
14080  (issue `#291795899 <https://issues.pigweed.dev/issues/291795899>`__)
14081
14082pw_trace_tokenized
14083------------------
14084We made tracing more robust.
14085
14086* `Replace trace callback singletons with dep injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156912>`__
14087
14088pw_transfer
14089-----------
14090We made integration tests more robust.
14091
14092* `Fix use-after-destroy in integration test client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163252>`__
14093  (issue `#294101325 <https://issues.pigweed.dev/issues/294101325>`__)
14094* `Fix legacy binary path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162914>`__
14095  (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
14096* `Mark linux-only Bazel tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162094>`__
14097  (issue `#294101325 <https://issues.pigweed.dev/issues/294101325>`__)
14098
14099pw_web
14100------
14101We added support for storing user preferences in ``localStorage``.
14102
14103* `Fix TypeScript warnings in web_serial_transport.ts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164591>`__
14104* `Add state for view number, search string, and columns visible <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161390>`__
14105* `Fix TypeScript warnings in transfer.ts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162411>`__
14106* `Fix TypeScript warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162095>`__
14107* `Remove dependency on 'crc' and 'buffer' NPM packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160830>`__
14108
14109Build
14110=====
14111We made the Bazel system more hermetic and fixed an error related to not
14112finding the Java runtime.
14113
14114* `Do not allow PATH leakage into Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162610>`__
14115  (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__)
14116* `Use remote Java runtime for Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160793>`__
14117  (issue `#291791485 <https://issues.pigweed.dev/issues/291791485>`__)
14118
14119Docs
14120====
14121We created a new doc that explains how to improve Pigweed
14122support in various IDEs. We standardized how we present call-to-action buttons
14123on module homepages. See :ref:`module-pw_tokenizer` for an example. We fixed a
14124longstanding UI issue around the site nav not scrolling to the page that you're
14125currently on.
14126
14127* `Add call-to-action buttons <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163331>`__
14128* `Update module items in site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163251>`__
14129* `Add editor support doc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/110261>`__
14130* `Delay nav scrolling to fix main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162990>`__
14131  (issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__)
14132* `Suggest editor configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162710>`__
14133* `Scroll to the current page in the site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162410>`__
14134  (issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__)
14135* `Add changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160170>`__
14136  (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__)
14137
14138SEEDs
14139=====
14140We created a UI widget to standardize how we present SEED status information.
14141See the start of :ref:`seed-0102` for an example.
14142
14143* `Create Sphinx directive for metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161517>`__
14144
14145Third party
14146===========
14147
14148third_party/mbedtls
14149-------------------
14150* `3.3.0 compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160790>`__
14151  (issue `#293612945 <https://issues.pigweed.dev/issues/293612945>`__)
14152
14153Miscellaneous
14154=============
14155
14156OWNERS
14157------
14158* `Add kayce@ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163254>`__
14159
14160------------
14161Jul 28, 2023
14162------------
14163Highlights (Jul 13, 2023 to Jul 28, 2023):
14164
14165* `SEED-0107: Pigweed Communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__,
14166  a proposal for an embedded-focused network protocol stack, is under
14167  discussion. Please review and provide your input!
14168* ``pw_cli`` now supports tab completion!
14169* A new UART Linux backend for ``pw_stream`` was added (``pw_stream_uart_linux``).
14170
14171Active SEEDs
14172============
14173* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__
14174* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__
14175* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__
14176* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__
14177* `SEED-0107: Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__
14178* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__
14179
14180Modules
14181=======
14182
14183pw_allocator
14184------------
14185We started migrating the ``pw_allocator`` API reference to Doxygen.
14186
14187* `Doxygenify the freelist chunk methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155395>`__
14188
14189pw_async
14190--------
14191We increased Bazel support.
14192
14193* `Fill in bazel build rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156911>`__
14194
14195pw_async_basic
14196--------------
14197We reduced logging noisiness.
14198
14199* `Remove debug logging <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158193>`__
14200
14201pw_base64
14202---------
14203We continued migrating the ``pw_base64`` API reference to Doxygen.
14204
14205* `Doxygenify MaxDecodedSize() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157091>`__
14206
14207pw_bloat
14208--------
14209We improved the performance of label creation. One benchmark moved from 120
14210seconds to 0.02 seconds!
14211
14212* `Cache and optimize label production <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159474>`__
14213
14214pw_bluetooth
14215------------
14216Support for 3 events was added.
14217
14218* `Add 3 Event packets & format hci.emb <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157663>`__
14219
14220pw_build
14221--------
14222* `Fix progress bar clear <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160791>`__
14223* `Upstream build script fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159473>`__
14224* `Add pw_test_info <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154551>`__
14225* `Upstream build script & presubmit runner <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137130>`__
14226* `pw_watch: Redraw interval and bazel steps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159490>`__
14227* `Avoid extra newlines for docs in generate_3p_gn <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150233>`__
14228* `pip install GN args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155270>`__
14229  (issue `#240701682 <https://issues.pigweed.dev/issues/240701682>`__)
14230* `pw_python_venv generate_hashes option <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157630>`__
14231  (issue `#292098416 <https://issues.pigweed.dev/issues/292098416>`__)
14232
14233pw_build_mcuxpresso
14234-------------------
14235Some H3 elements in the ``pw_build_mcuxpresso`` docs were being incorrectly
14236rendered as H2.
14237
14238* `Fix doc headings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155570>`__
14239
14240pw_chrono_freertos
14241------------------
14242We investigated what appeared to be a race condition but turned out to be an
14243unreliable FreeRTOS variable.
14244
14245* `Update SystemTimer comments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159231>`__
14246  (issue `#291346908 <https://issues.pigweed.dev/issues/291346908>`__)
14247* `Remove false callback precondition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156091>`__
14248  (issue `#291346908 <https://issues.pigweed.dev/issues/291346908>`__)
14249
14250pw_cli
14251------
14252``pw_cli`` now supports tab completion!
14253
14254* `Zsh shell completion autoload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160796>`__
14255* `Make pw_cli tab completion reusable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160379>`__
14256* `Print tab completions for pw commands <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160032>`__
14257* `Fix logging msec timestamp format <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159930>`__
14258
14259pw_console
14260----------
14261Communication errors are now handled more gracefully.
14262
14263* `Detect comms errors in Python <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155814>`__
14264
14265pw_containers
14266-------------
14267The flat map implementation and docs have been improved.
14268
14269* `Doxygenify pw::containers::FilteredView <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160373>`__
14270* `Support copying the FilteredView predicate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160372>`__
14271* `Improve FlatMap algorithm and filtered_view support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156652>`__
14272* `Improve FlatMap doc example <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156651>`__
14273* `Update FlatMap doc example so it compiles <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156650>`__
14274
14275pw_digital_io
14276-------------
14277We continued migrating the API reference to Doxygen. An RPC service was added.
14278
14279* `Doxygenify the interrupt handler methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154193>`__
14280* `Doxygenify Enable() and Disable() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155817>`__
14281* `Add digital_io rpc service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154974>`__
14282
14283pw_digital_io_mcuxpresso
14284------------------------
14285We continued migrating the API reference to Doxygen. Support for a new RPC
14286service was added.
14287
14288* `Remove unneeded constraints <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155394>`__
14289
14290pw_docgen
14291---------
14292Support for auto-linking to Rust docs (when available) was added. We also
14293explained how to debug Pigweed's Sphinx extensions.
14294
14295* `Add rustdoc linking support to pigweed-module tag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159292>`__
14296* `Add extension debugging instructions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156090>`__
14297
14298pw_env_setup
14299------------
14300There were lots of updates around how the Pigweed environment uses Python.
14301
14302* `pw_build: Disable pip version check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160551>`__
14303* `Add docstrings to visitors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159131>`__
14304* `Sort pigweed_environment.gni lines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158892>`__
14305* `Mac and Windows Python requirements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158912>`__
14306  (issue `#292098416 <https://issues.pigweed.dev/issues/292098416>`__)
14307* `Add more Python versions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158891>`__
14308  (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
14309* `Remove python.json from Bazel CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158911>`__
14310  (issue `#292585791 <https://issues.pigweed.dev/issues/292585791>`__)
14311* `Redirect variables from empty dirs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158890>`__
14312  (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
14313* `Split Python constraints per OS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157657>`__
14314  (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__)
14315* `Add --additional-cipd-file argument <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158170>`__
14316  (issue `#292280529 <https://issues.pigweed.dev/issues/292280529>`__)
14317* `Upgrade Python cryptography to 41.0.2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157654>`__
14318* `Upgrade ipython to 8.12.2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157653>`__
14319* `Upgrade PyYAML to 6.0.1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157652>`__
14320* `Add Python constraints with hashes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153470>`__
14321  (issue `#287302102 <https://issues.pigweed.dev/issues/287302102>`__)
14322* `Bump pip and pip-tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156470>`__
14323* `Add coverage utilities <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155810>`__
14324  (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__)
14325
14326pw_fuzzer
14327---------
14328A fuzzer example was updated to more closely follow Pigweed code conventions.
14329
14330* `Update fuzzers to use Pigweed domains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/148337>`__
14331
14332pw_hdlc
14333-------
14334Communication errors are now handled more gracefully.
14335
14336* `Detect comms errors in Python <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155814>`__
14337* `Add target to Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157651>`__
14338
14339pw_i2c
14340------
14341An RPC service was added. Docs and code comments were updated to use ``responder``
14342and ``initiator`` terminology consistently.
14343
14344* `Standardize naming on initiator/responder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159132>`__
14345* `Add i2c rpc service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155250>`__
14346
14347pw_i2c_mcuxpresso
14348-----------------
14349* `Allow for static initialization of initiator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155790>`__
14350* `Add test to ensure compilation of module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155390>`__
14351
14352pw_ide
14353------
14354* `Support multiple comp DB search paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144210>`__
14355  (issue `#280363633 <https://issues.pigweed.dev/issues/280363633>`__)
14356
14357pw_interrupt
14358------------
14359Work continued on how facade backend selection works in Bazel.
14360
14361* `Add backend for xtensa processors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160031>`__
14362* `Tidy up target compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160650>`__
14363  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
14364* `Remove cpu-based backend selection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160380>`__
14365  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
14366* `Add backend constraint setting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160371>`__
14367  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
14368* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154500>`__
14369  (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
14370
14371pw_log_rpc
14372----------
14373A docs section was added that explains how ``pw_log``, ``pw_log_tokenized``,
14374and ``pw_log_rpc`` interact with each other.
14375
14376* `Explain relation to pw_log and pw_log_tokenized <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157231>`__
14377
14378pw_package
14379----------
14380Raspberry Pi Pico and Zephyr support improved.
14381
14382* `Add picotool package installer <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155791>`__
14383* `Handle windows Zephyr SDK setup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157030>`__
14384* `Run Zephyr SDK setup.sh after syncing from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156530>`__
14385
14386pw_perf_test
14387------------
14388* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154498>`__
14389  (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
14390
14391pw_presubmit
14392------------
14393* `Add ifndef/define check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152173>`__
14394  (issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__)
14395* `Remove deprecated gn_docs_build step <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159291>`__
14396* `Fix issues with running docs_build twice <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159290>`__
14397* `Add Rust docs to docs site <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157656>`__
14398
14399pw_protobuf_compiler
14400--------------------
14401* `Disable legacy namespace <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157232>`__
14402* `Transition to our own proto compiler rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157033>`__
14403  (issue `#234874064 <https://issues.pigweed.dev/issues/234874064>`__)
14404* `Allow external usage of macros <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155432>`__
14405
14406pw_ring_buffer
14407--------------
14408``pw_ring_buffer`` now builds with ``-Wconversion`` enabled.
14409
14410* `Conversion warning cleanups <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157430>`__
14411  (issue `#259746255 <https://issues.pigweed.dev/issues/259746255>`__)
14412
14413pw_rpc
14414------
14415* `Create client call hook in Python client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157870>`__
14416* `Provide way to populate response callbacks during tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156670>`__
14417* `Add Soong rule for pwpb echo service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156270>`__
14418
14419pw_rpc_transport
14420----------------
14421* `Add more Soong rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155035>`__
14422
14423pw_rust
14424-------
14425We are preparing pigweed.dev to automatically link to auto-generated
14426Rust module documentation when available.
14427
14428* `Add combined Rust doc support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157632>`__
14429* `Update @rust_crates sha <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155051>`__
14430
14431pw_spi
14432------
14433We updated docs and code comments to use ``initiator`` and ``responder``
14434terminology consistently.
14435
14436* `Standardize naming on initiator/responder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159132>`__
14437
14438pw_status
14439---------
14440* `Add Clone and Copy to Rust Error enum <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157093>`__
14441
14442pw_stream
14443---------
14444We continued work on Rust support.
14445
14446* `Fix Doxygen typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154732>`__
14447* `Add read_exact() an write_all() to Rust Read and Write traits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157094>`__
14448* `Clean up rustdoc warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157092>`__
14449* `Add Rust varint reading and writing support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156451>`__
14450* `Refactor Rust cursor to reduce monomorphization <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155391>`__
14451* `Add Rust integer reading support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155053>`__
14452* `Move Rust Cursor to it's own sub-module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155052>`__
14453
14454pw_stream_uart_linux
14455--------------------
14456A new UART Linux backend for ``pw_stream`` was added.
14457
14458* `Add stream for UART on Linux <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156910>`__
14459
14460pw_sync
14461-------
14462C++ lock traits were added and used.
14463
14464* `Improve Borrowable lock traits and annotations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153573>`__
14465  (issue `#261078330 <https://issues.pigweed.dev/issues/261078330>`__)
14466* `Add lock traits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153572>`__
14467
14468pw_sync_freertos
14469----------------
14470* `Fix ODR violation in tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160795>`__
14471
14472pw_sys_io
14473---------
14474* `Add android to alias as host system <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157871>`__
14475  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
14476* `Add chromiumos to alias as host system <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155811>`__
14477  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
14478
14479pw_system
14480---------
14481* `Update IPython init API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157872>`__
14482* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154497>`__
14483  (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
14484
14485pw_tokenizer
14486------------
14487We refactored the ``pw_tokenizer`` docs to adhere to :ref:`seed-0102`.
14488
14489* `Update tagline, restore missing info, move sections <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158192>`__
14490* `Migrate the proto docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157655>`__
14491* `Remove stub sections and add guides link (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157631>`__
14492* `Migrate the custom macro example (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157032>`__
14493* `Migrate the Base64 docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156531>`__
14494* `Migrate token collision docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155818>`__
14495* `Migrate detokenization docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155815>`__
14496* `Migrate masking docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155812>`__
14497
14498pw_toolchain
14499------------
14500The build system was modified to use relative paths to avoid unintentionally
14501relying on the path environment variable. Map file generation is now optional
14502to avoid generating potentially large map files when they're not needed.
14503
14504* `Test trivially destructible class <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159232>`__
14505* `Make tools use relative paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159130>`__
14506  (issue `#290848929 <https://issues.pigweed.dev/issues/290848929>`__)
14507* `Support conditionally creating mapfiles <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157431>`__
14508
14509pw_trace_tokenized
14510------------------
14511* `Replace singletons with dependency injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155813>`__
14512* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154499>`__
14513  (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__)
14514
14515pw_unit_test
14516------------
14517* `Update metadata test type for unit tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154550>`__
14518
14519pw_varint
14520---------
14521* `Update Rust API to return number of bytes written <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156450>`__
14522
14523pw_watch
14524--------
14525We fixed an issue where builds were getting triggered when files were opened
14526or closed without modication.
14527
14528* `Trigger build only on file modifications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157633>`__
14529
14530pw_web
14531------
14532* `Remove dependency on 'crc' and 'buffer' NPM packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160830>`__
14533* `Update theme token values and usage <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155970>`__
14534* `Add disconnect() method to WebSerialTransport <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156471>`__
14535* `Add docs section for log viewer component <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155050>`__
14536
14537Build
14538=====
14539
14540bazel
14541-----
14542* `Add host_backend_alias macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160550>`__
14543  (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__)
14544* `Fix missing deps in some modules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160376>`__
14545* `Support user bazelrc files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160030>`__
14546* `Update rules_python to 0.24.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158913>`__
14547  (issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__)
14548
14549build
14550-----
14551* `Use remote Java runtime for Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160793>`__
14552  (issue `#291791485 <https://issues.pigweed.dev/issues/291791485>`__)
14553* `Add Rust toolchain to Bazel macOS build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159491>`__
14554  (issue `#291749888 <https://issues.pigweed.dev/issues/291749888>`__)
14555* `Mark linux-only Bazel build targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158191>`__
14556
14557Targets
14558=======
14559
14560targets/rp2040_pw_system
14561------------------------
14562Some of the Pico docs incorrectly referred to another hardware platform.
14563
14564* `Fix references to STM32 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157233>`__
14565  (issue `#286652309 <https://issues.pigweed.dev/issues/286652309>`__)
14566
14567Language support
14568================
14569
14570python
14571------
14572* `Remove setup.py files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159472>`__
14573
14574rust
14575----
14576* `Add rustdoc links for existing crates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159470>`__
14577
14578OS support
14579==========
14580
14581zephyr
14582------
14583* `Add project name to unit test root <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156850>`__
14584* `Add pigweed root as module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156596>`__
14585* `Fix setup.sh call <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156591>`__
14586
14587Docs
14588====
14589We added a feature grid to the homepage and fixed outdated info in various
14590docs.
14591
14592* `pigweed.dev feature grid <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157658>`__
14593* `Mention SEED-0102 in module_structure.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157234>`__
14594  (issue `#286477675 <https://issues.pigweed.dev/issues/286477675>`__)
14595* `Remove outdated Homebrew info in getting_started.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157291>`__
14596  (issue `#287528787 <https://issues.pigweed.dev/issues/287528787>`__)
14597* `Fix "gn args" examples which reference pw_env_setup_PACKAGE_ROOT <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156452>`__
14598* `Consolidate contributing docs in site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155816>`__
14599
14600SEEDs
14601=====
14602
14603SEED-0107
14604---------
14605* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157031>`__
14606
14607SEED-0108
14608---------
14609* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158171>`__
14610
14611Third party
14612===========
14613
14614third_party
14615-----------
14616* `Remove now unused rules_proto_grpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157290>`__
14617
14618third_party/mbedtls
14619-------------------
14620* `3.3.0 compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160790>`__
14621  (issue `#293612945 <https://issues.pigweed.dev/issues/293612945>`__)
14622