aboutsummaryrefslogtreecommitdiff
path: root/docs/release_notes/2022_jan.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release_notes/2022_jan.rst')
-rw-r--r--docs/release_notes/2022_jan.rst192
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>`_!