blob: 6c5af93e98af8de64059c3204b0c53cb54d140e3 [file] [log] [blame] [edit]
:tocdepth: 2
.. _docs-changelog:
=====================
What's new in Pigweed
=====================
--------------------------------
Talk to the team at Pigweed Live
--------------------------------
.. pigweed-live::
.. _docs-changelog-latest:
.. _docs-changelog-2025-01-09:
-----------
Jan 9, 2025
-----------
.. changelog_highlights_start
Highlights (Dec 27, 2024 to Jan 9, 2025):
* **Bazel 8**: Pigweed now :ref:`depends on Bazel 8
<docs-changelog-2025-01-09-Build-systems-Bazel>`.
* **FuzzTest and CMake**: FuzzTest is now :ref:`supported in
CMake projects <docs-changelog-2025-01-09-Modules-pw_fuzzer>`.
* **BoringSSL**: ``pw_crypto`` now :ref:`supports
BoringSLL <docs-changelog-2025-01-09-Modules-pw_crypto>`.
* **pw_rpc Java improvements**: The ``pw_rpc`` Java client now
has better :ref:`concurrent RPC request support
<docs-changelog-2025-01-09-Modules-pw_rpc>`.
.. changelog_highlights_end
.. _docs-changelog-2025-01-09-Modules:
Modules
=======
.. _docs-changelog-2025-01-09-Modules-pw_containers:
pw_containers
-------------
New features:
.. 68e18edf9f1b3913c73b1a4332bbce6521609916
* Intrusive lists now support move operations. Commit: `Support moving
intrusive lists <https://pwrev.dev/255894>`__.
.. _docs-changelog-2025-01-09-Modules-pw_chrono:
pw_chrono
---------
New features:
.. e88f3c4397c5cafafda8635ac93d42483059a9f9
* ``pw_chrono`` snapshots now support optional clock names. Commit: `Add
support for clock names <https://pwrev.dev/253753>`__.
.. _docs-changelog-2025-01-09-Modules-pw_crypto:
pw_crypto
---------
New features:
.. 462b37b0820e284069b8e42f6e61438177b60cb7
* ``pw_crypto`` now supports :ref:`BoringSSL <module-pw_crypto-boringssl>`.
Commit: `Add BoringSSL backend for AES <https://pwrev.dev/231914>`__.
Changes:
.. 483a24a69950b8be7ae924e28a7504150378c8ee
* ``micro_ecc`` support has been removed. Commit: `Remove micro_ecc
support <https://pwrev.dev/229672>`__. Bug: :bug:`359924206`.
.. _docs-changelog-2025-01-09-Modules-pw_digital_io_mcuxpresso:
pw_digital_io_mcuxpresso
------------------------
New features:
.. 8a5fc59a80af2fb2b11c2cd16ecc21a210fe1065
* The new ``pw::digital_io::McuxpressoDigitalInOutInterrupt`` class
supports interrupts on the GPIO interrupt block which enables using
interrupts on more pins. Commit: `Add McuxpressoDigitalInOutInterrupt
support <https://pwrev.dev/247972>`__.
Changes:
.. 34521ea9d72066a02d4b562eb6d2dd628e424e58
* ``pw::digital_io::McuxpressoDigitalInInterrupt`` has been deprecated.
``pw::digital_io::McuxpressoPintInterrupt`` should be used instead.
Commit: `Introduce McuxpressoPintInterrupt
<https://pwrev.dev/258994>`__. Bug: :bug:`337927184`.
.. _docs-changelog-2025-01-09-Modules-pw_fuzzer:
pw_fuzzer
---------
New features:
.. 736d6a39f5cdde223bfcbaf6f8c8fec7d512379a
* :ref:`FuzzTest <module-pw_fuzzer-guides-using_fuzztest>` can now be
used in CMake projects. Commit: `Make FuzzTest usable be external CMake
projects <https://pwrev.dev/239049>`__. Bug: :bug:`384978398`.
.. _docs-changelog-2025-01-09-Modules-pw_log_basic:
pw_log_basic
------------
Changes:
.. a542e417c4367b3b6c4fed88a172b9c2bdd2a837
* The maximum length for the function name field has increased from 20
to 30 characters and is now left-aligned. Commit: `Adjust field widths
<https://pwrev.dev/258174>`__.
.. _docs-changelog-2025-01-09-Modules-pw_protobuf:
pw_protobuf
-----------
Changes:
.. 8706efb9847543d226c5cb17494faffcd034cfa0
* Regular callbacks now ignore fields with unset decode callbacks.
Previously they caused ``DATA_LOSS`` errors. Commit: `Allow unset
callback fields in message structs <https://pwrev.dev/258392>`__.
.. _docs-changelog-2025-01-09-Modules-pw_rpc:
pw_rpc
------
New features:
.. 15d4ae5ff36cd452023fdfc07835f5f1635f05ef
* The Java client now supports making multiple concurrent RPC requests
to the same method. Commit: `Increment call_ids for java client
<https://pwrev.dev/258792>`__.
.. _docs-changelog-2025-01-09-Modules-pw_span:
pw_span
-------
New features:
.. 031bf132386f7350cb86338928368f46c5b76d1c
* The new docs section :ref:`module-pw_span-start-params` explains why
``pw::span`` objects should be passed by value. Commit: `Recommend passing
pw::span objects by value <https://pwrev.dev/257072>`__. Bug:
:bug:`387107922`.
.. _docs-changelog-2025-01-09-Modules-pw_stream:
pw_stream
---------
New features:
.. e7380e5da83527b80087e86b63224e052074d10f
* The new ``pw::stream::SocketStream::IsReady()`` method indicates
whether the streaming socket connection is ready. Commit: `Add ready
method to socket stream <https://pwrev.dev/253772>`__.
.. _docs-changelog-2025-01-09-Modules-pw_thread:
pw_thread
---------
Changes:
.. 717e4f58092e947eba23afb8be099d2ccf1247c3
* It is now simpler to disable the ``join()`` function when it's not
supported. Commit: `Simplify disabling join() function when not
supported <https://pwrev.dev/257913>`__.
.. _docs-changelog-2025-01-09-Modules-pw_toolchain:
pw_toolchain
------------
Changes:
.. 8adc4c3e84423554c5ad6549fefe3d0e035985c6
* The float ABI configuration for Arm Cortex-M33 was changed from
``soft`` to ``softfp``. Commit: `Update m33 float-abi
<https://pwrev.dev/259412>`__. Bug: :bug:`388354690`.
.. _docs-changelog-2025-01-09-Modules-pw_toolchain_bazel:
pw_toolchain_bazel
------------------
Changes:
.. 413a81576837f344c55a8d64b5d1807769e513b0
* Most of ``pw_toolchain_bazel`` has been removed because it has been
upstreamed to ``rules_cc``. Commit: `Remove contents
<https://pwrev.dev/252472>`__. Bug: :bug:`346388161`.
.. _docs-changelog-2025-01-09-Modules-pw_uart:
pw_uart
-------
Changes:
.. 71c2d0d0e9eb7cc27111a20b3190af1593944676
* It is no longer safe to call any ``pw_uart`` read or write methods
from a ``pw::uart::UartNonBlocking::DoRead()`` callback context. Commit:
`Restrict UartNonBlocking::DoRead() callback
<https://pwrev.dev/255732>`__. Bug: :bug:`384966926`.
.. _docs-changelog-2025-01-09-Modules-pw_unit_test:
pw_unit_test
------------
Bug fixes:
.. 203c6c8fd11fbdf01b51e564de03150f38dab430
* The buffer for expectation logs was increased in size to prevent
expectation logs from getting cut off. Commit: `Expectation buffer
cleanup <https://pwrev.dev/259055>`__. Bug: :bug:`387513166`.
.. _docs-changelog-2025-01-09-Build-systems:
Build systems
=============
.. _docs-changelog-2025-01-09-Build-systems-Bazel:
Bazel
-----
Changes:
.. b13f7bf334b239174e87d91fbfac8b8c1d209403
* Pigweed now depends on Bazel 8.0.0. Commit: `Update to Bazel 8.0.0
<https://pwrev.dev/242033>`__. Bug: :bug:`372510795`.
.. _docs-changelog-2025-01-09-Docs:
Docs
====
New features:
.. b977a3aeb1f4cf5a1b113396bbf9f9af6c1f1658
* The :ref:`Sense tutorial <showcase-sense-tutorial-intro>` has been
updated to cover all variations on the Raspberry Pi Pico. Commit:
`Refresh Sense tutorial <https://pwrev.dev/254652>`__.
.. 9337bf2516b4e0876d5308ec15939cb2dc9e6ab8
* :ref:`Pigweed Toolchain <toolchain>` now has a homepage. Commit: `Add
toolchain homepage <https://pwrev.dev/247593>`__. Bug: :bug:`373454866`.
.. _docs-changelog-2024-12-26:
------------
Dec 26, 2024
------------
Highlights (Dec 12, 2024 to Dec 26, 2024):
* **TLSF allocator**: ``pw_allocator`` has a new :ref:`two-layer, segregated
fit allocator <docs-changelog-2024-12-26-Modules-pw_allocator>`.
* **Checked arithmetic**: ``pw_numeric`` has :ref:`a suite of new arithmetic
operations <docs-changelog-2024-12-26-Modules-pw_numeric>` that check for
overflows.
* **Constant expression unit tests**: ``pw_unit_test`` has a
:ref:`new constexpr unit test <docs-changelog-2024-12-26-Modules-pw_unit_test>`
that runs at both compile-time and runtime.
* **Bazel module integration guidance**: :ref:`docs-bazel-integration` now provides
guidance on how to integrate Pigweed into projects that use Bazel modules.
.. _docs-changelog-2024-12-26-Modules:
Modules
=======
.. _docs-changelog-2024-12-26-Modules-pw_allocator:
pw_allocator
------------
New features:
.. f674d68203b26bf0207ab79099696e2b3b3cd9b3
* The new :cpp:class:`pw::allocator::TlsfAllocator` is a two-layer,
segregated fit allocator. Its 2D array of buckets incurs overhead but it
can satisfy requests quickly and has much better fragmentation performance
than ``WorstFitAllocator``. Commit: `Add TLSF allocator
<https://pwrev.dev/234818>`__.
.. _docs-changelog-2024-12-26-Modules-pw_build:
pw_build
--------
New features:
.. ee6f9976ba7e78737a1a74ae05f06da397b896c8
* The new ``pw_rust_crates_extension`` Bazel extension lets a project
override the ``rust_crates`` repo when needed without requiring every
project to define one. Commit: `Add pw_rust_crates_extension
<https://pwrev.dev/254952>`__. Bug: :bug:`384536812`.
.. _docs-changelog-2024-12-26-Modules-pw_containers:
pw_containers
-------------
New features:
.. 999adb191f8f512b524f0a65bd0662ac7854ef20
* Queues and dequeues now have explicit ``constexpr`` constructors.
Commit: `Add explicit constexpr constructors for deques/queues
<https://pwrev.dev/250434>`__.
.. _docs-changelog-2024-12-26-Modules-pw_multibuf:
pw_multibuf
-----------
Changes:
.. b439dd3e602e6c3568ff2ed68a12c2ecf90391a9
* :cpp:class:`pw::multibuf::MultiBufAllocator` no longer supports async.
:cpp:class:`pw::multibuf::MultiBufAllocatorAsync` should be used
instead. Commit: `Move async to new MultiBufAllocatorAsync
<https://pwrev.dev/255015>`__. Bug: :bug:`384583239`.
.. _docs-changelog-2024-12-26-Modules-pw_numeric:
pw_numeric
----------
New features:
.. d6827c16644efa06f524a702903397e3cc07ba4c
.. TODO: https://pwbug.dev/389134105 - Fix these links.
* :cpp:type:`pw::CheckedAdd`, :cpp:type:`pw::CheckedIncrement`,
:cpp:type:`pw::CheckedSub`, :cpp:type:`pw::CheckedDecrement`, and
:cpp:type:`pw::CheckedMul` are new arithmetic methods that check for
overflows. Commit: `Add checked_arithmetic.h
<https://pwrev.dev/253172>`__. Bug: :bug:`382262919`.
.. _docs-changelog-2024-12-26-Modules-pw_thread:
pw_thread
---------
New features:
.. 4f536c6c1137a7282e7f800aa636c79c5c629191
* The new :cpp:class:`pw::ThreadPriority` class is a generic priority
class that can be used by any ``pw_thread`` backend. Commit: `Thread
priority class <https://pwrev.dev/242214>`__.
.. _docs-changelog-2024-12-26-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 13446e506fb94bcf4345bbf74b7987cff0fe0e3a
* ``pw_toolchain`` now supports Arm Cortex-M3. Commit: `Add Cortex M3
support <https://pwrev.dev/254474>`__.
.. _docs-changelog-2024-12-26-Modules-pw_unit_test:
pw_unit_test
------------
New features:
.. c13d91eae61a50dfbe08023983337086509e7a8e
* :c:macro:`PW_CONSTEXPR_TEST` is a new unit test that is executed both
at compile-time in a ``static_assert()`` and at runtime as a GoogleTest
``TEST()``. Commit: `Test framework for constexpr unit tests
<https://pwrev.dev/242213>`__.
.. _docs-changelog-2024-12-26-Docs:
Docs
====
New features:
.. 42962f4a909048bb7f9464af018515bb5c9ee94c
* :ref:`docs-bazel-integration` has been updated to describe how to
integrate Pigweed into projects that use Bazel modules (``bzlmod``). Commit:
`Bazel integration: bzlmod, Bazel versions
<https://pwrev.dev/254413>`__.
.. _docs-changelog-2024-12-11:
------------
Dec 11, 2024
------------
Highlights (Nov 28, 2024 to Dec 11, 2024):
* **New blog post**: :ref:`docs-blog-06-better-cpp-toolchains`
summarizes our journey to upstream modular toolchains in rules_cc.
* **Customizable enum tokenization**: The new
:c:macro:`PW_TOKENIZE_ENUM_CUSTOM` macro lets you customize how enum values
are tokenized.
* **AES API in pw_crypto**: :ref:`module-pw_crypto` now has an
Mbed-TLS backend for AES.
.. _docs-changelog-2024-12-11-Modules:
Modules
=======
.. _docs-changelog-2024-12-11-Modules-pw_allocator:
pw_allocator
------------
Bug fixes:
.. b3d4f6ec721999b6bd4a856386a16c0b102d4f3c
* A bug was fixed where the ``FirstFitAllocator`` incorrectly allocated
from the front. Commit: `Fix first-fit with threshold
<https://pwrev.dev/253233>`__. Bug: :bug:`382513957`.
.. _docs-changelog-2024-12-11-Modules-pw_assert:
pw_assert
---------
Changes:
.. bb9f65d47f203a2623543f5adf20ef15d747524e
* Error messages in constant expressions have been improved. Commit:
`Improve error messages in constant expressions
<https://pwrev.dev/251914>`__. Bug: :bug:`277821237`.
.. _docs-changelog-2024-12-11-Modules-pw_async2:
pw_async2
---------
New features:
.. 4a1d9b2c3f76002ad7462e2a4373fa3eedfda692
* :cpp:class:`pw::async2::OnceReceiver` can now be constructed with a
value. Commit: `Support value constructor for OnceReceiver
<https://pwrev.dev/251452>`__.
.. _docs-changelog-2024-12-11-Modules-pw_bluetooth_proxy:
pw_bluetooth_proxy
------------------
New features:
.. ffb532447804634ffa9a97f78886e8422025f9c2
* The new
:cpp:func:`pw::bluetooth::proxy::ProxyHost::SendAdditionalRxCredits`
method lets you send additional RX credits when needed. Previously this
logic was coupled with the L2CAP connection-oriented channel
acquisition. Commit: `Separate rx_additional_credits method
<https://pwrev.dev/252352>`__. Bug: :bug:`380076024`.
.. b336566abf4d6d1119f5373dc534e1f1e1070523
* Transport type for ``pw::bluetooth::proxy::BasicL2capChannel`` can now
be specified during channel creation. Commit: `Un-hardcode transport
type for BasicL2capChannel <https://pwrev.dev/252556>`__.
.. e85884825ea35e9b3b6f86ab0d12d1a1c5e3518d
* A flow control mechanism for writes was added. When a channel's write
fails because there's no space, and then space becomes available, the
channel is now notified. Commit: `Add write flow control mechanism
<https://pwrev.dev/251435>`__. Bug: :bug:`380299794`.
.. 99944ede9942532e5a12996575497ecb31a10442
* Proxies now reset after receiving ``HCI_Reset`` commands. Commit:
`Reset proxy on HCI_Reset <https://pwrev.dev/251472>`__. Bug:
:bug:`381902130`.
.. 2bfeaec98417551db59ec6dcc718f526a15d193f
* The new :cpp:class:`pw::bluetooth::proxy::L2capStatusDelegate` class
lets you receive connection/disconnection notifications for a particular
L2CAP service. Commit: `Add L2cap service listener API
<https://pwrev.dev/249754>`__. Bug: :bug:`379558046`.
.. _docs-changelog-2024-12-11-Modules-pw_build:
pw_build
--------
New features:
.. b8d1cd064d4440e216f62802ab2378eb0c3eb269
* New guidance on :ref:`module-pw_build-bazel-pw_cc_binary` was added.
Commit: `Document pw_cc_binary <https://pwrev.dev/252052>`__.
Changes:
.. 2ce8bc27e467224bf503fada12a29d8a4a2b81d7
* When a ``pw_python_venv`` targets has no source packages and no
requirements, an empty Python venv is created and ``pip-compile`` is no
longer used. Commit: `Allow for empty Python build venvs
<https://pwrev.dev/253253>`__. Bug: :bug:`380293856`.
.. _docs-changelog-2024-12-11-Modules-pw_cli:
pw_cli
------
New features:
.. 13c7f3ca42864136624da1d8452b0110d61b850e
* Specifying whether color should be enabled on an output is now more
granular. Commit: `Allow output-specific color checks
<https://pwrev.dev/252292>`__.
Changes:
.. 73b5fbf1ba77139796d29b7a064ec3c76127bae4
* The Python function ``pw_presubmit.tools.exclude_paths()`` was moved
to the ``pw_cli.file_filter`` module. Commit: `Move exclude_paths
<https://pwrev.dev/252293>`__.
.. _docs-changelog-2024-12-11-Modules-pw_containers:
pw_containers
-------------
Bug fixes:
.. a7c4dd8b045259a12194742793eaa03aa9e07443
* A bug was fixed where :cpp:class:`pw::Vector` was move-assigning to
destroyed objects. Commit: `Do not move assign to destroyed objects in
Vector::erase <https://pwrev.dev/251992>`__. Bug: :bug:`381942905`.
.. _docs-changelog-2024-12-11-Modules-pw_crypto:
pw_crypto
---------
New features:
.. 9aceb7c03cab42e1d2ae7c4e2dd9de718fbe3c68
* :ref:`module-pw_crypto` now has an Mbed-TLS backend for AES. Commit:
`Implement Mbed-TLS backend for AES <https://pwrev.dev/231912>`__.
.. 23cc90c00be0e6f8c3eef0adfe1a0906fa77b346
* The new :cpp:func:`pw::crypto::aes::backend::DoEncryptBlock` is an
initial facade for AES. Commit: `Add AES facade
<https://pwrev.dev/231911>`__.
.. _docs-changelog-2024-12-11-Modules-pw_grpc:
pw_grpc
-------
New features:
.. d30c2bbc46ccb4e874da27c3b33dc48e30cdc893
* Data is now queued if a stream or connection has no available send
window. Previously data was dropped in this case. The send queues are
non-blocking. Commit: `Implement per stream send queues and make sending
non-blocking <https://pwrev.dev/249952>`__. Bug: :bug:`382294674`.
Bug fixes:
.. 983b4f196331b7873c59f555a39ed519cb707943
* A :cpp:class:`pw::multibuf::MultiBufAllocator` is now required when
creating a :cpp:class:`pw::grpc::Connection` instance. Commit: `Remove
old constructor and make multibuf allocator required
<https://pwrev.dev/252555>`__. Bug: :bug:`382294674`.
.. _docs-changelog-2024-12-11-Modules-pw_presubmit:
pw_presubmit
------------
New features:
.. 9720483d67050eeda1910c707195aca45879ff90
* A new guide for Pigweed contributors on :ref:`managing the Bazel
lockfile <docs-bazel-lockfile>` was published. Commit: `Bazel lockfile
check <https://pwrev.dev/253554>`__. Bug: :bug:`383387420`.
.. _docs-changelog-2024-12-11-Modules-pw_rpc:
pw_rpc
------
Changes:
.. eb762cabb91d3712fe2ca6a470172f2164247072
* The newly public ``internal_packet_proto`` library makes it possible
to generate ``packet.proto`` code for non-supported languages. E.g. this
makes it possible to write a Dart/Flutter RPC client. Commit: `Make
packet proto library public in Bazel <https://pwrev.dev/249692>`__.
.. _docs-changelog-2024-12-11-Modules-pw_snapshot:
pw_snapshot
-----------
New features:
.. b950987d209c57b18389aaca91d9a3a9ef7066f5
* The new ``thread_processing_callback`` parameter of
:py:func:`pw_snapshot.processor.process_snapshot` lets you do custom
thread processing during snapshot decoding. Commit: `Add per-thread
processing callback for snapshot decoding <https://pwrev.dev/251392>`__.
.. _docs-changelog-2024-12-11-Modules-pw_system:
pw_system
---------
New features:
.. a4d795f13b833950d14ff9803d43e49ec1fb5e47
* In the Bazel build ``rpc_server`` is now a
:ref:`module-pw_build-bazel-pw_facade` which lets you swap out the default
HDLC server with something else in your project. Commit: `Add facade for rpc
server in Bazel <https://pwrev.dev/252172>`__.
.. _docs-changelog-2024-12-11-Modules-pw_thread:
pw_thread
---------
Changes:
.. 9e4c976345d4d2de321e17853e9fb86493ff2200
* ``ThreadCore`` logic was moved out of ``pw::Thread``. Commit: `Move
ThreadCore logic out of pw::Thread <https://pwrev.dev/253264>`__.
.. _docs-changelog-2024-12-11-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. 23370ed5ed0e01273080c231ee3475916dc74fba
* The new :c:macro:`PW_TOKENIZE_ENUM_CUSTOM` macro lets you customize
how enum values are tokenized. Commit: `Add macro for tokenizing enums
with custom string <https://pwrev.dev/250492>`__.
.. _docs-changelog-2024-12-11-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 807a3aa14a2035f3c1693e3c023740d086ce7c94
* In the GN build it is now possible to completely move away from GNU
libraries. Commit: `Support replacing GNU libs for ARM
<https://pwrev.dev/250572>`__. Bug: :bug:`322360978`.
.. _docs-changelog-2024-12-11-Docs:
Docs
====
New features:
.. 4a28597bf8cc64f7cfc4cc019ba969bc10747c2b
* A new :ref:`Bazel style guide <docs-pw-style-bazel>` was added.
Commit: `Add Bazel style guide <https://pwrev.dev/240811>`__. Bug:
:bug:`371564331`.
.. 5a62fe471eab617742ded0ba84c693e4f2d29585
* A new blog post on :ref:`C/C++ Bazel toolchains
<docs-blog-06-better-cpp-toolchains>` was published.
Commit: `Shaping a better future for Bazel C/C++ toolchains
<https://pwrev.dev/253332>`__.
.. _docs-changelog-2024-11-27:
------------
Nov 27, 2024
------------
Highlights (Nov 15, 2024 to Nov 27, 2024):
* **pw_allocator updates**: The :ref:`module-pw_allocator-api-bucket` class
has been refactored to be more flexible and the :ref:`block API
<module-pw_allocator-api-block>` has been refactored to support static
polymorphism.
.. _docs-changelog-2024-11-27-Modules:
Modules
=======
.. _docs-changelog-2024-11-27-Modules-pw_allocator:
pw_allocator
------------
Changes:
.. 0942b69025f2987ca9512141fe3cf3a7046f042c
* ``BestFitBlockAllocator`` was renamed to ``BestFitAllocator`` and
``WorstFitBlockAllocator`` was renamed to ``WorstFitAllocator``. These
classes have been refactored to use :ref:`buckets
<module-pw_allocator-api-bucket>`. Commit: `Refactor best- and worst-fit
allocators to use buckets <https://pwrev.dev/234817>`__.
.. 0766dbaf5305202c6f67e18184bb165df8426713
* ``FirstFitBlockAllocator``, ``LastFitBlockAllocator``, and
``DualFirstFitBlockAllocator`` were merged into a single class:
:ref:`module-pw_allocator-api-first_fit_allocator`. Commit: `Refactor
first fit allocators <https://pwrev.dev/234816>`__.
.. 3bfdac7a7826a4e2a1dc7a7174fd8d6276546c26
* The :ref:`module-pw_allocator-api-bucket` class has been refactored to
be more flexible. Commit: `Refactor Bucket
<https://pwrev.dev/234815>`__.
.. 65b5e336df018fbc9d124ca09d71a5dcccd1a8c0
* Metric calculation for blocks that shift bytes has changed. Commit:
`Fix metrics for blocks that shift bytes <https://pwrev.dev/249372>`__.
Bug: :bug:`378743727`.
.. 33d00a77472a6ff545032b213aa24dfe6a39d606
* :cpp:class:`pw::allocator::BlockAllocator` now returns
:cpp:class:`pw::allocator::BlockResult`. Commit: `Use BlockResult in
BlockAllocator <https://pwrev.dev/234811>`__.
.. 6417a523b06e03dce3453e96c3a1bec6ab511768
* The :ref:`block API <module-pw_allocator-api-block>` has been
refactored to support static polymorphism. Commit: `Add static
polymorphism to Block <https://pwrev.dev/232214>`__.
.. _docs-changelog-2024-11-27-Modules-pw_bytes:
pw_bytes
--------
New features:
.. a287811e5e99eab8d4ddfcaf9f1a505fd1e3eb17
* The new :cpp:func:`pw::IsAlignedAs` utility functions make it easier
to check alignment. Commit: `Add utility for checking alignment
<https://pwrev.dev/248192>`__.
.. _docs-changelog-2024-11-27-Modules-pw_presubmit:
pw_presubmit
------------
New features:
.. e278ead3bfe1361c3ff08e5329636a35abbcef6c
* The new ``includes_presubmit_check`` verifies that ``cc_library``
Bazel targets don't use the ``includes`` attribute. Commit: `Add check
for cc_library includes <https://pwrev.dev/251172>`__. Bug:
:bug:`380934893`.
.. _docs-changelog-2024-11-27-Modules-pw_protobuf:
pw_protobuf
-----------
New features:
.. f776679bbea5f4ae376ab924d80760bb2f1e69a0
* :ref:`pw_protobuf-message-limitations` now has more guidance around
protobuf versioning and ``optional`` fields. Commit: `Expand message
structure limitations docs section <https://pwrev.dev/249072>`__.
.. _docs-changelog-2024-11-27-Modules-pw_transfer:
pw_transfer
-----------
Changes:
.. 1c771e0fd88511ef3550108572572db1f036d0a5
* Warnings logs are now emitted when client or server streams close
unexpectedly. Commit: `Log when streams close unexpectedly
<https://pwrev.dev/249912>`__.
.. 48712ad0655654b4dcc9b62085a58445fe0af696
* The window size on retried data now shrinks in an attempt to reduce
network congestion. Commit: `Shrink window size on retried data
<https://pwrev.dev/249532>`__.
.. _docs-changelog-2024-11-27-Modules-pw_unit_test:
pw_unit_test
------------
Changes:
.. c4d59ce4d011e11781bcb6dc6660ad947a7ee8df
* Successful expectations are no longer stringified by default. Commit:
`Stop stringifying successful expectations
<https://pwrev.dev/248693>`__.
.. _docs-changelog-2024-11-27-Modules-pw_rpc:
pw_rpc
------
Changes:
.. 92e854a4d179f0b340a0f8b5a662012ea4b8635c
* A warning log is now emitted when a server receives a completion
request but client completion callbacks have been disabled. Commit:
`Warn when client completion callback is disabled
<https://pwrev.dev/249414>`__.
.. _docs-changelog-2024-11-14:
------------
Nov 14, 2024
------------
.. changelog_highlights_start
Highlights (Nov 1, 2024 to Nov 14, 2024):
* **ELF API**: The new :cpp:class:`pw::elf::ElfReader` class is a
basic reader for ELF files.
* **Updated Bluetooth APIs**: There's a new low energy
connection-oriented channels API and the :ref:`module-pw_bluetooth`
API has been modernized.
* **Updated SEED process**: "Intent Approved" and "On Hold" statuses
were added to the SEED lifecycle.
.. changelog_highlights_end
.. _docs-changelog-2024-11-14-Modules:
Modules
=======
.. _docs-changelog-2024-11-14-Modules-pw_allocator:
pw_allocator
------------
Changes:
.. 1dcac6a863b8adfc930de769ec56fd44f1e4448f
* ``pw::allocator::AsPmrAllocator`` was renamed to
:cpp:class:`pw::allocator::PmrAllocator`. Commit: `Separate PMR from
Allocator <https://pwrev.dev/246412>`__.
.. _docs-changelog-2024-11-14-Modules-pw_async2:
pw_async2
---------
New features:
.. 21933c60384c25d73dba60c90e74cc44d2a446de
* The ``new`` operator for coroutines now accepts an optional alignment
argument. Commit: `Accept alignment in CoroPromiseType::operator new
<https://pwrev.dev/248638>`__. Bug: :bug:`378929156`.
.. d20009a8e35dfdb881f77b6d171c697b61dba5c3
* The new :c:macro:`PW_TRY_READY` and :c:macro:`PW_TRY_READY_ASSIGN`
helper macros reduce boilerplate in non-coroutine async code. Commit:
`Add PW_TRY_READY_* control flow macros <https://pwrev.dev/243818>`__.
.. _docs-changelog-2024-11-14-Modules-pw_bluetooth:
pw_bluetooth
------------
New features:
.. c9ad96cf7be8a05a7d1bf6ec933114c7cc39f012
* The new :cpp:class:`pw::bluetooth::low_energy::Channel`,
:cpp:class:`pw::bluetooth::low_energy::ChannelListener`, and
:cpp:class:`pw::bluetooth::low_energy::ChannelListenerRegistry` classes
provide a low energy connection-oriented channels API. Commit: `Add LE
Connection-Oriented Channels API <https://pwrev.dev/227371>`__. Bug:
:bug:`357142749`.
Changes:
.. a615b8bf5234f48b8a33e6c837aa7521fa80d92a
* The :ref:`module-pw_bluetooth` API has been modernized. Commit:
`Modernize APIs <https://pwrev.dev/219393>`__. Bug: :bug:`350994818`.
.. _docs-changelog-2024-11-14-Modules-pw_bluetooth_proxy:
pw_bluetooth_proxy
------------------
New features:
.. b8ee89e76ff4e8c467ea35291b2a141175c737e9
* :cpp:class:`pw::bluetooth::proxy::L2capCoc` now supports reading.
Commit: `L2CAP CoC supports reading <https://pwrev.dev/232172>`__. Bug:
:bug:`360934032`.
.. _docs-changelog-2024-11-14-Modules-pw_channel:
pw_channel
----------
New features:
.. 0a4e6db6ad35d0bf062c22b471fef2a66948a90f
* The new :cpp:func:`pw::Channel::PendAllocateWriteBuffer` method
simplifies the allocation of write buffers that need small
modifications. Commit: `Move to PendAllocateWriteBuffer
<https://pwrev.dev/246239>`__.
Changes:
.. bd17ed6971f608e2d66da8b2954bc13ad3e2c664
* The ``pw::channel::WriteToken`` method was removed. Commit: `Remove
WriteToken <https://pwrev.dev/245932>`__.
.. 0422de1761e52ad5d1fad821880025fc27facf1c
* ``pw_channel`` inheritance has been refactored
to ensure that conversions between compatible variants are valid.
Commit: `Rework inheritance to avoid SiblingCast
<https://pwrev.dev/247732>`__.
.. _docs-changelog-2024-11-14-Modules-pw_elf:
pw_elf
------
New features:
.. 8ee78791500354f85df94b228f63b3a42a882040
* The new :cpp:class:`pw::elf::ElfReader` class is a basic reader for
ELF files. Commit: `Add ElfReader <https://pwrev.dev/244893>`__.
.. _docs-changelog-2024-11-14-Modules-pw_i2c:
pw_i2c
------
Bug fixes:
.. 6165aa470b35106b79b2e57ecec9951cff30acdc
* I2C flags are now correctly set for transactions that occur on an I3C
bus. Commit: `Set the i2c flags correctly for transactions on an i3c bus
<https://pwrev.dev/245754>`__. Bug: :bug:`373451623`.
.. _docs-changelog-2024-11-14-Modules-pw_metric:
pw_metric
---------
New features:
.. a751fa9bd38a30f08a14c336e7bc77878a5d60c5
* ``pwpb`` now prioritizes the ``.pwpb_options`` for protobuf codegen.
Commit: `Add metrics_service.pwpb_options to BUILD.gn
<https://pwrev.dev/246112>`__.
.. aacf94efb59dac4a661e88e2ba95acda20c5ccb1
* The new :cpp:func:`PW_METRIC_TOKEN` makes it easier for tests to
create tokens for metrics. Commit: `Expose metric token format via
PW_METRIC_TOKEN <https://pwrev.dev/244332>`__.
.. _docs-changelog-2024-11-14-Modules-pw_protobuf:
pw_protobuf
-----------
New features:
.. acbeaab3d280f748d235a31025d7a35dd38fa516
* The ``Find*()`` methods have been extended to support iterating over
repeated fields. See :ref:`module-pw_protobuf-read`. Commit:
`Extend Find() APIs to support repeated fields <https://pwrev.dev/248432>`__.
Changes:
.. 6a16fab34795f2976e04457d099a05c671b79b54
* It's no longer necessary to set a callback for every possible field in
a message when you're only interested in a few fields. Commit: `Allow
unset oneof callbacks <https://pwrev.dev/246692>`__.
.. _docs-changelog-2024-11-14-Modules-pw_protobuf_compiler:
pw_protobuf_compiler
--------------------
Changes:
.. cd0b4fb52d8fb2012fbd8483f66a48d593e83bb9
* ``pwpb_options`` files are now explicitly processed first, followed by
regular ``.options`` files. Commit: `Don't rely on options file ordering
<https://pwrev.dev/247472>`__.
.. _docs-changelog-2024-11-14-Modules-pw_rpc:
pw_rpc
------
Changes:
.. f0ba9b05187506d7526ca3585401c8df7b4e9d4d
* The Python client previously reused call IDs after ``16384``. The limit
has been increased to ``2097152``. Commit: `Allocate more call IDs in
the Python client <https://pwrev.dev/245067>`__. Bug: :bug:`375658481`.
.. _docs-changelog-2024-11-14-Modules-pw_rpc_transport:
pw_rpc_transport
----------------
New features:
.. 18d5fbfb289c8675dd683d62ab69b83147e9d70e
* The new ``pw::rpc::RpcIngress::num_total_packets`` method tracks how
many packets an ingress RPC handler has received. Commit: `Track number
of RPC packets received <https://pwrev.dev/247194>`__. Bug:
:bug:`373449543`.
.. _docs-changelog-2024-11-14-Modules-pw_sensor:
pw_sensor
---------
New features:
.. b7246bf88df6aa030dec7b9510e7015b5035616c
* The new ``extras`` key lets applications specify additional metadata
that's not supported or used by Pigweed. Commit: `Add freeform extras
field to sensor.yaml <https://pwrev.dev/248195>`__.
.. _docs-changelog-2024-11-14-Modules-pw_spi:
pw_spi
------
Changes:
.. 6aadd54afb308c09edb833985b387442df732fef
* :cpp:class:`pw::spi::Initiator` is now a `non-virtual interface
<https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-Virtual_Interface>`__.
Commit: `Finalize non-Virtual interface on
Initiator <https://pwrev.dev/236236>`__. Bug: :bug:`308479791`.
.. _docs-changelog-2024-11-14-Modules-pw_spi_linux:
pw_spi_linux
------------
Bug fixes:
.. d17b5acd42c6e983ce4b12a7ebc3184205a06d45
* The ``pw::Spi::Initiator::DoWriteRead()`` method now correctly handles
transfers where either the write buffer or the read buffer is empty.
Commit: `Fix read/write-only transfers <https://pwrev.dev/246053>`__.
.. _docs-changelog-2024-11-14-Modules-pw_stream:
pw_stream
---------
New features:
.. b2c1616caaff13d41e434cbcb8ae0530a20962ca
* The new :cpp:func:`pw::stream::Stream::ReadExact` method reads exactly
the number of bytes requested into a provided buffer, if supported.
Commit: `Add ReadExact() wrapper <https://pwrev.dev/243552>`__.
.. _docs-changelog-2024-11-14-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. 94e2314ddea1499a7868bd3d30621b709e25f7d4
* The new :cpp:func:`pw::tokenizer::Detokenizer::FromElfFile` method
constructs a detokenizer from the ``.pw_tokenizer.entries`` section of
an ELF binary. Commit: `Add Detokenizer::FromElfFile
<https://pwrev.dev/243532>`__. Bug: :bug:`374367947`.
Bug fixes:
.. 7fb7bb1dc5d69c79de1b0b72316a34a800f2d5b0
* The Python detokenizer now correctly handles multiple nested tokens in
one log string. Commit: `Update regex for nested args
<https://pwrev.dev/248232>`__.
.. _docs-changelog-2024-11-14-SEEDs:
SEEDs
=====
New features:
.. a1acd00d02ebe42116a4982ad809264f3c673021
* "Intent Approved" and "On Hold" statuses were added to the SEED
lifecycle. Commit: `(SEED-0001) Add "Intent Approved" and "On Hold"
states to lifecycle <https://pwrev.dev/248692>`__.
.. _docs-changelog-2024-10-31:
------------
Oct 31, 2024
------------
Highlights (Oct 18, 2024 to Oct 31, 2024):
* The new :c:macro:`PW_TEST_EXPECT_OK`, :c:macro:`PW_TEST_ASSERT_OK`,
and :c:macro:`PW_TEST_ASSERT_OK_AND_ASSIGN` macros provide test matchers
for :ref:`module-pw_status` and :ref:`module-pw_result` values.
* The Sense tutorial has expanded guidance around :ref:`handling crashes
and viewing snapshots <showcase-sense-tutorial-crash-handler>`.
* The new :cpp:class:`pw::LinkerSymbol` class represents a symbol
provided by a linker.
* The new ``extra_frame_handlers`` parameter lets you add custom HDLC frame
handlers when using the Python-based :ref:`module-pw_system` console.
.. _docs-changelog-2024-10-31-Modules:
Modules
=======
.. _docs-changelog-2024-10-31-Modules-pw_allocator:
pw_allocator
------------
New features:
.. 6fd4792308999b9c5949e9b778994d064a80a8b7
* The new :c:macro:`PW_ALLOCATOR_ENABLE_PMR` macro lets you disable the
ability to use an allocator with the polymorphic versions of standard
library containers. Commit: `Make pw::Allocator::as_pmr optional
<https://pwrev.dev/245254>`__.
Changes:
.. c3c61885927ee9e8fac187a52b1ab139919fe5e7
* Multiple methods were renamed or removed in preparation for upcoming
work to split up :cpp:class:`pw::allocator::Block`. Commit: `Streamline
Block API <https://pwrev.dev/232213>`__.
.. _docs-changelog-2024-10-31-Modules-pw_assert:
pw_assert
---------
Changes:
.. 673e56ac476a345a0f25319633d8ce0ad0c0cd93
* ``pw_assert`` now verifies whether ``PW_CHECK`` message arguments are
valid, regardless of what ``pw_assert`` backend is being used. Commit:
`Verify PW_CHECK message arguments in the API
<https://pwrev.dev/244744>`__.
.. _docs-changelog-2024-10-31-Modules-pw_assert_tokenized:
pw_assert_tokenized
-------------------
New features:
.. ef5f6bf505343c0926532f53dc788b26c3640048
* :c:macro:`pw_assert_HandleFailure` is now supported. Commit: `Support
pw_assert_HandleFailure <https://pwrev.dev/244793>`__.
.. _docs-changelog-2024-10-31-Modules-pw_async2:
pw_async2
---------
New features:
.. cec451dc5c2cb132717068d686e4e034b06762c9
* :cpp:class:`pw::async2::Join` lets you join several separate pendable
values. Commit: `Add Join combinator <https://pwrev.dev/244612>`__.
.. 0945ffb46234253d08467adebd8869ebb39234fa
* The new :cpp:func:`pw::async2::TimeFuture::Reset` method resets a
``TimeFuture`` instance to expire at a specified time. Commit: `Add
TimerFuture::Reset <https://pwrev.dev/243993>`__.
Changes:
.. 9528eac2b6c6243dc5fb6a4d72f33d8d7e0d573c
* Waker storage has moved to a macro-based API. See
:c:macro:`PW_ASYNC_STORE_WAKER` and :c:macro:`PW_ASYNC_CLONE_WAKER`.
Commit: `Move to macro-based Waker API <https://pwrev.dev/245068>`__.
Bug: :bug:`376123061`.
.. _docs-changelog-2024-10-31-Modules-pw_bluetooth_proxy:
pw_bluetooth_proxy
------------------
New features:
.. a8c756860ae104ef5e87439ef4f8cc4fbbb2fab7
* Bazel builds are now supported. Commit: `Add bazel build support
<https://pwrev.dev/243874>`__.
.. _docs-changelog-2024-10-31-Modules-pw_build:
pw_build
--------
New features:
.. 170f745d98d101d73564fa61420f1a0836053033
* The new :cpp:class:`pw::LinkerSymbol` class represents a symbol
provided by a linker. Commit: `Add LinkerSymbol
<https://pwrev.dev/242635>`__.
.. _docs-changelog-2024-10-31-Modules-pw_channel:
pw_channel
----------
Changes:
.. 5f2649a6e5afdecd7b5d59aab06f59bb4d73d9f3
* ``pw::channel::AnyChannel::Write`` was renamed to
:cpp:func:`pw::channel::AnyChannel::StageWrite` and
``pw::channel::AnyChannel::PendFlush`` was renamed to
:cpp:func:`pw::channel::AnyChannel::PendWrite`. Commit: `Rename
{Write->StageWrite, PendFlush->PendWrite} <https://pwrev.dev/245539>`__.
.. _docs-changelog-2024-10-31-Modules-pw_containers:
pw_containers
-------------
New features:
.. afb18a6ded0c43e91ce85e5ec97ae0206c4873ca
* :cpp:class:`pw::IntrusiveSet` is a new class like ``std::set<Key,
Compare>`` that uses intrusive items as keys and
:cpp:class:`pw::IntrusiveMultiSet` is a new class like
``std::multiset<Key, Compare>`` that uses intrusive items. Commit: `Add
IntrusiveSet and IntrusiveMultiSet <https://pwrev.dev/240053>`__.
Changes:
.. bde3f80e6e038cebe264283af625faf06a64d8d0
* The ``erase`` methods of
:cpp:class:`pw::containers::future::IntrusiveList`,
:cpp:class:`pw::IntrusiveMap`, and :cpp:class:`pw::IntrusiveMultiMap`
have been overloaded to make them easier to use. Commit: `Add methods to
erase by item <https://pwrev.dev/243257>`__.
.. _docs-changelog-2024-10-31-Modules-pw_log:
pw_log
------
Changes:
.. 661bf47f06e604384a4c7eb7bf79d2f3da71ee74
* The signature for :c:macro:`PW_LOG` macro changed. A ``verbosity``
level must now always be passed as the second argument when invoking
``PW_LOG``. Commit: `Explicitly pass verbosity to PW_LOG
<https://pwrev.dev/239035>`__.
.. _docs-changelog-2024-10-31-Modules-pw_multibuf:
pw_multibuf
-----------
New features:
.. 9ab6e749821eddb8a82f7724c1af10ef6accc016
* The new :cpp:func:`pw::multibuf::FromSpan` function creates a multibuf from
an existing span and a ``deleter`` callback. Commit: `Add FromSpan
<https://pwrev.dev/245132>`__. Bug: :bug:`373725545`.
.. _docs-changelog-2024-10-31-Modules-pw_multisink:
pw_multisink
------------
New features:
.. 773331a904413e92d86c6e4cb658af77cf889d76
* The new :cpp:func:`pw::multisink::UnsafeDumpMultiSinkLogsFromEnd`
utilitiy function dumps contents as a series of log entries. Commit:
`Add UnsafeForEachEntryFromEnd() <https://pwrev.dev/244556>`__. Bug:
:bug:`375653884`.
.. _docs-changelog-2024-10-31-Modules-pw_polyfill:
pw_polyfill
-----------
Changes:
.. d3e10fad55171d8cdce399916acbf37b2dec732b
* :c:macro:`PW_CONSTINIT` now fails when used without compiler support.
Commit: `Make PW_CONSTINIT support mandatory
<https://pwrev.dev/243892>`__.
.. _docs-changelog-2024-10-31-Modules-pw_protobuf:
pw_protobuf
-----------
Bug fixes:
.. 368cf8be3cb1909453c9c2cc67ec951517943086
* ``pw_protobuf`` now fails when the ``max_count`` or ``fixed_count``
options of ``pwpb`` are used on unsupported field types. Commit: `Fail
when a max count is set with an unsupported type
<https://pwrev.dev/236816>`__.
Changes:
.. 9525d75843cede1c67f78de7c2f86bb30ac98efe
* Code generator options can now be specified in files ending with
``.pwpb_options``. This is useful for projects that wish to strictly
separate Nanopb and ``pw_protobuf`` options. Commit: `Allow
.pwpb_options as an options file extension
<https://pwrev.dev/241137>`__.
.. _docs-changelog-2024-10-31-Modules-pw_ring_buffer:
pw_ring_buffer
--------------
New features:
.. b90180561658453318c36b125fd8af37de713a3f
* ``pw_ring_buffer`` readers now support the ``--`` decrement operator.
Commit: `Add a decrement operator <https://pwrev.dev/244555>`__. Bug:
:bug:`375653884`.
.. _docs-changelog-2024-10-31-Modules-pw_system:
pw_system
---------
New features:
.. 1f2341cd64eaacb9de474510293397b50165b3b5
* The new ``extra_frame_handlers`` parameter lets you add custom HDLC
frame handlers when using the Python-based ``pw_system`` console.
Commit: `Make console support extra hdlc frame handlers
<https://pwrev.dev/245192>`__.
Bug fixes:
.. 9b2dd9ccb35a49f57c053e88a55da35ad24fc93d
* A bug was fixed where the latest logs were not being captured in crash
snapshots. Commit: `Ensure latest logs are captured in crash snapshot
<https://pwrev.dev/244557>`__. Bug: :bug:`375653884`.
.. 0aa57cea2e06c48a24266b21d472155c2379189f
* The ``pw_system`` crash dump now includes a main stack thread
backtrace. Commit: `Add main stack thread backtrace capture to crash
dump <https://pwrev.dev/242337>`__. Bug: :bug:`354767156`.
.. ed55dbc3fa5eb05e2b557fad0eff2b1bf1f93751
* The ``pw_system`` crash dump now includes FreeRTOS thread backtraces.
Commit: `Add freertos thread backtrace capture to crash dump
<https://pwrev.dev/234155>`__. Bug: :bug:`354767156`.
.. _docs-changelog-2024-10-31-Modules-pw_thread:
pw_thread
---------
Changes:
.. e5db91d7df18444134ce4fede3a1a0c3a9f5c1fc
* The legacy ``thread::Id`` alias has been migrated to
``pw::Thread::id``. Commit: `Migrate to Thread::id
<https://pwrev.dev/238432>`__. Bug: :bug:`373524945`.
.. _docs-changelog-2024-10-31-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. 4b7733f3f0c9e010ccd6bee3ff45d64b92e65fa7
* :c:macro:`PW_APPLY` is a new general macro that supports macro
expansion and makes tokenizing enums easier. Commit: `Create generic
macro for tokenizing enums <https://pwrev.dev/242715>`__. Bug:
:bug:`3627557773`.
.. _docs-changelog-2024-10-31-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. b40ecc98b47a37b187f40408ae0c3d89ef9b5f79
* ``pw_toolchain`` now supports the Arm Cortex-M55F GCC toolchain.
Commit: `Add ARM Cortex-M55F GCC toolchain
<https://pwrev.dev/244672>`__. Bug: :bug:`375562597`.
.. _docs-changelog-2024-10-31-Modules-pw_unit_test:
pw_unit_test
------------
New features:
.. ce0e3e2d1b7eec7cdf59fbb2ceed2b1cb3edd1ec
* The new :c:macro:`PW_TEST_EXPECT_OK`, :c:macro:`PW_TEST_ASSERT_OK`,
and :c:macro:`PW_TEST_ASSERT_OK_AND_ASSIGN` macros provide test matchers
for :ref:`module-pw_status` and :ref:`module-pw_result` values. Commit:
`Define pw::Status matchers <https://pwrev.dev/243615>`__. Bugs:
:bug:`338094795`, :bug:`315370328`.
Changes:
.. 618eaa4f4c1ee0357bdfba85290a9a6e8c9aee71
* :cpp:func:`RUN_ALL_TESTS` is now a function. Previously it was a
macro. Commit: `Use a function for RUN_ALL_TESTS()
<https://pwrev.dev/243889>`__.
.. _docs-changelog-2024-10-31-Modules-pw_watch:
pw_watch
--------
New features:
.. 5e7d1a0fddab1204d94ff43cee833431eda75af8
* ``pw_watch`` can now be invoked through ``bazelisk``. Commit: `Bazel
run support <https://pwrev.dev/242094>`__. Bug: :bug:`360140397`.
.. _docs-changelog-2024-10-31-Docs:
Docs
====
New features:
.. c5e6cab3b190f4cdc32e3209582a7697f2992a85
* The Sense tutorial has expanded guidance around :ref:`handling crashes
and viewing snapshots <showcase-sense-tutorial-crash-handler>`. Commit:
`Add crash handler section to sense tutorial
<https://pwrev.dev/242735>`__. Bug: :bug:`354767156`.
.. _docs-changelog-2024-10-31-Targets:
Targets
=======
.. _docs-changelog-2024-10-31-Targets-RP2350:
RP2350
------
New features:
.. 892394fe74db6decd3799873f910862cef6a182d
* ``MemManage``, ``BusFault``, and ``UsageFault`` exception handlers are
now enabled on the RP2350 target. Commit: `Add MemManage, BusFault &
UsageFault exception handler <https://pwrev.dev/242336>`__. Bug:
:bug:`354767156`.
.. _docs-changelog-2024-10-17:
------------
Oct 17, 2024
------------
Highlights (Oct 04, 2024 to Oct 17, 2024):
* **Math module**: The new :ref:`module-pw_numeric` module is a collection of
mathematical utilities optimized for embedded systems.
* **C++ Coroutines**: The new :ref:`docs-blog-05-coroutines` blog post
discusses the nuances of using coroutines in embedded systems.
* **New SEEDs**: SEEDs :ref:`seed-0103` and :ref:`seed-0128` were accepted.
.. _docs-changelog-2024-10-17-Modules:
Modules
=======
.. _docs-changelog-2024-10-17-Modules-pw_allocator:
pw_allocator
------------
New features:
.. 9aae89c7bab1de5a914c462f814fec6528e27a0f
* The new :cpp:func:`pw::Allocator::MakeUniqueArray` template function
allows a ``UniquePtr`` to hold an array of elements. Commit: `Add
UniquePtr::MakeUniqueArray <https://pwrev.dev/239913>`__.
.. d3a6358972d5897266e2b5ecf50681a8e8456e5b
* The new :cpp:class:`pw::allocator::BlockResult` class communicates the
results and side effects of allocation requests. Commit: `Add
BlockResult <https://pwrev.dev/232212>`__.
Bug fixes:
.. 57183dee645126c67dcccbb479c730492ef168f6
* A data race was fixed. Commit: `Fix data race
<https://pwrev.dev/242736>`__. Bug: :bug:`372446436`.
.. _docs-changelog-2024-10-17-Modules-pw_async2:
pw_async2
---------
New features:
.. 068949bbe9f8a5a03d9b44ae740461c4c01691ca
* The new :cpp:func:`pw::async2::EnqueueHeapFunc` function heap-allocates
space for a function and enqueues it to run on a dispatcher.
Commit: `Add EnqueueHeapFunc <https://pwrev.dev/242035>`__.
Changes:
.. eb03d32b80c25d59000d86fc8417cce91cbc243a
* :cpp:class:`pw::async2::PendFuncTask` now has a default template type
of :cpp:type:`pw::Function`. Commit: `Provide default template type for
PendFuncTask <https://pwrev.dev/242918>`__.
.. _docs-changelog-2024-10-17-Modules-pw_build:
pw_build
--------
New features:
.. 7698704f57a69ff5a913f0b2d43d3cc419d10446
* The newly relanded ``pw_copy_and_patch_file`` feature provides the
ability to patch a file during a Bazel or GN build. Commit: `Add
pw_copy_and_patch_file <https://pwrev.dev/240832>`__.
.. _docs-changelog-2024-10-17-Modules-pw_cli_analytics:
pw_cli_analytics
----------------
New features:
.. 6ae64ef2889810d43682b85e0c793018ae9a507c
* The new :ref:`module-pw_cli_analytics` module collects and transmits
analytics on usage of the ``pw`` command line interface. Commit:
`Initial commit <https://pwrev.dev/188432>`__. Bug: :bug:`319320838`.
.. _docs-changelog-2024-10-17-Modules-pw_console:
pw_console
----------
Bug fixes:
.. 8bd77aba07ab3dce5220b23994cd3ecfbcefda10
* A divide-by-zero error in the ``pw_console`` progress bar was fixed.
Commit: `Fix progress bar division by zero
<https://pwrev.dev/233033>`__.
.. _docs-changelog-2024-10-17-Modules-pw_env_setup:
pw_env_setup
------------
Changes:
.. a789e9c308f3b289c950e8afb3d891fa5b7b39ac
* ``//pw_env_setup/py/pw_env_setup/cipd_setup/black.json`` has been
removed. Commit: `Remove black.json <https://pwrev.dev/241359>`__.
.. c42ec10b3824a5e15bc4e92d2065bd95143e9aad
* Python 2 support has been removed from ``pw_env_setup``. Commit: `Drop
Python 2 support <https://pwrev.dev/242713>`__. Bug: :bug:`373905972`.
.. _docs-changelog-2024-10-17-Modules-pw_numeric:
pw_numeric
----------
New features:
.. 0c98e51f046d2de13e5ea8509452b99beb6776ec
* The new :ref:`module-pw_numeric` module is a collection of
mathematical utilities optimized for embedded systems. Commit: `New
module for mathematical utilities <https://pwrev.dev/240655>`__.
.. 1eadbb9e0d8de149ee300c9f60933878498b3544
* The new :cpp:func:`pw::IntegerDivisionRoundNearest` function performs
integer division and rounds to the nearest integer. It gives the same
result as ``std::round(static_cast<double>(dividend) /
static_cast<double>(divisor))`` but requires no floating point
operations and is ``constexpr``. Commit: `Rounded integer division
<https://pwrev.dev/240656>`__.
.. _docs-changelog-2024-10-17-Modules-pw_protobuf:
pw_protobuf
-----------
Changes:
.. 205570386eac8fe6e0269b7fbbab1449eb565036
* ``oneof`` protobuf fields can't be inlined within a message structure.
They must be encoded and decoded using callbacks. See
:ref:`pw_protobuf-per-field-apis`. Commit: `Force use of callbacks for oneof
<https://pwrev.dev/242392>`__. Bug: :bug:`373693434`.
.. 6efc99b3ee854dd54a0b1465d9014c54e01b21b9
* The ``import_prefix`` parameter in the
``pw_protobuf.options.load_options`` Python function was replaced with
an ``options_files`` parameter that lets you directly specify the
location of ``.options`` files. Commit: `Support directly specifying
options file locations <https://pwrev.dev/240833>`__. Bug:
:bug:`253068333`.
.. _docs-changelog-2024-10-17-Modules-pw_rpc:
pw_rpc
------
Bug fixes:
.. 05e93dadc080e45d624d92b80879297cfade417c
* A bug was fixed where previously ``Call`` objects were not getting
reinitialized correctly. Commit: `Fix Call not getting reset on default
constructor assignment <https://pwrev.dev/239718>`__. Bug:
:bug:`371211198`.
.. _docs-changelog-2024-10-17-Modules-pw_spi:
pw_spi
------
Changes:
.. 4321a46654fae21df8e8fb971cd5c618b8b73d3f
* :cpp:class:`pw::spi::Initiator` now uses a non-virtual interface (NVI)
pattern. Commit: `Use non-virtual interface (NVI) pattern on
pw::spi::Initiator <https://pwrev.dev/236234>`__. Bug: :bug:`308479791`.
.. _docs-changelog-2024-10-17-Modules-pw_stream_uart_mcuxpresso:
pw_stream_uart_mcuxpresso
-------------------------
Changes:
.. d08c60cad881afa835a22d2bbfe36a0d6f018c1c
* :ref:`module-pw_stream_uart_mcuxpresso` is being merged into
:ref:`module-pw_uart_mcuxpresso`. Commit: `Remove dma_stream
<https://pwrev.dev/241201>`__. Bug: :bug:`331617914`.
.. _docs-changelog-2024-10-17-Modules-pw_system:
pw_system
---------
New features:
.. fd6b7a96cd142fcfbf979c2ebf3ea4ac2e342612
* The new ``--debugger-listen`` and ``--debugger-wait-for-client``
options make it easier to debug the ``pw_system`` console. Commit: `Add
\`debugger-listen\` and \`debugger-wait-for-client\` options
<https://pwrev.dev/233752>`__.
.. _docs-changelog-2024-10-17-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. be439834757b0abcd0e81a77a0c8c39beca2d4db
* All domains from ELF files are now loaded by default. Commit: `Load
all domains from ELF files by default <https://pwrev.dev/239509>`__.
Bugs: :bug:`364955916`, :bug:`265334753`.
.. 56aa667aaa527d86241d27c5361e0d27f5aed06d
* CSV databases now include the token's domain as the third column.
Commit: `Include the domain in CSV databases
<https://pwrev.dev/234414>`__. Bug: :bug:`364955916`.
.. 9c37b722d9a807222c289069967222166c8613f5
* Tokenizing enums is now supported. Commit: `Add support for tokenizing
enums <https://pwrev.dev/236262>`__. Bug: :bug:`362753838`.
Changes:
.. 17df82d4c2b77d1667f24f5b27a256dbab31686f
* When a domain is specified, any whitespace will be ignored in domain
names and removed from the database. Commit: `Ignore whitespace in
domain values <https://pwrev.dev/241212>`__. Bug: :bug:`362753840`.
.. _docs-changelog-2024-10-17-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 0125f4a94c827612f1ae863b60d3fa301fbd773c
* The new :ref:`module-pw_toolchain-bazel-compiler-specific-logic`
documentation provides guidance on how to handle
logic that differs between compilers. Commit: `Add Bazel mechansim for
clang/gcc-specific flags <https://pwrev.dev/238429>`__. Bug:
:bug:`361229275`.
.. _docs-changelog-2024-10-17-Modules-pw_uart:
pw_uart
-------
New features:
.. b39ad5c71df860223a8f908219bfdcfbdda1e5f5
* The new :cpp:class:`pw::uart::UartStream` class implements the
:cpp:class:`pw::stream::NonSeekableReaderWriter` interface on top of a
UART device. Commit: `Add pw::uart::UartStream
<https://pwrev.dev/241200>`__. Bug: :bug:`331603164`.
.. f6a7bb781754447aa9eea82af60962070815b4f8
* The new :cpp:class:`pw::uart::UartBlockingAdapter` class provides a
blocking UART interface on top of a
:cpp:class:`pw::uart::UartNonBlocking` device. Commit: `Add
UartBlockingAdapter <https://pwrev.dev/238393>`__. Bug:
:bug:`369679732`.
.. bdcf65850213372533c9422fdec0a199af112161
* The new :cpp:func:`pw::uart::UartNonBlocking::FlushOutput` function
ensures that all enqueued data has been transmitted. Commit: `Add
UartNonBlocking::FlushOutput() <https://pwrev.dev/238572>`__. Bug:
:bug:`370051726`.
.. _docs-changelog-2024-10-17-Modules-pw_web:
pw_web
------
Changes:
.. c4ea179e91c6aee6b9d41b9fe301269189970850
* The ``device`` RPC APIs now support creating request messages for RPCs
and calling the ``device`` API with those request messages. Commit:
`Improvements to \`device\` RPC APIs <https://pwrev.dev/238052>`__.
.. _docs-changelog-2024-10-17-Docs:
Docs
====
New features:
.. 91d4349e08e22c50e5a738dee31cc95724eab50d
* The new :ref:`docs-blog-05-coroutines` blog post discusses the nuances
of using coroutines in embedded systems. Commit: `Add coroutine blog
post <https://pwrev.dev/216111>`__.
Changes:
.. 84375274c2a7dbc0fc29cb1e718d8cdfa05085fa
* Guides for contributing ``pigweed.dev`` documentation have been
consolidated into :ref:`contrib-docs-guides`. Commit: `Consolidate
content for pigweed.dev contributors <https://pwrev.dev/242192>`__.
.. _docs-changelog-2024-10-17-SEEDs:
SEEDs
=====
New features:
.. 385019a0292797dd63f00f008efe36d52d4d698a
* SEED :ref:`seed-0103` was accepted. Commit: `(SEED-0103) pw_protobuf:
Past, present, and future <https://pwrev.dev/133971>`__.
.. ec62be9c7c9e28c8bae26d9e73f1ce341e5e5cd5
* :ref:`seed-0128` was accepted. Commit: `(SEED-0128) Abstracting thread
creation <https://pwrev.dev/206670>`__.
.. _docs-changelog-2024-10-17-Targets:
Targets
=======
.. _docs-changelog-2024-10-17-Targets-rp2040:
RP2040
------
New features:
.. 8e0d91c3f7da31448419584ae9287de57ed5452f
* A new helper, ``flash_rp2350``, was added to
``//targets/rp2040/flash.bzl``. Commit: `Update \`flash_rp2040\` helper
with --chip argument <https://pwrev.dev/242917>`__.
.. _docs-changelog-2024-10-03:
-----------
Oct 3, 2024
-----------
Highlights (Sep 20, 2024 to Oct 3, 2024):
* The :ref:`module-pw_async2` and :ref:`module-pw_containers` docs
now contain code examples that are built and tested alongside the rest
of Pigweed, minimizing the chance that they bit rot over time.
* The new :cpp:class:`pw::async2::Dispatcher` class is a single-
threaded, cooperatively scheduled runtime for async tasks.
* The new :cpp:class:`pw::uart::UartBase` class provides a common
abstract base class for UART interfaces.
* :cpp:class:`pw::rpc::RawServerReaderWriter` and
:cpp:class:`pw::rpc::RawClientReaderWriter` have new methods that let
you directly serialize RPC payloads to the RPC system's encoding buffer
instead of requiring a copy from an externally managed buffer.
.. _docs-changelog-2024-10-03-Modules:
Modules
=======
.. _docs-changelog-2024-10-03-Modules-pw_allocator:
pw_allocator
------------
New features:
.. 020780642847dba69a9b2025f1f698fe3d8e4801
* The new :cpp:func:`pw::allocator::CalculateFragmentation` method
calculates a fragmentation metric. This should not be invoked on-device
unless the device has robust floating-point support. Commit: `Add
MeasureFragmentation <https://pwrev.dev/238417>`__.
.. _docs-changelog-2024-10-03-Modules-pw_async2:
pw_async2
---------
New features:
.. 801fb32919777aefd7a734ce9c2c1e6aec782ab7
* The new :cpp:class:`pw::async2::Dispatcher` class is a single-
threaded, cooperatively scheduled runtime for async tasks. Commit:
`Refactor Dispatcher to raise top-level API out of CRTP
<https://pwrev.dev/237972>`__. Bug: :bug:`342000726`.
.. 846bb7d3672e94c13451bec81098d3304d8395a9
* The :ref:`module-pw_async2` docs now have examples. Commit: `Expand
docs with examples <https://pwrev.dev/234095>`__.
.. _docs-changelog-2024-10-03-Modules-pw_boot:
pw_boot
-------
Changes:
.. fba0833c176a79ec83403fa9d48407c5ddebb99f
* The ``main()`` function forward declaration has been moved out of an
explicit ``extern C`` block to prevent pedantic warnings in newer Clang
toolchains. Commit: `Move main forward declaration out of extern "C"
block <https://pwrev.dev/237333>`__. Bug: :bug:`366374135`.
.. _docs-changelog-2024-10-03-Modules-pw_build:
pw_build
--------
Changes:
.. 53b16cd8d2907855b13bec9159286927de602a72
* The rules that previously existed in ``//pw_build/pigweed.bzl`` have
been split into separate files. If you relied on
``//pw_build/pigweed.bzl`` you may need to update some ``load()``
statements in your Bazel files. Commit: `Break apart pigweed.bzl
<https://pwrev.dev/239133>`__. Bug: :bug:`370792896`.
.. _docs-changelog-2024-10-03-Modules-pw_chrono:
pw_chrono
---------
New features:
.. 279ab4a35543900b62e674d14c2e663532ad5a18
* The new ``--stamp`` Bazel flag ensures that Bazel builds properly
record the actual build time as opposed to a cached value. Commit:
`Properly stamp build time in Bazel <https://pwrev.dev/237809>`__. Bug:
:bug:`367739962`.
.. _docs-changelog-2024-10-03-Modules-pw_containers:
pw_containers
-------------
New features:
.. 819dd2ceb430eae53909bea7d5a23c7743ef0fc2
* The ``pw_containers`` docs now provides examples on how to add
intrusive items to multiple containers. See
:ref:`module-pw_containers-intrusive_list-example`. Commit:
`Multiple container example <https://pwrev.dev/237472>`__.
.. 85469bdd7f4b8eea95fad4514002383e09210a6f
* The :ref:`module-pw_containers` docs now have code examples that are
built and tested as part of the normal upstream Pigweed build, which
helps ensure that they don't bit rot. Commit: `Add examples
<https://pwrev.dev/236612>`__.
Bug fixes:
.. 92ab0326113d1d6732a6d81dcc25abb330053b22
* A bug was fixed where nodes in an ``AATreeItem`` could become
orphaned. Commit: `Fix tree rebalancing <https://pwrev.dev/237415>`__.
.. _docs-changelog-2024-10-03-Modules-pw_log:
pw_log
------
Changes:
.. 5d9a1e84e7c55a7b194a8bf459b720cbba220d0c
* The ``PW_MODULE_LOG_NAME_DEFINED`` macro has been removed. Commit:
`Remove unused macro PW_MODULE_LOG_NAME_DEFINED
<https://pwrev.dev/238554>`__.
.. _docs-changelog-2024-10-03-Modules-pw_metric:
pw_metric
---------
Bug fixes:
.. 30dcf2b202c792599151e7b09699e836e3cc44a3
* A bug causing ``pw::metric::Metric::Dump()`` and
``pw::metric::Group::Dump()`` to log invalid JSON objects was fixed.
Commit: `Emit valid JSON from Metric::Dump
<https://pwrev.dev/237933>`__.
.. _docs-changelog-2024-10-03-Modules-pw_preprocessor:
pw_preprocessor
---------------
Changes:
.. 92438518417d49c3457090c1b3c57f71007743e8
* ``PW_MACRO_ARG_COUNT`` now supports up to 256 arguments. Commit:
`Expand PW_MACRO_ARG_COUNT to 256 arguments
<https://pwrev.dev/237993>`__.
.. _docs-changelog-2024-10-03-Modules-pw_presubmit:
pw_presubmit
------------
Bug fixes:
.. 6422c9ae137ad37a9ec172dcd95f294ce5631f82
* A bug was fixed that was causing Pigweed's auto-generated ``rustdoc``
API references to not be built. ``rustdoc`` documentation at
``pigweed.dev/rustdoc/*`` should be working again. Commit: `Have
docs_build check rust docs <https://pwrev.dev/238189>`__. Bug:
:bug:`369864378`.
.. _docs-changelog-2024-10-03-Modules-pw_rpc:
pw_rpc
------
New features:
.. 8e2fc6cfe825631416043a972cdd93875562a4fd
* :cpp:class:`pw::rpc::RawServerReaderWriter` and
:cpp:class:`pw::rpc::RawClientReaderWriter` have new methods that let
you directly serialize RPC payloads to the RPC system's encoding buffer
instead of requiring a copy from an externally managed buffer. Commit:
`Add callback writes to raw RPC call objects
<https://pwrev.dev/239353>`__.
.. _docs-changelog-2024-10-03-Modules-pw_spi:
pw_spi
------
New features:
.. c25923e13c339cc678e8900770a512b85064f99a
* ``operator!=`` is now implemented. Commit: `Minor enhancements to
pw::spi::Config <https://pwrev.dev/238932>`__.
Changes:
.. c25923e13c339cc678e8900770a512b85064f99a
* ``operator()``, ``operator==``, and ``operator!=`` are now marked
``constexpr`` to enable compile-time equality checking. Commit: `Minor
enhancements to pw::spi::Config <https://pwrev.dev/238932>`__.
.. _docs-changelog-2024-10-03-Modules-pw_spi_rp2040:
pw_spi_rp2040
-------------
Changes:
.. 783b29c23dd865fde344501c1b99adba4c956479
* ``spi_init()`` from the Pico SDK must be called before using the
``pw_spi`` initiator. Commit: `Minor cleanup
<https://pwrev.dev/236233>`__.
.. _docs-changelog-2024-10-03-Modules-pw_thread:
pw_thread
---------
Changes:
.. 30bdace4866039e26a05f8baa379630e066ad660
* The old ``pw::Thread`` constructor that takes ``void(void*)`` has been
removed from the public API. This is a breaking change. Constructor
usage should be migrated to the new constructor that takes
``pw::Function<void()>``. Commit: `Make the deprecated Thread
constructor private <https://pwrev.dev/236435>`__. Bug:
:bug:`367786892`.
.. 2a0f0dfccc19b86a686777afa647b0c75a87c863
* The ``pw::thread::Thread`` class was renamed to
:cpp:type:`pw::Thread`. Commit: `Migrate from pw::thread::Thread to
pw::Thread <https://pwrev.dev/236723>`__.
.. f1070484e7d2f4e429332c6d8520a3676b8cb965
* ``pw::thread::Id`` has been renamed to ``pw::Thread::id``. Commit:
`Introduce pw::Thread and pw::Thread::id <https://pwrev.dev/236796>`__.
.. _docs-changelog-2024-10-03-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. e26be58d6db0215e6a762a5a28ad74584e9a0482
* The new :c:macro:`PW_TOKENIZER_DEFINE_TOKEN` macro makes it easier to
support tokenized enums and domains. Commit: `Expose API to define new
token entry <https://pwrev.dev/238272>`__. Bug: :bug:`369881416`.
Changes:
.. 02a68bb680ebddeba8f0ad6cbbc6bb81d7568759
* CSV databases now have 4 columns: token, date removed, domain, and
string. The domain column was added as part of :ref:`seed-0105`. Legacy
databases that only support the other 3 columns continue to be
supported. Tokens in legacy databases are always in the default domain
``""``. Commit: `Support CSV databases with the domain
<https://pwrev.dev/234413>`__. Bug: :bug:`364955916`.
.. _docs-changelog-2024-10-03-Modules-pw_toolchain:
pw_toolchain
------------
Changes:
.. bf7078a044353df9683ecb65561a0edca45a4f95
* The ``pw_toolchain`` docs were refactored. Bazel-specific guidance is
now in :ref:`module-pw_toolchain-bazel` and GN-specific guidance is now
in :ref:`module-pw_toolchain-gn`. Commit: `Split out build-system
specific docs <https://pwrev.dev/238816>`__.
.. 3d0fac908c139ce83eed93727601d13747b03bf7
* The Bazel rules at ``//pw_toolchain/args/BUILD.bazel`` moved to
``//pw_toolchain/cc/args/BUILD.bazel``. If you rely on these rules you
may need to update your ``load()`` statements. Commit: `Move
pw_toolchain/args to pw_toolchain/cc/args <https://pwrev.dev/238817>`__.
.. _docs-changelog-2024-10-03-Modules-pw_transfer:
pw_transfer
-----------
Bug fixes:
.. da9a7e7cc2bd983d428949a6f5d85b9757b5178f
* A bug was fixed where resumed transfers would send a window of ``0``
repeatedly. Commit: `Fix offset receive transfer startup
<https://pwrev.dev/237095>`__. Bug: :bug:`368620868`.
.. _docs-changelog-2024-10-03-Modules-pw_uart:
pw_uart
-------
New features:
.. 7dc3b1b2a69972ae19bbe43f922aefd6dda73a3e
* The new :cpp:class:`pw::uart::UartBase` class provides a common
abstract base class for UART interfaces. Commit: `Add UartBase class
<https://pwrev.dev/238092>`__. Bug: :bug:`369678735`.
.. b4e75393442526d409968e4aac685515944b3e3e
* The new :cpp:func:`pw::uart::Uart::ReadAtLeast` method reads data from
the UART and blocks until at least the specified number of bytes have
been received. The new :cpp:func:`pw::uart::Uart::ReadExactly` method
reads data from the UART and blocks until the entire buffer has been
filled. Commit: `Add ReadAtLeast and ReadExactly methods
<https://pwrev.dev/236268>`__. Bug: :bug:`368149122`.
.. f946f6ae13c3bbc2a648b36f9ff55642e9d23b34
* The new :cpp:class:`pw::uart::UartNonBlocking` class provides a
callback-based interface for performing non-blocking UART communication.
It defines the interface that concrete UART implementations must adhere
to. Commit: `Add uart_non_blocking.h API <https://pwrev.dev/210371>`__.
Bugs: :bug:`341356437`, :bug:`331617095`.
.. 1dc9a789f52aad1f0e738a1cfd5993e2272c38d2
* The new :cpp:func:`pw::uart::Uart::SetFlowControl` method lets
applications configure hardware flow control on UART devices. Commit:
`Add method to set flow control <https://pwrev.dev/237953>`__.
Changes:
.. d31705b84d24f0ef17e6b8eef6cae13f96f942e4
* ``pw::uart::Uart::ConservativeReadAvailable()`` was moved to
:cpp:func:`pw::uart::UartBase::ConservativeReadAvailable()` and
``pw::uart::Uart::ClearPendingReceiveBytes()`` was moved to
:cpp:func:`pw::uart::UartBase::ClearPendingReceiveBytes()`. Commit:
`Move non-blocking methods from Uart to UartBase
<https://pwrev.dev/238533>`__. Bug: :bug:`369679732`.
.. _docs-changelog-2024-10-03-Modules-pw_uart_mcuxpresso:
pw_uart_mcuxpresso
------------------
Bug fixes:
.. 94d2c3995c8a14995490ef7de015e933a960c2d5
* A bug was fixed where the ``pw::uart::DmaUartMcuxpresso::Deinit()``
method didn't clear an initialization flag, which caused the
``pw::uart::DmaUartMcuxpresso::Init()`` method to be skipped on
subsequent enables. Commit: `Fix disable bug
<https://pwrev.dev/237394>`__.
.. _docs-changelog-2024-10-03-Docs:
Docs
====
New features:
.. 2ef99131bbb73e475f64281b6515eedba4a8cb79
* The Pigweed blog now has an `RSS feed <https://pigweed.dev/rss.xml>`_.
Commit: `Create RSS feed for blog <https://pwrev.dev/225491>`__. Bug:
:bug:`345857642`.
.. 8f18755dc9a225caacf2b190d1114ebfda4a2642
* The new blog post :ref:`blog-04-fixed-point` outlines how replacing
soft floats with fixed-point arithmetic can result in speed improvements
and binary size reductions without sacrificing correctness. Commit: `Add
fixed point blog <https://pwrev.dev/234312>`__.
Bug fixes:
.. e81cd5e642a0c92264caafb14a2f4931cb14fced
* When a Pigweed module is listed as supporting Rust in
``//docs/module_metadata.json``, a link to that module's ``rustdoc`` API
reference is now auto-generated in the ``pigweed.dev`` site nav. Commit:
`Auto-link to Rust API references <https://pwrev.dev/237934>`__. Bug:
:bug:`328503976`.
.. _docs-changelog-2024-10-03-SEEDs:
SEEDs
=====
Changes:
.. 905bce3bd61280a8254ac5b3b2f78e2d3059faa0
* SEED-0123 was rejected because Pigweed ended up upstreaming the
relevant APIs to ``rules_cc`` instead of sprouting them into a separate
repo. Commit: `(SEED-123) Reject the SEED <https://pwrev.dev/236453>`__.
.. _docs-changelog-2024-10-03-Targets:
Targets
=======
.. a5a199593f1375177d5805f882f303d4c8b8cea2
* The ``main()`` forward declaration for ``emcraft_sf2_som``,
``host_device_simulator``, and ``stm32f429i_disc1_stm32cube`` are no
longer explicitly marked ``extern C`` to prevent pedantic warnings in
newer Clang toolchains. Commit: `Remove implicit extern C
<https://pwrev.dev/237092>`__. Bug: :bug:`366374135`.
.. _docs-changelog-2024-09-19:
------------
Sep 19, 2024
------------
Highlights (Sep 06, 2024 to Sep 19, 2024):
* **New container classes**: The new :cpp:class:`pw::IntrusiveMap` and
:cpp:class:`pw::IntrusiveMultiMap` classes can be used for associative
dictionaries, sorted lists, and more.
* **Protobuf Editions**: Initial support for `Protobuf Editions
<https://protobuf.dev/editions/overview>`__ was added for GN-based and
CMake-based projects.
* **Token domains**: The :ref:`Detokenizer
<module-pw_tokenizer-detokenization>` now supports
:ref:`token domains <seed-0105>`.
.. _docs-changelog-2024-09-19-Modules:
Modules
=======
.. _docs-changelog-2024-09-19-Modules-pw_allocator:
pw_allocator
------------
New features:
.. d5fcc90b39ee7568855390535fa854cea8f33c95
* The new :c:macro:`PW_ALLOCATOR_STRICT_VALIDATION` option lets you
enable more expensive checks to aggressively enforce invariants when
testing. The new :c:macro:`PW_ALLOCATOR_BLOCK_POISON_INTERVAL` option
allows setting the poisoning rate more easily from the build rather than
in code via template parameters. See
:ref:`module-pw_allocator-module-configuration`. Commit: `Add module config
<https://pwrev.dev/232211>`__.
Bug fixes:
.. 82759ccb711c3f34320ae9ae37bf70a029baec57
* A bug was fixed where ``pw_allocator`` always split the first block
even if there was not enough room for the first block to be split into
two, which could cause heap corruption and crashes. Commit: `Check for
room to split the first block <https://pwrev.dev/235312>`__. Bug:
:bug:`366175024`.
.. _docs-changelog-2024-09-19-Modules-pw_assert:
pw_assert
---------
Changes:
.. cfcf0059926589e26f318e29df8733e5a09c2928
* :c:macro:`PW_CHECK_OK` now accepts any expression that's convertible
to :cpp:class:`pw::Status`. Commit: `Update PW_CHECK_OK() to handle any
expr convertible to Status <https://pwrev.dev/234820>`__. Bugs:
:bug:`357682413`, :bug:`365592494`.
.. _docs-changelog-2024-09-19-Modules-pw_async2:
pw_async2
---------
New features:
.. cfcbaf5bbc67288b5e8954f22528c4de9312effe
* The new
:cpp:func:`pw::async2::SimulatedTimeProvider::AdvanceUntilNextExpiration`
utility method is useful for advancing test time without
random periods or endless iterations. Commit: `Add more
SimulatedTimeProvider utilities <https://pwrev.dev/234929>`__.
Changes:
.. ed0fd1f45a3a137965dbb2075227b8ef0e91f935
* Coroutines now log the requested size when an allocation fails.
Commit: `Log size of failed coroutine allocations
<https://pwrev.dev/234801>`__.
.. _docs-changelog-2024-09-19-Modules-pw_build:
pw_build
--------
Bug fixes:
.. 3919d9638b6454512595c8ad39fb8806d4ac9629
* An issue was fixed where bootstrap failed when
``pw_rust_static_library`` was used. Commit: `Fix Undefined identifier
<https://pwrev.dev/232371>`__.
.. _docs-changelog-2024-09-19-Modules-pw_bytes:
pw_bytes
--------
New features:
.. cda5ba673366d189e0ea326a0fa808df181730a7
* The new :cpp:class:`pw::PackedPtr` template class provides a way to
store extra data in the otherwise unused least significant bits of a
pointer. Commit: `Add PackedPtr <https://pwrev.dev/235104>`__.
.. _docs-changelog-2024-09-19-Modules-pw_containers:
pw_containers
-------------
New features:
.. df3b7ba1f94902e81e375ce9935749163c411515
* ``pw::IntrusiveList`` now has a :ref:`size report
<module-pw_containers-intrusivelist-size-report>`. Commit:
`Add IntrusiveForwardList size report to the docs
<https://pwrev.dev/233651>`__.
.. 8a3250d2f4287c2f66c4afd7679f9b10f789e764
* The new :cpp:class:`pw::IntrusiveMap` and
:cpp:class:`pw::IntrusiveMultiMap` classes can be used for associative
dictionaries, sorted lists, and more. Commit: `Add IntrusiveMap and
IntrusiveMultiMap <https://pwrev.dev/216828>`__.
Changes:
.. 314e457eaf3a801115542d777e2157e6df85fb31
* ``pw::IntrusiveList<T>`` was renamed to
``pw::IntrusiveForwardList<T>`` and a new doubly-linked intrusive list
was added as ``pw::containers::future::IntrusiveList<T>``. An alias,
``pw::IntrusiveList<T>``, was added to maintain compatibility with
existing code and will be removed in the future. The original
implementation can still be temporarily enabled by setting
``PW_CONTAINERS_USE_LEGACY_INTRUSIVE_LIST``. Commit: `Add doubly linked
list <https://pwrev.dev/230811>`__. Bug: :bug:`362348318`.
.. _docs-changelog-2024-09-19-Modules-pw_env_setup:
pw_env_setup
------------
Changes:
.. 16f0f6387505dc27e7c1a76387b05524752b4602
* The Git submodule check is now skipped when no ``.git`` file or
directory is detected. Commit: `Add check for git in
_check_submodule_presence <https://pwrev.dev/234212>`__. Bug:
:bug:`365557573`.
.. _docs-changelog-2024-09-19-Modules-pw_ide:
pw_ide
------
Bug fixes:
.. 145b45747105fb95e5625c00a7533e5375d124ea
* When ``clangd`` is not found, ``pw ide sync`` now cleanly handles the
lack of ``clangd`` and successfully completes the rest of the sync.
Commit: `Don't fail sync on missing clangd
<https://pwrev.dev/236475>`__. Bug: :bug:`349189723`.
.. _docs-changelog-2024-09-19-Modules-pw_protobuf:
pw_protobuf
-----------
New features:
.. b299522cffb0a18e07528e923f376ceee3e9c188
* Initial support for `Protobuf Editions
<https://protobuf.dev/editions/overview>`__ was added for GN-based and
CMake-based projects. Commit: `Basic edition support
<https://pwrev.dev/235873>`__.
.. _docs-changelog-2024-09-19-Modules-pw_spi_linux:
pw_spi_linux
------------
Bug fixes:
.. eefd313bdb13098552cd713598b937debe80d3d4
* A performance issue was fixed where ``Configure()`` was being called
on each ``pw::spi::Device::WriteRead()`` call. Commit: `Avoid
unnecessary ioctl()s in Configure() <https://pwrev.dev/235877>`__. Bug:
:bug:`366541694`.
.. _docs-changelog-2024-09-19-Modules-pw_spi_mcuxpresso:
pw_spi_mcuxpresso
-----------------
Changes:
.. 9d175062d56972f082ce99753092b75419a228ce
* ``pw::spi::McuxpressoInitiator::DoConfigure()`` was renamed to
``pw::spi::McuxpressoInitiator::DoConfigureLocked()``. Commit: `Rename
DoConfigure() to DoConfigureLocked() <https://pwrev.dev/236232>`__.
.. _docs-changelog-2024-09-19-Modules-pw_sys_io_stm32cube:
pw_sys_io_stm32cube
-------------------
Bug fixes:
.. b0f73feb04effde3b7751c53c21b7a163f234eb8
* A bug was fixed where the GPIO mode of the UART RX GPIO pin on
STM32F1XX devices was not being correctly set. Commit: `Fix UART RX GPIO
mode for f1xx family <https://pwrev.dev/235332>`__.
.. _docs-changelog-2024-09-19-Modules-pw_system:
pw_system
---------
New features:
.. 5e148c19477521afbbedcc8a91a2c5b2a07bc334
* The console's new ``timestamp_decoder`` constructor parameter lets
applications provide custom timestamp parsers. Commit: `Support
timestamp parser as an argument <https://pwrev.dev/234931>`__. Bug:
:bug:`344606797`.
Changes:
.. faac61757b5428be3787729d328f6f2f3ebfa9f1
* The log library header (``pw_system/log.h``) of ``pw_system`` is now
public and can be used outside of ``pw_system``. Commit: `Make log
library header public <https://pwrev.dev/233411>`__.
.. _docs-changelog-2024-09-19-Modules-pw_thread:
pw_thread
---------
Changes:
.. 8a67d6b57b526757ffa010be2be402c42cd13ac4
* ``pw::thread::Thread`` now takes ``pw::Function<void()>``, which
should be used in place of the ``void(void*)`` function pointer and
``void*`` argument. Commit: `Mark legacy function* / void* constructor
as deprecated <https://pwrev.dev/236454>`__. Bug: :bug:`367786892`.
.. _docs-changelog-2024-09-19-Modules-pw_tokenizer:
pw_tokenizer
------------
New features:
.. 9fb87e78e4c41778fc950714d58e6602f63d27e6
* The :ref:`Detokenizer <module-pw_tokenizer-detokenization>` now
supports :ref:`token domains <seed-0105>`. Commit:
`Add token domain support to Detokenizer <https://pwrev.dev/234968>`__.
Bug: :bug:`362752722`.
.. 08ff555993b8ab250ea03a9f12aaf5c2d1c9c705
* :py:class:`pw_tokenizer.tokens.Database` now supports :ref:`token
domains <seed-0105>`. Commit: `Use domains in the Python tokens.Database
class <https://pwrev.dev/234412>`__.
.. _docs-changelog-2024-09-19-Modules-pw_toolchain:
pw_toolchain
------------
New features:
.. 40f756e2d3c40eeb32832309dbcae989fb750268
* ``WORKSPACE`` toolchain registration is now configurable so that
downstream projects can manually control which toolchains get
registered. Commit: `Make toolchain registration configurable
<https://pwrev.dev/235712>`__. Bug: :bug:`346388161`.
.. _docs-changelog-2024-09-19-Modules-pw_transfer:
pw_transfer
-----------
Bug fixes:
.. f1f654a15a3adce476c2d68643eee56f3c225dd4
* A bug was fixed where a handshake timeout was not set after
``START_ACK`` is processed. Commit: `Bugfix for start handshake, and
rate limit logs <https://pwrev.dev/236572>`__. Bug: :bug:`361281209`.
Changes:
.. 2496aee1a4ab3d98526a7357943b69347a39903a
* When a receiver receives a chunk of data it already has the receiver
now sends a ``PARAMETERS_CONTINUE`` chunk instead of requesting
retransmission. Commit: `Send continue parameters for already received
chunks <https://pwrev.dev/235100>`__.
.. f1f654a15a3adce476c2d68643eee56f3c225dd4
* TX data chunk logs have been rate-limited to only send once every 3
seconds. Commit: `Bugfix for start handshake, and rate limit logs
<https://pwrev.dev/236572>`__. Bug: :bug:`361281209`.
.. _docs-changelog-2024-09-19-Modules-pw_uart_mcuxpresso:
pw_uart_mcuxpresso
------------------
New features:
.. e8ab2b0ac31c0dde6febd0d384c0ea7d688f6803
* Flow control can now be configured. Commit: `Add support for
configuring flow control <https://pwrev.dev/236896>`__. Bug:
:bug:`368150004`.
Changes:
.. e8ab2b0ac31c0dde6febd0d384c0ea7d688f6803
* Flow control, parity mode, and stop bits now have default values.
Commit: `Add support for configuring flow control
<https://pwrev.dev/236896>`__. Bug: :bug:`368150004`.
.. _docs-changelog-2024-09-19-Build-systems:
Build systems
=============
.. _docs-changelog-2024-09-19-Build-systems-Bazel:
Bazel
-----
New features:
.. 4ceb5b8bf0faf75c0b051114abf85a2ea73ca39c
* The new ``do_not_build`` tag specifies targets that should be excluded
from wildcard builds. The new ``do_not_run_test`` tag specifies test
targets that should be built but not executed. Commit: `Introduce
do_not_build, do_no_run_test tags <https://pwrev.dev/223492>`__. Bug:
:bug:`353531487`.
.. 54679d205e4888302ab24882e6fb64bf8ba964c6
* `Platform-based flags <https://github.com/bazelbuild/proposals/blob/ma
in/designs/2023-06-08-platform-based-flags.md>`__ have been re-enabled.
Commit: `Re-enable platform-based flags <https://pwrev.dev/234135>`__.
Bug: :bug:`301334234`.
.. _docs-changelog-2024-09-19-Miscellaneous:
Miscellaneous
=============
Bug fixes:
.. 982c7f42878871e7f85dbc5420ff17f0b8ede237
* An issue was fixed where the Fuchsia SDK was always fetched during
Bazel workspace initialization and caused unnecessary downloads. Commit:
`Use @fuchsia_clang as a cipd repository <https://pwrev.dev/233531>`__.
Bug: :bug:`346416385`.
-----------
Sep 5, 2024
-----------
.. note::
This changelog update is shorter than previous ones because we're
experimenting with only showing user-facing new features, changes,
and bug fixes. I.e. we're omitting commits that don't affect
downstream Pigweed projects.
Highlights (Aug 24, 2024 to Sep 5, 2024):
* **New backends**: :ref:`module-pw_async_fuchsia` (a ``pw_async``
backend for Fuchsia that implements ``Task`` and ``FakeDispatcher``),
:ref:`module-pw_log_fuchsia` (a ``pw_log`` backend for Fuchsia
that uses the ``fuchsia.logger.LogSink`` FIDL API to send logs),
:ref:`module-pw_random_fuchsia` (a ``pw_random`` backend for Fuchsia
that implements :cpp:class:`pw::random::RandomGenerator`)
and :ref:`module-pw_uart_mcuxpresso` (a ``pw_uart`` backend for
NXP MCUXpresso devices).
* **New theme**: The underlying Sphinx theme powering ``pigweed.dev`` is now
`PyData <https://pydata-sphinx-theme.readthedocs.io/en/stable/>`_. In
addition to improving website usability, this theme should also reduce
the ``pigweed.dev`` maintenance workload over time. See
:ref:`seed-0130` for more information.
* **Arm Cortex-M55 support**: ``pw_toolchain`` and ``pw_system`` now
support Arm Cortex-M55 cores.
* **Bazel cloud demo**: The new :ref:`Bazel cloud features
<showcase-sense-tutorial-bazel_cloud>`
page in the Sense tutorial shows you how to use BuildBuddy
to share logs and speed up builds with remote caching.
Modules
=======
pw_async2
---------
* The new :cpp:class:`pw::async2::TimeProvider` class can be used to
create timers in a dependency-injection-friendly way.
Commit: `Add TimeProvider
<https://pwrev.dev/232411>`__
pw_async_fuchsia
----------------
* :ref:`module-pw_async_fuchsia` is a new ``pw_async`` backend for Fuchsia
that implements ``Task`` and ``FakeDispatcher``.
Commit: `Create pw_async Fuchsia backend
<https://pwrev.dev/230896>`__
pw_chrono
---------
* :cpp:class:`pw::chrono::VirtualClock` is a new virtual base class for
timers that enables writing
timing-sensitive code that can be tested using simulated clocks such as
:cpp:class:`pw::chrono::SimulatedSystemClock`.
Commit: `Add VirtualClock
<https://pwrev.dev/233031>`__
pw_cli
------
* The new :py:meth:`pw_cli.git_repo.GitRepo.commit_date()` method returns
the datetime of a specified commit.
Commit: `Add in option to retrieve commit date
<https://pwrev.dev/216275>`__
pw_digital_io_mcuxpresso
------------------------
* The GPIO clock is now enabled even when GPIO is disabled.
Commit: `Enable gpio clock even when disabling gpio
<https://pwrev.dev/232131>`__
(issue `#356689514 <https://pwbug.dev/356689514>`__)
pw_log_fuchsia
--------------
* :ref:`module-pw_log_fuchsia` is a new ``pw_log`` backend that uses the
``fuchsia.logger.LogSink`` FIDL API to send logs.
Commit: `Create pw_log Fuchsia backend
<https://pwrev.dev/231052>`__
pw_log_rpc
----------
* ``pw_log_rpc.LogStreamHandler.listen_to_logs()`` was renamed to
:py:meth:`pw_log_rpc.LogStreamHandler.start_logging()`.
Commit: `Invoke pw.log.Logs.Listen() to restore prior behavior
<https://pwrev.dev/233991>`__
(issue `#364421706 <https://pwbug.dev/364421706>`__)
pw_log_zephyr
-------------
* Use of shell ``printf`` macros within ``if`` blocks that don't use
braces no longer causes compile errors.
Commit: `Make shell printf macros safe for use in if/else blocks
<https://pwrev.dev/232031>`__
pw_package
----------
* ``picotool`` installation on macOS was fixed.
Commit: `Fix pictotool install on mac
<https://pwrev.dev/234238>`__
pw_random_fuchsia
-----------------
* :ref:`module-pw_random_fuchsia` provides an implementation of
:cpp:class:`pw::random::RandomGenerator` that uses Zircon.
Commit: `Create Fuchsia backend for pw_random
<https://pwrev.dev/230895>`__
pw_rpc
------
* New documentation (:ref:`module-pw_rpc-guides-raw-fallback`) was added that
explains how to define a raw method within a non-raw service.
Commit: `Provide examples of raw methods in docs
<https://pwrev.dev/232877>`__
* Many RPC-related classes were moved out of ``pw_hdlc`` and into
``pw_rpc`` or ``pw_stream``.
Commit: `Relocate RPC classes from pw_hdlc
<https://pwrev.dev/230172>`__
(issues `#330177657 <https://pwbug.dev/330177657>`__,
`#360178854 <https://pwbug.dev/360178854>`__)
pw_spi_mcuxpresso
-----------------
* The new ``pw::spi::FifoErrorCheck`` enum lets you configure whether
``pw::spi::McuxpressoResponder`` instances should log FIFO errors.
Commit: `Add check_fifo_error to responder config
<https://pwrev.dev/232215>`__
pw_stream_uart_linux
--------------------
* The new :cpp:struct:`pw::stream::UartStreamLinux::Config` struct lets
you configure baud rate and control flow.
Commit: `Add Config struct
<https://pwrev.dev/233591>`__
(issue `#331871421 <https://pwbug.dev/331871421>`__)
pw_sync
-------
* :cpp:func:`pw::sync::InterruptSpinLock::try_lock` and similar functions
have been annotated with ``[[nodiscard]]`` which means that ignoring
their return values will result in compiler warnings.
Commit: `[[nodiscard]] for try_lock() and similar functions
<https://pwrev.dev/229311>`__
pw_system
---------
* :ref:`module-pw_system` now supports Arm Cortex-M55 systems.
Commit: `Support ARM Cortex M55 system
<https://pwrev.dev/231632>`__
(issue `#361691368 <https://pwbug.dev/361691368>`__)
pw_thread
---------
* :cpp:class:`pw::thread::Options` has moved to its own header
(``pw_thread/options.h``) to make it possible to work with the class
without relying on the thread facade.
Commit: `Move pw::thread::Options to its own header
<https://pwrev.dev/232151>`__
pw_tokenizer
------------
* In Python the detokenizer prefix is now set in the
:py:class:`pw_tokenizer.detokenize.Detokenizer` constructor.
Commit: `Set prefix in Detokenizer; fix typing issues
<https://pwrev.dev/234311>`__
pw_toolchain
------------
* Arm Cortex-M55 toolchain support was added.
Commit: `Add ARM Cortex-M55 toolchain
<https://pwrev.dev/231631>`__
(issue `#361691368 <https://pwbug.dev/361691368>`__)
pw_uart_mcuxpresso
------------------
* The new :ref:`module-pw_uart_mcuxpresso` module is a
:ref:`module-pw_uart` backend for NXP MCUXpresso devices.
Commit: `Introduce DMA UART backend for NXP devices
<https://pwrev.dev/232831>`__
Docs
====
* New documentation (:ref:`docs-pw-style-cpp-logging`) about logging best
practices was added.
Commit: `Add logging recommendations
<https://pwrev.dev/210204>`__
* The new :ref:`Bazel cloud features <showcase-sense-tutorial-bazel_cloud>`
page in the Sense tutorial shows you how to use BuildBuddy
to share logs and speed up builds with remote caching.
Commit: `Add cloud build section to Sense tutorial
<https://pwrev.dev/233751>`__
(issue `#363070027 <https://pwbug.dev/363070027>`__)
* :ref:`docs-contributing` now links to good first issues for people who
want to contribute to upstream Pigweed.
Commit: `Add link to good first issue list
<https://pwrev.dev/233652>`__
* ``pigweed.dev/live`` now links to the Pigweed Live meeting notes.
Commit: `Add shortlink for Pigweed Live notes
<https://pwrev.dev/232032>`__
Targets
=======
RP2350
------
* RP2350 crash snapshots now show the correct architecture.
Commit: `Fix architecture in crash snapshot
<https://pwrev.dev/232231>`__
(issue `#362506213 <https://pwbug.dev/362506213>`__)
------------
Aug 23, 2024
------------
.. _Google Pigweed comes to our new RP2350: https://www.raspberrypi.com/news/google-pigweed-comes-to-our-new-rp2350/
Highlights (Aug 8, 2024 to Aug 23, 2024):
* **RP2350 Support**: Pigweed now supports the new Raspberry Pi RP2350 MCU.
Check out `Google Pigweed comes to our new RP2350`_ on the Raspberry Pi
blog for the full story and :ref:`showcase-sense` to try it out.
Build systems
=============
Bazel
-----
* `Add missing counting_semaphore and thread_yield backends
<https://pwrev.dev/228392>`__
Modules
=======
pw_allocator
------------
* `Disable example spin_lock test on RP2
<https://pwrev.dev/231251>`__
(issues `#358411629 <https://pwbug.dev/358411629>`__,
`#361354335 <https://pwbug.dev/361354335>`__)
pw_async2
---------
The new ``pw::async2::MakeOnceSenderAndReceiver()`` function template makes it
easier to simultaneously create a sender and receiver for asynchronously
sending values. The new ``pw::async2::MakeOnceSenderAndReceiver()`` function
template works similarly but is used for references.
* `Create OnceSender & OnceReceiver
<https://pwrev.dev/226231>`__
(issue `#350994818 <https://pwbug.dev/350994818>`__)
* `Remove accidental macro #undef
<https://pwrev.dev/229275>`__
pw_bloat
--------
The ``pw bloat`` CLI command now supports a ``--custom-config`` option to
specify a custom Bloaty config file so that non-memory regions can be
analyzed.
* `Support custom bloaty configs in CLI command
<https://pwrev.dev/216133>`__
pw_bluetooth
------------
* `Create more emboss event definitions
<https://pwrev.dev/231091>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Add create connection cancel return
<https://pwrev.dev/230251>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Add LEReadSupportedStates emboss event
<https://pwrev.dev/228961>`__
* `Add HCI Command OpCode definitions
<https://pwrev.dev/228672>`__
* `Add more emboss definitions
<https://pwrev.dev/228671>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Make SupportedCommands emboss struct more ergonomic
<https://pwrev.dev/228155>`__
pw_bluetooth_proxy
------------------
* `Release H4 buff on error
<https://pwrev.dev/229011>`__
pw_bluetooth_sapphire
---------------------
* `Add common bt-host clang warnings
<https://pwrev.dev/228651>`__
(issue `#345799180 <https://pwbug.dev/345799180>`__)
* `Add new emboss compiler file ir_data_fields.py
<https://pwrev.dev/228655>`__
(issue `#358665524 <https://pwbug.dev/358665524>`__,
`#335724776 <https://pwbug.dev/335724776>`__)
pw_build
--------
The new ``glob_dirs()`` Starlark helper returns a list of directories matching
the provided glob pattern. The new ``match_dir()`` Starlark helper returns a
single directory that matches the provided glob pattern and fails if there's
more than one match.
* `Add mod proc_macro to rust macro targets
<https://pwrev.dev/230013>`__
* `Remove output_name attr in rust_library
<https://pwrev.dev/230012>`__
* `Make pw_load_phase_test host only
<https://pwrev.dev/230072>`__
* `Add glob_dirs() Starlark helper
<https://pwrev.dev/228956>`__
pw_channel
----------
* `Ensure that stream_channel_test resources live forever
<https://pwrev.dev/228154>`__
(issue `#358078118 <https://pwbug.dev/358078118>`__)
pw_cpu_exception_cortex_m
-------------------------
* `Fix cpu exception handler on armv8m
<https://pwrev.dev/231372>`__
(issue `#323215726 <https://pwbug.dev/323215726>`__)
pw_display
----------
The new :ref:`module-pw_display` experimental module provides graphic display
support and framebuffer management.
* `Color library
<https://pwrev.dev/229606>`__
(issue `#359953386 <https://pwbug.dev/359953386>`__)
* `Create module directory
<https://pwrev.dev/229712>`__
pw_env_setup
------------
* `Get bazelisk instead of bazel
<https://pwrev.dev/226376>`__
(issue `#355438774 <https://pwbug.dev/355438774>`__)
pw_grpc
-------
When a frame with a payload has a stream-reset error, the payload is now skipped.
* `Improve logging when receiving unknown RPC
<https://pwrev.dev/231011>`__
* `Skip HTTP2 frame payload for frames that result in stream reset
<https://pwrev.dev/230951>`__
pw_i2c_rp2040
-------------
The ``clock_frequency`` field in ``pw::i2c::Rp2040Initiator::Config`` has been
renamed to ``clock_frequency_hz``.
* `Include label in clock_frequency
<https://pwrev.dev/221412>`__
pw_ide
------
``pw_ide`` now searches all parent directories for the presence of a
``pigweed.json`` file to determine the root directory. The workspace
root can be programmatically configured via the new
``pw_ide.settings.PigweedIdeSettings.workspace_root`` property. The
``pigweed.activateBazeliskInNewTerminals`` option in VS Code now defaults
to ``false``.
* `Fix .pw_ide.yaml paths
<https://pwrev.dev/230991>`__
* `Support different workspace root
<https://pwrev.dev/217220>`__
* `Disable Bazelisk auto-activation by default
<https://pwrev.dev/228493>`__
(issue `#358384211 <https://pwbug.dev/358384211>`__)
pw_kvs
------
References to ``pw::kvs::Key`` must be replaced with ``std::string_view``.
* `Remove unnecessary Key alias and test
<https://pwrev.dev/229976>`__
* `Pass EntryHeader by const reference
<https://pwrev.dev/229727>`__
(issue `#254601862 <https://pwbug.dev/254601862>`__)
* `Move inline variable definition to .cc file
<https://pwrev.dev/228514>`__
(issue `#357162923 <https://pwbug.dev/357162923>`__)
pw_module
---------
* `Fix OWNERS file parsing
<https://pwrev.dev/226177>`__
pw_multibuf
-----------
The ``pw::multibuf::MultiBuf::Chunks()`` method and
``pw::multibuf::MultiBuf::ChunkIterable`` class have been removed; use the
new ``pw::multibuf::MultiBufChunks`` class instead.
* `Restructure ChunkIterable
<https://pwrev.dev/230892>`__
* `Comment updates for consistency
<https://pwrev.dev/230891>`__
pw_package
----------
* `Use bazel to build picotool package
<https://pwrev.dev/229431>`__
pw_preprocessor
---------------
The new ``PW_MODIFY_DIAGNOSTIC_CLANG`` define lets you handle Clang-only
warnings separately from other compilers.
* `Test GCC/Clang diagnostic modification macros
<https://pwrev.dev/231336>`__
* `Introduce PW_MODIFY_DIAGNOSTIC_CLANG
<https://pwrev.dev/231332>`__
(issue `#356935569 <https://pwbug.dev/356935569>`__)
* `Expand comment for PW_PACKED
<https://pwrev.dev/226994>`__
pw_rpc
------
Java client: The new ``PacketByteFactory`` Java class is a helper for creating
request and response packets during testing.
Python client: The ``pw_rpc.console_tools.watchdog.Watchdog`` Python class has a
new ``stop()`` method to stop the watchdog. The
``pw_rpc.callback_client.call.Call`` Python class now accepts a
``max_responses`` argument that lets you limit how many responses should be
received after a streaming RPC call. The ``ignore_errors``,
``cancel_duplicate_calls``, and ``override_pending_options`` arguments
previously available in some Python client methods have been removed.
TypeScript client: The ``invoke()`` method in the TypeScript client now accepts
a ``maxResponses`` argument which lets you limit how many responses to a
streaming RPC call should be stored.
* `Avoid recompiling protos for every test
<https://pwrev.dev/230135>`__
(issue `#360184800 <https://pwbug.dev/360184800>`__)
* `Fix typing in unaryWait return value in TS client
<https://pwrev.dev/231071>`__
* `Create PacketByteFactory
<https://pwrev.dev/230011>`__
(issue `#360174359 <https://pwbug.dev/360174359>`__)
* `Add stop method to Watchdog
<https://pwrev.dev/230692>`__
(issue `#350822543 <https://pwbug.dev/350822543>`__)
* `Limit maximum stored responses in TypeScript client
<https://pwrev.dev/229975>`__
* `Add missing Bazel test rules
<https://pwrev.dev/230691>`__
* `Restore RpcIds for testing; move packet encoding to packets.py
<https://pwrev.dev/230471>`__
* `Limit maximum stored responses in Python client
<https://pwrev.dev/229974>`__
(issue `#262749163 <https://pwbug.dev/262749163>`__)
* `Remove deprecated / obsolete features
<https://pwrev.dev/229908>`__
* `Fix open in callback_client
<https://pwrev.dev/169174>`__
(issue `#309159260 <https://pwbug.dev/309159260>`__)
* `Merge PendingRpc and RpcIds
<https://pwrev.dev/228952>`__
* `Require an output function for channels
<https://pwrev.dev/227855>`__
pw_spi_linux
------------
* `Remove linkage specification from cli main
<https://pwrev.dev/230291>`__
pw_status
---------
The ``StatusWithSize::size_or()`` method has been removed.
* `Convert StatusWithSize to Doxygen
<https://pwrev.dev/229980>`__
* `Remove StatusWithSize::size_or()
<https://pwrev.dev/229979>`__
pw_stream
---------
* `Disable mpsc_stream_test for Pi Pico
<https://pwrev.dev/231212>`__
(issue `#361369435 <https://pwbug.dev/361369435>`__)
pw_system
---------
The ``pw_system.device.Device`` class constructor now accepts an ``Iterable``
of proto libraries rather than a ``list``.
* `Add type annotation to pw_system.device.Device() write arg
<https://pwrev.dev/229653>`__
* `Update Device ctor to take Iterable of proto libraries
<https://pwrev.dev/229811>`__
pw_thread
---------
* `Disable test_thread_context_facade_test on Pi Pico
<https://pwrev.dev/231291>`__
(issue `#361369192 <https://pwbug.dev/361369192>`__)
pw_tokenizer
------------
* `Remove unsupported C++11 and C++14 code
<https://pwrev.dev/222432>`__
pw_trace_tokenized
------------------
* `Fix TokenizedTracer initialization
<https://pwrev.dev/230314>`__
(issue `#357835484 <https://pwbug.dev/357835484>`__)
pw_transfer
-----------
Transfer handler registration and unregistration functions now return a boolean
indicating success or failure. The C++ client now always includes a protocol
version in the final chunk.
* `Add return values to handler registrations
<https://pwrev.dev/230912>`__
* `Always set protocol version in final chunk
<https://pwrev.dev/229289>`__
pw_unit_test
------------
* `Delete unsupported C++14 compatibility code
<https://pwrev.dev/229972>`__
* `Fix multi-line test macros
<https://pwrev.dev/229314>`__
Docs
====
* `Require unit tests to be in unnamed namespace
<https://pwrev.dev/231211>`__
* `Add structured data to Kudzu blog post
<https://pwrev.dev/230647>`__
(issue `#360924425 <https://pwbug.dev/360924425>`__)
* `Fix Pigweed Live CTA link
<https://pwrev.dev/230693>`__
(issue `#357957451 <https://pwbug.dev/357957451>`__)
* `Replace 'bazel' with 'bazelisk'
<https://pwrev.dev/226377>`__
* `Update Sense flashing instructions
<https://pwrev.dev/229608>`__
* `Update RP2 family udev rules
<https://pwrev.dev/228513>`__
(issue `#355291899 <https://pwbug.dev/355291899>`__)
* `Update "Who's using Pigweed" section
<https://pwrev.dev/228494>`__
* `Update Bazel quickstart mentions
<https://pwrev.dev/228531>`__
* `Launch Sense
<https://pwrev.dev/228431>`__
Targets
=======
rp2350
------
Pigweed now supports the new Raspberry Pi RP2350 MCU.
* `Add support for RP2350
<https://pwrev.dev/228326>`__
(issue `#354942782 <https://pwbug.dev/354942782>`__)
rp2040
------
* `Reset tty flags after successful flash on posix
<https://pwrev.dev/229721>`__
* `Remove references to b/261603269
<https://pwrev.dev/229397>`__
* `Add -fexceptions for the rp2040 PIO assembler
<https://pwrev.dev/229531>`__
* `Get Pico SDK and Picotool from BCR
<https://pwrev.dev/228327>`__
Third-party software
====================
Emboss
------
* `Remove -Wdeprecated-copy from public_config
<https://pwrev.dev/228563>`__
(issue `#345526399 <https://pwbug.dev/345526399>`__)
* `Update emboss to v2024.0809.170004
<https://pwrev.dev/228562>`__
(issue `#345526399 <https://pwbug.dev/345526399>`__)
Fuchsia
-------
* `Update patch to ignore warnings in result.h
<https://pwrev.dev/231253>`__
* `Copybara import
<https://pwrev.dev/231293>`__
Rolls
-----
* `fuchsia_infra: [roll] Roll fuchsia-infra-bazel-rules-bazel_sdk-ci
<https://pwrev.dev/230635>`__
* `fuchsia_infra 54 commits
<https://pwrev.dev/230634>`__
* `go
<https://pwrev.dev/230631>`__
* `rust
<https://pwrev.dev/230472>`__
* `go
<https://pwrev.dev/228811>`__
* `gn
<https://pwrev.dev/228731>`__
* `fuchsia_infra 27 commits
<https://pwrev.dev/228712>`__
* `rust
<https://pwrev.dev/228566>`__
Miscellaneous
=============
* `Change typedef to using
<https://pwrev.dev/230351>`__
* `Handle ignored status comments
<https://pwrev.dev/229652>`__
(issues `#357136096 <https://pwbug.dev/357136096>`__,
`#357139112 <https://pwbug.dev/357139112>`__)
Owners
------
* `Add davidroth@
<https://pwrev.dev/230071>`__
-----------
Aug 7, 2024
-----------
Highlights (Jul 26, 2024 to Aug 7, 2024):
* **Tour of Pigweed**: The new :ref:`Tour of Pigweed <showcase-sense>`
is a hands-on, guided walkthrough of many key Pigweed features working
together in a medium-complexity application.
* **Easier pw_digital_io testing**: The new
``pw::digital_io::DigitalInOutMock`` class is a mock implementation of
``pw:digital_io::DigitalInOut`` that can be used for testing.
* **Code intelligence in VS Code**: The new
:ref:`module-pw_ide-guide-vscode-code-intelligence` document provides
guides on using the code intelligence features of the ``pw_ide``
extension for VS Code.
Build systems
=============
Bazel
-----
* `Get picotool from the BCR
<https://pwrev.dev/227838>`__
(issue `#354270165 <https://pwbug.dev/354270165>`__)
* `Manage pw_ide deps via bzlmod
<https://pwrev.dev/226733>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Manage Java deps through bzlmod
<https://pwrev.dev/226481>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Provide symlink to clangd at root
<https://pwrev.dev/226451>`__
(issue `#355655415 <https://pwbug.dev/355655415>`__)
* `Partial revert of http://pwrev.dev/226007
<https://pwrev.dev/226271>`__
(issue `#352389854 <https://pwbug.dev/352389854>`__)
Modules
=======
pw_allocator
------------
* `Fix bucketed block corruption
<https://pwrev.dev/227604>`__
(issue `#345526413 <https://pwbug.dev/345526413>`__)
* `Add missing include
<https://pwrev.dev/227174>`__
(issue `#356667663 <https://pwbug.dev/356667663>`__)
pw_bluetooth
------------
``ReadLocalSupportedCommandsCommandCompleteEvent`` now provides both a raw bytes
field (``supported_commands_bytes``) and a sub-struct (``supported_commands``)
for easier access to command bits. You can use either ``SupportedCommandsOctet``
or ``SupportedCommands`` to parse a saved ``uint8_t[64]``.
* `Improve ergonomics of emboss SupportedCommands
<https://pwrev.dev/227931>`__
* `Add more emboss definitions
<https://pwrev.dev/227951>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
pw_bluetooth_proxy
------------------
* `Release active connections once zero
<https://pwrev.dev/226400>`__
* `Only log disconnect events for active connections
<https://pwrev.dev/226393>`__
pw_bluetooth_sapphire
---------------------
* `Handle switch warning with pigweed
<https://pwrev.dev/227044>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227043>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227025>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Write Variable PIN Type for Legacy Pairing
<https://pwrev.dev/227042>`__
(issues `#42173830 <https://pwbug.dev/42173830>`__,
`# b/342151162 <https://pwbug.dev/ b/342151162>`__)
* `Add LegacyPairingState to BrEdrConnectionRequest
<https://pwrev.dev/227041>`__
(issue `#42173830 <https://pwbug.dev/42173830>`__)
* `Create and implement LegacyPairingState class
<https://pwrev.dev/227023>`__
(issues `#342150626 <https://pwbug.dev/342150626>`__,
`#42173830 <https://pwbug.dev/42173830>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227040>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227039>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Translate information & additional attributes
<https://pwrev.dev/227038>`__
(issue `#327758656 <https://pwbug.dev/327758656>`__)
* `Return registered services after bredr.Advertise
<https://pwrev.dev/227022>`__
(issue `#327758656 <https://pwbug.dev/327758656>`__)
* `Handle switch enum warning with pigweed
<https://pwrev.dev/227037>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Handle switch warning with pigweed
<https://pwrev.dev/227021>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Fix shadow variable warnings
<https://pwrev.dev/227036>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Add panic to EventTypeToString
<https://pwrev.dev/227035>`__
(issue `#356388419 <https://pwbug.dev/356388419>`__)
* `Switch over to pw::utf8
<https://pwrev.dev/227020>`__
(issue `#337305285 <https://pwbug.dev/337305285>`__)
* `Remove unnecessary cast qual pragma
<https://pwrev.dev/227034>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Fix statement expression extension warnings
<https://pwrev.dev/227033>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Fix variadic macro warnings
<https://pwrev.dev/227019>`__
(issue `#355511476 <https://pwbug.dev/355511476>`__)
* `Add SetupDataPath FIDL handler
<https://pwrev.dev/227018>`__
(issue `#311639690 <https://pwbug.dev/311639690>`__)
* `Create abstract base for IsoStream
<https://pwrev.dev/227017>`__
* `Remove CommandPacketVariant
<https://pwrev.dev/227032>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Use emboss for setting ACL priority
<https://pwrev.dev/227031>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Add test for A2DP offloading
<https://pwrev.dev/227014>`__
(issue `#330921787 <https://pwbug.dev/330921787>`__)
* `Explicitly move WeakRef in GetWeakPtr
<https://pwrev.dev/227013>`__
(issue `#354026910 <https://pwbug.dev/354026910>`__)
* `Clean up some type sizes
<https://pwrev.dev/227012>`__
(issue `#354057871 <https://pwbug.dev/354057871>`__)
* `Use emboss for LELongTermKeyRequestReply
<https://pwrev.dev/227011>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove manufacturer list
<https://pwrev.dev/226472>`__
pw_build
--------
* `Fix configs in pw_rust_executable
<https://pwrev.dev/212171>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
* `Auto disable project builder progress bars
<https://pwrev.dev/226379>`__
pw_chrono_stl
-------------
System clock and timer interfaces have been moved to separate directories so
that you can pick up the backend of one of these without bringing in the other.
This makes it possible to use a custom system timer with the STL system clock,
for example.
* `Move system clock and timer into separate directories
<https://pwrev.dev/225992>`__
pw_clock_tree_mcuxpresso
------------------------
The new ``pw::clock_tree::ClockMcuxpressoClockIp`` class lets you manage
``clock_ip_name_t`` clocks with the clock tree to save power when
``FSL_SDK_DISABLE_DRIVE_CLOCK_CONTROL`` is set.
* `Introduce ClockMcuxpressoClockIp
<https://pwrev.dev/226069>`__
(issue `#355486338 <https://pwbug.dev/355486338>`__)
pw_console
----------
* `Additional UI and code themes
<https://pwrev.dev/226720>`__
* `Bump version of console js, add titles to log panes
<https://pwrev.dev/226831>`__
pw_digital_io
-------------
The new ``pw::digital_io::DigitalInOutMock`` class is a mock implementation
of ``pw:digital_io::DigitalInOut`` that can be used for testing.
* `Add Mock
<https://pwrev.dev/227836>`__
pw_digital_io_linux
-------------------
The default ``pw_log`` logging level changed from ``DEBUG`` to ``INFO``.
* `Set log level to INFO
<https://pwrev.dev/225912>`__
pw_digital_io_rp2040
--------------------
* `Don't discard status returns
<https://pwrev.dev/227712>`__
(issue `#357090965 <https://pwbug.dev/357090965>`__)
pw_env_setup
------------
* `Update rust thumbv7m target
<https://pwrev.dev/226951>`__
* `Add rustc thumbv7m target
<https://pwrev.dev/211991>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
pw_hex_dump
-----------
* `Add rule for pw_hex_dump/log_bytes.h
<https://pwrev.dev/227651>`__
(issue `#357595992 <https://pwbug.dev/357595992>`__)
pw_ide
------
The Pigweed extension for VS Code will now immediately update the code analysis
target if the ``pigweed.codeAnalysisTarget`` setting in ``settings.json`` is
changed. The new ``pigweed.activateBazeliskInNewTerminals`` setting lets you
specify whether the path to Bazelisk should be added when a VS Code terminal is
launched. The new :ref:`module-pw_ide-guide-vscode-code-intelligence` document
provides guides on using the VS Code extension's code intelligence features.
* `VSC extension 1.3.2 release
<https://pwrev.dev/225391>`__
* `Show progress bar on manual refreshes
<https://pwrev.dev/227731>`__
* `Detect manual target change in settings
<https://pwrev.dev/227606>`__
* `Much faster VSC config parsing
<https://pwrev.dev/227605>`__
* `Automatically activate Bazelisk in new terminals
<https://pwrev.dev/226382>`__
* `Use stable clangd path
<https://pwrev.dev/226431>`__
(issue `#355655415 <https://pwbug.dev/355655415>`__)
* `Add inactive source file decoration
<https://pwrev.dev/225733>`__
* `VSC extension refactoring
<https://pwrev.dev/226059>`__
pw_multibuf
-----------
* `Add missing includes
<https://pwrev.dev/227331>`__
(issue `#356667663 <https://pwbug.dev/356667663>`__)
pw_multisink
------------
The new ``pw::multisink::Drain::GetUnreadEntriesCount()`` method is a
thread-safe way to return the number of unread entries in a drain's sink.
* `Interface to read entries count
<https://pwrev.dev/226351>`__
(issue `#355104976 <https://pwbug.dev/355104976>`__)
pw_presubmit
------------
* `Fix incl-lang when not at repo root
<https://pwrev.dev/227185>`__
* `Remove misc program
<https://pwrev.dev/226995>`__
(issue `#356888002 <https://pwbug.dev/356888002>`__)
* `Rename "misc" program to "sapphire"
<https://pwrev.dev/226993>`__
(issue `#356888002 <https://pwbug.dev/356888002>`__)
* `Add new presubmit steps
<https://pwrev.dev/226712>`__
(issue `#356619766 <https://pwbug.dev/356619766>`__)
* `Allow fxbug.dev and crbug.com TODOs
<https://pwrev.dev/226474>`__
* `Expose name of Bazel executable
<https://pwrev.dev/226378>`__
(issue `#355438774 <https://pwbug.dev/355438774>`__)
pw_router
---------
* `Add missing includes
<https://pwrev.dev/227331>`__
(issue `#356667663 <https://pwbug.dev/356667663>`__)
pw_rpc
------
* `Fix TypeScript client streaming return type
<https://pwrev.dev/226717>`__
* `Add yield mode constraint_setting
<https://pwrev.dev/226551>`__
(issue `#345199579 <https://pwbug.dev/345199579>`__)
pw_rust
-------
The new ``pw_rust_USE_STD`` toolchain configuration option lets you control
whether the "std" feature should be used when building executables.
* `Add no_std build to basic_executable
<https://pwrev.dev/211993>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
* `Rename host_executable
<https://pwrev.dev/211992>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
pw_spi_mcuxpresso
-----------------
* `Add SPI_RxError() and SPI_TxError()
<https://pwrev.dev/226992>`__
pw_status
---------
``PW_STATUS_CFG_CHECK_IF_USED`` now defaults to ``true`` in Bazel projects,
meaning that ``pw::Status`` objects returned from function calls must be used or
else a compilation error is raised. See :ref:`module-pw_status-reference-unused`.
* `In Bazel, make Status nodiscard
<https://pwrev.dev/227411>`__
(issue `#357090965 <https://pwbug.dev/357090965>`__)
* `Don't silently discard status returns
<https://pwrev.dev/227277>`__
(issue `#357090965 <https://pwbug.dev/357090965>`__)
pw_symbolizer
-------------
* `Add missing runfiles dep
<https://pwrev.dev/226719>`__
(issue `#355527449 <https://pwbug.dev/355527449>`__)
* `Get llvm-symbolizer path from Bazel
<https://pwrev.dev/226254>`__
(issue `#355527449 <https://pwbug.dev/355527449>`__)
pw_system
---------
The ``pw_system`` console now lets you control host log and device log levels
separately via the new ``--host-log-level`` and ``--device-log-level``
arguments. The new ``echo()``, ``reboot()``, and ``crash()`` methods of
``pw_system.device.Device`` make it easier to access these common
operations. Crash snapshots are now saved to ``/tmp`` (``C:\\TEMP`` on Windows)
by default. Crash detection logs are now printed across multiple lines to make
them easier to spot.
* `Separate host and device console log levels
<https://pwrev.dev/227599>`__
* `Don't use implementation_deps
<https://pwrev.dev/226977>`__
(issues `#304374970 <https://pwbug.dev/304374970>`__,
`#356667663 <https://pwbug.dev/356667663>`__)
* `Add console device aliases for common RPCs
<https://pwrev.dev/226476>`__
* `Save snapshots to /tmp
<https://pwrev.dev/226392>`__
* `Make crash detection logs louder
<https://pwrev.dev/226373>`__
pw_tokenizer
------------
* `decode_optionally_tokenized without a Detokenizer
<https://pwrev.dev/226727>`__
pw_toolchain
------------
* `Clang support for Arm Cortex-M33
<https://pwrev.dev/228391>`__
(issue `#358108912 <https://pwbug.dev/358108912>`__)
* `Register Cortex-M7 toolchain
<https://pwrev.dev/227598>`__
* `Use \`crate_name\` for GN rust targets
<https://pwrev.dev/223391>`__
* `proc_macro GN cross compile
<https://pwrev.dev/215011>`__
* `Rustc cross compile to qemu-clang
<https://pwrev.dev/211994>`__
(issue `#343111481 <https://pwbug.dev/343111481>`__)
* `Expose a symlink to clangd
<https://pwrev.dev/226262>`__
(issue `#355655415 <https://pwbug.dev/355655415>`__)
pw_transfer
-----------
* `Add a delay after opening a stream to delay transfer start
<https://pwrev.dev/225734>`__
(issue `#355249134 <https://pwbug.dev/355249134>`__)
* `Use initial timeout when resending start chunks
<https://pwrev.dev/226452>`__
pw_web
------
The log viewer now defaults to using line wrapping in table cells. The new
``logViews`` property makes it easier to customize each individual log view.
The ``severity`` field for controlling what types of logs to display has
been renamed to ``level``.
* `Add resize handler to message col
<https://pwrev.dev/221433>`__
(issue `#351901512 <https://pwbug.dev/351901512>`__)
* `Change word-wrap to default true and save to state
<https://pwrev.dev/226730>`__
(issue `#354283022 <https://pwbug.dev/354283022>`__)
* `NPM version bump to 0.0.22
<https://pwrev.dev/226726>`__
* `Show REPL message at every run
<https://pwrev.dev/226872>`__
* `NPM version bump to 0.0.21
<https://pwrev.dev/226713>`__
* `Enable custom titles, log-view access
<https://pwrev.dev/226771>`__
(issue `#355272099 <https://pwbug.dev/355272099>`__)
* `Change severity to level
<https://pwrev.dev/225573>`__
(issue `#354282161 <https://pwbug.dev/354282161>`__)
* `Replace column menu with MWC components
<https://pwrev.dev/226151>`__
(issues `#354712931 <https://pwbug.dev/354712931>`__,
`#342452087 <https://pwbug.dev/342452087>`__)
Docs
====
The new :ref:`Tour of Pigweed <showcase-sense>` is a hands-on, guided
walkthrough of many key Pigweed features working together in a medium-complexity
application.
* `Start Sense tutorial
<https://pwrev.dev/220311>`__
* `Fix some bad links in the changelog
<https://pwrev.dev/226811>`__
* `Update changelog
<https://pwrev.dev/226251>`__
Rolls
=====
* `gn
<https://pwrev.dev/227612>`__
* `fuchsia_infra 119 commits
<https://pwrev.dev/227476>`__
* `cmake
<https://pwrev.dev/227289>`__
* `rust
<https://pwrev.dev/227287>`__
* `Clang
<https://pwrev.dev/226725>`__
(issue `#356689444 <https://pwbug.dev/356689444>`__)
* `bazel_skylib
<https://pwrev.dev/226979>`__
* `rust
<https://pwrev.dev/226257>`__
Third-party software
====================
Emboss
------
* `Append public_deps in GN template
<https://pwrev.dev/227062>`__
ICU
---
* `Remove ICU
<https://pwrev.dev/228234>`__
STM32Cube
---------
* `bzlmod-friendly changes
<https://pwrev.dev/226479>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
Miscellaneous
-------------
* `Run 'pw format --fix'
<https://pwrev.dev/227186>`__
------------
Jul 25, 2024
------------
Highlights (Jul 12, 2024 to Jul 25, 2024):
* **Extensive Bazel support in the Pigweed extension for VS Code**:
See :ref:`docs-changelog-20240725-pw_ide` for the full story.
* **Bazel module support**: Upstream Pigweed is now usable as a `Bazel
module <https://bazel.build/external/module>`_ dependency.
* **Trapping backend for pw_assert**: :ref:`module-pw_assert_trap` is a
new backend for :ref:`module-pw_assert` that calls ``__builtin_trap()``
when an assert is triggered.
* **Crash handling in async pw_system**: Crash snapshots can be downloaded
from ``pw_console`` by calling ``device.get_crash_snapshots()`` in the
REPL.
Build systems
=============
Bazel
-----
Toolchain registration moved from ``WORKSPACE`` to ``MODULE.bazel``, making
it possible for downstream projects to use upstream Pigweed's toolchains
directly. Pigweed is now usable as a Bazel module dependency. Pigweed now
provides an example ``.bazelrc`` at ``//pw_build/pigweed.bazelrc`` that
downstream users can copy into their own projects.
* `Remove @pigweed from bzl files
<https://pwrev.dev/226007>`__
(issue `#352389854 <https://pwbug.dev/352389854>`__)
* `Remove stray @pigweed in load statement
<https://pwrev.dev/226006>`__
(issue `#352389854 <https://pwbug.dev/352389854>`__)
* `Move toolchain registration to MODULE.bazel
<https://pwrev.dev/225471>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Enable bzlmod
<https://pwrev.dev/211362>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Remove sanitizers from default program
<https://pwrev.dev/223572>`__
(issue `#301487567 <https://pwbug.dev/301487567>`__)
* `Modernize pip deps style (2)
<https://pwrev.dev/224316>`__
* `Organize and document required flags
<https://pwrev.dev/223817>`__
(issue `#353750350 <https://pwbug.dev/353750350>`__)
* `Use Python toolchain in custom rules
<https://pwrev.dev/224298>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Use Python toolchain in custom rules
<https://pwrev.dev/224272>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Use Python toolchain in custom rules
<https://pwrev.dev/224272>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Modernize pip deps style
<https://pwrev.dev/223871>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Create separate "sanitizers" CI program
<https://pwrev.dev/223595>`__
(issue `#301487567 <https://pwbug.dev/301487567>`__)
* `Run under tsan, ubsan in presubmit
<https://pwrev.dev/223631>`__
(issue `#301487567 <https://pwbug.dev/301487567>`__)
* `Run tests with asan in CQ
<https://pwrev.dev/222792>`__
(issue `#301487567 <https://pwbug.dev/301487567>`__)
Docs
====
The fonts on ``pigweed.dev`` have been updated.
* `Prefer "change" to Google-specific "CL"
<https://pwrev.dev/226004>`__
* `Minor changelog update
<https://pwrev.dev/224271>`__
* `Update pigweed.dev fonts
<https://pwrev.dev/223591>`__
(issue `#353530954 <https://pwbug.dev/353530954>`__)
* `Minor updates
<https://pwrev.dev/223571>`__
* `Update changelog
<https://pwrev.dev/222831>`__
Modules
=======
pw_assert_trap
--------------
:ref:`module-pw_assert_trap` is a new backend for :ref:`module-pw_assert`
that calls ``__builtin_trap()`` when an assert is triggered.
* `Add a new assert backend which traps on assert
<https://pwrev.dev/220135>`__
(issues `#351888988 <https://pwbug.dev/https://pwbug.dev/351888988>`__,
`#351886597 <https://pwbug.dev/https://pwbug.dev/351886597>`__)
pw_async2
---------
The new :cpp:class:`pw::async2::CoroOrElseTask` class lets you run a coroutine
in a task and invokes a handler function on error. The new
:cpp:func:`pw::async2::Task::IsRegistered` method checks if a task is
currently registered with a dispatcher. The new
:cpp:func:`pw::async2::Coro::Empty()` method creates an empty, invalid
coroutine object. The new :cpp:func:`pw::async2::Task::Deregister` method
unlinks a task from a dispatcher and any associated waker values.
* `Fix minor doc issues
<https://pwrev.dev/226111>`__
* `Add CoroOrElseTask
<https://pwrev.dev/225778>`__
* `Add Task::IsRegistered
<https://pwrev.dev/225995>`__
* `Add Coro::Empty
<https://pwrev.dev/225993>`__
* `Add Task::Deregister
<https://pwrev.dev/225775>`__
pw_async2_epoll
---------------
* `Fix block on racing wakeups
<https://pwrev.dev/224291>`__
pw_bluetooth
------------
* `Generate emboss headers in Soong
<https://pwrev.dev/225152>`__
(issue `#352364622 <https://pwbug.dev/352364622>`__)
* `Add generic HCI command definition
<https://pwrev.dev/224931>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
pw_bluetooth_proxy
------------------
* `Create Soong library for pw_bluetooth_proxy
<https://pwrev.dev/225153>`__
(issue `#352393966 <https://pwbug.dev/352393966>`__)
* `Update emboss deps
<https://pwrev.dev/224991>`__
* `Do not pass on NOCP events without credits
<https://pwrev.dev/224434>`__
(issue `#353546115 <https://pwbug.dev/353546115>`__)
* `Have functions handle passing on the packet
<https://pwrev.dev/224433>`__
(issue `#353546115 <https://pwbug.dev/353546115>`__)
* `Update tests to verify number of sent packets
<https://pwrev.dev/224300>`__
* `Remove debugging log
<https://pwrev.dev/224032>`__
(issue `#353546115 <https://pwbug.dev/353546115>`__)
pw_bluetooth_sapphire
---------------------
The latest ``pw_bluetooth_sapphire`` commits were brought
into Pigweed from the Fuchsia repository.
* `Reduce scope of security_manager
<https://pwrev.dev/225036>`__
(issue `#337315598 <https://pwbug.dev/337315598>`__)
* `Cleanup BrEdrConnectionManager test file
<https://pwrev.dev/225035>`__
* `Fix integer conversion warnings
<https://pwrev.dev/225034>`__
(issue `#354057871 <https://pwbug.dev/354057871>`__)
* `Cleanup WritePageScanType into shared test file
<https://pwrev.dev/225033>`__
* `Add missing optional include
<https://pwrev.dev/225051>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Remove unused method
<https://pwrev.dev/224043>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove variant from LE SendCommands
<https://pwrev.dev/224042>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove CommandPacketVariant
<https://pwrev.dev/224041>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove variant from QueueCommand
<https://pwrev.dev/224040>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Remove variant from QueueLeAsyncCommand
<https://pwrev.dev/224112>`__
(issue `#42167863 <https://pwbug.dev/42167863>`__)
* `Create IsoDataChannel
<https://pwrev.dev/224039>`__
(issue `#311639040 <https://pwbug.dev/311639040>`__)
* `Check legacy adv for rand addr in FakeController
<https://pwrev.dev/224038>`__
(issue `#42161900 <https://pwbug.dev/42161900>`__)
* `Use platform-independent format strings
<https://pwrev.dev/224096>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Processing of CIS Established event
<https://pwrev.dev/224037>`__
(issue `#311639432 <https://pwbug.dev/311639432>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/224036>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Cleanup WritePageScanActivity
<https://pwrev.dev/224095>`__
* `Cleanup into shared test file
<https://pwrev.dev/224035>`__
* `Cleanup WriteLocalNameResponse to shared file
<https://pwrev.dev/224094>`__
* `Fix camel case for CIS acronym
<https://pwrev.dev/224034>`__
* `Cleanup Inquiry command packets into shared file
<https://pwrev.dev/224033>`__
* `Implement AcceptCis()
<https://pwrev.dev/224093>`__
(issue `#311639432 <https://pwbug.dev/311639432>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221311>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221250>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Reorganize test_packets.h/.cc files
<https://pwrev.dev/221249>`__
* `Cleanup WriteInquiryScanActivity packets
<https://pwrev.dev/221266>`__
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221265>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221264>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221248>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Remove unneeded #include
<https://pwrev.dev/221262>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221261>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221247>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221246>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Use pw_bytes for endianness conversions
<https://pwrev.dev/221245>`__
(issue `#313665184 <https://pwbug.dev/313665184>`__)
* `Rename link_initiated to outgoing_connection
<https://pwrev.dev/221244>`__
* `Cleanup WriteScanEnable packets into shared file
<https://pwrev.dev/221243>`__
* `Cleanup ReadScanEnable packets into shared file
<https://pwrev.dev/221260>`__
* `Remove alias for BrEdrConnectionRequest
<https://pwrev.dev/221242>`__
* `BrEdrConnectionRequest create HCI connection req
<https://pwrev.dev/221241>`__
* `Add connection role to fake controller
<https://pwrev.dev/221258>`__
(issue `#311639432 <https://pwbug.dev/311639432>`__)
* `Remove double std::move in PairingStateManager
<https://pwrev.dev/221238>`__
* `Fix BrEdrDynamicChannel crash
<https://pwrev.dev/221257>`__
(issue `#42076625 <https://pwbug.dev/42076625>`__)
* `Cleanup BrEdrConnectionRequest and Manager
<https://pwrev.dev/221237>`__
* `Implement IsoStreamServer
<https://pwrev.dev/221256>`__
(issue `#311639275 <https://pwbug.dev/311639275>`__)
* `Modernize fuchsia.hardware.bluetooth.Peer API
<https://pwrev.dev/221255>`__
(issue `#330591131 <https://pwbug.dev/330591131>`__)
* `Rename to secure_simple_pairing_state
<https://pwrev.dev/221236>`__
(issue `#342150626 <https://pwbug.dev/342150626>`__)
* `Use weak hci::BrEdrConnection pointer
<https://pwrev.dev/221253>`__
* `Create and use PairingStateManager class
<https://pwrev.dev/221252>`__
(issues `#342150626 <https://pwbug.dev/342150626>`__,
`#42173830 <https://pwbug.dev/42173830>`__)
* `Implement GetCodecLocalDelayRange
<https://pwrev.dev/221251>`__
(issue `#311639690 <https://pwbug.dev/311639690>`__)
* `Add Bazel rules for FIDL layer
<https://pwrev.dev/221190>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
* `Refactor ScoConnection
<https://pwrev.dev/221189>`__
(issue `#330590954 <https://pwbug.dev/330590954>`__)
* `Fix max connection event length value
<https://pwrev.dev/221188>`__
(issue `#323255182 <https://pwbug.dev/323255182>`__)
* `Add AdvertisingData.ToString
<https://pwrev.dev/221187>`__
(issue `#42157647 <https://pwbug.dev/42157647>`__)
* `Make UUID string parsing optional
<https://pwrev.dev/221234>`__
(issue `#339726884 <https://pwbug.dev/339726884>`__)
* `Add Adapter::GetSupportedDelayRange
<https://pwrev.dev/221233>`__
(issue `#311639690 <https://pwbug.dev/311639690>`__)
* `Clean up legacy advertising report parsing API
<https://pwrev.dev/221185>`__
(issue `#308500308 <https://pwbug.dev/308500308>`__)
* `Add missing climits include
<https://pwrev.dev/221183>`__
(issue `#338408169 <https://pwbug.dev/338408169>`__)
* `Add Emboss support to SendCommand completion
<https://pwrev.dev/221182>`__
(issue `#311639690 <https://pwbug.dev/311639690>`__)
* `Improve naming of android namespace aliases
<https://pwrev.dev/221232>`__
(issue `#335491380 <https://pwbug.dev/335491380>`__)
* `Migrate emboss aliases to new names
<https://pwrev.dev/221181>`__
(issue `#338068316 <https://pwbug.dev/338068316>`__)
* `Add tests for LE Read Max. Adv. Data Length
<https://pwrev.dev/221180>`__
(issue `#338058140 <https://pwbug.dev/338058140>`__)
* `Ensure command is supported before issuing it
<https://pwrev.dev/221178>`__
(issue `#338058140 <https://pwbug.dev/338058140>`__)
* `Use duration_cast for constants
<https://pwrev.dev/221029>`__
(issue `#337928450 <https://pwbug.dev/337928450>`__)
* `Implement extended adv. pdus with fragmentation
<https://pwrev.dev/221177>`__
(issue `#312898345 <https://pwbug.dev/312898345>`__,
`#309013696 <https://pwbug.dev/309013696>`__)
* `Use \`ull\` constants for enums
<https://pwrev.dev/221028>`__
(issue `#337928450 <https://pwbug.dev/337928450>`__)
* `Update semantics of \`bredr.Advertise\`
<https://pwrev.dev/221176>`__
(issues `#330590954 <https://pwbug.dev/330590954>`__,
`#327758656 <https://pwbug.dev/327758656>`__)
* `Add the credit-based flow control RxEngine
<https://pwrev.dev/221175>`__
* `Migrate LEAdvertisingReportSubevent to Emboss
<https://pwrev.dev/221174>`__
(issue `#86811 <https://pwbug.dev/86811>`__)
* `Lenient LEGetVendorCapabilitiesCommandComplete
<https://pwrev.dev/221027>`__
(issues `#337947318 <https://pwbug.dev/337947318>`__,
`#332924521 <https://pwbug.dev/332924521>`__,
`#332924195 <https://pwbug.dev/332924195>`__)
* `Migrate FIDL to bt::testing::TestLoopFixture
<https://pwrev.dev/221172>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
* `Fix all available lint errors
<https://pwrev.dev/221171>`__
* `Move LinkKey simple constructors to the h file
<https://pwrev.dev/221025>`__
* `Add operator!= for LinkKey
<https://pwrev.dev/221049>`__
* `Add extra diagnostics
<https://pwrev.dev/221048>`__
* `Improve management of advertising modes
<https://pwrev.dev/221045>`__
(issue `#309013696 <https://pwbug.dev/309013696>`__)
* `Add Bazel rules for socket library
<https://pwrev.dev/221024>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
* `Update LowEnergyAdvertiser to use std::vector
<https://pwrev.dev/221023>`__
(issue `#312898345 <https://pwbug.dev/312898345>`__,
`#309013696 <https://pwbug.dev/309013696>`__)
* `Add more values to LEEventMask
<https://pwrev.dev/221022>`__
* `Pass hci::AdvertisingIntervalRange as const
<https://pwrev.dev/221044>`__
* `Shorten pw::bluetooth::emboss to pwemb
<https://pwrev.dev/221021>`__
* `Pass extended_pdu booleans through the stack
<https://pwrev.dev/221043>`__
(issue `#312898345 <https://pwbug.dev/312898345>`__,
`#309013696 <https://pwbug.dev/309013696>`__)
* `Update AdvertisingHandleMap for extended PDUs
<https://pwrev.dev/221020>`__
(issue `#312898345 <https://pwbug.dev/312898345>`__,
`#309013696 <https://pwbug.dev/309013696>`__)
* `Update missing header
<https://pwrev.dev/221019>`__
(issue `#331673100 <https://pwbug.dev/331673100>`__)
* `Add the credit-based flow control TxEngine
<https://pwrev.dev/221017>`__
* `Prevent protected member access in TxEngine
<https://pwrev.dev/221016>`__
* `Add Bazel tests
<https://pwrev.dev/221015>`__
* `Fix conversions from iterators to raw pointers
<https://pwrev.dev/221014>`__
(issue `#328282937 <https://pwbug.dev/328282937>`__)
* `Add bt-host Bazel tests
<https://pwrev.dev/221042>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
* `Low energy advertiser general cleanup
<https://pwrev.dev/221041>`__
* `Use using aliases for Emboss type references
<https://pwrev.dev/221012>`__
* `Add Bazel build files
<https://pwrev.dev/221036>`__
(issue `#324105856 <https://pwbug.dev/324105856>`__)
pw_build
--------
``pw_py_binary`` is a new wrapper for ``py_binary`` that provides some
defaults, such as marking all Python binaries as incompatible with MCUs.
* `Introduce pw_py_binary
<https://pwrev.dev/224296>`__
(issue `#258836641 <https://pwbug.dev/258836641>`__)
* `Use incompatible_with_mcu in pw_py_test
<https://pwrev.dev/224294>`__
pw_channel
----------
The new :cpp:class:`pw::channel::StreamChannel` adapter makes it easier for
a channel to interact with an underlying reader and writer stream.
* `Add StreamChannel adapter
<https://pwrev.dev/225651>`__
pw_chrono_freertos
------------------
* `Work around no std::unique_lock in baremetal libc++
<https://pwrev.dev/223636>`__
(issue `#353601672 <https://pwbug.dev/353601672>`__)
pw_chrono_stl
-------------
* `Consolidate SystemTimer into a single thread
<https://pwrev.dev/224295>`__
pw_console
----------
Typing out RPCs to invoke from the web console REPL should now autocomplete
as expected. The web console log viewer now has a default config, defined
at ``//pw_console/py/pw_console/html/defaultconfig.json``. A new boolean
config option, ``recolor_log_lines_to_match_level``, has been added to
allow users to control whether log messages should be restyled to match
their severity level.
* `Fix RPC autocompletion in web kernel
<https://pwrev.dev/225935>`__
* `Set a default config for web console's log viewer
<https://pwrev.dev/225751>`__
* `Pass rpc completions to web_kernel
<https://pwrev.dev/224311>`__
* `Add config option for log message recoloring
<https://pwrev.dev/224475>`__
* `Default WebHandler.kernel_params to an empty dictionary
<https://pwrev.dev/223932>`__
* `Handle web logging in a separate thread
<https://pwrev.dev/223691>`__
* `Cleanup web kernel on page close
<https://pwrev.dev/223178>`__
* `Replace placeholder page with real web console
<https://pwrev.dev/223155>`__
pw_cpu_exception_cortex_m
-------------------------
The new ``PW_CPU_EXCEPTION_CORTEX_M_CRASH_ANALYSIS_INCLUDE_PC_LR``
option lets you control whether PC and LR register values are included
in the ``AnalyzeCpuStateAndCrash()`` analysis.
* `Make PC LR optional
<https://pwrev.dev/221731>`__
* `Fix assembly
<https://pwrev.dev/223131>`__
(issue `#261603269 <https://pwbug.dev/261603269>`__)
* `Temporarily disable tests on Cortex-M33
<https://pwrev.dev/223594>`__
(issues `#353533678 <https://pwbug.dev/353533678>`__,
`#323215726 <https://pwbug.dev/323215726>`__)
pw_crypto
---------
* `Don't build micro-ecc
<https://pwrev.dev/223152>`__
(issue `#261603269 <https://pwbug.dev/261603269>`__)
pw_env_setup
------------
* `Add luci-cv to environment
<https://pwrev.dev/222811>`__
pw_grpc
-------
* `Fix shadowed variable warning
<https://pwrev.dev/225931>`__
.. _docs-changelog-20240725-pw_ide:
pw_ide
------
General updates: ``pw_ide`` now detects Bazel projects based on the presence
of ``MODULE.bazel`` files. The :ref:`module-pw_ide` docs have been revamped.
Shared VS Code settings can now be stored in ``.vscode/settings.shared.json``.
The extension no longer attempts to infer the working directory if a project
root isn't explicitly provided; instead it prompts users to manually specify
the project root. The VS Code extension now has better support for Fish
terminals.
VS Code extension updates related to code intelligence in Bazel-based projects:
The new ``Pigweed: Select Code Analysis Target`` command controls which Bazel
target in your project to use for code intelligence. The new ``Pigweed: Refresh
Compile Commands`` command lets you manually refresh code intelligence data.
There's also a ``Pigweed: Refresh Compile Commands and Select Code Analysis
Target`` that combines these two steps. In the VS Code status bar there's a new
icon to indicate whether ``clangd`` code intelligence is on or off. Code
intelligence data compilation output is now streamed so that you can monitor
the progress of the tool in real-time. The easiest way to access these logs is
by running the new ``Pigweed: Open Output Panel`` command. The extension now
supports a ``.clangd.shared`` file that can be used to control project-wide
``clangd`` settings.
VS Code extension updates related to other Bazel tools: The extension now
bundles Bazelisk and Buildifier. These bundled versions get updated when the
extension itself updates. The extension recommends users to use these bundled
versions by default. You can use the new ``Activate Bazelisk in Terminal``
command to manually specify which Bazelisk version to use.
* `Support bzlmod projects
<https://pwrev.dev/225913>`__
* `Block on spawned refresh process
<https://pwrev.dev/225731>`__
* `Status bar item for inactive file disabling
<https://pwrev.dev/225392>`__
* `Support disabling clangd for inactive files
<https://pwrev.dev/224893>`__
* `Update vendored tools on extension update
<https://pwrev.dev/225934>`__
* `Use vendored Bazelisk in recommended config
<https://pwrev.dev/225933>`__
* `Improve VSC settings interface
<https://pwrev.dev/225932>`__
* `Add shared settings management
<https://pwrev.dev/224573>`__
* `Associate target groups with active files
<https://pwrev.dev/222735>`__
* `Don't unnecessarily infer working dir
<https://pwrev.dev/224572>`__
* `VSC extension 1.1.1 release
<https://pwrev.dev/224897>`__
* `Add missing command stubs
<https://pwrev.dev/224892>`__
* `Stream refresh compile commands output
<https://pwrev.dev/224313>`__
* `Update dev build configs
<https://pwrev.dev/224312>`__
* `Add fish to Bazelisk+VSC terminal
<https://pwrev.dev/224292>`__
* `VSC extension 1.1.0 release
<https://pwrev.dev/224171>`__
* `Patch Bazelisk into VSC terminal
<https://pwrev.dev/223823>`__
* `VSC extension 1.0.0 release
<https://pwrev.dev/223911>`__
* `Revise docs
<https://pwrev.dev/223157>`__
* `Update VSC extension packaging
<https://pwrev.dev/223634>`__
* `Add proto extension as dependency
<https://pwrev.dev/223156>`__
* `Fix VSC troubleshooting links
<https://pwrev.dev/223576>`__
* `Update compile commands tool version
<https://pwrev.dev/222575>`__
* `Don't show root comp DB dir as target
<https://pwrev.dev/223633>`__
* `VSC status bar item for target selection
<https://pwrev.dev/220134>`__
* `Add IDE support refresh manager
<https://pwrev.dev/219973>`__
* `Integrate Bazelisk in VSC
<https://pwrev.dev/219971>`__
* `Bazel comp DB management in VSC
<https://pwrev.dev/218832>`__
* `VSC/JS project management
<https://pwrev.dev/222734>`__
* `Create VSC settings interface
<https://pwrev.dev/222733>`__
* `Use VSC output panel for logging
<https://pwrev.dev/222732>`__
* `VSC extension cleanup
<https://pwrev.dev/222731>`__
pw_kvs
------
* `Missing <string> includes
<https://pwrev.dev/223352>`__
(issue `#298822102 <https://pwbug.dev/298822102>`__)
* `Update bazel config
<https://pwrev.dev/223171>`__
pw_libcxx
---------
``pw_libcxx`` now has support for the ``new`` operator.
* `Actually implement operator delete
<https://pwrev.dev/223692>`__
* `Add operator new
<https://pwrev.dev/223632>`__
pw_log
------
* `Log decoder timestamp cleanup
<https://pwrev.dev/223271>`__
* `Fix log_decoder timestamp formatting
<https://pwrev.dev/222771>`__
(issue `#351905996 <https://pwbug.dev/351905996>`__)
pw_multibuf
-----------
* `Add more context on chunk regions
<https://pwrev.dev/222431>`__
pw_presubmit
------------
``pw_presubmit.inclusive_language.check_file`` now accepts an optional
``check_path`` argument which controls whether to check the path for
non-inclusive language.