Release Notes
=============
.. _release_notes_5:
PlatformIO Core 5
-----------------
**A professional collaborative platform for embedded development**
5.2.5 (2022-02-10)
~~~~~~~~~~~~~~~~~~
- Improved support for private packages in `PlatformIO Registry `__
- Improved checking of available Internet connection for IPv6-only workstations (`pull #4151 `_)
- Better detecting of default PlatformIO project directory on Linux OS (`pull #4158 `_)
- Respect disabling debugging server from "platformio.ini" passing an empty value to the `debug_server `__ option
- Fixed a "module 'asyncio' has no attribute 'run'" error when launching PIO Home using Python 3.6 (`issue #4169 `_)
5.2.4 (2021-12-15)
~~~~~~~~~~~~~~~~~~
- Added support for a new ``headers`` field in `library.json `__ (declare a list of header files that can be included in a project source files using ``#include <...>`` directive)
- Improved tab completion support for Bash, ZSH, and Fish shells (`issue #4114 `_)
- Improved support for projects located on a network share (`issue #3417 `_, `issue #3926 `_, `issue #4099 `_)
- Improved PIO Remote setup on credit-card sized computers (Raspberry Pi, BeagleBon, etc) (`issue #3865 `_)
- Upgraded build engine to the SCons 4.3 (`release notes `__)
- Fixed an issue with the CLion project generator when a macro contains a space (`issue #4102 `_)
- Fixed an issue with the NetBeans project generator when the path to PlatformIO contains a space (`issue #4096 `_)
- Fixed an issue when the system environment variable does not override a project configuration option (`issue #4125 `_)
- Fixed an issue when referencing ``*_dir`` option from a custom project configuration environment (`issue #4110 `_)
- Fixed an issue with the CLion template that generated a broken CMake file if user's home directory contained an unescaped backslash (`issue #4071 `_)
- Fixed an issue with wrong detecting Windows architecture when Python 32bit is used (`issue #4134 `_)
5.2.3 (2021-11-05)
~~~~~~~~~~~~~~~~~~
- Automatically synchronize active projects between IDE and `PlatformIO Home `__
- Added support for custom `device monitor filters `__ (`issue #3924 `_)
- Show human-readable message when infinite recursion is detected while processing `Interpolation of Values `__ (`issue #3883 `_)
- Improved directory interpolation (``${platformio.***_dir}``) in `"platformio.ini" `__ configuration file (`issue #3934 `_)
- Ignore resolving of SCons variables (e.g., ``${(SOURCE.get_abspath())}``) when preprocessing interpolations (`issue #3933 `_)
- Added "inc" as a sign that it's the root of the library (`issue #4093 `_)
- Fixed an issue when the ``$PROJECT_DIR`` variable was not properly replaced in the `debug_server `__ option (`issue #4086 `_)
- Fixed an issue when `PIO Remote `__ device monitor crashes on the first keypress (`issue #3832 `_)
- Fixed "Do not know how to make File target 'debug'" issue when debugging project using `CLion IDE `__ (`pull #4089 `_)
- Fixed "UnicodeEncodeError" when a build output contains non-ASCII characters (`issue #3971 `_)
- Fixed an issue when VSCode's debugger does not the honor default environment (`issue #4098 `_)
5.2.2 (2021-10-20)
~~~~~~~~~~~~~~~~~~
- Override debugging firmware loading mode using ``--load-mode`` option for `pio debug `__ command
- Added support for CLion IDE 2021.3 (`pull #4085 `_)
- Removed debugging "legacy Click" message from CLI (`issue #4083 `_)
- Fixed a "TypeError: sequence item 1: expected str instance, list found" issue when extending configuration option in `"platformio.ini" `__ with the multi-line default value (`issue #4082 `_)
5.2.1 (2021-10-11)
~~~~~~~~~~~~~~~~~~
- Clean a build environment and installed library dependencies using a new ``cleanall`` target (`issue #4062 `_)
- Override a default library builder via a new ``builder`` field in a ``build`` group of `library.json `__ manifest (`issue #3957 `_)
- Updated `Cppcheck `__ v2.6 with new checks, increased reliability of advanced addons (MISRA/CERT) and various improvements
- Handle the "test" folder as a part of CLion project (`issue #4005 `_)
- Improved handling of a library root based on "Conan" or "CMake" build systems (`issue #3887 `_)
- Fixed a "KeyError: Invalid board option 'build.cpu'" when using a precompiled library with a board that does not have a CPU field in the manifest (`issue #4056 `_)
- Fixed a "FileExist" error when the `platformio ci `__ command is used in pair with the ``--keep-build-dir`` option (`issue #4011 `_)
- Fixed an issue with draft values of C++ language standards that broke static analysis via Cppcheck (`issue #3944 `_)
5.2.0 (2021-09-13)
~~~~~~~~~~~~~~~~~~
* **PlatformIO Debugging**
- Boosted `PlatformIO Debugging `__ performance thanks to migrating the codebase to the pure Python 3 Asynchronous I/O stack
- `Debug unit tests `__ created with `PlatformIO Unit Testing `__ solution (`issue #948 `_)
- Debug native (desktop) applications on a host machine (`issue #980 `_)
- Support debugging on Windows using Windows CMD/CLI (`pio debug `__) (`issue #3793 `_)
- Configure a custom pattern to determine when debugging server is started with a new `debug_server_ready_pattern `__ option
- Fixed an issue with silent hanging when a custom debug server is not found (`issue #3756 `_)
* **Package Management**
- Improved a package publishing process:
* Show package details
* Check for conflicting names in the PlatformIO Trusted Registry
* Check for duplicates and used version
* Validate package manifest
- Added a new option ``--non-interactive`` to `pio package publish `__ command
* **Build System**
- Process "precompiled" and "ldflags" properties of the "library.properties" manifest (`issue #3994 `_)
- Upgraded build engine to the SCons 4.2 (`release notes `__)
- Fixed an issue with broken binary file extension when a custom ``PROGNAME`` contains dot symbols (`issue #3906 `_)
- Fixed an issue when PlatformIO archives a library that does not contain C/C++ source files (`issue #4019 `_)
* **Static Code Analysis**
- Updated analysis tools:
* `Clang-Tidy `__ v12.0.1 with new modules and extended checks list
* `Cppcheck `__ v2.5.0 with improved code analysis and MISRA improvements
* `PVS-Studio `__ v7.14 with support for intermodular analysis, improved MISRA support and new diagnostics
* **Miscellaneous**
- Ensure that a serial port is ready before running unit tests on a remote target (`issue #3742 `_)
- Fixed an error "Unknown development platform" when running unit tests on a clean machine (`issue #3901 `_)
- Fixed an issue when "main.cpp" was generated for a new project for 8-bit development platforms (`issue #3872 `_)
5.1.1 (2021-03-17)
~~~~~~~~~~~~~~~~~~
* Fixed a "The command line is too long" issue with a linking process on Windows (`issue #3827 `_)
* Fixed an issue with `device monitor `__ when the "send_on_enter" filter didn't send EOL chars (`issue #3787 `_)
* Fixed an issue with silent mode when unwanted data is printed to stdout (`issue #3837 `_)
* Fixed an issue when code inspection fails with "Bad JSON" (`issue #3790 `_)
* Fixed an issue with overriding user-specified debugging configuration information in VSCode (`issue #3824 `_)
5.1.0 (2021-01-28)
~~~~~~~~~~~~~~~~~~
* **PlatformIO Home**
- Boosted `PlatformIO Home `__ performance thanks to migrating the codebase to the pure Python 3 Asynchronous I/O stack
- Added a new ``--session-id`` option to `pio home `__ command that helps to keep PlatformIO Home isolated from other instances and protect from 3rd party access (`issue #3397 `_)
* **Build System**
- Upgraded build engine to the SCons 4.1 (`release notes `_)
- Refactored a workaround for a maximum command line character limitation (`issue #3792 `_)
- Fixed an issue with Python 3.8+ on Windows when a network drive is used (`issue #3417 `_)
* **Package Management**
- New options for `pio system prune `__ command:
+ ``--dry-run`` option to show data that will be removed
+ ``--core-packages`` option to remove unnecessary core packages
+ ``--platform-packages`` option to remove unnecessary development platform packages (`issue #923 `_)
- Added new `check_prune_system_threshold `__ setting
- Disabled automatic removal of unnecessary development platform packages (`issue #3708 `_, `issue #3770 `_)
- Fixed an issue when unnecessary packages were removed in ``update --dry-run`` mode (`issue #3809 `_)
- Fixed a "ValueError: Invalid simple block" when uninstalling a package with a custom name and external source (`issue #3816 `_)
* **Debugging**
- Configure a custom debug adapter speed using a new `debug_speed `__ option (`issue #3799 `_)
- Handle debugging server's "ready_pattern" in "stderr" output
* **Miscellaneous**
- Improved listing of `multicast DNS services `_
- Fixed a "UnicodeDecodeError: 'utf-8' codec can't decode byte" when using J-Link for firmware uploading on Linux (`issue #3804 `_)
- Fixed an issue with a compiler driver for ".ccls" language server (`issue #3808 `_)
- Fixed an issue when `pio device monitor --eol `__ and "send_on_enter" filter do not work properly (`issue #3787 `_)
5.0.4 (2020-12-30)
~~~~~~~~~~~~~~~~~~
- Added "Core" suffix when showing PlatformIO Core version using ``pio --version`` command
- Improved ".ccls" configuration file for Emacs, Vim, and Sublime Text integrations
- Updated analysis tools:
* `Cppcheck `__ v2.3 with improved C++ parser and several new MISRA rules
* `PVS-Studio `__ v7.11 with new diagnostics and updated mass suppression mechanism
- Show a warning message about deprecated support for Python 2 and Python 3.5
- Do not provide "intelliSenseMode" option when generating configuration for VSCode C/C++ extension
- Fixed a "git-sh-setup: file not found" error when installing project dependencies from Git VCS (`issue #3740 `_)
- Fixed an issue with package publishing on Windows when Unix permissions are not preserved (`issue #3776 `_)
5.0.3 (2020-11-12)
~~~~~~~~~~~~~~~~~~
- Added an error selector for `Sublime Text `__ build runner (`issue #3733 `_)
- Generate a working "projectEnvName" for PlatformIO IDE's debugger for VSCode
- Force VSCode's intelliSenseMode to "gcc-x64" when GCC toolchain is used
- Print ignored test suites and environments in the test summary report only in verbose mode (`issue #3726 `_)
- Fixed an issue when the package manager tries to install a built-in library from the registry (`issue #3662 `_)
- Fixed an issue when `pio package pack `__ ignores some folders (`issue #3730 `_)
5.0.2 (2020-10-30)
~~~~~~~~~~~~~~~~~~
- Initialize a new project or update the existing passing working environment name and its options (`issue #3686 `_)
- Automatically build PlatformIO Core extra Python dependencies on a host machine if they are missed in the registry (`issue #3700 `_)
- Improved "core.call" RPC for PlatformIO Home (`issue #3671 `_)
- Fixed a "PermissionError: [WinError 5]" on Windows when an external repository is used with `lib_deps `__ option (`issue #3664 `_)
- Fixed a "KeyError: 'versions'" when dependency does not exist in the registry (`issue #3666 `_)
- Fixed an issue with GCC linker when "native" dev-platform is used in pair with library dependencies (`issue #3669 `_)
- Fixed an "AssertionError: ensure_dir_exists" when checking library updates from simultaneous subprocesses (`issue #3677 `_)
- Fixed an issue when `pio package publish `__ command removes original archive after submitting to the registry (`issue #3716 `_)
- Fixed an issue when multiple `pio lib install `__ command with the same local library results in duplicates in ``lib_deps`` (`issue #3715 `_)
- Fixed an issue with a "wrong" timestamp in device monitor output using `"time" filter `__ (`issue #3712 `_)
5.0.1 (2020-09-10)
~~~~~~~~~~~~~~~~~~
- Added support for "owner" requirement when declaring ``dependencies`` using `library.json `__
- Fixed an issue when using a custom git/ssh package with `platform_packages `__ option (`issue #3624 `_)
- Fixed an issue with "ImportError: cannot import name '_get_backend' from 'cryptography.hazmat.backends'" when using `Remote Development `__ on RaspberryPi device (`issue #3652 `_)
- Fixed an issue when `pio package unpublish `__ command crashes (`issue #3660 `_)
- Fixed an issue when the package manager tries to install a built-in library from the registry (`issue #3662 `_)
- Fixed an issue with incorrect value for C++ language standard in IDE projects when an in-progress language standard is used (`issue #3653 `_)
- Fixed an issue with "Invalid simple block (semantic_version)" from library dependency that refs to an external source (repository, ZIP/Tar archives) (`issue #3658 `_)
- Fixed an issue when can not remove update or remove external dev-platform using PlatformIO Home (`issue #3663 `_)
5.0.0 (2020-09-03)
~~~~~~~~~~~~~~~~~~
Please check `Migration guide from 4.x to 5.0 `__.
* Integration with the new **PlatformIO Trusted Registry**
- Enterprise-grade package storage with high availability (multi replicas)
- Secure, fast, and reliable global content delivery network (CDN)
- Universal support for all packages:
* Libraries
* Development platforms
* Toolchains
- Built-in fine-grained access control (role-based, teams, organizations)
- New CLI commands:
* `pio package `__ – manage packages in the registry
* `pio access `__ – manage package access for users, teams, and maintainers
* Integration with the new **Account Management System**
- `Manage organizations `__
- `Manage teams and team memberships `__
* New **Package Management System**
- Integrated PlatformIO Core with the new PlatformIO Registry
- Support for owner-based dependency declaration (resolves name conflicts) (`issue #1824 `_)
- Automatically save dependencies to `"platformio.ini" `__ when installing using PlatformIO CLI (`issue #2964 `_)
- Follow SemVer complaint version constraints when checking library updates `issue #1281 `_)
- Dropped support for "packageRepositories" section in "platform.json" manifest (please publish packages directly to the registry)
* **Build System**
- Upgraded build engine to the `SCons 4.0 - a next-generation software construction tool `__
* `Configuration files are Python scripts `__ – use the power of a real programming language to solve build problems
* Built-in reliable and automatic dependency analysis
* Improved support for parallel builds
* Ability to `share built files in a cache `__ to speed up multiple builds
- New `Custom Targets `__
* Pre/Post processing based on dependent sources (another target, source file, etc.)
* Command launcher with own arguments
* Launch command with custom options declared in `"platformio.ini" `__
* Python callback as a target (use the power of Python interpreter and PlatformIO Build API)
* List available project targets (including dev-platform specific and custom targets) with a new `pio run --list-targets `__ command (`issue #3544 `_)
- Enable "cyclic reference" for GCC linker only for the embedded dev-platforms (`issue #3570 `_)
- Automatically enable LDF dependency `chain+ mode (evaluates C/C++ Preprocessor conditional syntax) `__ for Arduino library when "library.property" has "depends" field (`issue #3607 `_)
- Fixed an issue with improper processing of source files added via multiple Build Middlewares (`issue #3531 `_)
- Fixed an issue with the ``clean`` target on Windows when project and build directories are located on different logical drives (`issue #3542 `_)
* **Project Management**
- Added support for "globstar/`**`" (recursive) pattern for the different commands and configuration options (`pio ci `__, `src_filter `__, `check_patterns `__, `library.json > srcFilter `__). Python 3.5+ is required
- Added a new ``-e, --environment`` option to `pio project init `__ command that helps to update a PlatformIO project using the existing environment
- Dump build system data intended for IDE extensions/plugins using a new `pio project data `__ command
- Do not generate ".travis.yml" for a new project, let the user have a choice
* **Unit Testing**
- Updated PIO Unit Testing support for Mbed framework and added compatibility with Mbed OS 6
- Fixed an issue when running multiple test environments (`issue #3523 `_)
- Fixed an issue when Unit Testing engine fails with a custom project configuration file (`issue #3583 `_)
* **Static Code Analysis**
- Updated analysis tools:
* `Cppcheck `__ v2.1 with a new "soundy" analysis option and improved code parser
* `PVS-Studio `__ v7.09 with a new file list analysis mode and an extended list of analysis diagnostics
- Added Cppcheck package for ARM-based single-board computers (`issue #3559 `_)
- Fixed an issue with PIO Check when a defect with a multiline error message is not reported in verbose mode (`issue #3631 `_)
* **Miscellaneous**
- Display system-wide information using a new `pio system info `__ command (`issue #3521 `_)
- Remove unused data using a new `pio system prune `__ command (`issue #3522 `_)
- Show ignored project environments only in the verbose mode (`issue #3641 `_)
- Do not escape compiler arguments in VSCode template on Windows
- Drop support for Python 2 and 3.5
.. _release_notes_4:
PlatformIO Core 4
-----------------
See `PlatformIO Core 4.0 history `__.
PlatformIO Core 3
-----------------
See `PlatformIO Core 3.0 history `__.
PlatformIO Core 2
-----------------
See `PlatformIO Core 2.0 history `__.
PlatformIO Core 1
-----------------
See `PlatformIO Core 1.0 history `__.
PlatformIO Core Preview
-----------------------
See `PlatformIO Core Preview history `__.