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