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-2025-02-06: 16 17----------- 18Feb 6, 2025 19----------- 20 21.. changelog_highlights_start 22 23.. note:: 24 25 :ref:`docs-changelog` will be paused for 2 months. 26 It will resume in April 2025. 27 28Highlights (Jan 25, 2025 to Feb 6, 2025): 29 30* **Tokenization improvements in C++**: The new 31 :cpp:func:`pw::tokenizer::Detokenizer::FromCsv` C++ method constructs a 32 detokenizer from a CSV file. :ref:`Tokenization domains <seed-0105>` are now 33 supported in C++. 34 35* **New global variables wrapper** :cpp:class:`pw::RuntimeInitGlobal` declares 36 a global variable that is initialized at runtime. Its destructor is never 37 run. 38 39* **Bazel-based docs build**: ``pigweed.dev`` is now built with Bazel. See 40 :ref:`blog-08-bazel-docgen`. 41 42.. changelog_highlights_end 43 44.. _docs-changelog-2025-02-06-Modules: 45 46Modules 47======= 48 49.. _docs-changelog-2025-02-06-Modules-pw_allocator: 50 51pw_allocator 52------------ 53New features: 54 55.. 9f0f4f8d888e7ebfd228efd622df996f3125f2f1 56 57* :cpp:class:`pw::Allocator` now has more overloads for customizing 58 allocated array alignment. Commit: `Add overloads to customize allocated 59 array alignment <https://pwrev.dev/260276>`__. 60 61Changes: 62 63.. c48adeb92ff36577a34f22cf7b2a0b8d0086a3b2 64 65* ``pw::allocator::test::SynchronizedAllocatorForTest`` was removed. 66 Commit: `Remove SynchronizedAllocatorForTest 67 <https://pwrev.dev/264698>`__. 68 69.. _docs-changelog-2025-02-06-Modules-pw_bluetooth: 70 71pw_bluetooth 72------------ 73New features: 74 75.. 7bec9117b6f21884a5046ecabf351b671b167885 76 77* ``pw_bluetooth`` now supports a :ref:`snoop log 78 <module-pw_bluetooth-snoop-log>` for recording 79 HCI RX/TX traffic. Commit: `Add snoop log <https://pwrev.dev/226611>`__. 80 Bug: :bug:`389995204`. 81 82.. _docs-changelog-2025-02-06-Modules-pw_bluetooth_proxy: 83 84pw_bluetooth_proxy 85------------------ 86New features: 87 88.. 89a3c9cab649585ebeb7b863035d28ff419829bc 89 90* The new :cpp:class:`pw::bluetooth::proxy::AcquireGattNotifyChannel` 91 method returns a GATT Notify channel that supports sending notifications 92 to a particular connection handle and attribute. Commit: `Support 93 acquire of gatt notify channels <https://pwrev.dev/264954>`__. Bugs: 94 :bug:`369709521`, :bug:`379337272`. 95 96.. _docs-changelog-2025-02-06-Modules-pw_bluetooth_sapphire: 97 98pw_bluetooth_sapphire 99--------------------- 100New features: 101 102.. c6f84aa0c5a57695a4a57e3811c89135e9344f00 103 104* :ref:`module-pw_bluetooth_sapphire-fuchsia-zxdb` explains how to use 105 Fuchsia's kernel debugger. Commit: `Document how to use the Zxdb 106 Debugger <https://pwrev.dev/263812>`__. 107 108.. _docs-changelog-2025-02-06-Modules-pw_containers: 109 110pw_containers 111------------- 112New features: 113 114.. 16ddae866c80f3cee061f189cee149700f81d188 115 116* :cpp:class:`pw::Vector` now has an explicit ``constexpr`` constructor. 117 Using this constructor will place the entire object in ``.data`` by 118 default, which will increase ROM size. Commit: `Add explicit constexpr 119 constructor for Vector <https://pwrev.dev/263692>`__. 120 121Bug fixes: 122 123.. 852571bdf8b031b7ca89fff2ae9fdaa4f6cfe0a6 124 125* A bug was fixed where ``pw::Vector::insert`` was move assigning to 126 destroyed objects. Commit: `Do not move assign to destroyed objects in 127 Vector::insert <https://pwrev.dev/252452>`__. Bug: :bug:`381942905`. 128 129.. _docs-changelog-2025-02-06-Modules-pw_crypto: 130 131pw_crypto 132--------- 133New features: 134 135.. a1eb87b67a72231755b7fd6671e99d7f7276ba20 136 137* :cpp:class:`pw::crypto::aes_cmac::Cmac` provides support for the 138 AES-CMAC algorithm. Commit: `Add Aes::Cmac <https://pwrev.dev/231913>`__. 139 140.. _docs-changelog-2025-02-06-Modules-pw_tokenizer: 141 142pw_tokenizer 143------------ 144New features: 145 146.. 9b46aef8010f3c2edd87f2365d9ef6ee4656df56 147 148* The new :cpp:func:`pw::tokenizer::Detokenizer::FromCsv` C++ method 149 constructs a detokenizer from a CSV file. Commit: `Add support for CSV 150 parsing in C++ <https://pwrev.dev/256653>`__. 151 152.. 8fe4260fdbbf806a2470396d0d1da1bb6b15d522 153 154* :ref:`Tokenization domains <seed-0105>` are now supported in C++. 155 Commit: `Add support for domains in C++ <https://pwrev.dev/255173>`__. 156 157.. _docs-changelog-2025-02-06-Modules-pw_toolchain: 158 159pw_toolchain 160------------ 161New features: 162 163.. 5f9420a551774235c883a621e639228525b13591 164 165* :cpp:class:`pw::RuntimeInitGlobal` is a new wrapper for global 166 variables. See :ref:`module-pw_toolchain-cpp-globals`. Commit: 167 `Introduce RuntimeInitGlobal <https://pwrev.dev/263875>`__. 168 169.. d2f7a36184d742e27761591a0dac13fa421e6b32 170 171* :ref:`module-pw_toolchain` has started to support a Zephyr toolchain. 172 Commit: `Add support for Zephyr toolchain <https://pwrev.dev/263836>`__. 173 174.. 51a7b5cc4bbdbb54d4eb0a9b0200a76c7c479c65 175 176* :ref:`module-pw_toolchain-bazel-clang-tidy` explains how to integrate 177 Pigweed's toolchain with ``clang-tidy``. Commit: `Document clang-tidy + 178 Bazel <https://pwrev.dev/262873>`__. Bug: :bug:`341723612`. 179 180.. _docs-changelog-2025-02-06-Modules-pw_transfer: 181 182pw_transfer 183----------- 184Bug fixes: 185 186.. d95bb9205b6826e7c35f06f2ae53e354a1d795e8 187 188* In proto3, when a retry config option is 0, ``pw_transfer`` no longer 189 attempts to set it. Commit: `Ignore 0 retry values from config proto 190 <https://pwrev.dev/265253>`__. Bug: :bug:`357145010`. 191 192.. _docs-changelog-2025-02-06-Build-systems: 193 194Build systems 195============= 196 197.. _docs-changelog-2025-02-06-Build-systems-Bazel: 198 199Bazel 200----- 201New features: 202 203.. 5f466288aea2a17142258a4ed0683b57aa59c711 204 205* The Pigweed Bazel build has started to support Zephyr's toolchain. 206 Commit: `Add Zephyr toolchain CIPD repo <https://pwrev.dev/263832>`__. 207 208.. _docs-changelog-2025-02-06-Docs: 209 210Docs 211==== 212New features: 213 214.. 18076431f27790a69116ef91bb8f8c877eb6a479 215 216* `pigweed.dev/rustdoc <https://pigweed.dev/rustdoc>`__ now provides an 217 index of all Pigweed Rust crates. Previously, that page would 404. 218 Commit: `Add index page to Rust API docs <https://pwrev.dev/263838>`__. 219 220.. 55b363ba45eb871df096ca060c93a45f73b741a7 221 222* When viewing the docs on a staging site, there's now a banner at the 223 top of the docs site to make it clear that you're not viewing the 224 official Pigweed docs. Commit: `Present banner on staged docs 225 <https://pwrev.dev/263513>`__. Bug: :bug:`304835851`. 226 227.. 809d32b33e2dd368bc91704e7d70f7069d6cc7d9 228 229* ``pigweed.dev`` is now built with Bazel. See 230 :ref:`blog-08-bazel-docgen`. Commit: `Add Bazel migration blog post 231 <https://pwrev.dev/264515>`__. 232 233.. _docs-changelog-2025-01-24: 234 235------------ 236Jan 24, 2025 237------------ 238.. changelog_highlights_start 239 240Highlights (Jan 10, 2025 to Jan 24, 2025): 241 242* **Thread creation API**: The cross-platform thread creation API proposed 243 in :ref:`seed-0128` has been implemented. 244* **Layering check**: Upstream Pigweed toolchains now support 245 :ref:`layering check <module-pw_toolchain-bazel-layering-check>` in Bazel. 246 Including headers that aren't in the ``hdrs`` of a ``cc_library`` 247 you directly depend on becomes a compile-time error. 248* **Cortex-A support**: pw_interrupt_cortex_a is a new 249 ``pw_interrupt`` backend for Arm Cortex-A processors. ``pw_toolchain`` 250 now supports Arm Cortex-A35. 251* **Atomic API**: The new :ref:`module-pw_atomic` module provides software 252 implementations of atomic operations. 253 254.. changelog_highlights_end 255 256.. _docs-changelog-2025-01-24-Modules: 257 258Modules 259======= 260 261.. _docs-changelog-2025-01-24-Modules-pw_atomic: 262 263pw_atomic 264--------- 265New features: 266 267.. 120f202e25b4c59111012e9568c74f4af2fdb09d 268 269* The new :ref:`module-pw_atomic` module provides software 270 implementations of atomic operations. Commit: `Add module for atomic 271 operations <https://pwrev.dev/239719>`__. 272 273.. _docs-changelog-2025-01-24-Modules-pw_bluetooth_proxy: 274 275pw_bluetooth_proxy 276------------------ 277New features: 278 279.. c20f1e99713ae9959a223d8504690ccbf98f260f 280 281* Clients of ``pw_bluetooth_proxy`` can now register a callback function 282 for inspecting host-to-controller L2CAP basic channel packets. Commit: 283 `Add host to controller callback packet sniffing 284 <https://pwrev.dev/260553>`__. Bug: :bug:`390191420`. 285 286.. _docs-changelog-2025-01-24-Modules-pw_cli: 287 288pw_cli 289------ 290New features: 291 292.. 69614fba8ccf19b2dcaf60f214353a733329fcaa 293 294* The new :py:class:`pw_cli.git_repo.GitRepoFinder` helper class 295 efficiently finds Git repo roots. Commit: `Add helper for efficiently 296 finding git repo roots <https://pwrev.dev/254024>`__. Bug: 297 :bug:`326309165`. 298 299.. _docs-changelog-2025-01-24-Modules-pw_digital_io_mcuxpresso: 300 301pw_digital_io_mcuxpresso 302------------------------ 303New features: 304 305.. f282c15c48732f4c4e1e3da15c1cfddea2b9cb47 306 307* :cpp:class:`pw::digital_io::McuxpressoDigitalInOutInterrupt` now 308 supports interrupt triggers on both edges. Commit: `Emulate kBothEdges 309 trigger via level interrupt <https://pwrev.dev/260793>`__. Bug: 310 :bug:`390456846`. 311 312.. _docs-changelog-2025-01-24-Modules-pw_env_setup: 313 314pw_env_setup 315------------ 316Changes: 317 318.. 537825f5f67281aee3764444de234e81722a2401 319 320* All transitive Python dependencies are now pinned. Commit: `Pin all 321 transitive Python package dependencies <https://pwrev.dev/261413>`__. 322 Bug: :bug:`390257072`. 323 324.. _docs-changelog-2025-01-24-Modules-pw_interrupt_cortex_a: 325 326pw_interrupt_cortex_a 327--------------------- 328New features: 329 330.. e61919ca93f922bc67fc6bd2f005c00f858cdcbd 331 332* [Deprecated] pw_interrupt_cortex_a is a new ``pw_interrupt`` backend 333 for Arm Cortex-A processors. Commit: `Add pw_interrupt backend for 334 A-profile processors <https://pwrev.dev/261396>`__. 335 336.. _docs-changelog-2025-01-24-Modules-pw_protobuf: 337 338pw_protobuf 339----------- 340Changes: 341 342.. a3cd0bc42a929df218bbc3ed96944cacf5cead7a 343 344* The ``kMaxEncodedSizeBytes`` constant has been renamed to 345 ``kMaxEncodedSizeBytesWithoutValues`` to reflect the fact that it 346 sometimes doesn't represent a message's true maximum size. Commit: 347 `Disambiguate maximum size constants <https://pwrev.dev/259012>`__. Bug: 348 :bug:`379868242`. 349 350.. _docs-changelog-2025-01-24-Modules-pw_rpc: 351 352pw_rpc 353------ 354Changes: 355 356.. 0afdf903105c46e8572591de16b7fd2964ad0874 357 358* Recent Java client call ID changes were reverted because they were 359 causing RPC timeouts. Commit: `Revert Java client call ID changes 360 <https://pwrev.dev/260892>`__. 361 362.. _docs-changelog-2025-01-24-Modules-pw_sync: 363 364pw_sync 365------- 366Changes: 367 368.. 86cb968d79207a634c196bc1d289aa1cf25591c7 369 370* Time-related methods previously in :cpp:class:`pw::sync::Borrowable` 371 were moved to a new :cpp:class:`pw::sync::TimedBorrowable` class so that 372 projects can use ``Borrowable`` without depending on :ref:`module-pw_chrono`. 373 Commit: `Split TimedBorrowable from Borrowable 374 <https://pwrev.dev/260313>`__. 375 376.. _docs-changelog-2025-01-24-Modules-pw_system: 377 378pw_system 379--------- 380Changes: 381 382.. f1cb7ec19fca8dd7332d31d0ae81309e68601514 383 384* The ``//pw_system:config`` Bazel rule is now public to make it 385 possible to reuse the same configurations when creating custom RPC 386 servers or I/O backends outside of Pigweed. Commit: `Make config library 387 public in Bazel <https://pwrev.dev/261693>`__. 388 389.. _docs-changelog-2025-01-24-Modules-pw_tokenizer: 390 391pw_tokenizer 392------------ 393New features: 394 395.. a90ad7872bd7f178d049264214ae3404c212fc4d 396 397* The new :c:macro:`PW_NESTED_TOKEN_FMT` macro is a format specifier for 398 doubly nested token arguments. Commit: `Create generic macro for a 399 nested token format <https://pwrev.dev/253267>`__. 400 401Changes: 402 403.. 1b8d5de1f136c9c46d62869554d1cf9672b8a815 404 405* Token domains have been limited to certain characters. Commit: `Limit 406 token domains to certain characters <https://pwrev.dev/253952>`__. 407 408.. _docs-changelog-2025-01-24-Modules-pw_toolchain: 409 410pw_toolchain 411------------ 412New features: 413 414.. 1a98c3d9725b4178148a354b917f15d86fc374b5 415 416* ``pw_toolchain`` now supports Arm Cortex-A35. Commit: `Add toolchain 417 config for Cortex-A35 <https://pwrev.dev/261733>`__. 418 419.. 03e6941c72b91f2cb9550b1b1ba59fa9fe862ab2 420 421* Upstream Pigweed toolchains now support 422 :ref:`layering check <module-pw_toolchain-bazel-layering-check>`. 423 Commit: `Document layering check <https://pwrev.dev/261552>`__. Bug: 424 :bug:`219091175`. 425 426.. _docs-changelog-2025-01-24-Modules-pw_thread: 427 428pw_thread 429--------- 430New features: 431 432.. e9d4e4d30b4a49b2ca4dba88656dc660b0a0bcaf 433 434* The cross-platform thread creation API proposed in :ref:`seed-0128` 435 has been implemented. Commit: `Generic thread creation 436 <https://pwrev.dev/255065>`__. Bug: :bug:`373524851`. 437 438.. _docs-changelog-2025-01-09: 439 440----------- 441Jan 9, 2025 442----------- 443Highlights (Dec 27, 2024 to Jan 9, 2025): 444 445* **Bazel 8**: Pigweed now :ref:`depends on Bazel 8 446 <docs-changelog-2025-01-09-Build-systems-Bazel>`. 447 448* **FuzzTest and CMake**: FuzzTest is now :ref:`supported in 449 CMake projects <docs-changelog-2025-01-09-Modules-pw_fuzzer>`. 450 451* **BoringSSL**: ``pw_crypto`` now :ref:`supports 452 BoringSLL <docs-changelog-2025-01-09-Modules-pw_crypto>`. 453 454* **pw_rpc Java improvements**: The ``pw_rpc`` Java client now 455 has better :ref:`concurrent RPC request support 456 <docs-changelog-2025-01-09-Modules-pw_rpc>`. 457 458.. _docs-changelog-2025-01-09-Modules: 459 460Modules 461======= 462 463.. _docs-changelog-2025-01-09-Modules-pw_containers: 464 465pw_containers 466------------- 467New features: 468 469.. 68e18edf9f1b3913c73b1a4332bbce6521609916 470 471* Intrusive lists now support move operations. Commit: `Support moving 472 intrusive lists <https://pwrev.dev/255894>`__. 473 474.. _docs-changelog-2025-01-09-Modules-pw_chrono: 475 476pw_chrono 477--------- 478New features: 479 480.. e88f3c4397c5cafafda8635ac93d42483059a9f9 481 482* ``pw_chrono`` snapshots now support optional clock names. Commit: `Add 483 support for clock names <https://pwrev.dev/253753>`__. 484 485.. _docs-changelog-2025-01-09-Modules-pw_crypto: 486 487pw_crypto 488--------- 489New features: 490 491.. 462b37b0820e284069b8e42f6e61438177b60cb7 492 493* ``pw_crypto`` now supports :ref:`BoringSSL <module-pw_crypto-boringssl>`. 494 Commit: `Add BoringSSL backend for AES <https://pwrev.dev/231914>`__. 495 496Changes: 497 498.. 483a24a69950b8be7ae924e28a7504150378c8ee 499 500* ``micro_ecc`` support has been removed. Commit: `Remove micro_ecc 501 support <https://pwrev.dev/229672>`__. Bug: :bug:`359924206`. 502 503.. _docs-changelog-2025-01-09-Modules-pw_digital_io_mcuxpresso: 504 505pw_digital_io_mcuxpresso 506------------------------ 507New features: 508 509.. 8a5fc59a80af2fb2b11c2cd16ecc21a210fe1065 510 511* The new ``pw::digital_io::McuxpressoDigitalInOutInterrupt`` class 512 supports interrupts on the GPIO interrupt block which enables using 513 interrupts on more pins. Commit: `Add McuxpressoDigitalInOutInterrupt 514 support <https://pwrev.dev/247972>`__. 515 516Changes: 517 518.. 34521ea9d72066a02d4b562eb6d2dd628e424e58 519 520* ``pw::digital_io::McuxpressoDigitalInInterrupt`` has been deprecated. 521 ``pw::digital_io::McuxpressoPintInterrupt`` should be used instead. 522 Commit: `Introduce McuxpressoPintInterrupt 523 <https://pwrev.dev/258994>`__. Bug: :bug:`337927184`. 524 525.. _docs-changelog-2025-01-09-Modules-pw_fuzzer: 526 527pw_fuzzer 528--------- 529New features: 530 531.. 736d6a39f5cdde223bfcbaf6f8c8fec7d512379a 532 533* :ref:`FuzzTest <module-pw_fuzzer-guides-using_fuzztest>` can now be 534 used in CMake projects. Commit: `Make FuzzTest usable be external CMake 535 projects <https://pwrev.dev/239049>`__. Bug: :bug:`384978398`. 536 537.. _docs-changelog-2025-01-09-Modules-pw_log_basic: 538 539pw_log_basic 540------------ 541Changes: 542 543.. a542e417c4367b3b6c4fed88a172b9c2bdd2a837 544 545* The maximum length for the function name field has increased from 20 546 to 30 characters and is now left-aligned. Commit: `Adjust field widths 547 <https://pwrev.dev/258174>`__. 548 549.. _docs-changelog-2025-01-09-Modules-pw_protobuf: 550 551pw_protobuf 552----------- 553Changes: 554 555.. 8706efb9847543d226c5cb17494faffcd034cfa0 556 557* Regular callbacks now ignore fields with unset decode callbacks. 558 Previously they caused ``DATA_LOSS`` errors. Commit: `Allow unset 559 callback fields in message structs <https://pwrev.dev/258392>`__. 560 561.. _docs-changelog-2025-01-09-Modules-pw_rpc: 562 563pw_rpc 564------ 565New features: 566 567.. 15d4ae5ff36cd452023fdfc07835f5f1635f05ef 568 569* The Java client now supports making multiple concurrent RPC requests 570 to the same method. Commit: `Increment call_ids for java client 571 <https://pwrev.dev/258792>`__. 572 573.. _docs-changelog-2025-01-09-Modules-pw_span: 574 575pw_span 576------- 577New features: 578 579.. 031bf132386f7350cb86338928368f46c5b76d1c 580 581* The new docs section :ref:`module-pw_span-start-params` explains why 582 ``pw::span`` objects should be passed by value. Commit: `Recommend passing 583 pw::span objects by value <https://pwrev.dev/257072>`__. Bug: 584 :bug:`387107922`. 585 586.. _docs-changelog-2025-01-09-Modules-pw_stream: 587 588pw_stream 589--------- 590New features: 591 592.. e7380e5da83527b80087e86b63224e052074d10f 593 594* The new ``pw::stream::SocketStream::IsReady()`` method indicates 595 whether the streaming socket connection is ready. Commit: `Add ready 596 method to socket stream <https://pwrev.dev/253772>`__. 597 598.. _docs-changelog-2025-01-09-Modules-pw_thread: 599 600pw_thread 601--------- 602Changes: 603 604.. 717e4f58092e947eba23afb8be099d2ccf1247c3 605 606* It is now simpler to disable the ``join()`` function when it's not 607 supported. Commit: `Simplify disabling join() function when not 608 supported <https://pwrev.dev/257913>`__. 609 610.. _docs-changelog-2025-01-09-Modules-pw_toolchain: 611 612pw_toolchain 613------------ 614Changes: 615 616.. 8adc4c3e84423554c5ad6549fefe3d0e035985c6 617 618* The float ABI configuration for Arm Cortex-M33 was changed from 619 ``soft`` to ``softfp``. Commit: `Update m33 float-abi 620 <https://pwrev.dev/259412>`__. Bug: :bug:`388354690`. 621 622.. _docs-changelog-2025-01-09-Modules-pw_toolchain_bazel: 623 624pw_toolchain_bazel 625------------------ 626Changes: 627 628.. 413a81576837f344c55a8d64b5d1807769e513b0 629 630* Most of ``pw_toolchain_bazel`` has been removed because it has been 631 upstreamed to ``rules_cc``. Commit: `Remove contents 632 <https://pwrev.dev/252472>`__. Bug: :bug:`346388161`. 633 634.. _docs-changelog-2025-01-09-Modules-pw_uart: 635 636pw_uart 637------- 638Changes: 639 640.. 71c2d0d0e9eb7cc27111a20b3190af1593944676 641 642* It is no longer safe to call any ``pw_uart`` read or write methods 643 from a ``pw::uart::UartNonBlocking::DoRead()`` callback context. Commit: 644 `Restrict UartNonBlocking::DoRead() callback 645 <https://pwrev.dev/255732>`__. Bug: :bug:`384966926`. 646 647.. _docs-changelog-2025-01-09-Modules-pw_unit_test: 648 649pw_unit_test 650------------ 651Bug fixes: 652 653.. 203c6c8fd11fbdf01b51e564de03150f38dab430 654 655* The buffer for expectation logs was increased in size to prevent 656 expectation logs from getting cut off. Commit: `Expectation buffer 657 cleanup <https://pwrev.dev/259055>`__. Bug: :bug:`387513166`. 658 659.. _docs-changelog-2025-01-09-Build-systems: 660 661Build systems 662============= 663 664.. _docs-changelog-2025-01-09-Build-systems-Bazel: 665 666Bazel 667----- 668Changes: 669 670.. b13f7bf334b239174e87d91fbfac8b8c1d209403 671 672* Pigweed now depends on Bazel 8.0.0. Commit: `Update to Bazel 8.0.0 673 <https://pwrev.dev/242033>`__. Bug: :bug:`372510795`. 674 675.. _docs-changelog-2025-01-09-Docs: 676 677Docs 678==== 679New features: 680 681.. b977a3aeb1f4cf5a1b113396bbf9f9af6c1f1658 682 683* The :ref:`Sense tutorial <showcase-sense-tutorial-intro>` has been 684 updated to cover all variations on the Raspberry Pi Pico. Commit: 685 `Refresh Sense tutorial <https://pwrev.dev/254652>`__. 686 687.. 9337bf2516b4e0876d5308ec15939cb2dc9e6ab8 688 689* :ref:`Pigweed Toolchain <toolchain>` now has a homepage. Commit: `Add 690 toolchain homepage <https://pwrev.dev/247593>`__. Bug: :bug:`373454866`. 691 692.. _docs-changelog-2024-12-26: 693 694------------ 695Dec 26, 2024 696------------ 697Highlights (Dec 12, 2024 to Dec 26, 2024): 698 699* **TLSF allocator**: ``pw_allocator`` has a new :ref:`two-layer, segregated 700 fit allocator <docs-changelog-2024-12-26-Modules-pw_allocator>`. 701* **Checked arithmetic**: ``pw_numeric`` has :ref:`a suite of new arithmetic 702 operations <docs-changelog-2024-12-26-Modules-pw_numeric>` that check for 703 overflows. 704* **Constant expression unit tests**: ``pw_unit_test`` has a 705 :ref:`new constexpr unit test <docs-changelog-2024-12-26-Modules-pw_unit_test>` 706 that runs at both compile-time and runtime. 707* **Bazel module integration guidance**: :ref:`docs-bazel-integration` now provides 708 guidance on how to integrate Pigweed into projects that use Bazel modules. 709 710.. _docs-changelog-2024-12-26-Modules: 711 712Modules 713======= 714 715.. _docs-changelog-2024-12-26-Modules-pw_allocator: 716 717pw_allocator 718------------ 719New features: 720 721.. f674d68203b26bf0207ab79099696e2b3b3cd9b3 722 723* The new :cpp:class:`pw::allocator::TlsfAllocator` is a two-layer, 724 segregated fit allocator. Its 2D array of buckets incurs overhead but it 725 can satisfy requests quickly and has much better fragmentation performance 726 than ``WorstFitAllocator``. Commit: `Add TLSF allocator 727 <https://pwrev.dev/234818>`__. 728 729.. _docs-changelog-2024-12-26-Modules-pw_build: 730 731pw_build 732-------- 733New features: 734 735.. ee6f9976ba7e78737a1a74ae05f06da397b896c8 736 737* The new ``pw_rust_crates_extension`` Bazel extension lets a project 738 override the ``rust_crates`` repo when needed without requiring every 739 project to define one. Commit: `Add pw_rust_crates_extension 740 <https://pwrev.dev/254952>`__. Bug: :bug:`384536812`. 741 742.. _docs-changelog-2024-12-26-Modules-pw_containers: 743 744pw_containers 745------------- 746New features: 747 748.. 999adb191f8f512b524f0a65bd0662ac7854ef20 749 750* Queues and dequeues now have explicit ``constexpr`` constructors. 751 Commit: `Add explicit constexpr constructors for deques/queues 752 <https://pwrev.dev/250434>`__. 753 754.. _docs-changelog-2024-12-26-Modules-pw_multibuf: 755 756pw_multibuf 757----------- 758Changes: 759 760.. b439dd3e602e6c3568ff2ed68a12c2ecf90391a9 761 762* :cpp:class:`pw::multibuf::MultiBufAllocator` no longer supports async. 763 :cpp:class:`pw::multibuf::MultiBufAllocatorAsync` should be used 764 instead. Commit: `Move async to new MultiBufAllocatorAsync 765 <https://pwrev.dev/255015>`__. Bug: :bug:`384583239`. 766 767.. _docs-changelog-2024-12-26-Modules-pw_numeric: 768 769pw_numeric 770---------- 771New features: 772 773.. d6827c16644efa06f524a702903397e3cc07ba4c 774 775.. TODO: https://pwbug.dev/389134105 - Fix these links. 776 777* :cpp:type:`pw::CheckedAdd`, :cpp:type:`pw::CheckedIncrement`, 778 :cpp:type:`pw::CheckedSub`, :cpp:type:`pw::CheckedDecrement`, and 779 :cpp:type:`pw::CheckedMul` are new arithmetic methods that check for 780 overflows. Commit: `Add checked_arithmetic.h 781 <https://pwrev.dev/253172>`__. Bug: :bug:`382262919`. 782 783.. _docs-changelog-2024-12-26-Modules-pw_thread: 784 785pw_thread 786--------- 787New features: 788 789.. 4f536c6c1137a7282e7f800aa636c79c5c629191 790 791* The new :cpp:type:`pw::ThreadPriority` class is a generic priority 792 class that can be used by any ``pw_thread`` backend. Commit: `Thread 793 priority class <https://pwrev.dev/242214>`__. 794 795.. _docs-changelog-2024-12-26-Modules-pw_toolchain: 796 797pw_toolchain 798------------ 799New features: 800 801.. 13446e506fb94bcf4345bbf74b7987cff0fe0e3a 802 803* ``pw_toolchain`` now supports Arm Cortex-M3. Commit: `Add Cortex M3 804 support <https://pwrev.dev/254474>`__. 805 806.. _docs-changelog-2024-12-26-Modules-pw_unit_test: 807 808pw_unit_test 809------------ 810New features: 811 812.. c13d91eae61a50dfbe08023983337086509e7a8e 813 814* :c:macro:`PW_CONSTEXPR_TEST` is a new unit test that is executed both 815 at compile-time in a ``static_assert()`` and at runtime as a GoogleTest 816 ``TEST()``. Commit: `Test framework for constexpr unit tests 817 <https://pwrev.dev/242213>`__. 818 819.. _docs-changelog-2024-12-26-Docs: 820 821Docs 822==== 823New features: 824 825.. 42962f4a909048bb7f9464af018515bb5c9ee94c 826 827* :ref:`docs-bazel-integration` has been updated to describe how to 828 integrate Pigweed into projects that use Bazel modules (``bzlmod``). Commit: 829 `Bazel integration: bzlmod, Bazel versions 830 <https://pwrev.dev/254413>`__. 831 832.. _docs-changelog-2024-12-11: 833 834------------ 835Dec 11, 2024 836------------ 837Highlights (Nov 28, 2024 to Dec 11, 2024): 838 839* **New blog post**: :ref:`docs-blog-06-better-cpp-toolchains` 840 summarizes our journey to upstream modular toolchains in rules_cc. 841 842* **Customizable enum tokenization**: The new 843 :c:macro:`PW_TOKENIZE_ENUM_CUSTOM` macro lets you customize how enum values 844 are tokenized. 845 846* **AES API in pw_crypto**: :ref:`module-pw_crypto` now has an 847 Mbed-TLS backend for AES. 848 849.. _docs-changelog-2024-12-11-Modules: 850 851Modules 852======= 853 854.. _docs-changelog-2024-12-11-Modules-pw_allocator: 855 856pw_allocator 857------------ 858Bug fixes: 859 860.. b3d4f6ec721999b6bd4a856386a16c0b102d4f3c 861 862* A bug was fixed where the ``FirstFitAllocator`` incorrectly allocated 863 from the front. Commit: `Fix first-fit with threshold 864 <https://pwrev.dev/253233>`__. Bug: :bug:`382513957`. 865 866.. _docs-changelog-2024-12-11-Modules-pw_assert: 867 868pw_assert 869--------- 870Changes: 871 872.. bb9f65d47f203a2623543f5adf20ef15d747524e 873 874* Error messages in constant expressions have been improved. Commit: 875 `Improve error messages in constant expressions 876 <https://pwrev.dev/251914>`__. Bug: :bug:`277821237`. 877 878.. _docs-changelog-2024-12-11-Modules-pw_async2: 879 880pw_async2 881--------- 882New features: 883 884.. 4a1d9b2c3f76002ad7462e2a4373fa3eedfda692 885 886* :cpp:class:`pw::async2::OnceReceiver` can now be constructed with a 887 value. Commit: `Support value constructor for OnceReceiver 888 <https://pwrev.dev/251452>`__. 889 890.. _docs-changelog-2024-12-11-Modules-pw_bluetooth_proxy: 891 892pw_bluetooth_proxy 893------------------ 894New features: 895 896.. ffb532447804634ffa9a97f78886e8422025f9c2 897 898* The new 899 :cpp:func:`pw::bluetooth::proxy::ProxyHost::SendAdditionalRxCredits` 900 method lets you send additional RX credits when needed. Previously this 901 logic was coupled with the L2CAP connection-oriented channel 902 acquisition. Commit: `Separate rx_additional_credits method 903 <https://pwrev.dev/252352>`__. Bug: :bug:`380076024`. 904 905.. b336566abf4d6d1119f5373dc534e1f1e1070523 906 907* Transport type for ``pw::bluetooth::proxy::BasicL2capChannel`` can now 908 be specified during channel creation. Commit: `Un-hardcode transport 909 type for BasicL2capChannel <https://pwrev.dev/252556>`__. 910 911.. e85884825ea35e9b3b6f86ab0d12d1a1c5e3518d 912 913* A flow control mechanism for writes was added. When a channel's write 914 fails because there's no space, and then space becomes available, the 915 channel is now notified. Commit: `Add write flow control mechanism 916 <https://pwrev.dev/251435>`__. Bug: :bug:`380299794`. 917 918.. 99944ede9942532e5a12996575497ecb31a10442 919 920* Proxies now reset after receiving ``HCI_Reset`` commands. Commit: 921 `Reset proxy on HCI_Reset <https://pwrev.dev/251472>`__. Bug: 922 :bug:`381902130`. 923 924.. 2bfeaec98417551db59ec6dcc718f526a15d193f 925 926* The new :cpp:class:`pw::bluetooth::proxy::L2capStatusDelegate` class 927 lets you receive connection/disconnection notifications for a particular 928 L2CAP service. Commit: `Add L2cap service listener API 929 <https://pwrev.dev/249754>`__. Bug: :bug:`379558046`. 930 931.. _docs-changelog-2024-12-11-Modules-pw_build: 932 933pw_build 934-------- 935New features: 936 937.. b8d1cd064d4440e216f62802ab2378eb0c3eb269 938 939* New guidance on :ref:`module-pw_build-bazel-pw_cc_binary` was added. 940 Commit: `Document pw_cc_binary <https://pwrev.dev/252052>`__. 941 942Changes: 943 944.. 2ce8bc27e467224bf503fada12a29d8a4a2b81d7 945 946* When a ``pw_python_venv`` targets has no source packages and no 947 requirements, an empty Python venv is created and ``pip-compile`` is no 948 longer used. Commit: `Allow for empty Python build venvs 949 <https://pwrev.dev/253253>`__. Bug: :bug:`380293856`. 950 951.. _docs-changelog-2024-12-11-Modules-pw_cli: 952 953pw_cli 954------ 955New features: 956 957.. 13c7f3ca42864136624da1d8452b0110d61b850e 958 959* Specifying whether color should be enabled on an output is now more 960 granular. Commit: `Allow output-specific color checks 961 <https://pwrev.dev/252292>`__. 962 963Changes: 964 965.. 73b5fbf1ba77139796d29b7a064ec3c76127bae4 966 967* The Python function ``pw_presubmit.tools.exclude_paths()`` was moved 968 to the ``pw_cli.file_filter`` module. Commit: `Move exclude_paths 969 <https://pwrev.dev/252293>`__. 970 971.. _docs-changelog-2024-12-11-Modules-pw_containers: 972 973pw_containers 974------------- 975Bug fixes: 976 977.. a7c4dd8b045259a12194742793eaa03aa9e07443 978 979* A bug was fixed where :cpp:class:`pw::Vector` was move-assigning to 980 destroyed objects. Commit: `Do not move assign to destroyed objects in 981 Vector::erase <https://pwrev.dev/251992>`__. Bug: :bug:`381942905`. 982 983.. _docs-changelog-2024-12-11-Modules-pw_crypto: 984 985pw_crypto 986--------- 987New features: 988 989.. 9aceb7c03cab42e1d2ae7c4e2dd9de718fbe3c68 990 991* :ref:`module-pw_crypto` now has an Mbed-TLS backend for AES. Commit: 992 `Implement Mbed-TLS backend for AES <https://pwrev.dev/231912>`__. 993 994.. 23cc90c00be0e6f8c3eef0adfe1a0906fa77b346 995 996* The new :cpp:func:`pw::crypto::aes::backend::DoEncryptBlock` is an 997 initial facade for AES. Commit: `Add AES facade 998 <https://pwrev.dev/231911>`__. 999 1000.. _docs-changelog-2024-12-11-Modules-pw_grpc: 1001 1002pw_grpc 1003------- 1004New features: 1005 1006.. d30c2bbc46ccb4e874da27c3b33dc48e30cdc893 1007 1008* Data is now queued if a stream or connection has no available send 1009 window. Previously data was dropped in this case. The send queues are 1010 non-blocking. Commit: `Implement per stream send queues and make sending 1011 non-blocking <https://pwrev.dev/249952>`__. Bug: :bug:`382294674`. 1012 1013Bug fixes: 1014 1015.. 983b4f196331b7873c59f555a39ed519cb707943 1016 1017* A :cpp:class:`pw::multibuf::MultiBufAllocator` is now required when 1018 creating a :cpp:class:`pw::grpc::Connection` instance. Commit: `Remove 1019 old constructor and make multibuf allocator required 1020 <https://pwrev.dev/252555>`__. Bug: :bug:`382294674`. 1021 1022.. _docs-changelog-2024-12-11-Modules-pw_presubmit: 1023 1024pw_presubmit 1025------------ 1026New features: 1027 1028.. 9720483d67050eeda1910c707195aca45879ff90 1029 1030* A new guide for Pigweed contributors on :ref:`managing the Bazel 1031 lockfile <docs-bazel-lockfile>` was published. Commit: `Bazel lockfile 1032 check <https://pwrev.dev/253554>`__. Bug: :bug:`383387420`. 1033 1034.. _docs-changelog-2024-12-11-Modules-pw_rpc: 1035 1036pw_rpc 1037------ 1038Changes: 1039 1040.. eb762cabb91d3712fe2ca6a470172f2164247072 1041 1042* The newly public ``internal_packet_proto`` library makes it possible 1043 to generate ``packet.proto`` code for non-supported languages. E.g. this 1044 makes it possible to write a Dart/Flutter RPC client. Commit: `Make 1045 packet proto library public in Bazel <https://pwrev.dev/249692>`__. 1046 1047.. _docs-changelog-2024-12-11-Modules-pw_snapshot: 1048 1049pw_snapshot 1050----------- 1051New features: 1052 1053.. b950987d209c57b18389aaca91d9a3a9ef7066f5 1054 1055* The new ``thread_processing_callback`` parameter of 1056 :py:func:`pw_snapshot.processor.process_snapshot` lets you do custom 1057 thread processing during snapshot decoding. Commit: `Add per-thread 1058 processing callback for snapshot decoding <https://pwrev.dev/251392>`__. 1059 1060.. _docs-changelog-2024-12-11-Modules-pw_system: 1061 1062pw_system 1063--------- 1064New features: 1065 1066.. a4d795f13b833950d14ff9803d43e49ec1fb5e47 1067 1068* In the Bazel build ``rpc_server`` is now a 1069 :ref:`module-pw_build-bazel-pw_facade` which lets you swap out the default 1070 HDLC server with something else in your project. Commit: `Add facade for rpc 1071 server in Bazel <https://pwrev.dev/252172>`__. 1072 1073.. _docs-changelog-2024-12-11-Modules-pw_thread: 1074 1075pw_thread 1076--------- 1077Changes: 1078 1079.. 9e4c976345d4d2de321e17853e9fb86493ff2200 1080 1081* ``ThreadCore`` logic was moved out of ``pw::Thread``. Commit: `Move 1082 ThreadCore logic out of pw::Thread <https://pwrev.dev/253264>`__. 1083 1084.. _docs-changelog-2024-12-11-Modules-pw_tokenizer: 1085 1086pw_tokenizer 1087------------ 1088New features: 1089 1090.. 23370ed5ed0e01273080c231ee3475916dc74fba 1091 1092* The new :c:macro:`PW_TOKENIZE_ENUM_CUSTOM` macro lets you customize 1093 how enum values are tokenized. Commit: `Add macro for tokenizing enums 1094 with custom string <https://pwrev.dev/250492>`__. 1095 1096.. _docs-changelog-2024-12-11-Modules-pw_toolchain: 1097 1098pw_toolchain 1099------------ 1100New features: 1101 1102.. 807a3aa14a2035f3c1693e3c023740d086ce7c94 1103 1104* In the GN build it is now possible to completely move away from GNU 1105 libraries. Commit: `Support replacing GNU libs for ARM 1106 <https://pwrev.dev/250572>`__. Bug: :bug:`322360978`. 1107 1108.. _docs-changelog-2024-12-11-Docs: 1109 1110Docs 1111==== 1112New features: 1113 1114.. 4a28597bf8cc64f7cfc4cc019ba969bc10747c2b 1115 1116* A new :ref:`Bazel style guide <docs-pw-style-bazel>` was added. 1117 Commit: `Add Bazel style guide <https://pwrev.dev/240811>`__. Bug: 1118 :bug:`371564331`. 1119 1120.. 5a62fe471eab617742ded0ba84c693e4f2d29585 1121 1122* A new blog post on :ref:`C/C++ Bazel toolchains 1123 <docs-blog-06-better-cpp-toolchains>` was published. 1124 Commit: `Shaping a better future for Bazel C/C++ toolchains 1125 <https://pwrev.dev/253332>`__. 1126 1127.. _docs-changelog-2024-11-27: 1128 1129------------ 1130Nov 27, 2024 1131------------ 1132Highlights (Nov 15, 2024 to Nov 27, 2024): 1133 1134* **pw_allocator updates**: The :ref:`module-pw_allocator-api-bucket` class 1135 has been refactored to be more flexible and the :ref:`block API 1136 <module-pw_allocator-api-block>` has been refactored to support static 1137 polymorphism. 1138 1139.. _docs-changelog-2024-11-27-Modules: 1140 1141Modules 1142======= 1143 1144.. _docs-changelog-2024-11-27-Modules-pw_allocator: 1145 1146pw_allocator 1147------------ 1148Changes: 1149 1150.. 0942b69025f2987ca9512141fe3cf3a7046f042c 1151 1152* ``BestFitBlockAllocator`` was renamed to ``BestFitAllocator`` and 1153 ``WorstFitBlockAllocator`` was renamed to ``WorstFitAllocator``. These 1154 classes have been refactored to use :ref:`buckets 1155 <module-pw_allocator-api-bucket>`. Commit: `Refactor best- and worst-fit 1156 allocators to use buckets <https://pwrev.dev/234817>`__. 1157 1158.. 0766dbaf5305202c6f67e18184bb165df8426713 1159 1160* ``FirstFitBlockAllocator``, ``LastFitBlockAllocator``, and 1161 ``DualFirstFitBlockAllocator`` were merged into a single class: 1162 :ref:`module-pw_allocator-api-first_fit_allocator`. Commit: `Refactor 1163 first fit allocators <https://pwrev.dev/234816>`__. 1164 1165.. 3bfdac7a7826a4e2a1dc7a7174fd8d6276546c26 1166 1167* The :ref:`module-pw_allocator-api-bucket` class has been refactored to 1168 be more flexible. Commit: `Refactor Bucket 1169 <https://pwrev.dev/234815>`__. 1170 1171.. 65b5e336df018fbc9d124ca09d71a5dcccd1a8c0 1172 1173* Metric calculation for blocks that shift bytes has changed. Commit: 1174 `Fix metrics for blocks that shift bytes <https://pwrev.dev/249372>`__. 1175 Bug: :bug:`378743727`. 1176 1177.. 33d00a77472a6ff545032b213aa24dfe6a39d606 1178 1179* :cpp:class:`pw::allocator::BlockAllocator` now returns 1180 :cpp:class:`pw::allocator::BlockResult`. Commit: `Use BlockResult in 1181 BlockAllocator <https://pwrev.dev/234811>`__. 1182 1183.. 6417a523b06e03dce3453e96c3a1bec6ab511768 1184 1185* The :ref:`block API <module-pw_allocator-api-block>` has been 1186 refactored to support static polymorphism. Commit: `Add static 1187 polymorphism to Block <https://pwrev.dev/232214>`__. 1188 1189.. _docs-changelog-2024-11-27-Modules-pw_bytes: 1190 1191pw_bytes 1192-------- 1193New features: 1194 1195.. a287811e5e99eab8d4ddfcaf9f1a505fd1e3eb17 1196 1197* The new :cpp:func:`pw::IsAlignedAs` utility functions make it easier 1198 to check alignment. Commit: `Add utility for checking alignment 1199 <https://pwrev.dev/248192>`__. 1200 1201.. _docs-changelog-2024-11-27-Modules-pw_presubmit: 1202 1203pw_presubmit 1204------------ 1205New features: 1206 1207.. e278ead3bfe1361c3ff08e5329636a35abbcef6c 1208 1209* The new ``includes_presubmit_check`` verifies that ``cc_library`` 1210 Bazel targets don't use the ``includes`` attribute. Commit: `Add check 1211 for cc_library includes <https://pwrev.dev/251172>`__. Bug: 1212 :bug:`380934893`. 1213 1214.. _docs-changelog-2024-11-27-Modules-pw_protobuf: 1215 1216pw_protobuf 1217----------- 1218New features: 1219 1220.. f776679bbea5f4ae376ab924d80760bb2f1e69a0 1221 1222* :ref:`pw_protobuf-message-limitations` now has more guidance around 1223 protobuf versioning and ``optional`` fields. Commit: `Expand message 1224 structure limitations docs section <https://pwrev.dev/249072>`__. 1225 1226.. _docs-changelog-2024-11-27-Modules-pw_transfer: 1227 1228pw_transfer 1229----------- 1230Changes: 1231 1232.. 1c771e0fd88511ef3550108572572db1f036d0a5 1233 1234* Warnings logs are now emitted when client or server streams close 1235 unexpectedly. Commit: `Log when streams close unexpectedly 1236 <https://pwrev.dev/249912>`__. 1237 1238.. 48712ad0655654b4dcc9b62085a58445fe0af696 1239 1240* The window size on retried data now shrinks in an attempt to reduce 1241 network congestion. Commit: `Shrink window size on retried data 1242 <https://pwrev.dev/249532>`__. 1243 1244.. _docs-changelog-2024-11-27-Modules-pw_unit_test: 1245 1246pw_unit_test 1247------------ 1248Changes: 1249 1250.. c4d59ce4d011e11781bcb6dc6660ad947a7ee8df 1251 1252* Successful expectations are no longer stringified by default. Commit: 1253 `Stop stringifying successful expectations 1254 <https://pwrev.dev/248693>`__. 1255 1256.. _docs-changelog-2024-11-27-Modules-pw_rpc: 1257 1258pw_rpc 1259------ 1260Changes: 1261 1262.. 92e854a4d179f0b340a0f8b5a662012ea4b8635c 1263 1264* A warning log is now emitted when a server receives a completion 1265 request but client completion callbacks have been disabled. Commit: 1266 `Warn when client completion callback is disabled 1267 <https://pwrev.dev/249414>`__. 1268 1269.. _docs-changelog-2024-11-14: 1270 1271------------ 1272Nov 14, 2024 1273------------ 1274.. changelog_highlights_start 1275 1276Highlights (Nov 1, 2024 to Nov 14, 2024): 1277 1278* **ELF API**: The new :cpp:class:`pw::elf::ElfReader` class is a 1279 basic reader for ELF files. 1280* **Updated Bluetooth APIs**: There's a new low energy 1281 connection-oriented channels API and the :ref:`module-pw_bluetooth` 1282 API has been modernized. 1283* **Updated SEED process**: "Intent Approved" and "On Hold" statuses 1284 were added to the SEED lifecycle. 1285 1286.. changelog_highlights_end 1287 1288.. _docs-changelog-2024-11-14-Modules: 1289 1290Modules 1291======= 1292 1293.. _docs-changelog-2024-11-14-Modules-pw_allocator: 1294 1295pw_allocator 1296------------ 1297Changes: 1298 1299.. 1dcac6a863b8adfc930de769ec56fd44f1e4448f 1300 1301* ``pw::allocator::AsPmrAllocator`` was renamed to 1302 :cpp:class:`pw::allocator::PmrAllocator`. Commit: `Separate PMR from 1303 Allocator <https://pwrev.dev/246412>`__. 1304 1305.. _docs-changelog-2024-11-14-Modules-pw_async2: 1306 1307pw_async2 1308--------- 1309New features: 1310 1311.. 21933c60384c25d73dba60c90e74cc44d2a446de 1312 1313* The ``new`` operator for coroutines now accepts an optional alignment 1314 argument. Commit: `Accept alignment in CoroPromiseType::operator new 1315 <https://pwrev.dev/248638>`__. Bug: :bug:`378929156`. 1316 1317.. d20009a8e35dfdb881f77b6d171c697b61dba5c3 1318 1319* The new :c:macro:`PW_TRY_READY` and :c:macro:`PW_TRY_READY_ASSIGN` 1320 helper macros reduce boilerplate in non-coroutine async code. Commit: 1321 `Add PW_TRY_READY_* control flow macros <https://pwrev.dev/243818>`__. 1322 1323.. _docs-changelog-2024-11-14-Modules-pw_bluetooth: 1324 1325pw_bluetooth 1326------------ 1327New features: 1328 1329.. c9ad96cf7be8a05a7d1bf6ec933114c7cc39f012 1330 1331* The new :cpp:class:`pw::bluetooth::low_energy::Channel`, 1332 :cpp:class:`pw::bluetooth::low_energy::ChannelListener`, and 1333 :cpp:class:`pw::bluetooth::low_energy::ChannelListenerRegistry` classes 1334 provide a low energy connection-oriented channels API. Commit: `Add LE 1335 Connection-Oriented Channels API <https://pwrev.dev/227371>`__. Bug: 1336 :bug:`357142749`. 1337 1338Changes: 1339 1340.. a615b8bf5234f48b8a33e6c837aa7521fa80d92a 1341 1342* The :ref:`module-pw_bluetooth` API has been modernized. Commit: 1343 `Modernize APIs <https://pwrev.dev/219393>`__. Bug: :bug:`350994818`. 1344 1345.. _docs-changelog-2024-11-14-Modules-pw_bluetooth_proxy: 1346 1347pw_bluetooth_proxy 1348------------------ 1349New features: 1350 1351.. b8ee89e76ff4e8c467ea35291b2a141175c737e9 1352 1353* :cpp:class:`pw::bluetooth::proxy::L2capCoc` now supports reading. 1354 Commit: `L2CAP CoC supports reading <https://pwrev.dev/232172>`__. Bug: 1355 :bug:`360934032`. 1356 1357.. _docs-changelog-2024-11-14-Modules-pw_channel: 1358 1359pw_channel 1360---------- 1361New features: 1362 1363.. 0a4e6db6ad35d0bf062c22b471fef2a66948a90f 1364 1365* The new :cpp:func:`pw::Channel::PendAllocateWriteBuffer` method 1366 simplifies the allocation of write buffers that need small 1367 modifications. Commit: `Move to PendAllocateWriteBuffer 1368 <https://pwrev.dev/246239>`__. 1369 1370Changes: 1371 1372.. bd17ed6971f608e2d66da8b2954bc13ad3e2c664 1373 1374* The ``pw::channel::WriteToken`` method was removed. Commit: `Remove 1375 WriteToken <https://pwrev.dev/245932>`__. 1376 1377.. 0422de1761e52ad5d1fad821880025fc27facf1c 1378 1379* ``pw_channel`` inheritance has been refactored 1380 to ensure that conversions between compatible variants are valid. 1381 Commit: `Rework inheritance to avoid SiblingCast 1382 <https://pwrev.dev/247732>`__. 1383 1384.. _docs-changelog-2024-11-14-Modules-pw_elf: 1385 1386pw_elf 1387------ 1388New features: 1389 1390.. 8ee78791500354f85df94b228f63b3a42a882040 1391 1392* The new :cpp:class:`pw::elf::ElfReader` class is a basic reader for 1393 ELF files. Commit: `Add ElfReader <https://pwrev.dev/244893>`__. 1394 1395.. _docs-changelog-2024-11-14-Modules-pw_i2c: 1396 1397pw_i2c 1398------ 1399Bug fixes: 1400 1401.. 6165aa470b35106b79b2e57ecec9951cff30acdc 1402 1403* I2C flags are now correctly set for transactions that occur on an I3C 1404 bus. Commit: `Set the i2c flags correctly for transactions on an i3c bus 1405 <https://pwrev.dev/245754>`__. Bug: :bug:`373451623`. 1406 1407.. _docs-changelog-2024-11-14-Modules-pw_metric: 1408 1409pw_metric 1410--------- 1411New features: 1412 1413.. a751fa9bd38a30f08a14c336e7bc77878a5d60c5 1414 1415* ``pwpb`` now prioritizes the ``.pwpb_options`` for protobuf codegen. 1416 Commit: `Add metrics_service.pwpb_options to BUILD.gn 1417 <https://pwrev.dev/246112>`__. 1418 1419.. aacf94efb59dac4a661e88e2ba95acda20c5ccb1 1420 1421* The new :cpp:func:`PW_METRIC_TOKEN` makes it easier for tests to 1422 create tokens for metrics. Commit: `Expose metric token format via 1423 PW_METRIC_TOKEN <https://pwrev.dev/244332>`__. 1424 1425.. _docs-changelog-2024-11-14-Modules-pw_protobuf: 1426 1427pw_protobuf 1428----------- 1429New features: 1430 1431.. acbeaab3d280f748d235a31025d7a35dd38fa516 1432 1433* The ``Find*()`` methods have been extended to support iterating over 1434 repeated fields. See :ref:`module-pw_protobuf-read`. Commit: 1435 `Extend Find() APIs to support repeated fields <https://pwrev.dev/248432>`__. 1436 1437Changes: 1438 1439.. 6a16fab34795f2976e04457d099a05c671b79b54 1440 1441* It's no longer necessary to set a callback for every possible field in 1442 a message when you're only interested in a few fields. Commit: `Allow 1443 unset oneof callbacks <https://pwrev.dev/246692>`__. 1444 1445.. _docs-changelog-2024-11-14-Modules-pw_protobuf_compiler: 1446 1447pw_protobuf_compiler 1448-------------------- 1449Changes: 1450 1451.. cd0b4fb52d8fb2012fbd8483f66a48d593e83bb9 1452 1453* ``pwpb_options`` files are now explicitly processed first, followed by 1454 regular ``.options`` files. Commit: `Don't rely on options file ordering 1455 <https://pwrev.dev/247472>`__. 1456 1457.. _docs-changelog-2024-11-14-Modules-pw_rpc: 1458 1459pw_rpc 1460------ 1461Changes: 1462 1463.. f0ba9b05187506d7526ca3585401c8df7b4e9d4d 1464 1465* The Python client previously reused call IDs after ``16384``. The limit 1466 has been increased to ``2097152``. Commit: `Allocate more call IDs in 1467 the Python client <https://pwrev.dev/245067>`__. Bug: :bug:`375658481`. 1468 1469.. _docs-changelog-2024-11-14-Modules-pw_rpc_transport: 1470 1471pw_rpc_transport 1472---------------- 1473New features: 1474 1475.. 18d5fbfb289c8675dd683d62ab69b83147e9d70e 1476 1477* The new ``pw::rpc::RpcIngress::num_total_packets`` method tracks how 1478 many packets an ingress RPC handler has received. Commit: `Track number 1479 of RPC packets received <https://pwrev.dev/247194>`__. Bug: 1480 :bug:`373449543`. 1481 1482.. _docs-changelog-2024-11-14-Modules-pw_sensor: 1483 1484pw_sensor 1485--------- 1486New features: 1487 1488.. b7246bf88df6aa030dec7b9510e7015b5035616c 1489 1490* The new ``extras`` key lets applications specify additional metadata 1491 that's not supported or used by Pigweed. Commit: `Add freeform extras 1492 field to sensor.yaml <https://pwrev.dev/248195>`__. 1493 1494.. _docs-changelog-2024-11-14-Modules-pw_spi: 1495 1496pw_spi 1497------ 1498Changes: 1499 1500.. 6aadd54afb308c09edb833985b387442df732fef 1501 1502* :cpp:class:`pw::spi::Initiator` is now a `non-virtual interface 1503 <https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-Virtual_Interface>`__. 1504 Commit: `Finalize non-Virtual interface on 1505 Initiator <https://pwrev.dev/236236>`__. Bug: :bug:`308479791`. 1506 1507.. _docs-changelog-2024-11-14-Modules-pw_spi_linux: 1508 1509pw_spi_linux 1510------------ 1511Bug fixes: 1512 1513.. d17b5acd42c6e983ce4b12a7ebc3184205a06d45 1514 1515* The ``pw::Spi::Initiator::DoWriteRead()`` method now correctly handles 1516 transfers where either the write buffer or the read buffer is empty. 1517 Commit: `Fix read/write-only transfers <https://pwrev.dev/246053>`__. 1518 1519.. _docs-changelog-2024-11-14-Modules-pw_stream: 1520 1521pw_stream 1522--------- 1523New features: 1524 1525.. b2c1616caaff13d41e434cbcb8ae0530a20962ca 1526 1527* The new :cpp:func:`pw::stream::Stream::ReadExact` method reads exactly 1528 the number of bytes requested into a provided buffer, if supported. 1529 Commit: `Add ReadExact() wrapper <https://pwrev.dev/243552>`__. 1530 1531.. _docs-changelog-2024-11-14-Modules-pw_tokenizer: 1532 1533pw_tokenizer 1534------------ 1535New features: 1536 1537.. 94e2314ddea1499a7868bd3d30621b709e25f7d4 1538 1539* The new :cpp:func:`pw::tokenizer::Detokenizer::FromElfFile` method 1540 constructs a detokenizer from the ``.pw_tokenizer.entries`` section of 1541 an ELF binary. Commit: `Add Detokenizer::FromElfFile 1542 <https://pwrev.dev/243532>`__. Bug: :bug:`374367947`. 1543 1544Bug fixes: 1545 1546.. 7fb7bb1dc5d69c79de1b0b72316a34a800f2d5b0 1547 1548* The Python detokenizer now correctly handles multiple nested tokens in 1549 one log string. Commit: `Update regex for nested args 1550 <https://pwrev.dev/248232>`__. 1551 1552.. _docs-changelog-2024-11-14-SEEDs: 1553 1554SEEDs 1555===== 1556New features: 1557 1558.. a1acd00d02ebe42116a4982ad809264f3c673021 1559 1560* "Intent Approved" and "On Hold" statuses were added to the SEED 1561 lifecycle. Commit: `(SEED-0001) Add "Intent Approved" and "On Hold" 1562 states to lifecycle <https://pwrev.dev/248692>`__. 1563 1564.. _docs-changelog-2024-10-31: 1565 1566------------ 1567Oct 31, 2024 1568------------ 1569Highlights (Oct 18, 2024 to Oct 31, 2024): 1570 1571* The new :c:macro:`PW_TEST_EXPECT_OK`, :c:macro:`PW_TEST_ASSERT_OK`, 1572 and :c:macro:`PW_TEST_ASSERT_OK_AND_ASSIGN` macros provide test matchers 1573 for :ref:`module-pw_status` and :ref:`module-pw_result` values. 1574* The Sense tutorial has expanded guidance around :ref:`handling crashes 1575 and viewing snapshots <showcase-sense-tutorial-crash-handler>`. 1576* The new :cpp:class:`pw::LinkerSymbol` class represents a symbol 1577 provided by a linker. 1578* The new ``extra_frame_handlers`` parameter lets you add custom HDLC frame 1579 handlers when using the Python-based :ref:`module-pw_system` console. 1580 1581.. _docs-changelog-2024-10-31-Modules: 1582 1583Modules 1584======= 1585 1586.. _docs-changelog-2024-10-31-Modules-pw_allocator: 1587 1588pw_allocator 1589------------ 1590New features: 1591 1592.. 6fd4792308999b9c5949e9b778994d064a80a8b7 1593 1594* The new :c:macro:`PW_ALLOCATOR_ENABLE_PMR` macro lets you disable the 1595 ability to use an allocator with the polymorphic versions of standard 1596 library containers. Commit: `Make pw::Allocator::as_pmr optional 1597 <https://pwrev.dev/245254>`__. 1598 1599Changes: 1600 1601.. c3c61885927ee9e8fac187a52b1ab139919fe5e7 1602 1603* Multiple methods were renamed or removed in preparation for upcoming 1604 work to split up :cpp:class:`pw::allocator::Block`. Commit: `Streamline 1605 Block API <https://pwrev.dev/232213>`__. 1606 1607.. _docs-changelog-2024-10-31-Modules-pw_assert: 1608 1609pw_assert 1610--------- 1611Changes: 1612 1613.. 673e56ac476a345a0f25319633d8ce0ad0c0cd93 1614 1615* ``pw_assert`` now verifies whether ``PW_CHECK`` message arguments are 1616 valid, regardless of what ``pw_assert`` backend is being used. Commit: 1617 `Verify PW_CHECK message arguments in the API 1618 <https://pwrev.dev/244744>`__. 1619 1620.. _docs-changelog-2024-10-31-Modules-pw_assert_tokenized: 1621 1622pw_assert_tokenized 1623------------------- 1624New features: 1625 1626.. ef5f6bf505343c0926532f53dc788b26c3640048 1627 1628* :c:macro:`pw_assert_HandleFailure` is now supported. Commit: `Support 1629 pw_assert_HandleFailure <https://pwrev.dev/244793>`__. 1630 1631.. _docs-changelog-2024-10-31-Modules-pw_async2: 1632 1633pw_async2 1634--------- 1635New features: 1636 1637.. cec451dc5c2cb132717068d686e4e034b06762c9 1638 1639* :cpp:class:`pw::async2::Join` lets you join several separate pendable 1640 values. Commit: `Add Join combinator <https://pwrev.dev/244612>`__. 1641 1642.. 0945ffb46234253d08467adebd8869ebb39234fa 1643 1644* The new :cpp:func:`pw::async2::TimeFuture::Reset` method resets a 1645 ``TimeFuture`` instance to expire at a specified time. Commit: `Add 1646 TimerFuture::Reset <https://pwrev.dev/243993>`__. 1647 1648Changes: 1649 1650.. 9528eac2b6c6243dc5fb6a4d72f33d8d7e0d573c 1651 1652* Waker storage has moved to a macro-based API. See 1653 :c:macro:`PW_ASYNC_STORE_WAKER` and :c:macro:`PW_ASYNC_CLONE_WAKER`. 1654 Commit: `Move to macro-based Waker API <https://pwrev.dev/245068>`__. 1655 Bug: :bug:`376123061`. 1656 1657.. _docs-changelog-2024-10-31-Modules-pw_bluetooth_proxy: 1658 1659pw_bluetooth_proxy 1660------------------ 1661New features: 1662 1663.. a8c756860ae104ef5e87439ef4f8cc4fbbb2fab7 1664 1665* Bazel builds are now supported. Commit: `Add bazel build support 1666 <https://pwrev.dev/243874>`__. 1667 1668.. _docs-changelog-2024-10-31-Modules-pw_build: 1669 1670pw_build 1671-------- 1672New features: 1673 1674.. 170f745d98d101d73564fa61420f1a0836053033 1675 1676* The new :cpp:class:`pw::LinkerSymbol` class represents a symbol 1677 provided by a linker. Commit: `Add LinkerSymbol 1678 <https://pwrev.dev/242635>`__. 1679 1680.. _docs-changelog-2024-10-31-Modules-pw_channel: 1681 1682pw_channel 1683---------- 1684Changes: 1685 1686.. 5f2649a6e5afdecd7b5d59aab06f59bb4d73d9f3 1687 1688* ``pw::channel::AnyChannel::Write`` was renamed to 1689 :cpp:func:`pw::channel::AnyChannel::StageWrite` and 1690 ``pw::channel::AnyChannel::PendFlush`` was renamed to 1691 :cpp:func:`pw::channel::AnyChannel::PendWrite`. Commit: `Rename 1692 {Write->StageWrite, PendFlush->PendWrite} <https://pwrev.dev/245539>`__. 1693 1694.. _docs-changelog-2024-10-31-Modules-pw_containers: 1695 1696pw_containers 1697------------- 1698New features: 1699 1700.. afb18a6ded0c43e91ce85e5ec97ae0206c4873ca 1701 1702* :cpp:class:`pw::IntrusiveSet` is a new class like ``std::set<Key, 1703 Compare>`` that uses intrusive items as keys and 1704 :cpp:class:`pw::IntrusiveMultiSet` is a new class like 1705 ``std::multiset<Key, Compare>`` that uses intrusive items. Commit: `Add 1706 IntrusiveSet and IntrusiveMultiSet <https://pwrev.dev/240053>`__. 1707 1708Changes: 1709 1710.. bde3f80e6e038cebe264283af625faf06a64d8d0 1711 1712* The ``erase`` methods of 1713 :cpp:class:`pw::containers::future::IntrusiveList`, 1714 :cpp:class:`pw::IntrusiveMap`, and :cpp:class:`pw::IntrusiveMultiMap` 1715 have been overloaded to make them easier to use. Commit: `Add methods to 1716 erase by item <https://pwrev.dev/243257>`__. 1717 1718.. _docs-changelog-2024-10-31-Modules-pw_log: 1719 1720pw_log 1721------ 1722Changes: 1723 1724.. 661bf47f06e604384a4c7eb7bf79d2f3da71ee74 1725 1726* The signature for :c:macro:`PW_LOG` macro changed. A ``verbosity`` 1727 level must now always be passed as the second argument when invoking 1728 ``PW_LOG``. Commit: `Explicitly pass verbosity to PW_LOG 1729 <https://pwrev.dev/239035>`__. 1730 1731.. _docs-changelog-2024-10-31-Modules-pw_multibuf: 1732 1733pw_multibuf 1734----------- 1735New features: 1736 1737.. 9ab6e749821eddb8a82f7724c1af10ef6accc016 1738 1739* The new :cpp:func:`pw::multibuf::FromSpan` function creates a multibuf from 1740 an existing span and a ``deleter`` callback. Commit: `Add FromSpan 1741 <https://pwrev.dev/245132>`__. Bug: :bug:`373725545`. 1742 1743.. _docs-changelog-2024-10-31-Modules-pw_multisink: 1744 1745pw_multisink 1746------------ 1747New features: 1748 1749.. 773331a904413e92d86c6e4cb658af77cf889d76 1750 1751* The new :cpp:func:`pw::multisink::UnsafeDumpMultiSinkLogsFromEnd` 1752 utilitiy function dumps contents as a series of log entries. Commit: 1753 `Add UnsafeForEachEntryFromEnd() <https://pwrev.dev/244556>`__. Bug: 1754 :bug:`375653884`. 1755 1756.. _docs-changelog-2024-10-31-Modules-pw_polyfill: 1757 1758pw_polyfill 1759----------- 1760Changes: 1761 1762.. d3e10fad55171d8cdce399916acbf37b2dec732b 1763 1764* :c:macro:`PW_CONSTINIT` now fails when used without compiler support. 1765 Commit: `Make PW_CONSTINIT support mandatory 1766 <https://pwrev.dev/243892>`__. 1767 1768.. _docs-changelog-2024-10-31-Modules-pw_protobuf: 1769 1770pw_protobuf 1771----------- 1772Bug fixes: 1773 1774.. 368cf8be3cb1909453c9c2cc67ec951517943086 1775 1776* ``pw_protobuf`` now fails when the ``max_count`` or ``fixed_count`` 1777 options of ``pwpb`` are used on unsupported field types. Commit: `Fail 1778 when a max count is set with an unsupported type 1779 <https://pwrev.dev/236816>`__. 1780 1781Changes: 1782 1783.. 9525d75843cede1c67f78de7c2f86bb30ac98efe 1784 1785* Code generator options can now be specified in files ending with 1786 ``.pwpb_options``. This is useful for projects that wish to strictly 1787 separate Nanopb and ``pw_protobuf`` options. Commit: `Allow 1788 .pwpb_options as an options file extension 1789 <https://pwrev.dev/241137>`__. 1790 1791.. _docs-changelog-2024-10-31-Modules-pw_ring_buffer: 1792 1793pw_ring_buffer 1794-------------- 1795New features: 1796 1797.. b90180561658453318c36b125fd8af37de713a3f 1798 1799* ``pw_ring_buffer`` readers now support the ``--`` decrement operator. 1800 Commit: `Add a decrement operator <https://pwrev.dev/244555>`__. Bug: 1801 :bug:`375653884`. 1802 1803.. _docs-changelog-2024-10-31-Modules-pw_system: 1804 1805pw_system 1806--------- 1807New features: 1808 1809.. 1f2341cd64eaacb9de474510293397b50165b3b5 1810 1811* The new ``extra_frame_handlers`` parameter lets you add custom HDLC 1812 frame handlers when using the Python-based ``pw_system`` console. 1813 Commit: `Make console support extra hdlc frame handlers 1814 <https://pwrev.dev/245192>`__. 1815 1816Bug fixes: 1817 1818.. 9b2dd9ccb35a49f57c053e88a55da35ad24fc93d 1819 1820* A bug was fixed where the latest logs were not being captured in crash 1821 snapshots. Commit: `Ensure latest logs are captured in crash snapshot 1822 <https://pwrev.dev/244557>`__. Bug: :bug:`375653884`. 1823 1824.. 0aa57cea2e06c48a24266b21d472155c2379189f 1825 1826* The ``pw_system`` crash dump now includes a main stack thread 1827 backtrace. Commit: `Add main stack thread backtrace capture to crash 1828 dump <https://pwrev.dev/242337>`__. Bug: :bug:`354767156`. 1829 1830.. ed55dbc3fa5eb05e2b557fad0eff2b1bf1f93751 1831 1832* The ``pw_system`` crash dump now includes FreeRTOS thread backtraces. 1833 Commit: `Add freertos thread backtrace capture to crash dump 1834 <https://pwrev.dev/234155>`__. Bug: :bug:`354767156`. 1835 1836.. _docs-changelog-2024-10-31-Modules-pw_thread: 1837 1838pw_thread 1839--------- 1840Changes: 1841 1842.. e5db91d7df18444134ce4fede3a1a0c3a9f5c1fc 1843 1844* The legacy ``thread::Id`` alias has been migrated to 1845 ``pw::Thread::id``. Commit: `Migrate to Thread::id 1846 <https://pwrev.dev/238432>`__. Bug: :bug:`373524945`. 1847 1848.. _docs-changelog-2024-10-31-Modules-pw_tokenizer: 1849 1850pw_tokenizer 1851------------ 1852New features: 1853 1854.. 4b7733f3f0c9e010ccd6bee3ff45d64b92e65fa7 1855 1856* :c:macro:`PW_APPLY` is a new general macro that supports macro 1857 expansion and makes tokenizing enums easier. Commit: `Create generic 1858 macro for tokenizing enums <https://pwrev.dev/242715>`__. Bug: 1859 :bug:`3627557773`. 1860 1861.. _docs-changelog-2024-10-31-Modules-pw_toolchain: 1862 1863pw_toolchain 1864------------ 1865New features: 1866 1867.. b40ecc98b47a37b187f40408ae0c3d89ef9b5f79 1868 1869* ``pw_toolchain`` now supports the Arm Cortex-M55F GCC toolchain. 1870 Commit: `Add ARM Cortex-M55F GCC toolchain 1871 <https://pwrev.dev/244672>`__. Bug: :bug:`375562597`. 1872 1873.. _docs-changelog-2024-10-31-Modules-pw_unit_test: 1874 1875pw_unit_test 1876------------ 1877New features: 1878 1879.. ce0e3e2d1b7eec7cdf59fbb2ceed2b1cb3edd1ec 1880 1881* The new :c:macro:`PW_TEST_EXPECT_OK`, :c:macro:`PW_TEST_ASSERT_OK`, 1882 and :c:macro:`PW_TEST_ASSERT_OK_AND_ASSIGN` macros provide test matchers 1883 for :ref:`module-pw_status` and :ref:`module-pw_result` values. Commit: 1884 `Define pw::Status matchers <https://pwrev.dev/243615>`__. Bugs: 1885 :bug:`338094795`, :bug:`315370328`. 1886 1887Changes: 1888 1889.. 618eaa4f4c1ee0357bdfba85290a9a6e8c9aee71 1890 1891* :cpp:func:`RUN_ALL_TESTS` is now a function. Previously it was a 1892 macro. Commit: `Use a function for RUN_ALL_TESTS() 1893 <https://pwrev.dev/243889>`__. 1894 1895.. _docs-changelog-2024-10-31-Modules-pw_watch: 1896 1897pw_watch 1898-------- 1899New features: 1900 1901.. 5e7d1a0fddab1204d94ff43cee833431eda75af8 1902 1903* ``pw_watch`` can now be invoked through ``bazelisk``. Commit: `Bazel 1904 run support <https://pwrev.dev/242094>`__. Bug: :bug:`360140397`. 1905 1906.. _docs-changelog-2024-10-31-Docs: 1907 1908Docs 1909==== 1910New features: 1911 1912.. c5e6cab3b190f4cdc32e3209582a7697f2992a85 1913 1914* The Sense tutorial has expanded guidance around :ref:`handling crashes 1915 and viewing snapshots <showcase-sense-tutorial-crash-handler>`. Commit: 1916 `Add crash handler section to sense tutorial 1917 <https://pwrev.dev/242735>`__. Bug: :bug:`354767156`. 1918 1919.. _docs-changelog-2024-10-31-Targets: 1920 1921Targets 1922======= 1923 1924.. _docs-changelog-2024-10-31-Targets-RP2350: 1925 1926RP2350 1927------ 1928New features: 1929 1930.. 892394fe74db6decd3799873f910862cef6a182d 1931 1932* ``MemManage``, ``BusFault``, and ``UsageFault`` exception handlers are 1933 now enabled on the RP2350 target. Commit: `Add MemManage, BusFault & 1934 UsageFault exception handler <https://pwrev.dev/242336>`__. Bug: 1935 :bug:`354767156`. 1936 1937.. _docs-changelog-2024-10-17: 1938 1939------------ 1940Oct 17, 2024 1941------------ 1942Highlights (Oct 04, 2024 to Oct 17, 2024): 1943 1944* **Math module**: The new :ref:`module-pw_numeric` module is a collection of 1945 mathematical utilities optimized for embedded systems. 1946* **C++ Coroutines**: The new :ref:`docs-blog-05-coroutines` blog post 1947 discusses the nuances of using coroutines in embedded systems. 1948* **New SEEDs**: SEEDs :ref:`seed-0103` and :ref:`seed-0128` were accepted. 1949 1950.. _docs-changelog-2024-10-17-Modules: 1951 1952Modules 1953======= 1954 1955.. _docs-changelog-2024-10-17-Modules-pw_allocator: 1956 1957pw_allocator 1958------------ 1959New features: 1960 1961.. 9aae89c7bab1de5a914c462f814fec6528e27a0f 1962 1963* The new :cpp:func:`pw::Allocator::MakeUniqueArray` template function 1964 allows a ``UniquePtr`` to hold an array of elements. Commit: `Add 1965 UniquePtr::MakeUniqueArray <https://pwrev.dev/239913>`__. 1966 1967.. d3a6358972d5897266e2b5ecf50681a8e8456e5b 1968 1969* The new :cpp:class:`pw::allocator::BlockResult` class communicates the 1970 results and side effects of allocation requests. Commit: `Add 1971 BlockResult <https://pwrev.dev/232212>`__. 1972 1973Bug fixes: 1974 1975.. 57183dee645126c67dcccbb479c730492ef168f6 1976 1977* A data race was fixed. Commit: `Fix data race 1978 <https://pwrev.dev/242736>`__. Bug: :bug:`372446436`. 1979 1980.. _docs-changelog-2024-10-17-Modules-pw_async2: 1981 1982pw_async2 1983--------- 1984New features: 1985 1986.. 068949bbe9f8a5a03d9b44ae740461c4c01691ca 1987 1988* The new :cpp:func:`pw::async2::EnqueueHeapFunc` function heap-allocates 1989 space for a function and enqueues it to run on a dispatcher. 1990 Commit: `Add EnqueueHeapFunc <https://pwrev.dev/242035>`__. 1991 1992Changes: 1993 1994.. eb03d32b80c25d59000d86fc8417cce91cbc243a 1995 1996* :cpp:class:`pw::async2::PendFuncTask` now has a default template type 1997 of :cpp:type:`pw::Function`. Commit: `Provide default template type for 1998 PendFuncTask <https://pwrev.dev/242918>`__. 1999 2000.. _docs-changelog-2024-10-17-Modules-pw_build: 2001 2002pw_build 2003-------- 2004New features: 2005 2006.. 7698704f57a69ff5a913f0b2d43d3cc419d10446 2007 2008* The newly relanded ``pw_copy_and_patch_file`` feature provides the 2009 ability to patch a file during a Bazel or GN build. Commit: `Add 2010 pw_copy_and_patch_file <https://pwrev.dev/240832>`__. 2011 2012.. _docs-changelog-2024-10-17-Modules-pw_cli_analytics: 2013 2014pw_cli_analytics 2015---------------- 2016New features: 2017 2018.. 6ae64ef2889810d43682b85e0c793018ae9a507c 2019 2020* The new :ref:`module-pw_cli_analytics` module collects and transmits 2021 analytics on usage of the ``pw`` command line interface. Commit: 2022 `Initial commit <https://pwrev.dev/188432>`__. Bug: :bug:`319320838`. 2023 2024.. _docs-changelog-2024-10-17-Modules-pw_console: 2025 2026pw_console 2027---------- 2028Bug fixes: 2029 2030.. 8bd77aba07ab3dce5220b23994cd3ecfbcefda10 2031 2032* A divide-by-zero error in the ``pw_console`` progress bar was fixed. 2033 Commit: `Fix progress bar division by zero 2034 <https://pwrev.dev/233033>`__. 2035 2036.. _docs-changelog-2024-10-17-Modules-pw_env_setup: 2037 2038pw_env_setup 2039------------ 2040Changes: 2041 2042.. a789e9c308f3b289c950e8afb3d891fa5b7b39ac 2043 2044* ``//pw_env_setup/py/pw_env_setup/cipd_setup/black.json`` has been 2045 removed. Commit: `Remove black.json <https://pwrev.dev/241359>`__. 2046 2047.. c42ec10b3824a5e15bc4e92d2065bd95143e9aad 2048 2049* Python 2 support has been removed from ``pw_env_setup``. Commit: `Drop 2050 Python 2 support <https://pwrev.dev/242713>`__. Bug: :bug:`373905972`. 2051 2052.. _docs-changelog-2024-10-17-Modules-pw_numeric: 2053 2054pw_numeric 2055---------- 2056New features: 2057 2058.. 0c98e51f046d2de13e5ea8509452b99beb6776ec 2059 2060* The new :ref:`module-pw_numeric` module is a collection of 2061 mathematical utilities optimized for embedded systems. Commit: `New 2062 module for mathematical utilities <https://pwrev.dev/240655>`__. 2063 2064.. 1eadbb9e0d8de149ee300c9f60933878498b3544 2065 2066* The new :cpp:func:`pw::IntegerDivisionRoundNearest` function performs 2067 integer division and rounds to the nearest integer. It gives the same 2068 result as ``std::round(static_cast<double>(dividend) / 2069 static_cast<double>(divisor))`` but requires no floating point 2070 operations and is ``constexpr``. Commit: `Rounded integer division 2071 <https://pwrev.dev/240656>`__. 2072 2073.. _docs-changelog-2024-10-17-Modules-pw_protobuf: 2074 2075pw_protobuf 2076----------- 2077Changes: 2078 2079.. 205570386eac8fe6e0269b7fbbab1449eb565036 2080 2081* ``oneof`` protobuf fields can't be inlined within a message structure. 2082 They must be encoded and decoded using callbacks. See 2083 :ref:`pw_protobuf-per-field-apis`. Commit: `Force use of callbacks for oneof 2084 <https://pwrev.dev/242392>`__. Bug: :bug:`373693434`. 2085 2086.. 6efc99b3ee854dd54a0b1465d9014c54e01b21b9 2087 2088* The ``import_prefix`` parameter in the 2089 ``pw_protobuf.options.load_options`` Python function was replaced with 2090 an ``options_files`` parameter that lets you directly specify the 2091 location of ``.options`` files. Commit: `Support directly specifying 2092 options file locations <https://pwrev.dev/240833>`__. Bug: 2093 :bug:`253068333`. 2094 2095.. _docs-changelog-2024-10-17-Modules-pw_rpc: 2096 2097pw_rpc 2098------ 2099Bug fixes: 2100 2101.. 05e93dadc080e45d624d92b80879297cfade417c 2102 2103* A bug was fixed where previously ``Call`` objects were not getting 2104 reinitialized correctly. Commit: `Fix Call not getting reset on default 2105 constructor assignment <https://pwrev.dev/239718>`__. Bug: 2106 :bug:`371211198`. 2107 2108.. _docs-changelog-2024-10-17-Modules-pw_spi: 2109 2110pw_spi 2111------ 2112Changes: 2113 2114.. 4321a46654fae21df8e8fb971cd5c618b8b73d3f 2115 2116* :cpp:class:`pw::spi::Initiator` now uses a non-virtual interface (NVI) 2117 pattern. Commit: `Use non-virtual interface (NVI) pattern on 2118 pw::spi::Initiator <https://pwrev.dev/236234>`__. Bug: :bug:`308479791`. 2119 2120.. _docs-changelog-2024-10-17-Modules-pw_stream_uart_mcuxpresso: 2121 2122pw_stream_uart_mcuxpresso 2123------------------------- 2124Changes: 2125 2126.. d08c60cad881afa835a22d2bbfe36a0d6f018c1c 2127 2128* :ref:`module-pw_stream_uart_mcuxpresso` is being merged into 2129 :ref:`module-pw_uart_mcuxpresso`. Commit: `Remove dma_stream 2130 <https://pwrev.dev/241201>`__. Bug: :bug:`331617914`. 2131 2132.. _docs-changelog-2024-10-17-Modules-pw_system: 2133 2134pw_system 2135--------- 2136New features: 2137 2138.. fd6b7a96cd142fcfbf979c2ebf3ea4ac2e342612 2139 2140* The new ``--debugger-listen`` and ``--debugger-wait-for-client`` 2141 options make it easier to debug the ``pw_system`` console. Commit: `Add 2142 \`debugger-listen\` and \`debugger-wait-for-client\` options 2143 <https://pwrev.dev/233752>`__. 2144 2145.. _docs-changelog-2024-10-17-Modules-pw_tokenizer: 2146 2147pw_tokenizer 2148------------ 2149New features: 2150 2151.. be439834757b0abcd0e81a77a0c8c39beca2d4db 2152 2153* All domains from ELF files are now loaded by default. Commit: `Load 2154 all domains from ELF files by default <https://pwrev.dev/239509>`__. 2155 Bugs: :bug:`364955916`, :bug:`265334753`. 2156 2157.. 56aa667aaa527d86241d27c5361e0d27f5aed06d 2158 2159* CSV databases now include the token's domain as the third column. 2160 Commit: `Include the domain in CSV databases 2161 <https://pwrev.dev/234414>`__. Bug: :bug:`364955916`. 2162 2163.. 9c37b722d9a807222c289069967222166c8613f5 2164 2165* Tokenizing enums is now supported. Commit: `Add support for tokenizing 2166 enums <https://pwrev.dev/236262>`__. Bug: :bug:`362753838`. 2167 2168Changes: 2169 2170.. 17df82d4c2b77d1667f24f5b27a256dbab31686f 2171 2172* When a domain is specified, any whitespace will be ignored in domain 2173 names and removed from the database. Commit: `Ignore whitespace in 2174 domain values <https://pwrev.dev/241212>`__. Bug: :bug:`362753840`. 2175 2176.. _docs-changelog-2024-10-17-Modules-pw_toolchain: 2177 2178pw_toolchain 2179------------ 2180New features: 2181 2182.. 0125f4a94c827612f1ae863b60d3fa301fbd773c 2183 2184* The new :ref:`module-pw_toolchain-bazel-compiler-specific-logic` 2185 documentation provides guidance on how to handle 2186 logic that differs between compilers. Commit: `Add Bazel mechansim for 2187 clang/gcc-specific flags <https://pwrev.dev/238429>`__. Bug: 2188 :bug:`361229275`. 2189 2190.. _docs-changelog-2024-10-17-Modules-pw_uart: 2191 2192pw_uart 2193------- 2194New features: 2195 2196.. b39ad5c71df860223a8f908219bfdcfbdda1e5f5 2197 2198* The new :cpp:class:`pw::uart::UartStream` class implements the 2199 :cpp:class:`pw::stream::NonSeekableReaderWriter` interface on top of a 2200 UART device. Commit: `Add pw::uart::UartStream 2201 <https://pwrev.dev/241200>`__. Bug: :bug:`331603164`. 2202 2203.. f6a7bb781754447aa9eea82af60962070815b4f8 2204 2205* The new :cpp:class:`pw::uart::UartBlockingAdapter` class provides a 2206 blocking UART interface on top of a 2207 :cpp:class:`pw::uart::UartNonBlocking` device. Commit: `Add 2208 UartBlockingAdapter <https://pwrev.dev/238393>`__. Bug: 2209 :bug:`369679732`. 2210 2211.. bdcf65850213372533c9422fdec0a199af112161 2212 2213* The new :cpp:func:`pw::uart::UartNonBlocking::FlushOutput` function 2214 ensures that all enqueued data has been transmitted. Commit: `Add 2215 UartNonBlocking::FlushOutput() <https://pwrev.dev/238572>`__. Bug: 2216 :bug:`370051726`. 2217 2218.. _docs-changelog-2024-10-17-Modules-pw_web: 2219 2220pw_web 2221------ 2222Changes: 2223 2224.. c4ea179e91c6aee6b9d41b9fe301269189970850 2225 2226* The ``device`` RPC APIs now support creating request messages for RPCs 2227 and calling the ``device`` API with those request messages. Commit: 2228 `Improvements to \`device\` RPC APIs <https://pwrev.dev/238052>`__. 2229 2230.. _docs-changelog-2024-10-17-Docs: 2231 2232Docs 2233==== 2234New features: 2235 2236.. 91d4349e08e22c50e5a738dee31cc95724eab50d 2237 2238* The new :ref:`docs-blog-05-coroutines` blog post discusses the nuances 2239 of using coroutines in embedded systems. Commit: `Add coroutine blog 2240 post <https://pwrev.dev/216111>`__. 2241 2242Changes: 2243 2244.. 84375274c2a7dbc0fc29cb1e718d8cdfa05085fa 2245 2246* Guides for contributing ``pigweed.dev`` documentation have been 2247 consolidated. Commit: `Consolidate 2248 content for pigweed.dev contributors <https://pwrev.dev/242192>`__. 2249 2250.. _docs-changelog-2024-10-17-SEEDs: 2251 2252SEEDs 2253===== 2254New features: 2255 2256.. 385019a0292797dd63f00f008efe36d52d4d698a 2257 2258* SEED :ref:`seed-0103` was accepted. Commit: `(SEED-0103) pw_protobuf: 2259 Past, present, and future <https://pwrev.dev/133971>`__. 2260 2261.. ec62be9c7c9e28c8bae26d9e73f1ce341e5e5cd5 2262 2263* :ref:`seed-0128` was accepted. Commit: `(SEED-0128) Abstracting thread 2264 creation <https://pwrev.dev/206670>`__. 2265 2266.. _docs-changelog-2024-10-17-Targets: 2267 2268Targets 2269======= 2270 2271.. _docs-changelog-2024-10-17-Targets-rp2040: 2272 2273RP2040 2274------ 2275New features: 2276 2277.. 8e0d91c3f7da31448419584ae9287de57ed5452f 2278 2279* A new helper, ``flash_rp2350``, was added to 2280 ``//targets/rp2040/flash.bzl``. Commit: `Update \`flash_rp2040\` helper 2281 with --chip argument <https://pwrev.dev/242917>`__. 2282 2283.. _docs-changelog-2024-10-03: 2284 2285----------- 2286Oct 3, 2024 2287----------- 2288 2289Highlights (Sep 20, 2024 to Oct 3, 2024): 2290 2291* The :ref:`module-pw_async2` and :ref:`module-pw_containers` docs 2292 now contain code examples that are built and tested alongside the rest 2293 of Pigweed, minimizing the chance that they bit rot over time. 2294* The new :cpp:class:`pw::async2::Dispatcher` class is a single- 2295 threaded, cooperatively scheduled runtime for async tasks. 2296* The new :cpp:class:`pw::uart::UartBase` class provides a common 2297 abstract base class for UART interfaces. 2298* :cpp:class:`pw::rpc::RawServerReaderWriter` and 2299 :cpp:class:`pw::rpc::RawClientReaderWriter` have new methods that let 2300 you directly serialize RPC payloads to the RPC system's encoding buffer 2301 instead of requiring a copy from an externally managed buffer. 2302 2303.. _docs-changelog-2024-10-03-Modules: 2304 2305Modules 2306======= 2307 2308.. _docs-changelog-2024-10-03-Modules-pw_allocator: 2309 2310pw_allocator 2311------------ 2312New features: 2313 2314.. 020780642847dba69a9b2025f1f698fe3d8e4801 2315 2316* The new :cpp:func:`pw::allocator::CalculateFragmentation` method 2317 calculates a fragmentation metric. This should not be invoked on-device 2318 unless the device has robust floating-point support. Commit: `Add 2319 MeasureFragmentation <https://pwrev.dev/238417>`__. 2320 2321.. _docs-changelog-2024-10-03-Modules-pw_async2: 2322 2323pw_async2 2324--------- 2325New features: 2326 2327.. 801fb32919777aefd7a734ce9c2c1e6aec782ab7 2328 2329* The new :cpp:class:`pw::async2::Dispatcher` class is a single- 2330 threaded, cooperatively scheduled runtime for async tasks. Commit: 2331 `Refactor Dispatcher to raise top-level API out of CRTP 2332 <https://pwrev.dev/237972>`__. Bug: :bug:`342000726`. 2333 2334.. 846bb7d3672e94c13451bec81098d3304d8395a9 2335 2336* The :ref:`module-pw_async2` docs now have examples. Commit: `Expand 2337 docs with examples <https://pwrev.dev/234095>`__. 2338 2339.. _docs-changelog-2024-10-03-Modules-pw_boot: 2340 2341pw_boot 2342------- 2343Changes: 2344 2345.. fba0833c176a79ec83403fa9d48407c5ddebb99f 2346 2347* The ``main()`` function forward declaration has been moved out of an 2348 explicit ``extern C`` block to prevent pedantic warnings in newer Clang 2349 toolchains. Commit: `Move main forward declaration out of extern "C" 2350 block <https://pwrev.dev/237333>`__. Bug: :bug:`366374135`. 2351 2352.. _docs-changelog-2024-10-03-Modules-pw_build: 2353 2354pw_build 2355-------- 2356Changes: 2357 2358.. 53b16cd8d2907855b13bec9159286927de602a72 2359 2360* The rules that previously existed in ``//pw_build/pigweed.bzl`` have 2361 been split into separate files. If you relied on 2362 ``//pw_build/pigweed.bzl`` you may need to update some ``load()`` 2363 statements in your Bazel files. Commit: `Break apart pigweed.bzl 2364 <https://pwrev.dev/239133>`__. Bug: :bug:`370792896`. 2365 2366.. _docs-changelog-2024-10-03-Modules-pw_chrono: 2367 2368pw_chrono 2369--------- 2370New features: 2371 2372.. 279ab4a35543900b62e674d14c2e663532ad5a18 2373 2374* The new ``--stamp`` Bazel flag ensures that Bazel builds properly 2375 record the actual build time as opposed to a cached value. Commit: 2376 `Properly stamp build time in Bazel <https://pwrev.dev/237809>`__. Bug: 2377 :bug:`367739962`. 2378 2379.. _docs-changelog-2024-10-03-Modules-pw_containers: 2380 2381pw_containers 2382------------- 2383New features: 2384 2385.. 819dd2ceb430eae53909bea7d5a23c7743ef0fc2 2386 2387* The ``pw_containers`` docs now provides examples on how to add 2388 intrusive items to multiple containers. See 2389 :ref:`module-pw_containers-intrusive_list-example`. Commit: 2390 `Multiple container example <https://pwrev.dev/237472>`__. 2391 2392.. 85469bdd7f4b8eea95fad4514002383e09210a6f 2393 2394* The :ref:`module-pw_containers` docs now have code examples that are 2395 built and tested as part of the normal upstream Pigweed build, which 2396 helps ensure that they don't bit rot. Commit: `Add examples 2397 <https://pwrev.dev/236612>`__. 2398 2399Bug fixes: 2400 2401.. 92ab0326113d1d6732a6d81dcc25abb330053b22 2402 2403* A bug was fixed where nodes in an ``AATreeItem`` could become 2404 orphaned. Commit: `Fix tree rebalancing <https://pwrev.dev/237415>`__. 2405 2406.. _docs-changelog-2024-10-03-Modules-pw_log: 2407 2408pw_log 2409------ 2410Changes: 2411 2412.. 5d9a1e84e7c55a7b194a8bf459b720cbba220d0c 2413 2414* The ``PW_MODULE_LOG_NAME_DEFINED`` macro has been removed. Commit: 2415 `Remove unused macro PW_MODULE_LOG_NAME_DEFINED 2416 <https://pwrev.dev/238554>`__. 2417 2418.. _docs-changelog-2024-10-03-Modules-pw_metric: 2419 2420pw_metric 2421--------- 2422Bug fixes: 2423 2424.. 30dcf2b202c792599151e7b09699e836e3cc44a3 2425 2426* A bug causing ``pw::metric::Metric::Dump()`` and 2427 ``pw::metric::Group::Dump()`` to log invalid JSON objects was fixed. 2428 Commit: `Emit valid JSON from Metric::Dump 2429 <https://pwrev.dev/237933>`__. 2430 2431.. _docs-changelog-2024-10-03-Modules-pw_preprocessor: 2432 2433pw_preprocessor 2434--------------- 2435Changes: 2436 2437.. 92438518417d49c3457090c1b3c57f71007743e8 2438 2439* ``PW_MACRO_ARG_COUNT`` now supports up to 256 arguments. Commit: 2440 `Expand PW_MACRO_ARG_COUNT to 256 arguments 2441 <https://pwrev.dev/237993>`__. 2442 2443.. _docs-changelog-2024-10-03-Modules-pw_presubmit: 2444 2445pw_presubmit 2446------------ 2447Bug fixes: 2448 2449.. 6422c9ae137ad37a9ec172dcd95f294ce5631f82 2450 2451* A bug was fixed that was causing Pigweed's auto-generated ``rustdoc`` 2452 API references to not be built. ``rustdoc`` documentation at 2453 ``pigweed.dev/rustdoc/*`` should be working again. Commit: `Have 2454 docs_build check rust docs <https://pwrev.dev/238189>`__. Bug: 2455 :bug:`369864378`. 2456 2457.. _docs-changelog-2024-10-03-Modules-pw_rpc: 2458 2459pw_rpc 2460------ 2461New features: 2462 2463.. 8e2fc6cfe825631416043a972cdd93875562a4fd 2464 2465* :cpp:class:`pw::rpc::RawServerReaderWriter` and 2466 :cpp:class:`pw::rpc::RawClientReaderWriter` have new methods that let 2467 you directly serialize RPC payloads to the RPC system's encoding buffer 2468 instead of requiring a copy from an externally managed buffer. Commit: 2469 `Add callback writes to raw RPC call objects 2470 <https://pwrev.dev/239353>`__. 2471 2472.. _docs-changelog-2024-10-03-Modules-pw_spi: 2473 2474pw_spi 2475------ 2476New features: 2477 2478.. c25923e13c339cc678e8900770a512b85064f99a 2479 2480* ``operator!=`` is now implemented. Commit: `Minor enhancements to 2481 pw::spi::Config <https://pwrev.dev/238932>`__. 2482 2483Changes: 2484 2485.. c25923e13c339cc678e8900770a512b85064f99a 2486 2487* ``operator()``, ``operator==``, and ``operator!=`` are now marked 2488 ``constexpr`` to enable compile-time equality checking. Commit: `Minor 2489 enhancements to pw::spi::Config <https://pwrev.dev/238932>`__. 2490 2491.. _docs-changelog-2024-10-03-Modules-pw_spi_rp2040: 2492 2493pw_spi_rp2040 2494------------- 2495Changes: 2496 2497.. 783b29c23dd865fde344501c1b99adba4c956479 2498 2499* ``spi_init()`` from the Pico SDK must be called before using the 2500 ``pw_spi`` initiator. Commit: `Minor cleanup 2501 <https://pwrev.dev/236233>`__. 2502 2503.. _docs-changelog-2024-10-03-Modules-pw_thread: 2504 2505pw_thread 2506--------- 2507Changes: 2508 2509.. 30bdace4866039e26a05f8baa379630e066ad660 2510 2511* The old ``pw::Thread`` constructor that takes ``void(void*)`` has been 2512 removed from the public API. This is a breaking change. Constructor 2513 usage should be migrated to the new constructor that takes 2514 ``pw::Function<void()>``. Commit: `Make the deprecated Thread 2515 constructor private <https://pwrev.dev/236435>`__. Bug: 2516 :bug:`367786892`. 2517 2518.. 2a0f0dfccc19b86a686777afa647b0c75a87c863 2519 2520* The ``pw::thread::Thread`` class was renamed to 2521 :cpp:type:`pw::Thread`. Commit: `Migrate from pw::thread::Thread to 2522 pw::Thread <https://pwrev.dev/236723>`__. 2523 2524.. f1070484e7d2f4e429332c6d8520a3676b8cb965 2525 2526* ``pw::thread::Id`` has been renamed to ``pw::Thread::id``. Commit: 2527 `Introduce pw::Thread and pw::Thread::id <https://pwrev.dev/236796>`__. 2528 2529.. _docs-changelog-2024-10-03-Modules-pw_tokenizer: 2530 2531pw_tokenizer 2532------------ 2533New features: 2534 2535.. e26be58d6db0215e6a762a5a28ad74584e9a0482 2536 2537* The new :c:macro:`PW_TOKENIZER_DEFINE_TOKEN` macro makes it easier to 2538 support tokenized enums and domains. Commit: `Expose API to define new 2539 token entry <https://pwrev.dev/238272>`__. Bug: :bug:`369881416`. 2540 2541Changes: 2542 2543.. 02a68bb680ebddeba8f0ad6cbbc6bb81d7568759 2544 2545* CSV databases now have 4 columns: token, date removed, domain, and 2546 string. The domain column was added as part of :ref:`seed-0105`. Legacy 2547 databases that only support the other 3 columns continue to be 2548 supported. Tokens in legacy databases are always in the default domain 2549 ``""``. Commit: `Support CSV databases with the domain 2550 <https://pwrev.dev/234413>`__. Bug: :bug:`364955916`. 2551 2552.. _docs-changelog-2024-10-03-Modules-pw_toolchain: 2553 2554pw_toolchain 2555------------ 2556Changes: 2557 2558.. bf7078a044353df9683ecb65561a0edca45a4f95 2559 2560* The ``pw_toolchain`` docs were refactored. Bazel-specific guidance is 2561 now in :ref:`module-pw_toolchain-bazel` and GN-specific guidance is now 2562 in :ref:`module-pw_toolchain-gn`. Commit: `Split out build-system 2563 specific docs <https://pwrev.dev/238816>`__. 2564 2565.. 3d0fac908c139ce83eed93727601d13747b03bf7 2566 2567* The Bazel rules at ``//pw_toolchain/args/BUILD.bazel`` moved to 2568 ``//pw_toolchain/cc/args/BUILD.bazel``. If you rely on these rules you 2569 may need to update your ``load()`` statements. Commit: `Move 2570 pw_toolchain/args to pw_toolchain/cc/args <https://pwrev.dev/238817>`__. 2571 2572.. _docs-changelog-2024-10-03-Modules-pw_transfer: 2573 2574pw_transfer 2575----------- 2576Bug fixes: 2577 2578.. da9a7e7cc2bd983d428949a6f5d85b9757b5178f 2579 2580* A bug was fixed where resumed transfers would send a window of ``0`` 2581 repeatedly. Commit: `Fix offset receive transfer startup 2582 <https://pwrev.dev/237095>`__. Bug: :bug:`368620868`. 2583 2584.. _docs-changelog-2024-10-03-Modules-pw_uart: 2585 2586pw_uart 2587------- 2588New features: 2589 2590.. 7dc3b1b2a69972ae19bbe43f922aefd6dda73a3e 2591 2592* The new :cpp:class:`pw::uart::UartBase` class provides a common 2593 abstract base class for UART interfaces. Commit: `Add UartBase class 2594 <https://pwrev.dev/238092>`__. Bug: :bug:`369678735`. 2595 2596.. b4e75393442526d409968e4aac685515944b3e3e 2597 2598* The new :cpp:func:`pw::uart::Uart::ReadAtLeast` method reads data from 2599 the UART and blocks until at least the specified number of bytes have 2600 been received. The new :cpp:func:`pw::uart::Uart::ReadExactly` method 2601 reads data from the UART and blocks until the entire buffer has been 2602 filled. Commit: `Add ReadAtLeast and ReadExactly methods 2603 <https://pwrev.dev/236268>`__. Bug: :bug:`368149122`. 2604 2605.. f946f6ae13c3bbc2a648b36f9ff55642e9d23b34 2606 2607* The new :cpp:class:`pw::uart::UartNonBlocking` class provides a 2608 callback-based interface for performing non-blocking UART communication. 2609 It defines the interface that concrete UART implementations must adhere 2610 to. Commit: `Add uart_non_blocking.h API <https://pwrev.dev/210371>`__. 2611 Bugs: :bug:`341356437`, :bug:`331617095`. 2612 2613.. 1dc9a789f52aad1f0e738a1cfd5993e2272c38d2 2614 2615* The new :cpp:func:`pw::uart::Uart::SetFlowControl` method lets 2616 applications configure hardware flow control on UART devices. Commit: 2617 `Add method to set flow control <https://pwrev.dev/237953>`__. 2618 2619Changes: 2620 2621.. d31705b84d24f0ef17e6b8eef6cae13f96f942e4 2622 2623* ``pw::uart::Uart::ConservativeReadAvailable()`` was moved to 2624 :cpp:func:`pw::uart::UartBase::ConservativeReadAvailable()` and 2625 ``pw::uart::Uart::ClearPendingReceiveBytes()`` was moved to 2626 :cpp:func:`pw::uart::UartBase::ClearPendingReceiveBytes()`. Commit: 2627 `Move non-blocking methods from Uart to UartBase 2628 <https://pwrev.dev/238533>`__. Bug: :bug:`369679732`. 2629 2630.. _docs-changelog-2024-10-03-Modules-pw_uart_mcuxpresso: 2631 2632pw_uart_mcuxpresso 2633------------------ 2634Bug fixes: 2635 2636.. 94d2c3995c8a14995490ef7de015e933a960c2d5 2637 2638* A bug was fixed where the ``pw::uart::DmaUartMcuxpresso::Deinit()`` 2639 method didn't clear an initialization flag, which caused the 2640 ``pw::uart::DmaUartMcuxpresso::Init()`` method to be skipped on 2641 subsequent enables. Commit: `Fix disable bug 2642 <https://pwrev.dev/237394>`__. 2643 2644.. _docs-changelog-2024-10-03-Docs: 2645 2646Docs 2647==== 2648New features: 2649 2650.. 2ef99131bbb73e475f64281b6515eedba4a8cb79 2651 2652* The Pigweed blog now has an `RSS feed <https://pigweed.dev/rss.xml>`_. 2653 Commit: `Create RSS feed for blog <https://pwrev.dev/225491>`__. Bug: 2654 :bug:`345857642`. 2655 2656.. 8f18755dc9a225caacf2b190d1114ebfda4a2642 2657 2658* The new blog post :ref:`blog-04-fixed-point` outlines how replacing 2659 soft floats with fixed-point arithmetic can result in speed improvements 2660 and binary size reductions without sacrificing correctness. Commit: `Add 2661 fixed point blog <https://pwrev.dev/234312>`__. 2662 2663Bug fixes: 2664 2665.. e81cd5e642a0c92264caafb14a2f4931cb14fced 2666 2667* When a Pigweed module is listed as supporting Rust in 2668 ``//docs/module_metadata.json``, a link to that module's ``rustdoc`` API 2669 reference is now auto-generated in the ``pigweed.dev`` site nav. Commit: 2670 `Auto-link to Rust API references <https://pwrev.dev/237934>`__. Bug: 2671 :bug:`328503976`. 2672 2673.. _docs-changelog-2024-10-03-SEEDs: 2674 2675SEEDs 2676===== 2677Changes: 2678 2679.. 905bce3bd61280a8254ac5b3b2f78e2d3059faa0 2680 2681* SEED-0123 was rejected because Pigweed ended up upstreaming the 2682 relevant APIs to ``rules_cc`` instead of sprouting them into a separate 2683 repo. Commit: `(SEED-123) Reject the SEED <https://pwrev.dev/236453>`__. 2684 2685.. _docs-changelog-2024-10-03-Targets: 2686 2687Targets 2688======= 2689.. a5a199593f1375177d5805f882f303d4c8b8cea2 2690 2691* The ``main()`` forward declaration for ``emcraft_sf2_som``, 2692 ``host_device_simulator``, and ``stm32f429i_disc1_stm32cube`` are no 2693 longer explicitly marked ``extern C`` to prevent pedantic warnings in 2694 newer Clang toolchains. Commit: `Remove implicit extern C 2695 <https://pwrev.dev/237092>`__. Bug: :bug:`366374135`. 2696 2697.. _docs-changelog-2024-09-19: 2698 2699------------ 2700Sep 19, 2024 2701------------ 2702Highlights (Sep 06, 2024 to Sep 19, 2024): 2703 2704* **New container classes**: The new :cpp:class:`pw::IntrusiveMap` and 2705 :cpp:class:`pw::IntrusiveMultiMap` classes can be used for associative 2706 dictionaries, sorted lists, and more. 2707* **Protobuf Editions**: Initial support for `Protobuf Editions 2708 <https://protobuf.dev/editions/overview>`__ was added for GN-based and 2709 CMake-based projects. 2710* **Token domains**: The :ref:`Detokenizer 2711 <module-pw_tokenizer-detokenization>` now supports 2712 :ref:`token domains <seed-0105>`. 2713 2714.. _docs-changelog-2024-09-19-Modules: 2715 2716Modules 2717======= 2718 2719.. _docs-changelog-2024-09-19-Modules-pw_allocator: 2720 2721pw_allocator 2722------------ 2723New features: 2724 2725.. d5fcc90b39ee7568855390535fa854cea8f33c95 2726 2727* The new :c:macro:`PW_ALLOCATOR_STRICT_VALIDATION` option lets you 2728 enable more expensive checks to aggressively enforce invariants when 2729 testing. The new :c:macro:`PW_ALLOCATOR_BLOCK_POISON_INTERVAL` option 2730 allows setting the poisoning rate more easily from the build rather than 2731 in code via template parameters. See 2732 :ref:`module-pw_allocator-module-configuration`. Commit: `Add module config 2733 <https://pwrev.dev/232211>`__. 2734 2735Bug fixes: 2736 2737.. 82759ccb711c3f34320ae9ae37bf70a029baec57 2738 2739* A bug was fixed where ``pw_allocator`` always split the first block 2740 even if there was not enough room for the first block to be split into 2741 two, which could cause heap corruption and crashes. Commit: `Check for 2742 room to split the first block <https://pwrev.dev/235312>`__. Bug: 2743 :bug:`366175024`. 2744 2745.. _docs-changelog-2024-09-19-Modules-pw_assert: 2746 2747pw_assert 2748--------- 2749Changes: 2750 2751.. cfcf0059926589e26f318e29df8733e5a09c2928 2752 2753* :c:macro:`PW_CHECK_OK` now accepts any expression that's convertible 2754 to :cpp:class:`pw::Status`. Commit: `Update PW_CHECK_OK() to handle any 2755 expr convertible to Status <https://pwrev.dev/234820>`__. Bugs: 2756 :bug:`357682413`, :bug:`365592494`. 2757 2758.. _docs-changelog-2024-09-19-Modules-pw_async2: 2759 2760pw_async2 2761--------- 2762New features: 2763 2764.. cfcbaf5bbc67288b5e8954f22528c4de9312effe 2765 2766* The new 2767 :cpp:func:`pw::async2::SimulatedTimeProvider::AdvanceUntilNextExpiration` 2768 utility method is useful for advancing test time without 2769 random periods or endless iterations. Commit: `Add more 2770 SimulatedTimeProvider utilities <https://pwrev.dev/234929>`__. 2771 2772Changes: 2773 2774.. ed0fd1f45a3a137965dbb2075227b8ef0e91f935 2775 2776* Coroutines now log the requested size when an allocation fails. 2777 Commit: `Log size of failed coroutine allocations 2778 <https://pwrev.dev/234801>`__. 2779 2780.. _docs-changelog-2024-09-19-Modules-pw_build: 2781 2782pw_build 2783-------- 2784Bug fixes: 2785 2786.. 3919d9638b6454512595c8ad39fb8806d4ac9629 2787 2788* An issue was fixed where bootstrap failed when 2789 ``pw_rust_static_library`` was used. Commit: `Fix Undefined identifier 2790 <https://pwrev.dev/232371>`__. 2791 2792.. _docs-changelog-2024-09-19-Modules-pw_bytes: 2793 2794pw_bytes 2795-------- 2796New features: 2797 2798.. cda5ba673366d189e0ea326a0fa808df181730a7 2799 2800* The new :cpp:class:`pw::PackedPtr` template class provides a way to 2801 store extra data in the otherwise unused least significant bits of a 2802 pointer. Commit: `Add PackedPtr <https://pwrev.dev/235104>`__. 2803 2804.. _docs-changelog-2024-09-19-Modules-pw_containers: 2805 2806pw_containers 2807------------- 2808New features: 2809 2810.. df3b7ba1f94902e81e375ce9935749163c411515 2811 2812* ``pw::IntrusiveList`` now has a :ref:`size report 2813 <module-pw_containers-intrusivelist-size-report>`. Commit: 2814 `Add IntrusiveForwardList size report to the docs 2815 <https://pwrev.dev/233651>`__. 2816 2817.. 8a3250d2f4287c2f66c4afd7679f9b10f789e764 2818 2819* The new :cpp:class:`pw::IntrusiveMap` and 2820 :cpp:class:`pw::IntrusiveMultiMap` classes can be used for associative 2821 dictionaries, sorted lists, and more. Commit: `Add IntrusiveMap and 2822 IntrusiveMultiMap <https://pwrev.dev/216828>`__. 2823 2824Changes: 2825 2826.. 314e457eaf3a801115542d777e2157e6df85fb31 2827 2828* ``pw::IntrusiveList<T>`` was renamed to 2829 ``pw::IntrusiveForwardList<T>`` and a new doubly-linked intrusive list 2830 was added as ``pw::containers::future::IntrusiveList<T>``. An alias, 2831 ``pw::IntrusiveList<T>``, was added to maintain compatibility with 2832 existing code and will be removed in the future. The original 2833 implementation can still be temporarily enabled by setting 2834 ``PW_CONTAINERS_USE_LEGACY_INTRUSIVE_LIST``. Commit: `Add doubly linked 2835 list <https://pwrev.dev/230811>`__. Bug: :bug:`362348318`. 2836 2837.. _docs-changelog-2024-09-19-Modules-pw_env_setup: 2838 2839pw_env_setup 2840------------ 2841Changes: 2842 2843.. 16f0f6387505dc27e7c1a76387b05524752b4602 2844 2845* The Git submodule check is now skipped when no ``.git`` file or 2846 directory is detected. Commit: `Add check for git in 2847 _check_submodule_presence <https://pwrev.dev/234212>`__. Bug: 2848 :bug:`365557573`. 2849 2850.. _docs-changelog-2024-09-19-Modules-pw_ide: 2851 2852pw_ide 2853------ 2854Bug fixes: 2855 2856.. 145b45747105fb95e5625c00a7533e5375d124ea 2857 2858* When ``clangd`` is not found, ``pw ide sync`` now cleanly handles the 2859 lack of ``clangd`` and successfully completes the rest of the sync. 2860 Commit: `Don't fail sync on missing clangd 2861 <https://pwrev.dev/236475>`__. Bug: :bug:`349189723`. 2862 2863.. _docs-changelog-2024-09-19-Modules-pw_protobuf: 2864 2865pw_protobuf 2866----------- 2867New features: 2868 2869.. b299522cffb0a18e07528e923f376ceee3e9c188 2870 2871* Initial support for `Protobuf Editions 2872 <https://protobuf.dev/editions/overview>`__ was added for GN-based and 2873 CMake-based projects. Commit: `Basic edition support 2874 <https://pwrev.dev/235873>`__. 2875 2876.. _docs-changelog-2024-09-19-Modules-pw_spi_linux: 2877 2878pw_spi_linux 2879------------ 2880Bug fixes: 2881 2882.. eefd313bdb13098552cd713598b937debe80d3d4 2883 2884* A performance issue was fixed where ``Configure()`` was being called 2885 on each ``pw::spi::Device::WriteRead()`` call. Commit: `Avoid 2886 unnecessary ioctl()s in Configure() <https://pwrev.dev/235877>`__. Bug: 2887 :bug:`366541694`. 2888 2889.. _docs-changelog-2024-09-19-Modules-pw_spi_mcuxpresso: 2890 2891pw_spi_mcuxpresso 2892----------------- 2893Changes: 2894 2895.. 9d175062d56972f082ce99753092b75419a228ce 2896 2897* ``pw::spi::McuxpressoInitiator::DoConfigure()`` was renamed to 2898 ``pw::spi::McuxpressoInitiator::DoConfigureLocked()``. Commit: `Rename 2899 DoConfigure() to DoConfigureLocked() <https://pwrev.dev/236232>`__. 2900 2901.. _docs-changelog-2024-09-19-Modules-pw_sys_io_stm32cube: 2902 2903pw_sys_io_stm32cube 2904------------------- 2905Bug fixes: 2906 2907.. b0f73feb04effde3b7751c53c21b7a163f234eb8 2908 2909* A bug was fixed where the GPIO mode of the UART RX GPIO pin on 2910 STM32F1XX devices was not being correctly set. Commit: `Fix UART RX GPIO 2911 mode for f1xx family <https://pwrev.dev/235332>`__. 2912 2913.. _docs-changelog-2024-09-19-Modules-pw_system: 2914 2915pw_system 2916--------- 2917New features: 2918 2919.. 5e148c19477521afbbedcc8a91a2c5b2a07bc334 2920 2921* The console's new ``timestamp_decoder`` constructor parameter lets 2922 applications provide custom timestamp parsers. Commit: `Support 2923 timestamp parser as an argument <https://pwrev.dev/234931>`__. Bug: 2924 :bug:`344606797`. 2925 2926Changes: 2927 2928.. faac61757b5428be3787729d328f6f2f3ebfa9f1 2929 2930* The log library header (``pw_system/log.h``) of ``pw_system`` is now 2931 public and can be used outside of ``pw_system``. Commit: `Make log 2932 library header public <https://pwrev.dev/233411>`__. 2933 2934.. _docs-changelog-2024-09-19-Modules-pw_thread: 2935 2936pw_thread 2937--------- 2938Changes: 2939 2940.. 8a67d6b57b526757ffa010be2be402c42cd13ac4 2941 2942* ``pw::thread::Thread`` now takes ``pw::Function<void()>``, which 2943 should be used in place of the ``void(void*)`` function pointer and 2944 ``void*`` argument. Commit: `Mark legacy function* / void* constructor 2945 as deprecated <https://pwrev.dev/236454>`__. Bug: :bug:`367786892`. 2946 2947.. _docs-changelog-2024-09-19-Modules-pw_tokenizer: 2948 2949pw_tokenizer 2950------------ 2951New features: 2952 2953.. 9fb87e78e4c41778fc950714d58e6602f63d27e6 2954 2955* The :ref:`Detokenizer <module-pw_tokenizer-detokenization>` now 2956 supports :ref:`token domains <seed-0105>`. Commit: 2957 `Add token domain support to Detokenizer <https://pwrev.dev/234968>`__. 2958 Bug: :bug:`362752722`. 2959 2960.. 08ff555993b8ab250ea03a9f12aaf5c2d1c9c705 2961 2962* :py:class:`pw_tokenizer.tokens.Database` now supports :ref:`token 2963 domains <seed-0105>`. Commit: `Use domains in the Python tokens.Database 2964 class <https://pwrev.dev/234412>`__. 2965 2966.. _docs-changelog-2024-09-19-Modules-pw_toolchain: 2967 2968pw_toolchain 2969------------ 2970New features: 2971 2972.. 40f756e2d3c40eeb32832309dbcae989fb750268 2973 2974* ``WORKSPACE`` toolchain registration is now configurable so that 2975 downstream projects can manually control which toolchains get 2976 registered. Commit: `Make toolchain registration configurable 2977 <https://pwrev.dev/235712>`__. Bug: :bug:`346388161`. 2978 2979.. _docs-changelog-2024-09-19-Modules-pw_transfer: 2980 2981pw_transfer 2982----------- 2983Bug fixes: 2984 2985.. f1f654a15a3adce476c2d68643eee56f3c225dd4 2986 2987* A bug was fixed where a handshake timeout was not set after 2988 ``START_ACK`` is processed. Commit: `Bugfix for start handshake, and 2989 rate limit logs <https://pwrev.dev/236572>`__. Bug: :bug:`361281209`. 2990 2991Changes: 2992 2993.. 2496aee1a4ab3d98526a7357943b69347a39903a 2994 2995* When a receiver receives a chunk of data it already has the receiver 2996 now sends a ``PARAMETERS_CONTINUE`` chunk instead of requesting 2997 retransmission. Commit: `Send continue parameters for already received 2998 chunks <https://pwrev.dev/235100>`__. 2999 3000.. f1f654a15a3adce476c2d68643eee56f3c225dd4 3001 3002* TX data chunk logs have been rate-limited to only send once every 3 3003 seconds. Commit: `Bugfix for start handshake, and rate limit logs 3004 <https://pwrev.dev/236572>`__. Bug: :bug:`361281209`. 3005 3006.. _docs-changelog-2024-09-19-Modules-pw_uart_mcuxpresso: 3007 3008pw_uart_mcuxpresso 3009------------------ 3010New features: 3011 3012.. e8ab2b0ac31c0dde6febd0d384c0ea7d688f6803 3013 3014* Flow control can now be configured. Commit: `Add support for 3015 configuring flow control <https://pwrev.dev/236896>`__. Bug: 3016 :bug:`368150004`. 3017 3018Changes: 3019 3020.. e8ab2b0ac31c0dde6febd0d384c0ea7d688f6803 3021 3022* Flow control, parity mode, and stop bits now have default values. 3023 Commit: `Add support for configuring flow control 3024 <https://pwrev.dev/236896>`__. Bug: :bug:`368150004`. 3025 3026.. _docs-changelog-2024-09-19-Build-systems: 3027 3028Build systems 3029============= 3030 3031.. _docs-changelog-2024-09-19-Build-systems-Bazel: 3032 3033Bazel 3034----- 3035New features: 3036 3037.. 4ceb5b8bf0faf75c0b051114abf85a2ea73ca39c 3038 3039* The new ``do_not_build`` tag specifies targets that should be excluded 3040 from wildcard builds. The new ``do_not_run_test`` tag specifies test 3041 targets that should be built but not executed. Commit: `Introduce 3042 do_not_build, do_no_run_test tags <https://pwrev.dev/223492>`__. Bug: 3043 :bug:`353531487`. 3044 3045.. 54679d205e4888302ab24882e6fb64bf8ba964c6 3046 3047* `Platform-based flags <https://github.com/bazelbuild/proposals/blob/ma 3048 in/designs/2023-06-08-platform-based-flags.md>`__ have been re-enabled. 3049 Commit: `Re-enable platform-based flags <https://pwrev.dev/234135>`__. 3050 Bug: :bug:`301334234`. 3051 3052.. _docs-changelog-2024-09-19-Miscellaneous: 3053 3054Miscellaneous 3055============= 3056Bug fixes: 3057 3058.. 982c7f42878871e7f85dbc5420ff17f0b8ede237 3059 3060* An issue was fixed where the Fuchsia SDK was always fetched during 3061 Bazel workspace initialization and caused unnecessary downloads. Commit: 3062 `Use @fuchsia_clang as a cipd repository <https://pwrev.dev/233531>`__. 3063 Bug: :bug:`346416385`. 3064 3065----------- 3066Sep 5, 2024 3067----------- 3068.. note:: 3069 3070 This changelog update is shorter than previous ones because we're 3071 experimenting with only showing user-facing new features, changes, 3072 and bug fixes. I.e. we're omitting commits that don't affect 3073 downstream Pigweed projects. 3074 3075Highlights (Aug 24, 2024 to Sep 5, 2024): 3076 3077* **New backends**: :ref:`module-pw_async_fuchsia` (a ``pw_async`` 3078 backend for Fuchsia that implements ``Task`` and ``FakeDispatcher``), 3079 :ref:`module-pw_log_fuchsia` (a ``pw_log`` backend for Fuchsia 3080 that uses the ``fuchsia.logger.LogSink`` FIDL API to send logs), 3081 :ref:`module-pw_random_fuchsia` (a ``pw_random`` backend for Fuchsia 3082 that implements :cpp:class:`pw::random::RandomGenerator`) 3083 and :ref:`module-pw_uart_mcuxpresso` (a ``pw_uart`` backend for 3084 NXP MCUXpresso devices). 3085* **New theme**: The underlying Sphinx theme powering ``pigweed.dev`` is now 3086 `PyData <https://pydata-sphinx-theme.readthedocs.io/en/stable/>`_. In 3087 addition to improving website usability, this theme should also reduce 3088 the ``pigweed.dev`` maintenance workload over time. See 3089 :ref:`seed-0130` for more information. 3090* **Arm Cortex-M55 support**: ``pw_toolchain`` and ``pw_system`` now 3091 support Arm Cortex-M55 cores. 3092* **Bazel cloud demo**: The new :ref:`Bazel cloud features 3093 <showcase-sense-tutorial-bazel_cloud>` 3094 page in the Sense tutorial shows you how to use BuildBuddy 3095 to share logs and speed up builds with remote caching. 3096 3097Modules 3098======= 3099 3100pw_async2 3101--------- 3102* The new :cpp:class:`pw::async2::TimeProvider` class can be used to 3103 create timers in a dependency-injection-friendly way. 3104 Commit: `Add TimeProvider 3105 <https://pwrev.dev/232411>`__ 3106 3107pw_async_fuchsia 3108---------------- 3109* :ref:`module-pw_async_fuchsia` is a new ``pw_async`` backend for Fuchsia 3110 that implements ``Task`` and ``FakeDispatcher``. 3111 Commit: `Create pw_async Fuchsia backend 3112 <https://pwrev.dev/230896>`__ 3113 3114pw_chrono 3115--------- 3116* :cpp:class:`pw::chrono::VirtualClock` is a new virtual base class for 3117 timers that enables writing 3118 timing-sensitive code that can be tested using simulated clocks such as 3119 :cpp:class:`pw::chrono::SimulatedSystemClock`. 3120 Commit: `Add VirtualClock 3121 <https://pwrev.dev/233031>`__ 3122 3123pw_cli 3124------ 3125* The new :py:meth:`pw_cli.git_repo.GitRepo.commit_date()` method returns 3126 the datetime of a specified commit. 3127 Commit: `Add in option to retrieve commit date 3128 <https://pwrev.dev/216275>`__ 3129 3130pw_digital_io_mcuxpresso 3131------------------------ 3132* The GPIO clock is now enabled even when GPIO is disabled. 3133 Commit: `Enable gpio clock even when disabling gpio 3134 <https://pwrev.dev/232131>`__ 3135 (issue `#356689514 <https://pwbug.dev/356689514>`__) 3136 3137pw_log_fuchsia 3138-------------- 3139* :ref:`module-pw_log_fuchsia` is a new ``pw_log`` backend that uses the 3140 ``fuchsia.logger.LogSink`` FIDL API to send logs. 3141 Commit: `Create pw_log Fuchsia backend 3142 <https://pwrev.dev/231052>`__ 3143 3144pw_log_rpc 3145---------- 3146* ``pw_log_rpc.LogStreamHandler.listen_to_logs()`` was renamed to 3147 :py:meth:`pw_log_rpc.LogStreamHandler.start_logging()`. 3148 Commit: `Invoke pw.log.Logs.Listen() to restore prior behavior 3149 <https://pwrev.dev/233991>`__ 3150 (issue `#364421706 <https://pwbug.dev/364421706>`__) 3151 3152pw_log_zephyr 3153------------- 3154* Use of shell ``printf`` macros within ``if`` blocks that don't use 3155 braces no longer causes compile errors. 3156 Commit: `Make shell printf macros safe for use in if/else blocks 3157 <https://pwrev.dev/232031>`__ 3158 3159pw_package 3160---------- 3161* ``picotool`` installation on macOS was fixed. 3162 Commit: `Fix pictotool install on mac 3163 <https://pwrev.dev/234238>`__ 3164 3165pw_random_fuchsia 3166----------------- 3167* :ref:`module-pw_random_fuchsia` provides an implementation of 3168 :cpp:class:`pw::random::RandomGenerator` that uses Zircon. 3169 Commit: `Create Fuchsia backend for pw_random 3170 <https://pwrev.dev/230895>`__ 3171 3172pw_rpc 3173------ 3174* New documentation (:ref:`module-pw_rpc-guides-raw-fallback`) was added that 3175 explains how to define a raw method within a non-raw service. 3176 Commit: `Provide examples of raw methods in docs 3177 <https://pwrev.dev/232877>`__ 3178* Many RPC-related classes were moved out of ``pw_hdlc`` and into 3179 ``pw_rpc`` or ``pw_stream``. 3180 Commit: `Relocate RPC classes from pw_hdlc 3181 <https://pwrev.dev/230172>`__ 3182 (issues `#330177657 <https://pwbug.dev/330177657>`__, 3183 `#360178854 <https://pwbug.dev/360178854>`__) 3184 3185pw_spi_mcuxpresso 3186----------------- 3187* The new ``pw::spi::FifoErrorCheck`` enum lets you configure whether 3188 ``pw::spi::McuxpressoResponder`` instances should log FIFO errors. 3189 Commit: `Add check_fifo_error to responder config 3190 <https://pwrev.dev/232215>`__ 3191 3192pw_stream_uart_linux 3193-------------------- 3194* The new :cpp:struct:`pw::stream::UartStreamLinux::Config` struct lets 3195 you configure baud rate and control flow. 3196 Commit: `Add Config struct 3197 <https://pwrev.dev/233591>`__ 3198 (issue `#331871421 <https://pwbug.dev/331871421>`__) 3199 3200pw_sync 3201------- 3202* :cpp:func:`pw::sync::InterruptSpinLock::try_lock` and similar functions 3203 have been annotated with ``[[nodiscard]]`` which means that ignoring 3204 their return values will result in compiler warnings. 3205 Commit: `[[nodiscard]] for try_lock() and similar functions 3206 <https://pwrev.dev/229311>`__ 3207 3208pw_system 3209--------- 3210* :ref:`module-pw_system` now supports Arm Cortex-M55 systems. 3211 Commit: `Support ARM Cortex M55 system 3212 <https://pwrev.dev/231632>`__ 3213 (issue `#361691368 <https://pwbug.dev/361691368>`__) 3214 3215pw_thread 3216--------- 3217* :cpp:class:`pw::thread::Options` has moved to its own header 3218 (``pw_thread/options.h``) to make it possible to work with the class 3219 without relying on the thread facade. 3220 Commit: `Move pw::thread::Options to its own header 3221 <https://pwrev.dev/232151>`__ 3222 3223pw_tokenizer 3224------------ 3225* In Python the detokenizer prefix is now set in the 3226 :py:class:`pw_tokenizer.detokenize.Detokenizer` constructor. 3227 Commit: `Set prefix in Detokenizer; fix typing issues 3228 <https://pwrev.dev/234311>`__ 3229 3230pw_toolchain 3231------------ 3232* Arm Cortex-M55 toolchain support was added. 3233 Commit: `Add ARM Cortex-M55 toolchain 3234 <https://pwrev.dev/231631>`__ 3235 (issue `#361691368 <https://pwbug.dev/361691368>`__) 3236 3237pw_uart_mcuxpresso 3238------------------ 3239* The new :ref:`module-pw_uart_mcuxpresso` module is a 3240 :ref:`module-pw_uart` backend for NXP MCUXpresso devices. 3241 Commit: `Introduce DMA UART backend for NXP devices 3242 <https://pwrev.dev/232831>`__ 3243 3244Docs 3245==== 3246* New documentation (:ref:`docs-pw-style-cpp-logging`) about logging best 3247 practices was added. 3248 Commit: `Add logging recommendations 3249 <https://pwrev.dev/210204>`__ 3250* The new :ref:`Bazel cloud features <showcase-sense-tutorial-bazel_cloud>` 3251 page in the Sense tutorial shows you how to use BuildBuddy 3252 to share logs and speed up builds with remote caching. 3253 Commit: `Add cloud build section to Sense tutorial 3254 <https://pwrev.dev/233751>`__ 3255 (issue `#363070027 <https://pwbug.dev/363070027>`__) 3256* :ref:`docs-contributing` now links to good first issues for people who 3257 want to contribute to upstream Pigweed. 3258 Commit: `Add link to good first issue list 3259 <https://pwrev.dev/233652>`__ 3260* ``pigweed.dev/live`` now links to the Pigweed Live meeting notes. 3261 Commit: `Add shortlink for Pigweed Live notes 3262 <https://pwrev.dev/232032>`__ 3263 3264Targets 3265======= 3266 3267RP2350 3268------ 3269* RP2350 crash snapshots now show the correct architecture. 3270 Commit: `Fix architecture in crash snapshot 3271 <https://pwrev.dev/232231>`__ 3272 (issue `#362506213 <https://pwbug.dev/362506213>`__) 3273 3274------------ 3275Aug 23, 2024 3276------------ 3277.. _Google Pigweed comes to our new RP2350: https://www.raspberrypi.com/news/google-pigweed-comes-to-our-new-rp2350/ 3278 3279Highlights (Aug 8, 2024 to Aug 23, 2024): 3280 3281* **RP2350 Support**: Pigweed now supports the new Raspberry Pi RP2350 MCU. 3282 Check out `Google Pigweed comes to our new RP2350`_ on the Raspberry Pi 3283 blog for the full story and :ref:`showcase-sense` to try it out. 3284 3285Build systems 3286============= 3287 3288Bazel 3289----- 3290* `Add missing counting_semaphore and thread_yield backends 3291 <https://pwrev.dev/228392>`__ 3292 3293Modules 3294======= 3295 3296pw_allocator 3297------------ 3298* `Disable example spin_lock test on RP2 3299 <https://pwrev.dev/231251>`__ 3300 (issues `#358411629 <https://pwbug.dev/358411629>`__, 3301 `#361354335 <https://pwbug.dev/361354335>`__) 3302 3303pw_async2 3304--------- 3305The new ``pw::async2::MakeOnceSenderAndReceiver()`` function template makes it 3306easier to simultaneously create a sender and receiver for asynchronously 3307sending values. The new ``pw::async2::MakeOnceSenderAndReceiver()`` function 3308template works similarly but is used for references. 3309 3310* `Create OnceSender & OnceReceiver 3311 <https://pwrev.dev/226231>`__ 3312 (issue `#350994818 <https://pwbug.dev/350994818>`__) 3313* `Remove accidental macro #undef 3314 <https://pwrev.dev/229275>`__ 3315 3316pw_bloat 3317-------- 3318The ``pw bloat`` CLI command now supports a ``--custom-config`` option to 3319specify a custom Bloaty config file so that non-memory regions can be 3320analyzed. 3321 3322* `Support custom bloaty configs in CLI command 3323 <https://pwrev.dev/216133>`__ 3324 3325pw_bluetooth 3326------------ 3327* `Create more emboss event definitions 3328 <https://pwrev.dev/231091>`__ 3329 (issue `#42167863 <https://pwbug.dev/42167863>`__) 3330* `Add create connection cancel return 3331 <https://pwrev.dev/230251>`__ 3332 (issue `#42167863 <https://pwbug.dev/42167863>`__) 3333* `Add LEReadSupportedStates emboss event 3334 <https://pwrev.dev/228961>`__ 3335* `Add HCI Command OpCode definitions 3336 <https://pwrev.dev/228672>`__ 3337* `Add more emboss definitions 3338 <https://pwrev.dev/228671>`__ 3339 (issue `#42167863 <https://pwbug.dev/42167863>`__) 3340* `Make SupportedCommands emboss struct more ergonomic 3341 <https://pwrev.dev/228155>`__ 3342 3343pw_bluetooth_proxy 3344------------------ 3345* `Release H4 buff on error 3346 <https://pwrev.dev/229011>`__ 3347 3348pw_bluetooth_sapphire 3349--------------------- 3350* `Add common bt-host clang warnings 3351 <https://pwrev.dev/228651>`__ 3352 (issue `#345799180 <https://pwbug.dev/345799180>`__) 3353* `Add new emboss compiler file ir_data_fields.py 3354 <https://pwrev.dev/228655>`__ 3355 (issue `#358665524 <https://pwbug.dev/358665524>`__, 3356 `#335724776 <https://pwbug.dev/335724776>`__) 3357 3358pw_build 3359-------- 3360The new ``glob_dirs()`` Starlark helper returns a list of directories matching 3361the provided glob pattern. The new ``match_dir()`` Starlark helper returns a 3362single directory that matches the provided glob pattern and fails if there's 3363more than one match. 3364 3365* `Add mod proc_macro to rust macro targets 3366 <https://pwrev.dev/230013>`__ 3367* `Remove output_name attr in rust_library 3368 <https://pwrev.dev/230012>`__ 3369* `Make pw_load_phase_test host only 3370 <https://pwrev.dev/230072>`__ 3371* `Add glob_dirs() Starlark helper 3372 <https://pwrev.dev/228956>`__ 3373 3374pw_channel 3375---------- 3376* `Ensure that stream_channel_test resources live forever 3377 <https://pwrev.dev/228154>`__ 3378 (issue `#358078118 <https://pwbug.dev/358078118>`__) 3379 3380pw_cpu_exception_cortex_m 3381------------------------- 3382* `Fix cpu exception handler on armv8m 3383 <https://pwrev.dev/231372>`__ 3384 (issue `#323215726 <https://pwbug.dev/323215726>`__) 3385 3386pw_display 3387---------- 3388The new :ref:`module-pw_display` experimental module provides graphic display 3389support and framebuffer management. 3390 3391* `Color library 3392 <https://pwrev.dev/229606>`__ 3393 (issue `#359953386 <https://pwbug.dev/359953386>`__) 3394* `Create module directory 3395 <https://pwrev.dev/229712>`__ 3396 3397pw_env_setup 3398------------ 3399* `Get bazelisk instead of bazel 3400 <https://pwrev.dev/226376>`__ 3401 (issue `#355438774 <https://pwbug.dev/355438774>`__) 3402 3403pw_grpc 3404------- 3405When a frame with a payload has a stream-reset error, the payload is now skipped. 3406 3407* `Improve logging when receiving unknown RPC 3408 <https://pwrev.dev/231011>`__ 3409* `Skip HTTP2 frame payload for frames that result in stream reset 3410 <https://pwrev.dev/230951>`__ 3411 3412pw_i2c_rp2040 3413------------- 3414The ``clock_frequency`` field in ``pw::i2c::Rp2040Initiator::Config`` has been 3415renamed to ``clock_frequency_hz``. 3416 3417* `Include label in clock_frequency 3418 <https://pwrev.dev/221412>`__ 3419 3420pw_ide 3421------ 3422``pw_ide`` now searches all parent directories for the presence of a 3423``pigweed.json`` file to determine the root directory. The workspace 3424root can be programmatically configured via the new 3425``pw_ide.settings.PigweedIdeSettings.workspace_root`` property. The 3426``pigweed.activateBazeliskInNewTerminals`` option in VS Code now defaults 3427to ``false``. 3428 3429* `Fix .pw_ide.yaml paths 3430 <https://pwrev.dev/230991>`__ 3431* `Support different workspace root 3432 <https://pwrev.dev/217220>`__ 3433* `Disable Bazelisk auto-activation by default 3434 <https://pwrev.dev/228493>`__ 3435 (issue `#358384211 <https://pwbug.dev/358384211>`__) 3436 3437pw_kvs 3438------ 3439References to ``pw::kvs::Key`` must be replaced with ``std::string_view``. 3440 3441* `Remove unnecessary Key alias and test 3442 <https://pwrev.dev/229976>`__ 3443* `Pass EntryHeader by const reference 3444 <https://pwrev.dev/229727>`__ 3445 (issue `#254601862 <https://pwbug.dev/254601862>`__) 3446* `Move inline variable definition to .cc file 3447 <https://pwrev.dev/228514>`__ 3448 (issue `#357162923 <https://pwbug.dev/357162923>`__) 3449 3450pw_module 3451--------- 3452* `Fix OWNERS file parsing 3453 <https://pwrev.dev/226177>`__ 3454 3455pw_multibuf 3456----------- 3457The ``pw::multibuf::MultiBuf::Chunks()`` method and 3458``pw::multibuf::MultiBuf::ChunkIterable`` class have been removed; use the 3459new ``pw::multibuf::MultiBufChunks`` class instead. 3460 3461* `Restructure ChunkIterable 3462 <https://pwrev.dev/230892>`__ 3463* `Comment updates for consistency 3464 <https://pwrev.dev/230891>`__ 3465 3466pw_package 3467---------- 3468* `Use bazel to build picotool package 3469 <https://pwrev.dev/229431>`__ 3470 3471pw_preprocessor 3472--------------- 3473The new ``PW_MODIFY_DIAGNOSTIC_CLANG`` define lets you handle Clang-only 3474warnings separately from other compilers. 3475 3476* `Test GCC/Clang diagnostic modification macros 3477 <https://pwrev.dev/231336>`__ 3478* `Introduce PW_MODIFY_DIAGNOSTIC_CLANG 3479 <https://pwrev.dev/231332>`__ 3480 (issue `#356935569 <https://pwbug.dev/356935569>`__) 3481* `Expand comment for PW_PACKED 3482 <https://pwrev.dev/226994>`__ 3483 3484pw_rpc 3485------ 3486Java client: The new ``PacketByteFactory`` Java class is a helper for creating 3487request and response packets during testing. 3488 3489Python client: The ``pw_rpc.console_tools.watchdog.Watchdog`` Python class has a 3490new ``stop()`` method to stop the watchdog. The 3491``pw_rpc.callback_client.call.Call`` Python class now accepts a 3492``max_responses`` argument that lets you limit how many responses should be 3493received after a streaming RPC call. The ``ignore_errors``, 3494``cancel_duplicate_calls``, and ``override_pending_options`` arguments 3495previously available in some Python client methods have been removed. 3496 3497TypeScript client: The ``invoke()`` method in the TypeScript client now accepts 3498a ``maxResponses`` argument which lets you limit how many responses to a 3499streaming RPC call should be stored. 3500 3501* `Avoid recompiling protos for every test 3502 <https://pwrev.dev/230135>`__ 3503 (issue `#360184800 <https://pwbug.dev/360184800>`__) 3504* `Fix typing in unaryWait return value in TS client 3505 <https://pwrev.dev/231071>`__ 3506* `Create PacketByteFactory 3507 <https://pwrev.dev/230011>`__ 3508 (issue `#360174359 <https://pwbug.dev/360174359>`__) 3509* `Add stop method to Watchdog 3510 <https://pwrev.dev/230692>`__ 3511 (issue `#350822543 <https://pwbug.dev/350822543>`__) 3512* `Limit maximum stored responses in TypeScript client 3513 <https://pwrev.dev/229975>`__ 3514* `Add missing Bazel test rules 3515 <https://pwrev.dev/230691>`__ 3516* `Restore RpcIds for testing; move packet encoding to packets.py 3517 <https://pwrev.dev/230471>`__ 3518* `Limit maximum stored responses in Python client 3519 <https://pwrev.dev/229974>`__ 3520 (issue `#262749163 <https://pwbug.dev/262749163>`__) 3521* `Remove deprecated / obsolete features 3522 <https://pwrev.dev/229908>`__ 3523* `Fix open in callback_client 3524 <https://pwrev.dev/169174>`__ 3525 (issue `#309159260 <https://pwbug.dev/309159260>`__) 3526* `Merge PendingRpc and RpcIds 3527 <https://pwrev.dev/228952>`__ 3528* `Require an output function for channels 3529 <https://pwrev.dev/227855>`__ 3530 3531pw_spi_linux 3532------------ 3533* `Remove linkage specification from cli main 3534 <https://pwrev.dev/230291>`__ 3535 3536pw_status 3537--------- 3538The ``StatusWithSize::size_or()`` method has been removed. 3539 3540* `Convert StatusWithSize to Doxygen 3541 <https://pwrev.dev/229980>`__ 3542* `Remove StatusWithSize::size_or() 3543 <https://pwrev.dev/229979>`__ 3544 3545pw_stream 3546--------- 3547* `Disable mpsc_stream_test for Pi Pico 3548 <https://pwrev.dev/231212>`__ 3549 (issue `#361369435 <https://pwbug.dev/361369435>`__) 3550 3551pw_system 3552--------- 3553The ``pw_system.device.Device`` class constructor now accepts an ``Iterable`` 3554of proto libraries rather than a ``list``. 3555 3556* `Add type annotation to pw_system.device.Device() write arg 3557 <https://pwrev.dev/229653>`__ 3558* `Update Device ctor to take Iterable of proto libraries 3559 <https://pwrev.dev/229811>`__ 3560 3561pw_thread 3562--------- 3563* `Disable test_thread_context_facade_test on Pi Pico 3564 <https://pwrev.dev/231291>`__ 3565 (issue `#361369192 <https://pwbug.dev/361369192>`__) 3566 3567pw_tokenizer 3568------------ 3569* `Remove unsupported C++11 and C++14 code 3570 <https://pwrev.dev/222432>`__ 3571 3572pw_trace_tokenized 3573------------------ 3574* `Fix TokenizedTracer initialization 3575 <https://pwrev.dev/230314>`__ 3576 (issue `#357835484 <https://pwbug.dev/357835484>`__) 3577 3578pw_transfer 3579----------- 3580Transfer handler registration and unregistration functions now return a boolean 3581indicating success or failure. The C++ client now always includes a protocol 3582version in the final chunk. 3583 3584* `Add return values to handler registrations 3585 <https://pwrev.dev/230912>`__ 3586* `Always set protocol version in final chunk 3587 <https://pwrev.dev/229289>`__ 3588 3589pw_unit_test 3590------------ 3591* `Delete unsupported C++14 compatibility code 3592 <https://pwrev.dev/229972>`__ 3593* `Fix multi-line test macros 3594 <https://pwrev.dev/229314>`__ 3595 3596Docs 3597==== 3598* `Require unit tests to be in unnamed namespace 3599 <https://pwrev.dev/231211>`__ 3600* `Add structured data to Kudzu blog post 3601 <https://pwrev.dev/230647>`__ 3602 (issue `#360924425 <https://pwbug.dev/360924425>`__) 3603* `Fix Pigweed Live CTA link 3604 <https://pwrev.dev/230693>`__ 3605 (issue `#357957451 <https://pwbug.dev/357957451>`__) 3606* `Replace 'bazel' with 'bazelisk' 3607 <https://pwrev.dev/226377>`__ 3608* `Update Sense flashing instructions 3609 <https://pwrev.dev/229608>`__ 3610* `Update RP2 family udev rules 3611 <https://pwrev.dev/228513>`__ 3612 (issue `#355291899 <https://pwbug.dev/355291899>`__) 3613* `Update "Who's using Pigweed" section 3614 <https://pwrev.dev/228494>`__ 3615* `Update Bazel quickstart mentions 3616 <https://pwrev.dev/228531>`__ 3617* `Launch Sense 3618 <https://pwrev.dev/228431>`__ 3619 3620Targets 3621======= 3622 3623rp2350 3624------ 3625Pigweed now supports the new Raspberry Pi RP2350 MCU. 3626 3627* `Add support for RP2350 3628 <https://pwrev.dev/228326>`__ 3629 (issue `#354942782 <https://pwbug.dev/354942782>`__) 3630 3631rp2040 3632------ 3633* `Reset tty flags after successful flash on posix 3634 <https://pwrev.dev/229721>`__ 3635* `Remove references to b/261603269 3636 <https://pwrev.dev/229397>`__ 3637* `Add -fexceptions for the rp2040 PIO assembler 3638 <https://pwrev.dev/229531>`__ 3639* `Get Pico SDK and Picotool from BCR 3640 <https://pwrev.dev/228327>`__ 3641 3642Third-party software 3643==================== 3644 3645Emboss 3646------ 3647* `Remove -Wdeprecated-copy from public_config 3648 <https://pwrev.dev/228563>`__ 3649 (issue `#345526399 <https://pwbug.dev/345526399>`__) 3650* `Update emboss to v2024.0809.170004 3651 <https://pwrev.dev/228562>`__ 3652 (issue `#345526399 <https://pwbug.dev/345526399>`__) 3653 3654Fuchsia 3655------- 3656* `Update patch to ignore warnings in result.h 3657 <https://pwrev.dev/231253>`__ 3658* `Copybara import 3659 <https://pwrev.dev/231293>`__ 3660 3661Rolls 3662----- 3663* `fuchsia_infra: [roll] Roll fuchsia-infra-bazel-rules-bazel_sdk-ci 3664 <https://pwrev.dev/230635>`__ 3665* `fuchsia_infra 54 commits 3666 <https://pwrev.dev/230634>`__ 3667* `go 3668 <https://pwrev.dev/230631>`__ 3669* `rust 3670 <https://pwrev.dev/230472>`__ 3671* `go 3672 <https://pwrev.dev/228811>`__ 3673* `gn 3674 <https://pwrev.dev/228731>`__ 3675* `fuchsia_infra 27 commits 3676 <https://pwrev.dev/228712>`__ 3677* `rust 3678 <https://pwrev.dev/228566>`__ 3679 3680Miscellaneous 3681============= 3682* `Change typedef to using 3683 <https://pwrev.dev/230351>`__ 3684* `Handle ignored status comments 3685 <https://pwrev.dev/229652>`__ 3686 (issues `#357136096 <https://pwbug.dev/357136096>`__, 3687 `#357139112 <https://pwbug.dev/357139112>`__) 3688 3689Owners 3690------ 3691* `Add davidroth@ 3692 <https://pwrev.dev/230071>`__ 3693 3694----------- 3695Aug 7, 2024 3696----------- 3697Highlights (Jul 26, 2024 to Aug 7, 2024): 3698 3699* **Tour of Pigweed**: The new :ref:`Tour of Pigweed <showcase-sense>` 3700 is a hands-on, guided walkthrough of many key Pigweed features working 3701 together in a medium-complexity application. 3702* **Easier pw_digital_io testing**: The new 3703 ``pw::digital_io::DigitalInOutMock`` class is a mock implementation of 3704 ``pw:digital_io::DigitalInOut`` that can be used for testing. 3705* **Code intelligence in VS Code**: The new 3706 :ref:`module-pw_ide-guide-vscode-code-intelligence` document provides 3707 guides on using the code intelligence features of the ``pw_ide`` 3708 extension for VS Code. 3709 3710Build systems 3711============= 3712 3713Bazel 3714----- 3715* `Get picotool from the BCR 3716 <https://pwrev.dev/227838>`__ 3717 (issue `#354270165 <https://pwbug.dev/354270165>`__) 3718* `Manage pw_ide deps via bzlmod 3719 <https://pwrev.dev/226733>`__ 3720 (issue `#258836641 <https://pwbug.dev/258836641>`__) 3721* `Manage Java deps through bzlmod 3722 <https://pwrev.dev/226481>`__ 3723 (issue `#258836641 <https://pwbug.dev/258836641>`__) 3724* `Provide symlink to clangd at root 3725 <https://pwrev.dev/226451>`__ 3726 (issue `#355655415 <https://pwbug.dev/355655415>`__) 3727* `Partial revert of http://pwrev.dev/226007 3728 <https://pwrev.dev/226271>`__ 3729 (issue `#352389854 <https://pwbug.dev/352389854>`__) 3730 3731Modules 3732======= 3733 3734pw_allocator 3735------------ 3736* `Fix bucketed block corruption 3737 <https://pwrev.dev/227604>`__ 3738 (issue `#345526413 <https://pwbug.dev/345526413>`__) 3739* `Add missing include 3740 <https://pwrev.dev/227174>`__ 3741 (issue `#356667663 <https://pwbug.dev/356667663>`__) 3742 3743pw_bluetooth 3744------------ 3745``ReadLocalSupportedCommandsCommandCompleteEvent`` now provides both a raw bytes 3746field (``supported_commands_bytes``) and a sub-struct (``supported_commands``) 3747for easier access to command bits. You can use either ``SupportedCommandsOctet`` 3748or ``SupportedCommands`` to parse a saved ``uint8_t[64]``. 3749 3750* `Improve ergonomics of emboss SupportedCommands 3751 <https://pwrev.dev/227931>`__ 3752* `Add more emboss definitions 3753 <https://pwrev.dev/227951>`__ 3754 (issue `#42167863 <https://pwbug.dev/42167863>`__) 3755 3756pw_bluetooth_proxy 3757------------------ 3758* `Release active connections once zero 3759 <https://pwrev.dev/226400>`__ 3760* `Only log disconnect events for active connections 3761 <https://pwrev.dev/226393>`__ 3762 3763pw_bluetooth_sapphire 3764--------------------- 3765* `Handle switch warning with pigweed 3766 <https://pwrev.dev/227044>`__ 3767 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3768* `Handle switch warning with pigweed 3769 <https://pwrev.dev/227043>`__ 3770 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3771* `Handle switch warning with pigweed 3772 <https://pwrev.dev/227025>`__ 3773 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3774* `Write Variable PIN Type for Legacy Pairing 3775 <https://pwrev.dev/227042>`__ 3776 (issues `#42173830 <https://pwbug.dev/42173830>`__, 3777 `# b/342151162 <https://pwbug.dev/ b/342151162>`__) 3778* `Add LegacyPairingState to BrEdrConnectionRequest 3779 <https://pwrev.dev/227041>`__ 3780 (issue `#42173830 <https://pwbug.dev/42173830>`__) 3781* `Create and implement LegacyPairingState class 3782 <https://pwrev.dev/227023>`__ 3783 (issues `#342150626 <https://pwbug.dev/342150626>`__, 3784 `#42173830 <https://pwbug.dev/42173830>`__) 3785* `Handle switch warning with pigweed 3786 <https://pwrev.dev/227040>`__ 3787 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3788* `Handle switch warning with pigweed 3789 <https://pwrev.dev/227039>`__ 3790 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3791* `Translate information & additional attributes 3792 <https://pwrev.dev/227038>`__ 3793 (issue `#327758656 <https://pwbug.dev/327758656>`__) 3794* `Return registered services after bredr.Advertise 3795 <https://pwrev.dev/227022>`__ 3796 (issue `#327758656 <https://pwbug.dev/327758656>`__) 3797* `Handle switch enum warning with pigweed 3798 <https://pwrev.dev/227037>`__ 3799 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3800* `Handle switch warning with pigweed 3801 <https://pwrev.dev/227021>`__ 3802 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3803* `Fix shadow variable warnings 3804 <https://pwrev.dev/227036>`__ 3805 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3806* `Add panic to EventTypeToString 3807 <https://pwrev.dev/227035>`__ 3808 (issue `#356388419 <https://pwbug.dev/356388419>`__) 3809* `Switch over to pw::utf8 3810 <https://pwrev.dev/227020>`__ 3811 (issue `#337305285 <https://pwbug.dev/337305285>`__) 3812* `Remove unnecessary cast qual pragma 3813 <https://pwrev.dev/227034>`__ 3814 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3815* `Fix statement expression extension warnings 3816 <https://pwrev.dev/227033>`__ 3817 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3818* `Fix variadic macro warnings 3819 <https://pwrev.dev/227019>`__ 3820 (issue `#355511476 <https://pwbug.dev/355511476>`__) 3821* `Add SetupDataPath FIDL handler 3822 <https://pwrev.dev/227018>`__ 3823 (issue `#311639690 <https://pwbug.dev/311639690>`__) 3824* `Create abstract base for IsoStream 3825 <https://pwrev.dev/227017>`__ 3826* `Remove CommandPacketVariant 3827 <https://pwrev.dev/227032>`__ 3828 (issue `#42167863 <https://pwbug.dev/42167863>`__) 3829* `Use emboss for setting ACL priority 3830 <https://pwrev.dev/227031>`__ 3831 (issue `#42167863 <https://pwbug.dev/42167863>`__) 3832* `Add test for A2DP offloading 3833 <https://pwrev.dev/227014>`__ 3834 (issue `#330921787 <https://pwbug.dev/330921787>`__) 3835* `Explicitly move WeakRef in GetWeakPtr 3836 <https://pwrev.dev/227013>`__ 3837 (issue `#354026910 <https://pwbug.dev/354026910>`__) 3838* `Clean up some type sizes 3839 <https://pwrev.dev/227012>`__ 3840 (issue `#354057871 <https://pwbug.dev/354057871>`__) 3841* `Use emboss for LELongTermKeyRequestReply 3842 <https://pwrev.dev/227011>`__ 3843 (issue `#42167863 <https://pwbug.dev/42167863>`__) 3844* `Remove manufacturer list 3845 <https://pwrev.dev/226472>`__ 3846 3847pw_build 3848-------- 3849* `Fix configs in pw_rust_executable 3850 <https://pwrev.dev/212171>`__ 3851 (issue `#343111481 <https://pwbug.dev/343111481>`__) 3852* `Auto disable project builder progress bars 3853 <https://pwrev.dev/226379>`__ 3854 3855pw_chrono_stl 3856------------- 3857System clock and timer interfaces have been moved to separate directories so 3858that you can pick up the backend of one of these without bringing in the other. 3859This makes it possible to use a custom system timer with the STL system clock, 3860for example. 3861 3862* `Move system clock and timer into separate directories 3863 <https://pwrev.dev/225992>`__ 3864 3865pw_clock_tree_mcuxpresso 3866------------------------ 3867The new ``pw::clock_tree::ClockMcuxpressoClockIp`` class lets you manage 3868``clock_ip_name_t`` clocks with the clock tree to save power when 3869``FSL_SDK_DISABLE_DRIVE_CLOCK_CONTROL`` is set. 3870 3871* `Introduce ClockMcuxpressoClockIp 3872 <https://pwrev.dev/226069>`__ 3873 (issue `#355486338 <https://pwbug.dev/355486338>`__) 3874 3875pw_console 3876---------- 3877* `Additional UI and code themes 3878 <https://pwrev.dev/226720>`__ 3879* `Bump version of console js, add titles to log panes 3880 <https://pwrev.dev/226831>`__ 3881 3882pw_digital_io 3883------------- 3884The new ``pw::digital_io::DigitalInOutMock`` class is a mock implementation 3885of ``pw:digital_io::DigitalInOut`` that can be used for testing. 3886 3887* `Add Mock 3888 <https://pwrev.dev/227836>`__ 3889 3890pw_digital_io_linux 3891------------------- 3892The default ``pw_log`` logging level changed from ``DEBUG`` to ``INFO``. 3893 3894* `Set log level to INFO 3895 <https://pwrev.dev/225912>`__ 3896 3897pw_digital_io_rp2040 3898-------------------- 3899* `Don't discard status returns 3900 <https://pwrev.dev/227712>`__ 3901 (issue `#357090965 <https://pwbug.dev/357090965>`__) 3902 3903pw_env_setup 3904------------ 3905* `Update rust thumbv7m target 3906 <https://pwrev.dev/226951>`__ 3907* `Add rustc thumbv7m target 3908 <https://pwrev.dev/211991>`__ 3909 (issue `#343111481 <https://pwbug.dev/343111481>`__) 3910 3911pw_hex_dump 3912----------- 3913* `Add rule for pw_hex_dump/log_bytes.h 3914 <https://pwrev.dev/227651>`__ 3915 (issue `#357595992 <https://pwbug.dev/357595992>`__) 3916 3917pw_ide 3918------ 3919The Pigweed extension for VS Code will now immediately update the code analysis 3920target if the ``pigweed.codeAnalysisTarget`` setting in ``settings.json`` is 3921changed. The new ``pigweed.activateBazeliskInNewTerminals`` setting lets you 3922specify whether the path to Bazelisk should be added when a VS Code terminal is 3923launched. The new :ref:`module-pw_ide-guide-vscode-code-intelligence` document 3924provides guides on using the VS Code extension's code intelligence features. 3925 3926* `VSC extension 1.3.2 release 3927 <https://pwrev.dev/225391>`__ 3928* `Show progress bar on manual refreshes 3929 <https://pwrev.dev/227731>`__ 3930* `Detect manual target change in settings 3931 <https://pwrev.dev/227606>`__ 3932* `Much faster VSC config parsing 3933 <https://pwrev.dev/227605>`__ 3934* `Automatically activate Bazelisk in new terminals 3935 <https://pwrev.dev/226382>`__ 3936* `Use stable clangd path 3937 <https://pwrev.dev/226431>`__ 3938 (issue `#355655415 <https://pwbug.dev/355655415>`__) 3939* `Add inactive source file decoration 3940 <https://pwrev.dev/225733>`__ 3941* `VSC extension refactoring 3942 <https://pwrev.dev/226059>`__ 3943 3944pw_multibuf 3945----------- 3946* `Add missing includes 3947 <https://pwrev.dev/227331>`__ 3948 (issue `#356667663 <https://pwbug.dev/356667663>`__) 3949 3950pw_multisink 3951------------ 3952The new ``pw::multisink::Drain::GetUnreadEntriesCount()`` method is a 3953thread-safe way to return the number of unread entries in a drain's sink. 3954 3955* `Interface to read entries count 3956 <https://pwrev.dev/226351>`__ 3957 (issue `#355104976 <https://pwbug.dev/355104976>`__) 3958 3959pw_presubmit 3960------------ 3961* `Fix incl-lang when not at repo root 3962 <https://pwrev.dev/227185>`__ 3963* `Remove misc program 3964 <https://pwrev.dev/226995>`__ 3965 (issue `#356888002 <https://pwbug.dev/356888002>`__) 3966* `Rename "misc" program to "sapphire" 3967 <https://pwrev.dev/226993>`__ 3968 (issue `#356888002 <https://pwbug.dev/356888002>`__) 3969* `Add new presubmit steps 3970 <https://pwrev.dev/226712>`__ 3971 (issue `#356619766 <https://pwbug.dev/356619766>`__) 3972* `Allow fxbug.dev and crbug.com TODOs 3973 <https://pwrev.dev/226474>`__ 3974* `Expose name of Bazel executable 3975 <https://pwrev.dev/226378>`__ 3976 (issue `#355438774 <https://pwbug.dev/355438774>`__) 3977 3978pw_router 3979--------- 3980* `Add missing includes 3981 <https://pwrev.dev/227331>`__ 3982 (issue `#356667663 <https://pwbug.dev/356667663>`__) 3983 3984pw_rpc 3985------ 3986* `Fix TypeScript client streaming return type 3987 <https://pwrev.dev/226717>`__ 3988* `Add yield mode constraint_setting 3989 <https://pwrev.dev/226551>`__ 3990 (issue `#345199579 <https://pwbug.dev/345199579>`__) 3991 3992pw_rust 3993------- 3994The new ``pw_rust_USE_STD`` toolchain configuration option lets you control 3995whether the "std" feature should be used when building executables. 3996 3997* `Add no_std build to basic_executable 3998 <https://pwrev.dev/211993>`__ 3999 (issue `#343111481 <https://pwbug.dev/343111481>`__) 4000* `Rename host_executable 4001 <https://pwrev.dev/211992>`__ 4002 (issue `#343111481 <https://pwbug.dev/343111481>`__) 4003 4004pw_spi_mcuxpresso 4005----------------- 4006* `Add SPI_RxError() and SPI_TxError() 4007 <https://pwrev.dev/226992>`__ 4008 4009pw_status 4010--------- 4011``PW_STATUS_CFG_CHECK_IF_USED`` now defaults to ``true`` in Bazel projects, 4012meaning that ``pw::Status`` objects returned from function calls must be used or 4013else a compilation error is raised. See :ref:`module-pw_status-reference-unused`. 4014 4015* `In Bazel, make Status nodiscard 4016 <https://pwrev.dev/227411>`__ 4017 (issue `#357090965 <https://pwbug.dev/357090965>`__) 4018* `Don't silently discard status returns 4019 <https://pwrev.dev/227277>`__ 4020 (issue `#357090965 <https://pwbug.dev/357090965>`__) 4021 4022pw_symbolizer 4023------------- 4024* `Add missing runfiles dep 4025 <https://pwrev.dev/226719>`__ 4026 (issue `#355527449 <https://pwbug.dev/355527449>`__) 4027* `Get llvm-symbolizer path from Bazel 4028 <https://pwrev.dev/226254>`__ 4029 (issue `#355527449 <https://pwbug.dev/355527449>`__) 4030 4031pw_system 4032--------- 4033The ``pw_system`` console now lets you control host log and device log levels 4034separately via the new ``--host-log-level`` and ``--device-log-level`` 4035arguments. The new ``echo()``, ``reboot()``, and ``crash()`` methods of 4036``pw_system.device.Device`` make it easier to access these common 4037operations. Crash snapshots are now saved to ``/tmp`` (``C:\\TEMP`` on Windows) 4038by default. Crash detection logs are now printed across multiple lines to make 4039them easier to spot. 4040 4041* `Separate host and device console log levels 4042 <https://pwrev.dev/227599>`__ 4043* `Don't use implementation_deps 4044 <https://pwrev.dev/226977>`__ 4045 (issues `#304374970 <https://pwbug.dev/304374970>`__, 4046 `#356667663 <https://pwbug.dev/356667663>`__) 4047* `Add console device aliases for common RPCs 4048 <https://pwrev.dev/226476>`__ 4049* `Save snapshots to /tmp 4050 <https://pwrev.dev/226392>`__ 4051* `Make crash detection logs louder 4052 <https://pwrev.dev/226373>`__ 4053 4054pw_tokenizer 4055------------ 4056* `decode_optionally_tokenized without a Detokenizer 4057 <https://pwrev.dev/226727>`__ 4058 4059pw_toolchain 4060------------ 4061* `Clang support for Arm Cortex-M33 4062 <https://pwrev.dev/228391>`__ 4063 (issue `#358108912 <https://pwbug.dev/358108912>`__) 4064* `Register Cortex-M7 toolchain 4065 <https://pwrev.dev/227598>`__ 4066* `Use \`crate_name\` for GN rust targets 4067 <https://pwrev.dev/223391>`__ 4068* `proc_macro GN cross compile 4069 <https://pwrev.dev/215011>`__ 4070* `Rustc cross compile to qemu-clang 4071 <https://pwrev.dev/211994>`__ 4072 (issue `#343111481 <https://pwbug.dev/343111481>`__) 4073* `Expose a symlink to clangd 4074 <https://pwrev.dev/226262>`__ 4075 (issue `#355655415 <https://pwbug.dev/355655415>`__) 4076 4077pw_transfer 4078----------- 4079* `Add a delay after opening a stream to delay transfer start 4080 <https://pwrev.dev/225734>`__ 4081 (issue `#355249134 <https://pwbug.dev/355249134>`__) 4082* `Use initial timeout when resending start chunks 4083 <https://pwrev.dev/226452>`__ 4084 4085pw_web 4086------ 4087The log viewer now defaults to using line wrapping in table cells. The new 4088``logViews`` property makes it easier to customize each individual log view. 4089The ``severity`` field for controlling what types of logs to display has 4090been renamed to ``level``. 4091 4092* `Add resize handler to message col 4093 <https://pwrev.dev/221433>`__ 4094 (issue `#351901512 <https://pwbug.dev/351901512>`__) 4095* `Change word-wrap to default true and save to state 4096 <https://pwrev.dev/226730>`__ 4097 (issue `#354283022 <https://pwbug.dev/354283022>`__) 4098* `NPM version bump to 0.0.22 4099 <https://pwrev.dev/226726>`__ 4100* `Show REPL message at every run 4101 <https://pwrev.dev/226872>`__ 4102* `NPM version bump to 0.0.21 4103 <https://pwrev.dev/226713>`__ 4104* `Enable custom titles, log-view access 4105 <https://pwrev.dev/226771>`__ 4106 (issue `#355272099 <https://pwbug.dev/355272099>`__) 4107* `Change severity to level 4108 <https://pwrev.dev/225573>`__ 4109 (issue `#354282161 <https://pwbug.dev/354282161>`__) 4110* `Replace column menu with MWC components 4111 <https://pwrev.dev/226151>`__ 4112 (issues `#354712931 <https://pwbug.dev/354712931>`__, 4113 `#342452087 <https://pwbug.dev/342452087>`__) 4114 4115Docs 4116==== 4117The new :ref:`Tour of Pigweed <showcase-sense>` is a hands-on, guided 4118walkthrough of many key Pigweed features working together in a medium-complexity 4119application. 4120 4121* `Start Sense tutorial 4122 <https://pwrev.dev/220311>`__ 4123* `Fix some bad links in the changelog 4124 <https://pwrev.dev/226811>`__ 4125* `Update changelog 4126 <https://pwrev.dev/226251>`__ 4127 4128Rolls 4129===== 4130* `gn 4131 <https://pwrev.dev/227612>`__ 4132* `fuchsia_infra 119 commits 4133 <https://pwrev.dev/227476>`__ 4134* `cmake 4135 <https://pwrev.dev/227289>`__ 4136* `rust 4137 <https://pwrev.dev/227287>`__ 4138* `Clang 4139 <https://pwrev.dev/226725>`__ 4140 (issue `#356689444 <https://pwbug.dev/356689444>`__) 4141* `bazel_skylib 4142 <https://pwrev.dev/226979>`__ 4143* `rust 4144 <https://pwrev.dev/226257>`__ 4145 4146Third-party software 4147==================== 4148 4149Emboss 4150------ 4151* `Append public_deps in GN template 4152 <https://pwrev.dev/227062>`__ 4153 4154ICU 4155--- 4156* `Remove ICU 4157 <https://pwrev.dev/228234>`__ 4158 4159STM32Cube 4160--------- 4161* `bzlmod-friendly changes 4162 <https://pwrev.dev/226479>`__ 4163 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4164 4165Miscellaneous 4166------------- 4167* `Run 'pw format --fix' 4168 <https://pwrev.dev/227186>`__ 4169 4170------------ 4171Jul 25, 2024 4172------------ 4173Highlights (Jul 12, 2024 to Jul 25, 2024): 4174 4175* **Extensive Bazel support in the Pigweed extension for VS Code**: 4176 See :ref:`docs-changelog-20240725-pw_ide` for the full story. 4177* **Bazel module support**: Upstream Pigweed is now usable as a `Bazel 4178 module <https://bazel.build/external/module>`_ dependency. 4179* **Trapping backend for pw_assert**: :ref:`module-pw_assert_trap` is a 4180 new backend for :ref:`module-pw_assert` that calls ``__builtin_trap()`` 4181 when an assert is triggered. 4182* **Crash handling in async pw_system**: Crash snapshots can be downloaded 4183 from ``pw_console`` by calling ``device.get_crash_snapshots()`` in the 4184 REPL. 4185 4186Build systems 4187============= 4188 4189Bazel 4190----- 4191Toolchain registration moved from ``WORKSPACE`` to ``MODULE.bazel``, making 4192it possible for downstream projects to use upstream Pigweed's toolchains 4193directly. Pigweed is now usable as a Bazel module dependency. Pigweed now 4194provides an example ``.bazelrc`` at ``//pw_build/pigweed.bazelrc`` that 4195downstream users can copy into their own projects. 4196 4197* `Remove @pigweed from bzl files 4198 <https://pwrev.dev/226007>`__ 4199 (issue `#352389854 <https://pwbug.dev/352389854>`__) 4200* `Remove stray @pigweed in load statement 4201 <https://pwrev.dev/226006>`__ 4202 (issue `#352389854 <https://pwbug.dev/352389854>`__) 4203* `Move toolchain registration to MODULE.bazel 4204 <https://pwrev.dev/225471>`__ 4205 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4206* `Enable bzlmod 4207 <https://pwrev.dev/211362>`__ 4208 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4209* `Remove sanitizers from default program 4210 <https://pwrev.dev/223572>`__ 4211 (issue `#301487567 <https://pwbug.dev/301487567>`__) 4212* `Modernize pip deps style (2) 4213 <https://pwrev.dev/224316>`__ 4214* `Organize and document required flags 4215 <https://pwrev.dev/223817>`__ 4216 (issue `#353750350 <https://pwbug.dev/353750350>`__) 4217* `Use Python toolchain in custom rules 4218 <https://pwrev.dev/224298>`__ 4219 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4220* `Use Python toolchain in custom rules 4221 <https://pwrev.dev/224272>`__ 4222 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4223* `Use Python toolchain in custom rules 4224 <https://pwrev.dev/224272>`__ 4225 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4226* `Modernize pip deps style 4227 <https://pwrev.dev/223871>`__ 4228 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4229* `Create separate "sanitizers" CI program 4230 <https://pwrev.dev/223595>`__ 4231 (issue `#301487567 <https://pwbug.dev/301487567>`__) 4232* `Run under tsan, ubsan in presubmit 4233 <https://pwrev.dev/223631>`__ 4234 (issue `#301487567 <https://pwbug.dev/301487567>`__) 4235* `Run tests with asan in CQ 4236 <https://pwrev.dev/222792>`__ 4237 (issue `#301487567 <https://pwbug.dev/301487567>`__) 4238 4239Docs 4240==== 4241The fonts on ``pigweed.dev`` have been updated. 4242 4243* `Prefer "change" to Google-specific "CL" 4244 <https://pwrev.dev/226004>`__ 4245* `Minor changelog update 4246 <https://pwrev.dev/224271>`__ 4247* `Update pigweed.dev fonts 4248 <https://pwrev.dev/223591>`__ 4249 (issue `#353530954 <https://pwbug.dev/353530954>`__) 4250* `Minor updates 4251 <https://pwrev.dev/223571>`__ 4252* `Update changelog 4253 <https://pwrev.dev/222831>`__ 4254 4255Modules 4256======= 4257 4258pw_assert_trap 4259-------------- 4260:ref:`module-pw_assert_trap` is a new backend for :ref:`module-pw_assert` 4261that calls ``__builtin_trap()`` when an assert is triggered. 4262 4263* `Add a new assert backend which traps on assert 4264 <https://pwrev.dev/220135>`__ 4265 (issues `#351888988 <https://pwbug.dev/https://pwbug.dev/351888988>`__, 4266 `#351886597 <https://pwbug.dev/https://pwbug.dev/351886597>`__) 4267 4268pw_async2 4269--------- 4270The new :cpp:class:`pw::async2::CoroOrElseTask` class lets you run a coroutine 4271in a task and invokes a handler function on error. The new 4272:cpp:func:`pw::async2::Task::IsRegistered` method checks if a task is 4273currently registered with a dispatcher. The new 4274:cpp:func:`pw::async2::Coro::Empty()` method creates an empty, invalid 4275coroutine object. The new :cpp:func:`pw::async2::Task::Deregister` method 4276unlinks a task from a dispatcher and any associated waker values. 4277 4278* `Fix minor doc issues 4279 <https://pwrev.dev/226111>`__ 4280* `Add CoroOrElseTask 4281 <https://pwrev.dev/225778>`__ 4282* `Add Task::IsRegistered 4283 <https://pwrev.dev/225995>`__ 4284* `Add Coro::Empty 4285 <https://pwrev.dev/225993>`__ 4286* `Add Task::Deregister 4287 <https://pwrev.dev/225775>`__ 4288 4289pw_async2_epoll 4290--------------- 4291* `Fix block on racing wakeups 4292 <https://pwrev.dev/224291>`__ 4293 4294pw_bluetooth 4295------------ 4296* `Generate emboss headers in Soong 4297 <https://pwrev.dev/225152>`__ 4298 (issue `#352364622 <https://pwbug.dev/352364622>`__) 4299* `Add generic HCI command definition 4300 <https://pwrev.dev/224931>`__ 4301 (issue `#42167863 <https://pwbug.dev/42167863>`__) 4302 4303pw_bluetooth_proxy 4304------------------ 4305* `Create Soong library for pw_bluetooth_proxy 4306 <https://pwrev.dev/225153>`__ 4307 (issue `#352393966 <https://pwbug.dev/352393966>`__) 4308* `Update emboss deps 4309 <https://pwrev.dev/224991>`__ 4310* `Do not pass on NOCP events without credits 4311 <https://pwrev.dev/224434>`__ 4312 (issue `#353546115 <https://pwbug.dev/353546115>`__) 4313* `Have functions handle passing on the packet 4314 <https://pwrev.dev/224433>`__ 4315 (issue `#353546115 <https://pwbug.dev/353546115>`__) 4316* `Update tests to verify number of sent packets 4317 <https://pwrev.dev/224300>`__ 4318* `Remove debugging log 4319 <https://pwrev.dev/224032>`__ 4320 (issue `#353546115 <https://pwbug.dev/353546115>`__) 4321 4322pw_bluetooth_sapphire 4323--------------------- 4324The latest ``pw_bluetooth_sapphire`` commits were brought 4325into Pigweed from the Fuchsia repository. 4326 4327* `Reduce scope of security_manager 4328 <https://pwrev.dev/225036>`__ 4329 (issue `#337315598 <https://pwbug.dev/337315598>`__) 4330* `Cleanup BrEdrConnectionManager test file 4331 <https://pwrev.dev/225035>`__ 4332* `Fix integer conversion warnings 4333 <https://pwrev.dev/225034>`__ 4334 (issue `#354057871 <https://pwbug.dev/354057871>`__) 4335* `Cleanup WritePageScanType into shared test file 4336 <https://pwrev.dev/225033>`__ 4337* `Add missing optional include 4338 <https://pwrev.dev/225051>`__ 4339 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4340* `Remove unused method 4341 <https://pwrev.dev/224043>`__ 4342 (issue `#42167863 <https://pwbug.dev/42167863>`__) 4343* `Remove variant from LE SendCommands 4344 <https://pwrev.dev/224042>`__ 4345 (issue `#42167863 <https://pwbug.dev/42167863>`__) 4346* `Remove CommandPacketVariant 4347 <https://pwrev.dev/224041>`__ 4348 (issue `#42167863 <https://pwbug.dev/42167863>`__) 4349* `Remove variant from QueueCommand 4350 <https://pwrev.dev/224040>`__ 4351 (issue `#42167863 <https://pwbug.dev/42167863>`__) 4352* `Remove variant from QueueLeAsyncCommand 4353 <https://pwrev.dev/224112>`__ 4354 (issue `#42167863 <https://pwbug.dev/42167863>`__) 4355* `Create IsoDataChannel 4356 <https://pwrev.dev/224039>`__ 4357 (issue `#311639040 <https://pwbug.dev/311639040>`__) 4358* `Check legacy adv for rand addr in FakeController 4359 <https://pwrev.dev/224038>`__ 4360 (issue `#42161900 <https://pwbug.dev/42161900>`__) 4361* `Use platform-independent format strings 4362 <https://pwrev.dev/224096>`__ 4363 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4364* `Processing of CIS Established event 4365 <https://pwrev.dev/224037>`__ 4366 (issue `#311639432 <https://pwbug.dev/311639432>`__) 4367* `Use pw_bytes for endianness conversions 4368 <https://pwrev.dev/224036>`__ 4369 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4370* `Cleanup WritePageScanActivity 4371 <https://pwrev.dev/224095>`__ 4372* `Cleanup into shared test file 4373 <https://pwrev.dev/224035>`__ 4374* `Cleanup WriteLocalNameResponse to shared file 4375 <https://pwrev.dev/224094>`__ 4376* `Fix camel case for CIS acronym 4377 <https://pwrev.dev/224034>`__ 4378* `Cleanup Inquiry command packets into shared file 4379 <https://pwrev.dev/224033>`__ 4380* `Implement AcceptCis() 4381 <https://pwrev.dev/224093>`__ 4382 (issue `#311639432 <https://pwbug.dev/311639432>`__) 4383* `Use pw_bytes for endianness conversions 4384 <https://pwrev.dev/221311>`__ 4385 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4386* `Use pw_bytes for endianness conversions 4387 <https://pwrev.dev/221250>`__ 4388 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4389* `Reorganize test_packets.h/.cc files 4390 <https://pwrev.dev/221249>`__ 4391* `Cleanup WriteInquiryScanActivity packets 4392 <https://pwrev.dev/221266>`__ 4393* `Use pw_bytes for endianness conversions 4394 <https://pwrev.dev/221265>`__ 4395 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4396* `Use pw_bytes for endianness conversions 4397 <https://pwrev.dev/221264>`__ 4398 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4399* `Use pw_bytes for endianness conversions 4400 <https://pwrev.dev/221248>`__ 4401 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4402* `Remove unneeded #include 4403 <https://pwrev.dev/221262>`__ 4404 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4405* `Use pw_bytes for endianness conversions 4406 <https://pwrev.dev/221261>`__ 4407 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4408* `Use pw_bytes for endianness conversions 4409 <https://pwrev.dev/221247>`__ 4410 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4411* `Use pw_bytes for endianness conversions 4412 <https://pwrev.dev/221246>`__ 4413 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4414* `Use pw_bytes for endianness conversions 4415 <https://pwrev.dev/221245>`__ 4416 (issue `#313665184 <https://pwbug.dev/313665184>`__) 4417* `Rename link_initiated to outgoing_connection 4418 <https://pwrev.dev/221244>`__ 4419* `Cleanup WriteScanEnable packets into shared file 4420 <https://pwrev.dev/221243>`__ 4421* `Cleanup ReadScanEnable packets into shared file 4422 <https://pwrev.dev/221260>`__ 4423* `Remove alias for BrEdrConnectionRequest 4424 <https://pwrev.dev/221242>`__ 4425* `BrEdrConnectionRequest create HCI connection req 4426 <https://pwrev.dev/221241>`__ 4427* `Add connection role to fake controller 4428 <https://pwrev.dev/221258>`__ 4429 (issue `#311639432 <https://pwbug.dev/311639432>`__) 4430* `Remove double std::move in PairingStateManager 4431 <https://pwrev.dev/221238>`__ 4432* `Fix BrEdrDynamicChannel crash 4433 <https://pwrev.dev/221257>`__ 4434 (issue `#42076625 <https://pwbug.dev/42076625>`__) 4435* `Cleanup BrEdrConnectionRequest and Manager 4436 <https://pwrev.dev/221237>`__ 4437* `Implement IsoStreamServer 4438 <https://pwrev.dev/221256>`__ 4439 (issue `#311639275 <https://pwbug.dev/311639275>`__) 4440* `Modernize fuchsia.hardware.bluetooth.Peer API 4441 <https://pwrev.dev/221255>`__ 4442 (issue `#330591131 <https://pwbug.dev/330591131>`__) 4443* `Rename to secure_simple_pairing_state 4444 <https://pwrev.dev/221236>`__ 4445 (issue `#342150626 <https://pwbug.dev/342150626>`__) 4446* `Use weak hci::BrEdrConnection pointer 4447 <https://pwrev.dev/221253>`__ 4448* `Create and use PairingStateManager class 4449 <https://pwrev.dev/221252>`__ 4450 (issues `#342150626 <https://pwbug.dev/342150626>`__, 4451 `#42173830 <https://pwbug.dev/42173830>`__) 4452* `Implement GetCodecLocalDelayRange 4453 <https://pwrev.dev/221251>`__ 4454 (issue `#311639690 <https://pwbug.dev/311639690>`__) 4455* `Add Bazel rules for FIDL layer 4456 <https://pwrev.dev/221190>`__ 4457 (issue `#324105856 <https://pwbug.dev/324105856>`__) 4458* `Refactor ScoConnection 4459 <https://pwrev.dev/221189>`__ 4460 (issue `#330590954 <https://pwbug.dev/330590954>`__) 4461* `Fix max connection event length value 4462 <https://pwrev.dev/221188>`__ 4463 (issue `#323255182 <https://pwbug.dev/323255182>`__) 4464* `Add AdvertisingData.ToString 4465 <https://pwrev.dev/221187>`__ 4466 (issue `#42157647 <https://pwbug.dev/42157647>`__) 4467* `Make UUID string parsing optional 4468 <https://pwrev.dev/221234>`__ 4469 (issue `#339726884 <https://pwbug.dev/339726884>`__) 4470* `Add Adapter::GetSupportedDelayRange 4471 <https://pwrev.dev/221233>`__ 4472 (issue `#311639690 <https://pwbug.dev/311639690>`__) 4473* `Clean up legacy advertising report parsing API 4474 <https://pwrev.dev/221185>`__ 4475 (issue `#308500308 <https://pwbug.dev/308500308>`__) 4476* `Add missing climits include 4477 <https://pwrev.dev/221183>`__ 4478 (issue `#338408169 <https://pwbug.dev/338408169>`__) 4479* `Add Emboss support to SendCommand completion 4480 <https://pwrev.dev/221182>`__ 4481 (issue `#311639690 <https://pwbug.dev/311639690>`__) 4482* `Improve naming of android namespace aliases 4483 <https://pwrev.dev/221232>`__ 4484 (issue `#335491380 <https://pwbug.dev/335491380>`__) 4485* `Migrate emboss aliases to new names 4486 <https://pwrev.dev/221181>`__ 4487 (issue `#338068316 <https://pwbug.dev/338068316>`__) 4488* `Add tests for LE Read Max. Adv. Data Length 4489 <https://pwrev.dev/221180>`__ 4490 (issue `#338058140 <https://pwbug.dev/338058140>`__) 4491* `Ensure command is supported before issuing it 4492 <https://pwrev.dev/221178>`__ 4493 (issue `#338058140 <https://pwbug.dev/338058140>`__) 4494* `Use duration_cast for constants 4495 <https://pwrev.dev/221029>`__ 4496 (issue `#337928450 <https://pwbug.dev/337928450>`__) 4497* `Implement extended adv. pdus with fragmentation 4498 <https://pwrev.dev/221177>`__ 4499 (issue `#312898345 <https://pwbug.dev/312898345>`__, 4500 `#309013696 <https://pwbug.dev/309013696>`__) 4501* `Use \`ull\` constants for enums 4502 <https://pwrev.dev/221028>`__ 4503 (issue `#337928450 <https://pwbug.dev/337928450>`__) 4504* `Update semantics of \`bredr.Advertise\` 4505 <https://pwrev.dev/221176>`__ 4506 (issues `#330590954 <https://pwbug.dev/330590954>`__, 4507 `#327758656 <https://pwbug.dev/327758656>`__) 4508* `Add the credit-based flow control RxEngine 4509 <https://pwrev.dev/221175>`__ 4510* `Migrate LEAdvertisingReportSubevent to Emboss 4511 <https://pwrev.dev/221174>`__ 4512 (issue `#86811 <https://pwbug.dev/86811>`__) 4513* `Lenient LEGetVendorCapabilitiesCommandComplete 4514 <https://pwrev.dev/221027>`__ 4515 (issues `#337947318 <https://pwbug.dev/337947318>`__, 4516 `#332924521 <https://pwbug.dev/332924521>`__, 4517 `#332924195 <https://pwbug.dev/332924195>`__) 4518* `Migrate FIDL to bt::testing::TestLoopFixture 4519 <https://pwrev.dev/221172>`__ 4520 (issue `#324105856 <https://pwbug.dev/324105856>`__) 4521* `Fix all available lint errors 4522 <https://pwrev.dev/221171>`__ 4523* `Move LinkKey simple constructors to the h file 4524 <https://pwrev.dev/221025>`__ 4525* `Add operator!= for LinkKey 4526 <https://pwrev.dev/221049>`__ 4527* `Add extra diagnostics 4528 <https://pwrev.dev/221048>`__ 4529* `Improve management of advertising modes 4530 <https://pwrev.dev/221045>`__ 4531 (issue `#309013696 <https://pwbug.dev/309013696>`__) 4532* `Add Bazel rules for socket library 4533 <https://pwrev.dev/221024>`__ 4534 (issue `#324105856 <https://pwbug.dev/324105856>`__) 4535* `Update LowEnergyAdvertiser to use std::vector 4536 <https://pwrev.dev/221023>`__ 4537 (issue `#312898345 <https://pwbug.dev/312898345>`__, 4538 `#309013696 <https://pwbug.dev/309013696>`__) 4539* `Add more values to LEEventMask 4540 <https://pwrev.dev/221022>`__ 4541* `Pass hci::AdvertisingIntervalRange as const 4542 <https://pwrev.dev/221044>`__ 4543* `Shorten pw::bluetooth::emboss to pwemb 4544 <https://pwrev.dev/221021>`__ 4545* `Pass extended_pdu booleans through the stack 4546 <https://pwrev.dev/221043>`__ 4547 (issue `#312898345 <https://pwbug.dev/312898345>`__, 4548 `#309013696 <https://pwbug.dev/309013696>`__) 4549* `Update AdvertisingHandleMap for extended PDUs 4550 <https://pwrev.dev/221020>`__ 4551 (issue `#312898345 <https://pwbug.dev/312898345>`__, 4552 `#309013696 <https://pwbug.dev/309013696>`__) 4553* `Update missing header 4554 <https://pwrev.dev/221019>`__ 4555 (issue `#331673100 <https://pwbug.dev/331673100>`__) 4556* `Add the credit-based flow control TxEngine 4557 <https://pwrev.dev/221017>`__ 4558* `Prevent protected member access in TxEngine 4559 <https://pwrev.dev/221016>`__ 4560* `Add Bazel tests 4561 <https://pwrev.dev/221015>`__ 4562* `Fix conversions from iterators to raw pointers 4563 <https://pwrev.dev/221014>`__ 4564 (issue `#328282937 <https://pwbug.dev/328282937>`__) 4565* `Add bt-host Bazel tests 4566 <https://pwrev.dev/221042>`__ 4567 (issue `#324105856 <https://pwbug.dev/324105856>`__) 4568* `Low energy advertiser general cleanup 4569 <https://pwrev.dev/221041>`__ 4570* `Use using aliases for Emboss type references 4571 <https://pwrev.dev/221012>`__ 4572* `Add Bazel build files 4573 <https://pwrev.dev/221036>`__ 4574 (issue `#324105856 <https://pwbug.dev/324105856>`__) 4575 4576pw_build 4577-------- 4578``pw_py_binary`` is a new wrapper for ``py_binary`` that provides some 4579defaults, such as marking all Python binaries as incompatible with MCUs. 4580 4581* `Introduce pw_py_binary 4582 <https://pwrev.dev/224296>`__ 4583 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4584* `Use incompatible_with_mcu in pw_py_test 4585 <https://pwrev.dev/224294>`__ 4586 4587pw_channel 4588---------- 4589The new :cpp:class:`pw::channel::StreamChannel` adapter makes it easier for 4590a channel to interact with an underlying reader and writer stream. 4591 4592* `Add StreamChannel adapter 4593 <https://pwrev.dev/225651>`__ 4594 4595pw_chrono_freertos 4596------------------ 4597* `Work around no std::unique_lock in baremetal libc++ 4598 <https://pwrev.dev/223636>`__ 4599 (issue `#353601672 <https://pwbug.dev/353601672>`__) 4600 4601pw_chrono_stl 4602------------- 4603* `Consolidate SystemTimer into a single thread 4604 <https://pwrev.dev/224295>`__ 4605 4606pw_console 4607---------- 4608Typing out RPCs to invoke from the web console REPL should now autocomplete 4609as expected. The web console log viewer now has a default config, defined 4610at ``//pw_console/py/pw_console/html/defaultconfig.json``. A new boolean 4611config option, ``recolor_log_lines_to_match_level``, has been added to 4612allow users to control whether log messages should be restyled to match 4613their severity level. 4614 4615* `Fix RPC autocompletion in web kernel 4616 <https://pwrev.dev/225935>`__ 4617* `Set a default config for web console's log viewer 4618 <https://pwrev.dev/225751>`__ 4619* `Pass rpc completions to web_kernel 4620 <https://pwrev.dev/224311>`__ 4621* `Add config option for log message recoloring 4622 <https://pwrev.dev/224475>`__ 4623* `Default WebHandler.kernel_params to an empty dictionary 4624 <https://pwrev.dev/223932>`__ 4625* `Handle web logging in a separate thread 4626 <https://pwrev.dev/223691>`__ 4627* `Cleanup web kernel on page close 4628 <https://pwrev.dev/223178>`__ 4629* `Replace placeholder page with real web console 4630 <https://pwrev.dev/223155>`__ 4631 4632pw_cpu_exception_cortex_m 4633------------------------- 4634The new ``PW_CPU_EXCEPTION_CORTEX_M_CRASH_ANALYSIS_INCLUDE_PC_LR`` 4635option lets you control whether PC and LR register values are included 4636in the ``AnalyzeCpuStateAndCrash()`` analysis. 4637 4638* `Make PC LR optional 4639 <https://pwrev.dev/221731>`__ 4640* `Fix assembly 4641 <https://pwrev.dev/223131>`__ 4642 (issue `#261603269 <https://pwbug.dev/261603269>`__) 4643* `Temporarily disable tests on Cortex-M33 4644 <https://pwrev.dev/223594>`__ 4645 (issues `#353533678 <https://pwbug.dev/353533678>`__, 4646 `#323215726 <https://pwbug.dev/323215726>`__) 4647 4648pw_crypto 4649--------- 4650* `Don't build micro-ecc 4651 <https://pwrev.dev/223152>`__ 4652 (issue `#261603269 <https://pwbug.dev/261603269>`__) 4653 4654pw_env_setup 4655------------ 4656* `Add luci-cv to environment 4657 <https://pwrev.dev/222811>`__ 4658 4659pw_grpc 4660------- 4661* `Fix shadowed variable warning 4662 <https://pwrev.dev/225931>`__ 4663 4664.. _docs-changelog-20240725-pw_ide: 4665 4666pw_ide 4667------ 4668General updates: ``pw_ide`` now detects Bazel projects based on the presence 4669of ``MODULE.bazel`` files. The :ref:`module-pw_ide` docs have been revamped. 4670Shared VS Code settings can now be stored in ``.vscode/settings.shared.json``. 4671The extension no longer attempts to infer the working directory if a project 4672root isn't explicitly provided; instead it prompts users to manually specify 4673the project root. The VS Code extension now has better support for Fish 4674terminals. 4675 4676VS Code extension updates related to code intelligence in Bazel-based projects: 4677The new ``Pigweed: Select Code Analysis Target`` command controls which Bazel 4678target in your project to use for code intelligence. The new ``Pigweed: Refresh 4679Compile Commands`` command lets you manually refresh code intelligence data. 4680There's also a ``Pigweed: Refresh Compile Commands and Select Code Analysis 4681Target`` that combines these two steps. In the VS Code status bar there's a new 4682icon to indicate whether ``clangd`` code intelligence is on or off. Code 4683intelligence data compilation output is now streamed so that you can monitor 4684the progress of the tool in real-time. The easiest way to access these logs is 4685by running the new ``Pigweed: Open Output Panel`` command. The extension now 4686supports a ``.clangd.shared`` file that can be used to control project-wide 4687``clangd`` settings. 4688 4689VS Code extension updates related to other Bazel tools: The extension now 4690bundles Bazelisk and Buildifier. These bundled versions get updated when the 4691extension itself updates. The extension recommends users to use these bundled 4692versions by default. You can use the new ``Activate Bazelisk in Terminal`` 4693command to manually specify which Bazelisk version to use. 4694 4695* `Support bzlmod projects 4696 <https://pwrev.dev/225913>`__ 4697* `Block on spawned refresh process 4698 <https://pwrev.dev/225731>`__ 4699* `Status bar item for inactive file disabling 4700 <https://pwrev.dev/225392>`__ 4701* `Support disabling clangd for inactive files 4702 <https://pwrev.dev/224893>`__ 4703* `Update vendored tools on extension update 4704 <https://pwrev.dev/225934>`__ 4705* `Use vendored Bazelisk in recommended config 4706 <https://pwrev.dev/225933>`__ 4707* `Improve VSC settings interface 4708 <https://pwrev.dev/225932>`__ 4709* `Add shared settings management 4710 <https://pwrev.dev/224573>`__ 4711* `Associate target groups with active files 4712 <https://pwrev.dev/222735>`__ 4713* `Don't unnecessarily infer working dir 4714 <https://pwrev.dev/224572>`__ 4715* `VSC extension 1.1.1 release 4716 <https://pwrev.dev/224897>`__ 4717* `Add missing command stubs 4718 <https://pwrev.dev/224892>`__ 4719* `Stream refresh compile commands output 4720 <https://pwrev.dev/224313>`__ 4721* `Update dev build configs 4722 <https://pwrev.dev/224312>`__ 4723* `Add fish to Bazelisk+VSC terminal 4724 <https://pwrev.dev/224292>`__ 4725* `VSC extension 1.1.0 release 4726 <https://pwrev.dev/224171>`__ 4727* `Patch Bazelisk into VSC terminal 4728 <https://pwrev.dev/223823>`__ 4729* `VSC extension 1.0.0 release 4730 <https://pwrev.dev/223911>`__ 4731* `Revise docs 4732 <https://pwrev.dev/223157>`__ 4733* `Update VSC extension packaging 4734 <https://pwrev.dev/223634>`__ 4735* `Add proto extension as dependency 4736 <https://pwrev.dev/223156>`__ 4737* `Fix VSC troubleshooting links 4738 <https://pwrev.dev/223576>`__ 4739* `Update compile commands tool version 4740 <https://pwrev.dev/222575>`__ 4741* `Don't show root comp DB dir as target 4742 <https://pwrev.dev/223633>`__ 4743* `VSC status bar item for target selection 4744 <https://pwrev.dev/220134>`__ 4745* `Add IDE support refresh manager 4746 <https://pwrev.dev/219973>`__ 4747* `Integrate Bazelisk in VSC 4748 <https://pwrev.dev/219971>`__ 4749* `Bazel comp DB management in VSC 4750 <https://pwrev.dev/218832>`__ 4751* `VSC/JS project management 4752 <https://pwrev.dev/222734>`__ 4753* `Create VSC settings interface 4754 <https://pwrev.dev/222733>`__ 4755* `Use VSC output panel for logging 4756 <https://pwrev.dev/222732>`__ 4757* `VSC extension cleanup 4758 <https://pwrev.dev/222731>`__ 4759 4760pw_kvs 4761------ 4762* `Missing <string> includes 4763 <https://pwrev.dev/223352>`__ 4764 (issue `#298822102 <https://pwbug.dev/298822102>`__) 4765* `Update bazel config 4766 <https://pwrev.dev/223171>`__ 4767 4768pw_libcxx 4769--------- 4770``pw_libcxx`` now has support for the ``new`` operator. 4771 4772* `Actually implement operator delete 4773 <https://pwrev.dev/223692>`__ 4774* `Add operator new 4775 <https://pwrev.dev/223632>`__ 4776 4777pw_log 4778------ 4779* `Log decoder timestamp cleanup 4780 <https://pwrev.dev/223271>`__ 4781* `Fix log_decoder timestamp formatting 4782 <https://pwrev.dev/222771>`__ 4783 (issue `#351905996 <https://pwbug.dev/351905996>`__) 4784 4785pw_multibuf 4786----------- 4787* `Add more context on chunk regions 4788 <https://pwrev.dev/222431>`__ 4789 4790pw_presubmit 4791------------ 4792``pw_presubmit.inclusive_language.check_file`` now accepts an optional 4793``check_path`` argument which controls whether to check the path for 4794non-inclusive language. 4795 4796* `Add attributes to docstring 4797 <https://pwrev.dev/223095>`__ 4798* `Allow disabling checks in unit tests 4799 <https://pwrev.dev/223577>`__ 4800 (issue `#352515663 <https://pwbug.dev/352515663>`__) 4801* `No copyright check in .vscodeignore 4802 <https://pwrev.dev/223575>`__ 4803* `Skip commit message check for merges 4804 <https://pwrev.dev/223574>`__ 4805* `Add test for inclusive language check 4806 <https://pwrev.dev/222311>`__ 4807 (issue `#352515663 <https://pwbug.dev/352515663>`__) 4808 4809pw_result 4810--------- 4811* `Fix docs.rst example 4812 <https://pwrev.dev/223251>`__ 4813* `Add missing header 4814 <https://pwrev.dev/223176>`__ 4815 (issue `#261603269 <https://pwbug.dev/261603269>`__) 4816* `Missing <string> includes 4817 <https://pwrev.dev/223352>`__ 4818 (issue `#298822102 <https://pwbug.dev/298822102>`__) 4819 4820pw_rpc 4821------ 4822Soong proto building is now more flexible; genrules can now have protos from 4823different sources. ``.option`` files can now be used in Soong genrules sources. 4824 4825* `Build proto path arg list for Soong 4826 <https://pwrev.dev/225031>`__ 4827* `Pass .proto files to compiler in Soong 4828 <https://pwrev.dev/222737>`__ 4829 4830pw_rpc_transport 4831---------------- 4832* `Don't write empty header in StreamRpcFrameSender 4833 <https://pwrev.dev/220211>`__ 4834 4835pw_sensor 4836--------- 4837* `Add units to sensor::channels final output 4838 <https://pwrev.dev/224711>`__ 4839 (issue `#293466822 <https://pwbug.dev/293466822>`__) 4840* `Implement attributes, channels, triggers, and units 4841 <https://pwrev.dev/204199>`__ 4842 (issue `#293466822 <https://pwbug.dev/293466822>`__) 4843 4844pw_stream 4845--------- 4846* `Update bazel config 4847 <https://pwrev.dev/223171>`__ 4848 4849pw_stream_uart_mcuxpresso 4850------------------------- 4851* `Check init state in Deinit() 4852 <https://pwrev.dev/224031>`__ 4853 4854pw_string 4855--------- 4856The new :cpp:func:`pw::utf8::ReadCodePoint`, 4857:cpp:func:`pw::utf8::EncodeCodePoint`, and 4858:cpp:func:`pw::utf8::WriteCodePoint` methods provide basic UTF-8 decoding 4859and encoding. 4860 4861* `Add utf_codecs 4862 <https://pwrev.dev/222738>`__ 4863 (issue `#337305285 <https://pwbug.dev/337305285>`__) 4864* `Disable wchar test for libcpp 4865 <https://pwrev.dev/223581>`__ 4866 (issue `#353604434 <https://pwbug.dev/353604434>`__) 4867 4868pw_sync 4869------- 4870The condition variable interface has been deprecated. See 4871:ref:`module-pw_sync-condition-variables`. 4872 4873* `Document that CV should not be used 4874 <https://pwrev.dev/162771>`__ 4875 (issue `#294395229 <https://pwbug.dev/294395229>`__) 4876 4877pw_system 4878--------- 4879Async ``pw_system`` now supports a crash handling service. When a crash 4880snapshot is available, ``pw_system`` now logs instructions on how to download 4881it. The ``pw_system`` console API now accepts an optional 4882``device_connection`` object, allowing for more flexible connection 4883management. Device class creation has been refactored to make it easier for 4884Python scripts to setup connections to devices in the same way that the 4885``pw_system`` console does. As part of this refactor the ``--output`` 4886and ``--proto-globs`` flags were removed from the ``pw_system`` console. 4887 4888* `Enable crash handler in async system 4889 <https://pwrev.dev/225911>`__ 4890* `Improve message when crash snapshot exists 4891 <https://pwrev.dev/225851>`__ 4892 (issue `#354767156 <https://pwbug.dev/354767156>`__) 4893* `Add crash handling and device service 4894 <https://pwrev.dev/224299>`__ 4895 (issue `#350807773 <https://pwbug.dev/350807773>`__) 4896* `Make pw_system_console work for rp2040 4897 <https://pwrev.dev/224714>`__ 4898 (issue `#354203490 <https://pwbug.dev/354203490>`__) 4899* `Console device connection override 4900 <https://pwrev.dev/223173>`__ 4901* `Add synchronization to pw::System allocator 4902 <https://pwrev.dev/222794>`__ 4903 (issues `#352592037 <https://pwbug.dev/352592037>`__, 4904 `#352818465 <https://pwbug.dev/352818465>`__) 4905* `Reusable DeviceConnection functionality 4906 <https://pwrev.dev/221752>`__ 4907 4908pw_target_runner 4909---------------- 4910* `Increase maximum message size for binaries 4911 <https://pwrev.dev/222736>`__ 4912 4913pw_thread 4914--------- 4915The new ``pw::thread::TestThreadContext()`` interface makes it easier to 4916create threads for unit tests. 4917 4918* `Add TestThreadContext for FreeRTOS 4919 <https://pwrev.dev/222671>`__ 4920 4921pw_tokenizer 4922------------ 4923* `Missing <string> includes 4924 <https://pwrev.dev/223352>`__ 4925 (issue `#298822102 <https://pwbug.dev/298822102>`__) 4926 4927pw_toolchain 4928------------ 4929The new ``minimum_cxx_20()`` Bazel helper can be used with 4930``target_compatible_with`` attributes to express that a target 4931requires C++20 or newer. 4932 4933* `Select Bazel C++ version with config_setting 4934 <https://pwrev.dev/221453>`__ 4935 (issue `#352379527 <https://pwbug.dev/352379527>`__) 4936* `Hide toolchain path behind variable 4937 <https://pwrev.dev/224851>`__ 4938 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4939* `Add linux_sysroot.bzl 4940 <https://pwrev.dev/223578>`__ 4941 (issue `#258836641 <https://pwbug.dev/258836641>`__) 4942* `Host clang toolchain for Bazel 4943 <https://pwrev.dev/223172>`__ 4944* `Pico Bazel build 4945 <https://pwrev.dev/223312>`__ 4946 (issue `#261603269 <https://pwbug.dev/261603269>`__) 4947* `Add tsan support for host builds 4948 <https://pwrev.dev/222891>`__ 4949 (issue `#301487567 <https://pwbug.dev/301487567>`__) 4950* `Add ubsan support for host builds 4951 <https://pwrev.dev/222791>`__ 4952 4953pw_trace_tokenized 4954------------------ 4955* `Fix bazel build 4956 <https://pwrev.dev/223093>`__ 4957 (issues `#260641850 <https://pwbug.dev/issues/260641850>`__, 4958 `#258071921 <https://pwbug.dev/issues/258071921>`__) 4959 4960pw_transfer 4961----------- 4962The new ``PW_TRANSFER_EVENT_PROCESSING_TIMEOUT_MS`` lets you control how 4963long incoming transfer events should block on the previous event being 4964processed before dropping the new event. 4965 4966* `Don't block indefinitely on events 4967 <https://pwrev.dev/224693>`__ 4968* `Fix initial timeout and missing start chunk 4969 <https://pwrev.dev/222511>`__ 4970 4971pw_unit_test 4972------------ 4973* `Removed duplicate from forwarded variables list in pw_test 4974 <https://pwrev.dev/223431>`__ 4975* `Update logging_main compatibility 4976 <https://pwrev.dev/223579>`__ 4977* `Missing <string> includes 4978 <https://pwrev.dev/223352>`__ 4979 (issue `#298822102 <https://pwbug.dev/298822102>`__) 4980* `Introduce googtest_platform 4981 <https://pwrev.dev/222812>`__ 4982 (issue `#352808542 <https://pwbug.dev/352808542>`__) 4983 4984pw_web 4985------ 4986The REPL in the web console now provides a welcome message that lists commonly 4987used keyboard shortcuts. The log viewer UI is now more dense. The REPL is now 4988positioned on the left by default. Pressing :kbd:`Shift+Enter` in the REPL 4989now goes to a new line rather than evaluating. 4990 4991* `Add icon for info 4992 <https://pwrev.dev/225413>`__ 4993 (issue `#354282161 <https://pwbug.dev/354282161>`__) 4994* `Fix keyboard shortcut in repl.rst 4995 <https://pwrev.dev/226003>`__ 4996* `Add repl intro message and title param 4997 <https://pwrev.dev/225757>`__ 4998 (issue `#354283703 <https://pwbug.dev/354283703>`__) 4999* `Increase default log viewer density 5000 <https://pwrev.dev/225671>`__ 5001 (issues `# 354282977 <https://pwbug.dev/ 354282977>`__, 5002 `# 342451299 <https://pwbug.dev/ 342451299>`__) 5003* `Move REPL to left, reduce default division to 40% 5004 <https://pwrev.dev/225755>`__ 5005* `Fix bug in code editor to not eval empty snippet 5006 <https://pwrev.dev/224315>`__ 5007* `NPM version bump to 0.0.20 5008 <https://pwrev.dev/223154>`__ 5009* `Change repl keybinding to eval 5010 <https://pwrev.dev/223174>`__ 5011* `Bundle console.ts, fix log source handlers 5012 <https://pwrev.dev/222534>`__ 5013* `Save state on input change and adjust filter logs logic 5014 <https://pwrev.dev/222774>`__ 5015 (issue `#235253336 <https://pwbug.dev/235253336>`__) 5016* `Add filter field buttons and placeholder 5017 <https://pwrev.dev/222711>`__ 5018 5019Third-party software 5020==================== 5021 5022Emboss 5023------ 5024Emboss was updated to v2024.0718.173957. Emboss build steps that involve 5025Python now use an optimized version of Python, resulting in a 15% speedup. 5026 5027* `Disable using pw_python_action 5028 <https://pwrev.dev/226009>`__ 5029 (issue `#354195492 <https://pwbug.dev/354195492>`__) 5030* `Update emboss repo to v2024.0718.173957 5031 <https://pwrev.dev/224713>`__ 5032 (issue `#354195492 <https://pwbug.dev/354195492>`__) 5033* `Run python with optimization on 5034 <https://pwrev.dev/224712>`__ 5035 (issue `#354195492 <https://pwbug.dev/354195492>`__) 5036* `Make emboss_runner_py Soong target 5037 <https://pwrev.dev/225151>`__ 5038 (issue `#352364622 <https://pwbug.dev/352364622>`__) 5039* `Remove -Wno-format-invalid-specifier 5040 <https://pwrev.dev/213660>`__ 5041* `Update emboss repo to v2024.0716.040724 5042 <https://pwrev.dev/223592>`__ 5043 (issue `#353533164 <https://pwbug.dev/353533164>`__) 5044 5045Go 5046-- 5047* `Create a Pigweed-wide go.mod file 5048 <https://pwrev.dev/225011>`__ 5049 (issue `#258836641 <https://pwbug.dev/258836641>`__) 5050 5051Miscellaneous 5052============= 5053 5054Rolls 5055----- 5056FreeRTOS was updated to version ``10.5.1.bcr.2``. CMake was bumped to version 5057``3@3.30.1.chromium.8``. Rust was updated to Git revision 5058``73a228116ae8c8ce73e309eee8c730ce90feac78``. 5059 5060* `FreeRTOS for upstream 5061 <https://pwrev.dev/226091>`__ 5062 (issue `#355203454 <https://pwbug.dev/355203454>`__) 5063* `FreeRTOS 5064 <https://pwrev.dev/225791>`__ 5065* `cmake 5066 <https://pwrev.dev/225172>`__ 5067* `rust 5068 <https://pwrev.dev/225171>`__ 5069* `rules_python 5070 <https://pwrev.dev/224054>`__ 5071 (issue `#258836641 <https://pwbug.dev/258836641>`__) 5072* `Fuchsia SDK 5073 <https://pwrev.dev/223593>`__ 5074 (issues `#258836641 <https://pwbug.dev/258836641>`__, 5075 `#353749536 <https://pwbug.dev/353749536>`__) 5076* `310, 311 5077 <https://pwrev.dev/222650>`__ 5078 5079Targets 5080======= 5081 5082RP2040 5083------ 5084* `Add pw_libcxx as dep for system_async_example 5085 <https://pwrev.dev/223573>`__ 5086* `Import statement fix 5087 <https://pwrev.dev/225754>`__ 5088 (issue `#258836641 <https://pwbug.dev/258836641>`__) 5089* `Enhance on-device testing instructions 5090 <https://pwrev.dev/225311>`__ 5091* `Fix assert basic termination behavior 5092 <https://pwrev.dev/223580>`__ 5093 5094------------ 5095Jul 11, 2024 5096------------ 5097Highlights (Jun 28, 2024 to Jul 11, 2024): 5098 5099* **Bazel 8 pre-release**: Upstream Pigweed is now using a pre-release version 5100 of Bazel 8, the first version to include platform-based flags. 5101* **ARMv6-M support**: :ref:`module-pw_cpu_exception_cortex_m` now supports 5102 ARMv6-M cores. 5103* **Browser-based pw_system console**: The new ``--browser`` option lets 5104 you start a ``pw_system`` console in a web browser rather than the default 5105 Python-based terminal console. 5106* **Updated pw_rpc docs**: The :ref:`module-pw_rpc` docs 5107 have been revamped to make getting started easier and to 5108 provide more Bazel guidance. 5109 5110Build systems 5111============= 5112 5113Bazel 5114----- 5115Pigweed is now using version 8.0.0-pre.20240618.2 of Bazel, the first version 5116to include platform-based flags. Some backend collection targets are now being 5117provided as dictionaries to enable downstream projects to use the pattern 5118described in :ref:`docs-bazel-compatibility-facade-backend-dict`. The 5119``incompatible_with_mcu`` Bazel helper has been introduced to help express 5120whether a target is only compatible with platforms that have a full-featured 5121OS. 5122 5123* `Run all tests with googletest backend in CI 5124 <https://pwrev.dev/222532>`__ 5125 (issue `#352584464 <https://pwbug.dev/352584464>`__) 5126* `Add missing dependencies 5127 <https://pwrev.dev/222572>`__ 5128 (issue `#352584464 <https://pwbug.dev/352584464>`__) 5129* `Don't propagate flags to exec config 5130 <https://pwrev.dev/220812>`__ 5131 (issues `#234877642 <https://pwbug.dev/234877642>`__, 5132 `#315871648 <https://pwbug.dev/315871648>`__) 5133* `Provide backend collections as dicts 5134 <https://pwrev.dev/219911>`__ 5135 (issue `#344654805 <https://pwbug.dev/344654805>`__) 5136* `Roll out incompatible_with_mcu 5137 <https://pwrev.dev/216852>`__ 5138 (issue `#348008794 <https://pwbug.dev/348008794>`__) 5139* `Introduce incompatible_with_mcu 5140 <https://pwrev.dev/216851>`__ 5141 (issue `#348008794 <https://pwbug.dev/348008794>`__, 5142 `#343481391 <https://pwbug.dev/343481391>`__) 5143* `Add back to CI some building targets 5144 <https://pwrev.dev/218698>`__ 5145 (issue `#261603269 <https://pwbug.dev/261603269>`__) 5146 5147Docs 5148==== 5149* `Fix shortlink URL 5150 <https://pwrev.dev/221751>`__ 5151* `Add shortlink to pw_enviro draft 5152 <https://pwrev.dev/221533>`__ 5153* `Update changelog 5154 <https://pwrev.dev/219131>`__ 5155 5156Modules 5157======= 5158 5159pw_allocator 5160------------ 5161A bug was fixed that caused builds to break when 5162``-Wmissing-template-arg-list-after-template-kw`` is turned on. 5163 5164* `Remove unnecessary template 5165 <https://pwrev.dev/220111>`__ 5166 5167pw_assert 5168--------- 5169Downstream projects using Bazel now need to set the new backend label flags 5170``@pigweed//pw_assert:check_backend`` and 5171``@pigweed//pw_assert:check_backend_impl`` and include them in their link 5172deps. 5173 5174* `Split up Bazel assert backend, part 2 5175 <https://pwrev.dev/219791>`__ 5176 (issue `#350585010 <https://pwbug.dev/350585010>`__) 5177* `Split up Bazel assert backend, part 1 5178 <https://pwrev.dev/219611>`__ 5179 (issue `#350585010 <https://pwbug.dev/350585010>`__) 5180 5181pw_async2 5182--------- 5183* `Add missing thread_stl dependency 5184 <https://pwrev.dev/219291>`__ 5185 5186pw_async2_epoll 5187--------------- 5188* `Use unordered_map; silence persistent warnings 5189 <https://pwrev.dev/218860>`__ 5190 5191pw_async_basic 5192-------------- 5193* `Fix size report build error 5194 <https://pwrev.dev/219691>`__ 5195 (issue `#350780546 <https://pwbug.dev/350780546>`__) 5196 5197pw_bluetooth 5198------------ 5199* `Format emboss files 5200 <https://pwrev.dev/219351>`__ 5201 5202pw_bluetooth_proxy 5203------------------ 5204``pw::bluetooth::proxy::sendGattNotify()`` (lowercase first letter) has been 5205removed; use ``pw::bluetooth::proxy::SendGattNotify()`` (uppercase first 5206letter) instead. The new 5207``pw::bluetooth::proxy::GetNumSimultaneousAclSendsSupported()`` function 5208returns the max number of LE ACL sends that can be in-flight at one time. 5209The new ``pw::bluetooth::proxy::AclDataChannel::Reset()`` and 5210``pw::bluetooth::proxy::ProxyHost::Reset()`` methods let you reset the internal 5211state of those classes. 5212 5213* `Delete "sendGattNotify" 5214 <https://pwrev.dev/220951>`__ 5215 (issue `#350106534 <https://pwbug.dev/350106534>`__) 5216* `Include <optional> in proxy_host.h 5217 <https://pwrev.dev/220657>`__ 5218* `ProxyHost supports multiple sends 5219 <https://pwrev.dev/220573>`__ 5220 (issues `#348680331 <https://pwbug.dev/348680331>`__, 5221 `#326499764 <https://pwbug.dev/326499764>`__) 5222* `Remove unneeded PW_EXCLUSIVE_LOCKS_REQUIRED 5223 <https://pwrev.dev/219417>`__ 5224 (issue `#350106534 <https://pwbug.dev/350106534>`__) 5225* `Soft transition to SendGattNotify 5226 <https://pwrev.dev/219120>`__ 5227 (issue `#350106534 <https://pwbug.dev/350106534>`__) 5228* `Add ProxyHost/AclDataChannel::Reset() 5229 <https://pwrev.dev/219119>`__ 5230 (issue `#350497803 <https://pwbug.dev/350497803>`__) 5231* `Dedup NOCP construction in tests 5232 <https://pwrev.dev/219118>`__ 5233* `Document which events are expected 5234 <https://pwrev.dev/219353>`__ 5235 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5236* `Adjust const for pw::span 5237 <https://pwrev.dev/218877>`__ 5238 (issue `#326497489 <https://pwbug.dev/326497489>`__) 5239* `Remove use of <mutex> 5240 <https://pwrev.dev/218893>`__ 5241 (issue `#350009505 <https://pwbug.dev/350009505>`__) 5242* `Prevent crash in GattNotifyTest 5243 <https://pwrev.dev/218834>`__ 5244 5245pw_bluetooth_sapphire 5246--------------------- 5247* `Remove modulo operator from asserts 5248 <https://pwrev.dev/222233>`__ 5249* `Add Bazel build files to lib/ packages 5250 <https://pwrev.dev/222232>`__ 5251* `Use pwemb namespace alias in FakeController 5252 <https://pwrev.dev/221034>`__ 5253* `Unmask LE Connection Complete 5254 <https://pwrev.dev/221033>`__ 5255* `Implement ExtendedLowEnergyConnector 5256 <https://pwrev.dev/221032>`__ 5257 (issue `#305976440 <https://pwbug.dev/305976440>`__) 5258* `Enable bt-host component 5259 <https://pwrev.dev/221011>`__ 5260 (issues `#303116559 <https://pwbug.dev/303116559>`__, 5261 `# b/324109634 <https://pwbug.dev/ b/324109634>`__, 5262 `#326079781 <https://pwbug.dev/326079781>`__, 5263 `# b/325142183 <https://pwbug.dev/ b/325142183>`__) 5264* `Support ISO Channel FIDL Protocol in Drivers 5265 <https://pwrev.dev/221267>`__ 5266 (issue `#328457492 <https://pwbug.dev/328457492>`__, 5267 issue `# b/328459391 <https://pwbug.dev/ b/328459391>`__) 5268* `Add ISO support to controllers 5269 <https://pwrev.dev/218992>`__ 5270 (issue `#311639690 <https://pwbug.dev/311639690>`__) 5271* `Tag integration test 5272 <https://pwrev.dev/220991>`__ 5273 (issue `#344654806 <https://pwbug.dev/344654806>`__) 5274* `Implement ExtendedLowEnergyScanner 5275 <https://pwrev.dev/218979>`__ 5276 (issue `#305975969 <https://pwbug.dev/305975969>`__) 5277* `Add packet filtering consts to vendor protocol 5278 <https://pwrev.dev/218978>`__ 5279* `Update LEAdvertisers to use EmbossCommandPacket 5280 <https://pwrev.dev/218991>`__ 5281 (issue `#312896684 <https://pwbug.dev/312896684>`__) 5282* `Use Emboss for android vendor exts multi advert 5283 <https://pwrev.dev/218977>`__ 5284 (issue `#312896673 <https://pwbug.dev/312896673>`__) 5285* `Use Emboss versions of a2dp offload structs 5286 <https://pwrev.dev/218976>`__ 5287* `Refactor LowEnergyScanResult to its own class 5288 <https://pwrev.dev/218975>`__ 5289* `Refactor TxEngine to allow queueing SDUs 5290 <https://pwrev.dev/218915>`__ 5291* `Add incoming CIS request handler 5292 <https://pwrev.dev/218972>`__ 5293* `Add IsoStreamManager class 5294 <https://pwrev.dev/218971>`__ 5295* `Add CIS events and commands 5296 <https://pwrev.dev/218914>`__ 5297 (issue `#311639432 <https://pwbug.dev/311639432>`__) 5298* `Retrieve sleep clock accuracy for peers 5299 <https://pwrev.dev/218913>`__ 5300 (issue `#311639272 <https://pwbug.dev/311639272>`__) 5301* `Fix LowEnergyScanner crash 5302 <https://pwrev.dev/218974>`__ 5303 (issue `#323098126 <https://pwbug.dev/323098126>`__) 5304* `Remove unused include 5305 <https://pwrev.dev/214677>`__ 5306* `Add infrastructure for SCA operations 5307 <https://pwrev.dev/214676>`__ 5308 (issue `#311639272 <https://pwbug.dev/311639272>`__) 5309* `Use Write instead of UncheckedWrite 5310 <https://pwrev.dev/214675>`__ 5311* `Remove now unnecessary use of std::optional 5312 <https://pwrev.dev/214654>`__ 5313* `Expose connection role to le handle 5314 <https://pwrev.dev/214653>`__ 5315 (issue `#311639432 <https://pwbug.dev/311639432>`__) 5316* `Disambiguate comment 5317 <https://pwrev.dev/214673>`__ 5318* `Fix typo in comment 5319 <https://pwrev.dev/214652>`__ 5320 5321pw_build 5322-------- 5323The new macros in ``//pw_build:merge_flags.bzl`` help with using 5324platform-based flags. 5325 5326* `Add flags_from_dict 5327 <https://pwrev.dev/221691>`__ 5328 (issue `#301334234 <https://pwbug.dev/301334234>`__) 5329 5330pw_cli 5331------ 5332``pw_cli`` has increased support for letting users select from interactive 5333prompts. The RP2040 flasher utility uses the new interactive prompting 5334features to let users select which detected device to flash. 5335 5336* `Interactive user index prompt 5337 <https://pwrev.dev/220931>`__ 5338 5339pw_console 5340---------- 5341* `Headless mode with web/ws server running 5342 <https://pwrev.dev/215860>`__ 5343 5344pw_cpu_exception 5345---------------- 5346* `Remove multiplexers 5347 <https://pwrev.dev/219371>`__ 5348 (issue `#347998044 <https://pwbug.dev/347998044>`__) 5349 5350pw_cpu_exception_cortex_m 5351------------------------- 5352``pw_cpu_exception_cortex_m`` now supports ARMv6-M cores. 5353 5354* `Add armv6-m support 5355 <https://pwrev.dev/219132>`__ 5356 (issues `#350747553 <https://pwbug.dev/https://pwbug.dev/350747553>`__, 5357 `#350747562 <https://pwbug.dev/https://pwbug.dev/350747562>`__) 5358 5359pw_digital_io_rp2040 5360-------------------- 5361The new ``enable_pull_up`` and ``enable_pull_down`` fields in the 5362``pw::digital_io::Rp2040Config`` struct let you configure whether resistors 5363should be pulled up or down. 5364 5365* `Add pull up/down resistors to Rp2040Config 5366 <https://pwrev.dev/219731>`__ 5367* `Remove manual tags 5368 <https://pwrev.dev/219052>`__ 5369 (issue `#261603269 <https://pwbug.dev/261603269>`__) 5370 5371pw_env_setup 5372------------ 5373* `Use full paths for proj action imports 5374 <https://pwrev.dev/222571>`__ 5375 5376pw_function 5377----------- 5378* `Dynamic allocation for upstream host 5379 <https://pwrev.dev/221871>`__ 5380 5381pw_log_string 5382------------- 5383* `Require backend_impl to be set explicitly 5384 <https://pwrev.dev/221293>`__ 5385 5386pw_malloc_freertos 5387------------------ 5388* `Fix typo 5389 <https://pwrev.dev/220751>`__ 5390 (issue `#351945325 <https://pwbug.dev/351945325>`__) 5391 5392pw_presubmit 5393------------ 5394* `Narrow copyright notice exclusions 5395 <https://pwrev.dev/221532>`__ 5396 (issue `#347062591 <https://pwbug.dev/347062591>`__) 5397* `Add copyright notice to some test data 5398 <https://pwrev.dev/221395>`__ 5399 (issue `#347062591 <https://pwbug.dev/347062591>`__) 5400* `Exclude test_data from bazel_lint 5401 <https://pwrev.dev/221152>`__ 5402* `Exclude files from copyright 5403 <https://pwrev.dev/221151>`__ 5404* `Don't automatically use exclusions 5405 <https://pwrev.dev/216355>`__ 5406 (issue `#347274642 <https://pwbug.dev/347274642>`__) 5407 5408pw_rpc 5409------ 5410The :ref:`module-pw_rpc` docs have been revamped to make getting started 5411easier and to provide more Bazel guidance. 5412 5413* `Expand comment for internal::ClientServerTestComment 5414 <https://pwrev.dev/220574>`__ 5415* `Update docs 5416 <https://pwrev.dev/219392>`__ 5417 (issue `#349832019 <https://pwbug.dev/349832019>`__) 5418 5419pw_stream_uart_mcuxpresso 5420------------------------- 5421* `Clean up dma stream comments 5422 <https://pwrev.dev/222111>`__ 5423 5424pw_sys_io 5425--------- 5426* `Remove multiplexer, constraints 5427 <https://pwrev.dev/218736>`__ 5428 (issue `#347998044 <https://pwbug.dev/347998044>`__) 5429 5430pw_sys_io_baremetal_stm32f429 5431----------------------------- 5432Bazel projects should now set the ``--@pigweed//pw_sys_io:backend`` 5433label flag to ``@pigweed//pw_sys_io_baremetal_stm32f429`` and add the 5434``@pigweed//pw_sys_io_baremetal_stm32f429:compatible`` constraint to their 5435platform to indicate that the platform is compatible with 5436``pw_sys_io_baremetal_stm32f429``. 5437 5438* `Add constraint 5439 <https://pwrev.dev/218831>`__ 5440 (issue `#347998044 <https://pwbug.dev/347998044>`__) 5441 5442pw_sys_io_stm32cube 5443------------------- 5444* `Remove target_compatible_with 5445 <https://pwrev.dev/218704>`__ 5446 (issue `#347998044 <https://pwbug.dev/347998044>`__) 5447 5448pw_system 5449--------- 5450The new ``--browser`` option lets you start a browser-based ``pw_system`` 5451console instead of a terminal-based one.Thread stack sizes for the new 5452async version of ``pw_system`` can now be configured with 5453``PW_SYSTEM_ASYNC_LOG_THREAD_STACK_SIZE_BYTES``, 5454``PW_SYSTEM_ASYNC_RPC_THREAD_STACK_SIZE_BYTES``, 5455``PW_SYSTEM_ASYNC_TRANSFER_THREAD_STACK_SIZE_BYTES``, and 5456``PW_SYSTEM_ASYNC_DISPATCHER_THREAD_STACK_SIZE_BYTES``. The new 5457``pw::system::AsyncCore::RunOnce()`` method provides a way to run a function 5458once on a separate thread. The ``--ipython`` option has been removed from the 5459``pw_system`` console. See :ref:`module-pw_console-embedding-ipython` for 5460guidance on how to embed IPython. 5461 5462* `Add web console option 5463 <https://pwrev.dev/221071>`__ 5464* `Add missing work queue thread 5465 <https://pwrev.dev/222372>`__ 5466* `Clean up pw_system/threads.cc 5467 <https://pwrev.dev/222371>`__ 5468* `Configurable thread stack sizes 5469 <https://pwrev.dev/221394>`__ 5470* `RunOnce function for work queue functionality 5471 <https://pwrev.dev/218954>`__ 5472* `Remove IPython from pw_system console 5473 <https://pwrev.dev/218882>`__ 5474* `Organize pw_system:async build targets 5475 <https://pwrev.dev/218737>`__ 5476 5477pw_thread 5478--------- 5479* `Remove backend multiplexers 5480 <https://pwrev.dev/218238>`__ 5481 (issue `#347998044 <https://pwbug.dev/347998044>`__) 5482 5483pw_thread_stl 5484------------- 5485The ``pw::thread::Thread::native_handle()`` method now returns a pointer to 5486the underlying thread object instead of a reference and the docs have been 5487updated to make it clear that using this is inherently non-portable. 5488 5489* `Change NativeThreadHandle to ptr 5490 <https://pwrev.dev/219251>`__ 5491 (issue `#350349092 <https://pwbug.dev/350349092>`__) 5492 5493pw_toolchain 5494------------ 5495Go binaries have been updated to no longer link with position-independent 5496executables (PIE) on Linux. 5497 5498* `Disable PIE for Golang 5499 <https://pwrev.dev/220191>`__ 5500 (issue `#347708308 <https://pwbug.dev/347708308>`__) 5501 5502pw_toolchain_bazel 5503------------------ 5504* `Add native binary for clang-tidy 5505 <https://pwrev.dev/221471>`__ 5506 (issue `#352343585 <https://pwbug.dev/352343585>`__) 5507 5508pw_trace 5509-------- 5510* `Remove backend multiplexer 5511 <https://pwrev.dev/219792>`__ 5512 (issue `#347998044 <https://pwbug.dev/347998044>`__) 5513 5514pw_transfer 5515----------- 5516* `Don't assert on resource status responder 5517 <https://pwrev.dev/219037>`__ 5518 5519pw_unit_test 5520------------ 5521* `Fix CMake test runner argument forwarding 5522 <https://pwrev.dev/218973>`__ 5523 5524pw_web 5525------ 5526Upstream Pigweed protos are now provided alongside downstream project protos. 5527 5528* `Include core .proto files in the npm bundle 5529 <https://pwrev.dev/222533>`__ 5530* `Add newlines, separators, and clear for output 5531 <https://pwrev.dev/222531>`__ 5532 (issue `#348650028 <https://pwbug.dev/348650028>`__) 5533* `Set min width for message 5534 <https://pwrev.dev/221592>`__ 5535 (issue `#351901512 <https://pwbug.dev/351901512>`__) 5536* `Implement console-level split panels 5537 <https://pwrev.dev/220691>`__ 5538 (issue `#348649945 <https://pwbug.dev/348649945>`__) 5539* `Update REPL styles 5540 <https://pwrev.dev/220971>`__ 5541 (issue `#348650028 <https://pwbug.dev/348650028>`__) 5542* `Repl kernel interface and litjs component for repl 5543 <https://pwrev.dev/217311>`__ 5544* `Fix columns on first load 5545 <https://pwrev.dev/218551>`__ 5546 (issue `#346869281 <https://pwbug.dev/346869281>`__) 5547* `Debounce grid template calc on resize 5548 <https://pwrev.dev/218377>`__ 5549 (issues `#346596380 <https://pwbug.dev/346596380>`__, 5550 `#342450728 <https://pwbug.dev/342450728>`__) 5551 5552Rolls 5553===== 5554Pigweed is now using version 8.0.0-pre.20240618.2 of Bazel, the first version 5555to include platform-based flags. Go was updated to version ``3@1.22.5``. CMake 5556was updated to version ``3@3.30.0.chromium.8``. 5557 5558* `Update Bazel to 8.0 rolling release 5559 <https://pwrev.dev/220118>`__ 5560 (issue `#344013743 <https://pwbug.dev/344013743>`__) 5561* `Update Bazel to 7.2 5562 <https://pwrev.dev/220571>`__ 5563 (issue `#347708308 <https://pwbug.dev/347708308>`__) 5564* `go 5565 <https://pwrev.dev/220471>`__ 5566* `cmake 5567 <https://pwrev.dev/220351>`__ 5568* `310, 311 5569 <https://pwrev.dev/219173>`__ 5570 5571Targets 5572======= 5573 5574RP2040 5575------ 5576The RP2040 flasher now provides more feedback when a board has been 5577successfully flashed. 5578 5579* `Fix FreeRTOS tick rate 5580 <https://pwrev.dev/220791>`__ 5581 (issue `#351906735 <https://pwbug.dev/351906735>`__) 5582* `Log on successful flash 5583 <https://pwrev.dev/220575>`__ 5584 (issue `#352052013 <https://pwbug.dev/352052013>`__) 5585* `Fix build command in docs 5586 <https://pwrev.dev/219359>`__ 5587 5588Third-party software 5589==================== 5590 5591Emboss 5592------ 5593Emboss was updated to version ``2024.0702.215418``. 5594 5595* `Add missing ir_data_utils.py to GN build 5596 <https://pwrev.dev/220114>`__ 5597 (issue `#350970460 <https://pwbug.dev/350970460>`__) 5598* `Update emboss to v2024.0702.215418 5599 <https://pwrev.dev/219793>`__ 5600 (issue `#350970460 <https://pwbug.dev/350970460>`__) 5601 5602FreeRTOS 5603-------- 5604* `Add missing CM33_NTZ header 5605 <https://pwrev.dev/222574>`__ 5606 5607GoogleTest 5608---------- 5609* `Fix the docs 5610 <https://pwrev.dev/222573>`__ 5611 (issue `#352584464 <https://pwbug.dev/352584464>`__) 5612 5613ICU 5614--- 5615* `Update Bazel rules for dependent headers 5616 <https://pwrev.dev/222231>`__ 5617* `Add Bazel build rules 5618 <https://pwrev.dev/218702>`__ 5619 (issue `#321300565 <https://pwbug.dev/321300565>`__) 5620 5621Mbed TLS 5622-------- 5623* `Remove old build file 5624 <https://pwrev.dev/220137>`__ 5625* `Rename build file 5626 <https://pwrev.dev/218709>`__ 5627 5628Miscellaneous 5629============= 5630 5631GitHub 5632------ 5633* `Add copyright notice 5634 <https://pwrev.dev/221491>`__ 5635 (issue `#347062591 <https://pwbug.dev/347062591>`__) 5636 5637dotfiles 5638-------- 5639* `Add copyright notice 5640 <https://pwrev.dev/221531>`__ 5641 (issue `#347062591 <https://pwbug.dev/347062591>`__) 5642 5643------------ 5644Jun 27, 2024 5645------------ 5646Highlights (Jun 14, 2024 to Jun 27, 2024): 5647 5648* **RP2040 implementation for pw_channel**: 5649 :cpp:func:`pw::channel::Rp2StdioChannelInit` is a new 5650 :ref:`module-pw_channel` implementation that reads from and writes 5651 to RP2040's ``stdio``. 5652* **Bazel compatibility patterns guide**: The new 5653 :ref:`docs-bazel-compatibility` guide describes the Bazel patterns that 5654 Pigweed uses to express that a build target is compatible with a platform. 5655* **Hex dump helper**: The new :cpp:func:`pw::dump::LogBytes` helper makes 5656 it easier to log binary data as human-readable hex dumps. The number of 5657 input bytes to display per line can be configured via the ``kBytesPerLine`` 5658 template parameter. 5659 5660Build systems 5661============= 5662 5663Bazel 5664----- 5665The obsolete ``testonly_freertos`` platform has been removed. 5666 5667.. todo-check: disable 5668 5669* `Encapsulate rp2040 WORKSPACE deps into deps.bazl 5670 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217219>`__ 5671* `Update pin for rules_libusb 5672 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217212>`__ 5673* `Update TODO in bazelrc 5674 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216274>`__ 5675 (issue `#347317581 <https://pwbug.dev/347317581>`__) 5676* `Stop using deprecated pw_facade aliases, v3 5677 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216436>`__ 5678 (issue `#328679085 <https://pwbug.dev/328679085>`__) 5679* `Stop using deprecated pw_facade aliases, v2 5680 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216271>`__ 5681 (issue `#328679085 <https://pwbug.dev/328679085>`__) 5682* `Remove testonly_freertos platform 5683 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216181>`__ 5684* `Remove unnecessary @pigweed references 5685 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218411>`__ 5686* `Add clippy to CI 5687 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218271>`__ 5688 (issue `#268087116 <https://pwbug.dev/268087116>`__) 5689 5690.. todo-check: enable 5691 5692Docs 5693==== 5694The new :ref:`Bazel installation guide <docs-install-bazel>` provides 5695Pigweed's recommendations on how to install Bazel. The 5696:ref:`docs-github-actions` guide was updated. The new :ref:`docs-bazel-compatibility` 5697guide describes the Bazel patterns that Pigweed uses to express that a build target 5698is compatible with a platform. 5699 5700* `Add emboss to packages installed for build_docs 5701 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216893>`__ 5702* `Remove mention of multiplexers 5703 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216672>`__ 5704 (issue `#344654805 <https://pwbug.dev/344654805>`__) 5705* `Add OWNERS 5706 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216834>`__ 5707* `Add Bazel installation guide 5708 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216531>`__ 5709* `Update GitHub actions tutorial 5710 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216276>`__ 5711* `Update Pigweed Live schedule 5712 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216354>`__ 5713 (issue `#347677570 <https://pwbug.dev/347677570>`__) 5714* `Bazel compatibility patterns 5715 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214971>`__ 5716 (issue `#344654805 <https://pwbug.dev/344654805>`__) 5717* `Update changelog 5718 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216153>`__ 5719 5720Modules 5721======= 5722 5723pw_allocator 5724------------ 5725The ``//pw_allocator:block_allocator`` target has been removed. Consumers 5726are now expected to depend on and include individual block allocator targets. 5727 5728* `Use specific block allocator headers and targets 5729 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211917>`__ 5730* `Fix Android build 5731 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216511>`__ 5732* `Clean up Block interface 5733 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211916>`__ 5734 (issue `#326509341 <https://pwbug.dev/326509341>`__) 5735 5736pw_assert 5737--------- 5738* `Remove backend multiplexer 5739 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215914>`__ 5740 (issue `#347998044 <https://pwbug.dev/347998044>`__) 5741 5742pw_bluetooth 5743------------ 5744New Emboss structs added: ``NumberOfCompletedPacketsEvent``, 5745``WritePinTypeCommandCompleteEvent``, ``PinCodeRequestNegativeReplyCommandCompleteEvent``, 5746``ReadPinTypeCommandCompleteEvent``, ``PinCodeRequestEvent``, 5747``PinCodeRequestReplyCommandCompleteEvent``, ``WritePinTypeCommand``, 5748``ReadPinTypeCommand``, ``PinCodeRequestNegativeReplyCommand``, 5749``PinCodeRequestReplyCommand``. 5750 5751* `Add NumberOfCompletedPacketsEvent 5752 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216250>`__ 5753 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5754* `Add AttNotifyOverAcl to att.emb 5755 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218311>`__ 5756* `Add PinCodeRequestEvent 5757 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217791>`__ 5758 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5759* `Add IoCapability enum field 5760 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217074>`__ 5761* `Add ACL & L2CAP B-frame Emboss definitions 5762 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216248>`__ 5763 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5764* `Add att.emb 5765 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216247>`__ 5766 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5767* `Add WritePinTypeCommandCompleteEvent Emboss struct 5768 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216923>`__ 5769 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5770* `Add ReadPinTypeCommandCompleteEvent Emboss struct 5771 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216922>`__ 5772 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5773* `Add PinCodeRequestNegativeReplyCommandCompleteEvent Emboss 5774 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216921>`__ 5775 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5776* `Add PinCodeRequestReplyCommandCompleteEvent Emboss struct 5777 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216920>`__ 5778 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5779* `Add WritePinTypeCommand Emboss struct 5780 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216919>`__ 5781 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5782* `Add ReadPinTypeCommand Emboss struct 5783 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216918>`__ 5784 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5785* `Add PinCodeRequestNegativeReplyCommand Emboss struct 5786 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216917>`__ 5787 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5788* `Add PinCodeRequestReplyCommand Emboss struct 5789 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216916>`__ 5790 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5791* `Add PinType enum 5792 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216915>`__ 5793 (issue `#342151162 <https://pwbug.dev/342151162>`__) 5794 5795pw_bluetooth_proxy 5796------------------ 5797The new ``pw::bluetooth::proxy::AclDataChannel::ProcessDisconnectionCompleteEvent()`` 5798method frees up resources when a connection is removed. The new 5799``pw::bluetooth::proxy::AclDataChannel::ProcessNumberOfCompletedPacketsEvent()`` method 5800removes completed packets as necessary to reclaim LE ACL credits. The new 5801``pw::bluetooth::proxy::ProxyHost::sendGattNotify()`` method is a simple 5802implementation of sending a GATT notification to a connected peer. 5803 5804* `Process Disconnection_Complete event 5805 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218652>`__ 5806 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5807* `Implement basic ACL credit tracking 5808 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216411>`__ 5809 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5810* `Implement sendGattNotify 5811 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216249>`__ 5812 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5813* `Have release_fn take buffer* 5814 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217414>`__ 5815 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5816* `Add GetH4Span 5817 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217413>`__ 5818 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5819* `Add release_fn to H4PacketWithH4 5820 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216971>`__ 5821 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5822* `Fix case style for some test variables 5823 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216914>`__ 5824 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5825* `Move to-controller flow to using h4-based packets 5826 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216897>`__ 5827 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5828* `Add H4PacketWithH4 ctor that takes type 5829 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216896>`__ 5830 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5831* `Move H4Packet to using move semantics 5832 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216913>`__ 5833 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5834* `Fix naming of SetH4Type 5835 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216895>`__ 5836 (issue `#326499764 <https://pwbug.dev/326499764>`__) 5837* `Move to using H4Packet wrapper classes 5838 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215222>`__ 5839 (issues `#326499764 <https://pwbug.dev/326499764>`__, 5840 `#326497489 <https://pwbug.dev/326497489>`__) 5841 5842pw_bluetooth_sapphire 5843--------------------- 5844* `Move LegacyLowEnergyScanner impl to base class 5845 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214674>`__ 5846* `Add spec reference to comment 5847 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217111>`__ 5848 (issue `#311639040 <https://pwbug.dev/311639040>`__) 5849 5850pw_boot 5851------- 5852* `Remove backend multiplexer 5853 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217213>`__ 5854 (issue `#347998044 <https://pwbug.dev/347998044>`__) 5855 5856pw_build 5857-------- 5858The ``BuildCommand`` Python class now has an optional ``working_dir`` argument 5859that allows you to specify the working directory in which a build command 5860should be executed. The new ``boolean_constraint_value`` syntactic sugar macro 5861makes it easier to declare a constraint setting with just two possible 5862constraint values. 5863 5864* `Add optional working directory arg to BuildCommand 5865 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217831>`__ 5866 (issue `#328083083 <https://pwbug.dev/328083083>`__) 5867* `Introduce boolean_constraint_value 5868 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216832>`__ 5869 (issue `#344654805 <https://pwbug.dev/344654805>`__) 5870* `Move host_backend_alias (part 2) 5871 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215741>`__ 5872 (issue `#344654805 <https://pwbug.dev/344654805>`__) 5873 5874pw_build_android 5875---------------- 5876Dynamic allocation for ``pw::Function`` is now always enabled in Android 5877builds to allow ``pw::Function`` to exceed the inline size limit. 5878 5879* `Enable function dynamic alloc 5880 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218219>`__ 5881 (issue `#349352849 <https://pwbug.dev/349352849>`__) 5882 5883pw_build_info 5884------------- 5885The new ``//pw_build_info:git_build_info`` Bazel rule lets you embed which 5886Git commit your binary was built from. 5887 5888* `Add git_build_info.h header for embedding git info 5889 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213854>`__ 5890 5891pw_build_mcuxpresso 5892------------------- 5893The type for the ``include`` parameter in the 5894``pw_build_mcuxpresso.components.Project`` Python class constructor changed 5895from ``list[str]`` to ``Collection[str]`` and the type for the ``exclude`` 5896parameter changed from ``list[str]`` to ``Container[str]``. 5897``pw_build_mcuxpresso.bazel.bazel_output()`` now accepts an optional 5898``extra_args`` argument, which is a dictionary of additional arguments to be 5899added to the generated Bazel target. 5900 5901* `Fix bug in create_project() 5902 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218272>`__ 5903* `Add extra_args to bazel.bazel_output() 5904 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217754>`__ 5905 5906pw_channel 5907---------- 5908:cpp:func:`pw::channel::Rp2StdioChannelInit` is a new 5909:ref:`module-pw_channel` implementation that reads from and writes 5910to RP2040's ``stdio``. 5911 5912* `Add Rp2StdioChannel 5913 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217954>`__ 5914* `Cleanup redundant checks in epoll_channel 5915 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218376>`__ 5916 5917pw_chrono 5918--------- 5919The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets FreeRTOS 5920backends for ``pw_chrono``, ``pw_sync``, and ``pw_thread`` in one go. Each 5921backend can be individually overridden if needed. 5922 5923* `Add docs metadata 5924 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217752>`__ 5925* `Group common backends in the GN build 5926 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__ 5927 5928pw_cli 5929------ 5930* `Add missing modules to Bazel build 5931 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217571>`__ 5932* `Improve messaging for GitErrors 5933 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217054>`__ 5934 5935pw_clock_tree 5936------------- 5937The new :cpp:func:`pw::clock_tree::ClockTree::AcquireWith` method lets 5938you acquire a clock tree element while enabling another one. 5939 5940* `Introduce ClockTree AcquireWith method 5941 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217131>`__ 5942 (issue `#331672574 <https://pwbug.dev/331672574>`__) 5943 5944pw_clock_tree_mcuxpresso 5945------------------------ 5946:cpp:func:`AcquireWith` should now be used when enabling clock tree 5947elements that are sourced from the audio PLL or SYS PLL. 5948 5949* `Use AcquireWith for audio PLL 5950 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216911>`__ 5951 (issue `#331672574 <https://pwbug.dev/331672574>`__) 5952 5953pw_cpu_exception_cortex_m 5954------------------------- 5955* `rm backend multiplexer 5956 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217214>`__ 5957 (issue `#347998044 <https://pwbug.dev/347998044>`__) 5958 5959pw_docgen 5960--------- 5961* `Add bug Docutils role 5962 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215911>`__ 5963 5964pw_emu 5965------ 5966``pw_emu`` now supports Bazel. 5967 5968* `Add bazel python build 5969 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217053>`__ 5970 5971pw_env_setup 5972------------ 5973The version of ``cffi`` that ``pw_env_setup`` uses was updated to 5974``1.16.0`` to fix Windows failures. The "fatal error" that 5975``pw_env_setup`` used to log when running from a directory that's 5976outside of a Git repo has been suppressed. 5977 5978* `Update cffi 5979 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217218>`__ 5980 (issue `#348697900 <https://pwbug.dev/348697900>`__) 5981* `Suppress error message when running outside git repo 5982 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217216>`__ 5983 5984pw_format 5985--------- 5986* `Fix and enable disabled Rust tests 5987 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217135>`__ 5988 5989pw_grpc 5990------- 5991The C++ module now handles corrupt frames more gracefully. 5992 5993* `Avoid buffer overflow when processing corrupt frames 5994 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216651>`__ 5995 5996pw_hex_dump 5997----------- 5998The ``pw_log_bytes`` target has been renamed to ``log_bytes``. The new 5999:cpp:func:`pw::dump::LogBytes` helper makes it easier to log binary data 6000as human-readable hex dumps. The number of input bytes to display per line 6001can be configured via the ``kBytesPerLine`` template parameter. 6002 6003* `Remove pw prefix from log_bytes 6004 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218531>`__ 6005* `Add LogBytes helper 6006 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216711>`__ 6007 6008pw_i2c 6009------ 6010* `Handle unaligned buffer reads in register_device_test 6011 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217811>`__ 6012 (issue `#325509758 <https://pwbug.dev/325509758>`__) 6013 6014pw_ide 6015------ 6016A ``--process-files`` (``-P``) flag was added to ``pw ide cpp`` to process 6017compilation databases at the provided paths. Bazel support for ``pw_ide`` has 6018started. ``pw_ide`` now explicitly runs all commands from the ``PW_PROJECT_ROOT`` 6019directory. 6020 6021* `Point to compile commands extractor fork 6022 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218631>`__ 6023* `Add option to process comp DBs by path 6024 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218334>`__ 6025* `Add Bazel dependencies wrapper 6026 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218320>`__ 6027* `Bazelify 6028 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217572>`__ 6029* `Run commands from PW_PROJECT_ROOT dir 6030 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216471>`__ 6031 6032pw_log 6033------ 6034* `Remove backend multiplexer 6035 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215892>`__ 6036 (issue `#347998044 <https://pwbug.dev/347998044>`__) 6037 6038pw_malloc 6039--------- 6040* `Add docs metadata 6041 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217951>`__ 6042 6043pw_multibuf 6044----------- 6045* `Fix Android build 6046 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216611>`__ 6047 6048pw_preprocessor 6049--------------- 6050* `Add docs metadata 6051 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217952>`__ 6052 6053pw_presubmit 6054------------ 6055* `Add check for rp2040_binary transition 6056 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218273>`__ 6057* `Build STM32F429i baremetal in CI 6058 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217231>`__ 6059 6060pw_rpc 6061------ 6062* `Restructure Channel / internal::Channel 6063 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216037>`__ 6064 6065pw_rust 6066------- 6067* `Static Library Linking 6068 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216313>`__ 6069 6070pw_spi_mcuxpresso 6071----------------- 6072* `Separate Bazel build targets 6073 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217313>`__ 6074* `Fix unused parameter warning 6075 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217312>`__ 6076 (issue `#348512572 <https://pwbug.dev/348512572>`__) 6077 6078pw_sync 6079------- 6080The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets FreeRTOS 6081backends for ``pw_chrono``, ``pw_sync``, and ``pw_thread`` in one go. Each 6082backend can be individually overridden if needed. 6083 6084* `Remove multiplexers 6085 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216819>`__ 6086 (issue `#347998044 <https://pwbug.dev/347998044>`__) 6087* `Group common backends in the GN build 6088 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__ 6089 6090pw_system 6091--------- 6092``pw_system:async`` is a new version of ``pw_system`` based on 6093:ref:`module-pw_async2`. The ``pw_system`` console now has a 6094``--device-tracing`` flag to turn device tracing on or off. 6095 6096* `pw_system:async 6097 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216239>`__ 6098* `Async packet processing component 6099 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214798>`__ 6100* `Rename target_io.cc 6101 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217051>`__ 6102* `Allow disabling of DeviceTracing RPC calls 6103 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216332>`__ 6104 6105pw_target_runner 6106---------------- 6107The ``pw_target_runner`` client in Go now supports a ``server_suggestion`` 6108flag, which allows specifying a command to suggest to the user if the server 6109is unavailable. The Go client's ``RunBinary`` method can now accept a binary 6110as a byte array instead of a file path. 6111 6112* `Add suggested server command 6113 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218011>`__ 6114* `Send test binaries over gRPC 6115 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216050>`__ 6116 6117pw_thread 6118--------- 6119The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets FreeRTOS 6120backends for ``pw_chrono``, ``pw_sync``, and ``pw_thread`` in one go. Each 6121backend can be individually overridden if needed. 6122 6123* `Group common backends in the GN build 6124 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__ 6125 6126pw_toolchain 6127------------ 6128Compiler diagnostics colors are now enabled in Bazel. 6129 6130* `Color diagnostics in Bazel 6131 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217715>`__ 6132* `Closer align the bazel arm-gcc flags with GN 6133 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215734>`__ 6134* `Add clippy-driver to rust toolchains 6135 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217211>`__ 6136 (issue `#268087116 <https://pwbug.dev/268087116>`__) 6137 6138pw_transfer 6139----------- 6140* `Java style fixes; remove unused variable and dependencies 6141 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215858>`__ 6142 6143pw_watch 6144-------- 6145``pw_watch`` now ignores ``bazel-*`` directories. 6146 6147* `Do not watch bazel-* symlinks 6148 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217931>`__ 6149 6150pw_web 6151------ 6152The function signature for ``createLogViewer`` changed to 6153``createLogViewer(logSource, root, { columnOrder })``. The ``columnOrder`` 6154field in the optional third parameter lets you control the ordering of 6155columns in the log viewer.The new ``useShoelaceFeatures`` boolean lets you 6156control whether the log viewer uses Shoelace components. The log viewer's 6157toolbar is now responsive. 6158 6159* `Add optional parameters to createLogViewer 6160 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217052>`__ 6161 (issue `#333537914 <https://pwbug.dev/333537914>`__) 6162* `Add Shoelace component flag 6163 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217093>`__ 6164 (issue `#347966938 <https://pwbug.dev/347966938>`__) 6165* `Implement responsive toolbar behavior 6166 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215591>`__ 6167 (issue `#309650360 <https://pwbug.dev/309650360>`__) 6168 6169Languages 6170========= 6171 6172Python 6173------ 6174* `Add python targets for pw_i2c, pw_digital_io protos 6175 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216736>`__ 6176 6177Rust 6178---- 6179 6180* `Fix clippy lints 6181 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217136>`__ 6182 6183Miscellaneous 6184============= 6185 6186OWNERS 6187------ 6188* `Add gwsq 6189 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207731>`__ 6190 6191Targets 6192======= 6193References to ``configGENERATE_RUN_TIME_STATS`` have been removed because 6194the implementations are incomplete. 6195 6196* `Remove configGENERATE_RUN_TIME_STATS functions 6197 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218711>`__ 6198 6199RP2040 6200------ 6201The new ``flash_rp2040`` rule makes it easier to flash Raspberry Pi RP2040s 6202in Bazel.The new ``flash`` Bazel rule makes it easier to flash RP2040s from 6203a Python script. 6204 6205* `Add pw_system_async example 6206 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218691>`__ 6207* `Mark rp2040_binary as a non-executable target for host 6208 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218394>`__ 6209* `Update docs 6210 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217039>`__ 6211* `Add debugprobe version detection and warning 6212 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217055>`__ 6213* `Switch to use upstream develop branch of Pico SDK 6214 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216234>`__ 6215* `Add IFTT to keep the rp2040 transition and config in sync 6216 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218431>`__ 6217* `Add missing backends 6218 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218373>`__ 6219* `Unify board selection cmdline args 6220 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/217716>`__ 6221 (issue `#348067379 <https://pwbug.dev/348067379>`__) 6222* `Add a bazel rule for flashing 6223 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216314>`__ 6224* `Add interrupt and freertos backends 6225 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216493>`__ 6226* `Add flash main target 6227 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216492>`__ 6228* `Add rp2040_binary transition 6229 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216491>`__ 6230* `Refactor test runner and extract flashing 6231 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216152>`__ 6232 6233Third-party 6234=========== 6235 6236FreeRTOS 6237-------- 6238``configUSE_MALLOC_FAILED_HOOK`` can now be enabled to detect out-of-memory 6239errors when using FreeRTOS's heap implementation. 6240 6241* `Add failed malloc hook to support lib 6242 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218380>`__ 6243* `Fix Bazel build 6244 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/218351>`__ 6245 6246Nanopb 6247------ 6248* `Import proto module 6249 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216991>`__ 6250 6251Pico SDK 6252-------- 6253* `Fix exception names in GN build 6254 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216435>`__ 6255 (issue `#347355069 <https://pwbug.dev/347355069>`__) 6256 6257------------ 6258Jun 13, 2024 6259------------ 6260.. _bootstrap.fish: https://cs.opensource.google/pigweed/pigweed/+/main:bootstrap.fish 6261 6262Highlights (May 30, 2024 to Jun 13, 2024): 6263 6264* **pw_allocator support in pw_mallc**: ``pw_malloc`` now supports 6265 :ref:`pw_allocator <module-pw_allocator>`-based backends. 6266* **New pw_build Bazel rules**: ``pw_py_test`` rule wraps ``py_test``, 6267 :ref:`pw_elf_to_dump <module-pw_build-bazel-pw_elf_to_dump>` takes a 6268 binary executable and produces a text file containing the full binary layout, 6269 and :ref:`pw_elf_to_bin <module-pw_build-bazel-pw_elf_to_bin>` rule takes 6270 a binary executable and produces a file with all ELF headers removed. 6271* **Improved Fish shell support**: The ``pw`` and ``pw build`` 6272 commands now support `Fish <https://fishshell.com/>`__ shell completion. 6273 The new `bootstrap.fish`_ script demonstrates how to bootstrap a Pigweed 6274 project from a Fish shell and makes it easier for Fish users to contribute 6275 to upstream Pigweed. 6276* **More informative modules index**: The :ref:`modules index <docs-module-guides>` 6277 now shoes useful metadata for each module, such as a summary of the 6278 module's purpose and the programming languages that the module supports. 6279 6280Active SEEDs 6281============ 6282Help shape the future of Pigweed! Please visit :ref:`seed-0000` 6283and leave feedback on the RFCs (i.e. SEEDs) marked 6284``Open for Comments``. 6285 6286Modules 6287======= 6288 6289pw_allocator 6290------------ 6291The ``pw::allocator::Layout`` constructor is now marked ``explicit`` to 6292ensure that functions that take ``Layout`` instances as arguments don't 6293silently accept and convert other types. The ``pw::allocator::FreeList`` and 6294``pw::allocator::FreeListHeap`` interfaces have been removed. 6295 6296* `Make Layout constructor explicit 6297 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211915>`__ 6298* `Remove FreeList and FreeListHeap 6299 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211914>`__ 6300 (issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__) 6301* `Refactor Bucket chunk list 6302 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215488>`__ 6303 (issue `#345526413 <https://issues.pigweed.dev/issues/345526413>`__) 6304 6305pw_analog 6306--------- 6307* `Add module metadata 6308 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214500>`__ 6309 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6310 6311pw_android_toolchain 6312-------------------- 6313* `Add module metadata 6314 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214501>`__ 6315 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6316 6317pw_arduino_build 6318---------------- 6319* `Add module metadata 6320 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214173>`__ 6321 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6322 6323pw_assert 6324--------- 6325* `Add module metadata 6326 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214539>`__ 6327 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6328 6329pw_async 6330-------- 6331* `Add module metadata 6332 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214499>`__ 6333 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6334 6335pw_async2 6336--------- 6337* `Fix location of backends in sitenav 6338 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213914>`__ 6339 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6340 6341pw_base64 6342--------- 6343* `Add module metadata 6344 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214540>`__ 6345 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6346 6347pw_bloat 6348-------- 6349* `Build and run \`pw bloat\` CLI command in Bazel 6350 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215456>`__ 6351* `Add module metadata 6352 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214177>`__ 6353 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6354 6355pw_blob_store 6356------------- 6357* `Add module metadata 6358 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214502>`__ 6359 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6360 6361pw_bluetooth 6362------------ 6363* `Add module metadata 6364 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214575>`__ 6365 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6366* `Add HCI StatusCode values 6367 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213553>`__ 6368 6369pw_bluetooth_hci 6370---------------- 6371* `Add module metadata 6372 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214576>`__ 6373 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6374 6375pw_bluetooth_profiles 6376--------------------- 6377* `Add module metadata 6378 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214612>`__ 6379 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6380 6381pw_bluetooth_proxy 6382------------------ 6383The new ``pw::bluetooth::proxy::HasSendAclCapability()`` function indicates 6384whether the proxy has the capability to send ACL packets. 6385 6386* `Remove H4HciPacketSendFn alias 6387 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215221>`__ 6388 (issue `#326499764 <https://issues.pigweed.dev/issues/326499764>`__) 6389* `Fix const on sendGattNotify param 6390 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214864>`__ 6391 (issue `#326499764 <https://issues.pigweed.dev/issues/326499764>`__) 6392* `Mark unused parameters with [[maybe_unused]] 6393 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214637>`__ 6394 (issue `#345526399 <https://issues.pigweed.dev/issues/345526399>`__) 6395* `Add maybe_unused to make downstream happy 6396 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214360>`__ 6397 (issue `#344031126 <https://issues.pigweed.dev/issues/344031126>`__) 6398* `Add ProxyHost::HasSendAclCapability() 6399 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214101>`__ 6400 (issue `#344030724 <https://issues.pigweed.dev/issues/344030724>`__) 6401* `Update H4HciPacket construction 6402 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214233>`__ 6403* `Add sendGattNotify stub 6404 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214106>`__ 6405 (issue `#344031126 <https://issues.pigweed.dev/issues/344031126>`__) 6406* `Fix compilation errors 6407 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213733>`__ 6408* `Pass H4 as event type plus an HCI span 6409 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213664>`__ 6410 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 6411* `Tweak CreateNonInteractingToHostBuffer to take array 6412 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213663>`__ 6413 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 6414 6415pw_boot_cortex_m 6416---------------- 6417* `Add module metadata 6418 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215458>`__ 6419 6420pw_build 6421-------- 6422The new ``pw_py_test`` rule wraps ``py_test`` and defaults to setting 6423``target_compatible_with`` to ``host`` only. The new 6424:ref:`pw_elf_to_dump <module-pw_build-bazel-pw_elf_to_dump>` rule takes a 6425binary executable and produces a text file containing the full binary layout. 6426The new :ref:`pw_elf_to_bin <module-pw_build-bazel-pw_elf_to_bin>` rule takes 6427a binary executable and produces a file with all ELF headers removed. 6428 6429* `Move host_backend_alias (part 1) 6430 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215740>`__ 6431 (issue `#344654805 <https://issues.pigweed.dev/issues/344654805>`__) 6432* `Add python.install into the default GN group 6433 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215791>`__ 6434* `Introduce pw_py_test to bazel 6435 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215258>`__ 6436* `Add module metadata 6437 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214506>`__ 6438 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6439* `Clarify docs on pw_elf_to_bin 6440 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213616>`__ 6441* `Update intro 6442 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214062>`__ 6443 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6444* `Add pw_elf_to_dump rule 6445 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212851>`__ 6446* `Add pw_elf_to_bin rule 6447 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212671>`__ 6448* `Populate executable field in return from link_cc utility 6449 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212631>`__ 6450 6451pw_build_info 6452------------- 6453* `Add module metadata 6454 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214616>`__ 6455 6456pw_build_mcuxpresso 6457------------------- 6458* `Add module metadata 6459 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214507>`__ 6460 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6461 6462pw_bytes 6463-------- 6464* `Add module metadata 6465 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214509>`__ 6466 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6467 6468pw_channel 6469---------- 6470* `Add module metadata 6471 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214621>`__ 6472 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6473* `Update function documentation 6474 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213712>`__ 6475* `Remove manual registration from epoll channel 6476 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213653>`__ 6477 6478pw_checksum 6479----------- 6480* `Add module metadata 6481 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214623>`__ 6482 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6483 6484pw_chre 6485------- 6486* `Add module metadata 6487 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214633>`__ 6488 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6489 6490pw_chrono 6491--------- 6492:ref:`libc time wrappers <module-pw_chrono-libc-time-wrappers>` are now 6493provided to improve compatibility with software not written for embedded 6494systems that depends on ``gettimeofday`` and ``time`` from POSIX. 6495 6496* `Group common backends in the GN build 6497 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__ 6498* `Introduce SystemClock backed link time wrappers 6499 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213551>`__ 6500 6501pw_cli 6502------ 6503.. _Fish: https://fishshell.com/ 6504 6505The ``pw`` and ``pw build`` commands now support `Fish`_ shell completion. 6506 6507* `Fish shell completion 6508 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213734>`__ 6509 6510pw_clock_tree 6511------------- 6512The new ``pw::clock_tree::ClockSourceNoOp`` class can be used to satisfy 6513the dependency of a source clock tree element for other clock source classes. 6514The new ``pw::clock_tree::ElementController`` class provides easier integration 6515of optional clock tree logic into existing drivers. 6516 6517* `Introduce ClockSourceNoOp class 6518 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213851>`__ 6519 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6520* `Introduce ElementController class 6521 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212095>`__ 6522 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6523* `Fix source set name and visibility 6524 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212151>`__ 6525 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6526 6527pw_clock_tree_mcuxpresso 6528------------------------ 6529* `Comment clean up 6530 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214573>`__ 6531 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6532* `Add ClockMcuxpressoRtc support 6533 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214572>`__ 6534 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6535* `Remove unnecessary pw:: 6536 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214494>`__ 6537 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6538* `Add ClockMcuxpressoAudioPll support 6539 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214332>`__ 6540 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6541* `Configure ClkIn as source for osc_clk 6542 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214234>`__ 6543 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6544* `Make Mclk and ClkIn dependent elements 6545 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213853>`__ 6546 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6547* `Move example code out of docs 6548 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213852>`__ 6549 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6550* `Fix source set name and visibility 6551 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212152>`__ 6552 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6553 6554pw_console 6555---------- 6556Theme colors are now correctly applied when running ``pw console`` with the 6557``--config-file`` option. 6558 6559* `Reload theme when using a config-file 6560 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214891>`__ 6561 6562pw_containers 6563------------- 6564The ``pw::Vector::at()`` function signature was changed to take ``size_t`` 6565instead of ``size_type``. The new ``pw::InlineVarLenEntryQueue::try_push()`` 6566function is similar to ``pw::InlineVarLenEntryQueue::push_overwrite()`` but it 6567drops entries instead of overwriting old ones. The new 6568``pw::InlineVarLenEntryQueue::max_size()`` function returns the maximum number 6569of empty entries. 6570 6571* `Make Vector::at() use size_t 6572 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215859>`__ 6573* `Disallow deletion from InlineVarLenEntryQueue base 6574 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210639>`__ 6575* `InlineVarLenEntryQueue::try_push() function 6576 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213612>`__ 6577 6578pw_digital_io 6579------------- 6580* `Remove invalid digital_io_controller reference 6581 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214691>`__ 6582 6583pw_digital_io_linux 6584------------------- 6585``pw_digital_io_linux`` now supports input interrupts. The new 6586:ref:`watch <module-pw_digital_io_linux-cli-watch>` command in the CLI 6587tool configures a GPIO line as an input and watches for interrupt events. 6588 6589* `Add trigger option to CLI watch command 6590 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213131>`__ 6591* `Add "watch" command 6592 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209596>`__ 6593* `Add support for input interrupts 6594 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209595>`__ 6595* `Move examples out to compiled source files 6596 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209771>`__ 6597* `Update mock_vfs 6598 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209594>`__ 6599* `Add log_errno.h 6600 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209593>`__ 6601 6602pw_docgen 6603--------- 6604* `Update module metadata status badge colors 6605 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214574>`__ 6606 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6607* `Add module metadata 6608 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214182>`__ 6609 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6610* `Fix search results increasing in width 6611 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215332>`__ 6612 6613pw_env_setup 6614------------ 6615The new `bootstrap.fish`_ script demonstrates how to bootstrap a Pigweed 6616project from a Fish shell and makes it easier for Fish users to contribute 6617to upstream Pigweed. 6618 6619* `Update clang next version 6620 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212432>`__ 6621* `Bootstrap fish-shell support 6622 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/56840>`__ 6623 6624pw_grpc 6625------- 6626* `Remove send queue timeout 6627 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214099>`__ 6628 (issue `#345088816 <https://issues.pigweed.dev/issues/345088816>`__) 6629 6630pw_ide 6631------ 6632* `Add module metadata 6633 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215512>`__ 6634* `Preserve modified editor settings 6635 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213670>`__ 6636 (issue `#344681641 <https://issues.pigweed.dev/issues/344681641>`__) 6637* `Fix constant Pylance crashes 6638 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213668>`__ 6639 (issue `#338607100 <https://issues.pigweed.dev/issues/338607100>`__) 6640 6641pw_log 6642------ 6643* `Add module metadata 6644 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214184>`__ 6645 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6646* `Cast log level to int32_t 6647 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212092>`__ 6648 (issue `#343518613 <https://issues.pigweed.dev/issues/343518613>`__) 6649 6650pw_log_string 6651------------- 6652* `Introduce link time assert() wrapper for newlib 6653 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213072>`__ 6654* `Set default log backend 6655 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212832>`__ 6656 6657pw_malloc 6658--------- 6659``pw_malloc`` now supports :ref:`pw_allocator <module-pw_allocator>`-based 6660backends. 6661 6662* `Add allocator backends 6663 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208417>`__ 6664 6665pw_multibuf 6666----------- 6667The new ``pw::multibuf::MultiBuf::IsContiguous()`` method checks if a multibuf 6668is contiguous and the new ``pw::multibuf::MultiBuf::ContiguousSpan()`` method 6669provides a way to access contiguous data as a span. The new ``CopyTo()``, 6670``CopyFrom()``, and ``CopyFromAndTruncate()`` methods also simplify 6671interactions with contiguous byte spans. 6672 6673* `Contiguous span functions 6674 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214859>`__ 6675* `Functions for copying into and out of a MultiBuf 6676 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214858>`__ 6677* `Truncate after an iterator 6678 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214857>`__ 6679* `AdvanceToData in iterator constructor 6680 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214503>`__ 6681* `Fix Truncate(0) on empty MultiBuf 6682 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213661>`__ 6683* `SimpleAllocatorForTest 6684 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212312>`__ 6685 6686pw_multisink 6687------------ 6688The new ``pw::multisink::MultiSink::GetUnreadEntriesSize()`` and 6689``pw::multisink::MultiSink::UnsafeGetUnreadEntriesSize()`` methods 6690implement :ref:`seed-0124`. The new ``PW_MULTISINK_CONFIG_LOCK_TYPE`` 6691macro configures the underlying lock that's used to guard multisink 6692reads or writes. 6693 6694* `Add GetUnreadEntriesSize to Drain 6695 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213472>`__ 6696* `Add option to inject a user defined lock 6697 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213211>`__ 6698 6699pw_presubmit 6700------------ 6701* `Add --fresh to cmake presubmits 6702 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215736>`__ 6703* `Add coverage of rp2040 build 6704 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215231>`__ 6705 (issue `#342638018 <https://issues.pigweed.dev/issues/342638018>`__) 6706* `Add module metadata 6707 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214571>`__ 6708 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6709* `Remove shellcheck from lintformat program 6710 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213617>`__ 6711 6712pw_protobuf 6713----------- 6714* `Add module metadata 6715 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214187>`__ 6716 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6717 6718pw_ring_buffer 6719-------------- 6720* `Add EntriesSize API to Reader 6721 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213471>`__ 6722 (issue `#337150071 <https://issues.pigweed.dev/issues/337150071>`__) 6723 6724pw_router 6725--------- 6726* `Add module metadata 6727 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214190>`__ 6728 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6729 6730pw_rpc 6731------ 6732The Python client API now uses positional-only arguments. 6733 6734* `Use positional-only arguments in Python client API 6735 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215532>`__ 6736* `Add module metadata 6737 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214032>`__ 6738 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6739* `Fix hyperlink 6740 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213556>`__ 6741 6742pw_sensor 6743--------- 6744* `Add Bazel support for Python package 6745 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214534>`__ 6746 6747pw_spi 6748------ 6749* `Fix sitenav location for RP2040 backend 6750 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214031>`__ 6751 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6752 6753pw_spi_rp2040 6754------------- 6755* `Add module metadata 6756 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214232>`__ 6757 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6758 6759pw_stream 6760--------- 6761* `Fix include in mpsc_stream 6762 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215075>`__ 6763 6764pw_stream_uart_mcuxpresso 6765------------------------- 6766* `Make dma_stream Write of size 0 succeed 6767 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214151>`__ 6768* `InterruptSafeWriter example 6769 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212513>`__ 6770 (issue `#343773769 <https://issues.pigweed.dev/issues/343773769>`__) 6771* `Stream example 6772 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212512>`__ 6773 (issue `#343773769 <https://issues.pigweed.dev/issues/343773769>`__) 6774* `Use clock tree 6775 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209534>`__ 6776 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 6777* `DMA stream example 6778 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212391>`__ 6779 (issue `#343773769 <https://issues.pigweed.dev/issues/343773769>`__) 6780 6781pw_sync 6782------- 6783The new ``pw_targets_FREERTOS_BACKEND_GROUP`` GN rule sets up multiple 6784modules to use FreeRTOS backends. 6785 6786* `Group common backends in the GN build 6787 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__ 6788 6789pw_system 6790--------- 6791``pw-system-console`` now connects to the first detected port if ``--device`` 6792isn't provided and only one port is detected or it shows an interactive 6793prompt if multiple ports are detected. :ref:`target-host-device-simulator-demo` 6794now shows how to run ``pw-system-console`` with ``host_device_simulator`` in 6795Bazel-based projects. 6796 6797* `Console interactive serial port selection 6798 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214912>`__ 6799 (issue `#343949763 <https://issues.pigweed.dev/issues/343949763>`__) 6800* `Host device simulator entrypoint 6801 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214972>`__ 6802* `Move config variables to config.h 6803 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213811>`__ 6804* `Mention that extra libs need alwayslink 6805 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212831>`__ 6806* `Add host_device_simulator transitions 6807 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212414>`__ 6808 6809pw_target_runner 6810---------------- 6811* `Switch to Bazel build 6812 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214059>`__ 6813* `Add module metadata 6814 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214317>`__ 6815 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6816 6817pw_thread 6818--------- 6819* `Group common backends in the GN build 6820 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215336>`__ 6821 6822pw_thread_freertos 6823------------------ 6824* `Expand comment to help when debugging linker errors 6825 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213669>`__ 6826 6827pw_toolchain 6828------------ 6829* `Enable PIC on host 6830 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214495>`__ 6831* `Add bazel toolchain for cortex-m0plus 6832 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215479>`__ 6833 (issue `#346609655 <https://issues.pigweed.dev/issues/346609655>`__) 6834* `Add module metadata 6835 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214351>`__ 6836 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6837* `Add IOKit and Security headers to mac toolchains 6838 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214013>`__ 6839 6840pw_toolchain_bazel 6841------------------ 6842* `Add cortex-a32 mcpu value 6843 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213855>`__ 6844 (issue `#342510882 <https://issues.pigweed.dev/issues/342510882>`__) 6845 6846pw_transfer 6847----------- 6848* `Remove unused imports 6849 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215478>`__ 6850* `Fix ConcurrentModificationException in handleTimeouts() 6851 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214065>`__ 6852 (issue `#322919275 <https://issues.pigweed.dev/issues/322919275>`__) 6853* `Always terminate transfers on stream reopen 6854 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212953>`__ 6855 6856pw_uart 6857------- 6858* `Add module metadata 6859 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214252>`__ 6860 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6861 6862pw_varint 6863--------- 6864* `Add module metadata 6865 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214352>`__ 6866 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6867 6868pw_watch 6869-------- 6870Watching now works in directories other than ``PW_ROOT``. 6871 6872* `Enable watching from non-PW_ROOT 6873 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215735>`__ 6874 (issue `#328083083 <https://issues.pigweed.dev/issues/328083083>`__) 6875 6876pw_web 6877------ 6878* `Get icon fonts via Google Fonts URL 6879 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212871>`__ 6880 (issue `#332587834 <https://issues.pigweed.dev/issues/332587834>`__) 6881* `Fix last column filling space in log table 6882 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212154>`__ 6883 6884Build systems 6885============= 6886 6887Bazel 6888----- 6889* `Stop using deprecated pw_facade aliases 6890 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/216151>`__ 6891 (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__) 6892* `Don't use llvm_toolchain for fuchsia_clang 6893 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215651>`__ 6894 (issue `#346354914 <https://issues.pigweed.dev/issues/346354914>`__) 6895* `Fix reference to nonexistent file 6896 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215511>`__ 6897* `Roll latest rules_libusb 6898 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214792>`__ 6899* `No integration tests in wildcard build 6900 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214056>`__ 6901 (issue `#344654806 <https://issues.pigweed.dev/issues/344654806>`__) 6902* `Move integration build config in-repo 6903 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214092>`__ 6904 (issue `#344654806 <https://issues.pigweed.dev/issues/344654806>`__) 6905 6906Hardware targets 6907================ 6908 6909host_device_simulator 6910--------------------- 6911* `Make host_device_simulator_binary \`bazel run\`-able 6912 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214693>`__ 6913 6914rp2040 6915------ 6916* `Add bazel picotool support 6917 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214861>`__ 6918* `Add bazel support for rp2040_utils pylib 6919 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211591>`__ 6920 (issue `#342634966 <https://issues.pigweed.dev/issues/342634966>`__) 6921* `Support running tests using the debug probe 6922 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211363>`__ 6923* `Add pico/debug probe filtering flags 6924 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212611>`__ 6925* `Temporarily disable remaining failing rp2040 tests 6926 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215490>`__ 6927* `Fix test runner scripts to correct check if args are specified 6928 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214794>`__ 6929* `Support bazel wildcard build on rp2040 6930 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213071>`__ 6931 (issue `#343467774 <https://issues.pigweed.dev/issues/343467774>`__) 6932 6933stm32f429i 6934---------- 6935* `Add baremetal bazel build support 6936 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214626>`__ 6937 (issue `#344661765 <https://issues.pigweed.dev/issues/344661765>`__) 6938 6939OS support 6940========== 6941 6942Zephyr 6943------ 6944* `Fix typo 6945 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213271>`__ 6946 6947FreeRTOS 6948-------- 6949FreeRTOS application function implementations like ``vApplicationStackOverflowHook()`` 6950are now shared between multiple hardware targets. 6951 6952* `Share common FreeRTOS function implementations 6953 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213737>`__ 6954 6955Docs 6956==== 6957The :ref:`modules index <docs-module-guides>` now includes metadata for each 6958module such as a summary of each module and what languages each module 6959supports. The ``pigweed.dev`` sitenav was simplified. 6960:ref:`docs-blog-02-bazel-feature-flags` was published. A "skip to main 6961content" accessibility feature was added to ``pigweed.dev``. 6962 6963* `Fix Python package dependencies for sphinx 6964 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/215852>`__ 6965* `Auto-generate modules index from metadata 6966 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214711>`__ 6967 (issue `#339741960 <https://issues.pigweed.dev/issues/339741960>`__) 6968* `Update sitenav 6969 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214797>`__ 6970* `Update homepage tagline 6971 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213951>`__ 6972* `Add "skip to main content" a11y feature 6973 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213659>`__ 6974 (issue `#344643289 <https://issues.pigweed.dev/issues/344643289>`__) 6975* `blog: Bazel feature flags 6976 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209922>`__ 6977* `Update changelog 6978 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212491>`__ 6979 6980Third-party software support 6981============================ 6982* `Add @libusb to bazel workspace 6983 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214094>`__ 6984* `Symlink probe-rs binary into common location 6985 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214057>`__ 6986* `Add probe-rs 6987 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213693>`__ 6988 6989mimxrt595 6990--------- 6991* `Upgrade to SDK_2_14_0_EVK-MIMXRT59 6992 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212451>`__ 6993 (issue `#343775421 <https://issues.pigweed.dev/issues/343775421>`__) 6994 6995GitHub 6996------ 6997* `Fix step name 6998 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213692>`__ 6999 7000io_bazel_rules_go 7001----------------- 7002* `Update to fork which disables warnings 7003 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/214851>`__ 7004 7005pigweed.json 7006============ 7007* `Add config for Bazel builders 7008 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/213991>`__ 7009 (issue `#275107504 <https://issues.pigweed.dev/issues/275107504>`__) 7010 7011------------ 7012May 30, 2024 7013------------ 7014Highlights (May 17, 2024 to May 30, 2024): 7015 7016* **Clock management**: The new :ref:`module-pw_clock_tree` module manages 7017 generic clock tree elements such as clocks, clock selectors, and clock 7018 dividers. 7019* **GitHub Actions**: The new :ref:`docs-github-actions` guide shows you 7020 how to set up GitHub Actions to build and test a Bazel-based Pigweed 7021 project when a pull request is received. 7022* **pw_system and Bazel**: :ref:`module-pw_system` usage in Bazel has been 7023 simplified by gathering all required ``pw_system`` components into one 7024 target and providing label flags that can set platform-dependent 7025 dependencies. 7026* **Channels and Linux Epoll**: The new :cpp:class:`pw::channel::EpollChannel` 7027 class sends and receives data through a file descriptor, with read and write 7028 notifications backed by Linux's epoll system. 7029 7030Active SEEDs 7031============ 7032Help shape the future of Pigweed! Please visit :ref:`seed-0000` 7033and leave feedback on the RFCs (i.e. SEEDs) marked 7034``Open for Comments``. 7035 7036Modules 7037======= 7038 7039pw_allocator 7040------------ 7041* `Add BlockAllocator::MeasureFragmentation 7042 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209933>`__ 7043* `Fix Android build 7044 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211871>`__ 7045* `Refactor optional Allocator methods 7046 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210402>`__ 7047* `Make Init methods infallible 7048 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209044>`__ 7049 (issue `#338389412 <https://issues.pigweed.dev/issues/338389412>`__) 7050* `Reduce Block fragmentation 7051 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209538>`__ 7052 (issue `#328831791 <https://issues.pigweed.dev/issues/328831791>`__) 7053* `Fix #if PW_HAVE_FEATURE(__cpp_rtti) 7054 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210816>`__ 7055 (issue `#341975367 <https://issues.pigweed.dev/issues/341975367>`__) 7056* `Track requested sizes in blocks 7057 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210395>`__ 7058* `Fix Android build 7059 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210571>`__ 7060 (issue `#A <https://issues.pigweed.dev/issues/N/A>`__) 7061* `Move large values to test fixtures 7062 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210398>`__ 7063* `Add AsPmrAllocator 7064 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207170>`__ 7065 7066pw_assert 7067--------- 7068* `Add missing dep in Android.bp 7069 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211271>`__ 7070 7071pw_build 7072-------- 7073The new ``PW_MUST_PLACE`` macro ensures that linker script inputs are 7074non-zero sized. 7075 7076* `Introduce PW_MUST_PLACE linker script macro 7077 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211924>`__ 7078* `Add deps support to pw_linker_script 7079 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211194>`__ 7080 (issue `#331927492 <https://issues.pigweed.dev/issues/331927492>`__) 7081 7082pw_channel 7083---------- 7084The new :cpp:class:`pw::channel::EpollChannel` class sends and receives 7085data through a file descriptor, with read and write notifications backed 7086by Linux's epoll system. 7087 7088* `Only open read/write if channel is readable/writable 7089 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212212>`__ 7090* `Add EpollChannel 7091 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210813>`__ 7092* `Consistent datagram/byte channel aliases 7093 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210796>`__ 7094 7095pw_chre 7096------- 7097* `Update CHRE revision 7098 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210011>`__ 7099 (issue `#341137451 <https://issues.pigweed.dev/issues/341137451>`__) 7100 7101pw_clock_tree 7102------------- 7103The new :ref:`module-pw_clock_tree` module manages generic clock tree 7104elements such as clocks, clock selectors, and clock dividers. 7105 7106* `Introduce new ClockDivider class 7107 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211292>`__ 7108 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 7109* `ClockTree support Element ops 7110 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211149>`__ 7111 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 7112* `Introduce Element may_block() 7113 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211148>`__ 7114 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 7115* `Generic clock tree management 7116 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204310>`__ 7117 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 7118 7119pw_clock_tree_mcuxpresso 7120------------------------ 7121The new :ref:`module-pw_clock_tree_mcuxpresso` module is an NXP 7122MCUXPresso backend for :ref:`module-pw_clock_tree`. 7123 7124* `Mcuxpresso module 7125 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204245>`__ 7126 (issue `#331672574 <https://issues.pigweed.dev/issues/331672574>`__) 7127 7128pw_config_loader 7129---------------- 7130* `Remove unnecessary dep 7131 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210286>`__ 7132 7133pw_cpu_exception_cortex_m 7134------------------------- 7135The new crash analysis API provides data about CPU state during exceptions. 7136See :ref:`module-pw_cpu_exception_cortex_m-crash-facade-setup`. 7137 7138* `Add crash analysis API 7139 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204248>`__ 7140* `Fix incorrect inputs to util_test 7141 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211551>`__ 7142* `Fix checks for ARMv8 7143 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210272>`__ 7144 7145pw_emu 7146------ 7147* `Exclude tests module from the Pigweed Python package 7148 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211977>`__ 7149 7150pw_env_setup 7151------------ 7152* `PyPI version bump to 0.0.16 7153 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211136>`__ 7154* `Build an extra example pypi distribution 7155 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211134>`__ 7156* `Remove f-strings from github_visitor 7157 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210274>`__ 7158 7159pw_grpc 7160------- 7161* `Fix warnings in format strings 7162 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211391>`__ 7163 7164pw_hex_dump 7165----------- 7166* `Add Android.bp 7167 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212231>`__ 7168 7169pw_libcxx 7170--------- 7171* `Only enable in clang builds 7172 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211941>`__ 7173 7174pw_log_basic 7175------------ 7176* `Fixing sign conversion error for logging 7177 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210331>`__ 7178 7179pw_multisink 7180------------ 7181* `Fix compiler warnings for tests 7182 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212051>`__ 7183 (issue `#343480404 <https://issues.pigweed.dev/issues/343480404>`__) 7184 7185pw_preprocessor 7186--------------- 7187* `Remove PW_HAVE_FEATURE 7188 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211016>`__ 7189 (issue `#341975367 <https://issues.pigweed.dev/issues/341975367>`__) 7190 7191pw_rpc 7192------ 7193* `Include FakeChannelOutput in soong target 7194 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209991>`__ 7195 (issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__) 7196 7197pw_spi_mcuxpresso 7198----------------- 7199* `Remove unnecessary debug messages 7200 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210711>`__ 7201 7202pw_stream_uart_mcuxpresso 7203------------------------- 7204* `Fix unused parameter warnings 7205 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211571>`__ 7206 7207pw_system 7208--------- 7209:ref:`module-pw_system` usage in Bazel has been simplified by gathering 7210all required ``pw_system`` components into one target and providing label 7211flags that can set platform-dependent dependencies. 7212 7213* `Simplify pw_system usage in Bazel 7214 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210116>`__ 7215 (issue `#341144405 <https://issues.pigweed.dev/issues/341144405>`__) 7216 7217pw_thread 7218--------- 7219* `Fix thread snapshot service test 7220 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/212111>`__ 7221 7222pw_toolchain 7223------------ 7224* `Add manual tag to Rust toolchains 7225 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211934>`__ 7226 (issue `#342695883 <https://issues.pigweed.dev/issues/342695883>`__) 7227* `Add clang-apply-replacements plugin 7228 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210405>`__ 7229 (issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__) 7230 7231pw_transfer 7232----------- 7233* `Fix transfer_thread_test initialization order 7234 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210352>`__ 7235* `End active transfers when RPC stream changes 7236 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209876>`__ 7237 7238pw_uart 7239------- 7240* `Add pw_uart to CMakeLists 7241 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210731>`__ 7242 7243pw_unit_test 7244------------ 7245* `Don't execute multiple test suites at the same time 7246 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210531>`__ 7247* `Ensure alignment of test fixtures 7248 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210278>`__ 7249 7250pw_web 7251------ 7252* `Move shoelace split panel import 7253 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211940>`__ 7254* `Add split/resize view guide in docs 7255 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211471>`__ 7256* `Implement split log views with resize 7257 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209471>`__ 7258 (issue `#333891204 <https://issues.pigweed.dev/issues/333891204>`__) 7259 7260Build 7261===== 7262 7263Bazel 7264----- 7265Clang's ``AddressSanitizer`` is now supported. See 7266:ref:`docs-automated-analysis-clang-sanitizers`. 7267 7268* `Support asan in Bazel 7269 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211369>`__ 7270 (issue `#301487567 <https://issues.pigweed.dev/issues/301487567>`__) 7271* `Update rules_rust to 0.45.1 7272 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211939>`__ 7273 (issue `#342673389 <https://issues.pigweed.dev/issues/https://pwbug.dev/342673389>`__) 7274* `Explicitly load rules_python in BUILD.bazel files 7275 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211361>`__ 7276 7277Targets 7278======= 7279 7280rp2040 7281------ 7282* `Additional bazel build file coverage 7283 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211351>`__ 7284 (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__, 7285 issue `#305746219 <https://issues.pigweed.dev/issues/305746219>`__) 7286 7287* `Enable thread high water accounting 7288 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210831>`__ 7289* `Update docs to add missing picotool dependency 7290 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210811>`__ 7291* `Save test run log files 7292 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210814>`__ 7293* `Increase RPC thread stack size to 16K 7294 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210832>`__ 7295* `Allow using rp2040 devices in bootloader mode 7296 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210525>`__ 7297* `Refresh target docs 7298 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210404>`__ 7299* `Update openocd flashing instructions 7300 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210400>`__ 7301* `Increase device_detector verbosity 7302 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210411>`__ 7303* `Add upstream Bazel platform definition 7304 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211592>`__ 7305* `Renable tests that pass with larger stack frames 7306 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211147>`__ 7307* `Raise minimal stack size to 1KB 7308 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210517>`__ 7309* `Replace exceptions with logging 7310 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210396>`__ 7311 7312OS support 7313========== 7314 7315freertos 7316-------- 7317* `Clarify Bazel documentation 7318 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211052>`__ 7319 7320Docs 7321==== 7322The new :ref:`docs-github-actions` guide shows you how to set up GitHub Actions 7323to build and test a Pigweed project when a pull request is received. 7324 7325* `Add notes about GitHub Actions 7326 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211135>`__ 7327 (issue `#338083578 <https://issues.pigweed.dev/issues/338083578>`__) 7328* `Instructions for freertos.BUILD.bazel 7329 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211193>`__ 7330* `Create files in current directory 7331 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206196>`__ 7332* `Update changelog 7333 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210285>`__ 7334 7335Miscellaneous 7336============= 7337.. common_typos_disable 7338 7339* `Fix typo succesfully->successfully 7340 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210671>`__ 7341* `Update Android.bp after GetAlignedSubspan move 7342 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210518>`__ 7343* `Add link to format 7344 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/211011>`__ 7345 7346.. common_typos_enable 7347 7348------------ 7349May 16, 2024 7350------------ 7351Highlights (May 2, 2024 to May 16, 2024): 7352 7353* **Coroutines**: You can now create asynchronous tasks using C++20 7354 :ref:`coroutines <module-pw_async2-guides-coroutines>`. 7355* **Rust with Bazel**: The Rust toolchain can now be used by downstream projects 7356 using Bazel. 7357* **More MCUXpresso support**: Several modules have additional support for 7358 projects built using the NXP MCUXpresso SDK, including multiple core support 7359 in :ref:`module-pw_build_mcuxpresso`, a new initiator in 7360 :ref:`module-pw_i2c_mcuxpresso`, a new responder in 7361 :ref:`module-pw_spi_mcuxpresso`, and a new :ref:`module-pw_dma_mcuxpresso` 7362 module. 7363 7364Active SEEDs 7365============ 7366Help shape the future of Pigweed! Please visit :ref:`seed-0000` 7367and leave feedback on the RFCs (i.e. SEEDs) marked 7368``Open for Comments``. 7369 7370.. Note: There is space between the following section headings 7371.. and commit lists to remind you to write a summary for each 7372.. section. If a summary is not needed, delete the extra 7373.. space. 7374 7375Modules 7376======= 7377 7378pw_allocator 7379------------ 7380* `Fix data race 7381 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208412>`__ 7382 (issue `#333386065 <https://issues.pigweed.dev/issues/333386065>`__) 7383* `Add BucketBlockAllocator 7384 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198155>`__ 7385* `Improve namespacing 7386 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206153>`__ 7387* `Use singletons for stateless allocators 7388 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207337>`__ 7389 7390pw_assert 7391--------- 7392* `Ensure condition does not contain stray % 7393 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208140>`__ 7394 (issue `#337268540 <https://issues.pigweed.dev/issues/337268540>`__) 7395 7396pw_async2 7397--------- 7398C++20 users can now define asynchronous tasks using 7399:ref:`module-pw_async2-guides-coroutines`. 7400 7401* `Move PW_CO_TRY functions 7402 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209911>`__ 7403* `Add Coro<T> coroutine API 7404 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207690>`__ 7405 7406pw_bloat 7407-------- 7408Padding is now included as part of utilization in code size reports. This allows 7409developers to monitor changes in application size that smaller than the used 7410space alignment defined in the linker script. 7411 7412* `Add padding to utilization 7413 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209972>`__ 7414 (issue `#276370736 <https://issues.pigweed.dev/issues/276370736>`__) 7415 7416pw_bluetooth 7417------------ 7418* `Add a constant for max controller delay 7419 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209271>`__ 7420* `Put cmake tests in modules group 7421 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208897>`__ 7422* `Disable emboss enum traits 7423 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208591>`__ 7424 (issue `#339029458 <https://issues.pigweed.dev/issues/339029458>`__) 7425* `Remove hci_vendor 7426 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208313>`__ 7427 (issue `#338269786 <https://issues.pigweed.dev/issues/338269786>`__) 7428 7429pw_bluetooth_proxy 7430------------------ 7431* `Also support V2 of LE read buffer event 7432 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209879>`__ 7433 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7434* `Use LE read buffer event 7435 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209878>`__ 7436 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7437* `Removing trailing comma in PW_LOG call 7438 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209231>`__ 7439 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7440* `Allow setting the # of credits to reserve 7441 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208895>`__ 7442 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7443* `Add cmake build rules 7444 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208653>`__ 7445 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7446* `Update tests to remove RVNO assumptions 7447 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208652>`__ 7448 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7449* `Reserve ACL LE slots from host 7450 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207671>`__ 7451 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7452 7453pw_boot_cortex_m 7454---------------- 7455* `Emit pw_boot_Entry without prologue 7456 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208931>`__ 7457 (issue `#339107121 <https://issues.pigweed.dev/issues/339107121>`__) 7458 7459pw_build 7460-------- 7461* `pw_cc_test.lib fixup 7462 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210231>`__ 7463 (issue `#307825072 <https://issues.pigweed.dev/issues/307825072>`__, 7464 issue `#341109859 <https://issues.pigweed.dev/issues/341109859>`__) 7465* `Fix type hint 7466 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208137>`__ 7467 (issue `#338462905 <https://issues.pigweed.dev/issues/338462905>`__) 7468 7469pw_build_mcuxpresso 7470------------------- 7471:ref:`module-pw_build_mcuxpresso` now can support multiple device cores. 7472 7473* `Support multiple cores 7474 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208654>`__ 7475 7476pw_config_loader 7477---------------- 7478* `Add missing types dep 7479 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210236>`__ 7480 7481pw_cpu_exception_cortex_m 7482------------------------- 7483* `Add error flag masks 7484 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210072>`__ 7485* `Fix PSP unit test 7486 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210071>`__ 7487 7488pw_digital_io_linux 7489------------------- 7490* `Add test_utils.h for ASSERT_OK and friends 7491 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209592>`__ 7492* `Minor updates to OwnedFd 7493 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209591>`__ 7494* `Refactor test 7495 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196051>`__ 7496 7497pw_dma_mcuxpresso 7498----------------- 7499:ref:`module-pw_dma_mcuxpresso` is a new module for working with an MCUXpresso 7500DMA controller. 7501 7502* `Module for working with NXP DMA controller 7503 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208655>`__ 7504 7505pw_docs 7506------- 7507* `Add inline search to sidebar 7508 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207674>`__ 7509 7510pw_env_setup 7511------------ 7512* `Remove f-strings from github_visitor 7513 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210274>`__ 7514* `Change Bazel library name 7515 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210198>`__ 7516 (issue `#340328100 <https://issues.pigweed.dev/issues/340328100>`__) 7517* `Add GitHub environment visitor 7518 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210045>`__ 7519 (issue `#340900493 <https://issues.pigweed.dev/issues/340900493>`__) 7520* `Bazel support for config_file 7521 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209913>`__ 7522 (issue `#340328100 <https://issues.pigweed.dev/issues/340328100>`__) 7523 7524pw_format 7525--------- 7526* `Add Rust support for field width and zero padding 7527 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208898>`__ 7528* `Add Rust support for formatting integers in hex 7529 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208415>`__ 7530* `Add test for escaped curly brackets 7531 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208291>`__ 7532* `Refactor format string parsing for better core::fmt support 7533 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208656>`__ 7534 7535pw_i2c 7536------ 7537* `Update OWNERS 7538 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208413>`__ 7539 7540pw_i2c_mcuxpresso 7541----------------- 7542The new ``I3cMcuxpressoInitiator`` implements the ``pw_i2c`` initiator interface 7543using the MCUXpresso I3C driver, allowing normal I2C API's to work after setup. 7544 7545* `Fix Clang compilation 7546 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209191>`__ 7547* `Add i3c initiator 7548 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208136>`__ 7549* `Remove swatiwagh from OWNERS 7550 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208671>`__ 7551 7552pw_ide 7553------ 7554* `Add .pw_ide.user.yaml to .gitignore 7555 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208894>`__ 7556* `Raise specific error on bad settings file 7557 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208132>`__ 7558 (issue `#336799314 <https://issues.pigweed.dev/issues/336799314>`__) 7559 7560pw_libcxx 7561--------- 7562Added initial support for using LLVM's `libcxx <https://libcxx.llvm.org/>`__ as 7563a standard C++ library implementation. 7564 7565* `Minimal implementation 7566 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201918>`__ 7567 7568pw_log 7569------ 7570Logging messages with untyped string arguments is now supported in the Rust 7571implementation. 7572 7573.. todo-check: disable 7574 7575* `Make TODO actionable 7576 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209571>`__ 7577* `Add core::fmt style format string support to Rust API 7578 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207331>`__ 7579* `Rename Rust logging API to be less verbose 7580 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207330>`__ 7581* `Add Rust support for untyped strings 7582 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206673>`__ 7583 7584.. todo-check: enable 7585 7586pw_multibuf 7587----------- 7588* `Remove deprecated Chunk::DiscardFront 7589 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206676>`__ 7590 7591pw_package 7592---------- 7593* `Suppress package progress messages 7594 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208331>`__ 7595 7596pw_presubmit 7597------------ 7598* `Auto fix unsorted-dict-items 7599 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209881>`__ 7600 (issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__) 7601* `Fix missing pico-sdk for docs_build 7602 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209931>`__ 7603* `Add repo tool API 7604 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179230>`__ 7605* `Exclude all OWNERS from copyright 7606 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209031>`__ 7607 7608pw_proto 7609-------- 7610* `Create genrule for raw rpc with prefix 7611 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209992>`__ 7612 (issue `#340749161 <https://issues.pigweed.dev/issues/340749161>`__) 7613 7614pw_protobuf 7615----------- 7616* `Build common.proto with Nanopb+Soong 7617 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209851>`__ 7618 (issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__) 7619 7620pw_protobuf_compiler 7621-------------------- 7622* `Disable layering check less 7623 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209111>`__ 7624 (issue `#323749176 <https://issues.pigweed.dev/issues/323749176>`__) 7625* `Fix name collisions 7626 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208658>`__ 7627* `Disable layering_check 7628 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208932>`__ 7629 (issue `#339280821 <https://issues.pigweed.dev/issues/339280821>`__) 7630* `Fix bazel failure if proto dir is empty 7631 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208135>`__ 7632 (issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__) 7633* `Add a no_prefix test 7634 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208138>`__ 7635 (issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__) 7636* `Tests fail to build under cmake 7637 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208271>`__ 7638 (issue `#338622044 <https://issues.pigweed.dev/issues/338622044>`__) 7639 7640pw_result 7641--------- 7642* `Fix typo in template member 7643 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209667>`__ 7644 (issue `#339794389 <https://issues.pigweed.dev/issues/339794389>`__) 7645 7646pw_rpc 7647------ 7648* `Include FakeChannelOutput in soong target 7649 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209991>`__ 7650 (issue `#340350973 <https://issues.pigweed.dev/issues/340350973>`__) 7651* `Update docs for channel ID remapping 7652 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209431>`__ 7653* `Build compatibility fixes 7654 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208893>`__ 7655* `Fix macro name in docs and comments 7656 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208311>`__ 7657 7658pw_spi_mcuxpresso 7659----------------- 7660The :ref:`module-pw_spi_mcuxpresso` module now includes an 7661``McuxpressoResponder`` useing the SPI and DMA drivers from the NXP MCUXpresso 7662SDK. 7663 7664* `Add responder implementation 7665 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208657>`__ 7666 7667pw_stm32cube_build 7668------------------ 7669* `Fix a label flag name in documentation 7670 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208231>`__ 7671 7672pw_sys_io_rp2040 7673---------------- 7674* `Bazel build file update 7675 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209877>`__ 7676 (issue `#261603269 <https://issues.pigweed.dev/issues/261603269>`__, 7677 issue `#300318025 <https://issues.pigweed.dev/issues/300318025>`__) 7678 7679pw_sys_io_stdio 7680--------------- 7681* `Expand allowed uses beyond host 7682 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208511>`__ 7683 7684pw_sys_io_stm32cube 7685------------------- 7686* `Fix build for f1xx family 7687 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208471>`__ 7688 7689pw_tokenizer 7690------------ 7691* `Clean up rust docs 7692 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208416>`__ 7693 7694pw_toolchain 7695------------ 7696Pigweed's Rust toolchain can now be used by downstream projects. 7697 7698* `Fix typos in newlib_os_interface_stubs.cc 7699 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209952>`__ 7700* `Add clang-apply-replacements plugin 7701 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209539>`__ 7702 (issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__) 7703* `Support Rust toolchains in downstream projects 7704 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209871>`__ 7705* `Add clang-apply-replacements plugin 7706 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208896>`__ 7707 (issue `#339294894 <https://issues.pigweed.dev/issues/339294894>`__) 7708* `Fix CMake build on macOS 7709 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208139>`__ 7710* `Add no-canonical-system-headers 7711 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208156>`__ 7712 (issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__) 7713 7714pw_trace_tokenized 7715------------------ 7716* `Build compatibility fixes 7717 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208893>`__ 7718 7719pw_transfer 7720----------- 7721The transfer service now ends active transfers when the underlying stream 7722changes, avoiding a case where a transfer could become stuck. 7723 7724* `End active transfers when RPC stream changes 7725 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209876>`__ 7726* `Add tests for GetResourceStatus 7727 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209753>`__ 7728* `Add py_proto_library target for update_bundle_proto 7729 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209731>`__ 7730* `GetResoureStatus fix missing return 7731 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208491>`__ 7732* `Lock resource_responder_ access 7733 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208251>`__ 7734 7735pw_unit_test 7736------------ 7737* `Add missing :config dependency for gtest backend 7738 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208472>`__ 7739 7740Build 7741===== 7742 7743bazel 7744----- 7745* `Ignore reformatting change in git blame 7746 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210111>`__ 7747 (issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__) 7748* `Fix unsorted-dict-items instances 7749 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209880>`__ 7750 (issue `#340637744 <https://issues.pigweed.dev/issues/340637744>`__) 7751* `Remove unnecessary .bazelrc flag 7752 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208659>`__ 7753 (issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__) 7754* `Re-enable sandbox_hermetic_tmp 7755 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208312>`__ 7756 (issue `#319665090 <https://issues.pigweed.dev/issues/319665090>`__) 7757 7758Targets 7759======= 7760 7761targets/rp2040 7762-------------- 7763* `pre_init and freertos config 7764 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209554>`__ 7765 (issue `#261603269, 300318025 <https://issues.pigweed.dev/issues/261603269, 300318025>`__) 7766 7767Docs 7768==== 7769* `Update changelog 7770 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208171>`__ 7771 7772SEEDs 7773===== 7774 7775SEED-0116 7776--------- 7777* `Set status to On Hold 7778 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208831>`__ 7779 7780Third party 7781=========== 7782 7783third_party/emboss 7784------------------ 7785* `Use absolute paths in source dependencies 7786 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/209131>`__ 7787 (issue `#339467547 <https://issues.pigweed.dev/issues/339467547>`__) 7788* `Update emboss repo to tag v2024.0501.215421 7789 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208314>`__ 7790 (issue `#338675057 <https://issues.pigweed.dev/issues/338675057>`__) 7791* `Add additional owners for emboss 7792 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208631>`__ 7793 7794third_party/freertos 7795-------------------- 7796* `Add CM3 support to Bazel build 7797 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210211>`__ 7798 7799third_party/perfetto 7800-------------------- 7801* `Rename proto targets 7802 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/210040>`__ 7803* `Add third party perfetto repo 7804 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203618>`__ 7805* `Copybara import 7806 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207490>`__ 7807 7808Miscellaneous 7809============= 7810* `Run clang-format 7811 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208911>`__ 7812* `Add roller as WORKSPACE owner 7813 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/208900>`__ 7814 (issue `#245397913 <https://issues.pigweed.dev/issues/245397913>`__) 7815 7816----------- 7817May 1, 2024 7818----------- 7819 7820Highlights (Apr 19, 2024 to May 1, 2024): 7821 7822* **Thread kickoff via pw::Function:** Revamped the Thread API to use 7823 pw::Function. The original Thread API was created before pw::Function was 7824 stable; this change modernizes and increases usability of the Thread API. 7825* **Thread creation SEED:** Creating threads in Pigweed is difficult due to our 7826 strict adherence to portability. We're considering creating an additional API 7827 that is more usable but less portable than the current approach. 7828* **Transfer:** Adaptive windowing got a Java implementation, and improvements 7829 to adaptive windowing in C++. 7830* **Bluetooth:** Initial CLs towards a Bluetooth proxy. 7831 7832Active SEEDs 7833============ 7834Help shape the future of Pigweed! Please visit :ref:`seed-0000` 7835and leave feedback on the RFCs (i.e. SEEDs) marked 7836``Open for Comments``. 7837 7838Modules 7839======= 7840 7841pw_allocator 7842------------ 7843Added two new allocators: BuddyAlloctor and BumpAllocator (also known as an 7844arena allocator). Various cleanups and fixes, including splitting the 7845Block-based allocators to their own files. 7846 7847* `Add missing return statement 7848 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207171>`__ 7849 (issue `#337761967 <https://issues.pigweed.dev/issues/337761967>`__) 7850* `Remove conflict marker 7851 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206590>`__ 7852* `Move FallbackAllocator implementation 7853 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206174>`__ 7854* `Clean up LibCAllocatorTest 7855 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206173>`__ 7856* `Move block allocators to separate files 7857 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198154>`__ 7858* `Add BuddyAllocator 7859 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195952>`__ 7860* `Make AllMetrics internal 7861 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205737>`__ 7862* `Fix SynchonizedAllocator data race 7863 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205753>`__ 7864 (issue `#333386065 <https://issues.pigweed.dev/issues/333386065>`__) 7865* `Add BumpAllocator 7866 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195953>`__ 7867 7868pw_assert 7869--------- 7870* `Fix support for print_and_abort in Bazel 7871 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206853>`__ 7872 (issue `#337271435 <https://issues.pigweed.dev/issues/337271435>`__) 7873 7874pw_async 7875-------- 7876* `Add missing dispatcher facades to CMake 7877 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204873>`__ 7878 (issue `#335866562 <https://issues.pigweed.dev/issues/335866562>`__) 7879 7880pw_bluetooth 7881------------ 7882Continue filling out Bluetooth packet definitions; as well as some API 7883extensions for e.g. RSSI control. 7884 7885* `Add header alias in command complete events 7886 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207552>`__ 7887 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7888* `Add Event Codes to emboss 7889 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207510>`__ 7890 (issue `#338068316 <https://issues.pigweed.dev/issues/338068316>`__) 7891* `Add opcode_enum to command and response event 7892 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207335>`__ 7893 (issue `#338068316 <https://issues.pigweed.dev/issues/338068316>`__) 7894* `Sync with recent APCF changes 7895 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205921>`__ 7896 (issue `#336608891 <https://issues.pigweed.dev/issues/336608891>`__) 7897* `Define Common Data Types 7898 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207470>`__ 7899 (issue `#336608891 <https://issues.pigweed.dev/issues/336608891>`__) 7900* `Add LoopbackCommandEvent 7901 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205920>`__ 7902 (issue `#336579564 <https://issues.pigweed.dev/issues/336579564>`__) 7903* `Support Read RSSI command and event 7904 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205919>`__ 7905 (issue `#336566041 <https://issues.pigweed.dev/issues/336566041>`__) 7906* `Comment why we include all emboss headers in emboss_test 7907 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203637>`__ 7908 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7909* `Correct emboss path in doc example 7910 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204811>`__ 7911 (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__) 7912 7913pw_bluetooth_* 7914-------------- 7915* `Formatting fixes 7916 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204750>`__ 7917 7918pw_bluetooth_proxy 7919------------------ 7920Start building the Bluetooth proxy subsystem. 7921 7922* `Rename ProcessH4 to HandleH4 7923 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207651>`__ 7924 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7925* `Rename passthrough_test.cc to proxy_host_test.cc 7926 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207670>`__ 7927 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7928* `Move ProxyHost methods to .cc 7929 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207333>`__ 7930 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7931* `Rename HciProxy to ProxyHost 7932 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207450>`__ 7933 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7934* `Delete policies functionality 7935 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207332>`__ 7936 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7937* `Add some emboss helper functions 7938 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205741>`__ 7939 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7940* `Template test emboss packet creation 7941 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205740>`__ 7942 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7943* `Fix ordering of TEST arguments 7944 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205739>`__ 7945 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 7946 7947pw_build 7948-------- 7949* `Add a `test_main` param to `pw_cc_test` 7950 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206851>`__ 7951 (issue `#337277617 <https://issues.pigweed.dev/issues/337277617>`__) 7952* `Fix using pw_cc_blob_library target in external repos 7953 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206552>`__ 7954 7955pw_build_info 7956------------- 7957* `Make the python module importable 7958 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206030>`__ 7959 7960pw_cli 7961------ 7962New SEED creation tool reduces the burden to create SEEDs. This will open the 7963door to more contributors creating SEEDs for Pigweed changes and enhancements. 7964 7965* `Add SEED creation to CLI tool 7966 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186762>`__ 7967* `Handle custom arguments in tools 7968 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204192>`__ 7969* `Add git_repo.py and test to Bazel build 7970 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204871>`__ 7971 7972pw_containers 7973------------- 7974* `Omit size on FlatMap construction 7975 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201030>`__ 7976 7977pw_cpu_exception_cortex_m 7978------------------------- 7979* `Add util_test to tests 7980 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207791>`__ 7981 7982pw_digital_io_linux 7983------------------- 7984* `Move OwnedFd to its own header file 7985 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207831>`__ 7986 7987pw_env_setup 7988------------ 7989* `Update default sysroot version 7990 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204244>`__ 7991 (issue `#335438711 <https://issues.pigweed.dev/issues/335438711>`__) 7992 7993pw_format 7994--------- 7995* `Better explain core::fmt whitespace parsing in ccomments 7996 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206671>`__ 7997* `Add support for core::fmt style format strings 7998 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203830>`__ 7999 8000pw_grpc 8001------- 8002* `Support fragmented gRPC messages if an allocator is provided 8003 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204431>`__ 8004 (issue `#323924487 <https://issues.pigweed.dev/issues/323924487>`__) 8005 8006pw_module 8007--------- 8008* `Include :authors: in generated SEED file 8009 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206674>`__ 8010 8011pw_presubmit 8012------------ 8013* `Separate 'bazel info' stderr 8014 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206350>`__ 8015 (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__) 8016* `Save 'bazel info output_base' 8017 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206270>`__ 8018* `Remove --verbose_explanations flag 8019 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205933>`__ 8020* `Use _LOG global for logging 8021 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205913>`__ 8022* `RST format updates 8023 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204241>`__ 8024* `Allow disabling hook creation 8025 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205912>`__ 8026* `Drop '.' from Bazel symlinks 8027 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204870>`__ 8028 (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__) 8029 8030pw_protobuf 8031----------- 8032* `Fix support for import_prefix on protos with options 8033 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204671>`__ 8034 8035pw_rpc 8036------ 8037Enhancements in pw_rpc to better integrate with pw_grpc. 8038 8039* `Add private method for sending internal::Packet directly 8040 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185669>`__ 8041 (issue `#319162657 <https://issues.pigweed.dev/issues/319162657>`__) 8042 8043pw_rust 8044------- 8045* `Build examples in presubmit 8046 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207338>`__ 8047 (issue `#337951363 <https://issues.pigweed.dev/issues/337951363>`__) 8048* `Fix Rust tokenized logging example 8049 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206672>`__ 8050 8051pw_sensors 8052---------- 8053Sensors subsystem continues moving along; note that most of the discussion and 8054development is happening in the SEEDs. 8055 8056* `Add support for triggers 8057 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203860>`__ 8058 (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__) 8059 8060pw_snapshot 8061----------- 8062* `Add python processor tests 8063 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205761>`__ 8064* `Fix Bazel builds 8065 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205090>`__ 8066 8067pw_spi_mcuxpresso 8068----------------- 8069* `Rename flexspi to flexio_spi 8070 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205711>`__ 8071* `Fix Bazel build 8072 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205710>`__ 8073 8074pw_stream_uart_mcuxpresso 8075------------------------- 8076* `Add interrupt safe write-only UART stream 8077 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207414>`__ 8078 8079pw_string 8080--------- 8081* `Add ToString for iterables 8082 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206650>`__ 8083* `Add missing array include 8084 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204211>`__ 8085 8086pw_thread 8087--------- 8088API change to bring pw_thread up to date with pw::Function; see overview. 8089 8090* `Use pw::Function to start threads 8091 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205760>`__ 8092 (issue `#243018475 <https://issues.pigweed.dev/issues/243018475>`__) 8093* `Fix pw_thread_zephyr compilability 8094 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206970>`__ 8095 8096pw_thread_threadx 8097----------------- 8098* `Remove unused dependency 8099 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207191>`__ 8100 8101pw_tls_client 8102------------- 8103* `Add CMake facades 8104 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204874>`__ 8105 (issue `#335878898 <https://issues.pigweed.dev/issues/335878898>`__) 8106 8107pw_tokenizer 8108------------ 8109Enhance the C++ host-side decoder to better handle the full suite of 8110capabilities, in particulaur, recursive decoding; also some build fixes. 8111 8112* `Add DecodeOptionallyTokenizedData 8113 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206070>`__ 8114* `Switch detokenize.h docs to Doxygen 8115 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205751>`__ 8116* `Support arbitrary recursion in C++ detokenizer 8117 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205770>`__ 8118* `Add missing CMake dep 8119 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204316>`__ 8120 8121pw_toolchain 8122------------ 8123* `Add clang-tidy suggestion 8124 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206675>`__ 8125 8126pw_transfer 8127----------- 8128Adaptive windowing improvements, including C++ enhancementsn to better handle 8129small window sizes, as well as adding a Java implementation. 8130 8131* `Add resource_id to all GetResourceStatus responses 8132 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207350>`__ 8133 (issue `#336364832 <https://issues.pigweed.dev/issues/336364832>`__) 8134* `Assume a minimum window size when reserving space 8135 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206890>`__ 8136* `Attempt to recover when receiving invalid size 8137 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206632>`__ 8138* `Implement adaptive windowing in Java 8139 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/147511>`__ 8140 8141pw_unit_test 8142------------ 8143* `Add support for a test_main in CMake 8144 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204872>`__ 8145 (issue `#335865646 <https://issues.pigweed.dev/issues/335865646>`__) 8146* `Standardize ASSERT_OK_AND_ASSIGN 8147 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205946>`__ 8148* `Clarify status macros are gunit-only 8149 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206050>`__ 8150* `Add IWYU export/private pragmas 8151 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204151>`__ 8152 (issue `#335291547 <https://issues.pigweed.dev/issues/335291547>`__) 8153 8154pw_web 8155------ 8156* `Fix icons in packaged version 8157 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207551>`__ 8158* `Fix text download format 8159 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206551>`__ 8160* `NPM version bump to 0.0.19 8161 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206330>`__ 8162* `Add user guide page for features and filter syntax 8163 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203632>`__ 8164 (issue `#307560371 <https://issues.pigweed.dev/issues/307560371>`__) 8165 8166Docs 8167==== 8168 8169docs 8170---- 8171* `Mention @deprecated in the Doxygen style guide 8172 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205762>`__ 8173* `Update module docs contributor guidelines 8174 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205742>`__ 8175* `Add GitHub pull request template 8176 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205810>`__ 8177* `Require Bazel+GN+CMake for new contributions 8178 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204650>`__ 8179* `Update changelog 8180 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204203>`__ 8181 8182SEEDs 8183===== 8184* SEED-0124: `Getting Used Size from Multisink 8185 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188670>`__ 8186 (issue `#326854807 <https://issues.pigweed.dev/issues/326854807>`__) landed 8187* SEED-0128: `Easier thread creation 8188 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206631>`__ started 8189* SEED-0129: `Support PW_ASSERT with non-argument message 8190 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207150>`__ started 8191 8192Miscellaneous 8193============= 8194* `Run clang-format 8195 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207412>`__ 8196* `Remove remaining usages of legacy thread entry 8197 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206856>`__ 8198* `Replace `string_view&` with `string_view` 8199 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204591>`__ 8200 8201.bazelversion 8202------------- 8203* `Add file 8204 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205918>`__ 8205 (issue `#336617748 <https://issues.pigweed.dev/issues/336617748>`__) 8206 8207Third party 8208=========== 8209* boringssl: `Add CMake integration 8210 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204875>`__ 8211 (issue `#335880025 <https://issues.pigweed.dev/issues/335880025>`__) 8212* emboss: `Update emboss repo to tag v2024.0419.155605 8213 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204202>`__ 8214 (issue `#335724776 <https://issues.pigweed.dev/issues/335724776>`__) 8215* emboss: `Use COMPILE_LANGUAGE:CXX 8216 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/205670>`__ 8217 (issue `#336267050 <https://issues.pigweed.dev/issues/336267050>`__) 8218* fuchsia: `Add defer.h to Bazel build defs 8219 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/206854>`__ 8220 (issue `#337275846 <https://issues.pigweed.dev/issues/337275846>`__) 8221* npm: `Update package-lock.json 8222 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/207336>`__ 8223 8224------------ 8225Apr 18, 2024 8226------------ 8227 8228.. changelog_highlights_start 8229 8230Highlights (Apr 4, 2024 to Apr 18, 2024): 8231 8232* The Python and C++ interfaces of ``pw_transfer`` now support 8233 :ref:`adaptive windowing <module-pw_transfer-windowing>`. 8234* :ref:`SEED 0117: I3C <seed-0117>` was accepted. 8235* The new :ref:`docs-quickstart-zephyr` shows you how to set up a 8236 C++-based Zephyr project that's ready to use Pigweed. 8237 8238.. changelog_highlights_end 8239 8240Active SEEDs 8241============ 8242Help shape the future of Pigweed! Please visit :ref:`seed-0000` 8243and leave feedback on the RFCs (i.e. SEEDs) marked 8244``Open for Comments``. 8245 8246Modules 8247======= 8248 8249pw_allocator 8250------------ 8251The new :cpp:class:`pw::allocator::TypedPool` class is a slab allocator 8252that can allocate a specific object with very low overhead. 8253``pw::allocator::TypedPool`` is implemented using the new 8254:cpp:class:`pw::allocator::Pool` interface. 8255``pw::allocator::TrackingAllocatorImpl`` was renamed to 8256``pw::allocator::TrackingAllocator``. 8257 8258* `Add missing soong deps 8259 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203613>`__ 8260* `Add Pool 8261 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195540>`__ 8262* `Update OWNERS 8263 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203211>`__ 8264* `Rename TrackingAllocatorImpl 8265 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203150>`__ 8266 (issue `#326509341 <https://issues.pigweed.dev/issues/326509341>`__) 8267 8268pw_async2 8269--------- 8270The new :cpp:class:`pw::async2::PendableAsTask` class is a ``Task`` that 8271delegates to a type with a ``Pend`` method. 8272 8273* `Add PendableAsTask 8274 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201920>`__ 8275 8276pw_blob_store 8277------------- 8278The ``pw_add_library()`` call for the ``pw_blob_store`` target now compiles 8279as ``STATIC`` instead of ``INTERFACE`` to be more in line with the Bazel 8280build. 8281 8282* `Fix CMakeLists.txt pw_add_library() 8283 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203134>`__ 8284 8285pw_bluetooth 8286------------ 8287* `Formatting fixes 8288 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204315>`__ 8289* `LEGetVendorCapabilitiesCommandCompleteEvent v1.04 fields 8290 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204198>`__ 8291* `Add versions - LEGetVendorCapabilitiesCommandCompleteEvent 8292 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203795>`__ 8293 (issue `#332924521 <https://issues.pigweed.dev/issues/332924521>`__) 8294* `Add EventMask and temp field in SetEventMaskCommand 8295 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192256>`__ 8296 (issue `#42068631 <https://issues.pigweed.dev/issues/42068631>`__) 8297* `Store length max in virtual field 8298 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201794>`__ 8299* `Define LEReadMaximumAdvertisingDataLengthCommandComplete 8300 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201951>`__ 8301 (issue `#312898345 <https://issues.pigweed.dev/issues/312898345>`__) 8302 8303pw_bluetooth_sapphire 8304--------------------- 8305In CIPD ``bt-host`` artifacts are now uploaded to ``fuchsia/prebuilt/bt-host``. 8306 8307* `Iterators 8308 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203855>`__ 8309 (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__) 8310* `Change CIPD upload path 8311 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202690>`__ 8312 (issue `#321267610 <https://issues.pigweed.dev/issues/321267610>`__) 8313* `Bump @fuchsia_sdk 8314 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202490>`__ 8315 (issue `#329933586 <https://issues.pigweed.dev/issues/329933586>`__, 8316 issue `#321267476 <https://issues.pigweed.dev/issues/321267476>`__) 8317 8318pw_build 8319-------- 8320* `Disable deprecated pragma warnings 8321 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203856>`__ 8322 (issue `#333448202 <https://issues.pigweed.dev/issues/335328444>`__, 8323 issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__) 8324* `Iterators 8325 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__ 8326 (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__, 8327 issue `#335024633 <https://issues.pigweed.dev/issues/335024633>`__, 8328 issue `#335021928 <https://issues.pigweed.dev/issues/335021928>`__) 8329* `Collect wheel fix 8330 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202921>`__ 8331* `Disable C23 extension warnings 8332 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202830>`__ 8333 (issue `#333712899 <https://issues.pigweed.dev/issues/333712899>`__) 8334 8335pw_build_android 8336---------------- 8337* `Update module guidance 8338 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203910>`__ 8339* `Update cc_defaults guidance 8340 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203651>`__ 8341* `Make Common Backends static 8342 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202090>`__ 8343 (issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__) 8344 8345pw_build_info 8346------------- 8347* `Add missing header file for cmake 8348 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202210>`__ 8349 8350pw_cli 8351------ 8352The following interfaces were moved from ``pw_presubmit`` to ``pw_cli`` 8353to make them more widely available: :py:class:`pw_cli.file_filter.FileFilter`, 8354:py:mod:`pw_cli.git_repo`, and :py:class:`pw_cli.tool_runner.ToolRunner`. 8355The new :py:func:`pw_cli.decorators.deprecated` decorator emits a 8356deprecation warning when the annotated function is used. 8357 8358* `Fix argument handling for GitRepo.has_uncommitted_changes() 8359 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204232>`__ 8360* `Fix subprocess runner arg concatenation 8361 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202844>`__ 8362* `Move FileFilter 8363 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194617>`__ 8364* `Fix commit fallback handling for GitRepo.list_files() 8365 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203790>`__ 8366* `Move git_repo to pw_cli 8367 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201279>`__ 8368* `Add Python deprecation decorator 8369 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202929>`__ 8370* `Update ToolRunner type hints 8371 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202737>`__ 8372* `Move ToolRunner 8373 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201278>`__ 8374 8375pw_containers 8376------------- 8377* `Iterators 8378 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__ 8379 (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__) 8380 8381pw_cpu_exception_risc_v 8382----------------------- 8383The new :ref:`module-pw_cpu_exception_risc_v` backend lays the foundation for 8384RISC-V CPU exception handling. 8385 8386* `Add initial backend structure 8387 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188230>`__ 8388 8389pw_env_setup 8390------------ 8391* `clang 8392 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202591>`__ 8393 (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__) 8394 8395pw_hdlc 8396------- 8397* `Iterators 8398 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__ 8399 (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__) 8400 8401pw_ide 8402------ 8403* `Fixes to support changing working_dir 8404 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204430>`__ 8405 (issue `#335628872 <https://issues.pigweed.dev/issues/335628872>`__) 8406* `Enable cmake.format.allowOptionalArgumentIndentation 8407 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203638>`__ 8408 8409pw_kvs 8410------ 8411* `Make Key an alias for string_view 8412 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204590>`__ 8413* `Depend on libraries for fake flash and store tests for Bazel 8414 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202212>`__ 8415* `Add libraries to reuse partition and store tests for Bazel 8416 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202211>`__ 8417 8418pw_log_zephyr 8419------------- 8420* `Tokenize Zephyr shell fprintf 8421 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202734>`__ 8422 8423pw_presubmit 8424------------ 8425The following interfaces were moved from ``pw_presubmit`` to ``pw_cli`` 8426to make them more widely available: :py:class:`pw_cli.file_filter.FileFilter`, 8427:py:mod:`pw_cli.git_repo`, and :py:class:`pw_cli.tool_runner.ToolRunner`. 8428 8429* `Move FileFilter 8430 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194617>`__ 8431* `Add bthost_package step 8432 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203797>`__ 8433 (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__) 8434* `Don't overwrite Bazel stdout files 8435 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203796>`__ 8436 (issue `#332357274 <https://issues.pigweed.dev/issues/332357274>`__) 8437* `Remove cmake_clang from quick presubmit 8438 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198050>`__ 8439* `Move git_repo to pw_cli 8440 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201279>`__ 8441* `Fix copy/paste bug in _value() 8442 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202913>`__ 8443* `Move ToolRunner 8444 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201278>`__ 8445 8446pw_protobuf 8447----------- 8448 8449 8450* `Access raw proto values; change RPC packet channel ID 8451 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204152>`__ 8452 8453pw_rpc 8454------ 8455The new :cpp:func:`pw::rpc::ChangeEncodedChannelId` function lets you rewrite 8456an encoded packet's channel ID in place. See :ref:`module-pw_rpc-remap`. 8457 8458* `Access raw proto values; change RPC packet channel ID 8459 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204152>`__ 8460* `Iterators 8461 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__ 8462 (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__) 8463 8464pw_rpc_transport 8465---------------- 8466* `Soong lib names now follow style 8467 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203650>`__ 8468 8469pw_sensor 8470--------- 8471The new :ref:`module-pw_sensor` module is the start of the implementation 8472of :ref:`SEED 0119: Sensors <seed-0119>`. 8473 8474* `Fix Python install 8475 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204130>`__ 8476* `Add attribute support to sensor-desc CLI 8477 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203791>`__ 8478 (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__) 8479* `Create a sensor-desc CLI 8480 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203670>`__ 8481 (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__) 8482* `Update validator schema to JSON schema 8483 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202925>`__ 8484 (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__) 8485* `Provide a validator 8486 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202912>`__ 8487 (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__) 8488* `Add module stub 8489 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202911>`__ 8490 (issue `#293466822 <https://issues.pigweed.dev/issues/293466822>`__) 8491 8492pw_snapshot 8493----------- 8494* `Process snapshots based on CPU architecture 8495 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188232>`__ 8496 8497pw_spi_linux 8498------------ 8499``pw_spi_linux`` now has a basic :ref:`module-pw_spi_linux-cli` that lets 8500you read from and write to devices. 8501 8502* `Add pw_spi_linux_cli 8503 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201391>`__ 8504 8505pw_thread_freertos 8506------------------ 8507* `Use TCB for running stack pointer 8508 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188231>`__ 8509 8510pw_tls_client 8511------------- 8512* `Only include <sys/time.h> if available 8513 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202555>`__ 8514 8515pw_transfer 8516----------- 8517The Python and C++ interfaces now support 8518:ref:`adaptive windowing <module-pw_transfer-windowing>`. 8519 8520* `Iterators 8521 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203330>`__ 8522 (issue `#335021928 <https://issues.pigweed.dev/issues/333448202, b/335024633, b/335021928>`__) 8523* `Implement adaptive windowing in Python 8524 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/147510>`__ 8525* `Implement adaptive windowing in C++ 8526 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/146392>`__ 8527* `Convert arguments to std::fstream constructors 8528 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203151>`__ 8529 (issue `#333957637 <https://issues.pigweed.dev/issues/333957637>`__) 8530 8531pw_web 8532------ 8533* `Support creating client without using proto descriptor 8534 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203654>`__ 8535* `NPM version bump to 0.0.18 8536 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203636>`__ 8537* `Fix string manipulation in download logs 8538 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/203612>`__ 8539 (issue `#331480903 <https://issues.pigweed.dev/issues/331480903>`__) 8540* `Use existing col data when adding new View 8541 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200290>`__ 8542 (issue `#331439176 <https://issues.pigweed.dev/issues/331439176>`__) 8543* `Enable column order on init 8544 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201530>`__ 8545 (issue `#329712468 <https://issues.pigweed.dev/issues/329712468>`__) 8546* `Fix test format of log-source.test 8547 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202392>`__ 8548 (issue `#333379333 <https://issues.pigweed.dev/issues/333379333>`__) 8549 8550Build 8551===== 8552 8553Bazel 8554----- 8555* `Use remote cache in infra 8556 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202754>`__ 8557 (issue `#312215590 <https://issues.pigweed.dev/issues/312215590>`__) 8558 8559Docs 8560==== 8561The new :ref:`docs-quickstart-zephyr` shows you how to set up a C++-based 8562Zephyr project that's ready to use Pigweed. The API references for all 8563functions or methods that return a set of ``pw_status`` codes have been 8564refactored for consistency. The :ref:`docs-style-doxygen` has been revamped. 8565 8566* `Add pw_status table for API references 8567 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202739>`__ 8568* `Revamp Doxygen style guide 8569 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202590>`__ 8570* `Add Zephyr quickstart 8571 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196671>`__ 8572* `Update changelog 8573 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202150>`__ 8574 8575SEEDs 8576===== 8577* (SEED-0117) `pw_i3c 8578 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178350>`__ 8579 8580Miscellaneous 8581============= 8582* (clang) `Fix \`std::array\` iterators 8583 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202834>`__ 8584 (issue `#333448202 <https://issues.pigweed.dev/issues/333448202>`__) 8585* (emboss) `Loosen Emboss cmake dependency tracking 8586 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202831>`__ 8587 (issue `#333735460 <https://issues.pigweed.dev/issues/333735460>`__) 8588* (many) `Move maxDiff to be a class attribute 8589 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/204150>`__ 8590 8591----------- 8592Apr 4, 2024 8593----------- 8594.. _epoll: https://man7.org/linux/man-pages/man7/epoll.7.html 8595 8596Highlights (Mar 21, 2024 to Apr 4, 2024): 8597 8598* **New modules**: :ref:`module-pw_i2c_rp2040` is a Pico SDK implementation of 8599 the ``pw_i2c`` interface, :ref:`module-pw_async2_epoll` is an 8600 `epoll`_-based backend for ``pw_async2``, :ref:`module-pw_spi_linux` 8601 is a Linux backend for ``pw_spi``, :ref:`module-pw_uart` provides 8602 core methods for UART communication, and :ref:`module-pw_bluetooth_proxy` 8603 provides a lightweight proxy host that can be placed between a Bluetooth 8604 host and a Bluetooth controller to add functionality or inspection. 8605* **Docs updates**: Pigweed's main docs builder now builds the 8606 :ref:`examples <seed-0122-examples>` repo; the examples will be available 8607 at ``https://pigweed.dev/examples``. An experimental complete Doxygen API 8608 reference is now being published to ``https://pigweed.dev/doxygen``. The 8609 :ref:`module-pw_i2c` docs, :ref:`docs-style-rest`, and 8610 :ref:`docs contributors homepage <docs-contrib-docs>` have been revamped. 8611* **Android platform updates**: Many modules were refactored to follow the 8612 guidance in :ref:`module-pw_build_android` to make it easier to build them in 8613 Soong. 8614 8615Active SEEDs 8616============ 8617Help shape the future of Pigweed! Please visit :ref:`seed-0000` 8618and leave feedback on the RFCs (i.e. SEEDs) marked 8619``Open for Comments``. 8620 8621Modules 8622======= 8623 8624pw_allocator 8625------------ 8626The new :ref:`module-pw_allocator-api-capabilities` API lets derived allocators 8627describe what optional features they support. ``pw::Allocator::GetLayout()`` 8628has begun to be deprecated and replaced by ``pw::Allocator::GetRequestedLayout``, 8629``pw::Allocator::GetUsableLayout()``, and ``pw::Allocator::GetAllocatedLayout()`` 8630to make it easier to distinguish between requested memory, usable memory, and 8631already used memory. Methods that took ``Layout`` arguments, such as 8632``pw::Allocator::GetRequestedLayout()``, have been deprecated. 8633 8634* `Restore DoDeallocate with Layout 8635 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201670>`__ 8636 (issue `#332510307 <https://issues.pigweed.dev/issues/332510307>`__) 8637* `Move Layout and UniquePtr to their own header files 8638 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199534>`__ 8639* `Remove Layout from Deallocate and Resize 8640 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198153>`__ 8641* `Add allocation detail storage to TrackingAllocator 8642 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198152>`__ 8643* `Distinguish between requested, usable, and allocated sizes 8644 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198150>`__ 8645* `Add Capabilities 8646 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197133>`__ 8647 8648pw_assert_log 8649------------- 8650* `Follow Soong guidelines 8651 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197536>`__ 8652 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8653 8654pw_async2 8655--------- 8656The new :cpp:class:`pw::async2::PendFuncTask` class delegates a task to a 8657provided function. 8658 8659* `Add Poll::Readiness helper 8660 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201910>`__ 8661* `Fix TSAN for dispatcher_thread_test 8662 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201850>`__ 8663* `Add PendFuncTask 8664 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199714>`__ 8665 8666pw_async2_epoll 8667--------------- 8668.. _epoll: https://man7.org/linux/man-pages/man7/epoll.7.html 8669 8670The new :ref:`module-pw_async2_epoll` module is an `epoll`_-based backend 8671for :ref:`module-pw_async2`. 8672 8673* `Epoll-backed async2 dispatcher 8674 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200233>`__ 8675 8676pw_bluetooth 8677------------ 8678The :ref:`module-pw_bluetooth-usage` section now shows CMake usage and 8679the new :ref:`module-pw_bluetooth-contributing` section shows how to 8680contribute Emboss code. 8681 8682* `Define LEReadMaximumAdvertisingDataLengthCommandComplete 8683 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201951>`__ 8684 (issue `#312898345 <https://issues.pigweed.dev/issues/312898345>`__) 8685* `Add more opcodes 8686 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201130>`__ 8687* `Add example of using to_underlying 8688 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200970>`__ 8689 (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__) 8690* `Emboss formatting tweak 8691 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200230>`__ 8692 (issue `#331195584 <https://issues.pigweed.dev/issues/331195584>`__) 8693* `Add cmake to usage guide 8694 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200012>`__ 8695 (issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__) 8696* `Add opcode_full field to emboss HCI headers 8697 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199553>`__ 8698 (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__) 8699* `Add enum for opcodes 8700 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199671>`__ 8701 (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__) 8702* `Update cmake targets to be consistent 8703 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200011>`__ 8704 (issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__) 8705* `Update build files to be consistent 8706 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200010>`__ 8707 (issue `#326499587 <https://issues.pigweed.dev/issues/326499587>`__) 8708* `Add emboss ReadBufferSize v1 event 8709 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199070>`__ 8710 (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__) 8711* `Add emboss contributing section to docs.rst 8712 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199531>`__ 8713 (issue `#331195584 <https://issues.pigweed.dev/issues/331195584>`__) 8714* `protocol.h comments tweak 8715 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199532>`__ 8716 (issue `#326499650 <https://issues.pigweed.dev/issues/326499650>`__) 8717 8718pw_bluetooth_proxy 8719------------------ 8720The new :ref:`module-pw_bluetooth_proxy` module provides a lightweight 8721proxy host that can be placed between a Bluetooth host and a Bluetooth 8722controller to add functionality or inspection. 8723 8724* `Move to cpp23::to_underlying 8725 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200971>`__ 8726 (issue `#331281133 <https://issues.pigweed.dev/issues/331281133>`__) 8727* `Use emboss OpCode enum 8728 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199554>`__ 8729 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 8730* `Bluetooth proxy module and initial classes 8731 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197290>`__ 8732 (issue `#326496952 <https://issues.pigweed.dev/issues/326496952>`__) 8733 8734pw_bluetooth_sapphire 8735--------------------- 8736``pw_bluetooth_sapphire`` now supports emulation, Fuchsia unit testing, and 8737ARM64 build targets. 8738 8739* `Add arm64 release variant 8740 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202050>`__ 8741 (issue `#332928957 <https://issues.pigweed.dev/issues/332928957>`__) 8742* `Stub bt-host CIPD manifest 8743 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201390>`__ 8744 (issue `#332357274, 321267610 <https://issues.pigweed.dev/issues/332357274, 321267610>`__) 8745* `Fuchsia testing support 8746 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198270>`__ 8747 (issue `#331692493, 42178254 <https://issues.pigweed.dev/issues/331692493, 42178254>`__) 8748* `Add emulator start workflow 8749 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200270>`__ 8750 (issue `#321267689 <https://issues.pigweed.dev/issues/321267689>`__) 8751 8752pw_build 8753-------- 8754Modules can now be nested in subdirectories, which paves the way for 8755refactoring how modules are organized in the upstream Pigweed repo. 8756:ref:`module-pw_build-project_builder` is a new lightweight build command 8757for projects that need to run multiple commands to perform a build. 8758 8759* `Allow nesting Pigweed modules in subdirectories 8760 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201114>`__ 8761* `Add alwayslink option to pw_cc_blob_library 8762 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201110>`__ 8763* `ProjectBuilder documentation 8764 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200791>`__ 8765* `BuildRecipe auto_create_build_dir option 8766 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200830>`__ 8767* `Defer build directory existence check 8768 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200771>`__ 8769 8770pw_build_android 8771---------------- 8772* `Define rule with static libs 8773 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200351>`__ 8774 (issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__) 8775 8776pw_build_info 8777------------- 8778The new ``pw::build_info::LogBuildId()`` function lets you print a GNU 8779build ID as hex. 8780 8781* `Add log function of GNU build ID 8782 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199471>`__ 8783* `Fix Bazel baremetal compatibility 8784 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199470>`__ 8785 8786pw_bytes 8787-------- 8788* `Add example to docs of using _b suffix 8789 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201350>`__ 8790 8791pw_channel 8792---------- 8793The new :cpp:type:`pw::channel::LoopbackDatagramChannel` and 8794:cpp:type:`pw::channel::LoopbackByteChannel` aliases provide channel 8795implementations that read their own writes. The new 8796:cpp:class:`pw::channel::ForwardingChannelPair` class lets you connect two 8797subsystems with datagram channels without implementing a custom channel. 8798 8799* `Return status from PollReadyToWrite 8800 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200995>`__ 8801* `Rename methods to Pend prefix 8802 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201090>`__ 8803* `Add loopback channel 8804 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199150>`__ 8805* `Split open bits for read and write 8806 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199712>`__ 8807* `Seek is not async 8808 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199713>`__ 8809* `Set closed bit on FAILED_PRECONDITION 8810 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199710>`__ 8811* `Respect sibling closure 8812 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199035>`__ 8813* `Introduce forwarding channels 8814 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197353>`__ 8815 8816pw_chrono 8817--------- 8818* `Update OWNERS 8819 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__ 8820* `Follow Soong guidelines 8821 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198290>`__ 8822 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8823 8824pw_cli 8825------ 8826The new ``pw_cli.alias`` Python module lets you create ``pw`` subcommands 8827that are effectively command line aliases. See :ref:`module-pw_cli-aliases`. 8828 8829* `Move plural() 8830 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201630>`__ 8831* `Move status_reporter to pw_cli 8832 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201113>`__ 8833* `Add pw ffx alias 8834 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200770>`__ 8835 (issue `#329933586 <https://issues.pigweed.dev/issues/329933586>`__) 8836 8837pw_digital_io 8838------------- 8839* `Update OWNERS 8840 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__ 8841 8842pw_emu 8843------ 8844* `Fix a TypeError in TemporaryEmulator 8845 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200832>`__ 8846 (issue `#316080297 <https://issues.pigweed.dev/issues/316080297>`__) 8847 8848pw_env_setup 8849------------ 8850* `Run npm log viewer setup script after install 8851 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200211>`__ 8852 8853pw_function 8854----------- 8855* `Define as cc_static_library 8856 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199092>`__ 8857 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8858 8859pw_hdlc 8860------- 8861The new :cpp:class:`pw::hdlc::Router` class is an experimental async HDLC 8862router that uses :ref:`module-pw_channel`. 8863 8864* `Document members of router 8865 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201115>`__ 8866* `Add async router 8867 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195538>`__ 8868* `Fix sitenav 8869 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196499>`__ 8870 8871pw_i2c 8872------ 8873The :ref:`module-pw_i2c` docs have been revamped. 8874 8875* `Revamp docs 8876 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196330>`__ 8877* `Update OWNERS 8878 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__ 8879* `Update OWNERS 8880 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__ 8881 8882pw_i2c_rp2040 8883------------- 8884The new :ref:`module-pw_i2c_rp2040` module implements the :ref:`module-pw_i2c` 8885interface using the Raspberry Pi Pico SDK. 8886 8887* `Initiator implementation 8888 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173552>`__ 8889 (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__) 8890 8891pw_ide 8892------ 8893:py:func:`pw_ide.settings.PigweedIdeSettings.compdb_searchpaths` now accepts 8894globs. The new :py:func:`pw_ide.settings.PigweedIdeSettings.targets_exclude` 8895method lets you specify a list of GN targets that code analysis should ignore. 8896 8897* `Support comp DB search path globs 8898 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200908>`__ 8899* `Move status_reporter to pw_cli 8900 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201113>`__ 8901* `Support including and/or excluding targets 8902 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195975>`__ 8903 8904pw_libc 8905------- 8906* `Include strncpy 8907 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199110>`__ 8908 (issue `#316936782 <https://issues.pigweed.dev/issues/316936782>`__) 8909 8910pw_log 8911------ 8912* `Follow Soong guidelines 8913 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197536>`__ 8914 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8915 8916pw_log_basic 8917------------ 8918* `Fix Soong definitions 8919 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199034>`__ 8920 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8921 8922pw_log_null 8923----------- 8924* `Define as cc_static_library 8925 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199090>`__ 8926 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8927 8928pw_log_tokenized 8929---------------- 8930* `Define as cc_static_library 8931 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198735>`__ 8932 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8933 8934pw_minimal_cpp_stdlib 8935--------------------- 8936* `Clarify purpose 8937 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200792>`__ 8938 8939pw_module 8940--------- 8941* `Jinja template refactor 8942 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201751>`__ 8943* `Overwrite prompt with diff display 8944 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201851>`__ 8945* `Allow nesting Pigweed modules in subdirectories 8946 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201114>`__ 8947* `Add OWNERS file during module creation 8948 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200831>`__ 8949 8950pw_multibuf 8951----------- 8952* `Replace Mutex with ISL 8953 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200996>`__ 8954* `Define as cc_static_library 8955 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199091>`__ 8956 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8957 8958pw_polyfill 8959----------- 8960* `Define as cc_static_library 8961 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199094>`__ 8962 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8963* `Simplify backported features table 8964 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197891>`__ 8965 8966pw_preprocessor 8967--------------- 8968* `Define as cc_static_library 8969 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199031>`__ 8970 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 8971 8972pw_presubmit 8973------------ 8974Pigweed's main docs builder now builds the :ref:`examples <seed-0122-examples>` 8975repo; the examples will be available at ``https://pigweed.dev/examples``. 8976An experimental complete Doxygen API reference is now being published to 8977``https://pigweed.dev/doxygen``. 8978 8979* `Include examples repo docs in docs_builder 8980 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201990>`__ 8981 (issue `#300317433 <https://issues.pigweed.dev/issues/300317433>`__) 8982* `Move plural() 8983 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201630>`__ 8984* `Include doxygen html in docs_build 8985 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198553>`__ 8986* `Refactor Python Black formatter support 8987 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194417>`__ 8988* `Refactor Bazel formatter support 8989 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194416>`__ 8990* `Refactor GN formatting support 8991 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194415>`__ 8992 (issue `#326309165 <https://issues.pigweed.dev/issues/326309165>`__) 8993* `Make ToolRunner capture stdout/stderr by default 8994 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200972>`__ 8995* `Update buildifier invocation 8996 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200350>`__ 8997* `Switch format test data to importlib 8998 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200790>`__ 8999* `Skip gn_teensy_build on mac-arm64 9000 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199670>`__ 9001 9002pw_protobuf 9003----------- 9004* `Support full java protos 9005 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200530>`__ 9006 (issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__) 9007 9008pw_python 9009--------- 9010* `Update setup.sh requirements 9011 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200994>`__ 9012 9013pw_result 9014--------- 9015* `Avoid duplicate symbols with Soong 9016 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201277>`__ 9017 (issue `#331458726 <https://issues.pigweed.dev/issues/331458726>`__) 9018* `Define as cc_static_library 9019 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199033>`__ 9020 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9021 9022pw_router 9023--------- 9024* `Define as cc_static_library 9025 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199130>`__ 9026 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9027* `Add Android common backends as dep 9028 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198390>`__ 9029 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9030 9031pw_rpc 9032------ 9033* `List dependencies directly 9034 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199533>`__ 9035 (issue `#331226283 <https://issues.pigweed.dev/issues/331226283>`__) 9036 9037pw_rpc_transport 9038---------------- 9039* `Define as cc_static_library 9040 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199093>`__ 9041 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9042 9043pw_span 9044------- 9045* `Define as cc_static_library 9046 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199032>`__ 9047 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9048 9049pw_spi 9050------ 9051* `Update OWNERS 9052 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200752>`__ 9053* `Update OWNERS 9054 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__ 9055 9056pw_spi_linux 9057------------ 9058Linux functionality that was previously in :ref:`module-pw_spi` has been 9059moved to its own module, :ref:`module-pw_spi_linux`. 9060 9061* `Move linux_spi from pw_spi to its own module 9062 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201351>`__ 9063 9064pw_status 9065--------- 9066The new ``pw::StatusWithSize::size_or()`` convenience method lets you return 9067a default size in place of ``pw::StatusWithSize::size()`` when the status is 9068not OK. 9069 9070* `Add StatusWithSize::size_or 9071 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198151>`__ 9072 9073pw_stream_shmem_mcuxpresso 9074-------------------------- 9075* `Fix interrupt pending check 9076 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198070>`__ 9077 (issue `#330225861 <https://issues.pigweed.dev/issues/330225861>`__) 9078 9079pw_sync 9080------- 9081* `Follow Soong guidelines 9082 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197872>`__ 9083 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9084 9085pw_sys_io 9086--------- 9087* `Update OWNERS 9088 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200714>`__ 9089* `Fix Soong definitions 9090 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199034>`__ 9091 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9092 9093pw_thread 9094--------- 9095* `Follow Soong guidance 9096 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199030>`__ 9097 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9098 9099pw_toolchain 9100------------ 9101 9102 9103* `Fix Rust GN host build 9104 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201831>`__ 9105* `Define as cc_static_library 9106 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198734>`__ 9107 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9108* `Remove unusued source set 9109 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200190>`__ 9110 (issue `#331260098 <https://issues.pigweed.dev/issues/331260098>`__) 9111* `LLVM compiler-rt builtins 9112 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198593>`__ 9113 9114pw_trace_tokenized 9115------------------ 9116* `Fix static initialization 9117 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200232>`__ 9118 9119pw_transfer 9120----------- 9121New ``pw_transfer`` macros: 9122:c:macro:`PW_TRANSFER_LOG_DEFAULT_CHUNKS_BEFORE_RATE_LIMIT`, 9123:c:macro:`PW_TRANSFER_LOG_DEFAULT_RATE_PERIOD_MS`, 9124:c:macro:`PW_TRANSFER_CONFIG_LOG_LEVEL`, and 9125:c:macro:`PW_TRANSFER_CONFIG_DEBUG_DATA_CHUNKS`. 9126 9127* `Make numerous logging adjustments 9128 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194750>`__ 9129 9130pw_uart 9131------- 9132The new :ref:`module-pw_uart` module defines core methods for UART 9133communication. 9134 9135* `Create OWNERS 9136 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200750>`__ 9137* `Added UART interface 9138 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181710>`__ 9139 9140pw_unit_test 9141------------ 9142* `Add failing results test record 9143 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197852>`__ 9144 9145pw_web 9146------ 9147* `NPM version bump to 0.0.17 9148 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201091>`__ 9149* `Fix logs not appearing in pw_console server 9150 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200793>`__ 9151 (issue `#331483789 <https://issues.pigweed.dev/issues/331483789>`__) 9152 9153Build 9154===== 9155 9156Bazel 9157----- 9158* `Add missing Python deps 9159 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199850>`__ 9160 (issue `#331267896 <https://issues.pigweed.dev/issues/331267896>`__) 9161* `Localize remaining backend label flags 9162 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199036>`__ 9163 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9164 9165Docs 9166==== 9167* `Mention that Windows flow needs admin rights 9168 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/202030>`__ 9169* `Update reST style guide 9170 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201650>`__ 9171* `Organize the documentation style guides 9172 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201116>`__ 9173* `Update references to quickstart/bazel 9174 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200131>`__ 9175 (issue `#325472122 <https://issues.pigweed.dev/issues/325472122>`__) 9176* `Simplify module creation docs using script 9177 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200231>`__ 9178* `Generate doxygen html output locally 9179 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199711>`__ 9180* `Update changelog 9181 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198810>`__ 9182 9183SEEDs 9184===== 9185* (SEED-0117) `Update status to Last Call 9186 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200710>`__ 9187* (SEED-0126) `Claim SEED number 9188 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200911>`__ 9189* (SEED-0127) `Reading sensor data 9190 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198134>`__ 9191 9192Third party 9193=========== 9194* (Emboss) `Assume newer emboss version 2/2 9195 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197363>`__ 9196 (issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__) 9197* (FreeRTOS) `Fix typo in docs 9198 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/201330>`__ 9199* (Fuchsia) `Copybara import 9200 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200712>`__ 9201 (issue `#331281133 <https://issues.pigweed.dev/issues/331281133>`__) 9202 9203Miscellaneous 9204============= 9205* `Delete move constructors of buffer wrappers 9206 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200753>`__ 9207* (Soong) `Remove _headers from lib names 9208 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198330>`__ 9209 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9210* (mbedtls) `Avoid the use of unsupported libc functions 9211 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/199131>`__ 9212 (issue `#316936782 <https://issues.pigweed.dev/issues/316936782>`__) 9213* (nanopb) `Fix nanopb_pb2.py generation 9214 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/200772>`__ 9215 9216------------ 9217Mar 22, 2024 9218------------ 9219Highlights (Mar 7, 2024 to Mar 22, 2024): 9220 9221* Pigweed's minimum supported Python version was changed to 3.10. 9222* Setting the new ``pw_build_TEST_TRANSITIVE_PYTHON_DEPS`` flag to ``false`` 9223 in your project's ``.gn`` file turns off testing and linting of transitive 9224 dependencies in ``pw_python_package`` rules, which can speed up build 9225 times significantly. 9226* The new :ref:`module-pw_log_android` module is a ``pw_log`` backend for 9227 Android and the new :ref:`module-pw_build_android` module provides tools to 9228 help build Pigweed in Android platform applications. 9229* :ref:`seed-0120` introduces ``pw_sensor``, a module that will handle 9230 Pigweed's upcoming sensor framework. 9231* The new :c:macro:`PW_LOG_EVERY_N` and :c:macro:`PW_LOG_EVERY_N_DURATION` 9232 macros provide rate-limited logging. 9233 9234Active SEEDs 9235============ 9236Help shape the future of Pigweed! Please visit :ref:`seed-0000` 9237and leave feedback on the RFCs (i.e. SEEDs) marked 9238``Open for Comments``. 9239 9240Modules 9241======= 9242 9243pw_allocator 9244------------ 9245.. _//pw_allocator/examples: https://cs.opensource.google/pigweed/pigweed/+/main:pw_allocator/examples 9246 9247The :ref:`module-pw_allocator` docs have been revamped. Code examples from 9248the docs are now extracted from complete examples that are built and tested 9249alongside the rest of the main Pigweed repo; see `//pw_allocator/examples`_. 9250 9251* `Improve size report accuracy 9252 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196492>`__ 9253* `Add buffer utilities 9254 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195353>`__ 9255* `Improve UniquePtr ergonomics 9256 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196181>`__ 9257* `Various API modifications 9258 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195973>`__ 9259* `Add IsEqual 9260 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195954>`__ 9261* `Soft-deprecate heap_viewer.py 9262 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195253>`__ 9263 (issue `#328648868 <https://issues.pigweed.dev/issues/328648868>`__) 9264* `Move code snippets from docs to examples 9265 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195190>`__ 9266 (issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__) 9267* `Clean up sources files 9268 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194948>`__ 9269* `Remove erroneous quotes around tagline 9270 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195514>`__ 9271* `Refactor code size reports 9272 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194947>`__ 9273* `Remove metrics.cc 9274 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195450>`__ 9275 (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__) 9276* `Fix move semantics for UniquePtr 9277 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195470>`__ 9278* `Refactor docs 9279 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194871>`__ 9280 (issue `#328076428 <https://issues.pigweed.dev/issues/328076428>`__) 9281* `Make metrics configurable 9282 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193621>`__ 9283 (issue `#326509341 <https://issues.pigweed.dev/issues/326509341>`__) 9284 9285pw_assert 9286--------- 9287* `Add keep_dep tags to backend_impl 9288 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197531>`__ 9289 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9290* `Introduce :backend, :backend_impl 9291 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196531>`__ 9292 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9293* `Apply formatting fixes 9294 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195951>`__ 9295 9296pw_assert_basic 9297--------------- 9298* `Fix BUILD.bazel file 9299 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196292>`__ 9300 (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__) 9301 9302pw_bluetooth 9303------------ 9304* `Add command complete event 9305 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196030>`__ 9306 (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__) 9307* `Add command complete event 9308 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195451>`__ 9309 (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__) 9310* `Add H4 packet indicators in emboss 9311 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195535>`__ 9312 (issue `#326499682 <https://issues.pigweed.dev/issues/326499682>`__) 9313* `Reformat l2cap_frames.emb 9314 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194790>`__ 9315 9316pw_bluetooth_sapphire 9317--------------------- 9318* `Use amd64 SDK 9319 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197510>`__ 9320 (issue `#330214852 <https://issues.pigweed.dev/issues/330214852>`__) 9321* `Fuchsia SDK example 9322 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__ 9323 (issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__) 9324 9325pw_build 9326-------- 9327Setting the new ``pw_build_TEST_TRANSITIVE_PYTHON_DEPS`` flag to ``false`` 9328in your project's ``.gn`` file turns off testing and linting of transitive 9329dependencies in ``pw_python_package`` rules, which can speed up build 9330times significantly. 9331 9332* `Option to not transitively run py .tests and .lint deps 9333 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186195>`__ 9334 9335pw_build_android 9336---------------- 9337The new :ref:`module-pw_build_android` module provides tools to help build 9338Pigweed in Android platform applications. 9339 9340* `Add new utils module 9341 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195139>`__ 9342 (issue `#328503970 <https://issues.pigweed.dev/issues/328503970>`__) 9343 9344pw_bytes 9345-------- 9346The new :cpp:func:`pw::bytes::ExtractBits` helper extracts bits between 9347specified left bit and right bit positions. New Rust helpers were added; 9348see `Crate pw_bytes <./rustdoc/pw_bytes>`_. 9349 9350* `Add ExtractBits template 9351 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196310>`__ 9352 (issue `#329435173 <https://issues.pigweed.dev/issues/329435173>`__) 9353* `Add Rust helpers for contcatenating const slices and strs 9354 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187651>`__ 9355 9356pw_channel 9357---------- 9358Datagram-to-byte conversions must now be explicit. 9359 9360* `Enable GetWriteAllocator function 9361 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197534>`__ 9362* `Require explicit datagram-to-byte conversions 9363 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197650>`__ 9364* `Remove max_bytes argument from ReadPoll 9365 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197352>`__ 9366* `Support datagram-to-byte conversions 9367 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196210>`__ 9368* `Handle closed channels in base 9369 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194739>`__ 9370 9371pw_checksum 9372----------- 9373* `Add missing #include <array> 9374 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196530>`__ 9375 (issue `#329594026 <https://issues.pigweed.dev/issues/329594026>`__) 9376 9377pw_chre 9378------- 9379* `Remove unused files 9380 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170792>`__ 9381 9382pw_containers 9383------------- 9384* `ConstexprSort in FlatMap takes an iterator 9385 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197217>`__ 9386 (issue `#330072104 <https://issues.pigweed.dev/issues/330072104>`__) 9387* `Add move constructors to queues 9388 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197072>`__ 9389 9390pw_digital_io_linux 9391------------------- 9392The new ``pw_digital_io_linux`` CLI tool lets you configure a GPIO line as an 9393input and gets its value, or configure a line as an output and set its value. 9394 9395* `Add Android.bp 9396 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194432>`__ 9397* `Add test CLI 9398 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194431>`__ 9399 9400pw_docgen 9401--------- 9402* `Single-source the module metadata 9403 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193333>`__ 9404 (issue `#292582625 <https://issues.pigweed.dev/issues/292582625>`__) 9405 9406pw_env_setup 9407------------ 9408Pigweed's minimum supported Python version was changed to 3.10. 9409 9410* `Update min Python version to 3.10 9411 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197332>`__ 9412 (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__) 9413* `Update CIPD rust version 9414 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194620>`__ 9415* `Use amd64 SDK 9416 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197510>`__ 9417 (issue `#330214852 <https://issues.pigweed.dev/issues/330214852>`__) 9418* `Fuchsia SDK example 9419 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__ 9420 (issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__) 9421 9422pw_format 9423--------- 9424Initital support for untyped specifiers (``%v``) was added. 9425 9426* `Enhance Rust tests to check for arguments 9427 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196433>`__ 9428 (issue `#329507809 <https://issues.pigweed.dev/issues/https://pwbug.dev/329507809>`__) 9429* `Add initial support for untyped specifiers 9430 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187650>`__ 9431 9432pw_hdlc 9433------- 9434The newly public :cpp:class:`pw::hdlc::Encoder` class supports gradually 9435encoding frames without ever holding an entire frame in memory at once. 9436 9437* `Expose Encoder 9438 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197535>`__ 9439 9440pw_hex_dump 9441----------- 9442CMake support was added. 9443 9444* `Add CMake support 9445 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198170>`__ 9446 9447pw_json 9448------- 9449* `Move examples outside of the pw namespace 9450 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195890>`__ 9451 9452pw_libc 9453------- 9454* `Define LIBC_FAST_MATH for the faster integral fixed point sqrt 9455 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196350>`__ 9456 (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__) 9457* `Add uksqrtui to stdfix 9458 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196230>`__ 9459 (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__) 9460* `Include sqrtur and expk in stdfix 9461 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195256>`__ 9462 (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__) 9463 9464pw_log 9465------ 9466The new :c:macro:`PW_LOG_EVERY_N` and :c:macro:`PW_LOG_EVERY_N_DURATION` 9467macros provide rate-limited logging. 9468 9469* `Add rate limit log statements 9470 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183870>`__ 9471* `Add keep_dep tags to backend_impl 9472 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197531>`__ 9473 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9474* `Introduce localized backend label flags 9475 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196498>`__ 9476 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9477* `Run bpfmt on all Android.bp 9478 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195490>`__ 9479 (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__) 9480 9481pw_log_android 9482-------------- 9483The new :ref:`module-pw_log_android` module is a ``pw_log`` backend for 9484Android. 9485 9486* `Fix Soong build 9487 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197830>`__ 9488* `Add pw_log_android_stderr 9489 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195050>`__ 9490 (issue `#328281789 <https://issues.pigweed.dev/issues/328281789>`__) 9491* `Add module documentation 9492 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196410>`__ 9493 9494pw_malloc 9495--------- 9496* `Add backend label flags 9497 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196610>`__ 9498 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9499 9500pw_multibuf 9501----------- 9502:cpp:class:`pw::multibuf::Stream` is a new multibuf-backed ``pw_stream`` 9503implementation that can read from and write to a multibuf. 9504:cpp:class:`pw::multibuf::SimpleAllocator` is a simple, first-fit variant 9505of :cpp:class:`pw::multibuf::MultiBufAllocator`. 9506 9507* `Add stream implementation 9508 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196354>`__ 9509* `Add empty() function 9510 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197351>`__ 9511* `Pass reference instead of pointer 9512 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197132>`__ 9513* `Add SimpleAllocator 9514 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195129>`__ 9515 9516pw_package 9517---------- 9518* `Match Emboss version used by Bazel 9519 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197359>`__ 9520 (issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__) 9521 9522pw_polyfill 9523----------- 9524* `Update __cplusplus macro for C++23; support C 9525 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196113>`__ 9526* `Remove PW_INLINE_VARIABLE 9527 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196122>`__ 9528* `Detect C23 9529 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195266>`__ 9530 (issue `#326499611 <https://issues.pigweed.dev/issues/326499611>`__) 9531 9532pw_presubmit 9533------------ 9534* `Suppress stdout option for rst_format 9535 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197890>`__ 9536* `Begin formatter modularization 9537 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193714>`__ 9538 (issue `#326309165 <https://issues.pigweed.dev/issues/326309165>`__) 9539* `Switch default formatter to black 9540 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190453>`__ 9541 (issue `#261025545 <https://issues.pigweed.dev/issues/261025545>`__) 9542* `Fuchsia SDK example 9543 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196450>`__ 9544 (issue `#42178254 <https://issues.pigweed.dev/issues/42178254>`__) 9545 9546pw_rpc 9547------ 9548* `Support full java protos 9549 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196231>`__ 9550 (issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__) 9551* `Move some headers from srcs to hdrs 9552 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196850>`__ 9553 (issue `#323749176 <https://issues.pigweed.dev/issues/323749176>`__) 9554* `Add TryFinish API for pw_rpc stream 9555 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195126>`__ 9556 (issue `#328462705 <https://issues.pigweed.dev/issues/328462705>`__) 9557* `Remove deprecated functions from Java client 9558 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193503>`__ 9559 9560pw_rust 9561------- 9562* `Tweak docs for Rust tokenized logging example 9563 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195351>`__ 9564 9565pw_sensor 9566--------- 9567:ref:`seed-0120` introduces ``pw_sensor``, a module that will handle 9568Pigweed's upcoming sensor framework. 9569 9570* `Add configuration SEED 9571 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183150>`__ 9572 9573pw_spi 9574------ 9575* `Update Android.bp to conform with new style 9576 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197410>`__ 9577 9578pw_stream_shmem_mcuxpresso 9579-------------------------- 9580* `Fix interrupt pending check 9581 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198070>`__ 9582 (issue `#330225861 <https://issues.pigweed.dev/issues/330225861>`__) 9583 9584pw_sync_stl 9585----------- 9586* `Android.bp: Add missing dependency on pw_sync_headers 9587 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197030>`__ 9588 9589pw_sys_io 9590---------- 9591* `Add backend label flags 9592 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196610>`__ 9593 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9594 9595pw_sys_io_rp2040 9596---------------- 9597* `Use callbacks to block on input 9598 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191490>`__ 9599 (issue `#324633376 <https://issues.pigweed.dev/issues/324633376>`__) 9600 9601pw_sys_io_stm32cube 9602------------------- 9603* `Fix build for f0xx, f1xx and f3xx families 9604 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195871>`__ 9605 9606pw_thread_zephyr 9607----------------- 9608* `Apply formatting fixes 9609 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195951>`__ 9610 9611pw_tokenizer 9612------------ 9613The Rust library's hashing code was updated to support multi-input hashing. 9614 9615* `Refactor Rust hash code to allow multi-input hashing 9616 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186310>`__ 9617 9618pw_transfer 9619----------- 9620The TypeScript client now has an ``abort()`` method for ending a transfer 9621without a completion chunk and a ``terminate()`` method for ending a transfer 9622with a completion chunk. 9623 9624* `Inline TRANSFER_CLIENT_DEPS 9625 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198592>`__ 9626* `Support full java protos 9627 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196231>`__ 9628 (issue `#329445249 <https://issues.pigweed.dev/issues/329445249>`__) 9629* `Add abort() and terminate() apis 9630 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194910>`__ 9631* `Update the proxy to only consider transfer chunks 9632 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196170>`__ 9633* `Fix Java client timeouts in terminating state 9634 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195123>`__ 9635 9636pw_unit_test 9637------------ 9638The new :cpp:class:`pw::unit_test::TestRecordEventHandler` class is a 9639predefined event handler that outputs a test summary in Chromium JSON Test 9640Results format. 9641 9642* `Flag to disable cmake pw_add_test calls 9643 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197530>`__ 9644 (issue `#330205620 <https://issues.pigweed.dev/issues/330205620>`__) 9645* `Add duplicate test case 9646 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197170>`__ 9647* `Localize the label flags 9648 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196670>`__ 9649 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9650* `Add test record event handler 9651 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194050>`__ 9652* `Adding googletest_handler_adapter to cmake 9653 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195070>`__ 9654 9655pw_watch 9656-------- 9657Changes to Emboss files now trigger rebuilds. 9658 9659* `Add emboss files to default watch patterns 9660 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195387>`__ 9661 9662pw_web 9663------ 9664* `NPM version bump to 0.0.16 9665 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198291>`__ 9666* `Update createLogViewer to use union types 9667 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198210>`__ 9668 (issue `#330564978 <https://issues.pigweed.dev/issues/330564978>`__) 9669* `Include file information in browser logs 9670 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196510>`__ 9671 (issue `#329680229 <https://issues.pigweed.dev/issues/329680229>`__) 9672* `NPM version bump to 0.0.15 9673 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196120>`__ 9674 9675Build 9676===== 9677 9678Bazel 9679----- 9680The new :ref:`module-pw_build-bazel-pw_facade` Bazel macro makes it easier 9681to create a :ref:`facade <docs-facades>`. 9682 9683* `Remove the deprecated pw_cc_facade macro 9684 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196121>`__ 9685 (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__) 9686* `Treat Rust warnings as errors 9687 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196436>`__ 9688 (issue `#329685244 <https://issues.pigweed.dev/issues/https://pwbug.dev/329685244>`__) 9689* `Localize backend label flags 9690 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196232>`__ 9691 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9692* `Use pw_facade 9693 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195383>`__ 9694 (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__) 9695* `Introduce pw_facade 9696 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193648>`__ 9697 (issue `#328679085 <https://issues.pigweed.dev/issues/328679085>`__) 9698* `Fix bazel query 9699 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195138>`__ 9700 9701Language support 9702================ 9703 9704Python 9705------ 9706* `Use future annotations 9707 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198570>`__ 9708* `Use future annotations 9709 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/198051>`__ 9710* `Remove PathOrStr variables 9711 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197538>`__ 9712* `Switch from typing.Optional[...] to "... | None" 9713 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197347>`__ 9714 (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__) 9715* `Switch from typing.Union to "|" 9716 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197346>`__ 9717 (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__) 9718* `Use argparse.BooleanOptionalAction 9719 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197345>`__ 9720 (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__) 9721* `Use pathlib.Path.is_relative_to() 9722 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197344>`__ 9723 (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__) 9724* `Switch from typing.Dict to dict 9725 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197343>`__ 9726 (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__) 9727* `Switch from typing.Tuple to tuple 9728 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197342>`__ 9729 (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__) 9730* `Switch from typing.List to list 9731 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197341>`__ 9732 (issue `#248257406 <https://issues.pigweed.dev/issues/248257406>`__) 9733 9734OS support 9735========== 9736 9737Zephyr 9738------ 9739* `Add action for installing Zephyr SDK 9740 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194629>`__ 9741 9742Docs 9743==== 9744The new :ref:`CLI style guide <docs-pw-style-cli>` outlines how CLI utilities 9745in upstream Pigweed should behave. 9746 9747.. todo-check: disable 9748 9749* `Add CLI style guide 9750 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197010>`__ 9751 (issue `#329532962 <https://issues.pigweed.dev/issues/329532962>`__) 9752* `Move TODO style guide 9753 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197730>`__ 9754* `Fix redirect paths 9755 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197368>`__ 9756 (issue `#324241028 <https://issues.pigweed.dev/issues/324241028>`__) 9757* `Fix code-block indentation 9758 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197533>`__ 9759* `Add redirects infrastructure and docs contributor section 9760 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197339>`__ 9761 (issue `#324241028 <https://issues.pigweed.dev/issues/324241028>`__) 9762* `Fix some incorrect target names 9763 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/196495>`__ 9764 (issue `#329441699 <https://issues.pigweed.dev/issues/329441699>`__) 9765* `Fix mentions of sample_project 9766 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195974>`__ 9767 (issue `#322859039 <https://issues.pigweed.dev/issues/322859039>`__) 9768* `TOC entry for API documentation from source 9769 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195970>`__ 9770* `Update changelog 9771 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195354>`__ 9772 9773.. todo-check: enable 9774 9775Third party 9776=========== 9777* `Minor build file formatting fixes 9778 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197369>`__ 9779* (Emboss) `Assume newer emboss version 1/2 9780 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/197362>`__ 9781 (issue `#329872338 <https://issues.pigweed.dev/issues/329872338>`__) 9782* (STM32Cube) `Fix bazel hal driver build 9783 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195870>`__ 9784 9785----------- 9786Mar 7, 2024 9787----------- 9788Highlights (Feb 22, 2024 to Mar 7, 2024): 9789 9790* The new :ref:`module-pw_digital_io_linux` module is a 9791 :ref:`module-pw_digital_io` backend for Linux userspace. 9792* :cpp:class:`pw::multibuf::MultiBufAllocator` class is a new interface 9793 for allocating ``pw::multibuf::MultiBuf`` objects. 9794* The ``pw_web`` log viewer now captures browser console logs. It also 9795 now supports creating log stores and downloading logs from stores. 9796 9797Active SEEDs 9798============ 9799Help shape the future of Pigweed! Please visit :ref:`seed-0000` 9800and leave feedback on the RFCs (i.e. SEEDs) marked 9801``Open for Comments``. 9802 9803Modules 9804======= 9805 9806pw_allocator 9807------------ 9808* `Remove split_free_list_allocator.cc from Android.bp 9809 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194551>`__ 9810* `Add missing dep 9811 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194231>`__ 9812* `Use BlockAllocator instead of alternatives 9813 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188354>`__ 9814* `Make TrackingAllocator correct by construction 9815 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193330>`__ 9816 9817pw_assert_log 9818------------- 9819* `Depend on pw_log_headers in Android.bp 9820 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194434>`__ 9821* `Fix PW_HANDLE_CRASH to handle 0 args 9822 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194450>`__ 9823 (issue `#327201811 <https://issues.pigweed.dev/issues/327201811>`__) 9824 9825pw_async2 9826--------- 9827* `Address post-submit comments 9828 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194693>`__ 9829* `Add converting constructors to Poll 9830 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193593>`__ 9831 9832pw_blob_store 9833------------- 9834* `Set module name to BLOB 9835 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195170>`__ 9836 9837pw_bluetooth 9838------------ 9839* `Add hci_data.emb 9840 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194631>`__ 9841 (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__) 9842* `Add ISO feature bit to controllers 9843 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194550>`__ 9844* `Add ISO definitions to Controller 9845 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194470>`__ 9846 9847pw_build 9848-------- 9849* `Remove FUZZTEST_OPTS 9850 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189317>`__ 9851* `Fix ProjectBuilder recipe percentage 9852 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194392>`__ 9853 9854pw_config_loader 9855---------------- 9856* `Support custom overloading rules 9857 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190833>`__ 9858 9859pw_containers 9860------------- 9861* `Rename VariableLengthEntryQueue 9862 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187311>`__ 9863* `Rename VariableLengthEntryQueue files 9864 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187310>`__ 9865* `VariableLengthEntryQueue C++ API 9866 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169910>`__ 9867 9868pw_digital_io_linux 9869------------------- 9870The new :ref:`module-pw_digital_io_linux` module is a 9871:ref:`module-pw_digital_io` backend for Linux userspace. 9872 9873* `Introduce new module 9874 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194430>`__ 9875 9876pw_json 9877------- 9878* `Update example; fix typo and declaration order 9879 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194411>`__ 9880 9881pw_libc 9882------- 9883* `Add stdfix target 9884 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194628>`__ 9885 (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__) 9886* `Facilitate next llvm-libc roll 9887 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194603>`__ 9888 9889pw_log 9890------ 9891* `Fix stdout race in println_backend_test_test 9892 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195122>`__ 9893 (issue `#328498798 <https://issues.pigweed.dev/issues/328498798>`__) 9894* `Add tests for Rust printf and println backends 9895 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194952>`__ 9896* `Show child docs in site nav 9897 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193830>`__ 9898* `Fix the Pigweed Soong build 9899 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193690>`__ 9900 (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__) 9901 9902pw_module 9903--------- 9904* `Remove README.md check 9905 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194934>`__ 9906 (issue `#328265397 <https://issues.pigweed.dev/issues/328265397>`__) 9907 9908pw_multibuf 9909----------- 9910The new :cpp:class:`pw::multibuf::MultiBufAllocator` class is an interface 9911for allocating ``pw::multibuf::MultiBuf`` objects. 9912 9913* `Add MultiBufAllocator interface 9914 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180840>`__ 9915* `Deduplicate const+non_const iterators 9916 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194405>`__ 9917* `Clean up API 9918 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194600>`__ 9919 (issue `#327673957 <https://issues.pigweed.dev/issues/327673957>`__) 9920* `Add +=N and +n operators to iterator 9921 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194310>`__ 9922* `Add slicing operations to MultiBuf 9923 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192895>`__ 9924 9925pw_presubmit 9926------------ 9927* `Remove unused presubmit step 9928 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194940>`__ 9929 9930pw_proto_compiler 9931----------------- 9932* `strip_import_prefix + options 9933 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194949>`__ 9934 (issue `#328311416 <https://issues.pigweed.dev/issues/328311416>`__) 9935 9936pw_result 9937--------- 9938* `Add constructor deduction guide 9939 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194612>`__ 9940 9941pw_rpc 9942------ 9943The newly public :cpp:class:`pw::rpc::CloseAndWaitForCallbacks` function 9944abandons an RPC and blocks on the completion of any running callbacks. 9945 9946* `Expose CloseAndWaitForCallbacks in client call API 9947 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194697>`__ 9948 9949pw_rpc_transport 9950---------------- 9951* `Add log for no packet available 9952 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194592>`__ 9953 9954pw_rust 9955------- 9956* `Add Rust tokenized logging example 9957 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181268>`__ 9958 9959pw_stream_uart_mcuxpresso 9960------------------------- 9961``pw_stream_uart_mcuxpresso`` now supports direct memory access reads and 9962writes. 9963 9964* `Fix code examples in docs 9965 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194630>`__ 9966* `Implement DoRead DMA 9967 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192893>`__ 9968 (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__) 9969* `Implement DoWrite DMA 9970 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192892>`__ 9971 (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__) 9972* `Implement init / deinit 9973 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192891>`__ 9974 (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__) 9975* `USART DMA scaffolding 9976 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192890>`__ 9977 (issue `#325514698 <https://issues.pigweed.dev/issues/325514698>`__) 9978 9979pw_string 9980--------- 9981``pw::InlineByteString`` is a new alias of ``pw::InlineBasicString<std::byte>`` 9982that can be used as a simple and efficient byte container. 9983 9984* `Add ToString for Result and Poll 9985 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194621>`__ 9986* `Support InlineBasicString<std::byte>; InlineByteString alias 9987 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194710>`__ 9988 (issue `#327497061 <https://issues.pigweed.dev/issues/327497061>`__) 9989 9990pw_sync 9991------- 9992* `Allow implict conversion when moving BorrowedPointer 9993 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194394>`__ 9994 9995pw_tokenizer 9996------------ 9997* `Fix missing bazel filegroup 9998 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194399>`__ 9999* `Add Detokenizer constructor with elf binary section 10000 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190650>`__ 10001* `Add code size optimization to Rust implementation 10002 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193504>`__ 10003 10004pw_toolchain_bazel 10005------------------ 10006* `Apply more common attrs to cc_toolchain targets 10007 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194890>`__ 10008* `Support Windows in toolchain template build files 10009 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194591>`__ 10010 10011pw_transfer 10012----------- 10013* `Respect user-specified resource size 10014 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194935>`__ 10015* `Temporarily disable broken integration test 10016 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194850>`__ 10017* `Only request a single chunk in test 10018 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194151>`__ 10019 (issue `#323386167 <https://issues.pigweed.dev/issues/323386167>`__) 10020* `Fix WindowPacketDropper proxy filter 10021 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194030>`__ 10022 (issue `#322497823 <https://issues.pigweed.dev/issues/322497823>`__) 10023 10024pw_unit_test 10025------------ 10026The :ref:`module-pw_unit_test` docs have been revamped. Using the full upstream 10027GoogleTest backend with ``simple_printing_main`` in Bazel has been fixed. 10028 10029* `Update docs 10030 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193671>`__ 10031* `Fix googletest backend 10032 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190593>`__ 10033 (issue `#324116813 <https://issues.pigweed.dev/issues/324116813>`__) 10034 10035pw_watch 10036-------- 10037``pw_watch`` now rebuilds when Bazel files are changed. 10038 10039* `Add bazel files to default watch patterns 10040 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/195310>`__ 10041 (issue `#328619290 <https://issues.pigweed.dev/issues/328619290>`__) 10042 10043pw_web 10044------ 10045The ``pw_web`` log viewer now captures browser console logs. It also 10046now supports creating log stores and downloading logs from stores. 10047 10048* `Capture browser logs in the log viewer 10049 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194451>`__ 10050 (issue `#325096768 <https://issues.pigweed.dev/issues/325096768>`__) 10051* `Create log store and enable download logs from it 10052 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186874>`__ 10053 (issue `#316966729 <https://issues.pigweed.dev/issues/316966729>`__) 10054 10055Bazel 10056----- 10057* `Update rust_crates in Bazel WORKSPACE 10058 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194938>`__ 10059* `Mark more targets testonly 10060 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193626>`__ 10061 (issue `#324116813 <https://issues.pigweed.dev/issues/324116813>`__) 10062 10063Docs 10064==== 10065The new :ref:`protobuf style guide <docs-pw-style-protobuf>` describes how 10066protobufs should be styled throughout Pigweed. 10067 10068* `Add protobuf style guide 10069 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190723>`__ 10070 (issue `#232867615 <https://issues.pigweed.dev/issues/232867615>`__) 10071* `Clarify that Pigweed doesn't support msan 10072 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194877>`__ 10073 (issue `#234876100 <https://issues.pigweed.dev/issues/234876100>`__) 10074* `Clarify rvalue docs 10075 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194696>`__ 10076* `Reorder tocdepth and title 10077 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193970>`__ 10078* `Prefer rvalue references 10079 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193647>`__ 10080* `Update changelog 10081 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193620>`__ 10082 10083Third party 10084=========== 10085* `Android.bp: Export fuchsia_sdk_lib_stdcompat headers 10086 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194370>`__ 10087* (Emboss) `Support latest version of Emboss in GN 10088 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194876>`__ 10089* (Emboss) `Add CMake support for emboss 10090 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194400>`__ 10091 (issue `#326500136 <https://issues.pigweed.dev/issues/326500136>`__) 10092* (FreeRTOS) `Tidy up Bazel build 10093 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193633>`__ 10094 (issue `#326625641 <https://issues.pigweed.dev/issues/326625641>`__) 10095* (FreeRTOS) `Create Bazel build template 10096 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193645>`__ 10097 (issue `#326625641 <https://issues.pigweed.dev/issues/326625641>`__) 10098* (STM32Cube) `Build template formatting fixes 10099 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194723>`__ 10100 10101Miscellaneous 10102============= 10103* `Unrecommendify 10104 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/194852>`__ 10105* `Clean up Python proto imports 10106 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193641>`__ 10107 (issue `#241456982 <https://issues.pigweed.dev/issues/241456982>`__) 10108 10109------------ 10110Feb 23, 2024 10111------------ 10112Highlights (Feb 9, 2024 to Feb 23, 2024): 10113 10114* The new :ref:`module-pw_json` module provides classes for serializing JSON. 10115* Raspberry Pi RP2040 support was expanded, including a new 10116 ``pw::digital_io::Rp2040Config`` struct enables you to configure polarity for 10117 RP2040 GPIO pins, and a new ``pw::spi::Rp2040Initiator`` class which is a 10118 Pico SDK userspace implementation of Pigweed's SPI ``Initiator`` class. 10119* The new ``pw::spi::DigitalOutChipSelector`` class sets the state of a 10120 :ref:`module-pw_digital_io` output when activated. 10121* The :ref:`module-pw_kvs` docs were overhauled. 10122 10123Active SEEDs 10124============ 10125Help shape the future of Pigweed! Please visit :ref:`seed-0000` 10126and leave feedback on the RFCs (i.e. SEEDs) marked 10127``Open for Comments``. 10128 10129Modules 10130======= 10131 10132pw_allocator 10133------------ 10134* `Remove total_bytes metric 10135 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193251>`__ 10136* `Expose TrackingAllocator's initialization state 10137 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192570>`__ 10138 10139pw_assert 10140--------- 10141* `Apply formatting changes 10142 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193496>`__ 10143 10144pw_assert_log 10145------------- 10146* `Fix Soong rules 10147 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190602>`__ 10148 (issue `#324266698 <https://issues.pigweed.dev/issues/324266698>`__) 10149* `Fix missing lib in soong rule 10150 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192259>`__ 10151 10152pw_bluetooth 10153------------ 10154* `Add Emboss rules to BUILD.bazel 10155 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192513>`__ 10156* `Update emboss imports to match Bazel rule 10157 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192392>`__ 10158 10159pw_build 10160-------- 10161* `Silence warnings from linker script test 10162 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191850>`__ 10163 10164pw_bytes 10165-------- 10166* `Add missing export in soong rule 10167 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192257>`__ 10168 10169pw_chrono_rp2040 10170---------------- 10171* `Minor tweaks to documentation and test 10172 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183730>`__ 10173 (issue `#303297807 <https://issues.pigweed.dev/issues/303297807>`__) 10174 10175pw_cli 10176------ 10177* `Add exit codes 10178 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__ 10179 10180pw_config_loader 10181---------------- 10182The new ``skip_files__without_sections`` option enables you to just move on 10183to the next file rather than raise an exception if a relevant section doesn't 10184exist in a config file. 10185 10186* `Allow skipping files 10187 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191970>`__ 10188 10189pw_containers 10190------------- 10191* `Add default move operator for FilteredView 10192 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192830>`__ 10193* `Add move constructor to FiltertedView 10194 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191832>`__ 10195 10196pw_digital_io_rp2040 10197-------------------- 10198The new ``pw::digital_io::Rp2040Config`` struct enables you to configure 10199polarity for RP2040 GPIO pins. 10200 10201* `Config with polarity 10202 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176290>`__ 10203 (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__) 10204 10205pw_env_setup 10206------------ 10207* `Use amd64 host tools on arm64 10208 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192763>`__ 10209 (issue `#325498131 <https://issues.pigweed.dev/issues/325498131>`__) 10210 10211pw_function 10212----------- 10213The new ``//third_party/fuchsia:fit`` label flag enables Bazel-based projects 10214to provide an alternate implementation for ``fit()`` when needed. 10215 10216* `//third_party/fuchsia:fit label_flag 10217 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192391>`__ 10218 10219pw_fuzzer 10220--------- 10221* `Fix Bazel example, add presubmit test 10222 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191310>`__ 10223 (issue `#324617297 <https://issues.pigweed.dev/issues/324617297>`__) 10224 10225pw_grpc 10226------- 10227* `Fix some minor bugs 10228 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191831>`__ 10229 10230pw_hdlc 10231------- 10232* `Add android_library targets 10233 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__ 10234 (issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__) 10235 10236pw_i2c 10237------ 10238The API reference for :cpp:class:`pw::i2c::RegisterDevice` is now published on 10239``pigweed.dev``. 10240 10241* `Doxygenify RegisterDevice 10242 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191833>`__ 10243 10244pw_ide 10245------ 10246* `Fix environment inference 10247 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191371>`__ 10248 10249pw_json 10250------- 10251The new :ref:`module-pw_json` module provides classes for serializing JSON. 10252 10253* `Classes for serializing JSON 10254 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190458>`__ 10255 10256pw_kvs 10257------ 10258The :ref:`module-pw_kvs` docs were overhauled. 10259 10260* `Follow new module docs guidelines 10261 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189430>`__ 10262 10263pw_log 10264------ 10265* `Add android_library targets 10266 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__ 10267 (issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__) 10268 10269pw_log_android 10270-------------- 10271* `Fix missing libs in soong rule 10272 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192258>`__ 10273 10274pw_metric 10275--------- 10276* `Fix Bazel build 10277 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190971>`__ 10278 (issue `#258078909 <https://issues.pigweed.dev/issues/258078909>`__) 10279 10280pw_module 10281--------- 10282* `Add exit codes 10283 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__ 10284 10285pw_multibuf 10286----------- 10287* `Fix soong support 10288 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192894>`__ 10289 (issue `#325320103 <https://issues.pigweed.dev/issues/325320103>`__) 10290 10291pw_package 10292---------- 10293* `Update GoogleTest 10294 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193250>`__ 10295* `Remove capture_output=True 10296 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192530>`__ 10297 10298pw_preprocessor 10299--------------- 10300The :ref:`module-pw_preprocessor` reference is now being generated via Doxygen. 10301 10302* `Do not check for __VA_OPT__ on older compilers 10303 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193434>`__ 10304 (issue `#326135018 <https://issues.pigweed.dev/issues/326135018>`__) 10305* `Switch to Doxygen 10306 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192730>`__ 10307* `Use __VA_OPT__ when available 10308 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187099>`__ 10309 10310pw_presubmit 10311------------ 10312.. todo-check: disable 10313 10314* `Allow markdown style TODOs and adjust rustdocs 10315 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192253>`__ 10316 (issue `#315389119 <https://issues.pigweed.dev/issues/315389119>`__) 10317* `Log format --fix output 10318 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192394>`__ 10319* `Fix formatting of TypeScript code 10320 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192393>`__ 10321* `Disallow FIXME and recommend TODO 10322 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188367>`__ 10323* `Allow pwbug.dev in TODOs 10324 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191795>`__ 10325* `Allow Bazel issues in TODOs 10326 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190970>`__ 10327 10328.. todo-check: disable 10329 10330.. _docs-changelog-20240226-pw_rpc: 10331 10332pw_rpc 10333------ 10334``pw_rpc`` clients will once again accept unsolicited responses from ``pw_rpc`` 10335servers that were built prior to September 2022. Unsolicited responses, also 10336known as "open" requests, let a server send a message to a client prior to the 10337client sending a request. This change fixed an incompatibility in which 10338``pw_rpc`` clients built after September 2022 would not accept unsolicited 10339responses from servers built before September 2022 (specifically, 10340change `#109077 <https://pwrev.dev/109077>`_). 10341 10342* `Remove use of deprecated Python API 10343 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187491>`__ 10344 (issue `#306195999 <https://issues.pigweed.dev/issues/306195999>`__) 10345* `Add android_library targets 10346 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190930>`__ 10347 (issue `#321155919 <https://issues.pigweed.dev/issues/321155919>`__) 10348* `Support legacy unsolicited responses 10349 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192311>`__ 10350 10351pw_software_update 10352------------------ 10353* `Add java build objects 10354 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193410>`__ 10355 10356pw_spi 10357------ 10358The new ``pw::spi::DigitalOutChipSelector`` class is an implementation of 10359``pw::spi::ChipSelector`` that sets the state of a :ref:`module-pw_digital_io` 10360output when activated. 10361 10362* `Add Android.bp 10363 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192590>`__ 10364 (issue `#316067629 <https://issues.pigweed.dev/issues/316067629>`__) 10365* `DigitalOutChipSelector 10366 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192790>`__ 10367 (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__) 10368* `Correct full-duplex behavior of linux_spi 10369 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192591>`__ 10370 (issue `#316067628 <https://issues.pigweed.dev/issues/316067628>`__) 10371 10372pw_spi_rp2040 10373------------- 10374The new ``pw::spi::Rp2040Initiator`` class is a Pico SDK userspace 10375implementation of Pigweed's SPI ``Initiator`` class. 10376 10377* `Initiator implementation 10378 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192791>`__ 10379 (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__) 10380 10381pw_stream 10382--------- 10383* `Fix Pigweed build after sync 10384 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191250>`__ 10385 (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__) 10386 10387pw_string 10388--------- 10389Debug error messages for assertions containing ``std::optional`` types have 10390been improved. 10391 10392* `Add ToString for std::optional 10393 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192514>`__ 10394 10395pw_sync 10396------- 10397* `Add missing lib in soong rule 10398 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192260>`__ 10399 10400pw_tokenizer 10401------------ 10402The :ref:`module-pw_tokenizer` and :ref:`module-pw_snapshot` Python 10403libraries can now be used from Bazel as a result of the proto 10404migration. See issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__). 10405 10406* `Fix link breakage on linux 10407 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192511>`__ 10408 (issue `#321306079 <https://issues.pigweed.dev/issues/321306079>`__) 10409* `Proto migration stage 5/5 10410 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191270>`__ 10411 (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__) 10412* `Proto migration stage 3/5 10413 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189696>`__ 10414 (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__) 10415* `Proto migration stage 1.5/5 10416 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191834>`__ 10417 (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__) 10418* `Proto migration stage 1/5 10419 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191135>`__ 10420 (issue `#322850978 <https://issues.pigweed.dev/issues/322850978>`__) 10421 10422pw_toolchain 10423------------ 10424* `Add missing #include 10425 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193430>`__ 10426* `Rename `action_config_flag_sets` to `flag_sets` 10427 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192911>`__ 10428* `Simplify macOS -nostdlib++ usage 10429 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192898>`__ 10430* `Remove unnecessary toolchain arguments 10431 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192896>`__ 10432* `Add missing macOS cxx_builtin_include_directories 10433 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192270>`__ 10434 (issue `#324652164 <https://issues.pigweed.dev/issues/324652164>`__) 10435 10436pw_toolchain_bazel 10437------------------ 10438* `Use llvm-libtool-darwin on macOS 10439 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190896>`__ 10440 (issue `#297413805 <https://issues.pigweed.dev/issues/297413805>`__) 10441* `Explicitly depend on rules_cc 10442 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191430>`__ 10443 10444pw_transfer 10445----------- 10446* `Add an android_library for the Java client 10447 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193534>`__ 10448* `Change class to parser 10449 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193550>`__ 10450* `Fix integration test START packet issue 10451 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192755>`__ 10452 (issue `#322497491 <https://issues.pigweed.dev/issues/322497491>`__) 10453* `Add GetResourceStatus method 10454 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192810>`__ 10455* `Limit test to sending a single chunk 10456 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192510>`__ 10457* `Remove/hide deprecated handle interfaces 10458 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190972>`__ 10459 10460pw_watch 10461-------- 10462* `Add exit codes 10463 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192897>`__ 10464 10465pw_web 10466------ 10467The log viewer now supports multiple log sources. 10468 10469* `NPM version bump to 0.0.14 10470 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193510>`__ 10471* `Enable multiple log sources 10472 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192370>`__ 10473 (issue `#325096310 <https://issues.pigweed.dev/issues/325096310>`__) 10474 10475Build 10476===== 10477* `Fix docs build on mac-arm64 10478 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192910>`__ 10479* `Use correct host_cpu when disabling docs on Arm Macs 10480 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192757>`__ 10481* `Remove docs from default build on Arm Macs 10482 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192754>`__ 10483 (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__) 10484* `Build for Java 11 10485 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191830>`__ 10486 10487Bazel 10488----- 10489* `Remove shallow_since attributes 10490 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193473>`__ 10491* `Upgrade protobuf to 4.24.4 10492 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187431>`__ 10493 (issue `#319717451 <https://issues.pigweed.dev/issues/319717451>`__) 10494 10495Targets 10496======= 10497* (rp2040) `Replace rp2040 target with rp2040_pw_system 10498 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192516>`__ 10499* (rp2040) `Custom libusb backend 10500 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192630>`__ 10501 10502OS support 10503========== 10504* (Zephyr) `Change the pinned Zephyr commit 10505 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192690>`__ 10506* (Zephyr) `Add zephyr's west CLI 10507 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190547>`__ 10508 10509Docs 10510==== 10511`Breadcrumbs <https://en.wikipedia.org/wiki/Breadcrumb_navigation>`_ are now 10512shown at the top of all docs pages except the homepage. 10513 10514* `Add breadcrumbs 10515 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193508>`__ 10516* `Fix incorrect module name in changelog 10517 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193331>`__ 10518* `Fix canonical URLs for all */docs.html pages 10519 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/193431>`__ 10520* `Fix typo in facades documentation 10521 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192710>`__ 10522* `Fix 404s 10523 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192251>`__ 10524 (issue `#325086274 <https://issues.pigweed.dev/issues/325086274>`__) 10525 10526SEEDs 10527===== 10528* (SEED-0125) `Claim SEED number 10529 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192110>`__ 10530* `Mark legacy Sensor SEED as Rejected 10531 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192250>`__ 10532 10533Third party 10534=========== 10535* `Roll FuzzTest and Abseil 10536 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189419>`__ 10537 10538Miscellaneous 10539============= 10540* `Disable tests incompatible with rp2040 10541 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192764>`__ 10542 (issue `#260624583 <https://issues.pigweed.dev/issues/260624583>`__) 10543* `Fix uses of std::chrono literals 10544 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192515>`__ 10545* (pigweed.json) `Disallow Rosetta 10546 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188251>`__ 10547 (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__) 10548* (renode) `Update renode to latest daily build 10549 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/192254>`__ 10550 10551----------- 10552Feb 9, 2024 10553----------- 10554Highlights (Jan 26, 2024 to Feb 9, 2024): 10555 10556* The new :ref:`module-pw_grpc` module provides classes that map between 10557 ``pw_rpc`` packets and HTTP/2 gRPC frames, allowing ``pw_rpc`` services to 10558 be exposed as gRPC services. 10559* A lot of the remaining ``pw_toolchain_bazel`` feature work from 10560 :ref:`seed-0113` was finished and rough edges were polished up. 10561* The new generic ``pw::allocator::BlockAllocator`` interface supported several 10562 derived types that enable fine-grained control over how a block satisfies an 10563 allocation request. 10564 10565* ``pw_transfer`` now supports :ref:`resumable transfers 10566 <pw_transfer-nonzero-transfers>`. 10567 10568Active SEEDs 10569============ 10570Help shape the future of Pigweed! Please visit :ref:`seed-0000` 10571and leave feedback on the RFCs (i.e. SEEDs) marked 10572``Open for Comments``. 10573 10574Modules 10575======= 10576 10577pw_alignment 10578------------ 10579* `Add CMake & Soong support 10580 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189360>`__ 10581 10582pw_allocator 10583------------ 10584The new generic :cpp:class:`pw::allocator::BlockAllocator` interface supports 10585several derived types that enable fine-grained control over how a block 10586satisfies an allocation request. The new :cpp:func:`pw::allocator::GetLayout()` 10587method retrieves the layout that was used to allocate a given pointer. The new 10588:cpp:class:`pw::allocator::AllocatorSyncProxy` interface synchronizes access to 10589another allocator, allowing it to be used by multiple threads. 10590 10591* `Refactor metric collection for tests 10592 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190105>`__ 10593* `Add Allocator::GetLayout 10594 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187764>`__ 10595* `Add BlockAllocator 10596 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187657>`__ 10597* `Fix SynchronizedAllocator typo 10598 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190721>`__ 10599* `Streamline Block and improve testing 10600 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187656>`__ 10601* `Separate metrics from Fallback-, MultiplexAllocator 10602 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190253>`__ 10603* `Make TrackingAllocator::Init optional 10604 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190454>`__ 10605* `Check for integer overflow in Layout 10606 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187654>`__ 10607* `Add additional metrics 10608 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190250>`__ 10609* `Rename AllocatorMetricProxy to TrackingAllocator 10610 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190230>`__ 10611* `Add SynchronizedAllocator 10612 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189690>`__ 10613* `Fix typo 10614 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189717>`__ 10615* `Fix Allocator::Reallocate 10616 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189691>`__ 10617 10618pw_assert 10619--------- 10620* `Break out compatibility backend target 10621 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189106>`__ 10622 (issue `#322057191 <https://issues.pigweed.dev/issues/322057191>`__) 10623 10624pw_async_basic 10625-------------- 10626* `Remove unneeded locks from test 10627 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190238>`__ 10628* `Test flake fix 10629 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189938>`__ 10630 (issue `#323251704 <https://issues.pigweed.dev/issues/323251704>`__) 10631* `Fix data race in newly added test 10632 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189879>`__ 10633* `Fix ordering of tasks posted at same time 10634 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189784>`__ 10635 10636pw_bloat 10637-------- 10638The new boolean argument ``ignore_unused_labels`` for ``pw_size_report()`` 10639enables you to remove labels from the JSON size report that have a size of 0. 10640 10641* `Allow removal of zero sized labels 10642 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190599>`__ 10643 (issue `#282057969 <https://issues.pigweed.dev/issues/282057969>`__) 10644 10645pw_bluetooth 10646------------ 10647* `Add l2cap_frames.emb 10648 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185751>`__ 10649* `Fix typo in SbcAllocationMethod 10650 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190130>`__ 10651 10652pw_boot 10653------- 10654* `Update status and general doc cleanup 10655 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189298>`__ 10656 10657pw_build 10658-------- 10659The new ``PW_USE_COLOR``, ``NO_COLOR``, and ``CLICOLOR_FORCE`` OS environment 10660variables enable you to control whether output in CI/CQ is color formatted. 10661 10662* `Add Fuchsia to TARGET_COMPATIBLE_WITH_HOST_SELECT 10663 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190714>`__ 10664* `Enable fixed point types for clang builds 10665 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190097>`__ 10666 (issue `#323425639 <https://issues.pigweed.dev/issues/323425639>`__) 10667* `Support disabling colors 10668 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189611>`__ 10669 (issue `#323056074 <https://issues.pigweed.dev/issues/323056074>`__) 10670 10671pw_bytes 10672-------- 10673* `Check for integer overflow 10674 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187655>`__ 10675 10676pw_channel 10677---------- 10678The initial ``pw::channel::Channel`` class from :ref:`seed-0114` has been 10679introduced but it is experimental and should not be used yet. 10680 10681* `Docs fix 10682 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190624>`__ 10683* `Module for async data exchange with minimal copying 10684 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189284>`__ 10685 10686pw_cli 10687------ 10688* `Add json_config_loader_mixin 10689 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190540>`__ 10690 10691pw_compilation_testing 10692---------------------- 10693* `Do not expand regexes 10694 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/191030>`__ 10695* `Minor improvements 10696 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189788>`__ 10697 10698pw_config_loader 10699---------------- 10700The code from ``pw_cli`` related to looking up user-specific configuration 10701files has been moved to this separate module. 10702 10703* `Add support for nested keys 10704 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190673>`__ 10705* `Add tests 10706 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190672>`__ 10707* `Initial commit 10708 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190671>`__ 10709 10710pw_cpu_exception_cortex_m 10711------------------------- 10712* `Handle ARM v8.1 case 10713 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189828>`__ 10714 (issue `#311766664 <https://issues.pigweed.dev/issues/311766664>`__) 10715 10716pw_digital_io 10717------------- 10718* `[[nodiscard]] on as() conversion functions 10719 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189815>`__ 10720* `Use pw::internal::SiblingCast 10721 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__ 10722 10723pw_env_setup 10724------------ 10725* `Roll cipd 10726 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190737>`__ 10727 (issue `#315378787 <https://issues.pigweed.dev/issues/315378787>`__) 10728* `Make npm actions more robust 10729 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189358>`__ 10730 (issues `#323378974 <https://issues.pigweed.dev/issues/305042957>`__, 10731 `#322437881 <https://issues.pigweed.dev/issues/322437881>`__, 10732 `#323378974 <https://issues.pigweed.dev/issues/323378974>`__) 10733* `Only add mingw to PATH once 10734 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190030>`__ 10735 (issue `#322437881 <https://issues.pigweed.dev/issues/322437881>`__) 10736 10737pw_format 10738--------- 10739* `Fix safe buildifier warnings 10740 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189716>`__ 10741 (issue `#242181811 <https://issues.pigweed.dev/issues/242181811>`__) 10742 10743pw_function 10744----------- 10745* `Follow new docs guidelines 10746 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188362>`__ 10747 10748pw_fuzzer 10749--------- 10750* `Fix Bazel run target instructions 10751 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188363>`__ 10752 10753pw_grpc 10754------- 10755The new :ref:`module-pw_grpc` module is an implementation of the gRPC HTTP/2 10756protocol. It provides classes that map between :ref:`module-pw_rpc` packets 10757and ``pw_grpc`` HTTP/2 frames, allowing ``pw_rpc`` services to be exposed as 10758gRPC services. 10759 10760* `Fix off-by-one error when handling DATA frames 10761 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190470>`__ 10762 (issue `#323924487 <https://issues.pigweed.dev/issues/323924487>`__) 10763* `Add new module 10764 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186796>`__ 10765 10766pw_ide 10767------ 10768* `Disable Python terminal activation in VSC 10769 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190592>`__ 10770* `Remove terminal env vars from VSC settings 10771 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188470>`__ 10772* `VSC extension 0.1.4 release 10773 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188742>`__ 10774 10775pw_presubmit 10776------------ 10777Color formatting in CI/CQ has been improved for readability. 10778 10779* `Simplify 'gn gen' color logic 10780 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190239>`__ 10781* `Use color logic in gn gen call 10782 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189827>`__ 10783* `Apply color logic in more cases 10784 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189829>`__ 10785* `Support disabling colors 10786 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189611>`__ 10787 (issue `#323056074 <https://issues.pigweed.dev/issues/323056074>`__) 10788 10789pw_protobuf 10790----------- 10791* `Use pw::internal::SiblingCast 10792 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__ 10793 10794pw_random 10795--------- 10796* `Clean up build files 10797 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189779>`__ 10798 10799pw_result 10800--------- 10801* `Add missing libs in Soong blueprint 10802 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190950>`__ 10803 10804pw_rpc 10805------ 10806* `Avoid undefined behavior when casting to rpc::Writer 10807 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189648>`__ 10808 10809pw_stream 10810--------- 10811* `Use pw::internal::SiblingCast 10812 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189015>`__ 10813 10814pw_target_runner 10815---------------- 10816* `Remove .dev from path name 10817 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190450>`__ 10818 10819pw_thread 10820--------- 10821* `Incease the sleep duration in tests 10822 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190270>`__ 10823 (issue `#321832803 <https://issues.pigweed.dev/issues/321832803>`__) 10824 10825pw_tokenizer 10826------------ 10827:ref:`Troubleshooting docs <module-pw_tokenizer-gcc-template-bug>` were added 10828that explain how to workaround GCC's template function tokenization bug in GCC 10829releases prior to 14. 10830 10831* `Mention GCC template bug in the docs 10832 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189820>`__ 10833 10834pw_toolchain 10835------------ 10836* `Disable unstable features in rust toolchains 10837 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189948>`__ 10838* `Fix divergent configuration in arm_clang M0+ toolchain 10839 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190196>`__ 10840* `Use less generic names for B1-B5 10841 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189732>`__ 10842* `Use LLVM compiler-rt builtins 10843 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186232>`__ 10844* `Internal wrapper for casting between siblings 10845 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189014>`__ 10846 (issue `#319144706 <https://issues.pigweed.dev/issues/319144706>`__) 10847* `Small docs update 10848 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189278>`__ 10849 (issue `#300471936 <https://issues.pigweed.dev/issues/300471936>`__) 10850 10851pw_toolchain_bazel 10852------------------ 10853A lot of the remaining ``pw_toolchain_bazel`` feature work from 10854:ref:`seed-0113` was finished and rough edges were polished up. 10855 10856* `Remove support for *_files 10857 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190810>`__ 10858 (issue `#323448214 <https://issues.pigweed.dev/issues/323448214>`__) 10859* `Add support for setting environment variables 10860 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190154>`__ 10861 (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__) 10862* `Implement per-action files 10863 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190152>`__ 10864 (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__) 10865* `Migrate to PwToolInfo 10866 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190150>`__ 10867 (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__) 10868* `Pull file collection into config rule 10869 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189971>`__ 10870 (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__) 10871* `Implement pw_cc_provides 10872 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189112>`__ 10873 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 10874* `Implement PwActionConfigInfo 10875 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189990>`__ 10876 (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__) 10877* `Create temporary variable 10878 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189970>`__ 10879 (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__) 10880* `Add a concept of well-known features 10881 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189050>`__ 10882 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 10883* `Implement requires_any_of for flag sets 10884 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189111>`__ 10885 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 10886* `Migrate to custom PwFeatureInfo 10887 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189030>`__ 10888 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 10889* `Add custom PwFlagSetInfo 10890 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188990>`__ 10891 (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__) 10892* `Replace bazel_tools providers with PW providers 10893 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189110>`__ 10894 (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__) 10895* `Support regular binaries as tools 10896 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190151>`__ 10897 (issue `#322872628 <https://issues.pigweed.dev/issues/322872628>`__) 10898 10899pw_transfer 10900----------- 10901``pw_transfer`` now supports :ref:`resumable transfers 10902<pw_transfer-nonzero-transfers>`. 10903 10904* `Account for remaining_bytes in payload buffer 10905 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190572>`__ 10906* `Rename TransferHandle -> Handle 10907 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189097>`__ 10908* `Add resumeable transfers 10909 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182830>`__ 10910* `Make cancellation a method on handles 10911 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189096>`__ 10912* `Allow setting a transfer resource size in C++ 10913 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189095>`__ 10914 (issue `#319731837 <https://issues.pigweed.dev/issues/319731837>`__) 10915 10916pw_unit_test 10917------------ 10918* `Remove obsolete label flag 10919 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190557>`__ 10920 10921Build 10922===== 10923* (Bazel) `Update clang version 10924 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190256>`__ 10925 10926OS support 10927========== 10928* (Zephyr) `Fix default logging in chromium CQ 10929 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190696>`__ 10930 10931Docs 10932==== 10933* `Nest backends under respective facades in sitenav 10934 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190245>`__ 10935* `Add doxygengroup to the style guide 10936 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190625>`__ 10937* `Update homepage 10938 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190018>`__ 10939* `Update README links 10940 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189731>`__ 10941* `Fix module homepage canonical URLs 10942 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189773>`__ 10943 (issue `#323077749 <https://issues.pigweed.dev/issues/323077749>`__) 10944* `Update Bazel quickstart output sample 10945 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189412>`__ 10946 (issue `#300471936 <https://issues.pigweed.dev/issues/300471936>`__) 10947 10948SEEDs 10949===== 10950* (SEED-0122) `Update status, add bug reference 10951 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189612>`__ 10952* `Fix pw_seed_index template deps 10953 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190675>`__ 10954* `Add authors to SEED document headers 10955 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189870>`__ 10956* (SEED-0119) `Add sensors SEED 10957 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182653>`__ 10958 10959Miscellaneous 10960============= 10961* `Update the bootstrap script to have start/end guards 10962 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190451>`__ 10963* `Migrate bug numbers 10964 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189353>`__ 10965 (issue `#298074672 <https://issues.pigweed.dev/issues/298074672>`__) 10966* `Upgrade mbedtls to 3.5.0 10967 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189273>`__ 10968 (issue `#319289775 <https://issues.pigweed.dev/issues/319289775>`__) 10969* `Fix clang-format findings 10970 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/190090>`__ 10971 10972------------ 10973Jan 26, 2024 10974------------ 10975Highlights (Jan 12, 2024 to Jan 26, 2024): 10976 10977* The new :ref:`docs-bazel-integration` guide shows you how to integrate a 10978 single Pigweed module into an existing Bazel project. 10979* Initial support for :py:class:`pw_cc_feature` has been added, which completes 10980 the initial set of rules required for building toolchains with 10981 :ref:`module-pw_toolchain_bazel`. 10982* A longstanding GCC bug that caused tokenized logging within a function 10983 template to not work has been fixed. 10984 10985Active SEEDs 10986============ 10987Help shape the future of Pigweed! Please visit :ref:`seed-0000` 10988and leave feedback on the RFCs (i.e. SEEDs) marked 10989``Open for Comments``. 10990 10991Modules 10992======= 10993 10994pw_allocator 10995------------ 10996* `Add SplifFreeListAllocator fuzzer 10997 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178216>`__ 10998 10999pw_bluetooth 11000------------ 11001* `Add advertising packet content filter emboss definitions 11002 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188314>`__ 11003* `Add android multiple advertising emboss structures 11004 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188313>`__ 11005* `Add a2dp remaining offload emboss structures 11006 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188311>`__ 11007* `Move emboss structures from hci_commands to hci_common 11008 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188312>`__ 11009* `Reorganize hci_vendor.emb 11010 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188310>`__ 11011* `Add new event definitions 11012 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188150>`__ 11013 (issue `#311639432 <https://issues.pigweed.dev/issues/311639432>`__) 11014 11015pw_build 11016-------- 11017The new :ref:`module-pw_build-bazel-pw_cc_binary_with_map` Bazel rule enables 11018you to generate a ``.map`` file when building a binary. 11019 11020* `Add pw_cc_binary variant to generate .map files 11021 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187710>`__ 11022 (issue `#319746242 <https://issues.pigweed.dev/issues/319746242>`__) 11023 11024pw_bytes 11025-------- 11026The :cpp:class:`pw::ByteBuilder` API reference is now being auto-generated 11027via Doxygen. The new :cpp:func:`pw::bytes::SignExtend` template enables 11028expanding the nth bit to the left up to the size of the destination type. 11029 11030* `Fix compilation error occured with Werror=all 11031 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188890>`__ 11032* `Update documentation 11033 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188462>`__ 11034* `SignExtend template 11035 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188456>`__ 11036 (issue `#321114167 <https://issues.pigweed.dev/issues/321114167>`__) 11037* `Make _b literals error on values >255 11038 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188208>`__ 11039 11040pw_compilation_testing 11041---------------------- 11042* `Skip tests excluded by the preprocessor 11043 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188650>`__ 11044 (issue `#321088147 <https://issues.pigweed.dev/issues/321088147>`__) 11045 11046pw_console 11047---------- 11048* `Upgrade to ptpython 3.0.25 11049 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188146>`__ 11050 (issue `#320509105 <https://issues.pigweed.dev/issues/320509105>`__) 11051 11052pw_containers 11053------------- 11054The destructors for ``pw::InlineQueue``, ``pw::InlineDeque``, and 11055``pw::Vector`` are now protected to prevent use with ``delete`` or 11056``std::unique_ptr`` and to prevent unusable declarations. 11057 11058* `Protected InlineQueue/Deque<T> destructor 11059 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187802>`__ 11060* `Make Vector<T> destructor protected 11061 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187801>`__ 11062 11063pw_digital_io 11064------------- 11065The private virtual API requirements for 11066:cpp:class:`pw::digital_io::DigitalIoOptional` are now documented because 11067they are needed when implementing concrete backends for ``pw_digital_io``. 11068 11069* `Document the private virtual API requirements 11070 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187669>`__ 11071* `Remove conditional interrupt disabling requirements 11072 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187668>`__ 11073 11074pw_doctor 11075--------- 11076* `Update expected tools on POSIX 11077 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188102>`__ 11078 (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__) 11079 11080pw_env_setup 11081------------ 11082* `Retrieve qemu on ARM Macs 11083 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187806>`__ 11084 (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__) 11085 11086pw_hdlc 11087------- 11088* `Remove unused targets 11089 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188226>`__ 11090* `Remove unused rpc packet processor target 11091 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188233>`__ 11092 11093pw_ide 11094------ 11095* `Fix typo 11096 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188423>`__ 11097* `Launch activated terminals in VSC 11098 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187195>`__ 11099 (issue `#318583596 <https://issues.pigweed.dev/issues/318583596>`__) 11100* `VSC extension 0.1.3 release 11101 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186726>`__ 11102 11103pw_kvs 11104------ 11105The new ``pw::kvs::FlashMemory::EndOfWrittenData()`` method returns the first 11106byte of erased flash that has no more written bytes. 11107 11108* `Add EndOfWrittenData() 11109 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188872>`__ 11110 11111pw_persistent_ram 11112----------------- 11113* `Add more tests to PersistentBuffer 11114 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188106>`__ 11115 (issue `#320538351 <https://issues.pigweed.dev/issues/320538351>`__) 11116 11117pw_polyfill 11118----------- 11119``pw_polyfill/static_assert.h`` now provides a C23-style ``static_assert()``. 11120See :ref:`module-pw_polyfill-static_assert`. 11121 11122* `Remove _Static_assert workaround 11123 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188277>`__ 11124* `Provide static_assert polyfill for C 11125 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188137>`__ 11126 11127pw_preprocessor 11128--------------- 11129The new ``PW_ADD_OVERFLOW``, ``PW_SUB_OVERFLOW``, and ``PW_MUL_OVERFLOW`` 11130macros can be used to :ref:`check for integer overflows 11131<module-pw_preprocessor-integer-overflow>`. 11132 11133* `Add integer-overflow macros 11134 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187653>`__ 11135 11136pw_presubmit 11137------------ 11138* `Add more info to todo summary 11139 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188750>`__ 11140* `Trim paths in ninja summary 11141 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188070>`__ 11142* `No copyright for MODULE.bazel.lock 11143 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188170>`__ 11144* `Exclude docs on Mac ARM hosts 11145 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187784>`__ 11146 (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__) 11147 11148pw_protobuf 11149----------- 11150* `Fix another &*nullptr in test 11151 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188717>`__ 11152* `Fix undefined pointer deref in fuzz test 11153 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188281>`__ 11154* `Fix out-of-range read 11155 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188095>`__ 11156 (issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__) 11157 11158pw_thread 11159--------- 11160* `Add missing include 11161 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/189212>`__ 11162 11163pw_tokenizer 11164------------ 11165A longstanding GCC bug that caused tokenized logging within a function template 11166to not work has been fixed. 11167 11168* `Compensate for GCC template bug 11169 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188424>`__ 11170 (issue `#321306079 <https://issues.pigweed.dev/issues/321306079>`__) 11171* `Allow use of static_assert in C99 test 11172 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188357>`__ 11173* `Adjust rustdocs deps to only be in std environments 11174 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188138>`__ 11175 11176pw_tool 11177------- 11178This incomplete module has been deleted. 11179 11180* `Delete module 11181 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188919>`__ 11182 11183pw_toolchain_bazel 11184------------------ 11185The ``//pw_toolchain_bazel`` directory is now configured to be compiled as a 11186standalone Bazel module. Initial support for :py:class:`pw_cc_feature` has been 11187added, which completes the initial set of rules required for building 11188toolchains with :ref:`module-pw_toolchain_bazel`. 11189 11190* `Remove deprecated action names 11191 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188991>`__ 11192 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 11193* `Migrate to type-safe action names 11194 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187896>`__ 11195 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 11196* `Require action labels in providers 11197 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188810>`__ 11198 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 11199* `Define actions names as labels 11200 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187895>`__ 11201 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 11202* `Make the pw_toolchain repository into a bazel module 11203 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187932>`__ 11204 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 11205* `Add pw_cc_feature 11206 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181755>`__ 11207 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 11208* `Set exec_transition_for_inputs to False 11209 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188361>`__ 11210 (issue `#321268080 <https://issues.pigweed.dev/issues/321268080>`__) 11211* `Remove check_deps_provide 11212 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187894>`__ 11213 (issue `#320177248 <https://issues.pigweed.dev/issues/320177248>`__) 11214 11215pw_transfer 11216----------- 11217The C++ client for :ref:`module-pw_transfer` now uses handles for 11218cancellation. 11219 11220* `Remove duplicated Builder call 11221 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188855>`__ 11222* `Use handles for cancellation in C++ client 11223 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/134290>`__ 11224 (issue `#272840682 <https://issues.pigweed.dev/issues/272840682>`__) 11225 11226pw_web 11227------ 11228* `Init. improvements to resize performance 11229 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188050>`__ 11230 (issue `#320475138 <https://issues.pigweed.dev/issues/320475138>`__) 11231 11232Build 11233===== 11234* `Use Python 3.11 11235 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182191>`__ 11236 (issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__) 11237* `Use pre-release of rules_python 11238 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188852>`__ 11239 (issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__) 11240* `Use rules_python in Bazel build files 11241 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188690>`__ 11242 11243Targets 11244======= 11245 11246host_device_simulator 11247--------------------- 11248* `Update docs 11249 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187430>`__ 11250 11251Docs 11252==== 11253* `How to use a single Pigweed module in Bazel 11254 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188922>`__ 11255* `Add pre-reqs for non-Debian Linux distros 11256 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188770>`__ 11257 (issue `#320519800 <https://issues.pigweed.dev/issues/320519800>`__) 11258* `Auto-generate module source code and issues URLs 11259 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187312>`__ 11260* `Minor updates to the FAQ 11261 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188252>`__ 11262* `Update changelog 11263 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187614>`__ 11264 11265SEEDs 11266===== 11267* (SEED-0123) `Claim SEED number 11268 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188140>`__ 11269* (SEED-0124) `Claim SEED number 11270 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188671>`__ 11271 11272Miscellaneous 11273============= 11274* `Remove module-level README.md files 11275 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188374>`__ 11276* `Fix how we ignore bazel- directories 11277 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188940>`__ 11278 11279------------ 11280Jan 12, 2024 11281------------ 11282Highlights (Dec 29, 2023 to Jan 12, 2024): 11283 11284* :ref:`docs-changelog-20240112-pw_allocator` added parameter to make it easier 11285 to work with allocation metadata in a block's header and made it easier to 11286 omit flag-related code for blocks. 11287* ``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``. 11288* :ref:`docs-changelog-20240112-pw_thread_stl` disallowed 11289 ``std::thread::detach()`` on Windows because it's known to randomly hang 11290 indefinitely. 11291 11292Active SEEDs 11293============ 11294Help shape the future of Pigweed! Please visit :ref:`seed-0000` 11295and leave feedback on the RFCs (i.e. SEEDs) marked 11296``Open for Comments``. 11297 11298Modules 11299======= 11300 11301.. _docs-changelog-20240112-pw_allocator: 11302 11303pw_allocator 11304------------ 11305A new template parameter, ``kNumExtraBytes``, was added to ``Block``. This 11306parameter reserves space in the block's header for storing and fetching 11307allocation metadata. 11308 11309The ``kMaxSize`` parameter was removed from ``Block`` 11310and replaced by ``kNumFlags`` to make it easier to omit flag-related code when 11311not needed and define fewer block types rather than one for each allocation 11312pool size. 11313 11314* `Fix source file list in soong rule 11315 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187127>`__ 11316* `Fix MulitplexAllocator's deps 11317 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186873>`__ 11318* `Add extra bytes to Block 11319 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185954>`__ 11320* `Add initializing constructors 11321 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185953>`__ 11322* `Add note to AllocatorMetricProxy tests 11323 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185952>`__ 11324 11325pw_bluetooth_sapphire 11326--------------------- 11327* `Advertise FCS Option 11328 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186850>`__ 11329 (issue `#318002648 <https://issues.pigweed.dev/issues/318002648>`__) 11330* `Refactor method and variable names 11331 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182899>`__ 11332 (issue `#312645622 <https://issues.pigweed.dev/issues/312645622>`__) 11333* `Revert commits to get to a known working state 11334 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183087>`__ 11335 11336pw_containers 11337------------- 11338* `Remove DestructorHelper from vector 11339 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185521>`__ 11340 (issue `#301329862 <https://issues.pigweed.dev/issues/301329862>`__) 11341 11342pw_doctor 11343--------- 11344* `Fix overridden package check 11345 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187110>`__ 11346 11347pw_emu 11348------ 11349* `Remove psutil dependency 11350 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186830>`__ 11351 (issue `#316080297 <https://issues.pigweed.dev/issues/316080297>`__) 11352 11353pw_env_setup 11354------------ 11355* `Update ref to bazel version file 11356 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187118>`__ 11357* `Drop reference to rust version file 11358 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187113>`__ 11359* `Use correct arch for cipd in Bazel 11360 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184903>`__ 11361 (issue `#234879770 <https://issues.pigweed.dev/issues/234879770>`__) 11362* `Switch to Fuchsia ninja CIPD package 11363 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184078>`__ 11364 (issue `#311711323 <https://issues.pigweed.dev/issues/311711323>`__) 11365* `Prevent NPM output from interrupting bootstrap 11366 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186510>`__ 11367 11368pw_ide 11369------ 11370The new ``pigweed.enforceExtensionRecommendations`` configuration option for 11371VS Code makes extension recommendation enforcement optional. When you set this 11372flag to ``true`` in your project's ``extension.json``, recommended extensions 11373will need to be installed and non-recommended extensions will need to be 11374disabled. 11375 11376You can now submit Pigweed issues through VS Code. Open the Command Palette 11377and type ``Pigweed: File Bug``. 11378 11379* `Add Jest testing to VSC extension 11380 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187126>`__ 11381* `Make VSC extension enforcement an option 11382 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187170>`__ 11383* `Support alternate \`clangd\` paths 11384 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186730>`__ 11385 (issue `#318413766 <https://issues.pigweed.dev/issues/318413766>`__) 11386* `VSC extension 0.1.2 release 11387 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184907>`__ 11388* `Fix CLI command docs 11389 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184955>`__ 11390* `Allow submitting bugs from VSC 11391 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184908>`__ 11392* `Document \`compdb_gen_cmd\` 11393 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184899>`__ 11394* `Improve VSC extension UX 11395 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184990>`__ 11396 11397.. _docs-changelog-20240112-pw_log: 11398 11399pw_log 11400------ 11401The Python API of the log decoder now accepts a ``logging.Logger`` or 11402``logging.LoggerAdapter`` instance as the default device logger. Previously 11403it only accepted ``logging.Logger``. 11404 11405* `Let Device accept logger adapter 11406 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187119>`__ 11407 11408pw_log_zephyr 11409------------- 11410* `Add missing include for tokenized logging 11411 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186810>`__ 11412 11413pw_multibuf 11414----------- 11415* `Add soong support 11416 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186815>`__ 11417 11418pw_protobuf 11419----------- 11420* `Fix bool overflow 11421 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186801>`__ 11422 (issue `#318732334 <https://issues.pigweed.dev/issues/318732334>`__) 11423* `Fix nullptr dereference in fuzz test 11424 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186800>`__ 11425 (issue `#314829525 <https://issues.pigweed.dev/issues/314829525>`__) 11426* `Don't crash on invalid field number 11427 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186724>`__ 11428 (issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__) 11429* `Fix conflict in messages with fields named 'other' 11430 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186951>`__ 11431* `Properly fuzz nested encoders/decoders 11432 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186723>`__ 11433 (issue `#314803709 <https://issues.pigweed.dev/issues/314803709>`__) 11434* `Fully qualify message namespace 11435 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186822>`__ 11436 11437pw_rpc 11438------ 11439The new ``PW_RPC_METHOD_STORES_TYPE`` config option provides a way at runtime 11440to determine a method's type. This is useful when implementing a translation 11441layer from another RPC system. Most Pigweed projects won't need this feature so 11442it's disabled by default. 11443 11444* `Have Method optionally store it's MethodType 11445 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185773>`__ 11446* `Run tests with completion callback config enabled 11447 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187172>`__ 11448* `Add some missing deps in Bazel targets 11449 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186934>`__ 11450 (issue `#318850523 <https://issues.pigweed.dev/issues/318850523>`__) 11451 11452pw_stream 11453--------- 11454* `Make stream adapters use reinterpret_cast 11455 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186766>`__ 11456 (issue `#314829006 <https://issues.pigweed.dev/issues/314829006>`__) 11457 11458pw_system 11459--------- 11460See :ref:`docs-changelog-20240112-pw_log`. 11461 11462* `Let Device accept logger adapter 11463 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187119>`__ 11464 11465.. _docs-changelog-20240112-pw_thread_stl: 11466 11467pw_thread_stl 11468------------- 11469Using ``std::thread::detach()`` on Windows has been disallowed. When compiling 11470with MinGW on Windows, ``std::thread::detach()`` is known to randomly hang 11471indefinitely. 11472 11473* `Don't allow std::thread::detach() on Windows 11474 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186570>`__ 11475 (issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__) 11476 11477pw_tokenizer 11478------------ 11479* `Fix undefined dereference in fuzz test 11480 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186821>`__ 11481 (issue `#314829057 <https://issues.pigweed.dev/issues/314829057>`__) 11482* `Make Rust hashing function const 11483 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186273>`__ 11484 11485pw_toolchain 11486------------ 11487``pw_toolchain`` now adds ``-fno-ms-compatibility`` to ``cflags`` on Windows. 11488When building with ``clang`` on Windows targeting ``msvc``, ``clang`` 11489previously enabled a ``ms-compatibility`` mode that broke Pigweed's macro 11490magic. 11491 11492* `Remove duplicate config from Cortex-A32 toolchain 11493 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187270>`__ 11494* `Add -fno-ms-compatibility to cflags on Windows 11495 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187173>`__ 11496 (issue `#297542996 <https://issues.pigweed.dev/issues/297542996>`__) 11497 11498pw_unit_test 11499------------ 11500* `Fix sanitize(r) directive 11501 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186650>`__ 11502 11503pw_web 11504------ 11505* `Fix autoscroll when window is resized 11506 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187193>`__ 11507 (issue `#305022742 <https://issues.pigweed.dev/issues/305022742>`__) 11508 11509Build 11510===== 11511 11512Bazel 11513----- 11514All modules now support the injection of module configuration via 11515``label_flags``. 11516 11517``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``. 11518 11519* `Update to Bazel 7.0.0 release version 11520 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186935>`__ 11521* `Add module configuration support 11522 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186725>`__ 11523 (issue `#234872811 <https://issues.pigweed.dev/issues/234872811>`__) 11524* `Remove pw_cc_library 11525 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186770>`__ 11526 (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__) 11527* `Remove references to pw_cc_library 11528 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186765>`__ 11529 (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__) 11530* `Replace pw_cc_library with cc_library 11531 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186763>`__ 11532 (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__) 11533 11534OS support 11535========== 11536 11537Zephyr 11538------ 11539You can now enable the ``pw_thread/sleep.h`` library in your Zephyr project by 11540setting ``CONFIG_PIGWEED_THREAD_SLEEP=Y`` in your Kconfig. 11541 11542* `Link pw_thread.sleep with appropriate kConfig 11543 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186825>`__ 11544 11545Docs 11546==== 11547* `Add example of conditionally enabling code based on module config 11548 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187171>`__ 11549* `Mention pw format tool 11550 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186851>`__ 11551* `Update changelog 11552 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186470>`__ 11553* `Rework first-time setup 11554 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185730>`__ 11555* `Add troubleshooting section to Bazel quickstart 11556 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186237>`__ 11557 11558SEEDs 11559===== 11560* (SEED-0001) `Fix typo and formatting 11561 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187273>`__ 11562* (SEED-0114) `Fix Compiler Explorer link 11563 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187330>`__ 11564* (SEED-0122) `Claim SEED number 11565 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/187120>`__ 11566 11567------------ 11568Dec 29, 2023 11569------------ 11570Highlights (Dec 15, 2023 to Dec 29, 2023): 11571 11572* The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier 11573 to dispatch between allocators depending on an app-specific request type ID. 11574* ``pw_base64`` now has initial Rust support. 11575* ``pw_malloc_freertos``, a new FreeRTOS backend for :ref:`module-pw_malloc`, 11576 was added. 11577* The new ``pw::digital_io::Polarity`` helper enum makes it easier for backends 11578 to map logical levels to physical levels. 11579* The Rust macro ``tokenize_to_buffer!`` in the ``pw_tokenizer`` Rust crate now 11580 supports concatenation of format strings via the ``PW_FMT_CONCAT`` operator. 11581* The :ref:`module-pw_hdlc` and :ref:`module-pw_result` docs were updated to 11582 follow our latest :ref:`docs-contrib-docs-modules`. 11583 11584Active SEEDs 11585============ 11586Help shape the future of Pigweed! Please visit :ref:`seed-0000` 11587and leave feedback on the RFCs (i.e. SEEDs) marked 11588``Open for Comments``. 11589 11590Modules 11591======= 11592 11593pw_allocator 11594------------ 11595The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier to 11596dispatch between allocators depending on an app-specific request type ID. 11597 11598* `Add MultiplexAllocator 11599 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185027>`__ 11600* `Add WithMetrics interface 11601 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185296>`__ 11602* `Split up test utilities 11603 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185295>`__ 11604 11605pw_base64 11606--------- 11607``pw_base64`` now has initial Rust support. See `Crate pw_base64 11608</rustdoc/pw_base64/>`_. 11609 11610* `Add initial Rust support 11611 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185210>`__ 11612 11613pw_containers 11614------------- 11615* `Remove DestructorHelper from queues 11616 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185030>`__ 11617 (issue `#301329862 <https://issues.pigweed.dev/issues/301329862>`__) 11618 11619pw_digital_io 11620------------- 11621`pw::digital_io::Polarity <https://cs.opensource.google/pigweed/pigweed/+/main:pw_digital_io/public/pw_digital_io/polarity.h>`_ 11622was added to make it easier for backends to map logical levels to physical levels. 11623 11624* `Add helper Polarity enum 11625 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185435>`__ 11626 11627pw_emu 11628------ 11629* `Use code-block instead of code 11630 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186170>`__ 11631 11632pw_hdlc 11633------- 11634* `Follow new module docs guidelines 11635 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184799>`__ 11636 11637pw_malloc 11638--------- 11639``pw_malloc_freertos``, a FreeRTOS backend for ``pw_malloc`` was added. 11640 11641* `Require specifying a backend in bazel build 11642 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185441>`__ 11643* `Add freertos backend 11644 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185452>`__ 11645 11646pw_presubmit 11647------------ 11648* `Use local prettier + eslint versions 11649 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185144>`__ 11650 11651pw_result 11652--------- 11653* `Rework docs to new standard 11654 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185147>`__ 11655 11656pw_rpc 11657------ 11658* `Adjust alarm_timer_test 11659 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186274>`__ 11660 (issue `#317990451 <https://issues.pigweed.dev/issues/317990451>`__) 11661 11662pw_snapshot 11663----------- 11664* `Clean up RISCV CpuArchitecture 11665 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185690>`__ 11666* `Add RISCV CpuArchitecture to metadata 11667 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185630>`__ 11668 11669pw_thread_stl 11670------------- 11671* `Disable Bazel tests failing on Windows 11672 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186242>`__ 11673 (issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__) 11674* `Disable tests failing on Windows 11675 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186253>`__ 11676 (issue `#317922402 <https://issues.pigweed.dev/issues/317922402>`__) 11677 11678pw_tokenizer 11679------------ 11680The Rust macro ``tokenize_to_buffer!`` now supports concatenation of format 11681strings via the ``PW_FMT_CONCAT`` operator. 11682 11683* `Support \`PW_FMT_CONCAT\` in \`tokenize_to_buffer!\` 11684 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185211>`__ 11685 11686pw_toolchain 11687------------ 11688The need to provide an ``unknown`` value for various ``pw_cc_toolchain`` fields 11689has been removed. 11690 11691* `Remove "unknown" from various fields 11692 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185170>`__ 11693 (issue `#315206506 <https://issues.pigweed.dev/issues/315206506>`__) 11694 11695pw_transfer 11696----------- 11697* `Improve Python stream reopening and closing 11698 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184931>`__ 11699 11700pw_unit_test 11701------------ 11702* `Silence ASAN error in TestInfo 11703 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185654>`__ 11704 11705pw_watch 11706-------- 11707* `Build directory exclude list handling 11708 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185772>`__ 11709 (issue `#317241320 <https://issues.pigweed.dev/issues/317241320>`__) 11710 11711pw_web 11712------ 11713* `Add state UI unit tests 11714 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184909>`__ 11715 (issue `#316218222 <https://issues.pigweed.dev/issues/316218222>`__) 11716 11717SEEDs 11718===== 11719* `Add facilitators to metadata and generated table 11720 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185932>`__ 11721* (SEED-0105) `Use code-block instead of code 11722 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/186171>`__ 11723 11724------------ 11725Dec 15, 2023 11726------------ 11727Highlights (Dec 1, 2023 to Dec 15, 2023): 11728 11729* We started implementing our new async API, :ref:`module-pw_async2`. 11730* We deprecated the use of ``gtest/gtest.h`` header paths for tests intended 11731 to build against ``pw_unit_test``. See 11732 :ref:`docs-changelog-20231215-pw_unit_test` for details. 11733 11734 .. note:: 11735 11736 All the commits titled ``Use unit test framework`` in the ``Dec 15, 2023`` 11737 update are related to this change. 11738 11739* The :ref:`module-pw_alignment` and :ref:`module-pw_emu` docs have been updated 11740 to follow our latest :ref:`docs-contrib-docs-modules`. 11741* ``pw_system`` now supports an :ref:`extra logging channel 11742 <module-pw_system-logchannel>`. 11743* ``pw_toolchain_bazel`` has a new :ref:`get started guide 11744 <module-pw_toolchain_bazel-get-started>`. 11745 11746Active SEEDs 11747============ 11748Help shape the future of Pigweed! Please visit :ref:`seed-0000` 11749and leave feedback on the RFCs (i.e. SEEDs) marked 11750``Open for Comments``. 11751 11752Modules 11753======= 11754 11755pw_alignment 11756------------ 11757* `Follow the new docs guidelines 11758 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181432>`__ 11759 11760pw_allocator 11761------------ 11762* `Fix metric disabling 11763 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185026>`__ 11764* `Add support for fuzzing Allocator implementations 11765 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178215>`__ 11766* `Use unit test framework 11767 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183270>`__ 11768 11769pw_analog 11770--------- 11771* `Use unit test framework 11772 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183270>`__ 11773 11774pw_async2 11775--------- 11776We started implementing our new async API, :ref:`module-pw_async2`. 11777 11778* `Implement initial async API 11779 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182727>`__ 11780 11781pw_base64 11782--------- 11783* `Use unit test framework 11784 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183299>`__ 11785 11786pw_blob_store 11787------------- 11788* `Use unit test framework 11789 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183299>`__ 11790 11791pw_bluetooth 11792------------ 11793* `Add LE Read Buffer Size [v2] command complete event 11794 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185070>`__ 11795 (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__) 11796* `Use unit test framework 11797 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184312>`__ 11798* `Fix LEExtendedCreateConnectionCommandV1 data interleaving 11799 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183950>`__ 11800 (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__) 11801* `Fix ExtendedCreateConnectionV1 11802 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183930>`__ 11803 (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__) 11804* `Add new HCI definition 11805 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183771>`__ 11806 (issue `#311639690 <https://issues.pigweed.dev/issues/311639690>`__) 11807* `Re-format emboss files 11808 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183770>`__ 11809 11810pw_bluetooth_sapphire 11811--------------------- 11812* `Read ISO data buffer info on startup 11813 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184052>`__ 11814 (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__) 11815* `LE Read Buffer Size [v2] 11816 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183772>`__ 11817 (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__) 11818* `Add LE Set Host Feature 11819 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184050>`__ 11820 (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__) 11821* `Update name of ISO host support bit 11822 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184051>`__ 11823 (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__) 11824* `Fix BrEdrConnectionManager.Inspect test 11825 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183304>`__ 11826 (issue `#42086629 <https://issues.fuchsia.dev/issues/42086629>`__) 11827 11828pw_build 11829-------- 11830* `Fix use of TARGET_COMPATIBLE_WITH_HOST_SELECT in external repo 11831 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184095>`__ 11832 11833pw_bytes 11834-------- 11835* `Use unit test framework 11836 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183354>`__ 11837 11838pw_checksum 11839----------- 11840* `Use unit test framework 11841 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183300>`__ 11842 11843pw_chrono 11844--------- 11845* `Use unit test framework 11846 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183300>`__ 11847 11848pw_cli 11849------ 11850You can now disable the printing of the banner by setting ``PW_ENVSETUP_QUIET`` 11851or ``PW_ENVSETUP_NO_BANNER``. 11852 11853* `Allow banner to be suppressed 11854 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184970>`__ 11855 11856pw_console 11857---------- 11858* `Disable private attr auto-completion 11859 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184644>`__ 11860 11861pw_containers 11862------------- 11863* `Fix missing include 11864 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184961>`__ 11865* `Fix IntrusiveList::Item move assignment test 11866 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182951>`__ 11867 (issue `#303634979 <https://issues.pigweed.dev/issues/303634979>`__) 11868* `Add missing dep for IntrusiveList test 11869 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184245>`__ 11870 11871pw_digital_io 11872------------- 11873* `Use unit test framework 11874 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183301>`__ 11875 11876pw_docgen 11877--------- 11878We updated the docs server to use native hot reloading. 11879 11880* `Update Pigweed Live schedule 11881 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184960>`__ 11882* `Add new docs server 11883 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181011>`__ 11884 11885pw_emu 11886------ 11887We're handling QEMU startup errors more gracefully now. 11888 11889* `Better handling for startup errors 11890 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184859>`__ 11891 (issue `#315868463 <https://issues.pigweed.dev/issues/315868463>`__) 11892* `qemu: Improve the QMP handshake handling 11893 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184858>`__ 11894 (issue `#315516286 <https://issues.pigweed.dev/issues/315516286>`__) 11895* `Link all the docs to each other 11896 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184310>`__ 11897* `Update docs to follow new guidelines 11898 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183223>`__ 11899 11900pw_env_setup 11901------------ 11902The upstream Pigweed bootstrap script now runs ``npm install``. We worked 11903on native macOS support that doesn't rely on Rosetta. Use the 11904``--disable-rosetta`` flag to try it out. Note that the work isn't complete 11905yet. 11906 11907* `Run npm install on bootstrap 11908 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184639>`__ 11909* `Remove "untested" warning 11910 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182813>`__ 11911* `Use ARM protoc version on ARM Macs 11912 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184930>`__ 11913 (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__) 11914* `Fix typo in error message 11915 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184910>`__ 11916* `Add flag to disable Rosetta 11917 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184804>`__ 11918 (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__) 11919* `Retrieve armgcc for ARM Macs 11920 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184785>`__ 11921 (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__) 11922* `Change case of armgcc version 11923 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184798>`__ 11924 (issue `#315998985 <https://issues.pigweed.dev/issues/315998985>`__) 11925* `Roll cipd client 11926 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184277>`__ 11927* `Bump executing Python package 11928 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183838>`__ 11929 11930pw_file 11931------- 11932* `Use unit test framework 11933 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183301>`__ 11934 11935pw_format 11936--------- 11937Format strings can now be built by macros at compile-time by specifying the 11938format string as a set of string literals separated by the custom 11939``PW_FMT_CONCAT`` keyword. 11940 11941* `Allow format strings to be composed at compile time 11942 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184200>`__ 11943 11944pw_fuzzer 11945--------- 11946* `Fix ambiguous reference to ContainerOf 11947 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184284>`__ 11948 11949pw_hdlc 11950------- 11951* `Use unit test framework 11952 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__ 11953 11954pw_hex_dump 11955----------- 11956* `Use unit test framework 11957 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__ 11958 11959pw_i2c 11960------ 11961* `Use unit test framework 11962 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183302>`__ 11963 11964pw_ide 11965------ 11966``pw_ide`` now handles additional clang toolchains if your project specifies one 11967that's different from the one provided by Pigweed. We also shipped several UX 11968improvements to the Visual Studio Code extension. 11969 11970* `Add command to build VSC extension 11971 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184992>`__ 11972* `Remove VSIX installation stuff 11973 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184991>`__ 11974* `Don't warn on missing extensions.json 11975 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184895>`__ 11976* `Alpha-sort the list of targets in VSC 11977 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184864>`__ 11978* `Auto-run build system command 11979 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184809>`__ 11980* `Update VSC Python config 11981 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184820>`__ 11982* `Fix condition for Windows platform 11983 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184730>`__ 11984* `Fix for clang installed to project dir 11985 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184010>`__ 11986 (issue `#314693384 <https://issues.pigweed.dev/issues/314693384>`__) 11987 11988pw_kvs 11989------ 11990* `Use unit test framework 11991 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__ 11992 11993pw_libc 11994------- 11995* `Use unit test framework 11996 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__ 11997 11998pw_log 11999------ 12000* `Use unit test framework 12001 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183307>`__ 12002 12003pw_malloc 12004--------- 12005* `Use unit test framework 12006 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183308>`__ 12007 12008pw_metric 12009--------- 12010* `Use unit test framework 12011 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183308>`__ 12012 12013pw_perf_test 12014------------ 12015* `Refactor event handler types 12016 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179611>`__ 12017* `Use unit test framework 12018 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183309>`__ 12019 12020pw_presubmit 12021------------ 12022* `Add LUCI_CONTEXT to ctx 12023 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184793>`__ 12024* `Merge some of the "misc" checks 12025 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184778>`__ 12026* `Better support downstream GnGenNinja use 12027 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183837>`__ 12028 (issue `#314818274 <https://issues.pigweed.dev/issues/314818274>`__) 12029* `Automatically compute trim_prefix 12030 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183100>`__ 12031 (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__) 12032 12033pw_random 12034--------- 12035* `Use unit test framework 12036 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183350>`__ 12037 12038pw_result 12039--------- 12040* `Use unit test framework 12041 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183350>`__ 12042 12043pw_rust 12044------- 12045* `Remove excess newline in doc command line 12046 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182451>`__ 12047 12048pw_snapshot 12049----------- 12050* `Use unit test framework 12051 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183351>`__ 12052 12053pw_status 12054--------- 12055* `Docs tweak 12056 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185146>`__ 12057 12058pw_string 12059--------- 12060* `Fix string_test build error under new clang revision 12061 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184219>`__ 12062 (issue `#315190328 <https://issues.pigweed.dev/issues/315190328>`__) 12063* `Add missing include 12064 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183233>`__ 12065 (issue `#314130408 <https://issues.pigweed.dev/issues/314130408>`__) 12066 12067pw_symbolizer 12068------------- 12069* `Fix symbolizer_test 12070 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184226>`__ 12071 (issue `#315190328 <https://issues.pigweed.dev/issues/315190328>`__) 12072 12073pw_system 12074--------- 12075We added an :ref:`extra logging channel <module-pw_system-logchannel>`. 12076 12077* `Support extra logging channel 12078 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184410>`__ 12079 (issue `#315540660 <https://issues.pigweed.dev/issues/315540660>`__) 12080 12081pw_thread 12082--------- 12083* `Use unit test framework 12084 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183352>`__ 12085 12086pw_tls_client 12087------------- 12088* `Use unit test framework 12089 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183352>`__ 12090 12091pw_tokenizer 12092------------ 12093* `Mark \`pw_tokenizer_core\` as \`no_std\` 12094 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183197>`__ 12095 12096pw_toolchain 12097------------ 12098The Arm GCC toolchain now uses :ref:`module-pw_toolchain_bazel`. 12099 12100* `Move ARM toolchain to new API 12101 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183160>`__ 12102 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12103* `Use action configs from LLVM tool repo 12104 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183010>`__ 12105 (issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__) 12106 12107pw_toolchain_bazel 12108------------------ 12109Support for :py:attr:`additional_files` was added to reduce ``*_files`` 12110boilerplate. We added a new :ref:`get started guide 12111<module-pw_toolchain_bazel-get-started>`. 12112 12113* `Fix naming in docs 12114 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184753>`__ 12115* `Add misc_files group 12116 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184698>`__ 12117 (issue `#305737273 <https://issues.pigweed.dev/issues/305737273>`__) 12118* `Add automagic toolchain file collection 12119 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184299>`__ 12120 (issue `#305737273 <https://issues.pigweed.dev/issues/305737273>`__) 12121* `Add getting started guide 12122 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184281>`__ 12123 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12124* `Remove legacy tool API 12125 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184280>`__ 12126* `Remove deprecated API 12127 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183235>`__ 12128 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12129* `Rename build file templates part 2/2 12130 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183187>`__ 12131 12132pw_trace 12133-------- 12134* `Use unit test framework 12135 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183355>`__ 12136 12137pw_transfer 12138----------- 12139We added support for setting different timeouts for clients and servers. 12140See ``PW_TRANSFER_DEFAULT_MAX_CLIENT_RETRIES`` and 12141``PW_TRANSFER_DEFAULT_MAX_SERVER_RETRIES`` in :ref:`module-pw_transfer-config`. 12142 12143* `Remove small hardcoded timeout in proxy_test 12144 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184638>`__ 12145 (issue `#315459788 <https://issues.pigweed.dev/issues/315459788>`__) 12146* `Allow setting different timeouts for client and server 12147 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184210>`__ 12148* `Update integration test documentation 12149 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183163>`__ 12150 (issue `#250947749 <https://issues.pigweed.dev/issues/250947749>`__) 12151 12152.. _docs-changelog-20231215-pw_unit_test: 12153 12154pw_unit_test 12155------------ 12156We deprecated use of ``gtest/gtest.h`` header paths for tests intended to build 12157against ``pw_unit_test``. Historically, we supported using the ``gtest/gtest.h`` 12158include path to support compiling a test as either a ``pw_unit_test`` or with 12159the full GoogleTest on larger targets like desktop. However, this created a 12160problem since ``pw_unit_test`` only implements a subset of the GoogleTest API. 12161With the new approach, we require tests that are intended to compile on devices 12162to directly include ``pw_unit_test/framework.h``. In cases where GoogleTest is 12163available, that header will redirect to GoogleTest. 12164 12165* `Add compatibility in bazel 12166 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184911>`__ 12167 (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__) 12168* `Use googletest backend as a dep 12169 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184656>`__ 12170 (issue `#315351886 <https://issues.pigweed.dev/issues/315351886>`__) 12171* `Fix building fuzztests with cmake 12172 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184268>`__ 12173* `Use unit test framework 12174 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183353>`__ 12175* `Create facade's header 12176 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183194>`__ 12177 (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__) 12178 12179pw_varint 12180--------- 12181* `Use unit test framework 12182 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183354>`__ 12183 12184pw_web 12185------ 12186* `Handle unrequested responses after call_id changes 12187 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184320>`__ 12188* `Add support for call_id in RPC calls 12189 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160792>`__ 12190* `Add Mocha and Jest global vars to ESLint 12191 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183931>`__ 12192* `Switch to pre-made subset of icon fonts 12193 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156852>`__ 12194 (issue `#287270736 <https://issues.pigweed.dev/issues/287270736>`__) 12195 12196Build 12197===== 12198* `Set Zephyr toolchain to llvm in presubmit 12199 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179170>`__ 12200 12201Targets 12202======= 12203* `Point deprecated flag to new backend 12204 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184262>`__ 12205* (stm32f429i_disc1) `Fix test runner 12206 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184378>`__ 12207 12208Language support 12209================ 12210* (Python) `Remove references to non-existing setup.py 12211 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182770>`__ 12212 12213OS support 12214========== 12215* (Zephyr) `Remove unecessary toolchain downloads & filter invalid targets 12216 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184072>`__ 12217 12218Docs 12219==== 12220.. todo-check: disable 12221 12222* `Remove inaccurate #include statements 12223 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/185190>`__ 12224 (issue `#295023422 <https://issues.pigweed.dev/issues/295023422>`__) 12225* `Add Bazel code coverage TODO 12226 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182812>`__ 12227 (issue `#304833225 <https://issues.pigweed.dev/issues/304833225>`__) 12228* `Add sort by alignment to size optimizations 12229 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184150>`__ 12230* `Fix build command typo 12231 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184170>`__ 12232* `Update changelog 12233 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183310>`__ 12234 12235.. todo-check: disable 12236 12237SEEDs 12238===== 12239* `Always use build metadata titles in index table 12240 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183750>`__ 12241* (SEED-0001) `Add section about SEEDs & code changes 12242 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177084>`__ 12243* (SEED-0001) `Update number selection guidance 12244 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184223>`__ 12245* SEED-0117) `Open for comments 12246 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184795>`__ 12247* (SEED-0121) `Claim SEED number 12248 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184225>`__ 12249 12250Miscellaneous 12251============= 12252* `Fix formatting after clang roll 12253 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/184752>`__ 12254 12255----------- 12256Dec 1, 2023 12257----------- 12258Highlights (Nov 17, 2023 to Dec 1, 2023): 12259 12260* We now have an auto-generated :ref:`seed-0000` that shows you the current 12261 status of all SEEDs. 12262* We've started implementing a :ref:`Rust API for pw_log 12263 <docs-changelog-20231201-pw_log>`. 12264* The :ref:`module-pw_alignment`, :ref:`module-pw_perf_test`, and 12265 :ref:`module-pw_status` docs were refactored to follow our latest 12266 :ref:`docs-contrib-docs-modules`. 12267 12268Active SEEDs 12269============ 12270Help shape the future of Pigweed! Please visit :ref:`seed-0000` 12271and leave feedback on the RFCs (i.e. SEEDs) marked 12272``Open for Comments``. 12273 12274Modules 12275======= 12276 12277pw_alignment 12278------------ 12279The :ref:`docs <module-pw_alignment>` were updated to follow our new 12280:ref:`docs-contrib-docs-modules`. 12281 12282* `Follow the new docs guidelines 12283 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181432>`__ 12284 12285pw_allocator 12286------------ 12287Utilities were added that make it easier to write tests for custom allocator 12288implementations. The metric collection API was refactored. CMake support for 12289heap poisoning was added. 12290 12291* `Fix use-after-free in ~AllocatorForTest 12292 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182950>`__ 12293* `Add AllocationTestHarness 12294 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183032>`__ 12295* `Add AllocationTestHarness 12296 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180532>`__ 12297* `Refactor metric collection 12298 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180456>`__ 12299* `Improve heap poisoning configuration 12300 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180372>`__ 12301 12302pw_bluetooth 12303------------ 12304* `Add LE Set Host Feature command 12305 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181770>`__ 12306 (issue `#311639040 <https://issues.pigweed.dev/issues/311639040>`__) 12307* `LE Request Peer SCA Complete event 12308 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182430>`__ 12309 (issue `#311639272 <https://issues.pigweed.dev/issues/311639272>`__) 12310* `Fix LEExtendedAdvertisingReportData tx_power to be an Int 12311 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181756>`__ 12312 12313pw_bluetooth_sapphire 12314--------------------- 12315Migration of :ref:`module-pw_bluetooth_sapphire` into Pigweed has begun. 12316 12317* `Use pw_test_group for fuzzers target 12318 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183195>`__ 12319 (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__) 12320* `Use pw_fuzzer_group 12321 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183168>`__ 12322 (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__) 12323* `Add sales pitch & roadmap docs 12324 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181834>`__ 12325 (issue `#312287470 <https://issues.pigweed.dev/issues/312287470>`__) 12326* `Add testonly to testing targets 12327 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182890>`__ 12328 (issue `#136961 <https://issues.fuchsia.dev/issues/136961>`__) 12329* `Revert commits to get to a known working state 12330 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183014>`__ 12331* `Use Write instead of UncheckedWrite 12332 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182734>`__ 12333* `Remove now unnecessary use of std::optional 12334 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182490>`__ 12335 (issue `#311256496 <https://issues.pigweed.dev/issues/311256496>`__) 12336* `Move LegacyLowEnergyScanner impl to base class 12337 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182017>`__ 12338 (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__) 12339* `Create new LowEnergyScanner polymorphic methods 12340 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182016>`__ 12341 (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__) 12342* `Extended scanning support, Fake(Controller|Peer) 12343 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182015>`__ 12344 (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__) 12345* `Remove fidl fuzzer from build 12346 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182714>`__ 12347 (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__) 12348* `Use explicit constructor for SmartTask 12349 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182013>`__ 12350* `Follow pigweed style for test files 12351 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182012>`__ 12352* `Add OWNERS file 12353 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181759>`__ 12354* `Delete unused build file 12355 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181830>`__ 12356 (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__) 12357* `Fix pragma_once lint 12358 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181394>`__ 12359 (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__) 12360* `Fix linter errors 12361 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181305>`__ 12362 (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__) 12363* `Fix bazel formatting 12364 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181303>`__ 12365 (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__) 12366* `Remove ICU from bazel build 12367 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181391>`__ 12368 (issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__) 12369* `Refactor pw_bluetooth_sapphire & fix errors 12370 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173484>`__ 12371 (issue `#42051324 <https://issues.fuchsia.dev/issues/42051324>`__) 12372* `Update copyright headers 12373 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177800>`__ 12374 12375pw_build_info 12376------------- 12377* `Fix relative paths in Python tests 12378 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182681>`__ 12379 12380pw_containers 12381------------- 12382A warning was added about ``pw::Vector`` being unsafe with 12383non-trivially-destructible, self-referencing types. See 12384`b/313899658 <https://issues.pigweed.dev/issues/313899658>`_. 12385 12386* `Warn about unsafe Vector usage 12387 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182970>`__ 12388 (issue `#313899658 <https://issues.pigweed.dev/issues/313899658>`__) 12389 12390pw_format 12391--------- 12392A ``core::fmt`` macro helper was added. 12393 12394* `Add core::fmt macro helper 12395 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178537>`__ 12396 12397.. _docs-changelog-20231201-pw_log: 12398 12399pw_log 12400------ 12401An initial Rust API has been added. 12402 12403* `Add initial Rust API 12404 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178538>`__ 12405 12406pw_multibuf 12407----------- 12408* `Remove unused GN dep 12409 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183165>`__ 12410* `Remove dep on external gtest 12411 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183158>`__ 12412* `Make HeaderChunkRegionTracket public 12413 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183041>`__ 12414* `Fix cmake build file 12415 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182898>`__ 12416 12417pw_package 12418---------- 12419* `Add ICU package 12420 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181269>`__ 12421 (issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__) 12422 12423pw_perf_test 12424------------ 12425The :ref:`docs <module-pw_perf_test>` have been refactored. 12426 12427* `Rename logging event handler files 12428 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178915>`__ 12429* `Rework docs 12430 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179610>`__ 12431 12432pw_presubmit 12433------------ 12434.. todo-check: disable 12435 12436* `Automatically compute trim_prefix 12437 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183100>`__ 12438 (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__) 12439* `Allow full issues.pigweed.dev urls in TODO links 12440 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183095>`__ 12441* `Fix TestTodoCheck.test_one_bug_legacy() 12442 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183094>`__ 12443* `No coverage upload for shadow builds 12444 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183093>`__ 12445 (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__) 12446* `Remove some unused constants 12447 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183092>`__ 12448* `Add is_shadow/is_prod members to context 12449 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183077>`__ 12450* `Refactor the coverage options 12451 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182873>`__ 12452 (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__) 12453* `Show diffs when parser tests fail 12454 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182971>`__ 12455* `Trim paths in Bazel summaries 12456 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182952>`__ 12457* `Correct the codesearch_host 12458 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182850>`__ 12459 (issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__) 12460* `Correct host in coverage presubmit 12461 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182702>`__ 12462 (issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__) 12463* `Fix coverage options 12464 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182666>`__ 12465 (issue `#261779031 <https://issues.pigweed.dev/issues/261779031>`__) 12466* `Add Fuchsia style to todo_check_with_exceptions 12467 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181433>`__ 12468 (issue `#307951383 <https://issues.pigweed.dev/issues/307951383>`__) 12469* `Create Sapphire presubmit step 12470 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177453>`__ 12471 (issue `#42051324 <https://issues.fuchsia.dev/issues/42051324>`__) 12472 12473.. todo-check: enable 12474 12475pw_protobuf 12476----------- 12477* `Add common_py_pb2 target 12478 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182650>`__ 12479 (issue `#309351244 <https://issues.pigweed.dev/issues/309351244>`__) 12480 12481pw_rpc 12482------ 12483* `Initialize serde_ members to nullptr 12484 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182851>`__ 12485 12486pw_rpc_transport 12487---------------- 12488* `Unblock sockets when stopping 12489 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181308>`__ 12490 (issue `#309680612 <https://issues.pigweed.dev/issues/309680612>`__) 12491 12492pw_sensor 12493--------- 12494* `Reserve SEED for configuring sensors 12495 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182805>`__ 12496* `Claim SEED number for high level view 12497 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182673>`__ 12498 12499pw_status 12500--------- 12501The :ref:`docs <module-pw_status>` have been refactored to follow 12502our latest :ref:`docs-contrib-docs-modules`. 12503 12504* `Adopt latest docs standard 12505 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181181>`__ 12506 12507pw_string 12508--------- 12509* `Add missing include 12510 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183233>`__ 12511 12512pw_system 12513--------- 12514* `Load all domain tokens 12515 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181231>`__ 12516* `Style fixes to Python scripts 12517 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182661>`__ 12518* `Add missing dependency on pw_trace 12519 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181350>`__ 12520 12521pw_tokenizer 12522------------ 12523* `Move entry header to a separate struct 12524 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183193>`__ 12525* `Catch accidental use of test macro 12526 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183192>`__ 12527* `Fix NULL dereference in fuzz harness 12528 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182710>`__ 12529* `Move ReadUint32 12530 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169714>`__ 12531 12532pw_toolchain 12533------------ 12534The Arm toolchain has been updated to use the new toolchain specified 12535in :ref:`seed-0113`. A helper for registering C/C++ toolchains in Bazel 12536was added to enable upstream Pigweed to make changes without needing to 12537manually update downstream projects. See 12538:ref:`module-pw_toolchain-bazel-upstream-pigweed-toolchains`. 12539 12540* `Move ARM toolchain to new API 12541 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183160>`__ 12542 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12543* `Use action configs from LLVM tool repo 12544 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183010>`__ 12545 (issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__) 12546* `Add Bazel toolchain registration helper 12547 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183157>`__ 12548 (issue `#301336229 <https://issues.pigweed.dev/issues/301336229>`__) 12549* `Merge host toolchains 12550 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181760>`__ 12551* `Expose non-hermetic toolchain 12552 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181330>`__ 12553 (issue `#299151946 <https://issues.pigweed.dev/issues/299151946>`__) 12554* `Only fetch compatible Rust toolchains 12555 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181306>`__ 12556 12557pw_toolchain/arm_clang 12558---------------------- 12559* `Reduce binary size 12560 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169576>`__ 12561 (issue `#254541584 <https://issues.pigweed.dev/issues/254541584>`__) 12562 12563pw_toolchain_bazel 12564------------------ 12565Support for binding tools to toolchains was added. See :py:class:`pw_cc_tool` 12566and :py:class:`pw_cc_action_config`. Support for featureless sysroots was 12567added. See :py:attr:`pw_cc_toolchain.builtin_sysroot` and 12568:py:attr:`pw_cc_toolchain.cxx_builtin_include_directories`. 12569 12570* `Remove deprecated API 12571 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183235>`__ 12572 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12573* `Rename build file templates part 2/2 12574 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183187>`__ 12575* `Rename build file templates part 1/2 12576 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183186>`__ 12577* `Add LLVM clang tool template 12578 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182969>`__ 12579 (issue `#311257445 <https://issues.pigweed.dev/issues/311257445>`__) 12580* `Add ARM GCC toolchain template 12581 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182968>`__ 12582 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12583* `Support featureless sysroots 12584 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181833>`__ 12585 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12586* `Mirror features to be flag sets 12587 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181832>`__ 12588 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12589* `Add initial pw_cc_action_config support 12590 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180842>`__ 12591 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12592 12593pw_transfer 12594----------- 12595Commands in the :ref:`integration test docs 12596<module-pw_transfer-integration-tests>` were updated and docs were 12597added that explain how to :ref:`run more than one instance of tests 12598in parallel <module-pw_transfer-parallel-tests>`. 12599 12600* `Update integration test documentation 12601 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183163>`__ 12602* `Set clients to transfer_v2 12603 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183050>`__ 12604 (issue `#309686987 <https://issues.pigweed.dev/issues/309686987>`__) 12605* `Limit to sending a single chunk in tests 12606 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182665>`__ 12607 (issue `#295037376 <https://issues.pigweed.dev/issues/295037376>`__) 12608* `Don't "block-network" by default 12609 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182010>`__ 12610 (issue `#311297881 <https://issues.pigweed.dev/issues/311297881>`__) 12611* `Use StatusCode in integration tests 12612 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180828>`__ 12613* `Make integration_test_server testonly, fix fx roller 12614 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182019>`__ 12615 (issue `#312493408 <https://issues.pigweed.dev/issues/312493408>`__) 12616* `Tag integration tests block-network 12617 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181297>`__ 12618 (issue `#311297881 <https://issues.pigweed.dev/issues/311297881>`__) 12619 12620pw_unit_test 12621------------ 12622* `Skip googletest tests if not set 12623 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/183089>`__ 12624 12625pw_web 12626------ 12627* `Install Web Test Runner and dependencies 12628 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181870>`__ 12629 12630Build 12631===== 12632 12633Bazel 12634----- 12635More Bazel information has been added to :ref:`docs-module-structure`. 12636 12637* `Add simple module configuration mechanism 12638 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181032>`__ 12639 (issue `#234872811 <https://issues.pigweed.dev/issues/234872811>`__) 12640* `Tidy up WORKSPACE 12641 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181292>`__ 12642* `Rename Python toolchains 12643 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181762>`__ 12644 (issue `#310293060 <https://issues.pigweed.dev/issues/310293060>`__) 12645* `Remove py_proto_library wrapper 12646 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180825>`__ 12647 (issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__) 12648* `Use py_proto_library from rules_python 12649 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180537>`__ 12650* `Partial pw_system_console fix 12651 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181304>`__ 12652 (issue `#310307709 <https://issues.pigweed.dev/issues/310307709>`__) 12653 12654Docs 12655==== 12656The tool that we use to semi-automate these changelog updates has been 12657added to the main Pigweed repository. Try out the tool on 12658:ref:`docs-contrib-docs-changelog` and see ``//docs/_static/js/changelog.js`` 12659to view its implementation. 12660 12661* `Gerrit code coverage documentation 12662 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182799>`__ 12663 (issue `#282164634 <https://issues.pigweed.dev/issues/282164634>`__) 12664* `Move copyright header info to style guide 12665 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182795>`__ 12666* `Document the Test footer 12667 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181752>`__ 12668* `Add changelog update instructions and tool 12669 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181765>`__ 12670* `Update changelog 12671 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181393>`__ 12672 12673SEEDs 12674===== 12675We now have an auto-generated :ref:`seed-0000` that shows you the current 12676status of all SEEDs. 12677 12678* `Generate the SEED index table 12679 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181267>`__ 12680* (SEED-0114) `Update status; format header in table 12681 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182872>`__ 12682* (SEED-0114) `Channels 12683 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__ 12684* (SEED-0118) `Claim SEED number 12685 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/182654>`__ 12686* (SEED-0118) `Claim SEED number 12687 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181837>`__ 12688 12689Third party 12690=========== 12691* `Add GN rules for ICU 12692 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181311>`__ 12693 (issue `#311449154 <https://issues.pigweed.dev/issues/311449154>`__) 12694 12695------------ 12696Nov 15, 2023 12697------------ 12698Highlights (Nov 02, 2023 to Nov 15, 2023): 12699 12700* The API for writing proc macros with pw_format was simplified. 12701* ``pw_emu`` added a command for resuming the execution of paused emulators 12702 and now has limited support for inserting environment variables into 12703 configuration entries. 12704* ``pw_ide`` can now output logs to files. 12705* ``pw_unit_test`` added support for GoogleTest's 12706 ``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds``. 12707* Pigweed's :ref:`docs-mission` are now documented. 12708 12709Active SEEDs 12710============ 12711Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): 12712 12713* `SEED-0114: Channels 12714 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__ 12715* `SEED-0115: Sensors 12716 <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__ 12717* `SEED-0116: Sockets 12718 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177696>`__ 12719 12720Modules 12721======= 12722 12723pw_allocator 12724------------ 12725The ``...Unchecked`` methods have been removed from the 12726``pw::allocator::Allocator`` interface and the NVI-style ``Do...`` methods 12727have been modified to take ``Layout`` parameters. 12728 12729* `Update interface based on final SEED-0110 design 12730 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176754>`__ 12731* `Refactor test support and example allocator 12732 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177653>`__ 12733 (issue `#306686936 <https://issues.pigweed.dev/issues/306686936>`__) 12734 12735pw_analog 12736--------- 12737* `Mark libs as test only in bazel 12738 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179612>`__ 12739 (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__) 12740 12741pw_console 12742---------- 12743``SocketClient`` has been updated to support both IPv4 and IPv6 addresses 12744in addition to Unix sockets. 12745 12746* `Add docs banner 12747 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180824>`__ 12748* `Improve SocketClient addressing 12749 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178921>`__ 12750 12751pw_emu 12752------ 12753There is now limited supported for inserting environment variable values 12754into configuration entries. A command for resuming the execution 12755of a paused emulator was added. 12756 12757* `Add support for substitutions in config entries 12758 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179150>`__ 12759 (issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__) 12760* `Add resume command to CLI 12761 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179030>`__ 12762 (issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__) 12763* `Fix CLI gdb and load commands 12764 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178922>`__ 12765 (issue `#308793747 <https://issues.pigweed.dev/issues/308793747>`__) 12766 12767pw_env_setup 12768------------ 12769* `Make pigweed_environment.gni content gni-relative 12770 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180991>`__ 12771* `Update Bazel to 7.0.0 pre-release 12772 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178950>`__ 12773 12774pw_format 12775--------- 12776The API for writing `proc macros </rustdoc/pw_format/#proc-macros>`__ that take 12777format strings and arguments was simplified. 12778 12779* `Add tests for macro helpers 12780 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181030>`__ 12781* `Generalize format macro handling 12782 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178132>`__ 12783 12784pw_fuzzer 12785--------- 12786* `Move \`Domain\` from fuzztest::internal to fuzztest 12787 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178213>`__ 12788* `Switch oss-fuzz build to Bazel 12789 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175618>`__ 12790 12791pw_i2c 12792------ 12793* `Mark libs as test only in bazel 12794 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179836>`__ 12795 (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__) 12796 12797pw_ide 12798------ 12799Logs can now be output to files. 12800 12801* `Set 3-space tabs in VS Code 12802 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179671>`__ 12803* `Support output to logs 12804 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163573>`__ 12805* `Remove redundant licence 12806 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179613>`__ 12807* `Remove clangd auto-restart 12808 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171691>`__ 12809* `Make Sphinx extensions upstream-only 12810 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171690>`__ 12811* `VSC extension 0.1.1 release 12812 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171070>`__ 12813 12814pw_perf_test 12815------------ 12816* `Reogranize source files 12817 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178914>`__ 12818 12819pw_presubmit 12820------------ 12821* `Create new fuzz program 12822 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181134>`__ 12823 (issue `#311215681 <https://issues.pigweed.dev/issues/311215681>`__) 12824* `Add examples showing how to create formatters 12825 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180310>`__ 12826* `Correct coverage ref 12827 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179452>`__ 12828 (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__) 12829 12830pw_stream 12831--------- 12832* `Fix use of shutdown on Windows 12833 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180401>`__ 12834 (issue `#309680612 <https://issues.pigweed.dev/issues/309680612>`__) 12835 12836pw_system 12837--------- 12838* `Add tracing to the demo system 12839 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168834>`__ 12840 12841pw_system_demo 12842-------------- 12843* `Add clang to default stm32f4 build 12844 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178930>`__ 12845 (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__) 12846 12847pw_tokenizer 12848------------ 12849* `Add Java to supported languages list 12850 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179251>`__ 12851 12852pw_toolchain 12853------------ 12854* `Set alwayslink = 1 when using --wrap 12855 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180930>`__ 12856* `Add objdump 12857 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175810>`__ 12858 12859pw_toolchain_bazel 12860------------------ 12861Core building blocks from the :ref:`seed-0113` plan were implemented: 12862:py:class:`pw_cc_flag_set` and :py:class:`pw_cc_flag_group`. 12863 12864* `Introduce pw_cc_flag_set and pw_cc_flag_group 12865 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179932>`__ 12866 (issue `#309533028 <https://issues.pigweed.dev/issues/309533028>`__) 12867 12868pw_trace_tokenized 12869------------------ 12870* `Add a transfer based trace service 12871 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168833>`__ 12872 12873pw_transfer 12874----------- 12875There's been a concerted effort to reduce ``pw_transfer`` test flakiness. 12876 12877* `Limit data sent in handler clear test 12878 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180951>`__ 12879 (issue `#297355578 <https://issues.pigweed.dev/issues/297355578>`__) 12880* `Limit data sent in manual cancel test 12881 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180826>`__ 12882* `Use project-absolute imports for test fixture 12883 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180390>`__ 12884 (issue `#310038737 <https://issues.pigweed.dev/issues/310038737>`__) 12885* `Prevent accidental timeouts in unit tests 12886 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180274>`__ 12887 12888pw_unit_test 12889------------ 12890The :ref:`module-pw_unit_test-api-expect` and 12891:ref:`module-pw_unit_test-api-assert` APIs were documented. Support for 12892GoogleTest's ``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds`` was 12893added. 12894 12895* `Document ASSERT_ and EXPECT_ macros 12896 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179873>`__ 12897* `Include the right gmock header 12898 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180030>`__ 12899 (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__) 12900* `Mark libs as test only in bazel 12901 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179874>`__ 12902 (issue `#309665550 <https://issues.pigweed.dev/issues/309665550>`__) 12903* `Support *_NEAR, *_FLOAT_EQ, *_DOUBLE_EQ 12904 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179770>`__ 12905* `Allow googletest_test_matchers_test to run 12906 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179450>`__ 12907* `Add more googletest test matchers 12908 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179151>`__ 12909* `Add googletest test matchers 12910 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177878>`__ 12911 12912pw_watch 12913-------- 12914Support for ``httpwatcher`` was removed because it's not supported on modern 12915versions of Python. 12916 12917* `Remove httpwatcher support 12918 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179250>`__ 12919 (issue `#304603192 <https://issues.pigweed.dev/issues/304603192>`__) 12920 12921pw_web 12922------ 12923The log viewer has been polished and testing has been enhanced. 12924 12925* `Fix LogViewControls responsive behavior 12926 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179470>`__ 12927 (issue `#308993282 <https://issues.pigweed.dev/issues/308993282>`__) 12928* `Resume autoscroll with clear logs event 12929 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179252>`__ 12930* `Fix clear logs due to error thrown handling input text 12931 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176867>`__ 12932* `Add manual testing page in docs 12933 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178923>`__ 12934 (issue `#288587657 <https://issues.pigweed.dev/issues/288587657>`__) 12935 12936Build 12937===== 12938* `Update the default C++ standard 12939 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178913>`__ 12940 12941Bazel 12942----- 12943* `Upgrade nanopb version 12944 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180871>`__ 12945* `Update comment 12946 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180815>`__ 12947* `Set --incompatible_default_to_explicit_init_py 12948 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/180454>`__ 12949 (issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__) 12950* `Make pw_cc_library an alias for cc_library 12951 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178924>`__ 12952 (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__) 12953* `Don't disable use_header_modules 12954 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178565>`__ 12955 (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__) 12956 12957Targets 12958======= 12959.. todo-check: disable 12960 12961* (``stm32f429i_disc1_stm32cube``) 12962 `Update TODO 12963 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179172>`__ 12964 12965.. todo-check: enable 12966 12967Language support 12968================ 12969* (Python) `Update constraint.list 12970 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179614>`__ 12971* (Python) `Upgrade parameterized package 12972 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179451>`__ 12973 12974Docs 12975==== 12976A document about Pigweed's :ref:`docs-mission` was added. The 12977:ref:`style guide <docs-pw-style>` was split into multiple pages. 12978 12979* `Update Pigweed Live dates 12980 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/181031>`__ 12981* `Add mission & philosophies 12982 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178910>`__ 12983* `Add Contribution Standards section 12984 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179171>`__ 12985* `Add details to codependent docs 12986 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179879>`__ 12987* `Update changelog 12988 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178911>`__ 12989 (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__) 12990* `Split the style guide: Doxygen & Sphinx 12991 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178912>`__ 12992* `Split the style guide: C++ 12993 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178952>`__ 12994* `Split the style guide: commit style 12995 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178490>`__ 12996 12997SEEDs 12998===== 12999* (SEED-0110) `Correct status 13000 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/179436>`__ 13001* (SEED-0110) `Memory Allocation Interfaces 13002 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__ 13003* (SEED-0113) `Add modular Bazel C/C++ toolchain API 13004 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__ 13005 13006----------- 13007Nov 3, 2023 13008----------- 13009Highlights (Oct 19, 2023 to Nov 3, 2023): 13010 13011* A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented. 13012* :ref:`module-pw_format` is a new module dedicated to Rust format string parsing. 13013* The tokenizer prefix is now configurable via 13014 ``PW_TOKENIZER_NESTED_PREFIX_STR``. 13015* References to C++14 have been removed throughout the codebase. Pigweed no 13016 longer supports C++14; C++17 or newer is required. 13017* The upstream Pigweed GN build is now 13018 :ref:`more isolated <docs-changelog-20231103-pw_build>` so that downstream 13019 projects have less conflicts when importing Pigweed into their existing GN 13020 build. 13021* Build configuration is moving away from Bazel macros like ``pw_cc_library`` 13022 and towards the toolchain configuration so that downstream projects can have 13023 :ref:`full control <docs-changelog-20231103-bazel>` over how Pigweed libraries 13024 are built. 13025* New guidelines for authoring module docs have been published at 13026 :ref:`docs-contrib-docs-modules`. :ref:`module-pw_string` is now an example 13027 of a "golden" module docs set that follows the new guidelines. Please leave 13028 feedback on the new guidelines (and module docs updated to follow the 13029 guidelines) in `issue #309123039 <https://issues.pigweed.dev/issues/309123039>`__. 13030 13031 13032Active SEEDs 13033============ 13034Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): 13035 13036* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__ 13037* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__ 13038* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__ 13039* `SEED-0113: Modular Bazel C/C++ Toolchain API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__ 13040* `SEED-0114: Channels <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__ 13041* `SEED-0115: Sensors <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__ 13042* `SEED-0116: Sockets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177696>`__ 13043 13044Modules 13045======= 13046 13047pw_allocator 13048------------ 13049The docs now have an auto-generated size report. 13050``pw::allocator::SplitFreeListAllocator`` has a new ``blocks()`` method for getting the 13051range of blocks being tracked. The class was also refactored to 13052use the existing ``Block`` API. The ``Block`` API itself was refactored to 13053encode offsets and flags into fields. 13054 13055* `Add size reporting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178370>`__ 13056* `Return Range from SplitFreeListAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177807>`__ 13057* `Refactor SplitFreeListAllocator to use Block <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176579>`__ 13058* `Refactor Block to use encoded offsets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176578>`__ 13059 13060pw_arduino_build 13061---------------- 13062* `STM32 Core fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177750>`__ 13063 13064pw_assert 13065--------- 13066* `Update print_and_abort backend formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177845>`__ 13067 13068pw_bluetooth 13069------------ 13070More :ref:`Emboss <module-pw_third_party_emboss>` definitions were added. 13071 13072.. todo-check: disable 13073 13074* `Add TODO for issue 308794058 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151070>`__ 13075 (issue `#308794058 <https://issues.pigweed.dev/issues/308794058>`__) 13076* `Remove anonymous entry in LEPeerAddressTypeNoAnon <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177881>`__ 13077* `Separate LEAddressType and LEExtendedAddressType <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178010>`__ 13078* `Define LEExtendedCreateConnectionV1 Emboss structure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176574>`__ 13079 (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__) 13080* `Define LEEnhancedConnectionCompleteSubeventV1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176576>`__ 13081 (issue `#305976440 <https://issues.pigweed.dev/issues/305976440>`__) 13082* `Remove padding from Emboss command definitions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176772>`__ 13083 13084.. todo-check: enable 13085 13086.. _docs-changelog-20231103-pw_build: 13087 13088pw_build 13089-------- 13090Pigweed used to inject a selection of recommended configs into every ``pw_*`` 13091C/C++ target in the GN build. These were previously only possible to remove 13092with the ``remove_configs`` argument. These configs are now bundled with 13093toolchains instead, and if you don't use a Pigweed-style toolchain you'll 13094no longer need to find ways to strip the default configs from Pigweed build rules. 13095More importantly, this changes makes Pigweed's recommended configs behave 13096identically to other toolchain configs, and they're now more clearly part of 13097GN toolchain definitions. This change is transparent to most projects, but some 13098Pigweed customers have been asking for this for a while. 13099 13100The :ref:`module-pw_build-bazel-empty_cc_library` Bazel utility was added. 13101 13102* `Add empty_cc_library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178555>`__ 13103* `Remove pw_build_default_configs_in_toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177894>`__ 13104* `Apply pigweed_default_configs in toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120610>`__ 13105 (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__) 13106* `Fix blob attribute ordering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177458>`__ 13107* `Only use -Wextra-semi on C++ files with GCC <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177171>`__ 13108 (issues `#301262374 <https://issues.pigweed.dev/issues/306734552>`__, 13109 `#301262374 <https://issues.pigweed.dev/issues/301262374>`__) 13110* `Silence Windows-specific warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177172>`__ 13111 13112pw_bytes 13113-------- 13114A new ``_b`` literal was added to make it easier to create bytes for tests 13115and constants. 13116 13117* `Add _b suffix for byte literals <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178134>`__ 13118 13119pw_containers 13120------------- 13121The reference docs for the variable length entry queue API in C and Python 13122were updated. 13123 13124* `Update VariableLengthEntryQueue size functions; cleanup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173454>`__ 13125 13126pw_digital_io_mcuxpresso 13127------------------------ 13128* `Remove RT595 size def <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178353>`__ 13129 13130pw_doctor 13131--------- 13132* `Trivial linter fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176939>`__ 13133 13134pw_emu 13135------ 13136* `renode: Show more details when failing to connect <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178563>`__ 13137 (issue `#307736513 <https://issues.pigweed.dev/issues/307736513>`__) 13138 13139pw_env_setup 13140------------ 13141``pip`` has been pinned to ``23.2.1`` and ``pip-tools`` to ``7.3.0`` to 13142prevent dependency resolution problems. 13143 13144* `Pin pip and pip-tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177834>`__ 13145* `Update protoc to 2@24.4 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177050>`__ 13146 (issue `#306461552 <https://issues.pigweed.dev/issues/306461552>`__) 13147 13148pw_format 13149--------- 13150:ref:`module-pw_format` is a new module dedicated to Rust format string parsing. 13151 13152* `Correct crate name in docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178078>`__ 13153* `Move Rust format string parsing into its own module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168362>`__ 13154 13155pw_fuzzer 13156--------- 13157* `Inline NonOkStatus() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178212>`__ 13158* `Fix instrumentation config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178214>`__ 13159 13160.. _docs-changelog-20231103-pw_hdlc: 13161 13162pw_hdlc 13163------- 13164Using read callbacks in ``RpcClient`` is no longer accepted and the use of 13165``CancellableReader`` is now enforced because it provides a safe and clean 13166shutdown process. 13167 13168* `Enforce use of CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173618>`__ 13169 (issue `#301496598 <https://issues.pigweed.dev/issues/301496598>`__) 13170 13171pw_libcxx 13172--------- 13173:ref:`module-pw_libcxx` is a new module that provides ``libcxx`` symbols and 13174will eventually facilitate pulling in headers as well. 13175 13176* `Add pw_libcxx library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144970>`__ 13177 13178pw_log 13179------ 13180A :ref:`module-pw_log-bazel-backend_impl` label flag was added to Bazel to 13181avoid circular dependencies. 13182 13183* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__ 13184 (issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__) 13185* `Introduce backend_impl label flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177842>`__ 13186 (issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__) 13187 13188pw_multibuf 13189----------- 13190A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented. 13191 13192* `Add basic MultiBuf operations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178036>`__ 13193* `Add Chunk::Merge <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177636>`__ 13194* `Fix TrackingAllocatorWithMemory UAF <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177694>`__ 13195* `Add module and Chunk implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173951>`__ 13196 13197pw_package 13198---------- 13199* `Use mirror for stm32cube <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/142510>`__ 13200 (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__) 13201* `Fix Zephyr URL <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177456>`__ 13202 13203pw_presubmit 13204------------ 13205A CSS formatter was added. 13206 13207* `Add basic CSS formatter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178810>`__ 13208 (issue `#308948504 <https://issues.pigweed.dev/issues/308948504>`__) 13209* `Kalypsi-based coverage upload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175070>`__ 13210 (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__) 13211* `Handle missing upstream better <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177038>`__ 13212 (issue `#282808936 <https://issues.pigweed.dev/issues/282808936>`__) 13213* `Trivial linter fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176939>`__ 13214 13215pw_protobuf 13216----------- 13217* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__ 13218 (issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__) 13219 13220pw_rpc 13221------ 13222:ref:`pw::rpc::SynchronousCallFor() <module-pw_rpc-client-sync-call-wrappers>` 13223now supports :ref:`DynamicClient <module-pw_rpc_pw_protobuf-client>`. 13224 13225* `Update Java service error with tip <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178812>`__ 13226 (issue `#293361955 <https://issues.pigweed.dev/issues/293361955>`__) 13227* `Support DynamicClient with SynchronousCallFor API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177637>`__ 13228 13229pw_string 13230--------- 13231The docs were updated to match the new :ref:`docs-contrib-docs-modules`. 13232 13233* `Docs tweaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177883>`__ 13234 13235pw_sys_io 13236--------- 13237Backends that depend on ``default_putget_bytes`` were updated to express the 13238dependency. 13239 13240* `Fix Bazel backends <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177656>`__ 13241 13242pw_system 13243--------- 13244See :ref:`docs-changelog-20231103-pw_hdlc` for an explanation of the 13245``CancellableReader`` change. 13246 13247* `Enforce use of CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173618>`__ 13248 (issue `#301496598 <https://issues.pigweed.dev/issues/301496598>`__) 13249 13250pw_tls_client 13251------------- 13252* `Update to new boringssl API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178150>`__ 13253 13254pw_tokenizer 13255------------ 13256The tokenizer prefix is now configurable via ``PW_TOKENIZER_NESTED_PREFIX_STR``. 13257 13258* `Enable sandboxing for pigweed genrules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178550>`__ 13259 (issue `#307824623 <https://issues.pigweed.dev/issues/307824623>`__) 13260* `Let tokenizer prefix be configurable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177575>`__ 13261 13262pw_toolchain 13263------------ 13264You can now set the ``dir_pw_third_party_builtins`` GN var to your 13265``compiler-rt/builtins`` checkout to enable buildings LLVM ``builtins`` from 13266source instead of relying on a shipped ``libgcc``. 13267 13268* `Apply pigweed_default_configs in toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120610>`__ 13269 (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__) 13270* `Build compiler-rt builtins to replace libgcc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144050>`__ 13271 13272pw_unit_test 13273------------ 13274* `Pass verbose flag to TestRunner <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177470>`__ 13275 13276pw_web 13277------ 13278* `Limit component rerendering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177810>`__ 13279 (issue `#307559191 <https://issues.pigweed.dev/issues/307559191>`__) 13280 13281Build 13282===== 13283References to C++14 have been removed throughout the codebase. Pigweed no 13284longer supports C++14; C++17 or newer is required. 13285 13286* `Drop C++14 compatibility from the build and docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177610>`__ 13287 13288.. _docs-changelog-20231103-bazel: 13289 13290Bazel 13291----- 13292Build configuration is moving away from Bazel macros like ``pw_cc_library`` 13293and towards the toolchain configuration so that downstream projects can have 13294full control over how Pigweed libraries are built. 13295 13296* `Move Kythe copts to toolchain configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178592>`__ 13297 (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__) 13298* `Move warnings to toolchain configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178557>`__ 13299 (issue `#240466562 <https://issues.pigweed.dev/issues/240466562>`__) 13300* `Silence warnings from external code <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178436>`__ 13301 (issue `#300330623 <https://issues.pigweed.dev/issues/300330623>`__) 13302* `stm32cube support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177134>`__ 13303* `Remove most copts from pw_cc_library macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170824>`__ 13304 (issue `#267498492 <https://issues.pigweed.dev/issues/267498492>`__) 13305 13306Targets 13307======= 13308``pw_assert_BACKEND`` for :ref:`target-host` was set to 13309``print_and_abort_check_backend`` to enable compatibility with GoogleTest death 13310tests. 13311 13312* (``host``) `Change pw_assert_BACKEND <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177835>`__ 13313 13314OS support 13315========== 13316* (``zephyr``) `Update checkout to v3.5 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177669>`__ 13317 13318Docs 13319==== 13320New guidelines for authoring module docs have been published at 13321:ref:`docs-contrib-docs-modules`. :ref:`module-pw_string` is now an example 13322of a "golden" module docs set that follows the new guidelines. Please leave 13323feedback on the new guidelines (and module docs updated to follow the 13324guidelines) in `issue #309123039 <https://issues.pigweed.dev/issues/309123039>`__. 13325 13326There's now a definition for :ref:`docs-glossary-facade` in the glossary. 13327 13328* `Update module docs authoring guidelines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177465>`__ 13329* `Fix nav and main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178591>`__ 13330 (issue `#303261476 <https://issues.pigweed.dev/issues/303261476>`__) 13331* `Add udev instructions to Bazel Get Started <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178435>`__ 13332* `Add information on the experimental repo to contributing.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/178272>`__ 13333* `Mention command for updating Py dep hashes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177799>`__ 13334* `Define facade in glossary <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177632>`__ 13335* `Remove symlinks to files that were removed <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177530>`__ 13336* `Mention upstream development guide in contributor guidelines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177459>`__ 13337* `Move all images out of the repo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176751>`__ 13338* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177085>`__ 13339 (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__) 13340* `Move CoC to Contributors section of sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177071>`__ 13341 13342SEEDs 13343===== 13344* (SEED-0107) `Update SEED references; fix typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177698>`__ 13345* (SEED-0112) `Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__ 13346* (SEED-0115) `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177093>`__ 13347* (SEED-0116) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177697>`__ 13348 13349Third party 13350=========== 13351* (nanopb) `Detect protoc updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177650>`__ 13352 13353------------ 13354Oct 20, 2023 13355------------ 13356Highlights (Oct 5, 2023 to Oct 20, 2023): 13357 13358* ``pw_emu`` has launched! Check out :ref:`module-pw_emu` to get started. 13359 See :ref:`seed-0108` for background. 13360* :ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105` 13361 for background. 13362* The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler 13363 RAII API for allocating individual values within an allocator. 13364* A few SEEDs were accepted: :ref:`seed-0105`, :ref:`seed-0109`, and 13365 :ref:`seed-0111`. 13366* Lots of new docs, including a guide for 13367 :ref:`getting started with Bazel <docs-get-started-bazel>`, a 13368 conceptual explanation of :ref:`facades and backends <docs-facades>`, 13369 and an eng blog post detailing :ref:`Kudzu <docs-blog-01-kudzu>`, an 13370 electronic badge that the Pigweed team made for Maker Faire 2023. 13371 13372Active SEEDs 13373============ 13374Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): 13375 13376* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__ 13377* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__ 13378* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__ 13379* `SEED-0113: Modular Bazel C/C++ Toolchain API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173453>`__ 13380* `SEED-0114: Channels <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175471>`__ 13381* `SEED-0115: Sensors <http://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176760>`__ 13382 13383Modules 13384======= 13385 13386pw_allocator 13387------------ 13388The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler 13389RAII API for allocating individual values within an allocator. 13390 13391* `Fix SplitFreeListAllocator region alignment <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175232>`__ 13392* `Add UniquePtr\<T\> <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176781>`__ 13393 13394pw_async 13395-------- 13396* `Add CMake support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175475>`__ 13397 13398pw_async_basic 13399-------------- 13400* `Add missing include <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175476>`__ 13401* `Fix build error when using pw_async:heap_dispatcher <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173480>`__ 13402 13403pw_bluetooth 13404------------ 13405* `Define LEChannelSelectionAlgorithmSubevent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176577>`__ 13406* `Define LEScanTimeoutSubevent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176575>`__ 13407 (issue `#265052417 <https://issues.pigweed.dev/issues/265052417>`__) 13408* `Use $size_in_bits instead of hardcoding size <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176573>`__ 13409* `Switch from parameterized value to determining at run time <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176572>`__ 13410 (issue `#305975969 <https://issues.pigweed.dev/issues/305975969>`__) 13411* `Fix size reports <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173620>`__ 13412 13413pw_build 13414-------- 13415:ref:`module-pw_build-bazel-pw_linker_script` now describes how to work 13416with linker scripts. 13417 13418* `Update pw_linker_script docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174848>`__ 13419* `Move pw_linker_script rule definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174872>`__ 13420 13421pw_chre 13422------- 13423* `Remove TODOs for CHRE MacOS support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175490>`__ 13424 13425pw_cli 13426------ 13427* `Honor NO_COLOR and CLICOLOR_FORCE <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176860>`__ 13428* `Use typing.Literal <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176778>`__ 13429 13430pw_digital_io 13431------------- 13432* `Add Android.bp for proto/rpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176270>`__ 13433 13434pw_emu 13435------ 13436The module has launched! Check out :ref:`module-pw_emu` to get started. 13437 13438* `renode: Increase start timeout to 120s <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176865>`__ 13439* `Fix pid file race condition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176782>`__ 13440* `mock_emu: start listening before making the port available <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176856>`__ 13441 (issue `#306155313 <https://issues.pigweed.dev/issues/306155313>`__) 13442* `qemu: Force using IPv4 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176430>`__ 13443 (issue `#305810466 <https://issues.pigweed.dev/issues/305810466>`__) 13444* `Add renode support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173613>`__ 13445* `Add QEMU support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173612>`__ 13446* `core: Let the OS terminate foreground emulator processes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175638>`__ 13447* `Add user APIs and the command line interface <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173611>`__ 13448* `Add core components <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173610>`__ 13449* `Add Emulators Frontend module boilerplate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162096>`__ 13450 13451pw_env_setup 13452------------ 13453* `Allow disabling CIPD cache <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176650>`__ 13454* `Add prpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175236>`__ 13455 13456pw_function 13457----------- 13458* `Move pw_function_CONFIG to .gni <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173652>`__ 13459 13460pw_hdlc 13461------- 13462:ref:`module-pw_hdlc-api-rpc` now has much more information on how to use 13463``pw_hdlc`` for RPC in Python. 13464 13465* `Update Python RPC documents <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174825>`__ 13466 13467pw_i2c 13468------ 13469* `Fix accidental c++2a <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176511>`__ 13470* `Add Android.bp for i2c proto/rpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176070>`__ 13471 13472pw_kvs 13473------ 13474The new ``FlashPartitionWithLogicalSectors`` variant of ``FlashPartition`` 13475supports combining multiple physical ``FlashMemory`` sectors into a single 13476logical ``FlashPartition`` sector. 13477 13478* `Add FlashPartitionWithLogicalSectors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/106917>`__ 13479 13480pw_log_tokenized 13481---------------- 13482:ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105` for background. 13483 13484* `Add tokenized string args support to log backend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164514>`__ 13485 13486pw_log_zephyr 13487------------- 13488* `Clean-up unused dependencies from TOKENIZED_LIB <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174813>`__ 13489 13490pw_minimal_cpp_stdlib 13491--------------------- 13492* `Support additional libraries <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173814>`__ 13493* `Add Zephyr Kconfig to enable include path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173653>`__ 13494 13495pw_package 13496---------- 13497* `Update boringssl commit & skip clang-tidy <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175016>`__ 13498* `Update Emboss commit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173619>`__ 13499 13500pw_presubmit 13501------------ 13502:ref:`module-pw_presubmit-presubmit-checks` has more guidance on when to use 13503``--base`` and ``--full``. 13504 13505* `Add note about --full and --base <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175633>`__ 13506 13507pw_snapshot 13508----------- 13509* `More detokenization tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176759>`__ 13510 13511pw_spi 13512------ 13513* `Fix cmake integration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175190>`__ 13514 13515pw_sync_zephyr 13516-------------- 13517* `Add TimedThreadNotification::try_acquire_until <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175478>`__ 13518 13519pw_system 13520--------- 13521The ``Device`` class's constructor now accepts a ``logger`` argument 13522that enables you to specify which logger should be used. 13523 13524* `Add option to pass logger to Device <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175075>`__ 13525 13526pw_third_party_freertos 13527----------------------- 13528* `Add arm_cm7_not_r0p1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172382>`__ 13529 13530pw_thread 13531--------- 13532* `More detokenization tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176759>`__ 13533 13534pw_thread_freertos 13535------------------ 13536* `Fix extra wakeups when detaching threads <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175310>`__ 13537 (issue `#303885539 <https://issues.pigweed.dev/issues/303885539>`__) 13538 13539pw_tokenizer 13540------------ 13541:ref:`module-pw_tokenizer-get-started-integration` has new guidance around 13542configuring linker scripts in Bazel. 13543 13544* `Expose linker_script in BUILD.bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175590>`__ 13545 13546pw_toolchain 13547------------ 13548* `Exclude googletest from static analysis <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173482>`__ 13549 13550pw_transfer 13551----------- 13552* `Start the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170011>`__ 13553 (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__) 13554 13555pw_web 13556------ 13557* `Reduce table cell padding <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176690>`__ 13558 (issue `#305022558 <https://issues.pigweed.dev/issues/305022558>`__) 13559* `Fix invisible jump button <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175330>`__ 13560* `Enable manual color scheme setting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173630>`__ 13561 (issue `#301498553 <https://issues.pigweed.dev/issues/301498553>`__) 13562 13563Build 13564===== 13565* `Fix pw_BUILD_BROKEN_GROUPS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176114>`__ 13566* `Update Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175631>`__ 13567 (issue `#277108894 <https://issues.pigweed.dev/issues/277108894>`__) 13568 13569Bazel 13570----- 13571* `Don't autodetect C++ toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175613>`__ 13572 (issue `#304880653 <https://issues.pigweed.dev/issues/304880653>`__) 13573* `Add O2 to arm_gcc toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175536>`__ 13574 (issue `#299994234 <https://issues.pigweed.dev/issues/299994234>`__) 13575 13576Targets 13577======= 13578* (rp2040_pw_system) `Enable time slicing <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175074>`__ 13579 13580OS support 13581========== 13582* (zephyr) `Allow direct CMake inclusions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175477>`__ 13583 13584Docs 13585==== 13586* `Move CoC to Contributors section of sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177071>`__ 13587* `Create concepts section in sitenav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/177037>`__ 13588* `Add facades and backends page <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170602>`__ 13589* `Add Bazel getting started tutorial <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176319>`__ 13590* `Remove css class on Kudzu image captions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176770>`__ 13591* `Kudzu photos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176710>`__ 13592* `Refactor the getting started section <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176331>`__ 13593* `Add sitemap <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176492>`__ 13594* `Add hat tip for pixel doubling technique <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175639>`__ 13595* `Start eng blog and add Kudzu page <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175619>`__ 13596* `Add Pigweed Live directive <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174892>`__ 13597* `Add builder viz to CI/CQ intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175414>`__ 13598 (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__) 13599* `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175415>`__ 13600 (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__) 13601* `Add changelog highlight <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175231>`__ 13602* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174818>`__ 13603 13604SEEDs 13605===== 13606A few SEEDs were accepted and a few more started. 13607 13608* (SEED-0105) `Add nested tokens to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__ 13609* (SEED-0109) `Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__ 13610* (SEED-0111) `Update status, add link to SEED-0113 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176254>`__ 13611* (SEED-0111) `Make Bazel Pigweed's Primary Build System <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__ 13612* (SEED-0113) `Claim SEED number (Modular Bazel C/C++ Toolchain API) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175510>`__ 13613* (SEED-0114) `Claim SEED number (Channels) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175412>`__ 13614* (SEED-0115) `Clain SEED number (Sensors) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176763>`__ 13615 13616Third party 13617=========== 13618* (boringssl) `Remove crypto_sysrand.cc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175017>`__ 13619* (fuchsia) `Copybara import <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173651>`__ 13620* (fuchsia) `Update copybara with fit/defer.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173481>`__ 13621 13622Miscellaneous 13623============= 13624* `Update formatting for new clang version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175311>`__ 13625* `Use C++20 everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174630>`__ 13626 (issue `#303371098 <https://issues.pigweed.dev/issues/303371098>`__) 13627* (revert) `Use .test convention" <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171793>`__ 13628* `Add generated Emboss code <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/176571>`__ 13629 13630----------- 13631Oct 6, 2023 13632----------- 13633Highlights (Sep 21, 2023 to Oct 6, 2023): 13634 13635* We expanded our RP2040 support. See the new :ref:`module-pw_chrono_rp2040` 13636 and :ref:`module-pw_digital_io_rp2040` modules. 13637* The :ref:`new CancellableReader class in pw_hdlc <docs-changelog-20231009-pw_hdlc>` 13638 is an interface for receiving RPC packets that guarantees its read process can be 13639 stopped. 13640* ``pw_rpc`` now :ref:`automatically generates a new DynamicClient interface 13641 <docs-changelog-20231009-pw_rpc>` when dynamic allocation is enabled. 13642* The Python backend for ``pw_tokenizer`` now supports :ref:`tokenizing strings as 13643 arguments <docs-changelog-20231009-pw_tokenizer>`. 13644* The ``pigweed_config`` mechanism in Bazel is now officially retired. 13645 13646Active SEEDs 13647============ 13648Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): 13649 13650* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__ 13651* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__ 13652* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__ 13653* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__ 13654* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__ 13655* `SEED-0111: Make Bazel Pigweed's Primary Build System <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__ 13656* `SEED-0112: Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__ 13657 13658Modules 13659======= 13660 13661.. _docs-changelog-20231009-pw_allocator: 13662 13663pw_allocator 13664------------ 13665We added a bunch of new allocator APIs! ``AllocatorMetricProxy`` is a wrapper for 13666``Allocator`` that tracks the number and total of current memory allocations as well 13667as peak memory usage. ``LibCAllocator`` is an allocator that uses ``malloc()`` and 13668``free()``. ``NullAllocator`` is an allocator that always fails which is useful for 13669disallowing memory allocations under certain circumstances. ``SplitFreeListAllocator`` 13670uses a free list to reduce fragmentation. ``FallbackAllocator`` enables you to 13671specify primary and secondary allocators. 13672 13673* `Add Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173851>`__ 13674* `Add pool accessors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173615>`__ 13675* `Move Resize assertion <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173614>`__ 13676* `Add AllocatorMetricProxy <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172380>`__ 13677* `Add LibCAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172232>`__ 13678* `Add NullAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172233>`__ 13679* `Add SplitFreeListAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172231>`__ 13680* `Add FallbackAllocator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171837>`__ 13681* `Generic interface for allocators <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171709>`__ 13682 13683pw_analog 13684--------- 13685* `Migrate MicrovoltInput to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170593>`__ 13686 (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__) 13687 13688pw_async 13689-------- 13690* `Add OWNERS file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173690>`__ 13691 13692pw_bloat 13693-------- 13694``pw_size_report()`` has a new ``json_key_prefix`` argument which is an 13695optional prefix for key names in JSON size reports and a new 13696``full_json_summary`` argument which provides more control over how 13697much detail is provided in a JSON size report. 13698 13699* `Update API to allow verbose json content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168718>`__ 13700 (issue `#282057969 <https://issues.pigweed.dev/issues/282057969>`__) 13701 13702pw_bluetooth 13703------------ 13704* `Format Emboss files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174832>`__ 13705* `Update comments in HCI event defs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174070>`__ 13706 (issue `#265052417 <https://issues.pigweed.dev/issues/265052417>`__) 13707 13708pw_build 13709-------- 13710 13711 13712* `Fix path in Bazel pw_linker_script <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174591>`__ 13713* `Expose pw_linker_script in Bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174590>`__ 13714 (issue `#303482154 <https://issues.pigweed.dev/issues/303482154>`__) 13715* `Define empty configs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174490>`__ 13716* `Add bazel implementation of pw_cc_blob_library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173452>`__ 13717 (issue `#238339027 <https://issues.pigweed.dev/issues/238339027>`__) 13718* `Clean up build_target.gni <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120215>`__ 13719 (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__) 13720* `Allow add_global_link_deps to be overridden <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150050>`__ 13721* `Expose pigweed_default_configs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173372>`__ 13722 (issue `#260111641 <https://issues.pigweed.dev/issues/260111641>`__) 13723* `Apply -Wextra-semi to C code as well as C++ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172372>`__ 13724 13725pw_chre 13726------- 13727* `Update bug numbers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172330>`__ 13728 13729pw_chrono 13730--------- 13731* `Add clarification to is_nmi_safe <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174573>`__ 13732 13733pw_chrono_rp2040 13734---------------- 13735This module is a new ``pw::chrono::SystemClock`` backend for RP2040. 13736 13737* `System clock backend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174651>`__ 13738 13739pw_cli 13740------ 13741* `Update requires script <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126101>`__ 13742* `Narrow logic around colors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173232>`__ 13743 13744pw_containers 13745------------- 13746There's a new C implementation for ``VariableLengthEntryDeque`` which is a 13747double-ended queue buffer that stores variable-length entries inline in a 13748circular (ring) buffer. The old ``VariableLengthEntryDeque`` was renamed 13749to ``VariableLengthEntryQueue``. 13750 13751* `Add missing <utility> include for std::move <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173879>`__ 13752* `Rename to VariableLengthEntryQueue <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173451>`__ 13753* `Rename files to variable_length_entry_queue <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173450>`__ 13754* `VariableLengthEntryDeque Entry struct <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173130>`__ 13755* `VariableLengthEntryDeque C implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169731>`__ 13756 13757pw_digital_io_rp2040 13758-------------------- 13759This module is a new RP2040 backend for ``pw_digital_io``. 13760 13761* `Implementation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173550>`__ 13762 (issue `#303255049 <https://issues.pigweed.dev/issues/303255049>`__) 13763 13764pw_env_setup 13765------------ 13766We made the Pigweed bootstrap process on Windows more robust. 13767 13768* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172416>`__ 13769 (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__) 13770* `Better highlight bootstrap failure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172415>`__ 13771* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__ 13772 (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__) 13773 13774.. _docs-changelog-20231009-pw_hdlc: 13775 13776pw_hdlc 13777------- 13778The new ``CancellableReader`` class is a new interface for receiving RPC 13779packets that guarantees its read process can be stopped. 13780 13781* `Add CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172051>`__ 13782 (issue `#294858483 <https://issues.pigweed.dev/issues/294858483>`__) 13783 13784pw_i2c 13785------ 13786* `Fix docs to use MakeExpectedTransactionArray <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173570>`__ 13787* `Add cmake integration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172210>`__ 13788 13789pw_kvs 13790------ 13791The new ``FlashPartitionWithLogicalSectors`` C++ class supports combining 13792multiple physical ``FlashMemory`` sectors into a single logical 13793``FlashPartition`` sector. 13794 13795* `Add FlashPartitionWithLogicalSectors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/106917>`__ 13796 13797pw_libc 13798------- 13799* `Don't implicitly link against global link_deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150051>`__ 13800 13801pw_metric 13802--------- 13803* `Make constructors constexpr <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172379>`__ 13804 13805pw_minimal_cpp_stdlib 13806--------------------- 13807* `Update to compile with stdcompat <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173350>`__ 13808* `Namespace public/internal to module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173692>`__ 13809 13810pw_perf_test 13811------------ 13812* `Gate on pw_chrono_SYSTEM_TIMER_BACKEND <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174650>`__ 13813 13814pw_presubmit 13815------------ 13816* `Allow dots in module part of commit message <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174232>`__ 13817* `Use autodoc for context classes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169119>`__ 13818* `Allow passing kwargs to build.bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173853>`__ 13819 (issue `#302045722 <https://issues.pigweed.dev/issues/302045722>`__) 13820* `No env_with_clang_vars with bazel <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173656>`__ 13821 13822pw_ring_buffer 13823-------------- 13824* `Minor build and docs updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173030>`__ 13825 13826.. _docs-changelog-20231009-pw_rpc: 13827 13828pw_rpc 13829------ 13830If dynamic allocation is enabled via ``PW_RPC_DYNAMIC_ALLOCATION`` a new 13831``DynamicClient`` is now generated which dynamically allocates the call 13832object with ``PW_RPC_MAKE_UNIQUE_PTR``. 13833 13834* `Generate DynamicClient that dynamically allocates call objects <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168534>`__ 13835* `Add CancellableReader <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172051>`__ 13836 (issue `#294858483 <https://issues.pigweed.dev/issues/294858483>`__) 13837 13838pw_rpc_transport 13839---------------- 13840* `Add a test loopback service registry <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171114>`__ 13841 (issue `#300663813 <https://issues.pigweed.dev/issues/300663813>`__) 13842 13843pw_stream 13844--------- 13845``pw_stream`` now has initial support for ``winsock2``. 13846 13847* `Add Windows socket support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172413>`__ 13848 13849pw_sys_io_rp2040 13850---------------- 13851* `Renamed from pw_sys_io_pico <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174910>`__ 13852 13853.. _docs-changelog-20231009-pw_tokenizer: 13854 13855pw_tokenizer 13856------------ 13857The Python backend now supports nested hashing tokenization. See 13858:ref:`module-pw_tokenizer-nested-arguments`. 13859 13860* `Support nested hashing tokenization (python backend) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/145339>`__ 13861 (issue `#278890205 <https://issues.pigweed.dev/issues/278890205>`__) 13862* `Test for C99 support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170150>`__ 13863 13864pw_toolchain 13865------------ 13866* `Add libc stub for gettimeofday, update visibility rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173850>`__ 13867* `Link against pw_libc for host clang toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151439>`__ 13868 13869pw_transfer 13870----------- 13871* `Start the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170011>`__ 13872 (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__) 13873* `Remove old test server <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172951>`__ 13874 (issue `#234875234 <https://issues.pigweed.dev/issues/234875234>`__) 13875 13876pw_unit_test 13877------------ 13878* `Do not print contents of unknown objects <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174911>`__ 13879* `Add more pw_unit_test_TESTONLY args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173670>`__ 13880 (issue `#234873207 <https://issues.pigweed.dev/issues/234873207>`__) 13881* `Add pw_unit_test_TESTONLY build arg <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171970>`__ 13882 (issue `#234873207 <https://issues.pigweed.dev/issues/234873207>`__) 13883 13884pw_watch 13885-------- 13886* `Add link to served docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173456>`__ 13887 13888pw_web 13889------ 13890* `Make ongoing transfers accessible downstream <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174231>`__ 13891* `TypeScript workarounds for disambiguation errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173590>`__ 13892* `Throw error as an Error type <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173051>`__ 13893* `Remove need for Buffer package in pw_hdlc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172377>`__ 13894* `Remove date-fns <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172371>`__ 13895 13896Build 13897===== 13898* `Fix extended default group <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174574>`__ 13899 (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__) 13900* `Fix \`all\` target in GN build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173050>`__ 13901* `Add an extended default group <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/110391>`__ 13902 13903Bazel 13904----- 13905* `Retire pigweed_config (part 3) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172411>`__ 13906* `Retire pigweed_config (part 2) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170058>`__ 13907 (issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__) 13908 13909Docs 13910==== 13911We started a :ref:`glossary <docs-glossary>` and added new docs about 13912:ref:`rollers <docs-rollers>` and :ref:`CI/CQ <docs-ci-cq-intro>`. 13913 13914* `Add docs on rollers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174770>`__ 13915 (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__) 13916* `Remove redundant auto-submit section <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174890>`__ 13917 (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__) 13918* `Reformat CI/CQ Intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174870>`__ 13919 (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__) 13920* `Move CI/CQ Intro to infra/ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174776>`__ 13921 (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__) 13922* `Address comments on CI/CQ intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173932>`__ 13923 (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__) 13924* `Tidy up build system docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173658>`__ 13925* `Fix typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173872>`__ 13926* `Add CI/CQ Intro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173455>`__ 13927 (issue `#302680656 <https://issues.pigweed.dev/issues/302680656>`__) 13928* `Add policy on incomplete docs changes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/173617>`__ 13929* `Start the glossary <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172952>`__ 13930* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172810>`__ 13931 (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__) 13932* `Add Doxygen @endcode guidance <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172470>`__ 13933 13934SEEDs 13935===== 13936* (SEED-0112) `Fix link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174771>`__ 13937 13938Miscellaneous 13939============= 13940 13941pigweed.json 13942------------ 13943* `Exclude patches.json from formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/174230>`__ 13944 (issue `#232234662 <https://issues.pigweed.dev/issues/232234662>`__) 13945 13946------------ 13947Sep 22, 2023 13948------------ 13949Highlights (Sep 07, 2023 to Sep 22, 2023): 13950 13951* ``pw_tokenizer`` has :ref:`new C++ methods for detokenizing 13952 Base64-encoded strings and new C functions for manually encoding tokenized 13953 messages that contain integers <docs-changelog-pw_tokenizer-20230922>`. 13954* ``pw::rpc::SynchronousCall`` now supports the use of :ref:`custom response message 13955 classes <docs-changelog-pw_rpc-20230922>`. 13956* The C API for ``pw_varint`` got :ref:`lots of ergonomic improvements 13957 <docs-changelog-pw_varint-20230922>`. 13958* The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code 13959 review process. 13960 13961Active SEEDs 13962============ 13963Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): 13964 13965* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__ 13966* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__ 13967* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__ 13968* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__ 13969* `SEED-0110: Memory Allocation Interfaces <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168772>`__ 13970* `SEED-0111: Future of Pigweed build systems <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171695>`__ 13971* `SEED-0112: Async Poll Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168337>`__ 13972 13973Modules 13974======= 13975 13976pw function 13977----------- 13978* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__ 13979 (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__) 13980 13981pw perf_test 13982------------ 13983* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__ 13984 (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__) 13985 13986pw_analog 13987--------- 13988* `Migrate AnalogInput to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170511>`__ 13989 (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__) 13990 13991pw_async 13992-------- 13993The ``Run*()`` methods of ``FakeDispatcher`` now return a boolean that indicates 13994whether any tasks were invoked. 13995 13996* `Return bool from FakeDispatcher Run*() methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170599>`__ 13997 13998pw_async_basic 13999-------------- 14000``release()`` is now only called outside of locked contexts to prevent an 14001issue where the thread wakes up and then immediately goes back to sleep. 14002An unnecessary 5-second wakeup has been removed from ``BasicDispatcher``. 14003 14004* `release outside of lock context <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171103>`__ 14005* `Remove unnecessary 5-second wakeup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171102>`__ 14006 14007pw_base64 14008--------- 14009The new ``pw::base64::IsValidChar()`` method can help you determine if a 14010character is valid Base64. 14011 14012* `Add base64 detokenizer handler <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165010>`__ 14013 14014pw_bluetooth 14015------------ 14016More :ref:`Emboss <module-pw_third_party_emboss>` definitions were added. 14017 14018* `Add ReadLocalSupportedCommandsCommandCompleteEvent Emboss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169877>`__ 14019* `Add LEReadLocalSupportedFeaturesCommandCompleteEvent <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169931>`__ 14020* `Add ReadBufferSizeCommandComplete Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169869>`__ 14021* `Add ReadBdAddrCommandCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170052>`__ 14022* `Add ReadLocalVersionInfoCommandCompleteEvent Emboss def <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169951>`__ 14023* `Add LELongTermKeyRequestSubevent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169950>`__ 14024* `Add UserPasskeyNotificationEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169917>`__ 14025 14026pw_build 14027-------- 14028* `Apply -Wextra-semi to C code as well as C++ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172372>`__ 14029 14030pw_bytes 14031-------- 14032The ``AlignDown()``, ``AlignUp()``, and ``Padding()`` methods of ``pw_kvs`` 14033have moved to ``pw_bytes`` to enable ``pw_allocator`` to use them without 14034taking a dependency on ``pw_kvs``. 14035 14036* `Move Align functions from pw_kvs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171831>`__ 14037 14038pw_checksum 14039----------- 14040* `Sign conversion fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171832>`__ 14041 (issue `#301079199 <https://issues.pigweed.dev/issues/301079199>`__) 14042 14043pw_chre 14044------- 14045The implementation of a module that will enable to work more seamlessly with 14046Android's `Context Hub Runtime Environment <https://source.android.com/docs/core/interaction/contexthub>`__ 14047has begun. 14048 14049* `Update bug numbers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172330>`__ 14050* `Minor fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171851>`__ 14051 (issue `#301079509 <https://issues.pigweed.dev/issues/301079509>`__) 14052* `Fix build rules to use paramertized paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171850>`__ 14053 (issue `#298474212 <https://issues.pigweed.dev/issues/298474212>`__) 14054* `Split out shared_platform <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170791>`__ 14055* `Write our own version.cc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170790>`__ 14056 (issue `#300633363 <https://issues.pigweed.dev/issues/300633363>`__) 14057* `Add barebones CHRE <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162510>`__ 14058 (issue `#294106526 <https://issues.pigweed.dev/issues/294106526>`__) 14059 14060pw_console 14061---------- 14062When invoking ``pw_console`` directly from Python, you can now provide arguments 14063through an ``argparse.Namespace`` instead of messing with ``sys.argv`` or forking 14064another process. 14065 14066* `Allow injecting args via Python call <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172414>`__ 14067 14068pw_containers 14069------------- 14070`MemorySanitizer <https://github.com/google/sanitizers/wiki/MemorySanitizer>`__ has 14071been disabled in some of the ``InlineDeque`` implementation to prevent some false 14072positive detections of uninitialized memory reads. 14073 14074* `Silence MSAN false positives <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171990>`__ 14075 14076pw_env_setup 14077------------ 14078Work continues on making the Windows bootstrap process more robust. 14079 14080* `Better highlight bootstrap failure <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172415>`__ 14081* `Fix double bootstrap.bat failures on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__ 14082 (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__) 14083* `Enable overriding Clang CIPD version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171838>`__ 14084* `PyPI version bump to 0.0.15 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171836>`__ 14085* `Add relative_pigweed_root to pigweed.json <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171218>`__ 14086 (issue `#300632028 <https://issues.pigweed.dev/issues/300632028>`__) 14087* `Roll cipd to 0f08b927516 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170452>`__ 14088 14089pw_function 14090----------- 14091The documentation has been updated for accuracy. 14092 14093* `Update config.h comments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171250>`__ 14094* `Add configurable Allocator default <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171130>`__ 14095* `Update example to match guidelines for parameters <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170651>`__ 14096* `Add Allocator injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170190>`__ 14097 14098pw_fuzzer 14099--------- 14100Conditional logic around fuzzing support has been refactored to allow for 14101dedicated targets based on specific conditions and to make it clearer 14102exactly what configurations and dependencies are being used. 14103 14104* `Refactor conditional GN targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169712>`__ 14105 14106pw_ide 14107------ 14108* `Reformat json files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172310>`__ 14109* `Fix clangd path on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171099>`__ 14110* `Move VSC extension into npm package dir <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170995>`__ 14111 14112pw_libc 14113------- 14114The initial implementation work continues. 14115 14116* `Pull in 'abort' <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/138518>`__ 14117* `Use .test convention <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171793>`__ 14118* `Use underscore prefixed variables <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171792>`__ 14119* `Add documentation for pw_libc_source_set <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171693>`__ 14120* `Pull in 'gmtime' <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137699>`__ 14121* `Fix printf for newer llvm-libc commits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170831>`__ 14122* `Fix llvm-libc after internal assert changes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168830>`__ 14123 14124pw_log 14125------ 14126The implementation work continues to enable an Android component to read logs 14127from a component running the ``pw_log_rpc`` service. 14128 14129* `Update Android.bp to generate RPC header files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169530>`__ 14130 (issue `#298693458 <https://issues.pigweed.dev/issues/298693458>`__) 14131 14132pw_log_string 14133------------- 14134* `Fix the default impl to handle zero length va args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169975>`__ 14135 14136pw_package 14137---------- 14138Mirrors are now being used for various third-party dependencies. 14139 14140* `Use mirror for zephyrproject-rtos/zephyr <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170355>`__ 14141 (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__) 14142* `Use Pigweed mirror for google/emboss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170356>`__ 14143 (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__) 14144* `Use mirror for raspberrypi/picotool <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170040>`__ 14145 (issue `#278914999 <https://issues.pigweed.dev/issues/278914999>`__) 14146 14147pw_polyfill 14148----------- 14149* `Increase __GNUC__ for __constinit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171150>`__ 14150 (issue `#300478321 <https://issues.pigweed.dev/issues/300478321>`__) 14151 14152pw_presubmit 14153------------ 14154A new JSON formatting check has been added. The missing newline check has been 14155made more robust. 14156 14157* `Add JSON formatter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171991>`__ 14158* `Better handling of missing newlines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172230>`__ 14159 (issue `#301315329 <https://issues.pigweed.dev/issues/301315329>`__) 14160* `Expand Bazel parser to tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171890>`__ 14161* `Remove now-unnecessary flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171670>`__ 14162 (issue `#271299438 <https://issues.pigweed.dev/issues/271299438>`__) 14163* `Additional functions for handling gn args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170594>`__ 14164* `Include bazel_build in full program <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170056>`__ 14165 14166pw_protobuf 14167----------- 14168* `Fix "Casting..." heading level <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171030>`__ 14169 14170.. _docs-changelog-pw_rpc-20230922: 14171 14172pw_rpc 14173------ 14174``pw::rpc::SynchronousCall`` now supports the use of custom response message 14175classes that set field callbacks in their constructor. See 14176:ref:`module-pw_rpc-client-sync-call-wrappers`. 14177 14178.. todo-check: disable 14179 14180* `Refer to bug in TODO and fix format <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172453>`__ 14181* `Support custom response messages in SynchronousCall <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170041>`__ 14182 (issue `#299920227 <https://issues.pigweed.dev/issues/299920227>`__) 14183* `Add fuzz tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/143474>`__ 14184 14185.. todo-check: enable 14186 14187pw_stream 14188--------- 14189* `Add Windows socket support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172413>`__ 14190 14191pw_string 14192--------- 14193* `Fix signed integer overflow <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171839>`__ 14194 14195pw_system 14196--------- 14197* `Add arm_none_eabi_gcc_support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158730>`__ 14198 14199pw_thread 14200--------- 14201* `Fix small typo in docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171750>`__ 14202 14203.. _docs-changelog-pw_tokenizer-20230922: 14204 14205pw_tokenizer 14206------------ 14207``pw::tokenizer::Detokenizer`` has new ``DetokenizeBase64Message()`` and 14208``DetokenizeBase64()`` methods for detokenizing Base64-encoded strings. 14209The new ``pw_tokenizer_EncodeInt()`` and ``pw_tokenizer_EncodeInt64()`` 14210functions in the C API make it easier to manually encode tokenized messages 14211with integers from C. 14212 14213* `C++ Base64 detokenization improvements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171675>`__ 14214* `Add base64 detokenizer handler <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165010>`__ 14215* `C functions for encoding arguments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169976>`__ 14216 14217pw_toolchain 14218------------ 14219``arm_gcc`` now supports Cortex-M33. 14220 14221* `Add missing objcopy tool to bazel toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171697>`__ 14222 (issue `#301004620 <https://issues.pigweed.dev/issues/301004620>`__) 14223* `Add cpu flags to asmopts as well <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171671>`__ 14224* `Add cortex-m33 support to arm_gcc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171237>`__ 14225 14226pw_toolchain_bazel 14227------------------ 14228* `Support ar opts in pw_toolchain_features <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171673>`__ 14229* `Add cortex-m7 constraint_value <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171071>`__ 14230 (issue `#300467616 <https://issues.pigweed.dev/issues/300467616>`__) 14231 14232.. _docs-changelog-pw_varint-20230922: 14233 14234pw_varint 14235--------- 14236The C encoding functions now have an output size argument, making them much 14237easier to use. There's a new macro for calculating the encoded size of an 14238integer in a C constant expression. Incremental versions of the encode and 14239decode functions have been exposed to support in-place encoding and decoding 14240with non-contiguous buffers. 14241 14242* `C API updates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170050>`__ 14243 14244pw_web 14245------ 14246The ``ProgressStats`` and ``ProgressCallback`` types are now exported. 14247Styling and scrolling behavior in the log viewer has been improved. 14248 14249* `Remove need for Buffer package in pw_hdlc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172377>`__ 14250* `Remove date-fns <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172371>`__ 14251* `Export ProgressStats, ProgressCallback types <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171707>`__ 14252* `Add back 'buffer' dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171891>`__ 14253* `NPM version bump to 0.0.13 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171110>`__ 14254* `Improve scrolling behavior <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171290>`__ 14255 (issue `#298097109 <https://issues.pigweed.dev/issues/298097109>`__) 14256* `Fix leading white spaces, scrollbar size, and filters in quotes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170811>`__ 14257* `NPM version bump to 0.0.12 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170597>`__ 14258* `Fix column sizing & toggling, update UI <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169591>`__ 14259* `Replace Map() with object in proto collection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170493>`__ 14260 14261pw_work_queue 14262------------- 14263* `Don't lock around work_notification_ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170450>`__ 14264* `Migrate API reference to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169830>`__ 14265 (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__) 14266 14267Build 14268===== 14269* `Update Android.bp <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171510>`__ 14270 14271Bazel 14272----- 14273* `Add platform-printing aspect <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/122974>`__ 14274* `Retire pigweed_config (part 2) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170058>`__ 14275 (issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__) 14276* `Retire pigweed_config (part 1) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168721>`__ 14277 (issue `#291106264 <https://issues.pigweed.dev/issues/291106264>`__) 14278* `Remove -Wno-private-header from copts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170951>`__ 14279 (issue `#240466562 <https://issues.pigweed.dev/issues/240466562>`__) 14280* `Remove bazelembedded dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170650>`__ 14281 (issue `#297239780 <https://issues.pigweed.dev/issues/297239780>`__) 14282* `Move cxxopts out of bazelrc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170639>`__ 14283 (issue `#269195628 <https://issues.pigweed.dev/issues/269195628>`__) 14284* `Use the same clang version as in GN <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170638>`__ 14285* `Arm gcc configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168192>`__ 14286 (issue `#297239780 <https://issues.pigweed.dev/issues/297239780>`__) 14287 14288Targets 14289======= 14290* `Fix pico_sdk elf2uf2 on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170770>`__ 14291* `Add pw_strict_host_clang_debug_dynamic_allocation tc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171674>`__ 14292 14293Docs 14294==== 14295The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code 14296review process. 14297 14298* `Add Doxygen @endcode guidance <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172470>`__ 14299* `Clean up remaining instances of code:: <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172050>`__ 14300 (issue `#300317685 <https://issues.pigweed.dev/issues/300317685>`__) 14301* `Document code review process <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171774>`__ 14302* `Add link to in-progress hardware targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171239>`__ 14303* `Fix link title for pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170670>`__ 14304* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170055>`__ 14305 (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__) 14306 14307SEEDs 14308===== 14309* `Update process document <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170390>`__ 14310* (SEED-0104) `Display Support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__ 14311* (SEED-0109) `Make link externally accessible <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170043>`__ 14312* (SEED-0110) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170038>`__ 14313* (SEED-0111) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171672>`__ 14314* (SEED-0112) `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168359>`__ 14315 14316Third party 14317=========== 14318* `Add public configs for FuzzTest deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169711>`__ 14319 14320third_party/fuchsia 14321------------------- 14322* `Copybara import <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171010>`__ 14323* `Update patch script and patch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170890>`__ 14324* `Update patch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170794>`__ 14325* `Support specifying the Fuchsia repo to use <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170170>`__ 14326 14327third_party/pico_sdk 14328-------------------- 14329* `Selectively disable elf2uf2 warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/171072>`__ 14330 (issue `#300474559 <https://issues.pigweed.dev/issues/300474559>`__) 14331* `Fix multicore source filename <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170330>`__ 14332 14333Miscellaneous 14334============= 14335.. todo-check: disable 14336 14337* `Use new TODO style <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/170730>`__ 14338* `Add toolchain team members <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172170>`__ 14339* `Fix double bootstrap.bat failures on Windows" <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/172410>`__ 14340 (issue `#300992566 <https://issues.pigweed.dev/issues/300992566>`__) 14341 14342.. todo-check: enable 14343 14344----------- 14345Sep 8, 2023 14346----------- 14347Highlights (Aug 25, 2023 to Sep 8, 2023): 14348 14349* SEED :ref:`seed-0107` has been approved! Pigweed will adopt a new sockets API as 14350 its primary networking abstraction. The sockets API will be backed by a new, 14351 lightweight embedded-focused network protocol stack inspired by TCP/IP. 14352* SEED :ref:`seed-0108` has also been approved! Coming soon, the new ``pw_emu`` 14353 module will make it easier to work with emulators. 14354 14355Active SEEDs 14356============ 14357Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): 14358 14359* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__ 14360* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__ 14361* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__ 14362* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__ 14363* `SEED-0109: Communication Buffers <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168357>`__ 14364 14365Modules 14366======= 14367 14368pw_assert 14369--------- 14370We fixed circular dependencies in Bazel. 14371 14372* `Remove placeholder target <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168844>`__ 14373* `Fix Bazel circular deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160794>`__ 14374 (issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__) 14375* `Introduce pw_assert_backend_impl <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168774>`__ 14376 (issue `#234877642 <https://issues.pigweed.dev/issues/234877642>`__) 14377 14378pw_bluetooth 14379------------ 14380We added :ref:`Emboss <module-pw_third_party_emboss>` definitions. 14381 14382* `Add SimplePairingCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169916>`__ 14383* `Add UserPasskeyRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169912>`__ 14384* `Add UserConfirmationRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169871>`__ 14385* `Use hci.LinkKey in LinkKeyNotificationEvent.link_key <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168858>`__ 14386* `Add IoCapabilityResponseEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168354>`__ 14387* `Add IoCapabilityRequestEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168353>`__ 14388* `Add EncryptionKeyRefreshCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168331>`__ 14389* `Add ExtendedInquiryResultEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168330>`__ 14390 14391pw_build 14392-------- 14393* `Force watch and default recipe names <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169911>`__ 14394 14395pw_build_mcuxpresso 14396------------------- 14397* `Output formatted bazel target <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169740>`__ 14398 14399pw_cpu_exception 14400---------------- 14401We added Bazel support. 14402 14403* `bazel build support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169733>`__ 14404 (issue `#242183021 <https://issues.pigweed.dev/issues/242183021>`__) 14405 14406pw_crypto 14407--------- 14408The complete ``pw_crypto`` API reference is now documented on :ref:`module-pw_crypto`. 14409 14410* `Add API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169572>`__ 14411 (issue `#299147635 <https://issues.pigweed.dev/issues/299147635>`__) 14412 14413pw_env_setup 14414------------ 14415Banners should not print correctly on Windows. 14416 14417* `Add i2c protos to python deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169231>`__ 14418* `Fix banner printing on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169172>`__ 14419 (issue `#289008307 <https://issues.pigweed.dev/issues/289008307>`__) 14420 14421pw_file 14422------- 14423* `Add pw_file python package <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168831>`__ 14424 14425pw_function 14426----------- 14427The :cpp:func:`pw::bind_member()` template is now exposed in the public API. 14428``bind_member()`` is useful for binding the ``this`` argument of a callable. 14429We added a section to the docs explaining :ref:`why pw::Function is not a 14430literal <module-pw_function-non-literal>`. 14431 14432* `Explain non-literal design rationale <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168777>`__ 14433* `Expose \`bind_member\` <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169123>`__ 14434 14435pw_fuzzer 14436--------- 14437We refactored ``pw_fuzzer`` logic to be more robust and expanded the 14438:ref:`module-pw_fuzzer-guides-reproducing_oss_fuzz_bugs` doc. 14439 14440* `Refactor OSS-Fuzz support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167348>`__ 14441 (issue `#56955 <https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56955>`__) 14442 14443pw_i2c 14444------ 14445* `Use new k{FieldName}MaxSize constants to get buffer size <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168913>`__ 14446 14447pw_kvs 14448------ 14449We are discouraging the use of the shorter macros because they collide with 14450Abseil's logging API. 14451 14452* `Remove usage of pw_log/shorter.h API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169920>`__ 14453 (issue `#299520256 <https://issues.pigweed.dev/issues/299520256>`__) 14454 14455pw_libc 14456------- 14457``snprintf()`` support was added. 14458 14459* `Import LLVM libc's snprintf <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137735>`__ 14460 14461pw_log_string 14462------------- 14463We added more detail to :ref:`module-pw_log_string`. 14464 14465* `Fix the default impl to handle zero length va args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169975>`__ 14466* `Provide more detail in the getting started docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168934>`__ 14467 (issue `#298124226 <https://issues.pigweed.dev/issues/298124226>`__) 14468 14469pw_log_zephyr 14470------------- 14471It's now possible to define ``pw_log_tokenized_HandleLog()`` outside of Pigweed 14472so that Zephyr projects have more flexibility around how they capture tokenized 14473logs. 14474 14475* `Split tokenize handler into its own config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168612>`__ 14476 14477pw_package 14478---------- 14479* `Handle failed cipd acl checks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168530>`__ 14480 14481pw_persistent_ram 14482----------------- 14483* `Add persistent_buffer flat_file_system_entry <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168832>`__ 14484 14485pw_presubmit 14486------------ 14487We added a reStructuredText formatter. 14488 14489* `Make builds_from_previous_iteration ints <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169721>`__ 14490 (issue `#299336222 <https://issues.pigweed.dev/issues/299336222>`__) 14491* `Move colorize_diff to tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168839>`__ 14492* `RST formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168541>`__ 14493 14494pw_protobuf 14495----------- 14496``max_size`` and ``max_count`` are now exposed in generated headers. 14497The new ``proto_message_field_props()`` helper function makes it easier to 14498iterate through a messages fields and properties. 14499 14500* `Expose max_size, max_count in generated header file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168973>`__ 14501 (issue `#297364973 <https://issues.pigweed.dev/issues/297364973>`__) 14502* `Introduce proto_message_field_props() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168972>`__ 14503* `Change PROTO_FIELD_PROPERTIES to a dict of classes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168971>`__ 14504* `Rename 'node' to 'message' in forward_declare() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168970>`__ 14505* `Simplify unnecessary Tuple return type <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168910>`__ 14506 14507pw_random 14508--------- 14509We're now auto-generating the ``XorShiftStarRng64`` API reference via Doxygen. 14510 14511* `Doxygenify xor_shift.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164510>`__ 14512 14513pw_rpc 14514------ 14515The new ``request_completion()`` method in Python enables you to send a 14516completion packet for server streaming calls. 14517 14518* `Add request_completion to ServerStreamingCall python API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168439>`__ 14519 14520pw_spi 14521------ 14522* `Fix Responder.SetCompletionHandler() signature <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169130>`__ 14523 14524pw_symbolizer 14525------------- 14526The ``LlvmSymbolizer`` Python class has a new ``close()`` method to 14527deterministically close the background process. 14528 14529* `LlvmSymbolizer tool improvement <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168863>`__ 14530 14531pw_sync 14532------- 14533We added :ref:`module-pw_sync-genericbasiclockable`. 14534 14535* `Add GenericBasicLockable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165930>`__ 14536 14537pw_system 14538--------- 14539``pw_system`` now supports different channels for primary and logging RPC. 14540 14541* `Multi-channel configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167158>`__ 14542 (issue `#297076185 <https://issues.pigweed.dev/issues/297076185>`__) 14543 14544pw_thread_freertos 14545------------------ 14546* `Add missing dep to library <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169239>`__ 14547 14548pw_tokenizer 14549------------ 14550We added :c:macro:`PW_TOKENIZE_FORMAT_STRING_ANY_ARG_COUNT` and 14551:c:macro:`PW_TOKENIZER_REPLACE_FORMAT_STRING`. We refactored the docs 14552so that you don't have to jump around the docs as much when learning about 14553key topics like tokenization and token databases. Database loads now happen 14554in a separate thread to avoid blocking the main thread. Change detection for 14555directory databases now works more as expected. The config API is now exposed 14556in the API reference. 14557 14558* `Remove some unused deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169573>`__ 14559* `Simplify implementing a custom tokenization macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169121>`__ 14560* `Refactor the docs to be task-focused <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169124>`__ 14561* `Reload database in dedicated thread <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168866>`__ 14562* `Combine duplicated docs sections <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168865>`__ 14563* `Support change detection for directory dbs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168630>`__ 14564* `Move config value check to .cc file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168615>`__ 14565 14566pw_unit_test 14567------------ 14568We added ``testing::Test::HasFailure()``, ``FRIEND_TEST``, and ``<<`` messages 14569to improve gTest compatibility. 14570 14571* `Add testing::Test::HasFailure() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168810>`__ 14572* `Add FRIEND_TEST <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169270>`__ 14573* `Allow <<-style messages in test expectations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168860>`__ 14574 14575pw_varint 14576--------- 14577``pw_varint`` now has a :ref:`C-only API <module-pw_varint-api-c>`. 14578 14579* `Add C-only implementation; cleanup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169122>`__ 14580 14581pw_web 14582------ 14583Logs can now be downloaded as plaintext. 14584 14585* `Fix TypeScript errors in Device files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169930>`__ 14586* `Json Log Source example <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169176>`__ 14587* `Enable downloading logs as plain text <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168130>`__ 14588* `Fix UI/state bugs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167911>`__ 14589* `NPM version bump to 0.0.11 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168591>`__ 14590* `Add basic bundling tests for log viewer bundle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168539>`__ 14591 14592Build 14593===== 14594 14595Bazel 14596----- 14597* `Fix alwayslink support in MacOS host_clang <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168614>`__ 14598 (issue `#297413805 <https://issues.pigweed.dev/issues/297413805>`__) 14599* `Fix lint issues after roll <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169611>`__ 14600 14601Docs 14602==== 14603* `Fix broken links <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169579>`__ 14604 (issue `#299181944 <https://issues.pigweed.dev/issues/299181944>`__) 14605* `Recommend enabling long file paths on Windows <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169578>`__ 14606* `Update Windows command for git hook <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168592>`__ 14607* `Fix main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168555>`__ 14608 (issue `#297384789 <https://issues.pigweed.dev/issues/297384789>`__) 14609* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168540>`__ 14610 (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__) 14611* `Use code-block:: instead of code:: everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168617>`__ 14612* `Add function signature line breaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168554>`__ 14613* `Cleanup indentation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168537>`__ 14614 14615SEEDs 14616===== 14617* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__ 14618 14619Third party 14620=========== 14621* `Add public configs for FuzzTest deps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169711>`__ 14622* `Reconfigure deps & add cflags to config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152691>`__ 14623 14624Miscellaneous 14625============= 14626* `Fix formatting with new clang version <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/169078>`__ 14627 14628mimxrt595_evk_freertos 14629---------------------- 14630* `Use config_assert helper <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160378>`__ 14631 14632------------ 14633Aug 25, 2023 14634------------ 14635Highlights (Aug 11, 2023 to Aug 25, 2023): 14636 14637* ``pw_tokenizer`` now has Rust support. 14638* The ``pw_web`` log viewer now has advanced filtering and a jump-to-bottom 14639 button. 14640* The ``run_tests()`` method of ``pw_unit_test`` now returns a new 14641 ``TestRecord`` dataclass which provides more detailed information 14642 about the test run. 14643* A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS 14644 has been added. 14645 14646Active SEEDs 14647============ 14648Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): 14649 14650* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__ 14651* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__ 14652* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__ 14653* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__ 14654* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__ 14655 14656Modules 14657======= 14658 14659pw_bloat 14660-------- 14661* `Fix typo in method name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166832>`__ 14662 14663pw_bluetooth 14664------------ 14665The :ref:`module-pw_third_party_emboss` files were refactored. 14666 14667* `Add SynchronousConnectionCompleteEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167862>`__ 14668* `Add all Emboss headers/deps to emboss_test & fix errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168355>`__ 14669* `Add InquiryResultWithRssiEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167859>`__ 14670* `Add DataBufferOverflowEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167858>`__ 14671* `Add LinkKeyNotificationEvent Emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167855>`__ 14672* `Add LinkKeyRequestEvent emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167349>`__ 14673* `Remove unused hci emboss files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167090>`__ 14674* `Add RoleChangeEvent emboss definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167230>`__ 14675* `Add missing test dependency <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167130>`__ 14676* `Add new hci subset files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166730>`__ 14677 14678pw_build 14679-------- 14680The ``pw_build`` docs were split up so that each build system has its own page 14681now. The new ``output_logs`` flag enables you to not output logs for ``pw_python_venv``. 14682 14683* `Handle read-only files when deleting venvs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167863>`__ 14684* `Split build system docs into separate pages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165071>`__ 14685* `Use pw_toolchain_clang_tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167671>`__ 14686* `Add missing pw_linker_script flag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167632>`__ 14687 (issue `#296928739 <https://issues.pigweed.dev/issues/296928739>`__) 14688* `Fix output_logs_ unused warning <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166991>`__ 14689 (issue `#295524695 <https://issues.pigweed.dev/issues/295524695>`__) 14690* `Don't include compile cmds when preprocessing ldscripts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166490>`__ 14691* `Add pw_python_venv.output_logs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165330>`__ 14692 (issue `#295524695 <https://issues.pigweed.dev/issues/295524695>`__) 14693* `Increase size of test linker script memory region <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164823>`__ 14694* `Add integration test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154553>`__ 14695 14696pw_cli 14697------ 14698* `Default change pw_protobuf default <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126806>`__ 14699 (issue `#266298474 <https://issues.pigweed.dev/issues/266298474>`__) 14700 14701pw_console 14702---------- 14703* `Update web viewer to use pigweedjs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162995>`__ 14704 14705pw_containers 14706------------- 14707* `Silence MSAN false positive in pw::Vector <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167111>`__ 14708 14709pw_docgen 14710--------- 14711Docs builds should be faster now because Sphinx has been configured to use 14712all available cores. 14713 14714* `Remove top nav bar <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168446>`__ 14715* `Parallelize Sphinx <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164738>`__ 14716 14717pw_env_setup 14718------------ 14719Sphinx was updated from v5.3.0 to v7.1.2. We switched back to the upstream Furo 14720theme and updated to v2023.8.19. The content of ``pigweed_environment.gni`` now 14721gets logged. There was an update to ensure that ``arm-none-eabi-gdb`` errors 14722propagate correctly. There is now a way to override Bazel build files for CIPD 14723repos. 14724 14725* `Upgrade sphinx and dependencies for docs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168431>`__ 14726* `Upgrade sphinx-design <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168339>`__ 14727* `Copy pigweed_environment.gni to logs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167850>`__ 14728* `arm-gdb: propagate errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165411>`__ 14729* `arm-gdb: exclude %VIRTUAL_ENV%\Scripts from search paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164370>`__ 14730* `Add ability to override bazel BUILD file for CIPD repos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165530>`__ 14731 14732pw_function 14733----------- 14734* `Rename template parameter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168334>`__ 14735 14736pw_fuzzer 14737--------- 14738* `Add test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154555>`__ 14739 14740pw_hdlc 14741------- 14742A new ``close()`` method was added to ``HdlcRpcClient`` to signal to the thread 14743to stop. 14744 14745* `Use explicit logger name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166591>`__ 14746* `Mitigate errors on Python background thread <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162712>`__ 14747 (issue `#293595266 <https://issues.pigweed.dev/issues/293595266>`__) 14748 14749pw_ide 14750------ 14751A new ``--install-editable`` flag was added to install Pigweed Python modules 14752in editable mode so that code changes are instantly realized. 14753 14754* `Add cmd to install Py packages as editable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163572>`__ 14755* `Make VSC extension run on older versions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167054>`__ 14756 14757pw_perf_test 14758------------ 14759* `Add test metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154554>`__ 14760 14761pw_presubmit 14762------------ 14763``pw_presubmit`` now has an ESLint check for linting and a Prettier check for 14764formatting JavaScript and TypeScript files. 14765 14766* `Add msan to OTHER_CHECKS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168325>`__ 14767 (issue `#234876100 <https://issues.pigweed.dev/issues/234876100>`__) 14768* `Upstream constraint file output fix <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166270>`__ 14769* `JavaScript and TypeScript lint check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165410>`__ 14770* `Apply TypeScript formatting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164825>`__ 14771* `Use prettier for JS and TS files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165390>`__ 14772 14773pw_rpc 14774------ 14775A ``request_completion()`` method was added to the ``ServerStreamingCall`` 14776Python API. A bug was fixed related to encoding failures when dynamic buffers 14777are enabled. 14778 14779* `Add request_completion to ServerStreamingCall python API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168439>`__ 14780* `Various small enhancements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167162>`__ 14781* `Remove deprecated method from Service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165510>`__ 14782* `Prevent encoding failure when dynamic buffer enabled <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166833>`__ 14783 (issue `#269633514 <https://issues.pigweed.dev/issues/269633514>`__) 14784 14785pw_rpc_transport 14786---------------- 14787* `Add simple_framing Soong rule <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165350>`__ 14788 14789pw_rust 14790------- 14791* `Update rules_rust to 0.26.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166831>`__ 14792 14793pw_stm32cube_build 14794------------------ 14795* `Windows path fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167865>`__ 14796 14797pw_stream 14798--------- 14799Error codes were updated to be more accurate and descriptive. 14800 14801* `Use more appropriate error codes for Cursor <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164592>`__ 14802 14803pw_stream_uart_linux 14804-------------------- 14805Common baud rates such as ``9600``, ``19200``, and so on are now supported. 14806 14807* `Add support for baud rates other than 115200 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165070>`__ 14808 14809pw_sync 14810------- 14811Tests were added to make sure that ``pw::sync::Borrowable`` works with lock 14812annotations. 14813 14814* `Test Borrowable with Mutex, TimedMutex, and InterruptSpinLock <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153575>`__ 14815 (issue `#261078330 <https://issues.pigweed.dev/issues/261078330>`__) 14816 14817pw_system 14818--------- 14819The ``pw_system.device.Device`` Python class can now be used as a 14820`context manager <https://realpython.com/python-with-statement/>`_. 14821 14822* `Make pw_system.device.Device a context manager <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163410>`__ 14823 14824pw_tokenizer 14825------------ 14826``pw_tokenizer`` now has Rust support. The ``pw_tokenizer`` C++ config API 14827is now documented at :ref:`module-pw_tokenizer-api-configuration` and 14828the C++ token database API is now documented at 14829:ref:`module-pw_tokenizer-api-token-databases`. When creating a token 14830database, parent directories are now automatically created if they don't 14831already exist. ``PrefixedMessageDecoder`` has been renamed to 14832``NestedMessageDecoder``. 14833 14834* `Move config value check to .cc file <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168615>`__ 14835* `Create parent directory as needed <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168510>`__ 14836* `Rework pw_tokenizer.detokenize.PrefixedMessageDecoder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167150>`__ 14837* `Minor binary database improvements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167053>`__ 14838* `Update binary DB docs and convert to Doxygen <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163570>`__ 14839* `Deprecate tokenizer buffer size config <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163257>`__ 14840* `Fix instance of -Wconstant-logical-operand <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166731>`__ 14841* `Add Rust support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/145389>`__ 14842 14843pw_toolchain 14844------------ 14845A new Linux host toolchain built using ``pw_toolchain_bazel`` has been 14846started. CIPD-provided Rust toolchains are now being used. 14847 14848* `Link against system libraries using libs not ldflags <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151050>`__ 14849* `Use %package% for cxx_builtin_include_directories <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168340>`__ 14850* `Extend documentation for tool prefixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167633>`__ 14851* `Add Linux host toolchain <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164824>`__ 14852 (issue `#269204725 <https://issues.pigweed.dev/issues/269204725>`__) 14853* `Use CIPD provided Rust toolchains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166852>`__ 14854* `Switch macOS to use builtin_sysroot <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165414>`__ 14855* `Add cmake helpers for getting clang compile+link flags <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163811>`__ 14856 14857pw_unit_test 14858------------ 14859``run_tests()`` now returns the new ``TestRecord`` dataclass which provides 14860more detailed information about the test run. ``SetUpTestSuit()`` and 14861``TearDownTestSuite()`` were added to improve GoogleTest compatibility. 14862 14863* `Add TestRecord of Test Results <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166273>`__ 14864* `Reset static value before running tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166590>`__ 14865 (issue `#296157327 <https://issues.pigweed.dev/issues/296157327>`__) 14866* `Add per-fixture setup/teardown <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165210>`__ 14867 14868pw_web 14869------ 14870Log viewers are now drawn every 100 milliseconds at most to prevent crashes 14871when many logs arrive simultaneously. The log viewer now has a jump-to-bottom 14872button. Advanced filtering has been added. 14873 14874* `NPM version bump to 0.0.11 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168591>`__ 14875* `Add basic bundling tests for log viewer bundle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168539>`__ 14876* `Limit LogViewer redraws to 100ms <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167852>`__ 14877* `Add jump to bottom button, fix UI bugs and fix state bugs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164272>`__ 14878* `Implement advanced filtering <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162070>`__ 14879* `Remove object-path dependency from Device API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165013>`__ 14880* `Log viewer toolbar button toggle style <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165412>`__ 14881* `Log-viewer line wrap toggle <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164010>`__ 14882 14883Targets 14884======= 14885 14886targets 14887------- 14888A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS 14889has been added. 14890 14891* `Ambiq Apollo4 support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/129490>`__ 14892 14893Language support 14894================ 14895 14896Python 14897------ 14898* `Upgrade mypy to 1.5.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166272>`__ 14899* `Upgrade pylint to 2.17.5 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166271>`__ 14900 14901Docs 14902==== 14903Doxygen-generated function signatures now present each argument on a separate 14904line. Tabbed content looks visually different than before. 14905 14906* `Use code-block:: instead of code:: everywhere <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168617>`__ 14907* `Add function signature line breaks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168554>`__ 14908* `Cleanup indentation <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168537>`__ 14909* `Remove unused myst-parser <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168392>`__ 14910* `Use sphinx-design for tabbed content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168341>`__ 14911* `Update changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164810>`__ 14912 14913SEEDs 14914===== 14915:ref:`SEED-0107 (Pigweed Communications) <seed-0107>` was accepted and 14916SEED-0109 (Communication Buffers) was started. 14917 14918* `Update protobuf SEED title in index <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/166470>`__ 14919* `Update status to Accepted <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167770>`__ 14920* `Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__ 14921* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/168358>`__ 14922 14923Miscellaneous 14924============= 14925 14926Build 14927----- 14928* `Make it possible to run MSAN in GN <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167112>`__ 14929 14930soong 14931----- 14932* `Remove host/vendor properties from defaults <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/165270>`__ 14933 14934------------ 14935Aug 11, 2023 14936------------ 14937Highlights (Jul 27, 2023 to Aug 11, 2023): 14938 14939* We're prototyping a Pigweed extension for VS Code. Learn more at 14940 :ref:`module-pw_ide-guide-vscode`. 14941* We added ``pw_toolchain_bazel``, a new LLVM toolchain for building with 14942 Bazel on macOS. 14943* We are working on many docs improvements in parallel: auto-generating ``rustdocs`` 14944 for modules that support Rust 14945 (`example <https://pigweed.dev/rustdoc/pw_varint/>`_), refactoring the 14946 :ref:`module-pw_tokenizer` docs, migrating API references to Doxygen, 14947 fixing `longstanding docs site UI issues <https://issues.pigweed.dev/issues/292273650>`_, 14948 and more. 14949 14950Active SEEDs 14951============ 14952Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): 14953 14954* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__ 14955* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__ 14956* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__ 14957* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__ 14958* `SEED-0107: Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__ 14959* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__ 14960 14961Modules 14962======= 14963 14964pw_alignment 14965------------ 14966* `Fix typos <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163250>`__ 14967 14968pw_analog 14969--------- 14970Long-term, all of our API references will be generated from header comments via 14971Doxygen. Short-term, we are starting to show header files directly within the 14972docs as a stopgap solution for helping Pigweed users get a sense of each 14973module's API. See :ref:`module-pw_analog` for an example. 14974 14975* `Include header files as stopgap API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161491>`__ 14976 (issue `#293895312 <https://issues.pigweed.dev/issues/293895312>`__) 14977 14978pw_base64 14979--------- 14980We finished migrating the ``pw_random`` API reference to Doxygen. 14981 14982* `Finish Doxygenifying the API reference <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162911>`__ 14983* `Doxygenify the Encode() functions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156532>`__ 14984 14985pw_boot_cortex_m 14986---------------- 14987* `Allow explict target name <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159790>`__ 14988 14989pw_build 14990-------- 14991We added a ``log_build_steps`` option to ``ProjectBuilder`` that enables you 14992to log all build step lines to your screen and logfiles. 14993 14994* `Handle ProcessLookupError exceptions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163710>`__ 14995* `ProjectBuilder log build steps option <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162931>`__ 14996* `Fix progress bar clear <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160791>`__ 14997 14998pw_cli 14999------ 15000We polished tab completion support. 15001 15002* `Zsh shell completion autoload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160796>`__ 15003* `Make pw_cli tab completion reusable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160379>`__ 15004 15005pw_console 15006---------- 15007We made copy-to-clipboard functionality more robust when running ``pw_console`` 15008over SSH. 15009 15010* `Set clipboard fallback methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150238>`__ 15011 15012pw_containers 15013------------- 15014We updated :cpp:class:`filteredview` constructors and migrated the 15015``FilteredView`` API reference to Doxygen. 15016 15017* `Doxygenify pw::containers::FilteredView <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160373>`__ 15018* `Support copying the FilteredView predicate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160372>`__ 15019 15020pw_docgen 15021--------- 15022At the top of pages like :ref:`module-pw_tokenizer` there is a UI widget that 15023provides information about the module. Previously, this UI widget had links 15024to all the module's docs. This is no longer needed now that the site nav 15025automatically scrolls to the page you're on, which allows you to see the 15026module's other docs. 15027 15028* `Remove the navbar from the module docs header widget <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162991>`__ 15029 (issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__) 15030 15031pw_env_setup 15032------------ 15033We made Python setup more flexible. 15034 15035* `Add clang_next.json <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163810>`__ 15036 (issue `#295020927 <https://issues.pigweed.dev/issues/295020927>`__) 15037* `Pip installs from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162093>`__ 15038* `Include Python packages from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162073>`__ 15039* `Remove unused pep517 package <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162072>`__ 15040* `Use more available Python 3.9 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161492>`__ 15041 (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__) 15042* `Update Bazel to 2@6.3.0.6 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161010>`__ 15043 15044pw_ide 15045------ 15046We are prototyping a ``pw_ide`` extension for VS Code. 15047 15048* `Restore stable clangd settings link <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164011>`__ 15049* `Add command to install prototype extension <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162412>`__ 15050* `Prototype VS Code extension <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/151653>`__ 15051 15052pw_interrupt 15053------------ 15054We added a backend for Xtensa processors. 15055 15056* `Add backend for xtensa processors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160031>`__ 15057* `Tidy up target compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160650>`__ 15058 (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__) 15059 15060pw_log_zephyr 15061------------- 15062We encoded tokenized messages to ``pw::InlineString`` so that the output is 15063always null-terminated. 15064 15065* `Fix null termination of Base64 messages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163650>`__ 15066 15067pw_presubmit 15068------------ 15069We increased 15070`LUCI <https://chromium.googlesource.com/infra/infra/+/main/doc/users/services/about_luci.md>`_ 15071support and updated the ``#pragma once`` check to look for matching ``#ifndef`` 15072and ``#define`` lines. 15073 15074* `Fix overeager format_code matches <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162611>`__ 15075* `Exclude vsix files from copyright <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163011>`__ 15076* `Clarify unicode errors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162993>`__ 15077* `Upload coverage json to zoss <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162090>`__ 15078 (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__) 15079* `Add to context tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162311>`__ 15080* `Add patchset to LuciTrigger <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162310>`__ 15081* `Add helpers to LuciContext <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162091>`__ 15082* `Update Python vendor wheel dir <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161514>`__ 15083* `Add summaries to guard checks <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161391>`__ 15084 (issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__) 15085* `Copy Python packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161490>`__ 15086* `Add ifndef/define check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152173>`__ 15087 (issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__) 15088 15089pw_protobuf_compiler 15090-------------------- 15091We continued work to ensure that the Python environment in Bazel is hermetic. 15092 15093* `Use hermetic protoc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162913>`__ 15094 (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__) 15095* `Move reference to python interpreter <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162932>`__ 15096 (issue `#294414535 <https://issues.pigweed.dev/issues/294414535>`__) 15097* `Make nanopb hermetic <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162313>`__ 15098 (issue `#293792686 <https://issues.pigweed.dev/issues/293792686>`__) 15099 15100pw_python 15101--------- 15102We fixed bugs related to ``requirements.txt`` files not getting found. 15103 15104* `setup.sh requirements arg fix path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164430>`__ 15105* `setup.sh arg spaces bug <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163510>`__ 15106 15107pw_random 15108--------- 15109We continued migrating the ``pw_random`` API reference to Doxygen. 15110 15111* `Doxygenify random.h <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163730>`__ 15112 15113pw_rpc 15114------ 15115We made the Java client more robust. 15116 15117* `Java client backwards compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164515>`__ 15118* `Avoid reflection in Java client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162930>`__ 15119 (issue `#293361955 <https://issues.pigweed.dev/issues/293361955>`__) 15120* `Use hermetic protoc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162913>`__ 15121 (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__) 15122* `Improve Java client error message for missing parser() method <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159471>`__ 15123 15124pw_spi 15125------ 15126We continued work on implementing a SPI responder interface. 15127 15128* `Responder interface definition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159230>`__ 15129 15130pw_status 15131--------- 15132We fixed the nesting on a documentation section. 15133 15134* `Promote Zephyr heading to h2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160730>`__ 15135 15136pw_stream 15137--------- 15138We added ``remaining()``, ``len()``, and ``position()`` methods to the 15139``Cursor`` wrapping in Rust. 15140 15141* `Add infalible methods to Rust Cursor <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164271>`__ 15142 15143pw_stream_shmem_mcuxpresso 15144-------------------------- 15145We added the :ref:`module-pw_stream_shmem_mcuxpresso` backend for ``pw_stream``. 15146 15147* `Add shared memory stream for NXP MCU cores <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160831>`__ 15148 (issue `#294406620 <https://issues.pigweed.dev/issues/294406620>`__) 15149 15150pw_sync_freertos 15151---------------- 15152* `Fix ODR violation in tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160795>`__ 15153 15154pw_thread 15155--------- 15156* `Fix test_thread_context typo and presubmit <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162770>`__ 15157 15158pw_tokenizer 15159------------ 15160We added support for unaligned token databases and continued the 15161:ref:`seed-0102` update of the ``pw_tokenizer`` docs. 15162 15163* `Separate API reference and how-to guide content <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163256>`__ 15164* `Polish the sales pitch <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163571>`__ 15165* `Support unaligned databases <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163333>`__ 15166* `Move the basic overview into getting started <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163253>`__ 15167* `Move the case study to guides.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163255>`__ 15168* `Restore info that get lost during the SEED-0102 migration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163330>`__ 15169* `Use the same tagline on every doc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163332>`__ 15170* `Replace savings table with flowchart <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158893>`__ 15171* `Ignore string nonliteral warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162092>`__ 15172 15173pw_toolchain 15174------------ 15175We fixed a regression that made it harder to use Pigweed in an environment where 15176``pw_env_setup`` has not been run and fixed a bug related to incorrect Clang linking. 15177 15178* `Optionally depend on pw_env_setup_CIPD_PIGWEED <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163790>`__ 15179 (issue `#294886611 <https://issues.pigweed.dev/issues/294886611>`__) 15180* `Prefer start-group over whole-archive <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150610>`__ 15181 (issue `#285357895 <https://issues.pigweed.dev/issues/285357895>`__) 15182 15183pw_toolchain_bazel 15184------------------ 15185We added a an LLVM toolchain for building with Bazel on macOS. 15186 15187* `LLVM toolchain for macOS Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157634>`__ 15188 (issue `#291795899 <https://issues.pigweed.dev/issues/291795899>`__) 15189 15190pw_trace_tokenized 15191------------------ 15192We made tracing more robust. 15193 15194* `Replace trace callback singletons with dep injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156912>`__ 15195 15196pw_transfer 15197----------- 15198We made integration tests more robust. 15199 15200* `Fix use-after-destroy in integration test client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163252>`__ 15201 (issue `#294101325 <https://issues.pigweed.dev/issues/294101325>`__) 15202* `Fix legacy binary path <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162914>`__ 15203 (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__) 15204* `Mark linux-only Bazel tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162094>`__ 15205 (issue `#294101325 <https://issues.pigweed.dev/issues/294101325>`__) 15206 15207pw_web 15208------ 15209We added support for storing user preferences in ``localStorage``. 15210 15211* `Fix TypeScript warnings in web_serial_transport.ts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/164591>`__ 15212* `Add state for view number, search string, and columns visible <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161390>`__ 15213* `Fix TypeScript warnings in transfer.ts <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162411>`__ 15214* `Fix TypeScript warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162095>`__ 15215* `Remove dependency on 'crc' and 'buffer' NPM packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160830>`__ 15216 15217Build 15218===== 15219We made the Bazel system more hermetic and fixed an error related to not 15220finding the Java runtime. 15221 15222* `Do not allow PATH leakage into Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162610>`__ 15223 (issue `#294284927 <https://issues.pigweed.dev/issues/294284927>`__) 15224* `Use remote Java runtime for Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160793>`__ 15225 (issue `#291791485 <https://issues.pigweed.dev/issues/291791485>`__) 15226 15227Docs 15228==== 15229We created a new doc that explains how to improve Pigweed 15230support in various IDEs. We standardized how we present call-to-action buttons 15231on module homepages. See :ref:`module-pw_tokenizer` for an example. We fixed a 15232longstanding UI issue around the site nav not scrolling to the page that you're 15233currently on. 15234 15235* `Add call-to-action buttons <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163331>`__ 15236* `Update module items in site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163251>`__ 15237* `Add editor support doc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/110261>`__ 15238* `Delay nav scrolling to fix main content scrolling <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162990>`__ 15239 (issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__) 15240* `Suggest editor configuration <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162710>`__ 15241* `Scroll to the current page in the site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162410>`__ 15242 (issue `#292273650 <https://issues.pigweed.dev/issues/292273650>`__) 15243* `Add changelog <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160170>`__ 15244 (issue `#292247409 <https://issues.pigweed.dev/issues/292247409>`__) 15245 15246SEEDs 15247===== 15248We created a UI widget to standardize how we present SEED status information. 15249See the start of :ref:`seed-0102` for an example. 15250 15251* `Create Sphinx directive for metadata <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/161517>`__ 15252 15253Third party 15254=========== 15255 15256third_party/mbedtls 15257------------------- 15258* `3.3.0 compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160790>`__ 15259 (issue `#293612945 <https://issues.pigweed.dev/issues/293612945>`__) 15260 15261Miscellaneous 15262============= 15263 15264OWNERS 15265------ 15266* `Add kayce@ <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/163254>`__ 15267 15268------------ 15269Jul 28, 2023 15270------------ 15271Highlights (Jul 13, 2023 to Jul 28, 2023): 15272 15273* `SEED-0107: Pigweed Communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__, 15274 a proposal for an embedded-focused network protocol stack, is under 15275 discussion. Please review and provide your input! 15276* ``pw_cli`` now supports tab completion! 15277* A new UART Linux backend for ``pw_stream`` was added (``pw_stream_uart_linux``). 15278 15279Active SEEDs 15280============ 15281* `SEED-0103: pw_protobuf Object Model <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/133971>`__ 15282* `SEED-0104: display support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150793>`__ 15283* `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154190>`__ 15284* `SEED-0106: Project Template <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155430>`__ 15285* `SEED-0107: Pigweed communications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157090>`__ 15286* `SEED-0108: Emulators Frontend <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158190>`__ 15287 15288Modules 15289======= 15290 15291pw_allocator 15292------------ 15293We started migrating the ``pw_allocator`` API reference to Doxygen. 15294 15295* `Doxygenify the freelist chunk methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155395>`__ 15296 15297pw_async 15298-------- 15299We increased Bazel support. 15300 15301* `Fill in bazel build rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156911>`__ 15302 15303pw_async_basic 15304-------------- 15305We reduced logging noisiness. 15306 15307* `Remove debug logging <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158193>`__ 15308 15309pw_base64 15310--------- 15311We continued migrating the ``pw_base64`` API reference to Doxygen. 15312 15313* `Doxygenify MaxDecodedSize() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157091>`__ 15314 15315pw_bloat 15316-------- 15317We improved the performance of label creation. One benchmark moved from 120 15318seconds to 0.02 seconds! 15319 15320* `Cache and optimize label production <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159474>`__ 15321 15322pw_bluetooth 15323------------ 15324Support for 3 events was added. 15325 15326* `Add 3 Event packets & format hci.emb <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157663>`__ 15327 15328pw_build 15329-------- 15330* `Fix progress bar clear <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160791>`__ 15331* `Upstream build script fixes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159473>`__ 15332* `Add pw_test_info <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154551>`__ 15333* `Upstream build script & presubmit runner <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/137130>`__ 15334* `pw_watch: Redraw interval and bazel steps <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159490>`__ 15335* `Avoid extra newlines for docs in generate_3p_gn <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150233>`__ 15336* `pip install GN args <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155270>`__ 15337 (issue `#240701682 <https://issues.pigweed.dev/issues/240701682>`__) 15338* `pw_python_venv generate_hashes option <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157630>`__ 15339 (issue `#292098416 <https://issues.pigweed.dev/issues/292098416>`__) 15340 15341pw_build_mcuxpresso 15342------------------- 15343Some H3 elements in the ``pw_build_mcuxpresso`` docs were being incorrectly 15344rendered as H2. 15345 15346* `Fix doc headings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155570>`__ 15347 15348pw_chrono_freertos 15349------------------ 15350We investigated what appeared to be a race condition but turned out to be an 15351unreliable FreeRTOS variable. 15352 15353* `Update SystemTimer comments <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159231>`__ 15354 (issue `#291346908 <https://issues.pigweed.dev/issues/291346908>`__) 15355* `Remove false callback precondition <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156091>`__ 15356 (issue `#291346908 <https://issues.pigweed.dev/issues/291346908>`__) 15357 15358pw_cli 15359------ 15360``pw_cli`` now supports tab completion! 15361 15362* `Zsh shell completion autoload <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160796>`__ 15363* `Make pw_cli tab completion reusable <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160379>`__ 15364* `Print tab completions for pw commands <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160032>`__ 15365* `Fix logging msec timestamp format <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159930>`__ 15366 15367pw_console 15368---------- 15369Communication errors are now handled more gracefully. 15370 15371* `Detect comms errors in Python <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155814>`__ 15372 15373pw_containers 15374------------- 15375The flat map implementation and docs have been improved. 15376 15377* `Doxygenify pw::containers::FilteredView <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160373>`__ 15378* `Support copying the FilteredView predicate <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160372>`__ 15379* `Improve FlatMap algorithm and filtered_view support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156652>`__ 15380* `Improve FlatMap doc example <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156651>`__ 15381* `Update FlatMap doc example so it compiles <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156650>`__ 15382 15383pw_digital_io 15384------------- 15385We continued migrating the API reference to Doxygen. An RPC service was added. 15386 15387* `Doxygenify the interrupt handler methods <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154193>`__ 15388* `Doxygenify Enable() and Disable() <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155817>`__ 15389* `Add digital_io rpc service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154974>`__ 15390 15391pw_digital_io_mcuxpresso 15392------------------------ 15393We continued migrating the API reference to Doxygen. Support for a new RPC 15394service was added. 15395 15396* `Remove unneeded constraints <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155394>`__ 15397 15398pw_docgen 15399--------- 15400Support for auto-linking to Rust docs (when available) was added. We also 15401explained how to debug Pigweed's Sphinx extensions. 15402 15403* `Add rustdoc linking support to pigweed-module tag <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159292>`__ 15404* `Add extension debugging instructions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156090>`__ 15405 15406pw_env_setup 15407------------ 15408There were lots of updates around how the Pigweed environment uses Python. 15409 15410* `pw_build: Disable pip version check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160551>`__ 15411* `Add docstrings to visitors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159131>`__ 15412* `Sort pigweed_environment.gni lines <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158892>`__ 15413* `Mac and Windows Python requirements <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158912>`__ 15414 (issue `#292098416 <https://issues.pigweed.dev/issues/292098416>`__) 15415* `Add more Python versions <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158891>`__ 15416 (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__) 15417* `Remove python.json from Bazel CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158911>`__ 15418 (issue `#292585791 <https://issues.pigweed.dev/issues/292585791>`__) 15419* `Redirect variables from empty dirs <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158890>`__ 15420 (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__) 15421* `Split Python constraints per OS <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157657>`__ 15422 (issue `#292278707 <https://issues.pigweed.dev/issues/292278707>`__) 15423* `Add --additional-cipd-file argument <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158170>`__ 15424 (issue `#292280529 <https://issues.pigweed.dev/issues/292280529>`__) 15425* `Upgrade Python cryptography to 41.0.2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157654>`__ 15426* `Upgrade ipython to 8.12.2 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157653>`__ 15427* `Upgrade PyYAML to 6.0.1 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157652>`__ 15428* `Add Python constraints with hashes <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153470>`__ 15429 (issue `#287302102 <https://issues.pigweed.dev/issues/287302102>`__) 15430* `Bump pip and pip-tools <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156470>`__ 15431* `Add coverage utilities <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155810>`__ 15432 (issue `#279161371 <https://issues.pigweed.dev/issues/279161371>`__) 15433 15434pw_fuzzer 15435--------- 15436A fuzzer example was updated to more closely follow Pigweed code conventions. 15437 15438* `Update fuzzers to use Pigweed domains <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/148337>`__ 15439 15440pw_hdlc 15441------- 15442Communication errors are now handled more gracefully. 15443 15444* `Detect comms errors in Python <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155814>`__ 15445* `Add target to Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157651>`__ 15446 15447pw_i2c 15448------ 15449An RPC service was added. Docs and code comments were updated to use ``responder`` 15450and ``initiator`` terminology consistently. 15451 15452* `Standardize naming on initiator/responder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159132>`__ 15453* `Add i2c rpc service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155250>`__ 15454 15455pw_i2c_mcuxpresso 15456----------------- 15457* `Allow for static initialization of initiator <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155790>`__ 15458* `Add test to ensure compilation of module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155390>`__ 15459 15460pw_ide 15461------ 15462* `Support multiple comp DB search paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/144210>`__ 15463 (issue `#280363633 <https://issues.pigweed.dev/issues/280363633>`__) 15464 15465pw_interrupt 15466------------ 15467Work continued on how facade backend selection works in Bazel. 15468 15469* `Add backend for xtensa processors <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160031>`__ 15470* `Tidy up target compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160650>`__ 15471 (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__) 15472* `Remove cpu-based backend selection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160380>`__ 15473 (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__) 15474* `Add backend constraint setting <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160371>`__ 15475 (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__) 15476* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154500>`__ 15477 (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__) 15478 15479pw_log_rpc 15480---------- 15481A docs section was added that explains how ``pw_log``, ``pw_log_tokenized``, 15482and ``pw_log_rpc`` interact with each other. 15483 15484* `Explain relation to pw_log and pw_log_tokenized <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157231>`__ 15485 15486pw_package 15487---------- 15488Raspberry Pi Pico and Zephyr support improved. 15489 15490* `Add picotool package installer <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155791>`__ 15491* `Handle windows Zephyr SDK setup <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157030>`__ 15492* `Run Zephyr SDK setup.sh after syncing from CIPD <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156530>`__ 15493 15494pw_perf_test 15495------------ 15496* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154498>`__ 15497 (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__) 15498 15499pw_presubmit 15500------------ 15501* `Add ifndef/define check <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/152173>`__ 15502 (issue `#287529705 <https://issues.pigweed.dev/issues/287529705>`__) 15503* `Remove deprecated gn_docs_build step <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159291>`__ 15504* `Fix issues with running docs_build twice <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159290>`__ 15505* `Add Rust docs to docs site <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157656>`__ 15506 15507pw_protobuf_compiler 15508-------------------- 15509* `Disable legacy namespace <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157232>`__ 15510* `Transition to our own proto compiler rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157033>`__ 15511 (issue `#234874064 <https://issues.pigweed.dev/issues/234874064>`__) 15512* `Allow external usage of macros <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155432>`__ 15513 15514pw_ring_buffer 15515-------------- 15516``pw_ring_buffer`` now builds with ``-Wconversion`` enabled. 15517 15518* `Conversion warning cleanups <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157430>`__ 15519 (issue `#259746255 <https://issues.pigweed.dev/issues/259746255>`__) 15520 15521pw_rpc 15522------ 15523* `Create client call hook in Python client <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157870>`__ 15524* `Provide way to populate response callbacks during tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156670>`__ 15525* `Add Soong rule for pwpb echo service <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156270>`__ 15526 15527pw_rpc_transport 15528---------------- 15529* `Add more Soong rules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155035>`__ 15530 15531pw_rust 15532------- 15533We are preparing pigweed.dev to automatically link to auto-generated 15534Rust module documentation when available. 15535 15536* `Add combined Rust doc support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157632>`__ 15537* `Update @rust_crates sha <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155051>`__ 15538 15539pw_spi 15540------ 15541We updated docs and code comments to use ``initiator`` and ``responder`` 15542terminology consistently. 15543 15544* `Standardize naming on initiator/responder <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159132>`__ 15545 15546pw_status 15547--------- 15548* `Add Clone and Copy to Rust Error enum <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157093>`__ 15549 15550pw_stream 15551--------- 15552We continued work on Rust support. 15553 15554* `Fix Doxygen typo <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154732>`__ 15555* `Add read_exact() an write_all() to Rust Read and Write traits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157094>`__ 15556* `Clean up rustdoc warnings <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157092>`__ 15557* `Add Rust varint reading and writing support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156451>`__ 15558* `Refactor Rust cursor to reduce monomorphization <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155391>`__ 15559* `Add Rust integer reading support <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155053>`__ 15560* `Move Rust Cursor to it's own sub-module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155052>`__ 15561 15562pw_stream_uart_linux 15563-------------------- 15564A new UART Linux backend for ``pw_stream`` was added. 15565 15566* `Add stream for UART on Linux <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156910>`__ 15567 15568pw_sync 15569------- 15570C++ lock traits were added and used. 15571 15572* `Improve Borrowable lock traits and annotations <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153573>`__ 15573 (issue `#261078330 <https://issues.pigweed.dev/issues/261078330>`__) 15574* `Add lock traits <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/153572>`__ 15575 15576pw_sync_freertos 15577---------------- 15578* `Fix ODR violation in tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160795>`__ 15579 15580pw_sys_io 15581--------- 15582* `Add android to alias as host system <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157871>`__ 15583 (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__) 15584* `Add chromiumos to alias as host system <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155811>`__ 15585 (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__) 15586 15587pw_system 15588--------- 15589* `Update IPython init API <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157872>`__ 15590* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154497>`__ 15591 (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__) 15592 15593pw_tokenizer 15594------------ 15595We refactored the ``pw_tokenizer`` docs to adhere to :ref:`seed-0102`. 15596 15597* `Update tagline, restore missing info, move sections <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158192>`__ 15598* `Migrate the proto docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157655>`__ 15599* `Remove stub sections and add guides link (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157631>`__ 15600* `Migrate the custom macro example (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157032>`__ 15601* `Migrate the Base64 docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156531>`__ 15602* `Migrate token collision docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155818>`__ 15603* `Migrate detokenization docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155815>`__ 15604* `Migrate masking docs (SEED-0102) <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155812>`__ 15605 15606pw_toolchain 15607------------ 15608The build system was modified to use relative paths to avoid unintentionally 15609relying on the path environment variable. Map file generation is now optional 15610to avoid generating potentially large map files when they're not needed. 15611 15612* `Test trivially destructible class <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159232>`__ 15613* `Make tools use relative paths <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159130>`__ 15614 (issue `#290848929 <https://issues.pigweed.dev/issues/290848929>`__) 15615* `Support conditionally creating mapfiles <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157431>`__ 15616 15617pw_trace_tokenized 15618------------------ 15619* `Replace singletons with dependency injection <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155813>`__ 15620* `Remove redundant Bazel targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154499>`__ 15621 (issue `#290359233 <https://issues.pigweed.dev/issues/290359233>`__) 15622 15623pw_unit_test 15624------------ 15625* `Update metadata test type for unit tests <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/154550>`__ 15626 15627pw_varint 15628--------- 15629* `Update Rust API to return number of bytes written <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156450>`__ 15630 15631pw_watch 15632-------- 15633We fixed an issue where builds were getting triggered when files were opened 15634or closed without modication. 15635 15636* `Trigger build only on file modifications <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157633>`__ 15637 15638pw_web 15639------ 15640* `Remove dependency on 'crc' and 'buffer' NPM packages <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160830>`__ 15641* `Update theme token values and usage <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155970>`__ 15642* `Add disconnect() method to WebSerialTransport <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156471>`__ 15643* `Add docs section for log viewer component <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155050>`__ 15644 15645Build 15646===== 15647 15648bazel 15649----- 15650* `Add host_backend_alias macro <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160550>`__ 15651 (issue `#272090220 <https://issues.pigweed.dev/issues/272090220>`__) 15652* `Fix missing deps in some modules <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160376>`__ 15653* `Support user bazelrc files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160030>`__ 15654* `Update rules_python to 0.24.0 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158913>`__ 15655 (issue `#266950138 <https://issues.pigweed.dev/issues/266950138>`__) 15656 15657build 15658----- 15659* `Use remote Java runtime for Bazel build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160793>`__ 15660 (issue `#291791485 <https://issues.pigweed.dev/issues/291791485>`__) 15661* `Add Rust toolchain to Bazel macOS build <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159491>`__ 15662 (issue `#291749888 <https://issues.pigweed.dev/issues/291749888>`__) 15663* `Mark linux-only Bazel build targets <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158191>`__ 15664 15665Targets 15666======= 15667 15668targets/rp2040_pw_system 15669------------------------ 15670Some of the Pico docs incorrectly referred to another hardware platform. 15671 15672* `Fix references to STM32 <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157233>`__ 15673 (issue `#286652309 <https://issues.pigweed.dev/issues/286652309>`__) 15674 15675Language support 15676================ 15677 15678python 15679------ 15680* `Remove setup.py files <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159472>`__ 15681 15682rust 15683---- 15684* `Add rustdoc links for existing crates <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159470>`__ 15685 15686OS support 15687========== 15688 15689zephyr 15690------ 15691* `Add project name to unit test root <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156850>`__ 15692* `Add pigweed root as module <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156596>`__ 15693* `Fix setup.sh call <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156591>`__ 15694 15695Docs 15696==== 15697We added a feature grid to the homepage and fixed outdated info in various 15698docs. 15699 15700* `pigweed.dev feature grid <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157658>`__ 15701* `Mention SEED-0102 in module_structure.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157234>`__ 15702 (issue `#286477675 <https://issues.pigweed.dev/issues/286477675>`__) 15703* `Remove outdated Homebrew info in getting_started.rst <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157291>`__ 15704 (issue `#287528787 <https://issues.pigweed.dev/issues/287528787>`__) 15705* `Fix "gn args" examples which reference pw_env_setup_PACKAGE_ROOT <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/156452>`__ 15706* `Consolidate contributing docs in site nav <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/155816>`__ 15707 15708SEEDs 15709===== 15710 15711SEED-0107 15712--------- 15713* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157031>`__ 15714 15715SEED-0108 15716--------- 15717* `Claim SEED number <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/158171>`__ 15718 15719Third party 15720=========== 15721 15722third_party 15723----------- 15724* `Remove now unused rules_proto_grpc <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/157290>`__ 15725 15726third_party/mbedtls 15727------------------- 15728* `3.3.0 compatibility <https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/160790>`__ 15729 (issue `#293612945 <https://issues.pigweed.dev/issues/293612945>`__) 15730