Migration Guide from 3.0 to 4.0.
-
PlatformIO Plus Goes Open Source
- Built-in PIO Unified Debugger
- Built-in PIO Unit Testing
-
Project Configuration
- New project configuration parser with a strict options typing (API)
- Unified workspace storage (workspace_dir ->
.pio
) for PlatformIO Build System, Library Manager, and other internal services (issue #1778) - Share common (global) options between project environments using [env] section (issue #1643)
- Include external configuration files with extra_configs option (issue #1590)
- Custom project
***_dir
options declared in platformio section have higher priority than Environment variables - Added support for Unix shell-style wildcards for monitor_port option (issue #2541)
- Added new monitor_flags option which allows passing extra flags and options to platformio device monitor command (issue #2165)
- Added support for PLATFORMIO_DEFAULT_ENVS system environment variable (issue #1967)
- Added support for shared_dir where you can place an extra files (extra scripts, LD scripts, etc.) which should be transferred to a PIO Remote machine
-
Library Management
- Switched to workspace
.pio/libdeps
folder for project dependencies instead of.piolibdeps
- Save libraries passed to platformio lib install command into the project dependency list (lib_deps) with a new
--save
flag (issue #1028) - Install all project dependencies declared via lib_deps option using a simple platformio lib install command (issue #2147)
- Use isolated library dependency storage per project build environment (issue #1696)
- Look firstly in built-in library storages for a missing dependency instead of PlatformIO Registry (issue #1654)
- Override default source and include directories for a library via library.json manifest using
includeDir
andsrcDir
fields - Fixed an issue when library keeps reinstalling for non-latin path (issue #1252)
- Fixed an issue when lib_compat_mode = strict does not ignore libraries incompatible with a project framework
- Switched to workspace
-
Build System
- Switched to workspace
.pio/build
folder for build artifacts instead of.pioenvs
- Switch between Build Configurations (
release
anddebug
) with a new project configuration option build_type - Custom platform_packages per a build environment with an option to override default (issue #1367)
- Print platform package details, such as version, VSC source and commit (issue #2155)
- Control a number of parallel build jobs with a new -j, --jobs option
- Override default "platformio.ini" (Project Configuration File) with a custom using
-c, --project-conf
option for platformio run, platformio debug, or platformio test commands (issue #1913) - Override default development platform upload command with a custom upload_command (issue #2599)
- Configure a shared folder for the derived files (objects, firmwares, ELFs) from a build system using build_cache_dir option (issue #2674)
- Fixed an issue when
-U
inbuild_flags
does not remove macro previously defined via-D
flag (issue #2508)
- Switched to workspace
-
Infrastructure
- Python 3 support (issue #895)
- Significantly speedup back-end for PIO Home. It works super fast now!
- Added support for the latest Python "Click" package (CLI) (issue #349)
- Added options to override default locations used by PlatformIO Core (core_dir, globallib_dir, platforms_dir, packages_dir, cache_dir) (issue #1615)
- Removed line-buffering from platformio run command which was leading to omitting progress bar from upload tools (issue #856)
- Fixed numerous issues related to "UnicodeDecodeError" and international locales, or when project path contains non-ASCII chars (issue #143, issue #1342, issue #1959, issue #2100)
-
Integration
- Support custom CMake configuration for CLion IDE using
CMakeListsUser.txt
file - Fixed an issue with hardcoded C standard version when generating project for CLion IDE (issue #2527)
- Fixed an issue with Project Generator when an include path search order is inconsistent to what passed to the compiler (issue #2509)
- Fixed an issue when generating invalid "Eclipse CDT Cross GCC Built-in Compiler Settings" if a custom PLATFORMIO_CORE_DIR is used (issue #806)
- Support custom CMake configuration for CLion IDE using
-
Miscellaneous
- Deprecated
--only-check
PlatformIO Core CLI option for "update" sub-commands, please use--dry-run
instead - Fixed "systemd-udevd" warnings in 99-platformio-udev.rules (issue #2442)
- Fixed an issue when package cache (Library Manager) expires too fast (issue #2559)
- Deprecated