A professional collaborative platform for declarative, safety-critical, and test-driven embedded development.
Please check the Migration guide from 5.x to 6.0.
-
Package Management
-
New unified Package Management CLI (
pio pkg
):- pio pkg exec - run command from package tool (issue #4163)
- pio pkg install - install the project dependencies or custom packages
- pio pkg list - list installed packages
- pio pkg outdated - check for project outdated packages
- pio pkg search - search for packages
- pio pkg show - show package information
- pio pkg uninstall - uninstall the project dependencies or custom packages
- pio pkg update - update the project dependencies or custom packages
-
Package Manifest
- Added support for "scripts" (issue #485)
- Added support for multi-licensed packages using SPDX Expressions (issue #4037)
- Added support for "dependencies" declared in a "tool" package manifest
-
Added support for symbolic links allowing pointing the local source folder to the Package Manager (issue #3348)
-
Automatically install dependencies of the local (private) project libraries (issue #2910)
-
Improved detection of a package type from the tarball archive (issue #3828)
-
Ignore files according to the patterns declared in ".gitignore" when using the pio package pack command (issue #4188)
-
Dropped automatic updates of global libraries and development platforms (issue #4179)
-
Dropped support for the "pythonPackages" field in "platform.json" manifest in favor of Extra Python Dependencies
-
Fixed an issue when manually removed dependencies from the "platformio.ini" configuration file were not uninstalled from the storage (issue #3076)
-
-
Unit Testing
- Refactored from scratch Unit Testing solution and its documentation
- New: Test Hierarchy (issue #4135)
- New: Doctest testing framework (issue #4240)
- New: GoogleTest testing and mocking framework (issue #3572)
- New: Semihosting (issue #3516)
- New: Hardware Simulators for Unit Testing (QEMU, Renode, SimAVR, and custom solutions)
- New:
test
build configuration - Added support for a custom testing framework
- Added support for a custom testing command
- Added support for a custom Unity library (issue #3980)
- Added support for the
socket://
andrfc2217://
protocols using test_port option (issue #4229) - List available project tests with a new pio test --list-tests option
- Pass extra arguments to the testing program with a new pio test --program-arg option (issue #3132)
- Generate reports in JUnit and JSON formats using the pio test command (issue #2891)
- Provide more information when the native program crashed on a host (errored with a non-zero return code) (issue #3429)
- Improved automatic detection of a testing serial port (issue #4076)
- Fixed an issue when command line parameters (
--ignore
,--filter
) do not override values defined in the "platformio.ini" configuration file (issue #3845) - Renamed the "test_build_project_src" project configuration option to the test_build_src
- Removed the "test_transport" option in favor of the Custom "unity_config.h"
-
Static Code Analysis
-
Updated analysis tools:
- Cppcheck v2.7 with various checker improvements and fixed false positives
- PVS-Studio v7.18 with improved and updated semantic analysis system
-
Added support for the custom Clang-Tidy configuration file (issue #4186)
-
Added ability to override a tool version using the platform_packages option (issue #3798)
-
Fixed an issue with improper handling of defects that don't specify a source file (issue #4237)
-
-
Build System
- Show project dependency licenses when building in the verbose mode
- Fixed an issue when LDF ignores the project lib_deps while resolving library dependencies (issue #3598)
- Fixed an issue with calling an extra script located outside a project (issue #4220)
- Fixed an issue when GCC preprocessor was applied to the ".s" assembly files on case-sensitive OS such as Window OS (issue #3917)
- Fixed an issue when LDF ignores build_src_flags in the "deep+" mode (issue #4253)
-
Integration
- Added a new build variable (
COMPILATIONDB_INCLUDE_TOOLCHAIN
) to include toolchain paths in the compilation database (issue #3735) - Changed a default path for compilation database compile_commands.json to the project root
- Enhanced integration for Qt Creator (issue #3046)
- Added a new build variable (
-
Project Configuration
- Extended Interpolation of Values with
${this}
pattern (issue #3953) - Embed environment name of the current section in the "platformio.ini" configuration file using
${this.__env__}
pattern - Renamed the "src_build_flags" project configuration option to the build_src_flags
- Renamed the "src_filter" project configuration option to the build_src_filter
- Extended Interpolation of Values with
-
Miscellaneous
- Pass extra arguments to the native program with a new pio run --program-arg option (issue #4246)
- Improved PIO Remote setup on credit-card sized computers (Raspberry Pi, BeagleBon, etc) (issue #3865)
- Finally removed all tracks to the Python 2.7, the Python 3.6 is the minimum supported version.