Release Notes ============= .. |PIOCONF| replace:: `"platformio.ini" `__ configuration file .. |LIBRARYJSON| replace:: `library.json `__ .. |LDF| replace:: `LDF `__ .. |INTERPOLATION| replace:: `Interpolation of Values `__ .. |UNITTESTING| replace:: `Unit Testing `__ .. |DEBUGGING| replace:: `Debugging `__ .. |STATICCODEANALYSIS| replace:: `Static Code Analysis `__ .. _release_notes_6: PlatformIO Core 6 ----------------- Unlock the true potential of embedded software development with PlatformIO's collaborative ecosystem, embracing declarative principles, test-driven methodologies, and modern toolchains for unrivaled success. 6.1.17 (2024-??-??) ~~~~~~~~~~~~~~~~~~~ * Resolved an issue where the ``compiledb`` target failed to properly escape compiler executable paths containing spaces (`issue #4998 `_) 6.1.16 (2024-09-26) ~~~~~~~~~~~~~~~~~~~ * Added support for Python 3.13 * Introduced the `PLATFORMIO_SYSTEM_TYPE `__ environment variable, enabling manual override of the detected system type for greater flexibility and control in custom build environments * Enhanced internet connection checks by falling back to HTTPS protocol when HTTP (port 80) fails (`issue #4980 `_) * Upgraded the build engine to the latest version of SCons (4.8.1) to improve build performance, reliability, and compatibility with other tools and systems (`release notes `__) * Upgraded the `Doctest `__ testing framework to version 2.4.11, the `GoogleTest `__ to version 1.15.2, and the `Unity `__ to version 2.6.0, incorporating the latest features and improvements for enhanced testing capabilities * Corrected an issue where the incorrect public class was imported for the ``DoctestTestRunner`` (`issue #4949 `_) 6.1.15 (2024-04-25) ~~~~~~~~~~~~~~~~~~~ * Resolved an issue where the |LDF| couldn't locate a library dependency declared via version control system repository (`issue #4885 `_) * Resolved an issue related to the inaccurate detection of the Clang compiler (`pull #4897 `_) 6.1.14 (2024-03-21) ~~~~~~~~~~~~~~~~~~~ * Introduced the ``--json-output`` option to the `pio test `__ command, enabling users to generate test results in the JSON format * Upgraded the build engine to the latest version of SCons (4.7.0) to improve build performance, reliability, and compatibility with other tools and systems (`release notes `__) * Broadened version support for the ``pyelftools`` dependency, enabling compatibility with lower versions and facilitating integration with a wider range of third-party tools (`issue #4834 `_) * Addressed an issue where passing a relative path (``--project-dir``) to the `pio project init `__ command resulted in an error (`issue #4847 `_) * Enhanced |STATICCODEANALYSIS| to accommodate scenarios where custom ``src_dir`` or ``include_dir`` are located outside the project folder (`pull #4874 `_) * Corrected the validation of ``symlink://`` `package specifications `__ , resolving an issue that caused the package manager to repeatedly reinstall dependencies (`pull #4870 `_) * Resolved an issue related to the relative package path in the `pio pkg publish `__ command * Resolved an issue where the |LDF| selected an incorrect library version (`issue #4860 `_) * Resolved an issue with the ``hexlify`` filter in the `device monitor `__ command, ensuring proper representation of characters with Unicode code points higher than 127 (`issue #4732 `_) 6.1.13 (2024-01-12) ~~~~~~~~~~~~~~~~~~~ * Expanded support for SCons variables declared in the legacy format ``${SCONS_VARNAME}`` (`issue #4828 `_) 6.1.12 (2024-01-10) ~~~~~~~~~~~~~~~~~~~ * Added support for Python 3.12 * Introduced the capability to launch the debug server in a separate process (`issue #4722 `_) * Introduced a warning during the verification of MCU maximum RAM usage, signaling when the allocated RAM surpasses 100% (`issue #4791 `_) * Drastically enhanced the speed of project building when operating in verbose mode (`issue #4783 `_) * Upgraded the build engine to the latest version of SCons (4.6.0) to improve build performance, reliability, and compatibility with other tools and systems (`release notes `__) * Enhanced the handling of built-in variables in |PIOCONF| during |INTERPOLATION| (`issue #4695 `_) * Enhanced PIP dependency declarations for improved reliability and extended support to include Python 3.6 (`issue #4819 `_) * Implemented automatic installation of missing dependencies when utilizing a SOCKS proxy (`issue #4822 `_) * Implemented a fail-safe mechanism to terminate a debugging session if an unknown CLI option is passed (`issue #4699 `_) * Rectified an issue where ``${platformio.name}`` erroneously represented ``None`` as the default `project name `__ (`issue #4717 `_) * Resolved an issue where the ``COMPILATIONDB_INCLUDE_TOOLCHAIN`` setting was not correctly applying to private libraries (`issue #4762 `_) * Resolved an issue where ``get_systype()`` inaccurately returned the architecture when executed within a Docker container on a 64-bit kernel with a 32-bit userspace (`issue #4777 `_) * Resolved an issue with incorrect handling of the ``check_src_filters`` option when used in multiple environments (`issue #4788 `_) * Resolved an issue where running `pio project metadata `__ resulted in duplicated "include" entries (`issue #4723 `_) * Resolved an issue where native debugging failed on the host machine (`issue #4745 `_) * Resolved an issue where custom debug configurations were being inadvertently overwritten in VSCode's ``launch.json`` (`issue #4810 `_) 6.1.11 (2023-08-31) ~~~~~~~~~~~~~~~~~~~ * Resolved a possible issue that may cause generated projects for `PlatformIO IDE for VSCode `__ to fail to launch a debug session because of a missing "objdump" binary when GDB is not part of the toolchain package * Resolved a regression issue that resulted in the malfunction of the Memory Inspection feature within `PIO Home `__ 6.1.10 (2023-08-11) ~~~~~~~~~~~~~~~~~~~ * Resolved an issue that caused generated projects for `PlatformIO IDE for VSCode `__ to break when the ``-iprefix`` compiler flag was used * Resolved an issue encountered while utilizing the `pio pkg exec `__ command on the Windows platform to execute Python scripts from a package * Implemented a crucial improvement to the `pio run `__ command, guaranteeing that the ``monitor`` target is not executed if any of the preceding targets, such as ``upload``, encounter failures * `Cppcheck `__ v2.11 with new checks, CLI commands and various analysis improvements * Resolved a critical issue that arose on macOS ARM platforms due to the Python "requests" module, leading to a "ModuleNotFoundError: No module named 'chardet'" (`issue #4702 `_) 6.1.9 (2023-07-06) ~~~~~~~~~~~~~~~~~~ * Rectified a regression bug that occurred when the ``-include`` flag was passed via the `build_flags `__ option as a relative path and subsequently expanded (`issue #4683 `_) * Resolved an issue that resulted in unresolved absolute toolchain paths when generating the `Compilation database "compile_commands.json" `__ (`issue #4684 `_) 6.1.8 (2023-07-05) ~~~~~~~~~~~~~~~~~~ * Added a new ``--lint`` option to the `pio project config `__ command, enabling users to efficiently perform linting on the |PIOCONF| * Enhanced the parsing of the |PIOCONF| to provide comprehensive diagnostic information * Expanded the functionality of the |LIBRARYJSON| manifest by allowing the use of the underscore symbol in the `keywords `__ field * Optimized project integration templates to address the issue of long paths on Windows (`issue #4652 `_) * Refactored |UNITTESTING| engine to resolve compiler warnings with "-Wpedantic" option (`pull #4671 `_) * Eliminated erroneous warning regarding the use of obsolete PlatformIO Core when downgrading to the stable version (`issue #4664 `_) * Updated the `pio project metadata `__ command to return C/C++ flags as parsed Unix shell arguments when dumping project build metadata * Resolved a critical issue related to the usage of the ``-include`` flag within the `build_flags `__ option, specifically when employing dynamic variables (`issue #4682 `_) * Removed PlatformIO IDE for Atom from the documentation as `Atom has been deprecated `__ 6.1.7 (2023-05-08) ~~~~~~~~~~~~~~~~~~ * Introduced a new ``--sample-code`` option to the `pio project init `__ command, which allows users to include sample code in the newly created project * Added validation for `project working environment names `__ to ensure that they only contain lowercase letters ``a-z``, numbers ``0-9``, and special characters ``_`` (underscore) and ``-`` (hyphen) * Added the ability to show a detailed library dependency tree only in `verbose mode `__, which can help you understand the relationship between libraries and troubleshoot issues more effectively (`issue #4517 `_) * Added the ability to run only the `device monitor `__ when using the `pio run -t monitor `__ command, saving you time and resources by skipping the build process * Implemented a new feature to store device monitor logs in the project's ``logs`` folder, making it easier to access and review device monitor logs for your projects (`issue #4596 `_) * Improved support for projects located on Windows network drives, including Network Shared Folder, Dropbox, OneDrive, Google Drive, and other similar services (`issue #3417 `_) * Improved source file filtering functionality for the `Static Code Analysis `__ feature, making it easier to analyze only the code you need to * Upgraded the build engine to the latest version of SCons (4.5.2) to improve build performance, reliability, and compatibility with other tools and systems (`release notes `__) * Implemented a fix for shell injection vulnerabilities when converting INO files to CPP, ensuring your code is safe and secure (`issue #4532 `_) * Restored the project generator for the `NetBeans IDE `__, providing you with more flexibility and options for your development workflow * Resolved installation issues with PIO Remote on Raspberry Pi and other small form-factor PCs (`issue #4425 `_, `issue #4493 `_, `issue #4607 `_) * Resolved an issue where the `build_cache_dir `__ setting was not being recognized consistently across multiple environments (`issue #4574 `_) * Resolved an issue where organization details could not be updated using the `pio org update `__ command * Resolved an issue where the incorrect debugging environment was generated for VSCode in "Auto" mode (`issue #4597 `_) * Resolved an issue where native tests would fail if a custom program name was specified (`issue #4546 `_) * Resolved an issue where the PlatformIO |DEBUGGING| solution was not escaping the tool installation process into MI2 correctly (`issue #4565 `_) * Resolved an issue where multiple targets were not executed sequentially (`issue #4604 `_) * Resolved an issue where upgrading PlatformIO Core fails on Windows with Python 3.11 (`issue #4540 `_) 6.1.6 (2023-01-23) ~~~~~~~~~~~~~~~~~~ * Added support for Python 3.11 * Added a new `name `__ configuration option to customize a project name (`pull #4498 `_) * Made assets (templates, ``99-platformio-udev.rules``) part of Python's module (`issue #4458 `_) * Updated `Clang-Tidy `__ check tool to v15.0.5 with new diagnostics and bugfixes * Removed dependency on the "zeroconf" package and install it only when a user lists mDNS devices (issue with zeroconf's LGPL license) * Show the real error message instead of "Can not remove temporary directory" when |PIOCONF| is broken (`issue #4480 `_) * Fixed an issue with an incorrect test summary when a testcase name includes a colon (`issue #4508 `_) * Fixed an issue when `extends `__ did not override options in the right order (`issue #4462 `_) * Fixed an issue when `pio pkg list `__ and `pio pkg uninstall `__ commands fail if there are circular dependencies in the |LIBRARYJSON| manifests (`issue #4475 `_) 6.1.5 (2022-11-01) ~~~~~~~~~~~~~~~~~~ * Added a new `enable_proxy_strict_ssl `__ setting to disable the proxy server certificate verification (`issue #4432 `_) * Documented `PlatformIO Core Proxy Configuration `__ * Speeded up device port finder by avoiding loading board HWIDs from development platforms * Improved caching of build metadata in debug mode * Fixed an issue when `pio pkg install --storage-dir `__ command requires PlatformIO project (`issue #4410 `_) 6.1.4 (2022-08-12) ~~~~~~~~~~~~~~~~~~ * Added support for accepting the original FileNode environment in a "callback" function when using `Build Middlewares `__ (`pull #4380 `_) * Improved device port finder when using dual channel UART converter (`issue #4367 `_) * Improved project dependency resolving when using the `pio project init --ide `__ command * Upgraded build engine to the SCons 4.4.0 (`release notes `__) * Keep custom "unwantedRecommendations" when generating projects for VSCode (`issue #4383 `_) * Do not resolve project dependencies for the ``cleanall`` target (`issue #4344 `_) * Warn about calling "env.BuildSources" in a POST-type script (`issue #4385 `_) * Fixed an issue when escaping macros/defines for IDE integration (`issue #4360 `_) * Fixed an issue when the "cleanall" target removes dependencies from all working environments (`issue #4386 `_) 6.1.3 (2022-07-18) ~~~~~~~~~~~~~~~~~~ * Fixed a regression bug when opening device monitor without any filters (`issue #4363 `_) 6.1.2 (2022-07-18) ~~~~~~~~~~~~~~~~~~ * Export a ``PIO_UNIT_TESTING`` macro to the project source files and dependent libraries in the |UNITTESTING| mode * Improved detection of Windows architecture (`issue #4353 `_) * Warn about unknown `device monitor filters `__ (`issue #4362 `_) * Fixed a regression bug when `libArchive `__ option declared in the |LIBRARYJSON| manifest was ignored (`issue #4351 `_) * Fixed an issue when the `pio pkg publish `__ command didn't work with Python 3.6 (`issue #4352 `_) 6.1.1 (2022-07-11) ~~~~~~~~~~~~~~~~~~ * Added new ``monitor_encoding`` project configuration option to configure `Device Monitor `__ (`issue #4350 `_) * Allowed specifying project environments for `pio ci `__ command (`issue #4347 `_) * Show "TimeoutError" only in the verbose mode when can not find a serial port * Fixed an issue when a serial port was not automatically detected if the board has predefined HWIDs * Fixed an issue with endless scanning of project dependencies (`issue #4349 `_) * Fixed an issue with |LDF| when incompatible libraries were used for the working project environment with the missed framework (`pull #4346 `_) 6.1.0 (2022-07-06) ~~~~~~~~~~~~~~~~~~ * **Device Manager** - Automatically reconnect device monitor if a connection fails - Added new `pio device monitor --no-reconnect `__ option to disable automatic reconnection - Handle device monitor disconnects more gracefully (`issue #3939 `_) - Improved a serial port finder for `Black Magic Probe `__ (`issue #4023 `_) - Improved a serial port finder for a board with predefined HWIDs - Replaced ``monitor_flags`` with independent project configuration options: `monitor_parity `__, `monitor_eol `__, `monitor_raw `__, `monitor_echo `__ - Fixed an issue when the monitor filters were not applied in their order (`issue #4320 `_) * **Unit Testing** - Updated "Getting Started" documentation for `GoogleTest `__ testing and mocking framework - Export |UNITTESTING| flags only to the project build environment (``projenv``, files in "src" folder) - Merged the "building" stage with "uploading" for the embedded target (`issue #4307 `_) - Do not resolve dependencies from the project "src" folder when the `test_build_src `__ option is not enabled - Do not immediately terminate a testing program when results are received - Fixed an issue when a custom `pio test --project-config `__ was not handled properly (`issue #4299 `_) - Fixed an issue when testing results were wrong in the verbose mode (`issue #4336 `_) * **Build System** - Significantly improved support for `Pre & Post Actions `__ * Allowed to declare actions in the `PRE-type scripts `__ even if the target is not ready yet * Allowed library maintainers to use Pre & Post Actions in the library `extraScript `__ - Documented `Stringification `__ – converting a macro argument into a string constant (`issue #4310 `_) - Added new `pio run --monitor-port `__ option to specify custom device monitor port to the ``monitor`` target (`issue #4337 `_) - Added ``env.StringifyMacro(value)`` helper function for the `Advanced Scripting `__ - Allowed to ``Import("projenv")`` in a library extra script (`issue #4305 `_) - Fixed an issue when the `build_unflags `__ operation ignores a flag value (`issue #4309 `_) - Fixed an issue when the `build_unflags `__ option was not applied to the ``ASPPFLAGS`` scope - Fixed an issue on Windows OS when flags were wrapped to the temporary file while generating the `Compilation database "compile_commands.json" `__ - Fixed an issue with the |LDF| when recursively scanning dependencies in the ``chain`` mode - Fixed a "PermissionError" on Windows when running "clean" or "cleanall" targets (`issue #4331 `_) * **Package Management** - Fixed an issue when library dependencies were installed for the incompatible project environment (`issue #4338 `_) * **Miscellaneous** - Warn about incompatible Bash version for the `Shell Completion `__ (`issue #4326 `_) 6.0.2 (2022-06-01) ~~~~~~~~~~~~~~~~~~ * Control |UNITTESTING| verbosity with a new multilevel `pio test -v `__ command option (`issue #4276 `_) * Follow symbolic links during searching for the unit test suites (`issue #4288 `_) * Show a warning when testing an empty project without a test suite (`issue #4278 `_) * Improved support for `Asking for input (prompts) `_ * Fixed an issue when the `build_src_flags `__ option was applied outside the project scope (`issue #4277 `_) * Fixed an issue with debugging assembly files without preprocessor (".s") 6.0.1 (2022-05-17) ~~~~~~~~~~~~~~~~~~ * Improved support for the renamed configuration options (`issue #4270 `_) * Fixed an issue when calling the built-in `pio device monitor `__ filters * Fixed an issue when using |INTERPOLATION| and merging str+int options (`issue #4271 `_) 6.0.0 (2022-05-16) ~~~~~~~~~~~~~~~~~~ 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 |PIOCONF| were not uninstalled from the storage (`issue #3076 `_) * **Unit Testing** - Refactored from scratch |UNITTESTING| 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://`` and ``rfc2217://`` 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 |PIOCONF| (`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 `_) * **Project Configuration** - Extended |INTERPOLATION| with ``${this}`` pattern (`issue #3953 `_) - Embed environment name of the current section in the |PIOCONF| 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 `__ * **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. .. _release_notes_5: PlatformIO Core 5 ----------------- See `PlatformIO Core 5.0 history `__. .. _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 `__.