:tocdepth: 2 .. _docs-changelog: ===================== What's New In Pigweed ===================== -------------------------------- Talk to the team at Pigweed Live -------------------------------- .. pigweed-live:: .. _docs-changelog-latest: ------------ Feb 23, 2024 ------------ .. changelog_highlights_start Highlights (Feb 9, 2024 to Feb 23, 2024): * The new :ref:`module-pw_json` module provides classes for serializing JSON. * Raspberry Pi RP2040 support was expanded, including a new ``pw::digital_io::Rp2040Config`` struct enables you to configure polarity for RP2040 GPIO pins, and a new ``pw::spi::Rp2040Initiator`` class which is a Pico SDK userspace implementation of Pigweed's SPI ``Initiator`` class. * The new ``pw::spi::DigitalOutChipSelector`` class sets the state of a :ref:`module-pw_digital_io` output when activated. * The :ref:`module-pw_kvs` docs were overhauled. .. changelog_highlights_end Active SEEDs ============ Help shape the future of Pigweed! Please visit :ref:`seed-0000` and leave feedback on the RFCs (i.e. SEEDs) marked ``Open for Comments``. Modules ======= pw_allocator ------------ * `Remove total_bytes metric `__ * `Expose TrackingAllocator's initialization state `__ pw_assert --------- * `Apply formatting changes `__ pw_assert_log ------------- * `Fix Soong rules `__ (issue `#324266698 `__) * `Fix missing lib in soong rule `__ pw_bluetooth ------------ * `Add Emboss rules to BUILD.bazel `__ * `Update emboss imports to match Bazel rule `__ pw_build -------- * `Silence warnings from linker script test `__ pw_bytes -------- * `Add missing export in soong rule `__ pw_chrono_rp2040 ---------------- * `Minor tweaks to documentation and test `__ (issue `#303297807 `__) pw_cli ------ * `Add exit codes `__ pw_config_loader ---------------- The new ``skip_files__without_sections`` option enables you to just move on to the next file rather than raise an exception if a relevant section doesn't exist in a config file. * `Allow skipping files `__ pw_containers ------------- * `Add default move operator for FilteredView `__ * `Add move constructor to FiltertedView `__ pw_digital_io_rp2040 -------------------- The new ``pw::digital_io::Rp2040Config`` struct enables you to configure polarity for RP2040 GPIO pins. * `Config with polarity `__ (issue `#303255049 `__) pw_env_setup ------------ * `Use amd64 host tools on arm64 `__ (issue `#325498131 `__) pw_function ----------- The new ``//third_party/fuchsia:fit`` label flag enables Bazel-based projects to provide an alternate implementation for ``fit()`` when needed. * `//third_party/fuchsia:fit label_flag `__ pw_fuzzer --------- * `Fix Bazel example, add presubmit test `__ (issue `#324617297 `__) pw_grpc ------- * `Fix some minor bugs `__ pw_hdlc ------- * `Add android_library targets `__ (issue `#321155919 `__) pw_i2c ------ The API reference for :cpp:class:`pw::i2c::RegisterDevice` is now published on ``pigweed.dev``. * `Doxygenify RegisterDevice `__ pw_ide ------ * `Fix environment inference `__ pw_json ------- The new :ref:`module-pw_json` module provides classes for serializing JSON. * `Classes for serializing JSON `__ pw_kvs ------ The :ref:`module-pw_kvs` docs were overhauled. * `Follow new module docs guidelines `__ pw_log ------ * `Add android_library targets `__ (issue `#321155919 `__) pw_log_android -------------- * `Fix missing libs in soong rule `__ pw_metric --------- * `Fix Bazel build `__ (issue `#258078909 `__) pw_module --------- * `Add exit codes `__ pw_multibuf ----------- * `Fix soong support `__ (issue `#325320103 `__) pw_package ---------- * `Update GoogleTest `__ * `Remove capture_output=True `__ pw_preprocessor --------------- The :ref:`module-pw_preprocessor` reference is now being generated via Doxygen. * `Do not check for __VA_OPT__ on older compilers `__ (issue `#326135018 `__) * `Switch to Doxygen `__ * `Use __VA_OPT__ when available `__ pw_presubmit ------------ .. todo-check: disable * `Allow markdown style TODOs and adjust rustdocs `__ (issue `#315389119 `__) * `Log format --fix output `__ * `Fix formatting of typescript code `__ * `Disallow FIXME and recommend TODO `__ * `Allow pwbug.dev in TODOs `__ * `Allow Bazel issues in TODOs `__ .. todo-check: disable .. _docs-changelog-20240226-pw_rpc: pw_rpc ------ ``pw_rpc`` clients will once again accept unsolicited responses from ``pw_rpc`` servers that were built prior to September 2022. Unsolicited responses, also known as "open" requests, let a server send a message to a client prior to the client sending a request. This change fixed an incompatibility in which ``pw_rpc`` clients built after September 2022 would not accept unsolicited responses from servers built before September 2022 (specifically, change `#109077 `_). * `Remove use of deprecated Python API `__ (issue `#306195999 `__) * `Add android_library targets `__ (issue `#321155919 `__) * `Support legacy unsolicited responses `__ pw_software_update ------------------ * `Add java build objects `__ pw_spi ------ The new ``pw::spi::DigitalOutChipSelector`` class is an implementation of ``pw::spi::ChipSelector`` that sets the state of a :ref:`module-pw_digital_io` output when activated. * `Add Android.bp `__ (issue `#316067629 `__) * `DigitalOutChipSelector `__ (issue `#303255049 `__) * `Correct full-duplex behavior of linux_spi `__ (issue `#316067628 `__) pw_spi_rp2040 ------------- The new ``pw::spi::Rp2040Initiator`` class is a Pico SDK userspace implementation of Pigweed's SPI ``Initiator`` class. * `Initiator implementation `__ (issue `#303255049 `__) pw_stream --------- * `Fix Pigweed build after sync `__ (issue `#277108894 `__) pw_string --------- Debug error messages for assertions containing ``std::optional`` types have been improved. * `Add ToString for std::optional `__ pw_sync ------- * `Add missing lib in soong rule `__ pw_tokenizer ------------ The :ref:`module-pw_tokenizer` and :ref:`module-pw_snapshot` Python libraries can now be used from Bazel as a result of the proto migration. See issue `#322850978 `__). * `Fix link breakage on linux `__ (issue `#321306079 `__) * `Proto migration stage 5/5 `__ (issue `#322850978 `__) * `Proto migration stage 3/5 `__ (issue `#322850978 `__) * `Proto migration stage 1.5/5 `__ (issue `#322850978 `__) * `Proto migration stage 1/5 `__ (issue `#322850978 `__) pw_toolchain ------------ * `Add missing #include `__ * `Rename `action_config_flag_sets` to `flag_sets` `__ * `Simplify macOS -nostdlib++ usage `__ * `Remove unnecessary toolchain arguments `__ * `Add missing macOS cxx_builtin_include_directories `__ (issue `#324652164 `__) pw_toolchain_bazel ------------------ * `Use llvm-libtool-darwin on macOS `__ (issue `#297413805 `__) * `Explicitly depend on rules_cc `__ pw_transfer ----------- * `Add an android_library for the Java client `__ * `Change class to parser `__ * `Fix integration test START packet issue `__ (issue `#322497491 `__) * `Add GetResourceStatus method `__ * `Limit test to sending a single chunk `__ * `Remove/hide deprecated handle interfaces `__ pw_watch -------- * `Add exit codes `__ pw_web ------ The log viewer now supports multiple log sources. * `NPM version bump to 0.0.14 `__ * `Enable multiple log sources `__ (issue `#325096310 `__) Build ===== * `Fix docs build on mac-arm64 `__ * `Use correct host_cpu when disabling docs on Arm Macs `__ * `Remove docs from default build on Arm Macs `__ (issue `#315998985 `__) * `Build for Java 11 `__ Bazel ----- * `Remove shallow_since attributes `__ * `Upgrade protobuf to 4.24.4 `__ (issue `#319717451 `__) Targets ======= * (rp2040) `Replace rp2040 target with rp2040_pw_system `__ * (rp2040) `Custom libusb backend `__ OS support ========== * (Zephyr) `Change the pinned Zephyr commit `__ * (Zephyr) `Add zephyr's west CLI `__ Docs ==== `Breadcrumbs `_ are now shown at the top of all docs pages except the homepage. * `Add breadcrumbs `__ * `Fix incorrect module name in changelog `__ * `Fix canonical URLs for all */docs.html pages `__ * `Fix typo in facades documentation `__ * `Fix 404s `__ (issue `#325086274 `__) SEEDs ===== * (SEED-0125) `Claim SEED number `__ * `Mark legacy Sensor SEED as Rejected `__ Third party =========== * `Roll FuzzTest and Abseil `__ Miscellaneous ============= * `Disable tests incompatible with rp2040 `__ (issue `#260624583 `__) * `Fix uses of std::chrono literals `__ * (pigweed.json) `Disallow Rosetta `__ (issue `#315998985 `__) * (renode) `Update renode to latest daily build `__ ----------- Feb 9, 2024 ----------- Highlights (Jan 26, 2024 to Feb 9, 2024): * The new :ref:`module-pw_grpc` module provides classes that map between ``pw_rpc`` packets and HTTP/2 gRPC frames, allowing ``pw_rpc`` services to be exposed as gRPC services. * A lot of the remaining ``pw_toolchain_bazel`` feature work from :ref:`seed-0113` was finished and rough edges were polished up. * The new generic ``pw::allocator::BlockAllocator`` interface supported several derived types that enable fine-grained control over how a block satisfies an allocation request. * ``pw_transfer`` now supports :ref:`resumable transfers `. Active SEEDs ============ Help shape the future of Pigweed! Please visit :ref:`seed-0000` and leave feedback on the RFCs (i.e. SEEDs) marked ``Open for Comments``. Modules ======= pw_alignment ------------ * `Add CMake & Soong support `__ pw_allocator ------------ The new generic :cpp:class:`pw::allocator::BlockAllocator` interface supports :ref:`several derived types ` that enable fine-grained control over how a block satisfies an allocation request. The new :cpp:func:`pw::allocator::GetLayout()` method retrieves the layout that was used to allocate a given pointer. The new :cpp:class:`pw::allocator::AllocatorSyncProxy` interface synchronizes access to another allocator, allowing it to be used by multiple threads. * `Refactor metric collection for tests `__ * `Add Allocator::GetLayout `__ * `Add BlockAllocator `__ * `Fix SynchronizedAllocator typo `__ * `Streamline Block and improve testing `__ * `Separate metrics from Fallback-, MultiplexAllocator `__ * `Make TrackingAllocator::Init optional `__ * `Check for integer overflow in Layout `__ * `Add additional metrics `__ * `Rename AllocatorMetricProxy to TrackingAllocator `__ * `Add SynchronizedAllocator `__ * `Fix typo `__ * `Fix Allocator::Reallocate `__ pw_assert --------- * `Break out compatibility backend target `__ (issue `#322057191 `__) pw_async_basic -------------- * `Remove unneeded locks from test `__ * `Test flake fix `__ (issue `#323251704 `__) * `Fix data race in newly added test `__ * `Fix ordering of tasks posted at same time `__ pw_bloat -------- The new boolean argument ``ignore_unused_labels`` for ``pw_size_report()`` enables you to remove labels from the JSON size report that have a size of 0. * `Allow removal of zero sized labels `__ (issue `#282057969 `__) pw_bluetooth ------------ * `Add l2cap_frames.emb `__ * `Fix typo in SbcAllocationMethod `__ pw_boot ------- * `Update status and general doc cleanup `__ pw_build -------- The new ``PW_USE_COLOR``, ``NO_COLOR``, and ``CLICOLOR_FORCE`` OS environment variables enable you to control whether output in CI/CQ is color formatted. * `Add Fuchsia to TARGET_COMPATIBLE_WITH_HOST_SELECT `__ * `Enable fixed point types for clang builds `__ (issue `#323425639 `__) * `Support disabling colors `__ (issue `#323056074 `__) pw_bytes -------- * `Check for integer overflow `__ pw_channel ---------- The initial ``pw::channel::Channel`` class from :ref:`seed-0114` has been introduced but it is experimental and should not be used yet. * `Docs fix `__ * `Module for async data exchange with minimal copying `__ pw_cli ------ * `Add json_config_loader_mixin `__ pw_compilation_testing ---------------------- * `Do not expand regexes `__ * `Minor improvements `__ pw_config_loader ---------------- The code from ``pw_cli`` related to looking up user-specific configuration files has been moved to this separate module. * `Add support for nested keys `__ * `Add tests `__ * `Initial commit `__ pw_cpu_exception_cortex_m ------------------------- * `Handle ARM v8.1 case `__ (issue `#311766664 `__) pw_digital_io ------------- * `[[nodiscard]] on as() conversion functions `__ * `Use pw::internal::SiblingCast `__ pw_env_setup ------------ * `Roll cipd `__ (issue `#315378787 `__) * `Make npm actions more robust `__ (issues `#323378974 `__, `#322437881 `__, `#323378974 `__) * `Only add mingw to PATH once `__ (issue `#322437881 `__) pw_format --------- * `Fix safe buildifier warnings `__ (issue `#242181811 `__) pw_function ----------- * `Follow new docs guidelines `__ pw_fuzzer --------- * `Fix Bazel run target instructions `__ pw_grpc ------- The new :ref:`module-pw_grpc` module is an implementation of the gRPC HTTP/2 protocol. It provides classes that map between :ref:`module-pw_rpc` packets and ``pw_grpc`` HTTP/2 frames, allowing ``pw_rpc`` services to be exposed as gRPC services. * `Fix off-by-one error when handling DATA frames `__ (issue `#323924487 `__) * `Add new module `__ pw_ide ------ * `Disable Python terminal activation in VSC `__ * `Remove terminal env vars from VSC settings `__ * `VSC extension 0.1.4 release `__ pw_presubmit ------------ Color formatting in CI/CQ has been improved for readability. * `Simplify 'gn gen' color logic `__ * `Use color logic in gn gen call `__ * `Apply color logic in more cases `__ * `Support disabling colors `__ (issue `#323056074 `__) pw_protobuf ----------- * `Use pw::internal::SiblingCast `__ pw_random --------- * `Clean up build files `__ pw_result --------- * `Add missing libs in Soong blueprint `__ pw_rpc ------ * `Avoid undefined behavior when casting to rpc::Writer `__ pw_stream --------- * `Use pw::internal::SiblingCast `__ pw_target_runner ---------------- * `Remove .dev from path name `__ pw_thread --------- * `Incease the sleep duration in tests `__ (issue `#321832803 `__) pw_tokenizer ------------ :ref:`Troubleshooting docs ` were added that explain how to workaround GCC's template function tokenization bug in GCC releases prior to 14. * `Mention GCC template bug in the docs `__ pw_toolchain ------------ * `Disable unstable features in rust toolchains `__ * `Fix divergent configuration in arm_clang M0+ toolchain `__ * `Use less generic names for B1-B5 `__ * `Use LLVM compiler-rt builtins `__ * `Internal wrapper for casting between siblings `__ (issue `#319144706 `__) * `Small docs update `__ (issue `#300471936 `__) pw_toolchain_bazel ------------------ A lot of the remaining ``pw_toolchain_bazel`` feature work from :ref:`seed-0113` was finished and rough edges were polished up. * `Remove support for *_files `__ (issue `#323448214 `__) * `Add support for setting environment variables `__ (issue `#322872628 `__) * `Implement per-action files `__ (issue `#322872628 `__) * `Migrate to PwToolInfo `__ (issue `#322872628 `__) * `Pull file collection into config rule `__ (issue `#322872628 `__) * `Implement pw_cc_provides `__ (issue `#320177248 `__) * `Implement PwActionConfigInfo `__ (issue `#322872628 `__) * `Create temporary variable `__ (issue `#322872628 `__) * `Add a concept of well-known features `__ (issue `#320177248 `__) * `Implement requires_any_of for flag sets `__ (issue `#320177248 `__) * `Migrate to custom PwFeatureInfo `__ (issue `#320177248 `__) * `Add custom PwFlagSetInfo `__ (issue `#322872628 `__) * `Replace bazel_tools providers with PW providers `__ (issue `#322872628 `__) * `Support regular binaries as tools `__ (issue `#322872628 `__) pw_transfer ----------- ``pw_transfer`` now supports :ref:`resumable transfers `. * `Account for remaining_bytes in payload buffer `__ * `Rename TransferHandle -> Handle `__ * `Add resumeable transfers `__ * `Make cancellation a method on handles `__ * `Allow setting a transfer resource size in C++ `__ (issue `#319731837 `__) pw_unit_test ------------ * `Remove obsolete label flag `__ Build ===== * (Bazel) `Update clang version `__ OS support ========== * (Zephyr) `Fix default logging in chromium CQ `__ Docs ==== * `Nest backends under respective facades in sitenav `__ * `Add doxygengroup to the style guide `__ * `Update homepage `__ * `Update README links `__ * `Fix module homepage canonical URLs `__ (issue `#323077749 `__) * `Update Bazel quickstart output sample `__ (issue `#300471936 `__) SEEDs ===== * (SEED-0122) `Update status, add bug reference `__ * `Fix pw_seed_index template deps `__ * `Add authors to SEED document headers `__ * (SEED-0119) `Add sensors SEED `__ Miscellaneous ============= * `Update the bootstrap script to have start/end guards `__ * `Migrate bug numbers `__ (issue `#298074672 `__) * `Upgrade mbedtls to 3.5.0 `__ (issue `#319289775 `__) * `Fix clang-format findings `__ ------------ Jan 26, 2024 ------------ Highlights (Jan 12, 2024 to Jan 26, 2024): * The new :ref:`docs-bazel-integration` guide shows you how to integrate a single Pigweed module into an existing Bazel project. * Initial support for :py:class:`pw_cc_feature` has been added, which completes the initial set of rules required for building toolchains with :ref:`module-pw_toolchain_bazel`. * A longstanding GCC bug that caused tokenized logging within a function template to not work has been fixed. Active SEEDs ============ Help shape the future of Pigweed! Please visit :ref:`seed-0000` and leave feedback on the RFCs (i.e. SEEDs) marked ``Open for Comments``. Modules ======= pw_allocator ------------ * `Add SplifFreeListAllocator fuzzer `__ pw_bluetooth ------------ * `Add advertising packet content filter emboss definitions `__ * `Add android multiple advertising emboss structures `__ * `Add a2dp remaining offload emboss structures `__ * `Move emboss structures from hci_commands to hci_common `__ * `Reorganize hci_vendor.emb `__ * `Add new event definitions `__ (issue `#311639432 `__) pw_build -------- The new :ref:`module-pw_build-bazel-pw_cc_binary_with_map` Bazel rule enables you to generate a ``.map`` file when building a binary. * `Add pw_cc_binary variant to generate .map files `__ (issue `#319746242 `__) pw_bytes -------- The :cpp:class:`pw::ByteBuilder` API reference is now being auto-generated via Doxygen. The new :cpp:func:`pw::bytes::SignExtend` template enables expanding the nth bit to the left up to the size of the destination type. * `Fix compilation error occured with Werror=all `__ * `Update documentation `__ * `SignExtend template `__ (issue `#321114167 `__) * `Make _b literals error on values >255 `__ pw_compilation_testing ---------------------- * `Skip tests excluded by the preprocessor `__ (issue `#321088147 `__) pw_console ---------- * `Upgrade to ptpython 3.0.25 `__ (issue `#320509105 `__) pw_containers ------------- The destructors for ``pw::InlineQueue``, ``pw::InlineDeque``, and ``pw::Vector`` are now protected to prevent use with ``delete`` or ``std::unique_ptr`` and to prevent unusable declarations. * `Protected InlineQueue/Deque destructor `__ * `Make Vector destructor protected `__ pw_digital_io ------------- The private virtual API requirements for :cpp:class:`pw::digital_io::DigitalIoOptional` are now documented because they are needed when implementing concrete backends for ``pw_digital_io``. * `Document the private virtual API requirements `__ * `Remove conditional interrupt disabling requirements `__ pw_doctor --------- * `Update expected tools on POSIX `__ (issue `#315998985 `__) pw_env_setup ------------ * `Retrieve qemu on ARM Macs `__ (issue `#315998985 `__) pw_hdlc ------- * `Remove unused targets `__ * `Remove unused rpc packet processor target `__ pw_ide ------ * `Fix typo `__ * `Launch activated terminals in VSC `__ (issue `#318583596 `__) * `VSC extension 0.1.3 release `__ pw_kvs ------ The new ``pw::kvs::FlashMemory::EndOfWrittenData()`` method returns the first byte of erased flash that has no more written bytes. * `Add EndOfWrittenData() `__ pw_persistent_ram ----------------- * `Add more tests to PersistentBuffer `__ (issue `#320538351 `__) pw_polyfill ----------- ``pw_polyfill/static_assert.h`` now provides a C23-style ``static_assert()``. See :ref:`module-pw_polyfill-static_assert`. * `Remove _Static_assert workaround `__ * `Provide static_assert polyfill for C `__ pw_preprocessor --------------- The new ``PW_ADD_OVERFLOW``, ``PW_SUB_OVERFLOW``, and ``PW_MUL_OVERFLOW`` macros can be used to :ref:`check for integer overflows `. * `Add integer-overflow macros `__ pw_presubmit ------------ * `Add more info to todo summary `__ * `Trim paths in ninja summary `__ * `No copyright for MODULE.bazel.lock `__ * `Exclude docs on Mac ARM hosts `__ (issue `#315998985 `__) pw_protobuf ----------- * `Fix another &*nullptr in test `__ * `Fix undefined pointer deref in fuzz test `__ * `Fix out-of-range read `__ (issue `#314803709 `__) pw_thread --------- * `Add missing include `__ pw_tokenizer ------------ A longstanding GCC bug that caused tokenized logging within a function template to not work has been fixed. * `Compensate for GCC template bug `__ (issue `#321306079 `__) * `Allow use of static_assert in C99 test `__ * `Adjust rustdocs deps to only be in std environments `__ pw_tool ------- This incomplete module has been deleted. * `Delete module `__ pw_toolchain_bazel ------------------ The ``//pw_toolchain_bazel`` directory is now configured to be compiled as a standalone Bazel module. Initial support for :py:class:`pw_cc_feature` has been added, which completes the initial set of rules required for building toolchains with :ref:`module-pw_toolchain_bazel`. * `Remove deprecated action names `__ (issue `#320177248 `__) * `Migrate to type-safe action names `__ (issue `#320177248 `__) * `Require action labels in providers `__ (issue `#320177248 `__) * `Define actions names as labels `__ (issue `#320177248 `__) * `Make the pw_toolchain repository into a bazel module `__ (issue `#320177248 `__) * `Add pw_cc_feature `__ (issue `#309533028 `__) * `Set exec_transition_for_inputs to False `__ (issue `#321268080 `__) * `Remove check_deps_provide `__ (issue `#320177248 `__) pw_transfer ----------- The C++ client for :ref:`module-pw_transfer` now uses handles for cancellation. * `Remove duplicated Builder call `__ * `Use handles for cancellation in C++ client `__ (issue `#272840682 `__) pw_web ------ * `Init. improvements to resize performance `__ (issue `#320475138 `__) Build ===== * `Use Python 3.11 `__ (issue `#310293060 `__) * `Use pre-release of rules_python `__ (issue `#310293060 `__) * `Use rules_python in Bazel build files `__ Targets ======= host_device_simulator --------------------- * `Update docs `__ Docs ==== * `How to use a single Pigweed module in Bazel `__ * `Add pre-reqs for non-Debian Linux distros `__ (issue `#320519800 `__) * `Auto-generate module source code and issues URLs `__ * `Minor updates to the FAQ `__ * `Update changelog `__ SEEDs ===== * (SEED-0123) `Claim SEED number `__ * (SEED-0124) `Claim SEED number `__ Miscellaneous ============= * `Remove module-level README.md files `__ * `Fix how we ignore bazel- directories `__ ------------ Jan 12, 2024 ------------ Highlights (Dec 29, 2023 to Jan 12, 2024): * :ref:`docs-changelog-20240112-pw_allocator` added parameter to make it easier to work with allocation metadata in a block's header and made it easier to omit flag-related code for blocks. * ``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``. * :ref:`docs-changelog-20240112-pw_thread_stl` disallowed ``std::thread::detach()`` on Windows because it's known to randomly hang indefinitely. Active SEEDs ============ Help shape the future of Pigweed! Please visit :ref:`seed-0000` and leave feedback on the RFCs (i.e. SEEDs) marked ``Open for Comments``. Modules ======= .. _docs-changelog-20240112-pw_allocator: pw_allocator ------------ A new template parameter, ``kNumExtraBytes``, was added to ``Block``. This parameter reserves space in the block's header for storing and fetching allocation metadata. The ``kMaxSize`` parameter was removed from ``Block`` and replaced by ``kNumFlags`` to make it easier to omit flag-related code when not needed and define fewer block types rather than one for each allocation pool size. * `Fix source file list in soong rule `__ * `Fix MulitplexAllocator's deps `__ * `Add extra bytes to Block `__ * `Add initializing constructors `__ * `Add note to AllocatorMetricProxy tests `__ pw_bluetooth_sapphire --------------------- * `Advertise FCS Option `__ (issue `#318002648 `__) * `Refactor method and variable names `__ (issue `#312645622 `__) * `Revert commits to get to a known working state `__ pw_containers ------------- * `Remove DestructorHelper from vector `__ (issue `#301329862 `__) pw_doctor --------- * `Fix overridden package check `__ pw_emu ------ * `Remove psutil dependency `__ (issue `#316080297 `__) pw_env_setup ------------ * `Update ref to bazel version file `__ * `Drop reference to rust version file `__ * `Use correct arch for cipd in Bazel `__ (issue `#234879770 `__) * `Switch to Fuchsia ninja CIPD package `__ (issue `#311711323 `__) * `Prevent NPM output from interrupting bootstrap `__ pw_ide ------ The new ``pigweed.enforceExtensionRecommendations`` configuration option for VS Code makes extension recommendation enforcement optional. When you set this flag to ``true`` in your project's ``extension.json``, recommended extensions will need to be installed and non-recommended extensions will need to be disabled. You can now submit Pigweed issues through VS Code. Open the Command Palette and type ``Pigweed: File Bug``. * `Add Jest testing to VSC extension `__ * `Make VSC extension enforcement an option `__ * `Support alternate \`clangd\` paths `__ (issue `#318413766 `__) * `VSC extension 0.1.2 release `__ * `Fix CLI command docs `__ * `Allow submitting bugs from VSC `__ * `Document \`compdb_gen_cmd\` `__ * `Improve VSC extension UX `__ .. _docs-changelog-20240112-pw_log: pw_log ------ The Python API of the log decoder now accepts a ``logging.Logger`` or ``logging.LoggerAdapter`` instance as the default device logger. Previously it only accepted ``logging.Logger``. * `Let Device accept logger adapter `__ pw_log_zephyr ------------- * `Add missing include for tokenized logging `__ pw_multibuf ----------- * `Add soong support `__ pw_protobuf ----------- * `Fix bool overflow `__ (issue `#318732334 `__) * `Fix nullptr dereference in fuzz test `__ (issue `#314829525 `__) * `Don't crash on invalid field number `__ (issue `#314803709 `__) * `Fix conflict in messages with fields named 'other' `__ * `Properly fuzz nested encoders/decoders `__ (issue `#314803709 `__) * `Fully qualify message namespace `__ pw_rpc ------ The new ``PW_RPC_METHOD_STORES_TYPE`` config option provides a way at runtime to determine a method's type. This is useful when implementing a translation layer from another RPC system. Most Pigweed projects won't need this feature so it's disabled by default. * `Have Method optionally store it's MethodType `__ * `Run tests with completion callback config enabled `__ * `Add some missing deps in Bazel targets `__ (issue `#318850523 `__) pw_stream --------- * `Make stream adapters use reinterpret_cast `__ (issue `#314829006 `__) pw_system --------- See :ref:`docs-changelog-20240112-pw_log`. * `Let Device accept logger adapter `__ .. _docs-changelog-20240112-pw_thread_stl: pw_thread_stl ------------- Using ``std::thread::detach()`` on Windows has been disallowed. When compiling with MinGW on Windows, ``std::thread::detach()`` is known to randomly hang indefinitely. * `Don't allow std::thread::detach() on Windows `__ (issue `#317922402 `__) pw_tokenizer ------------ * `Fix undefined dereference in fuzz test `__ (issue `#314829057 `__) * `Make Rust hashing function const `__ pw_toolchain ------------ ``pw_toolchain`` now adds ``-fno-ms-compatibility`` to ``cflags`` on Windows. When building with ``clang`` on Windows targeting ``msvc``, ``clang`` previously enabled a ``ms-compatibility`` mode that broke Pigweed's macro magic. * `Remove duplicate config from Cortex-A32 toolchain `__ * `Add -fno-ms-compatibility to cflags on Windows `__ (issue `#297542996 `__) pw_unit_test ------------ * `Fix sanitize(r) directive `__ pw_web ------ * `Fix autoscroll when window is resized `__ (issue `#305022742 `__) Build ===== Bazel ----- All modules now support the injection of module configuration via ``label_flags``. ``pw_cc_library`` has been replaced with the Bazel-native ``cc_library``. * `Update to Bazel 7.0.0 release version `__ * `Add module configuration support `__ (issue `#234872811 `__) * `Remove pw_cc_library `__ (issue `#267498492 `__) * `Remove references to pw_cc_library `__ (issue `#267498492 `__) * `Replace pw_cc_library with cc_library `__ (issue `#267498492 `__) OS support ========== Zephyr ------ You can now enable the ``pw_thread/sleep.h`` library in your Zephyr project by setting ``CONFIG_PIGWEED_THREAD_SLEEP=Y`` in your Kconfig. * `Link pw_thread.sleep with appropriate kConfig `__ Docs ==== * `Add example of conditionally enabling code based on module config `__ * `Mention pw format tool `__ * `Update changelog `__ * `Rework first-time setup `__ * `Add troubleshooting section to Bazel quickstart `__ SEEDs ===== * (SEED-0001) `Fix typo and formatting `__ * (SEED-0114) `Fix Compiler Explorer link `__ * (SEED-0122) `Claim SEED number `__ ------------ Dec 29, 2023 ------------ Highlights (Dec 15, 2023 to Dec 29, 2023): * The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier to dispatch between allocators depending on an app-specific request type ID. * ``pw_base64`` now has initial Rust support. * ``pw_malloc_freertos``, a new FreeRTOS backend for :ref:`module-pw_malloc`, was added. * The new ``pw::digital_io::Polarity`` helper enum makes it easier for backends to map logical levels to physical levels. * The Rust macro ``tokenize_to_buffer!`` in the ``pw_tokenizer`` Rust crate now supports concatenation of format strings via the ``PW_FMT_CONCAT`` operator. * The :ref:`module-pw_hdlc` and :ref:`module-pw_result` docs were updated to follow our latest :ref:`docs-contrib-moduledocs`. Active SEEDs ============ Help shape the future of Pigweed! Please visit :ref:`seed-0000` and leave feedback on the RFCs (i.e. SEEDs) marked ``Open for Comments``. Modules ======= pw_allocator ------------ The new ``pw::allocator::MultiplexAllocator`` abstract class makes it easier to dispatch between allocators depending on an app-specific request type ID. * `Add MultiplexAllocator `__ * `Add WithMetrics interface `__ * `Split up test utilities `__ pw_base64 --------- ``pw_base64`` now has initial Rust support. See `Crate pw_base64 `_. * `Add initial Rust support `__ pw_containers ------------- * `Remove DestructorHelper from queues `__ (issue `#301329862 `__) pw_digital_io ------------- `pw::digital_io::Polarity `_ was added to make it easier for backends to map logical levels to physical levels. * `Add helper Polarity enum `__ pw_emu ------ * `Use code-block instead of code `__ pw_hdlc ------- * `Follow new module docs guidelines `__ pw_malloc --------- ``pw_malloc_freertos``, a FreeRTOS backend for ``pw_malloc`` was added. * `Require specifying a backend in bazel build `__ * `Add freertos backend `__ pw_presubmit ------------ * `Use local prettier + eslint versions `__ pw_result --------- * `Rework docs to new standard `__ pw_rpc ------ * `Adjust alarm_timer_test `__ (issue `#317990451 `__) pw_snapshot ----------- * `Clean up RISCV CpuArchitecture `__ * `Add RISCV CpuArchitecture to metadata `__ pw_thread_stl ------------- * `Disable Bazel tests failing on Windows `__ (issue `#317922402 `__) * `Disable tests failing on Windows `__ (issue `#317922402 `__) pw_tokenizer ------------ The Rust macro ``tokenize_to_buffer!`` now supports concatenation of format strings via the ``PW_FMT_CONCAT`` operator. * `Support \`PW_FMT_CONCAT\` in \`tokenize_to_buffer!\` `__ pw_toolchain ------------ The need to provide an ``unknown`` value for various ``pw_cc_toolchain`` fields has been removed. * `Remove "unknown" from various fields `__ (issue `#315206506 `__) pw_transfer ----------- * `Improve Python stream reopening and closing `__ pw_unit_test ------------ * `Silence ASAN error in TestInfo `__ pw_watch -------- * `Build directory exclude list handling `__ (issue `#317241320 `__) pw_web ------ * `Add state UI unit tests `__ (issue `#316218222 `__) SEEDs ===== * `Add facilitators to metadata and generated table `__ * (SEED-0105) `Use code-block instead of code `__ ------------ Dec 15, 2023 ------------ Highlights (Dec 1, 2023 to Dec 15, 2023): * We started implementing our new async API, :ref:`module-pw_async2`. * We deprecated the use of ``gtest/gtest.h`` header paths for tests intended to build against ``pw_unit_test``. See :ref:`docs-changelog-20231215-pw_unit_test` for details. .. note:: All the commits titled ``Use unit test framework`` in the ``Dec 15, 2023`` update are related to this change. * The :ref:`module-pw_alignment` and :ref:`module-pw_emu` docs have been updated to follow our latest :ref:`docs-contrib-moduledocs`. * ``pw_system`` now supports an :ref:`extra logging channel `. * ``pw_toolchain_bazel`` has a new :ref:`get started guide `. Active SEEDs ============ Help shape the future of Pigweed! Please visit :ref:`seed-0000` and leave feedback on the RFCs (i.e. SEEDs) marked ``Open for Comments``. Modules ======= pw_alignment ------------ * `Follow the new docs guidelines `__ pw_allocator ------------ * `Fix metric disabling `__ * `Add support for fuzzing Allocator implementations `__ * `Use unit test framework `__ pw_analog --------- * `Use unit test framework `__ pw_async2 --------- We started implementing our new async API, :ref:`module-pw_async2`. * `Implement initial async API `__ pw_base64 --------- * `Use unit test framework `__ pw_blob_store ------------- * `Use unit test framework `__ pw_bluetooth ------------ * `Add LE Read Buffer Size [v2] command complete event `__ (issue `#311639040 `__) * `Use unit test framework `__ * `Fix LEExtendedCreateConnectionCommandV1 data interleaving `__ (issue `#305976440 `__) * `Fix ExtendedCreateConnectionV1 `__ (issue `#305976440 `__) * `Add new HCI definition `__ (issue `#311639690 `__) * `Re-format emboss files `__ pw_bluetooth_sapphire --------------------- * `Read ISO data buffer info on startup `__ (issue `#311639040 `__) * `LE Read Buffer Size [v2] `__ (issue `#311639040 `__) * `Add LE Set Host Feature `__ (issue `#311639040 `__) * `Update name of ISO host support bit `__ (issue `#311639040 `__) * `Fix BrEdrConnectionManager.Inspect test `__ (issue `#42086629 `__) pw_build -------- * `Fix use of TARGET_COMPATIBLE_WITH_HOST_SELECT in external repo `__ pw_bytes -------- * `Use unit test framework `__ pw_checksum ----------- * `Use unit test framework `__ pw_chrono --------- * `Use unit test framework `__ pw_cli ------ You can now disable the printing of the banner by setting ``PW_ENVSETUP_QUIET`` or ``PW_ENVSETUP_NO_BANNER``. * `Allow banner to be suppressed `__ pw_console ---------- * `Disable private attr auto-completion `__ pw_containers ------------- * `Fix missing include `__ * `Fix IntrusiveList::Item move assignment test `__ (issue `#303634979 `__) * `Add missing dep for IntrusiveList test `__ pw_digital_io ------------- * `Use unit test framework `__ pw_docgen --------- We updated the docs server to use native hot reloading. * `Update Pigweed Live schedule `__ * `Add new docs server `__ pw_emu ------ We're handling QEMU startup errors more gracefully now. * `Better handling for startup errors `__ (issue `#315868463 `__) * `qemu: Improve the QMP handshake handling `__ (issue `#315516286 `__) * `Link all the docs to each other `__ * `Update docs to follow new guidelines `__ pw_env_setup ------------ The upstream Pigweed bootstrap script now runs ``npm install``. We worked on native macOS support that doesn't rely on Rosetta. Use the ``--disable-rosetta`` flag to try it out. Note that the work isn't complete yet. * `Run npm install on bootstrap `__ * `Remove "untested" warning `__ * `Use ARM protoc version on ARM Macs `__ (issue `#315998985 `__) * `Fix typo in error message `__ * `Add flag to disable Rosetta `__ (issue `#315998985 `__) * `Retrieve armgcc for ARM Macs `__ (issue `#315998985 `__) * `Change case of armgcc version `__ (issue `#315998985 `__) * `Roll cipd client `__ * `Bump executing Python package `__ pw_file ------- * `Use unit test framework `__ pw_format --------- Format strings can now be built by macros at compile-time by specifying the format string as a set of string literals separated by the custom ``PW_FMT_CONCAT`` keyword. * `Allow format strings to be composed at compile time `__ pw_fuzzer --------- * `Fix ambiguous reference to ContainerOf `__ pw_hdlc ------- * `Use unit test framework `__ pw_hex_dump ----------- * `Use unit test framework `__ pw_i2c ------ * `Use unit test framework `__ pw_ide ------ ``pw_ide`` now handles additional clang toolchains if your project specifies one that's different from the one provided by Pigweed. We also shipped several UX improvements to the Visual Studio Code extension. * `Add command to build VSC extension `__ * `Remove VSIX installation stuff `__ * `Don't warn on missing extensions.json `__ * `Alpha-sort the list of targets in VSC `__ * `Auto-run build system command `__ * `Update VSC Python config `__ * `Fix condition for Windows platform `__ * `Fix for clang installed to project dir `__ (issue `#314693384 `__) pw_kvs ------ * `Use unit test framework `__ pw_libc ------- * `Use unit test framework `__ pw_log ------ * `Use unit test framework `__ pw_malloc --------- * `Use unit test framework `__ pw_metric --------- * `Use unit test framework `__ pw_perf_test ------------ * `Refactor event handler types `__ * `Use unit test framework `__ pw_presubmit ------------ * `Add LUCI_CONTEXT to ctx `__ * `Merge some of the "misc" checks `__ * `Better support downstream GnGenNinja use `__ (issue `#314818274 `__) * `Automatically compute trim_prefix `__ (issue `#282164634 `__) pw_random --------- * `Use unit test framework `__ pw_result --------- * `Use unit test framework `__ pw_rust ------- * `Remove excess newline in doc command line `__ pw_snapshot ----------- * `Use unit test framework `__ pw_status --------- * `Docs tweak `__ pw_string --------- * `Fix string_test build error under new clang revision `__ (issue `#315190328 `__) * `Add missing include `__ (issue `#314130408 `__) pw_symbolizer ------------- * `Fix symbolizer_test `__ (issue `#315190328 `__) pw_system --------- We added an :ref:`extra logging channel `. * `Support extra logging channel `__ (issue `#315540660 `__) pw_thread --------- * `Use unit test framework `__ pw_tls_client ------------- * `Use unit test framework `__ pw_tokenizer ------------ * `Mark \`pw_tokenizer_core\` as \`no_std\` `__ pw_toolchain ------------ The Arm GCC toolchain now uses :ref:`module-pw_toolchain_bazel`. * `Move ARM toolchain to new API `__ (issue `#309533028 `__) * `Use action configs from LLVM tool repo `__ (issue `#311257445 `__) pw_toolchain_bazel ------------------ Support for :py:attr:`additional_files` was added to reduce ``*_files`` boilerplate. We added a new :ref:`get started guide `. * `Fix naming in docs `__ * `Add misc_files group `__ (issue `#305737273 `__) * `Add automagic toolchain file collection `__ (issue `#305737273 `__) * `Add getting started guide `__ (issue `#309533028 `__) * `Remove legacy tool API `__ * `Remove deprecated API `__ (issue `#309533028 `__) * `Rename build file templates part 2/2 `__ pw_trace -------- * `Use unit test framework `__ pw_transfer ----------- We added support for setting different timeouts for clients and servers. See ``PW_TRANSFER_DEFAULT_MAX_CLIENT_RETRIES`` and ``PW_TRANSFER_DEFAULT_MAX_SERVER_RETRIES`` in :ref:`module-pw_transfer-config`. * `Remove small hardcoded timeout in proxy_test `__ (issue `#315459788 `__) * `Allow setting different timeouts for client and server `__ * `Update integration test documentation `__ (issue `#250947749 `__) .. _docs-changelog-20231215-pw_unit_test: pw_unit_test ------------ We deprecated use of ``gtest/gtest.h`` header paths for tests intended to build against ``pw_unit_test``. Historically, we supported using the ``gtest/gtest.h`` include path to support compiling a test as either a ``pw_unit_test`` or with the full GoogleTest on larger targets like desktop. However, this created a problem since ``pw_unit_test`` only implements a subset of the GoogleTest API. With the new approach, we require tests that are intended to compile on devices to directly include ``pw_unit_test/framework.h``. In cases where GoogleTest is available, that header will redirect to GoogleTest. * `Add compatibility in bazel `__ (issue `#309665550 `__) * `Use googletest backend as a dep `__ (issue `#315351886 `__) * `Fix building fuzztests with cmake `__ * `Use unit test framework `__ * `Create facade's header `__ (issue `#309665550 `__) pw_varint --------- * `Use unit test framework `__ pw_web ------ * `Handle unrequested responses after call_id changes `__ * `Add support for call_id in RPC calls `__ * `Add Mocha and Jest global vars to ESLint `__ * `Switch to pre-made subset of icon fonts `__ (issue `#287270736 `__) Build ===== * `Set Zephyr toolchain to llvm in presubmit `__ Targets ======= * `Point deprecated flag to new backend `__ * (stm32f429i_disc1) `Fix test runner `__ Language support ================ * (Python) `Remove references to non-existing setup.py `__ OS support ========== * (Zephyr) `Remove unecessary toolchain downloads & filter invalid targets `__ Docs ==== .. todo-check: disable * `Remove inaccurate #include statements `__ (issue `#295023422 `__) * `Add Bazel code coverage TODO `__ (issue `#304833225 `__) * `Add sort by alignment to size optimizations `__ * `Fix build command typo `__ * `Update changelog `__ .. todo-check: disable SEEDs ===== * `Always use build metadata titles in index table `__ * (SEED-0001) `Add section about SEEDs & code changes `__ * (SEED-0001) `Update number selection guidance `__ * SEED-0117) `Open for comments `__ * (SEED-0121) `Claim SEED number `__ Miscellaneous ============= * `Fix formatting after clang roll `__ ----------- Dec 1, 2023 ----------- Highlights (Nov 17, 2023 to Dec 1, 2023): * We now have an auto-generated :ref:`seed-0000` that shows you the current status of all SEEDs. * We've started implementing a :ref:`Rust API for pw_log `. * The :ref:`module-pw_alignment`, :ref:`module-pw_perf_test`, and :ref:`module-pw_status` docs were refactored to follow our latest :ref:`docs-contrib-moduledocs`. Active SEEDs ============ Help shape the future of Pigweed! Please visit :ref:`seed-0000` and leave feedback on the RFCs (i.e. SEEDs) marked ``Open for Comments``. Modules ======= pw_alignment ------------ The :ref:`docs ` were updated to follow our new :ref:`docs-contrib-moduledocs`. * `Follow the new docs guidelines `__ pw_allocator ------------ Utilities were added that make it easier to write tests for custom allocator implementations. See :ref:`module-pw_allocator-test-support`. The :ref:`module-pw_allocator-metric-collection` API was refactored. CMake support for heap poisoning was added. * `Fix use-after-free in ~AllocatorForTest `__ * `Add AllocationTestHarness `__ * `Add AllocationTestHarness `__ * `Refactor metric collection `__ * `Improve heap poisoning configuration `__ pw_bluetooth ------------ * `Add LE Set Host Feature command `__ (issue `#311639040 `__) * `LE Request Peer SCA Complete event `__ (issue `#311639272 `__) * `Fix LEExtendedAdvertisingReportData tx_power to be an Int `__ pw_bluetooth_sapphire --------------------- Migration of :ref:`module-pw_bluetooth_sapphire` into Pigweed has begun. * `Use pw_test_group for fuzzers target `__ (issue `#307951383 `__) * `Use pw_fuzzer_group `__ (issue `#307951383 `__) * `Add sales pitch & roadmap docs `__ (issue `#312287470 `__) * `Add testonly to testing targets `__ (issue `#136961 `__) * `Revert commits to get to a known working state `__ * `Use Write instead of UncheckedWrite `__ * `Remove now unnecessary use of std::optional `__ (issue `#311256496 `__) * `Move LegacyLowEnergyScanner impl to base class `__ (issue `#305975969 `__) * `Create new LowEnergyScanner polymorphic methods `__ (issue `#305975969 `__) * `Extended scanning support, Fake(Controller|Peer) `__ (issue `#305975969 `__) * `Remove fidl fuzzer from build `__ (issue `#307951383 `__) * `Use explicit constructor for SmartTask `__ * `Follow pigweed style for test files `__ * `Add OWNERS file `__ * `Delete unused build file `__ (issue `#307951383 `__) * `Fix pragma_once lint `__ (issue `#307951383 `__) * `Fix linter errors `__ (issue `#307951383 `__) * `Fix bazel formatting `__ (issue `#307951383 `__) * `Remove ICU from bazel build `__ (issue `#311449154 `__) * `Refactor pw_bluetooth_sapphire & fix errors `__ (issue `#42051324 `__) * `Update copyright headers `__ pw_build_info ------------- * `Fix relative paths in Python tests `__ pw_containers ------------- A warning was added about ``pw::Vector`` being unsafe with non-trivially-destructible, self-referencing types. See `b/313899658 `_. * `Warn about unsafe Vector usage `__ (issue `#313899658 `__) pw_format --------- A ``core::fmt`` macro helper was added. * `Add core::fmt macro helper `__ .. _docs-changelog-20231201-pw_log: pw_log ------ An initial Rust API has been added. * `Add initial Rust API `__ pw_multibuf ----------- * `Remove unused GN dep `__ * `Remove dep on external gtest `__ * `Make HeaderChunkRegionTracket public `__ * `Fix cmake build file `__ pw_package ---------- * `Add ICU package `__ (issue `#311449154 `__) pw_perf_test ------------ The :ref:`docs ` have been refactored. * `Rename logging event handler files `__ * `Rework docs `__ pw_presubmit ------------ .. todo-check: disable * `Automatically compute trim_prefix `__ (issue `#282164634 `__) * `Allow full issues.pigweed.dev urls in TODO links `__ * `Fix TestTodoCheck.test_one_bug_legacy() `__ * `No coverage upload for shadow builds `__ (issue `#282164634 `__) * `Remove some unused constants `__ * `Add is_shadow/is_prod members to context `__ * `Refactor the coverage options `__ (issue `#282164634 `__) * `Show diffs when parser tests fail `__ * `Trim paths in Bazel summaries `__ * `Correct the codesearch_host `__ (issue `#261779031 `__) * `Correct host in coverage presubmit `__ (issue `#261779031 `__) * `Fix coverage options `__ (issue `#261779031 `__) * `Add Fuchsia style to todo_check_with_exceptions `__ (issue `#307951383 `__) * `Create Sapphire presubmit step `__ (issue `#42051324 `__) .. todo-check: enable pw_protobuf ----------- * `Add common_py_pb2 target `__ (issue `#309351244 `__) pw_rpc ------ * `Initialize serde_ members to nullptr `__ pw_rpc_transport ---------------- * `Unblock sockets when stopping `__ (issue `#309680612 `__) pw_sensor --------- * `Reserve SEED for configuring sensors `__ * `Claim SEED number for high level view `__ pw_status --------- The :ref:`docs ` have been refactored to follow our latest :ref:`docs-contrib-moduledocs`. * `Adopt latest docs standard `__ pw_string --------- * `Add missing include `__ pw_system --------- * `Load all domain tokens `__ * `Style fixes to Python scripts `__ * `Add missing dependency on pw_trace `__ pw_tokenizer ------------ * `Move entry header to a separate struct `__ * `Catch accidental use of test macro `__ * `Fix NULL dereference in fuzz harness `__ * `Move ReadUint32 `__ pw_toolchain ------------ The Arm toolchain has been updated to use the new toolchain specified in :ref:`seed-0113`. A helper for registering C/C++ toolchains in Bazel was added to enable upstream Pigweed to make changes without needing to manually update downstream projects. See :ref:`module-pw_toolchain-bazel-upstream-pigweed-toolchains`. * `Move ARM toolchain to new API `__ (issue `#309533028 `__) * `Use action configs from LLVM tool repo `__ (issue `#311257445 `__) * `Add Bazel toolchain registration helper `__ (issue `#301336229 `__) * `Merge host toolchains `__ * `Expose non-hermetic toolchain `__ (issue `#299151946 `__) * `Only fetch compatible Rust toolchains `__ pw_toolchain/arm_clang ---------------------- * `Reduce binary size `__ (issue `#254541584 `__) pw_toolchain_bazel ------------------ Support for binding tools to toolchains was added. See :py:class:`pw_cc_tool` and :py:class:`pw_cc_action_config`. Support for featureless sysroots was added. See :py:attr:`pw_cc_toolchain.builtin_sysroot` and :py:attr:`pw_cc_toolchain.cxx_builtin_include_directories`. * `Remove deprecated API `__ (issue `#309533028 `__) * `Rename build file templates part 2/2 `__ * `Rename build file templates part 1/2 `__ * `Add LLVM clang tool template `__ (issue `#311257445 `__) * `Add ARM GCC toolchain template `__ (issue `#309533028 `__) * `Support featureless sysroots `__ (issue `#309533028 `__) * `Mirror features to be flag sets `__ (issue `#309533028 `__) * `Add initial pw_cc_action_config support `__ (issue `#309533028 `__) pw_transfer ----------- Commands in the :ref:`integration test docs ` were updated and docs were added that explain how to :ref:`run more than one instance of tests in parallel `. * `Update integration test documentation `__ * `Set clients to transfer_v2 `__ (issue `#309686987 `__) * `Limit to sending a single chunk in tests `__ (issue `#295037376 `__) * `Don't "block-network" by default `__ (issue `#311297881 `__) * `Use StatusCode in integration tests `__ * `Make integration_test_server testonly, fix fx roller `__ (issue `#312493408 `__) * `Tag integration tests block-network `__ (issue `#311297881 `__) pw_unit_test ------------ * `Skip googletest tests if not set `__ pw_web ------ * `Install Web Test Runner and dependencies `__ Build ===== Bazel ----- More Bazel information has been added to :ref:`docs-module-structure`. * `Add simple module configuration mechanism `__ (issue `#234872811 `__) * `Tidy up WORKSPACE `__ * `Rename Python toolchains `__ (issue `#310293060 `__) * `Remove py_proto_library wrapper `__ (issue `#266950138 `__) * `Use py_proto_library from rules_python `__ * `Partial pw_system_console fix `__ (issue `#310307709 `__) Docs ==== The tool that we use to semi-automate these changelog updates has been added to the main Pigweed repository. Try out the tool on :ref:`docs-contrib-changelog` and see ``//docs/_static/js/changelog.js`` to view its implementation. * `Gerrit code coverage documentation `__ (issue `#282164634 `__) * `Move copyright header info to style guide `__ * `Document the Test footer `__ * `Add changelog update instructions and tool `__ * `Update changelog `__ SEEDs ===== We now have an auto-generated :ref:`seed-0000` that shows you the current status of all SEEDs. * `Generate the SEED index table `__ * (SEED-0114) `Update status; format header in table `__ * (SEED-0114) `Channels `__ * (SEED-0118) `Claim SEED number `__ * (SEED-0118) `Claim SEED number `__ Third party =========== * `Add GN rules for ICU `__ (issue `#311449154 `__) ------------ Nov 15, 2023 ------------ Highlights (Nov 02, 2023 to Nov 15, 2023): * The API for writing proc macros with pw_format was simplified. * ``pw_emu`` added a command for resuming the execution of paused emulators and now has limited support for inserting environment variables into configuration entries. * ``pw_ide`` can now output logs to files. * ``pw_unit_test`` added support for GoogleTest's ``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds``. * Pigweed's :ref:`docs-mission` are now documented. Active SEEDs ============ Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): * `SEED-0114: Channels `__ * `SEED-0115: Sensors `__ * `SEED-0116: Sockets `__ Modules ======= pw_allocator ------------ The ``...Unchecked`` methods have been removed from the ``pw::allocator::Allocator`` interface and the NVI-style ``Do...`` methods have been modified to take ``Layout`` parameters. * `Update interface based on final SEED-0110 design `__ * `Refactor test support and example allocator `__ (issue `#306686936 `__) pw_analog --------- * `Mark libs as test only in bazel `__ (issue `#309665550 `__) pw_console ---------- ``SocketClient`` has been updated to support both IPv4 and IPv6 addresses in addition to Unix sockets. * `Add docs banner `__ * `Improve SocketClient addressing `__ pw_emu ------ There is now limited supported for inserting environment variable values into configuration entries. A command for resuming the execution of a paused emulator was added. * `Add support for substitutions in config entries `__ (issue `#308793747 `__) * `Add resume command to CLI `__ (issue `#308793747 `__) * `Fix CLI gdb and load commands `__ (issue `#308793747 `__) pw_env_setup ------------ * `Make pigweed_environment.gni content gni-relative `__ * `Update Bazel to 7.0.0 pre-release `__ pw_format --------- The API for writing `proc macros `__ that take format strings and arguments was simplified. * `Add tests for macro helpers `__ * `Generalize format macro handling `__ pw_fuzzer --------- * `Move \`Domain\` from fuzztest::internal to fuzztest `__ * `Switch oss-fuzz build to Bazel `__ pw_i2c ------ * `Mark libs as test only in bazel `__ (issue `#309665550 `__) pw_ide ------ Logs can now be output to files. * `Set 3-space tabs in VS Code `__ * `Support output to logs `__ * `Remove redundant licence `__ * `Remove clangd auto-restart `__ * `Make Sphinx extensions upstream-only `__ * `VSC extension 0.1.1 release `__ pw_perf_test ------------ * `Reogranize source files `__ pw_presubmit ------------ * `Create new fuzz program `__ (issue `#311215681 `__) * `Add examples showing how to create formatters `__ * `Correct coverage ref `__ (issue `#279161371 `__) pw_stream --------- * `Fix use of shutdown on Windows `__ (issue `#309680612 `__) pw_system --------- * `Add tracing to the demo system `__ pw_system_demo -------------- * `Add clang to default stm32f4 build `__ (issue `#301079199 `__) pw_tokenizer ------------ * `Add Java to supported languages list `__ pw_toolchain ------------ * `Set alwayslink = 1 when using --wrap `__ * `Add objdump `__ pw_toolchain_bazel ------------------ Core building blocks from the :ref:`seed-0113` plan were implemented: :py:class:`pw_cc_flag_set` and :py:class:`pw_cc_flag_group`. * `Introduce pw_cc_flag_set and pw_cc_flag_group `__ (issue `#309533028 `__) pw_trace_tokenized ------------------ * `Add a transfer based trace service `__ pw_transfer ----------- There's been a concerted effort to reduce ``pw_transfer`` test flakiness. * `Limit data sent in handler clear test `__ (issue `#297355578 `__) * `Limit data sent in manual cancel test `__ * `Use project-absolute imports for test fixture `__ (issue `#310038737 `__) * `Prevent accidental timeouts in unit tests `__ pw_unit_test ------------ The :ref:`module-pw_unit_test-api-expect` and :ref:`module-pw_unit_test-api-assert` APIs were documented. Support for GoogleTest's ``ASSERT_OK_AND_ASSIGN``, ``StatusIs``, and ``IsOkAndHolds`` was added. * `Document ASSERT_ and EXPECT_ macros `__ * `Include the right gmock header `__ (issue `#309665550 `__) * `Mark libs as test only in bazel `__ (issue `#309665550 `__) * `Support *_NEAR, *_FLOAT_EQ, *_DOUBLE_EQ `__ * `Allow googletest_test_matchers_test to run `__ * `Add more googletest test matchers `__ * `Add googletest test matchers `__ pw_watch -------- Support for ``httpwatcher`` was removed because it's not supported on modern versions of Python. * `Remove httpwatcher support `__ (issue `#304603192 `__) pw_web ------ The log viewer has been polished and testing has been enhanced. * `Fix LogViewControls responsive behavior `__ (issue `#308993282 `__) * `Resume autoscroll with clear logs event `__ * `Fix clear logs due to error thrown handling input text `__ * `Add manual testing page in docs `__ (issue `#288587657 `__) Build ===== * `Update the default C++ standard `__ Bazel ----- * `Upgrade nanopb version `__ * `Update comment `__ * `Set --incompatible_default_to_explicit_init_py `__ (issue `#266950138 `__) * `Make pw_cc_library an alias for cc_library `__ (issue `#267498492 `__) * `Don't disable use_header_modules `__ (issue `#267498492 `__) Targets ======= .. todo-check: disable * (``stm32f429i_disc1_stm32cube``) `Update TODO `__ .. todo-check: enable Language support ================ * (Python) `Update constraint.list `__ * (Python) `Upgrade parameterized package `__ Docs ==== A document about Pigweed's :ref:`docs-mission` was added. The :ref:`style guide ` was split into multiple pages. * `Update Pigweed Live dates `__ * `Add mission & philosophies `__ * `Add Contribution Standards section `__ * `Add details to codependent docs `__ * `Update changelog `__ (issue `#292247409 `__) * `Split the style guide: Doxygen & Sphinx `__ * `Split the style guide: C++ `__ * `Split the style guide: commit style `__ SEEDs ===== * (SEED-0110) `Correct status `__ * (SEED-0110) `Memory Allocation Interfaces `__ * (SEED-0113) `Add modular Bazel C/C++ toolchain API `__ ----------- Nov 3, 2023 ----------- Highlights (Oct 19, 2023 to Nov 3, 2023): * A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented. * :ref:`module-pw_format` is a new module dedicated to Rust format string parsing. * The tokenizer prefix is now configurable via ``PW_TOKENIZER_NESTED_PREFIX_STR``. * References to C++14 have been removed throughout the codebase. Pigweed no longer supports C++14; C++17 or newer is required. * The upstream Pigweed GN build is now :ref:`more isolated ` so that downstream projects have less conflicts when importing Pigweed into their existing GN build. * Build configuration is moving away from Bazel macros like ``pw_cc_library`` and towards the toolchain configuration so that downstream projects can have :ref:`full control ` over how Pigweed libraries are built. * New guidelines for authoring module docs have been published at :ref:`docs-contrib-moduledocs`. :ref:`module-pw_string` is now an example of a "golden" module docs set that follows the new guidelines. Please leave feedback on the new guidelines (and module docs updated to follow the guidelines) in `issue #309123039 `__. Active SEEDs ============ Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): * `SEED-0103: pw_protobuf Object Model `__ * `SEED-0106: Project Template `__ * `SEED-0110: Memory Allocation Interfaces `__ * `SEED-0113: Modular Bazel C/C++ Toolchain API `__ * `SEED-0114: Channels `__ * `SEED-0115: Sensors `__ * `SEED-0116: Sockets `__ Modules ======= pw_allocator ------------ The docs now have an auto-generated :ref:`module-pw_allocator-size`. ``pw::allocator::SplitFreeListAllocator`` has a new ``blocks()`` method for getting the range of blocks being tracked. The class was also refactored to use the existing ``Block`` API. The ``Block`` API itself was refactored to encode offsets and flags into fields. * `Add size reporting `__ * `Return Range from SplitFreeListAllocator `__ * `Refactor SplitFreeListAllocator to use Block `__ * `Refactor Block to use encoded offsets `__ pw_arduino_build ---------------- * `STM32 Core fixes `__ pw_assert --------- * `Update print_and_abort backend formatting `__ pw_bluetooth ------------ More :ref:`Emboss ` definitions were added. .. todo-check: disable * `Add TODO for issue 308794058 `__ (issue `#308794058 `__) * `Remove anonymous entry in LEPeerAddressTypeNoAnon `__ * `Separate LEAddressType and LEExtendedAddressType `__ * `Define LEExtendedCreateConnectionV1 Emboss structure `__ (issue `#305976440 `__) * `Define LEEnhancedConnectionCompleteSubeventV1 `__ (issue `#305976440 `__) * `Remove padding from Emboss command definitions `__ .. todo-check: enable .. _docs-changelog-20231103-pw_build: pw_build -------- Pigweed used to inject a selection of recommended configs into every ``pw_*`` C/C++ target in the GN build. These were previously only possible to remove with the ``remove_configs`` argument. These configs are now bundled with toolchains instead, and if you don't use a Pigweed-style toolchain you'll no longer need to find ways to strip the default configs from Pigweed build rules. More importantly, this changes makes Pigweed's recommended configs behave identically to other toolchain configs, and they're now more clearly part of GN toolchain definitions. This change is transparent to most projects, but some Pigweed customers have been asking for this for a while. The :ref:`module-pw_build-bazel-empty_cc_library` Bazel utility was added. * `Add empty_cc_library `__ * `Remove pw_build_default_configs_in_toolchain `__ * `Apply pigweed_default_configs in toolchain `__ (issue `#260111641 `__) * `Fix blob attribute ordering `__ * `Only use -Wextra-semi on C++ files with GCC `__ (issues `#301262374 `__, `#301262374 `__) * `Silence Windows-specific warnings `__ pw_bytes -------- A new ``_b`` literal was added to make it easier to create bytes for tests and constants. * `Add _b suffix for byte literals `__ pw_containers ------------- The reference docs for the variable length entry queue API in C and Python were updated. * `Update VariableLengthEntryQueue size functions; cleanup `__ pw_digital_io_mcuxpresso ------------------------ * `Remove RT595 size def `__ pw_doctor --------- * `Trivial linter fixes `__ pw_emu ------ * `renode: Show more details when failing to connect `__ (issue `#307736513 `__) pw_env_setup ------------ ``pip`` has been pinned to ``23.2.1`` and ``pip-tools`` to ``7.3.0`` to prevent dependency resolution problems. * `Pin pip and pip-tools `__ * `Update protoc to 2@24.4 `__ (issue `#306461552 `__) pw_format --------- :ref:`module-pw_format` is a new module dedicated to Rust format string parsing. * `Correct crate name in docs `__ * `Move Rust format string parsing into its own module `__ pw_fuzzer --------- * `Inline NonOkStatus() `__ * `Fix instrumentation config `__ .. _docs-changelog-20231103-pw_hdlc: pw_hdlc ------- Using read callbacks in ``RpcClient`` is no longer accepted and the use of ``CancellableReader`` is now enforced because it provides a safe and clean shutdown process. * `Enforce use of CancellableReader `__ (issue `#301496598 `__) pw_libcxx --------- :ref:`module-pw_libcxx` is a new module that provides ``libcxx`` symbols and will eventually facilitate pulling in headers as well. * `Add pw_libcxx library `__ pw_log ------ A :ref:`module-pw_log-bazel-backend_impl` label flag was added to Bazel to avoid circular dependencies. * `Enable sandboxing for pigweed genrules `__ (issue `#307824623 `__) * `Introduce backend_impl label flag `__ (issue `#234877642 `__) pw_multibuf ----------- A lot more of the :cpp:class:`pw::multibuf::Chunk` API was implemented. * `Add basic MultiBuf operations `__ * `Add Chunk::Merge `__ * `Fix TrackingAllocatorWithMemory UAF `__ * `Add module and Chunk implementation `__ pw_package ---------- * `Use mirror for stm32cube `__ (issue `#278914999 `__) * `Fix Zephyr URL `__ pw_presubmit ------------ A CSS formatter was added. * `Add basic CSS formatter `__ (issue `#308948504 `__) * `Kalypsi-based coverage upload `__ (issue `#279161371 `__) * `Handle missing upstream better `__ (issue `#282808936 `__) * `Trivial linter fixes `__ pw_protobuf ----------- * `Enable sandboxing for pigweed genrules `__ (issue `#307824623 `__) pw_rpc ------ :ref:`pw::rpc::SynchronousCallFor() ` now supports :ref:`DynamicClient `. * `Update Java service error with tip `__ (issue `#293361955 `__) * `Support DynamicClient with SynchronousCallFor API `__ pw_string --------- The docs were updated to match the new :ref:`docs-contrib-moduledocs`. * `Docs tweaks `__ pw_sys_io --------- Backends that depend on ``default_putget_bytes`` were updated to express the dependency. * `Fix Bazel backends `__ pw_system --------- See :ref:`docs-changelog-20231103-pw_hdlc` for an explanation of the ``CancellableReader`` change. * `Enforce use of CancellableReader `__ (issue `#301496598 `__) pw_tls_client ------------- * `Update to new boringssl API `__ pw_tokenizer ------------ The tokenizer prefix is now configurable via ``PW_TOKENIZER_NESTED_PREFIX_STR``. * `Enable sandboxing for pigweed genrules `__ (issue `#307824623 `__) * `Let tokenizer prefix be configurable `__ pw_toolchain ------------ You can now set the ``dir_pw_third_party_builtins`` GN var to your ``compiler-rt/builtins`` checkout to enable buildings LLVM ``builtins`` from source instead of relying on a shipped ``libgcc``. * `Apply pigweed_default_configs in toolchain `__ (issue `#260111641 `__) * `Build compiler-rt builtins to replace libgcc `__ pw_unit_test ------------ * `Pass verbose flag to TestRunner `__ pw_web ------ * `Limit component rerendering `__ (issue `#307559191 `__) Build ===== References to C++14 have been removed throughout the codebase. Pigweed no longer supports C++14; C++17 or newer is required. * `Drop C++14 compatibility from the build and docs `__ .. _docs-changelog-20231103-bazel: Bazel ----- Build configuration is moving away from Bazel macros like ``pw_cc_library`` and towards the toolchain configuration so that downstream projects can have full control over how Pigweed libraries are built. * `Move Kythe copts to toolchain configuration `__ (issue `#267498492 `__) * `Move warnings to toolchain configuration `__ (issue `#240466562 `__) * `Silence warnings from external code `__ (issue `#300330623 `__) * `stm32cube support `__ * `Remove most copts from pw_cc_library macro `__ (issue `#267498492 `__) Targets ======= ``pw_assert_BACKEND`` for :ref:`target-host` was set to ``print_and_abort_check_backend`` to enable compatibility with GoogleTest death tests. * (``host``) `Change pw_assert_BACKEND `__ OS support ========== * (``zephyr``) `Update checkout to v3.5 `__ Docs ==== New guidelines for authoring module docs have been published at :ref:`docs-contrib-moduledocs`. :ref:`module-pw_string` is now an example of a "golden" module docs set that follows the new guidelines. Please leave feedback on the new guidelines (and module docs updated to follow the guidelines) in `issue #309123039 `__. There's now a definition for :ref:`docs-glossary-facade` in the glossary. * `Update module docs authoring guidelines `__ * `Fix nav and main content scrolling `__ (issue `#303261476 `__) * `Add udev instructions to Bazel Get Started `__ * `Add information on the experimental repo to contributing.rst `__ * `Mention command for updating Py dep hashes `__ * `Define facade in glossary `__ * `Remove symlinks to files that were removed `__ * `Mention upstream development guide in contributor guidelines `__ * `Move all images out of the repo `__ * `Update changelog `__ (issue `#292247409 `__) * `Move CoC to Contributors section of sitenav `__ SEEDs ===== * (SEED-0107) `Update SEED references; fix typo `__ * (SEED-0112) `Async Poll Model `__ * (SEED-0115) `Fix link `__ * (SEED-0116) `Claim SEED number `__ Third party =========== * (nanopb) `Detect protoc updates `__ ------------ Oct 20, 2023 ------------ Highlights (Oct 5, 2023 to Oct 20, 2023): * ``pw_emu`` has launched! Check out :ref:`module-pw_emu` to get started. See :ref:`seed-0108` for background. * :ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105` for background. * The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler RAII API for allocating individual values within an allocator. * A few SEEDs were accepted: :ref:`seed-0105`, :ref:`seed-0109`, and :ref:`seed-0111`. * Lots of new docs, including a guide for :ref:`getting started with Bazel `, a conceptual explanation of :ref:`facades and backends `, and an eng blog post detailing :ref:`Kudzu `, an electronic badge that the Pigweed team made for Maker Faire 2023. Active SEEDs ============ Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): * `SEED-0103: pw_protobuf Object Model `__ * `SEED-0106: Project Template `__ * `SEED-0110: Memory Allocation Interfaces `__ * `SEED-0113: Modular Bazel C/C++ Toolchain API `__ * `SEED-0114: Channels `__ * `SEED-0115: Sensors `__ Modules ======= pw_allocator ------------ The new :cpp:class:`pw::allocator::UniquePtr` class offers a safer, simpler RAII API for allocating individual values within an allocator. * `Fix SplitFreeListAllocator region alignment `__ * `Add UniquePtr\ `__ pw_async -------- * `Add CMake support `__ pw_async_basic -------------- * `Add missing include `__ * `Fix build error when using pw_async:heap_dispatcher `__ pw_bluetooth ------------ * `Define LEChannelSelectionAlgorithmSubevent `__ * `Define LEScanTimeoutSubevent `__ (issue `#265052417 `__) * `Use $size_in_bits instead of hardcoding size `__ * `Switch from parameterized value to determining at run time `__ (issue `#305975969 `__) * `Fix size reports `__ pw_build -------- :ref:`module-pw_build-bazel-pw_linker_script` now describes how to work with linker scripts. * `Update pw_linker_script docs `__ * `Move pw_linker_script rule definition `__ pw_chre ------- * `Remove TODOs for CHRE MacOS support `__ pw_cli ------ * `Honor NO_COLOR and CLICOLOR_FORCE `__ * `Use typing.Literal `__ pw_digital_io ------------- * `Add Android.bp for proto/rpc `__ pw_emu ------ The module has launched! Check out :ref:`module-pw_emu` to get started. * `renode: Increase start timeout to 120s `__ * `Fix pid file race condition `__ * `mock_emu: start listening before making the port available `__ (issue `#306155313 `__) * `qemu: Force using IPv4 `__ (issue `#305810466 `__) * `Add renode support `__ * `Add QEMU support `__ * `core: Let the OS terminate foreground emulator processes `__ * `Add user APIs and the command line interface `__ * `Add core components `__ * `Add Emulators Frontend module boilerplate `__ pw_env_setup ------------ * `Allow disabling CIPD cache `__ * `Add prpc `__ pw_function ----------- * `Move pw_function_CONFIG to .gni `__ pw_hdlc ------- :ref:`module-pw_hdlc-api-rpc` now has much more information on how to use ``pw_hdlc`` for RPC in Python. * `Update Python RPC documents `__ pw_i2c ------ * `Fix accidental c++2a `__ * `Add Android.bp for i2c proto/rpc `__ pw_kvs ------ The new ``FlashPartitionWithLogicalSectors`` variant of ``FlashPartition`` supports combining multiple physical ``FlashMemory`` sectors into a single logical ``FlashPartition`` sector. * `Add FlashPartitionWithLogicalSectors `__ pw_log_tokenized ---------------- :ref:`module-pw_log-tokenized-args` are now supported. See :ref:`seed-0105` for background. * `Add tokenized string args support to log backend `__ pw_log_zephyr ------------- * `Clean-up unused dependencies from TOKENIZED_LIB `__ pw_minimal_cpp_stdlib --------------------- * `Support additional libraries `__ * `Add Zephyr Kconfig to enable include path `__ pw_package ---------- * `Update boringssl commit & skip clang-tidy `__ * `Update Emboss commit `__ pw_presubmit ------------ :ref:`module-pw_presubmit-presubmit-checks` has more guidance on when to use ``--base`` and ``--full``. * `Add note about --full and --base `__ pw_snapshot ----------- * `More detokenization tests `__ pw_spi ------ * `Fix cmake integration `__ pw_sync_zephyr -------------- * `Add TimedThreadNotification::try_acquire_until `__ pw_system --------- The ``Device`` class's constructor now accepts a ``logger`` argument that enables you to specify which logger should be used. * `Add option to pass logger to Device `__ pw_third_party_freertos ----------------------- * `Add arm_cm7_not_r0p1 `__ pw_thread --------- * `More detokenization tests `__ pw_thread_freertos ------------------ * `Fix extra wakeups when detaching threads `__ (issue `#303885539 `__) pw_tokenizer ------------ :ref:`module-pw_tokenizer-get-started-integration` has new guidance around configuring linker scripts in Bazel. * `Expose linker_script in BUILD.bazel `__ pw_toolchain ------------ * `Exclude googletest from static analysis `__ pw_transfer ----------- * `Start the API reference `__ (issue `#299147635 `__) pw_web ------ * `Reduce table cell padding `__ (issue `#305022558 `__) * `Fix invisible jump button `__ * `Enable manual color scheme setting `__ (issue `#301498553 `__) Build ===== * `Fix pw_BUILD_BROKEN_GROUPS `__ * `Update Android.bp `__ (issue `#277108894 `__) Bazel ----- * `Don't autodetect C++ toolchain `__ (issue `#304880653 `__) * `Add O2 to arm_gcc toolchain `__ (issue `#299994234 `__) Targets ======= * (rp2040_pw_system) `Enable time slicing `__ OS support ========== * (zephyr) `Allow direct CMake inclusions `__ Docs ==== * `Move CoC to Contributors section of sitenav `__ * `Create concepts section in sitenav `__ * `Add facades and backends page `__ * `Add Bazel getting started tutorial `__ * `Remove css class on Kudzu image captions `__ * `Kudzu photos `__ * `Refactor the getting started section `__ * `Add sitemap `__ * `Add hat tip for pixel doubling technique `__ * `Start eng blog and add Kudzu page `__ * `Add Pigweed Live directive `__ * `Add builder viz to CI/CQ intro `__ (issue `#302680656 `__) * `Fix link `__ (issue `#302680656 `__) * `Add changelog highlight `__ * `Update changelog `__ SEEDs ===== A few SEEDs were accepted and a few more started. * (SEED-0105) `Add nested tokens to pw_tokenizer and pw_log `__ * (SEED-0109) `Communication Buffers `__ * (SEED-0111) `Update status, add link to SEED-0113 `__ * (SEED-0111) `Make Bazel Pigweed's Primary Build System `__ * (SEED-0113) `Claim SEED number (Modular Bazel C/C++ Toolchain API) `__ * (SEED-0114) `Claim SEED number (Channels) `__ * (SEED-0115) `Clain SEED number (Sensors) `__ Third party =========== * (boringssl) `Remove crypto_sysrand.cc `__ * (fuchsia) `Copybara import `__ * (fuchsia) `Update copybara with fit/defer.h `__ Miscellaneous ============= * `Update formatting for new clang version `__ * `Use C++20 everywhere `__ (issue `#303371098 `__) * (revert) `Use .test convention" `__ * `Add generated Emboss code `__ ----------- Oct 6, 2023 ----------- Highlights (Sep 21, 2023 to Oct 6, 2023): * We expanded our RP2040 support. See the new :ref:`module-pw_chrono_rp2040` and :ref:`module-pw_digital_io_rp2040` modules. * The :ref:`new CancellableReader class in pw_hdlc ` is an interface for receiving RPC packets that guarantees its read process can be stopped. * ``pw_rpc`` now :ref:`automatically generates a new DynamicClient interface ` when dynamic allocation is enabled. * The Python backend for ``pw_tokenizer`` now supports :ref:`tokenizing strings as arguments `. * The ``pigweed_config`` mechanism in Bazel is now officially retired. Active SEEDs ============ Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): * `SEED-0103: pw_protobuf Object Model `__ * `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log `__ * `SEED-0106: Project Template `__ * `SEED-0109: Communication Buffers `__ * `SEED-0110: Memory Allocation Interfaces `__ * `SEED-0111: Make Bazel Pigweed's Primary Build System `__ * `SEED-0112: Async Poll Model `__ Modules ======= .. _docs-changelog-20231009-pw_allocator: pw_allocator ------------ We added a bunch of new allocator APIs! ``AllocatorMetricProxy`` is a wrapper for ``Allocator`` that tracks the number and total of current memory allocations as well as peak memory usage. ``LibCAllocator`` is an allocator that uses ``malloc()`` and ``free()``. ``NullAllocator`` is an allocator that always fails which is useful for disallowing memory allocations under certain circumstances. ``SplitFreeListAllocator`` uses a free list to reduce fragmentation. ``FallbackAllocator`` enables you to specify primary and secondary allocators. * `Add Android.bp `__ * `Add pool accessors `__ * `Move Resize assertion `__ * `Add AllocatorMetricProxy `__ * `Add LibCAllocator `__ * `Add NullAllocator `__ * `Add SplitFreeListAllocator `__ * `Add FallbackAllocator `__ * `Generic interface for allocators `__ pw_analog --------- * `Migrate MicrovoltInput to Doxygen `__ (issue `#299147635 `__) pw_async -------- * `Add OWNERS file `__ pw_bloat -------- ``pw_size_report()`` has a new ``json_key_prefix`` argument which is an optional prefix for key names in JSON size reports and a new ``full_json_summary`` argument which provides more control over how much detail is provided in a JSON size report. * `Update API to allow verbose json content `__ (issue `#282057969 `__) pw_bluetooth ------------ * `Format Emboss files `__ * `Update comments in HCI event defs `__ (issue `#265052417 `__) pw_build -------- * `Fix path in Bazel pw_linker_script `__ * `Expose pw_linker_script in Bazel `__ (issue `#303482154 `__) * `Define empty configs `__ * `Add bazel implementation of pw_cc_blob_library `__ (issue `#238339027 `__) * `Clean up build_target.gni `__ (issue `#260111641 `__) * `Allow add_global_link_deps to be overriden `__ * `Expose pigweed_default_configs `__ (issue `#260111641 `__) * `Apply -Wextra-semi to C code as well as C++ `__ pw_chre ------- * `Update bug numbers `__ pw_chrono --------- * `Add clarification to is_nmi_safe `__ pw_chrono_rp2040 ---------------- This module is a new ``pw::chrono::SystemClock`` backend for RP2040. * `System clock backend `__ pw_cli ------ * `Update requires script `__ * `Narrow logic around colors `__ pw_containers ------------- There's a new C implementation for ``VariableLengthEntryDeque`` which is a double-ended queue buffer that stores variable-length entries inline in a circular (ring) buffer. The old ``VariableLengthEntryDeque`` was renamed to ``VariableLengthEntryQueue``. * `Add missing include for std::move `__ * `Rename to VariableLengthEntryQueue `__ * `Rename files to variable_length_entry_queue `__ * `VariableLengthEntryDeque Entry struct `__ * `VariableLengthEntryDeque C implementation `__ pw_digital_io_rp2040 -------------------- This module is a new RP2040 backend for ``pw_digital_io``. * `Implementation `__ (issue `#303255049 `__) pw_env_setup ------------ We made the Pigweed bootstrap process on Windows more robust. * `Fix double bootstrap.bat failures on Windows `__ (issue `#300992566 `__) * `Better highlight bootstrap failure `__ * `Fix double bootstrap.bat failures on Windows `__ (issue `#300992566 `__) .. _docs-changelog-20231009-pw_hdlc: pw_hdlc ------- The new ``CancellableReader`` class is a new interface for receiving RPC packets that guarantees its read process can be stopped. * `Add CancellableReader `__ (issue `#294858483 `__) pw_i2c ------ * `Fix docs to use MakeExpectedTransactionArray `__ * `Add cmake integration `__ pw_kvs ------ The new ``FlashPartitionWithLogicalSectors`` C++ class supports combining multiple physical ``FlashMemory`` sectors into a single logical ``FlashPartition`` sector. * `Add FlashPartitionWithLogicalSectors `__ pw_libc ------- * `Don't implicitly link against global link_deps `__ pw_metric --------- * `Make constructors constexpr `__ pw_minimal_cpp_stdlib --------------------- * `Update to compile with stdcompat `__ * `Namespace public/internal to module `__ pw_perf_test ------------ * `Gate on pw_chrono_SYSTEM_TIMER_BACKEND `__ pw_presubmit ------------ * `Allow dots in module part of commit message `__ * `Use autodoc for context classes `__ * `Allow passing kwargs to build.bazel `__ (issue `#302045722 `__) * `No env_with_clang_vars with bazel `__ pw_ring_buffer -------------- * `Minor build and docs updates `__ .. _docs-changelog-20231009-pw_rpc: pw_rpc ------ If dynamic allocation is enabled via ``PW_RPC_DYNAMIC_ALLOCATION`` a new ``DynamicClient`` is now generated which dynamically allocates the call object with ``PW_RPC_MAKE_UNIQUE_PTR``. * `Generate DynamicClient that dynamically allocates call objects `__ * `Add CancellableReader `__ (issue `#294858483 `__) pw_rpc_transport ---------------- * `Add a test loopback service registry `__ (issue `#300663813 `__) pw_stream --------- ``pw_stream`` now has initial support for ``winsock2``. * `Add Windows socket support `__ pw_sys_io_rp2040 ---------------- * `Renamed from pw_sys_io_pico `__ .. _docs-changelog-20231009-pw_tokenizer: pw_tokenizer ------------ The Python backend now supports nested hashing tokenization. See :ref:`module-pw_tokenizer-nested-arguments`. * `Support nested hashing tokenization (python backend) `__ (issue `#278890205 `__) * `Test for C99 support `__ pw_toolchain ------------ * `Add libc stub for gettimeofday, update visibility rules `__ * `Link against pw_libc for host clang toolchains `__ pw_transfer ----------- * `Start the API reference `__ (issue `#299147635 `__) * `Remove old test server `__ (issue `#234875234 `__) pw_unit_test ------------ * `Do not print contents of unknown objects `__ * `Add more pw_unit_test_TESTONLY args `__ (issue `#234873207 `__) * `Add pw_unit_test_TESTONLY build arg `__ (issue `#234873207 `__) pw_watch -------- * `Add link to served docs `__ pw_web ------ * `Make ongoing transfers accessible downstream `__ * `TypeScript workarounds for disambiguation errors `__ * `Throw error as an Error type `__ * `Remove need for Buffer package in pw_hdlc `__ * `Remove date-fns `__ Build ===== * `Fix extended default group `__ (issue `#279161371 `__) * `Fix \`all\` target in GN build `__ * `Add an extended default group `__ Bazel ----- * `Retire pigweed_config (part 3) `__ * `Retire pigweed_config (part 2) `__ (issue `#291106264 `__) Docs ==== We started a :ref:`glossary ` and added new docs about :ref:`rollers ` and :ref:`CI/CQ `. * `Add docs on rollers `__ (issue `#302680656 `__) * `Remove redundant auto-submit section `__ (issue `#302680656 `__) * `Reformat CI/CQ Intro `__ (issue `#302680656 `__) * `Move CI/CQ Intro to infra/ `__ (issue `#302680656 `__) * `Address comments on CI/CQ intro `__ (issue `#302680656 `__) * `Tidy up build system docs `__ * `Fix typo `__ * `Add CI/CQ Intro `__ (issue `#302680656 `__) * `Add policy on incomplete docs changes `__ * `Start the glossary `__ * `Update changelog `__ (issue `#292247409 `__) * `Add Doxygen @endcode guidance `__ SEEDs ===== * (SEED-0112) `Fix link `__ Miscellaneous ============= pigweed.json ------------ * `Exclude patches.json from formatting `__ (issue `#232234662 `__) ------------ Sep 22, 2023 ------------ Highlights (Sep 07, 2023 to Sep 22, 2023): * ``pw_tokenizer`` has :ref:`new C++ methods for detokenizing Base64-encoded strings and new C functions for manually encoding tokenized messages that contain integers `. * ``pw::rpc::SynchronousCall`` now supports the use of :ref:`custom response message classes `. * The C API for ``pw_varint`` got :ref:`lots of ergonomic improvements `. * The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code review process. Active SEEDs ============ Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): * `SEED-0103: pw_protobuf Object Model `__ * `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log `__ * `SEED-0106: Project Template `__ * `SEED-0109: Communication Buffers `__ * `SEED-0110: Memory Allocation Interfaces `__ * `SEED-0111: Future of Pigweed build systems `__ * `SEED-0112: Async Poll Model `__ Modules ======= pw function ----------- * `Sign conversion fixes `__ (issue `#301079199 `__) pw perf_test ------------ * `Sign conversion fixes `__ (issue `#301079199 `__) pw_analog --------- * `Migrate AnalogInput to Doxygen `__ (issue `#299147635 `__) pw_async -------- The ``Run*()`` methods of ``FakeDispatcher`` now return a boolean that indicates whether any tasks were invoked. * `Return bool from FakeDispatcher Run*() methods `__ pw_async_basic -------------- ``release()`` is now only called outside of locked contexts to prevent an issue where the thread wakes up and then immediately goes back to sleep. An unnecessary 5-second wakeup has been removed from ``BasicDispatcher``. * `release outside of lock context `__ * `Remove unnecessary 5-second wakeup `__ pw_base64 --------- The new ``pw::base64::IsValidChar()`` method can help you determine if a character is valid Base64. * `Add base64 detokenizer handler `__ pw_bluetooth ------------ More :ref:`Emboss ` definitions were added. * `Add ReadLocalSupportedCommandsCommandCompleteEvent Emboss `__ * `Add LEReadLocalSupportedFeaturesCommandCompleteEvent `__ * `Add ReadBufferSizeCommandComplete Emboss definition `__ * `Add ReadBdAddrCommandCompleteEvent Emboss definition `__ * `Add ReadLocalVersionInfoCommandCompleteEvent Emboss def `__ * `Add LELongTermKeyRequestSubevent Emboss definition `__ * `Add UserPasskeyNotificationEvent Emboss definition `__ pw_build -------- * `Apply -Wextra-semi to C code as well as C++ `__ pw_bytes -------- The ``AlignDown()``, ``AlignUp()``, and ``Padding()`` methods of ``pw_kvs`` have moved to ``pw_bytes`` to enable ``pw_allocator`` to use them without taking a dependency on ``pw_kvs``. * `Move Align functions from pw_kvs `__ pw_checksum ----------- * `Sign conversion fixes `__ (issue `#301079199 `__) pw_chre ------- The implementation of a module that will enable to work more seamlessly with Android's `Context Hub Runtime Environment `__ has begun. * `Update bug numbers `__ * `Minor fixes `__ (issue `#301079509 `__) * `Fix build rules to use paramertized paths `__ (issue `#298474212 `__) * `Split out shared_platform `__ * `Write our own version.cc `__ (issue `#300633363 `__) * `Add barebones CHRE `__ (issue `#294106526 `__) pw_console ---------- When invoking ``pw_console`` directly from Python, you can now provide arguments through an ``argparse.Namespace`` instead of messing with ``sys.argv`` or forking another process. * `Allow injecting args via Python call `__ pw_containers ------------- `MemorySanitizer `__ has been disabled in some of the ``InlineDeque`` implementation to prevent some false positive detections of uninitialized memory reads. * `Silence MSAN false positives `__ pw_env_setup ------------ Work continues on making the Windows bootstrap process more robust. * `Better highlight bootstrap failure `__ * `Fix double bootstrap.bat failures on Windows `__ (issue `#300992566 `__) * `Enable overriding Clang CIPD version `__ * `PyPI version bump to 0.0.15 `__ * `Add relative_pigweed_root to pigweed.json `__ (issue `#300632028 `__) * `Roll cipd to 0f08b927516 `__ pw_function ----------- The documentation has been updated for accuracy. * `Update config.h comments `__ * `Add configurable Allocator default `__ * `Update example to match guidelines for parameters `__ * `Add Allocator injection `__ pw_fuzzer --------- Conditional logic around fuzzing support has been refactored to allow for dedicated targets based on specific conditions and to make it clearer exactly what configurations and dependencies are being used. * `Refactor conditional GN targets `__ pw_ide ------ * `Reformat json files `__ * `Fix clangd path on Windows `__ * `Move VSC extension into npm package dir `__ pw_libc ------- The initial implementation work continues. * `Pull in 'abort' `__ * `Use .test convention `__ * `Use underscore prefixed variables `__ * `Add documentation for pw_libc_source_set `__ * `Pull in 'gmtime' `__ * `Fix printf for newer llvm-libc commits `__ * `Fix llvm-libc after internal assert changes `__ pw_log ------ The implementation work continues to enable an Android component to read logs from a component running the ``pw_log_rpc`` service. * `Update Android.bp to generate RPC header files `__ (issue `#298693458 `__) pw_log_string ------------- * `Fix the default impl to handle zero length va args `__ pw_package ---------- Mirrors are now being used for various third-party dependencies. * `Use mirror for zephyrproject-rtos/zephyr `__ (issue `#278914999 `__) * `Use Pigweed mirror for google/emboss `__ (issue `#278914999 `__) * `Use mirror for raspberrypi/picotool `__ (issue `#278914999 `__) pw_polyfill ----------- * `Increase __GNUC__ for __constinit `__ (issue `#300478321 `__) pw_presubmit ------------ A new JSON formatting check has been added. The missing newline check has been made more robust. * `Add JSON formatter `__ * `Better handling of missing newlines `__ (issue `#301315329 `__) * `Expand Bazel parser to tests `__ * `Remove now-unnecessary flag `__ (issue `#271299438 `__) * `Additional functions for handling gn args `__ * `Include bazel_build in full program `__ pw_protobuf ----------- * `Fix "Casting..." heading level `__ .. _docs-changelog-pw_rpc-20230922: pw_rpc ------ ``pw::rpc::SynchronousCall`` now supports the use of custom response message classes that set field callbacks in their constructor. See :ref:`module-pw_rpc-client-sync-call-wrappers`. .. todo-check: disable * `Refer to bug in TODO and fix format `__ * `Support custom response messages in SynchronousCall `__ (issue `#299920227 `__) * `Add fuzz tests `__ .. todo-check: enable pw_stream --------- * `Add Windows socket support `__ pw_string --------- * `Fix signed integer overflow `__ pw_system --------- * `Add arm_none_eabi_gcc_support `__ pw_thread --------- * `Fix small typo in docs `__ .. _docs-changelog-pw_tokenizer-20230922: pw_tokenizer ------------ ``pw::tokenizer::Detokenizer`` has new ``DetokenizeBase64Message()`` and ``DetokenizeBase64()`` methods for detokenizing Base64-encoded strings. The new ``pw_tokenizer_EncodeInt()`` and ``pw_tokenizer_EncodeInt64()`` functions in the C API make it easier to manually encode tokenized messages with integers from C. * `C++ Base64 detokenization improvements `__ * `Add base64 detokenizer handler `__ * `C functions for encoding arguments `__ pw_toolchain ------------ ``arm_gcc`` now supports Cortex-M33. * `Add missing objcopy tool to bazel toolchains `__ (issue `#301004620 `__) * `Add cpu flags to asmopts as well `__ * `Add cortex-m33 support to arm_gcc `__ pw_toolchain_bazel ------------------ * `Support ar opts in pw_toolchain_features `__ * `Add cortex-m7 constraint_value `__ (issue `#300467616 `__) .. _docs-changelog-pw_varint-20230922: pw_varint --------- The C encoding functions now have an output size argument, making them much easier to use. There's a new macro for calculating the encoded size of an integer in a C constant expression. Incremental versions of the encode and decode functions have been exposed to support in-place encoding and decoding with non-contiguous buffers. * `C API updates `__ pw_web ------ The ``ProgressStats`` and ``ProgressCallback`` types are now exported. Styling and scrolling behavior in the log viewer has been improved. * `Remove need for Buffer package in pw_hdlc `__ * `Remove date-fns `__ * `Export ProgressStats, ProgressCallback types `__ * `Add back 'buffer' dependency `__ * `NPM version bump to 0.0.13 `__ * `Improve scrolling behavior `__ (issue `#298097109 `__) * `Fix leading white spaces, scrollbar size, and filters in quotes `__ * `NPM version bump to 0.0.12 `__ * `Fix column sizing & toggling, update UI `__ * `Replace Map() with object in proto collection `__ pw_work_queue ------------- * `Don't lock around work_notification_ `__ * `Migrate API reference to Doxygen `__ (issue `#299147635 `__) Build ===== * `Update Android.bp `__ Bazel ----- * `Add platform-printing aspect `__ * `Retire pigweed_config (part 2) `__ (issue `#291106264 `__) * `Retire pigweed_config (part 1) `__ (issue `#291106264 `__) * `Remove -Wno-private-header from copts `__ (issue `#240466562 `__) * `Remove bazelembedded dependency `__ (issue `#297239780 `__) * `Move cxxopts out of bazelrc `__ (issue `#269195628 `__) * `Use the same clang version as in GN `__ * `Arm gcc configuration `__ (issue `#297239780 `__) Targets ======= * `Fix pico_sdk elf2uf2 on Windows `__ * `Add pw_strict_host_clang_debug_dynamic_allocation tc `__ Docs ==== The new :ref:`docs-code_reviews` document outlines the upstream Pigweed code review process. * `Add Doxygen @endcode guidance `__ * `Clean up remaining instances of code:: `__ (issue `#300317685 `__) * `Document code review process `__ * `Add link to in-progress hardware targets `__ * `Fix link title for pw_log `__ * `Update changelog `__ (issue `#292247409 `__) SEEDs ===== * `Update process document `__ * (SEED-0104) `Display Support `__ * (SEED-0109) `Make link externally accessible `__ * (SEED-0110) `Claim SEED number `__ * (SEED-0111) `Claim SEED number `__ * (SEED-0112) `Claim SEED number `__ Third party =========== * `Add public configs for FuzzTest deps `__ third_party/fuchsia ------------------- * `Copybara import `__ * `Update patch script and patch `__ * `Update patch `__ * `Support specifying the Fuchsia repo to use `__ third_party/pico_sdk -------------------- * `Selectively disable elf2uf2 warnings `__ (issue `#300474559 `__) * `Fix multicore source filename `__ Miscellaneous ============= .. todo-check: disable * `Use new TODO style `__ * `Add toolchain team members `__ * `Fix double bootstrap.bat failures on Windows" `__ (issue `#300992566 `__) .. todo-check: enable ----------- Sep 8, 2023 ----------- Highlights (Aug 25, 2023 to Sep 8, 2023): * SEED :ref:`seed-0107` has been approved! Pigweed will adopt a new sockets API as its primary networking abstraction. The sockets API will be backed by a new, lightweight embedded-focused network protocol stack inspired by TCP/IP. * SEED :ref:`seed-0108` has also been approved! Coming soon, the new ``pw_emu`` module will make it easier to work with emulators. Active SEEDs ============ Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): * `SEED-0103: pw_protobuf Object Model `__ * `SEED-0104: display support `__ * `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log `__ * `SEED-0106: Project Template `__ * `SEED-0109: Communication Buffers `__ Modules ======= pw_assert --------- We fixed circular dependencies in Bazel. * `Remove placeholder target `__ * `Fix Bazel circular deps `__ (issue `#234877642 `__) * `Introduce pw_assert_backend_impl `__ (issue `#234877642 `__) pw_bluetooth ------------ We added :ref:`Emboss ` definitions. * `Add SimplePairingCompleteEvent Emboss definition `__ * `Add UserPasskeyRequestEvent Emboss definition `__ * `Add UserConfirmationRequestEvent Emboss definition `__ * `Use hci.LinkKey in LinkKeyNotificationEvent.link_key `__ * `Add IoCapabilityResponseEvent Emboss definition `__ * `Add IoCapabilityRequestEvent Emboss definition `__ * `Add EncryptionKeyRefreshCompleteEvent Emboss definition `__ * `Add ExtendedInquiryResultEvent Emboss definition `__ pw_build -------- * `Force watch and default recipe names `__ pw_build_mcuxpresso ------------------- * `Output formatted bazel target `__ pw_cpu_exception ---------------- We added Bazel support. * `bazel build support `__ (issue `#242183021 `__) pw_crypto --------- The complete ``pw_crypto`` API reference is now documented on :ref:`module-pw_crypto`. * `Add API reference `__ (issue `#299147635 `__) pw_env_setup ------------ Banners should not print correctly on Windows. * `Add i2c protos to python deps `__ * `Fix banner printing on Windows `__ (issue `#289008307 `__) pw_file ------- * `Add pw_file python package `__ pw_function ----------- The :cpp:func:`pw::bind_member()` template is now exposed in the public API. ``bind_member()`` is useful for binding the ``this`` argument of a callable. We added a section to the docs explaining :ref:`why pw::Function is not a literal `. * `Explain non-literal design rationale `__ * `Expose \`bind_member\` `__ pw_fuzzer --------- We refactored ``pw_fuzzer`` logic to be more robust and expanded the :ref:`module-pw_fuzzer-guides-reproducing_oss_fuzz_bugs` doc. * `Refactor OSS-Fuzz support `__ (issue `#56955 `__) pw_i2c ------ * `Use new k{FieldName}MaxSize constants to get buffer size `__ pw_kvs ------ We are discouraging the use of the shorter macros because they collide with Abseil's logging API. * `Remove usage of pw_log/shorter.h API `__ (issue `#299520256 `__) pw_libc ------- ``snprintf()`` support was added. * `Import LLVM libc's snprintf `__ pw_log_string ------------- We added more detail to :ref:`module-pw_log_string`. * `Fix the default impl to handle zero length va args `__ * `Provide more detail in the getting started docs `__ (issue `#298124226 `__) pw_log_zephyr ------------- It's now possible to define ``pw_log_tokenized_HandleLog()`` outside of Pigweed so that Zephyr projects have more flexibility around how they capture tokenized logs. * `Split tokenize handler into its own config `__ pw_package ---------- * `Handle failed cipd acl checks `__ pw_persistent_ram ----------------- * `Add persistent_buffer flat_file_system_entry `__ pw_presubmit ------------ We added a reStructuredText formatter. * `Make builds_from_previous_iteration ints `__ (issue `#299336222 `__) * `Move colorize_diff to tools `__ * `RST formatting `__ pw_protobuf ----------- ``max_size`` and ``max_count`` are now exposed in generated headers. The new ``proto_message_field_props()`` helper function makes it easier to iterate through a messages fields and properties. * `Expose max_size, max_count in generated header file `__ (issue `#297364973 `__) * `Introduce proto_message_field_props() `__ * `Change PROTO_FIELD_PROPERTIES to a dict of classes `__ * `Rename 'node' to 'message' in forward_declare() `__ * `Simplify unnecessary Tuple return type `__ pw_random --------- We're now auto-generating the ``XorShiftStarRng64`` API reference via Doxygen. * `Doxygenify xor_shift.h `__ pw_rpc ------ The new ``request_completion()`` method in Python enables you to send a completion packet for server streaming calls. * `Add request_completion to ServerStreamingCall python API `__ pw_spi ------ * `Fix Responder.SetCompletionHandler() signature `__ pw_symbolizer ------------- The ``LlvmSymbolizer`` Python class has a new ``close()`` method to deterministically close the background process. * `LlvmSymbolizer tool improvement `__ pw_sync ------- We added :ref:`module-pw_sync-genericbasiclockable`. * `Add GenericBasicLockable `__ pw_system --------- ``pw_system`` now supports different channels for primary and logging RPC. * `Multi-channel configuration `__ (issue `#297076185 `__) pw_thread_freertos ------------------ * `Add missing dep to library `__ pw_tokenizer ------------ We added :c:macro:`PW_TOKENIZE_FORMAT_STRING_ANY_ARG_COUNT` and :c:macro:`PW_TOKENIZER_REPLACE_FORMAT_STRING`. We refactored the docs so that you don't have to jump around the docs as much when learning about key topics like tokenization and token databases. Database loads now happen in a separate thread to avoid blocking the main thread. Change detection for directory databases now works more as expected. The config API is now exposed in the API reference. * `Remove some unused deps `__ * `Simplify implementing a custom tokenization macro `__ * `Refactor the docs to be task-focused `__ * `Reload database in dedicated thread `__ * `Combine duplicated docs sections `__ * `Support change detection for directory dbs `__ * `Move config value check to .cc file `__ pw_unit_test ------------ We added ``testing::Test::HasFailure()``, ``FRIEND_TEST``, and ``<<`` messages to improve gTest compatibility. * `Add testing::Test::HasFailure() `__ * `Add FRIEND_TEST `__ * `Allow <<-style messages in test expectations `__ pw_varint --------- ``pw_varint`` now has a :ref:`C-only API `. * `Add C-only implementation; cleanup `__ pw_web ------ Logs can now be downloaded as plaintext. * `Fix TypeScript errors in Device files `__ * `Json Log Source example `__ * `Enable downloading logs as plain text `__ * `Fix UI/state bugs `__ * `NPM version bump to 0.0.11 `__ * `Add basic bundling tests for log viewer bundle `__ Build ===== Bazel ----- * `Fix alwayslink support in MacOS host_clang `__ (issue `#297413805 `__) * `Fix lint issues after roll `__ Docs ==== * `Fix broken links `__ (issue `#299181944 `__) * `Recommend enabling long file paths on Windows `__ * `Update Windows command for git hook `__ * `Fix main content scrolling `__ (issue `#297384789 `__) * `Update changelog `__ (issue `#292247409 `__) * `Use code-block:: instead of code:: everywhere `__ * `Add function signature line breaks `__ * `Cleanup indentation `__ SEEDs ===== * `SEED-0108: Emulators Frontend `__ Third party =========== * `Add public configs for FuzzTest deps `__ * `Reconfigure deps & add cflags to config `__ Miscellaneous ============= * `Fix formatting with new clang version `__ mimxrt595_evk_freertos ---------------------- * `Use config_assert helper `__ ------------ Aug 25, 2023 ------------ Highlights (Aug 11, 2023 to Aug 25, 2023): * ``pw_tokenizer`` now has Rust support. * The ``pw_web`` log viewer now has advanced filtering and a jump-to-bottom button. * The ``run_tests()`` method of ``pw_unit_test`` now returns a new ``TestRecord`` dataclass which provides more detailed information about the test run. * A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS has been added. Active SEEDs ============ Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): * `SEED-0103: pw_protobuf Object Model `__ * `SEED-0104: display support `__ * `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log `__ * `SEED-0106: Project Template `__ * `SEED-0108: Emulators Frontend `__ Modules ======= pw_bloat -------- * `Fix typo in method name `__ pw_bluetooth ------------ The :ref:`module-pw_third_party_emboss` files were refactored. * `Add SynchronousConnectionCompleteEvent Emboss definition `__ * `Add all Emboss headers/deps to emboss_test & fix errors `__ * `Add InquiryResultWithRssiEvent Emboss definition `__ * `Add DataBufferOverflowEvent Emboss definition `__ * `Add LinkKeyNotificationEvent Emboss definition `__ * `Add LinkKeyRequestEvent emboss definition `__ * `Remove unused hci emboss files `__ * `Add RoleChangeEvent emboss definition `__ * `Add missing test dependency `__ * `Add new hci subset files `__ pw_build -------- The ``pw_build`` docs were split up so that each build system has its own page now. The new ``output_logs`` flag enables you to not output logs for ``pw_python_venv``. * `Handle read-only files when deleting venvs `__ * `Split build system docs into separate pages `__ * `Use pw_toolchain_clang_tools `__ * `Add missing pw_linker_script flag `__ (issue `#296928739 `__) * `Fix output_logs_ unused warning `__ (issue `#295524695 `__) * `Don't include compile cmds when preprocessing ldscripts `__ * `Add pw_python_venv.output_logs `__ (issue `#295524695 `__) * `Increase size of test linker script memory region `__ * `Add integration test metadata `__ pw_cli ------ * `Default change pw_protobuf default `__ (issue `#266298474 `__) pw_console ---------- * `Update web viewer to use pigweedjs `__ pw_containers ------------- * `Silence MSAN false positive in pw::Vector `__ pw_docgen --------- Docs builds should be faster now because Sphinx has been configured to use all available cores. * `Remove top nav bar `__ * `Parallelize Sphinx `__ pw_env_setup ------------ Sphinx was updated from v5.3.0 to v7.1.2. We switched back to the upstream Furo theme and updated to v2023.8.19. The content of ``pigweed_environment.gni`` now gets logged. There was an update to ensure that ``arm-none-eabi-gdb`` errors propagate correctly. There is now a way to override Bazel build files for CIPD repos. * `Upgrade sphinx and dependencies for docs `__ * `Upgrade sphinx-design `__ * `Copy pigweed_environment.gni to logs `__ * `arm-gdb: propagate errors `__ * `arm-gdb: exclude %VIRTUAL_ENV%\Scripts from search paths `__ * `Add ability to override bazel BUILD file for CIPD repos `__ pw_function ----------- * `Rename template parameter `__ pw_fuzzer --------- * `Add test metadata `__ pw_hdlc ------- A new ``close()`` method was added to ``HdlcRpcClient`` to signal to the thread to stop. * `Use explicit logger name `__ * `Mitigate errors on Python background thread `__ (issue `#293595266 `__) pw_ide ------ A new ``--install-editable`` flag was added to install Pigweed Python modules in editable mode so that code changes are instantly realized. * `Add cmd to install Py packages as editable `__ * `Make VSC extension run on older versions `__ pw_perf_test ------------ * `Add test metadata `__ pw_presubmit ------------ ``pw_presubmit`` now has an ESLint check for linting and a Prettier check for formatting JavaScript and TypeScript files. * `Add msan to OTHER_CHECKS `__ (issue `#234876100 `__) * `Upstream constraint file output fix `__ * `JavaScript and TypeScript lint check `__ * `Apply TypeScript formatting `__ * `Use prettier for JS and TS files `__ pw_rpc ------ A ``request_completion()`` method was added to the ``ServerStreamingCall`` Python API. A bug was fixed related to encoding failures when dynamic buffers are enabled. * `Add request_completion to ServerStreamingCall python API `__ * `Various small enhancements `__ * `Remove deprecated method from Service `__ * `Prevent encoding failure when dynamic buffer enabled `__ (issue `#269633514 `__) pw_rpc_transport ---------------- * `Add simple_framing Soong rule `__ pw_rust ------- * `Update rules_rust to 0.26.0 `__ pw_stm32cube_build ------------------ * `Windows path fixes `__ pw_stream --------- Error codes were updated to be more accurate and descriptive. * `Use more appropriate error codes for Cursor `__ pw_stream_uart_linux -------------------- Common baud rates such as ``9600``, ``19200``, and so on are now supported. * `Add support for baud rates other than 115200 `__ pw_sync ------- Tests were added to make sure that ``pw::sync::Borrowable`` works with lock annotations. * `Test Borrowable with Mutex, TimedMutex, and InterruptSpinLock `__ (issue `#261078330 `__) pw_system --------- The ``pw_system.device.Device`` Python class can now be used as a `context manager `_. * `Make pw_system.device.Device a context manager `__ pw_tokenizer ------------ ``pw_tokenizer`` now has Rust support. The ``pw_tokenizer`` C++ config API is now documented at :ref:`module-pw_tokenizer-api-configuration` and the C++ token database API is now documented at :ref:`module-pw_tokenizer-api-token-databases`. When creating a token database, parent directories are now automatically created if they don't already exist. ``PrefixedMessageDecoder`` has been renamed to ``NestedMessageDecoder``. * `Move config value check to .cc file `__ * `Create parent directory as needed `__ * `Rework pw_tokenizer.detokenize.PrefixedMessageDecoder `__ * `Minor binary database improvements `__ * `Update binary DB docs and convert to Doxygen `__ * `Deprecate tokenizer buffer size config `__ * `Fix instance of -Wconstant-logical-operand `__ * `Add Rust support `__ pw_toolchain ------------ A new Linux host toolchain built using ``pw_toolchain_bazel`` has been started. CIPD-provided Rust toolchains are now being used. * `Link against system libraries using libs not ldflags `__ * `Use %package% for cxx_builtin_include_directories `__ * `Extend documentation for tool prefixes `__ * `Add Linux host toolchain `__ (issue `#269204725 `__) * `Use CIPD provided Rust toolchains `__ * `Switch macOS to use builtin_sysroot `__ * `Add cmake helpers for getting clang compile+link flags `__ pw_unit_test ------------ ``run_tests()`` now returns the new ``TestRecord`` dataclass which provides more detailed information about the test run. ``SetUpTestSuit()`` and ``TearDownTestSuite()`` were added to improve GoogleTest compatibility. * `Add TestRecord of Test Results `__ * `Reset static value before running tests `__ (issue `#296157327 `__) * `Add per-fixture setup/teardown `__ pw_web ------ Log viewers are now drawn every 100 milliseconds at most to prevent crashes when many logs arrive simultaneously. The log viewer now has a jump-to-bottom button. Advanced filtering has been added. * `NPM version bump to 0.0.11 `__ * `Add basic bundling tests for log viewer bundle `__ * `Limit LogViewer redraws to 100ms `__ * `Add jump to bottom button, fix UI bugs and fix state bugs `__ * `Implement advanced filtering `__ * `Remove object-path dependency from Device API `__ * `Log viewer toolbar button toggle style `__ * `Log-viewer line wrap toggle `__ Targets ======= targets ------- A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS has been added. * `Ambiq Apollo4 support `__ Language support ================ Python ------ * `Upgrade mypy to 1.5.0 `__ * `Upgrade pylint to 2.17.5 `__ Docs ==== Doxygen-generated function signatures now present each argument on a separate line. Tabbed content looks visually different than before. * `Use code-block:: instead of code:: everywhere `__ * `Add function signature line breaks `__ * `Cleanup indentation `__ * `Remove unused myst-parser `__ * `Use sphinx-design for tabbed content `__ * `Update changelog `__ SEEDs ===== :ref:`SEED-0107 (Pigweed Communications) ` was accepted and SEED-0109 (Communication Buffers) was started. * `Update protobuf SEED title in index `__ * `Update status to Accepted `__ * `Pigweed communications `__ * `Claim SEED number `__ Miscellaneous ============= Build ----- * `Make it possible to run MSAN in GN `__ soong ----- * `Remove host/vendor properties from defaults `__ ------------ Aug 11, 2023 ------------ Highlights (Jul 27, 2023 to Aug 11, 2023): * We're prototyping a Pigweed extension for VS Code. Learn more at :ref:`docs-editors`. * We added ``pw_toolchain_bazel``, a new LLVM toolchain for building with Bazel on macOS. * We are working on many docs improvements in parallel: auto-generating ``rustdocs`` for modules that support Rust (`example `_), refactoring the :ref:`module-pw_tokenizer` docs, migrating API references to Doxygen, fixing `longstanding docs site UI issues `_, and more. Active SEEDs ============ Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs): * `SEED-0103: pw_protobuf Object Model `__ * `SEED-0104: display support `__ * `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log `__ * `SEED-0106: Project Template `__ * `SEED-0107: Pigweed communications `__ * `SEED-0108: Emulators Frontend `__ Modules ======= pw_alignment ------------ * `Fix typos `__ pw_analog --------- Long-term, all of our API references will be generated from header comments via Doxygen. Short-term, we are starting to show header files directly within the docs as a stopgap solution for helping Pigweed users get a sense of each module's API. See :ref:`module-pw_analog` for an example. * `Include header files as stopgap API reference `__ (issue `#293895312 `__) pw_base64 --------- We finished migrating the ``pw_random`` API reference to Doxygen. * `Finish Doxygenifying the API reference `__ * `Doxygenify the Encode() functions `__ pw_boot_cortex_m ---------------- * `Allow explict target name `__ pw_build -------- We added a ``log_build_steps`` option to ``ProjectBuilder`` that enables you to log all build step lines to your screen and logfiles. * `Handle ProcessLookupError exceptions `__ * `ProjectBuilder log build steps option `__ * `Fix progress bar clear `__ pw_cli ------ We polished tab completion support. * `Zsh shell completion autoload `__ * `Make pw_cli tab completion reusable `__ pw_console ---------- We made copy-to-clipboard functionality more robust when running ``pw_console`` over SSH. * `Set clipboard fallback methods `__ pw_containers ------------- We updated :cpp:class:`filteredview` constructors and migrated the ``FilteredView`` API reference to Doxygen. * `Doxygenify pw::containers::FilteredView `__ * `Support copying the FilteredView predicate `__ pw_docgen --------- At the top of pages like :ref:`module-pw_tokenizer` there is a UI widget that provides information about the module. Previously, this UI widget had links to all the module's docs. This is no longer needed now that the site nav automatically scrolls to the page you're on, which allows you to see the module's other docs. * `Remove the navbar from the module docs header widget `__ (issue `#292273650 `__) pw_env_setup ------------ We made Python setup more flexible. * `Add clang_next.json `__ (issue `#295020927 `__) * `Pip installs from CIPD `__ * `Include Python packages from CIPD `__ * `Remove unused pep517 package `__ * `Use more available Python 3.9 `__ (issue `#292278707 `__) * `Update Bazel to 2@6.3.0.6 `__ pw_ide ------ We are prototyping a ``pw_ide`` extension for VS Code. * `Restore stable clangd settings link `__ * `Add command to install prototype extension `__ * `Prototype VS Code extension `__ pw_interrupt ------------ We added a backend for Xtensa processors. * `Add backend for xtensa processors `__ * `Tidy up target compatibility `__ (issue `#272090220 `__) pw_log_zephyr ------------- We encoded tokenized messages to ``pw::InlineString`` so that the output is always null-terminated. * `Fix null termination of Base64 messages `__ pw_presubmit ------------ We increased `LUCI `_ support and updated the ``#pragma once`` check to look for matching ``#ifndef`` and ``#define`` lines. * `Fix overeager format_code matches `__ * `Exclude vsix files from copyright `__ * `Clarify unicode errors `__ * `Upload coverage json to zoss `__ (issue `#279161371 `__) * `Add to context tests `__ * `Add patchset to LuciTrigger `__ * `Add helpers to LuciContext `__ * `Update Python vendor wheel dir `__ * `Add summaries to guard checks `__ (issue `#287529705 `__) * `Copy Python packages `__ * `Add ifndef/define check `__ (issue `#287529705 `__) pw_protobuf_compiler -------------------- We continued work to ensure that the Python environment in Bazel is hermetic. * `Use hermetic protoc `__ (issue `#294284927 `__) * `Move reference to python interpreter `__ (issue `#294414535 `__) * `Make nanopb hermetic `__ (issue `#293792686 `__) pw_python --------- We fixed bugs related to ``requirements.txt`` files not getting found. * `setup.sh requirements arg fix path `__ * `setup.sh arg spaces bug `__ pw_random --------- We continued migrating the ``pw_random`` API reference to Doxygen. * `Doxygenify random.h `__ pw_rpc ------ We made the Java client more robust. * `Java client backwards compatibility `__ * `Avoid reflection in Java client `__ (issue `#293361955 `__) * `Use hermetic protoc `__ (issue `#294284927 `__) * `Improve Java client error message for missing parser() method `__ pw_spi ------ We continued work on implementing a SPI responder interface. * `Responder interface definition `__ pw_status --------- We fixed the nesting on a documentation section. * `Promote Zephyr heading to h2 `__ pw_stream --------- We added ``remaining()``, ``len()``, and ``position()`` methods to the ``Cursor`` wrapping in Rust. * `Add infalible methods to Rust Cursor `__ pw_stream_shmem_mcuxpresso -------------------------- We added the :ref:`module-pw_stream_shmem_mcuxpresso` backend for ``pw_stream``. * `Add shared memory stream for NXP MCU cores `__ (issue `#294406620 `__) pw_sync_freertos ---------------- * `Fix ODR violation in tests `__ pw_thread --------- * `Fix test_thread_context typo and presubmit `__ pw_tokenizer ------------ We added support for unaligned token databases and continued the :ref:`seed-0102` update of the ``pw_tokenizer`` docs. * `Separate API reference and how-to guide content `__ * `Polish the sales pitch `__ * `Support unaligned databases `__ * `Move the basic overview into getting started `__ * `Move the case study to guides.rst `__ * `Restore info that get lost during the SEED-0102 migration `__ * `Use the same tagline on every doc `__ * `Replace savings table with flowchart `__ * `Ignore string nonliteral warnings `__ pw_toolchain ------------ We fixed a regression that made it harder to use Pigweed in an environment where ``pw_env_setup`` has not been run and fixed a bug related to incorrect Clang linking. * `Optionally depend on pw_env_setup_CIPD_PIGWEED `__ (issue `#294886611 `__) * `Prefer start-group over whole-archive `__ (issue `#285357895 `__) pw_toolchain_bazel ------------------ We added a an LLVM toolchain for building with Bazel on macOS. * `LLVM toolchain for macOS Bazel build `__ (issue `#291795899 `__) pw_trace_tokenized ------------------ We made tracing more robust. * `Replace trace callback singletons with dep injection `__ pw_transfer ----------- We made integration tests more robust. * `Fix use-after-destroy in integration test client `__ (issue `#294101325 `__) * `Fix legacy binary path `__ (issue `#294284927 `__) * `Mark linux-only Bazel tests `__ (issue `#294101325 `__) pw_web ------ We added support for storing user preferences in ``localStorage``. * `Fix TypeScript warnings in web_serial_transport.ts `__ * `Add state for view number, search string, and columns visible `__ * `Fix TypeScript warnings in transfer.ts `__ * `Fix TypeScript warnings `__ * `Remove dependency on 'crc' and 'buffer' NPM packages `__ Build ===== We made the Bazel system more hermetic and fixed an error related to not finding the Java runtime. * `Do not allow PATH leakage into Bazel build `__ (issue `#294284927 `__) * `Use remote Java runtime for Bazel build `__ (issue `#291791485 `__) Docs ==== We created a new doc (:ref:`docs-editors`) that explains how to improve Pigweed support in various IDEs. We standardized how we present call-to-action buttons on module homepages. See :ref:`module-pw_tokenizer` for an example. We fixed a longstanding UI issue around the site nav not scrolling to the page that you're currently on. * `Add call-to-action buttons `__ * `Update module items in site nav `__ * `Add editor support doc `__ * `Delay nav scrolling to fix main content scrolling `__ (issue `#292273650 `__) * `Suggest editor configuration `__ * `Scroll to the current page in the site nav `__ (issue `#292273650 `__) * `Add changelog `__ (issue `#292247409 `__) SEEDs ===== We created a UI widget to standardize how we present SEED status information. See the start of :ref:`seed-0102` for an example. * `Create Sphinx directive for metadata `__ Third party =========== third_party/mbedtls ------------------- * `3.3.0 compatibility `__ (issue `#293612945 `__) Miscellaneous ============= OWNERS ------ * `Add kayce@ `__ ------------ Jul 28, 2023 ------------ Highlights (Jul 13, 2023 to Jul 28, 2023): * `SEED-0107: Pigweed Communications `__, a proposal for an embedded-focused network protocol stack, is under discussion. Please review and provide your input! * ``pw_cli`` now supports tab completion! * A new UART Linux backend for ``pw_stream`` was added (``pw_stream_uart_linux``). Active SEEDs ============ * `SEED-0103: pw_protobuf Object Model `__ * `SEED-0104: display support `__ * `SEED-0105: Add nested tokens and tokenized args to pw_tokenizer and pw_log `__ * `SEED-0106: Project Template `__ * `SEED-0107: Pigweed communications `__ * `SEED-0108: Emulators Frontend `__ Modules ======= pw_allocator ------------ We started migrating the ``pw_allocator`` API reference to Doxygen. * `Doxygenify the freelist chunk methods `__ pw_async -------- We increased Bazel support. * `Fill in bazel build rules `__ pw_async_basic -------------- We reduced logging noisiness. * `Remove debug logging `__ pw_base64 --------- We continued migrating the ``pw_base64`` API reference to Doxygen. * `Doxygenify MaxDecodedSize() `__ pw_bloat -------- We improved the performance of label creation. One benchmark moved from 120 seconds to 0.02 seconds! * `Cache and optimize label production `__ pw_bluetooth ------------ Support for 3 events was added. * `Add 3 Event packets & format hci.emb `__ pw_build -------- * `Fix progress bar clear `__ * `Upstream build script fixes `__ * `Add pw_test_info `__ * `Upstream build script & presubmit runner `__ * `pw_watch: Redraw interval and bazel steps `__ * `Avoid extra newlines for docs in generate_3p_gn `__ * `pip install GN args `__ (issue `#240701682 `__) * `pw_python_venv generate_hashes option `__ (issue `#292098416 `__) pw_build_mcuxpresso ------------------- Some H3 elements in the ``pw_build_mcuxpresso`` docs were being incorrectly rendered as H2. * `Fix doc headings `__ pw_chrono_freertos ------------------ We investigated what appeared to be a race condition but turned out to be an unreliable FreeRTOS variable. * `Update SystemTimer comments `__ (issue `#291346908 `__) * `Remove false callback precondition `__ (issue `#291346908 `__) pw_cli ------ ``pw_cli`` now supports tab completion! * `Zsh shell completion autoload `__ * `Make pw_cli tab completion reusable `__ * `Print tab completions for pw commands `__ * `Fix logging msec timestamp format `__ pw_console ---------- Communication errors are now handled more gracefully. * `Detect comms errors in Python `__ pw_containers ------------- The flat map implementation and docs have been improved. * `Doxygenify pw::containers::FilteredView `__ * `Support copying the FilteredView predicate `__ * `Improve FlatMap algorithm and filtered_view support `__ * `Improve FlatMap doc example `__ * `Update FlatMap doc example so it compiles `__ pw_digital_io ------------- We continued migrating the API reference to Doxygen. An RPC service was added. * `Doxygenify the interrupt handler methods `__ * `Doxygenify Enable() and Disable() `__ * `Add digital_io rpc service `__ pw_digital_io_mcuxpresso ------------------------ We continued migrating the API reference to Doxygen. Support for a new RPC service was added. * `Remove unneeded constraints `__ pw_docgen --------- Support for auto-linking to Rust docs (when available) was added. We also explained how to debug Pigweed's Sphinx extensions. * `Add rustdoc linking support to pigweed-module tag `__ * `Add extension debugging instructions `__ pw_env_setup ------------ There were lots of updates around how the Pigweed environment uses Python. * `pw_build: Disable pip version check `__ * `Add docstrings to visitors `__ * `Sort pigweed_environment.gni lines `__ * `Mac and Windows Python requirements `__ (issue `#292098416 `__) * `Add more Python versions `__ (issue `#292278707 `__) * `Remove python.json from Bazel CIPD `__ (issue `#292585791 `__) * `Redirect variables from empty dirs `__ (issue `#292278707 `__) * `Split Python constraints per OS `__ (issue `#292278707 `__) * `Add --additional-cipd-file argument `__ (issue `#292280529 `__) * `Upgrade Python cryptography to 41.0.2 `__ * `Upgrade ipython to 8.12.2 `__ * `Upgrade PyYAML to 6.0.1 `__ * `Add Python constraints with hashes `__ (issue `#287302102 `__) * `Bump pip and pip-tools `__ * `Add coverage utilities `__ (issue `#279161371 `__) pw_fuzzer --------- A fuzzer example was updated to more closely follow Pigweed code conventions. * `Update fuzzers to use Pigweed domains `__ pw_hdlc ------- Communication errors are now handled more gracefully. * `Detect comms errors in Python `__ * `Add target to Bazel build `__ pw_i2c ------ An RPC service was added. Docs and code comments were updated to use ``responder`` and ``initiator`` terminology consistently. * `Standardize naming on initiator/responder `__ * `Add i2c rpc service `__ pw_i2c_mcuxpresso ----------------- * `Allow for static initialization of initiator `__ * `Add test to ensure compilation of module `__ pw_ide ------ * `Support multiple comp DB search paths `__ (issue `#280363633 `__) pw_interrupt ------------ Work continued on how facade backend selection works in Bazel. * `Add backend for xtensa processors `__ * `Tidy up target compatibility `__ (issue `#272090220 `__) * `Remove cpu-based backend selection `__ (issue `#272090220 `__) * `Add backend constraint setting `__ (issue `#272090220 `__) * `Remove redundant Bazel targets `__ (issue `#290359233 `__) pw_log_rpc ---------- A docs section was added that explains how ``pw_log``, ``pw_log_tokenized``, and ``pw_log_rpc`` interact with each other. * `Explain relation to pw_log and pw_log_tokenized `__ pw_package ---------- Raspberry Pi Pico and Zephyr support improved. * `Add picotool package installer `__ * `Handle windows Zephyr SDK setup `__ * `Run Zephyr SDK setup.sh after syncing from CIPD `__ pw_perf_test ------------ * `Remove redundant Bazel targets `__ (issue `#290359233 `__) pw_presubmit ------------ * `Add ifndef/define check `__ (issue `#287529705 `__) * `Remove deprecated gn_docs_build step `__ * `Fix issues with running docs_build twice `__ * `Add Rust docs to docs site `__ pw_protobuf_compiler -------------------- * `Disable legacy namespace `__ * `Transition to our own proto compiler rules `__ (issue `#234874064 `__) * `Allow external usage of macros `__ pw_ring_buffer -------------- ``pw_ring_buffer`` now builds with ``-Wconversion`` enabled. * `Conversion warning cleanups `__ (issue `#259746255 `__) pw_rpc ------ * `Create client call hook in Python client `__ * `Provide way to populate response callbacks during tests `__ * `Add Soong rule for pwpb echo service `__ pw_rpc_transport ---------------- * `Add more Soong rules `__ pw_rust ------- We are preparing pigweed.dev to automatically link to auto-generated Rust module documentation when available. * `Add combined Rust doc support `__ * `Update @rust_crates sha `__ pw_spi ------ We updated docs and code comments to use ``initiator`` and ``responder`` terminology consistently. * `Standardize naming on initiator/responder `__ pw_status --------- * `Add Clone and Copy to Rust Error enum `__ pw_stream --------- We continued work on Rust support. * `Fix Doxygen typo `__ * `Add read_exact() an write_all() to Rust Read and Write traits `__ * `Clean up rustdoc warnings `__ * `Add Rust varint reading and writing support `__ * `Refactor Rust cursor to reduce monomorphization `__ * `Add Rust integer reading support `__ * `Move Rust Cursor to it's own sub-module `__ pw_stream_uart_linux -------------------- A new UART Linux backend for ``pw_stream`` was added. * `Add stream for UART on Linux `__ pw_sync ------- C++ lock traits were added and used. * `Improve Borrowable lock traits and annotations `__ (issue `#261078330 `__) * `Add lock traits `__ pw_sync_freertos ---------------- * `Fix ODR violation in tests `__ pw_sys_io --------- * `Add android to alias as host system `__ (issue `#272090220 `__) * `Add chromiumos to alias as host system `__ (issue `#272090220 `__) pw_system --------- * `Update IPython init API `__ * `Remove redundant Bazel targets `__ (issue `#290359233 `__) pw_tokenizer ------------ We refactored the ``pw_tokenizer`` docs to adhere to :ref:`seed-0102`. * `Update tagline, restore missing info, move sections `__ * `Migrate the proto docs (SEED-0102) `__ * `Remove stub sections and add guides link (SEED-0102) `__ * `Migrate the custom macro example (SEED-0102) `__ * `Migrate the Base64 docs (SEED-0102) `__ * `Migrate token collision docs (SEED-0102) `__ * `Migrate detokenization docs (SEED-0102) `__ * `Migrate masking docs (SEED-0102) `__ pw_toolchain ------------ The build system was modified to use relative paths to avoid unintentionally relying on the path environment variable. Map file generation is now optional to avoid generating potentially large map files when they're not needed. * `Test trivially destructible class `__ * `Make tools use relative paths `__ (issue `#290848929 `__) * `Support conditionally creating mapfiles `__ pw_trace_tokenized ------------------ * `Replace singletons with dependency injection `__ * `Remove redundant Bazel targets `__ (issue `#290359233 `__) pw_unit_test ------------ * `Update metadata test type for unit tests `__ pw_varint --------- * `Update Rust API to return number of bytes written `__ pw_watch -------- We fixed an issue where builds were getting triggered when files were opened or closed without modication. * `Trigger build only on file modifications `__ pw_web ------ * `Remove dependency on 'crc' and 'buffer' NPM packages `__ * `Update theme token values and usage `__ * `Add disconnect() method to WebSerialTransport `__ * `Add docs section for log viewer component `__ Build ===== bazel ----- * `Add host_backend_alias macro `__ (issue `#272090220 `__) * `Fix missing deps in some modules `__ * `Support user bazelrc files `__ * `Update rules_python to 0.24.0 `__ (issue `#266950138 `__) build ----- * `Use remote Java runtime for Bazel build `__ (issue `#291791485 `__) * `Add Rust toolchain to Bazel macOS build `__ (issue `#291749888 `__) * `Mark linux-only Bazel build targets `__ Targets ======= targets/rp2040_pw_system ------------------------ Some of the Pico docs incorrectly referred to another hardware platform. * `Fix references to STM32 `__ (issue `#286652309 `__) Language support ================ python ------ * `Remove setup.py files `__ rust ---- * `Add rustdoc links for existing crates `__ OS support ========== zephyr ------ * `Add project name to unit test root `__ * `Add pigweed root as module `__ * `Fix setup.sh call `__ Docs ==== We added a feature grid to the homepage and fixed outdated info in various docs. * `pigweed.dev feature grid `__ * `Mention SEED-0102 in module_structure.rst `__ (issue `#286477675 `__) * `Remove outdated Homebrew info in getting_started.rst `__ (issue `#287528787 `__) * `Fix "gn args" examples which reference pw_env_setup_PACKAGE_ROOT `__ * `Consolidate contributing docs in site nav `__ SEEDs ===== SEED-0107 --------- * `Claim SEED number `__ SEED-0108 --------- * `Claim SEED number `__ Third party =========== third_party ----------- * `Remove now unused rules_proto_grpc `__ third_party/mbedtls ------------------- * `3.3.0 compatibility `__ (issue `#293612945 `__)