diff options
Diffstat (limited to 'docs/release_notes/2022_jan.rst')
-rw-r--r-- | docs/release_notes/2022_jan.rst | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/docs/release_notes/2022_jan.rst b/docs/release_notes/2022_jan.rst deleted file mode 100644 index f7244e5e2..000000000 --- a/docs/release_notes/2022_jan.rst +++ /dev/null @@ -1,192 +0,0 @@ -.. _docs-release-notes-2022-jan: - -=================================== -Pigweed: What's New in January 2022 -=================================== -Happy new year from the Pigweed team! We’re excited to share what we’ve been up -to this month and we’re really looking forward to what 2022 will bring to the -Pigweed community. - -:ref:`Pigweed<docs-root>` is a collection of libraries and tools for building -robust embedded software, efficiently. Pigweed allows you to write code that -runs transparently on both your host machine and tiny 32-bit microcontrollers -like those in the :ref:`STM32<target-stm32f429i-disc1>` and -:ref:`Arduino<target-arduino>` families, while giving you the comforts of modern -software development traditionally lacking in embedded systems, like -:ref:`easy unit testing<module-pw_unit_test>`, -:ref:`powerful build systems<docs-build-system>`, -:ref:`flexible logging<module-pw_log>`, and -:ref:`reliable communication<module-pw_rpc>`. - -.. admonition:: Note - :class: warning - - Many Pigweed modules are already shipping in commercial products, but it is - still an early access project. Find out if - :ref:`Pigweed is right for you<docs-concepts-right-for-my-project>`. - -Pigweed is a free and open source project and we welcome contributions! Join us -on `Discord <https://discord.gg/M9NSeTA>`_ to share feedback, ask questions, and -get involved with the Pigweed community! - ------------------------------- -Experimental Pigweed framework ------------------------------- -.. admonition:: tl;dr - :class: checkmark - - We’re starting the “whole OS” framework version of Pigweed! It’s not ready - for use yet but you might want to take a peek. - -Pigweed is designed to be highly modular—you can use as many or as few of the -Pigweed modules as you need for your project, and those modules will work -flexibly in any project structure. This works great when you want to add Pigweed -super powers like hybrid host/target unit testing or RPC communication to an -existing project. While Pigweed gives you nearly all of the tools you need to -efficiently build a robust, reliable embedded project, until now we haven’t had -a great solution for building a new project on Pigweed. - -The Pigweed framework assembles an opinionated project structure, build system, -and development environment that does three key things: - -* Takes care of difficult but unproductive project plumbing issues like setting - up a target toolchain and providing support for - :ref:`OS abstractions<docs-os_abstraction_layers>`. - -* Configures Pigweed module backends that give you logging, asserts, threads, - dynamic memory allocation, and more, that work transparently both on host and - on target - -* Sets up a productive development environment with rich code analysis and - powerful device interaction tools - -You can experiment with this right now by checking out the ``pw_system`` -:ref:`documentation<module-pw_system>`. The experimental configuration leverages -FreeRTOS and runs on the STM32F429I Discovery board. With a -:ref:`few simple commands<target-stm32f429i-disc1-stm32cube>`, you can have a -complete embedded development environment set up and focus on building your -product. - -.. warning:: - - The Pigweed framework is still in very active development and you should - expect breaking changes in the future. If you’re experimenting with it, we - would love to hear from you! Join us on - `Discord <https://discord.gg/M9NSeTA>`_! - -------------------------------------- -Support for plugins in ``pw_console`` -------------------------------------- -Teams that use Pigweed quickly come to rely on the -:ref:`console<module-pw_console>` as a vital tool for interacting with their -devices via RPC. It’s now possible to tailor the console to meet your project’s -specific needs through a new :ref:`plugin interface<module-pw_console-plugins>`. -You can build your own menus, window panes, keybindings, and clickable buttons -to truly make ``pw_console`` your own. - -How are you using the Pigweed console in your project? Let us know on -`Discord <https://discord.gg/M9NSeTA>`_! - ------------------------------------- -Expanded support for Bazel and CMake ------------------------------------- -Pigweed’s primary build system is -`GN (Generate Ninja) <https://gn.googlesource.com/gn>`_, but to make it easier -to use Pigweed modules in existing projects, we have been expanding support for -the `Bazel <https://bazel.build/>`_ and `CMake <https://cmake.org/>`_ build -systems. Right now, the best way to determine which build systems a module -supports is to look out for ``BUILD.gn``, ``BUILD.bazel`` and ``CMakeLists.txt`` -files (respectively) in module directories. While we work on improving build -system support and documentation, check out the -:ref:`build system documentation<docs-build-system>` for more detailed -information and join us on Discord for support. - ----------------------------------------- -Changes to the RPC ``ChannelOutput`` API ----------------------------------------- -RPC endpoints use :ref:`ChannelOutput<module-pw_rpc-ChannelOutput>` instances to -send packets encoding RPC data. To send an encoded RPC packet, we need a buffer -containing the packet’s data. In the past, we could request a buffer by doing -something like this: - -.. code-block:: cpp - - auto buffer = pw::rpc::ChannelOutput::AcquireBuffer(buffer_size) - // fill in the buffer here - pw::rpc::ChannelOutput::SendAndReleaseBuffer(buffer) - -The ``ChannelOutput::AcquireBuffer`` and ``ChannelOutput::SendAndReleaseBuffer`` -methods are no longer part of ``ChannelOutput``’s public API, making its -internal buffer private. Now, we create our own buffer and ``ChannelOutput`` is -simply responsible for sending it: - -.. code-block:: cpp - - auto buffer = ... // create your own local buffer with RPC packet data - pw::rpc::ChannelOutput::Send(buffer) - -This approach avoids several tricky concurrency issues related to buffer -lifetimes, and simplifies the ``ChannelOutput`` API. It also opens up the -possibility of projects managing RPC buffers in more flexible ways, e.g. via -dynamically-allocated memory or separate shared memory mechanisms. - -.. warning:: - - This is a breaking change if you update pw_rpc, but one that can be fixed - quickly. - -We’re actively reviewing the RPC API with a view towards significantly improving -it in the future. Share your input with us on -`Discord <https://discord.gg/M9NSeTA>`_! - ------------- -More Updates ------------- -* It’s now possible to generate a token database from a list of strings in a - JSON file for ``pw_tokenizer``. This can be useful when you need to tokenize - strings that can’t be parsed from compiled binaries. - -* ``pw_assert``‘s new ``pw_assert_tokenized`` backend provides a much more - space-efficient implementation compared to using ``pw_assert_log`` with - ``pw_log_tokenized``. However, there are trade offs to consider, so check out - the :ref:`documentation<module-pw_assert_tokenized>`. - -* CMake builds now support compile-time module configuration similar to GN - through the use of the ``pw_add_module_config`` and ``pw_set_module_config`` - functions. - -* In ``pw_build``, it is now possible to set a specific working directory for - :ref:`pw_exec<module-pw_build-pw_exec>` actions. - -* ``pw_cpu_exception`` now supports the ARMv8M Mainline architecture in - ``pw_cpu_exception_cortex_m``. This allows us to take advantage of stack limit - boundary features in microcontrollers using that architecture, like Cortex M33 - and M35P. - ------------- -Get Involved ------------- -.. tip:: - - We welcome contributions from the community! Here are just a few - opportunities to get involved. - -* Pigweed now includes GN build files for - `TinyUSB <https://github.com/hathach/tinyusb>`_, a popular USB library for - embedded systems. Projects can now include it by cloning the TinyUSB - repository and configuring GN to build it. But right now, we lack interfaces - between TinyUSB and Pigweed abstractions like pw_stream. This is a great - opportunity to help get very useful functionality across the finish line. - -* We’re very interested in supporting the - `Raspberry Pi Pico <https://www.raspberrypi.com/products/raspberry-pi-pico/>`_ - and the ecosystem of devices using the RP2040 microcontroller. We will be - working in earnest on this in the coming months and welcome anyone who wants - to lend a helping hand! - -* Evolving the Pigweed framework from its current experimental state to a - relatively complete embedded project platform is one of our major focuses this - year, and we want your help. That help can range from providing input on what - you’re looking for in a framework, to building small projects with it and - providing feedback, up to contributing directly to its development. Join us to - talk about it on `Discord <https://discord.gg/M9NSeTA>`_! |