A professional collaborative platform for embedded development
- 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 abuild
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)
- 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
- Improved a package publishing process:
- 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
- Updated analysis tools:
- 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)
- 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)
- 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)
- New options for pio system prune command:
- 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)
- 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)
- 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)
- 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)
- 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)
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
- 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)
- Upgraded build engine to the SCons 4.0 - a next-generation software construction tool
- 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)
- Updated analysis tools:
- 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.
See PlatformIO Core 4.0 history.
See PlatformIO Core 3.0 history.
See PlatformIO Core 2.0 history.
See PlatformIO Core 1.0 history.