Changelog#
Aug 25, 2023 to Sep 08, 2023#
Highlights (Aug 25, 2023 to Sep 08, 2023):
SEED 0107: Pigweed Communications 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 0108: Emulators Frontend has also been approved! Coming soon, the new
pw_emu
module will make it easier to work with emulators.
Please join us at the next Pigweed Live on
Mon, Sep 11 1PM PST to discuss All Things Pigweed. Go to the
#pigweed-live
channel to get a link to the video meeting.
Active SEEDs#
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
Modules#
pw_assert#
We fixed circular dependencies in Bazel.
pw_bluetooth#
We added Emboss definitions.
pw_build#
pw_build_mcuxpresso#
pw_cpu_exception#
We added Bazel support.
bazel build support (issue #242183021)
pw_crypto#
The complete pw_crypto
API reference is now documented on pw_crypto.
Add API reference (issue #299147635)
pw_env_setup#
Banners should not print correctly on Windows.
pw_file#
pw_function#
The 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 why pw::Function is not a
literal.
pw_fuzzer#
We refactored pw_fuzzer
logic to be more robust and expanded the
pw_fuzzer: Using OSS-Fuzz doc.
Refactor OSS-Fuzz support (issue #56955)
pw_i2c#
pw_kvs#
We are discouraging the use of the shorter macros because they collide with Abseil’s logging API.
pw_libc#
snprintf()
support was added.
pw_log_string#
We added more detail to pw_log_string.
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.
pw_package#
pw_persistent_ram#
pw_presubmit#
We added a reStructuredText formatter.
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.
pw_random#
We’re now auto-generating the XorShiftStarRng64
API reference via Doxygen.
pw_rpc#
The new request_completion()
method in Python enables you to send a
completion packet for server streaming calls.
pw_spi#
pw_symbolizer#
The LlvmSymbolizer
Python class has a new close()
method to
deterministically close the background process.
pw_sync#
We added GenericBasicLockable.
pw_system#
pw_system
now supports different channels for primary and logging RPC.
pw_thread_freertos#
pw_tokenizer#
We added PW_TOKENIZE_FORMAT_STRING_ANY_ARG_COUNT
and
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.
pw_unit_test#
We added testing::Test::HasFailure()
, FRIEND_TEST
, and <<
messages
to improve gTest compatibility.
pw_varint#
pw_varint
now has a C-only API.
pw_web#
Logs can now be downloaded as plaintext.
Build#
Bazel#
Docs#
Fix broken links (issue #299181944)
Fix main content scrolling (issue #297384789)
Update changelog (issue #292247409)
SEEDs#
Third party#
Miscellaneous#
mimxrt595_evk_freertos#
Aug 11, 2023 to 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 ofpw_unit_test
now returns a newTestRecord
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.
Please join us at the next Pigweed Live on Monday, Aug 28 1PM PST to
discuss these changes and anything else on your mind. Join our
Discord and head over to the #pigweed-live
channel to get a link to the video meeting.
Active SEEDs#
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
Modules#
pw_bloat#
pw_bluetooth#
The Emboss files were refactored.
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
.
pw_cli#
pw_console#
pw_containers#
pw_docgen#
Docs builds should be faster now because Sphinx has been configured to use all available cores.
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.
pw_function#
pw_fuzzer#
pw_hdlc#
A new close()
method was added to HdlcRpcClient
to signal to the thread
to stop.
pw_ide#
A new --install-editable
flag was added to install Pigweed Python modules
in editable mode so that code changes are instantly realized.
pw_perf_test#
pw_presubmit#
pw_presubmit
now has an ESLint check for linting and a Prettier check for
formatting JavaScript and TypeScript 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.
pw_rpc_transport#
pw_rust#
pw_stm32cube_build#
pw_stream#
Error codes were updated to be more accurate and descriptive.
pw_stream_uart_linux#
Common baud rates such as 9600
, 19200
, and so on are now supported.
pw_sync#
Tests were added to make sure that pw::sync::Borrowable
works with lock
annotations.
pw_system#
The pw_system.device.Device
Python class can now be used as a
context manager.
pw_tokenizer#
pw_tokenizer
now has Rust support. The pw_tokenizer
C++ config API
is now documented at Configuration and
the C++ token database API is now documented at
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
.
pw_toolchain#
A new Linux host toolchain built using pw_toolchain_bazel
has been
started. CIPD-provided Rust toolchains are now being used.
Add Linux host toolchain (issue #269204725)
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.
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.
Targets#
targets#
A new Ambiq Apollo4 target that uses the Ambiq Suite SDK and FreeRTOS has been added.
Language support#
Python#
Docs#
Doxygen-generated function signatures now present each argument on a separate line. Tabbed content looks visually different than before.
SEEDs#
SEED-0107 (Pigweed Communications) was accepted and SEED-0109 (Communication Buffers) was started.
Miscellaneous#
Build#
soong#
Jul 27, 2023 to Aug 11, 2023#
Highlights (Jul 27, 2023 to Aug 11, 2023):
We’re prototyping a Pigweed extension for VS Code. Learn more at Code Editor Support.
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 pw_tokenizer docs, migrating API references to Doxygen, fixing longstanding docs site UI issues, and more.
Please join us at the next Pigweed Live on Monday, Aug 14 1PM PST to
discuss these changes and anything else on your mind. Join our
Discord and head over to the #pigweed-live
channel to get a link to the video meeting.
Active SEEDs#
Help shape the future of Pigweed! Please leave feedback on the following active RFCs (SEEDs):
Modules#
pw_alignment#
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 pw_analog for an example.
pw_base64#
We finished migrating the pw_random
API reference to Doxygen.
pw_boot_cortex_m#
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.
pw_cli#
We polished tab completion support.
pw_console#
We made copy-to-clipboard functionality more robust when running pw_console
over SSH.
pw_containers#
We updated filteredview
constructors and migrated the
FilteredView
API reference to Doxygen.
pw_docgen#
At the top of pages like 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.
pw_env_setup#
We made Python setup more flexible.
pw_ide#
We are prototyping a pw_ide
extension for VS Code.
pw_interrupt#
We added a backend for Xtensa processors.
pw_log_zephyr#
We encoded tokenized messages to pw::InlineString
so that the output is
always null-terminated.
pw_presubmit#
We increased
LUCI
support and updated the #pragma once
check to look for matching #ifndef
and #define
lines.
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)
Make nanopb hermetic (issue #293792686)
pw_python#
We fixed bugs related to requirements.txt
files not getting found.
pw_random#
We continued migrating the pw_random
API reference to Doxygen.
pw_rpc#
We made the Java client more robust.
pw_spi#
We continued work on implementing a SPI responder interface.
pw_status#
We fixed the nesting on a documentation section.
pw_stream#
We added remaining()
, len()
, and position()
methods to the
Cursor
wrapping in Rust.
pw_stream_shmem_mcuxpresso#
We added the pw_stream_shmem_mcuxpresso backend for pw_stream
.
pw_sync_freertos#
pw_thread#
pw_tokenizer#
We added support for unaligned token databases and continued the
0102: Consistent Module Documentation update of the pw_tokenizer
docs.
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.
pw_toolchain_bazel#
We added a an LLVM toolchain for building with Bazel on macOS.
pw_trace_tokenized#
We made tracing more robust.
pw_transfer#
We made integration tests more robust.
pw_web#
We added support for storing user preferences in localStorage
.
Build#
We made the Bazel system more hermetic and fixed an error related to not finding the Java runtime.
Docs#
We created a new doc (Code Editor Support) that explains how to improve Pigweed support in various IDEs. We standardized how we present call-to-action buttons on module homepages. See 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.
SEEDs#
We created a UI widget to standardize how we present SEED status information. See the start of 0102: Consistent Module Documentation for an example.
Third party#
third_party/mbedtls#
3.3.0 compatibility (issue #293612945)
Miscellaneous#
OWNERS#
Jul 13, 2023 to 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#
Modules#
pw_allocator#
We started migrating the pw_allocator
API reference to Doxygen.
pw_async#
We increased Bazel support.
pw_async_basic#
We reduced logging noisiness.
pw_base64#
We continued migrating the pw_base64
API reference to Doxygen.
pw_bloat#
We improved the performance of label creation. One benchmark moved from 120 seconds to 0.02 seconds!
pw_bluetooth#
Support for 3 events was added.
pw_build#
pw_build_mcuxpresso#
Some H3 elements in the pw_build_mcuxpresso
docs were being incorrectly
rendered as H2.
pw_chrono_freertos#
We investigated what appeared to be a race condition but turned out to be an unreliable FreeRTOS variable.
pw_cli#
pw_cli
now supports tab completion!
pw_console#
Communication errors are now handled more gracefully.
pw_containers#
The flat map implementation and docs have been improved.
pw_digital_io#
We continued migrating the API reference to Doxygen. An RPC service was added.
pw_digital_io_mcuxpresso#
We continued migrating the API reference to Doxygen. Support for a new RPC service was added.
pw_docgen#
Support for auto-linking to Rust docs (when available) was added. We also explained how to debug Pigweed’s Sphinx extensions.
pw_env_setup#
There were lots of updates around how the Pigweed environment uses Python.
Add more Python versions (issue #292278707)
Add coverage utilities (issue #279161371)
pw_fuzzer#
A fuzzer example was updated to more closely follow Pigweed code conventions.
pw_hdlc#
Communication errors are now handled more gracefully.
pw_i2c#
An RPC service was added. Docs and code comments were updated to use responder
and initiator
terminology consistently.
pw_i2c_mcuxpresso#
pw_ide#
pw_interrupt#
Work continued on how facade backend selection works in Bazel.
pw_log_rpc#
A docs section was added that explains how pw_log
, pw_log_tokenized
,
and pw_log_rpc
interact with each other.
pw_package#
Raspberry Pi Pico and Zephyr support improved.
pw_perf_test#
pw_presubmit#
pw_protobuf_compiler#
pw_ring_buffer#
pw_ring_buffer
now builds with -Wconversion
enabled.
pw_rpc#
pw_rpc_transport#
pw_rust#
We are preparing pigweed.dev to automatically link to auto-generated Rust module documentation when available.
pw_spi#
We updated docs and code comments to use initiator
and responder
terminology consistently.
pw_status#
pw_stream#
We continued work on Rust support.
pw_stream_uart_linux#
A new UART Linux backend for pw_stream
was added.
pw_sync#
C++ lock traits were added and used.
pw_sync_freertos#
pw_sys_io#
pw_system#
pw_tokenizer#
We refactored the pw_tokenizer
docs to adhere to 0102: Consistent Module Documentation.
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.
pw_trace_tokenized#
pw_unit_test#
pw_varint#
pw_watch#
We fixed an issue where builds were getting triggered when files were opened or closed without modication.
pw_web#
Build#
bazel#
build#
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#
rust#
OS support#
zephyr#
Docs#
We added a feature grid to the homepage and fixed outdated info in various docs.
SEEDs#
SEED-0107#
SEED-0108#
Third party#
third_party#
third_party/mbedtls#
3.3.0 compatibility (issue #293612945)