# Release Notes

## PlatformIO Core 4

### 4.3.4 (2020-05-23)

- Added PlatformIO CLI Shell Completion for Fish, Zsh, Bash, and PowerShell (issue #3435)

- Automatically build `contrib-pysite` package on a target machine when pre-built package is not compatible (issue #3482)

- Fixed an issue on Windows when installing a library dependency from Git repository (issue #2844, issue #3328)

### 4.3.3 (2020-04-28)

- Fixed “UnicodeDecodeError: ‘utf-8’ codec can’t decode byte” when non-Latin chars are used in project path (issue #3481)

### 4.3.2 (2020-04-28)

- New Account Management System (preview)

- Open source PIO Remote client

- Improved PIO Check with more accurate project processing

- Echo what is typed when `send_on_enter` device monitor filter is used (issue #3452)

- Fixed PIO Unit Testing for Zephyr RTOS

- Fixed UnicodeDecodeError on Windows when network drive (NAS) is used (issue #3417)

- Fixed an issue when saving libraries in new project results in error “No option ‘lib_deps’ in section” (issue #3442)

- Fixed an incorrect node path used for pattern matching when processing middleware nodes

- Fixed an issue with missing `lib_extra_dirs` option in SRC_LIST for CLion (issue #3460)

### 4.3.1 (2020-03-20)

- Fixed a SyntaxError “‘return’ with argument inside generator” for PIO Unified Debugger when Python 2.7 is used

- Fixed an issue when `lib_archive = no` was not honored in “platformio.ini”

- Fixed a TypeError “super(type, obj): obj must be an instance or subtype of type” when device monitor is used with a custom dev-platform filter (issue #3431)

### 4.3.0 (2020-03-19)

- Initial support for an official PlatformIO for CLion IDE plugin:

  - Smart C and C++ editor

  - Code refactoring

  - On-the-fly code analysis

  - “New PlatformIO Project” wizard

  - Building, Uploading, Testing

  - Integrated debugger (inline variable view, conditional breakpoints, expressions, watchpoints, peripheral registers, multi-thread support, etc.)

- Device Monitor 2.0

  - Added PlatformIO Device Monitor Filter API (dev-platforms can extend base device monitor with a custom functionality, such as exception decoding) (pull #3383)

  - Configure project device monitor with monitor_filters option

  - Capture device monitor output to a file with `log2file` filter (issue #670)

  - Show a timestamp for each new line with `time` filter (issue #981)

  - Send a text to device on ENTER with `send_on_enter` filter (issue #926)

  - Show a hexadecimal representation of the data (code point of each character) with `hexlify` filter

- New standalone (1-script) PlatformIO Core Installer

- Initial support for Renode simulation framework (issue #3401)

- Added support for Arm Mbed “module.json” `dependencies` field (issue #3400)

- Improved support for Arduino “library.properties” `depends` field

- Fixed an issue when quitting from PlatformIO IDE does not shutdown PIO Home server

- Fixed an issue “the JSON object must be str, not ‘bytes’” when PIO Home is used with Python 3.5 (issue #3396)

- Fixed an issue when Python 2 does not keep encoding when converting “.ino” (issue #3393)

- Fixed an issue when `"libArchive": false` in “library.json” does not work (issue #3403)

- Fixed an issue when not all commands in compilation database “compile_commands.json” use absolute paths (pull #3415)

- Fixed an issue when unknown transport is used for PIO Unit Testing engine (issue #3422)

### 4.2.1 (2020-02-17)

- Improved VSCode template with special `forceInclude` field for direct includes via `-include` flag (issue #3379)

- Improved support of PIO Home on card-sized PC (Raspberry Pi, etc.) (issue #3313)

- Froze “marshmallow” dependency to 2.X for Python 2 (issue #3380)

- Fixed “TypeError: unsupported operand type(s)” when system environment variable is used by project configuration parser (issue #3377)

- Fixed an issue when Library Dependency Finder (LDF) ignores custom “libLDFMode” and “libCompatMode” options in library.json

- Fixed an issue when generating of compilation database “compile_commands.json” does not work with Python 2.7 (issue #3378)

### 4.2.0 (2020-02-12)

- PlatformIO Home 3.1:

  - Project Manager

  - Project Configuration UI for “platformio.ini”

- PIO Check – automated code analysis without hassle:

  - Added support for PVS-Studio static code analyzer

- Initial support for Project Manager CLI:

  - Show computed project configuration with a new platformio project config command or dump to JSON with `platformio project config --json-output` (issue #3335)

  - Moved `platformio init` command to platformio project init

- Generate compilation database “compile_commands.json” (issue #2990)

- Control debug flags and optimization level with a new debug_build_flags option

- Install a dev-platform with ALL declared packages using a new `--with-all-packages` option for pio platform install command (issue #3345)

- Added support for “pythonPackages” in platform.json manifest (PlatformIO Package Manager will install dependent Python packages from PyPi registry automatically when dev-platform is installed)

- Handle project configuration (monitor, test, and upload options) for PIO Remote commands (issue #2591)

- Added support for Arduino’s library.properties `depends` field (issue #2781)

- Autodetect monitor port for boards with specified HWIDs (issue #3349)

- Updated SCons tool to 3.1.2

- Updated Unity tool to 2.5.0

- Made package ManifestSchema compatible with marshmallow >= 3 (issue #3296)

- Warn about broken library manifest when scanning dependencies (issue #3268)

- Do not overwrite custom items in VSCode’s “extensions.json” (issue #3374)

- Fixed an issue when `env.BoardConfig()` does not work for custom boards in extra scripts of libraries (issue #3264)

- Fixed an issue with “start-group/end-group” linker flags on Native development platform (issue #3282)

- Fixed default PIO Unified Debugger configuration for J-Link probe

- Fixed an issue with LDF when header files not found if “libdeps_dir” is within a subdirectory of “lib_extra_dirs” (issue #3311)

- Fixed an issue “Import of non-existent variable ‘projenv’’” when development platform does not call “env.BuildProgram()” (issue #3315)

- Fixed an issue when invalid CLI command does not return non-zero exit code

- Fixed an issue when Project Inspector crashes when flash use > 100% (issue #3368)

- Fixed a “UnicodeDecodeError” when listing built-in libraries on macOS with Python 2.7 (issue #3370)

- Fixed an issue with improperly handled compiler flags with space symbols in VSCode template (issue #3364)

- Fixed an issue when no error is raised if referred parameter (interpolation) is missing in a project configuration file (issue #3279)

### 4.1.0 (2019-11-07)

- PIO Check – automated code analysis without hassle:

  - Potential NULL pointer dereferences

  - Possible indexing beyond array bounds

  - Suspicious assignments

  - Reads of potentially uninitialized objects

  - Unused variables or functions

  - Out of scope memory usage.

- PlatformIO Home 3.0:

  - Project Inspection

  - Static Code Analysis

  - Firmware File Explorer

  - Firmware Memory Inspection

  - Firmware Sections & Symbols Viewer.

- Added support for Build Middlewares: configure custom build flags per specific file, skip any build nodes from a framework, replace build file with another on-the-fly, etc.

- Extend project environment configuration in “platformio.ini” with other sections using a new extends option (issue #2953)

- Generate `.ccls` LSP file for Emacs cross references, hierarchies, completion and semantic highlighting

- Added `--no-ansi` flag for PIO Core to disable ANSI control characters

- Added `--shutdown-timeout` option to PIO Home Server

- Fixed an issue with project generator for CLion IDE when 2 environments were used (issue #2824)

- Fixed default PIO Unified Debugger configuration for J-Link probe

- Fixed an issue when configuration file options partly ignored when using custom `--project-conf` (issue #3034)

- Fixed an issue when installing a package using custom Git tag and submodules were not updated correctly (issue #3060)

- Fixed an issue with linking process when `$LDSCRIPT` contains a space in path

- Fixed security issue when extracting items from TAR archive (issue #2995)

- Fixed an issue with project generator when `src_build_flags` were not respected (issue #3137)

- Fixed an issue when booleans in “platformio.ini” are not parsed properly (issue #3022)

- Fixed an issue with invalid encoding when generating project for Visual Studio (issue #3183)

- Fixed an issue when Project Config Parser does not remove in-line comments when Python 3 is used (issue #3213)

- Fixed an issue with a GCC Linter for PlatformIO IDE for Atom (issue #3218)

### 4.0.3 (2019-08-30)

- Added support for multi-environment PlatformIO project for CLion IDE (issue #2824)

- Generate `.ccls` LSP file for Vim cross references, hierarchies, completion and semantic highlighting (issue #2952)

- Added support for PLATFORMIO_DISABLE_COLOR system environment variable which disables color ANSI-codes in a terminal output (issue #2956)

- Updated SCons tool to 3.1.1

- Remove ProjectConfig cache when “platformio.ini” was modified outside

- Fixed an issue with PIO Unified Debugger on Windows OS when debug server is piped

- Fixed an issue when –upload-port CLI flag does not override declared upload_port option in “platformio.ini” (Project Configuration File)

### 4.0.2 (2019-08-23)

- Fixed an issue with a broken LDF when checking for framework compatibility (issue #2940)

### 4.0.1 (2019-08-22)

- Print debug tool name for the active debugging session

- Do not shutdown PIO Home Server for “upgrade” operations (issue #2784)

- Improved computing of project check sum (structure, configuration) and avoid unnecessary rebuilding

- Improved printing of tabulated results

- Automatically normalize file system paths to UNIX-style for Project Generator (issue #2857)

- Ability to set “databaseFilename” for VSCode and C/C++ extension (issue #2825)

- Renamed “enable_ssl” setting to strict_ssl

- Fixed an issue with incorrect escaping of Windows slashes when using PIO Unified Debugger and “piped” openOCD

- Fixed an issue when “debug”, “home”, “run”, and “test” commands were not shown in “platformio –help” CLI

- Fixed an issue with PIO Home’s “No JSON object could be decoded” (issue #2823)

- Fixed an issue when library.json had priority over project configuration for LDF (issue #2867)

### 4.0.0 (2019-07-10)

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` and `srcDir` 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

- Build System

  - Switched to workspace `.pio/build` folder for build artifacts instead of `.pioenvs`

  - Switch between Build Configurations (`release` and `debug`) 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` in `build_flags` does not remove macro previously defined via `-D` flag (issue #2508)

- 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)

- 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)

## PlatformIO Core 3

### 3.6.7 (2019-04-23)

- PIO Unified Debugger: improved debugging in `debug_load_mode = modified` and fixed an issue with useless project rebuilding

- Project Generator: fixed a VSCode C/C++’s “Cannot find” warning when CPPPATH folder does not exist

- Fixed an “IndexError: list index out of range” for Arduino sketch preprocessor (issue #2268)

- Fixed an issue when invalid “env_default” in “platformio.ini” (Project Configuration File) results into unhandled errors (issue #2265)

### 3.6.6 (2019-03-29)

- Project Generator: fixed a warning “Property !!! WARNING !!! is not allowed” for VSCode (issue #2243)

- Fixed an issue when PlatformIO Build System does not pick up “mbed_lib.json” files from libraries (issue #2164)

- Fixed an error with conflicting declaration of a prototype (Arduino sketch preprocessor)

- Fixed “FileExistsError” when platformio ci command is used in pair with `--keep-build-dir` option

- Fixed an issue with incorrect order of project “include” and “src” paths in `CPPPATH` (issue #1914)

### 3.6.5 (2019-03-07)

- Project Generator: added new targets for CLion IDE “BUILD_VERBOSE” and “MONITOR” (serial port monitor) (issue #359)

- Fixed an issue with slow updating of PlatformIO Core packages on Windows

- Fixed an issue when platformio ci recompiles project if `--keep-build-dir` option is passed (issue #2109)

- Fixed an issue when `$PROJECT_HASH` template was not expanded for the other directory `***_dir` options in “platformio.ini” (Project Configuration File) (issue #2170)

### 3.6.4 (2019-01-23)

- Improved Project Generator for IDEs:

  - Use full path to PlatformIO CLI when generating a project (issue #1674)

  - CLion: Improved project portability using “${CMAKE_CURRENT_LIST_DIR}” instead of full path

  - Eclipse: Provide language standard to a project C/C++ indexer (issue #1010)

- Fixed an issue with incorrect detecting of compatibility (LDF) between generic library and Arduino or ARM mbed frameworks

- Fixed “Runtime Error: Dictionary size changed during iteration” (issue #2003)

- Fixed an error “Could not extract item…” when extracting TAR archive with symbolic items on Windows platform (issue #2015)

### 3.6.3 (2018-12-12)

- Ignore `*.asm` and `*.ASM` files when building Arduino-based library (compatibility with Arduino builder)

- Fixed spurious project’s “Problems” for PlatformIO IDE for VSCode when ARM mbed framework is used

- Fixed an issue with a broken headers list when generating “.clang_complete” for Emacs (issue #1960)

### 3.6.2 (2018-11-29)

- Improved IntelliSense for PlatformIO IDE for VSCode via passing extra compiler information for C/C++ Code Parser (resolves issues with spurious project’s “Problems”)

- Fixed an issue with VSCode IntelliSense warning about the missed headers located in include folder

- Fixed incorrect wording when initializing/updating project

- Fixed an issue with incorrect order for library dependencies `CPPPATH` (issue #1914)

- Fixed an issue when Library Dependency Finder (LDF) does not handle project src_filter (issue #1905)

- Fixed an issue when Library Dependency Finder (LDF) finds spurious dependencies in `chain+` and `deep+` modes (issue #1930)

### 3.6.1 (2018-10-29)

- Generate an include and test directories with a README file when initializing a new project

- Support in-line comments for multi-line value (`lib_deps`, `build_flags`, etc) in “platformio.ini” (Project Configuration File)

- Added `$PROJECT_HASH` template variable for build_dir. One of the use cases is setting a global storage for project artifacts using PLATFORMIO_BUILD_DIR system environment variable. For example, `/tmp/pio-build/$PROJECT_HASH` (Unix) or `$[sysenv.TEMP}/pio-build/$PROJECT_HASH` (Windows)

- Improved a loading speed of PIO Home “Recent News”

- Improved PIO Unified Debugger for “mbed” framework and fixed issue with missed local variables

- Introduced “Release” and “Debug” Build Configurations

- Build project in “Debug Mode” including debugging information with a new `debug` target using platformio run command or targets option in `platformio.ini`. The last option allows avoiding project rebuilding between “Run/Debug” modes. (issue #1833)

- Process `build_unflags` for the cloned environment when building a static library

- Report on outdated 99-platformio-udev.rules (issue #1823)

- Show a valid error when the Internet is off-line while initializing a new project (issue #1784)

- Do not re-create “.gitignore” and “.travis.yml” files if they were removed from a project

- Fixed an issue when dynamic build flags were not handled correctly (issue #1799)

- Fixed an issue when `pio run -t monitor` always uses the first `monitor_port` even with multiple environments (issue #1841)

- Fixed an issue with broken includes when generating `.clang_complete` and space is used in a path (issue #1873)

- Fixed an issue with incorrect handling of a custom package name when using platformio lib install or platformio platform install commands

### 3.6.0 (2018-08-06)

- Program Memory Usage

  - Print human-readable memory usage information after a build and before uploading

  - Print detailed memory usage information with “sections” and “addresses” in verbose mode

  - Check maximum allowed “program” and “data” sizes before uploading/programming (issue #1412)

- PIO Unit Testing:

  - Documented Project Shared Code

  - Force building of project source code using test_build_project_src option

  - Fixed missed `UNIT_TEST` macro for unit test components/libraries

- Check package structure after unpacking and raise error when antivirus tool blocks PlatformIO package manager (issue #1462)

- Lock interprocess requests to PlatformIO Package Manager for install/uninstall operations (issue #1594)

- Fixed an issue with PIO Remote when upload process depends on the source code of a project framework

- Fixed an issue when `srcFilter` field in library.json breaks a library build (issue #1735)

### 3.5.4 (2018-07-03)

- Improved removing of default build flags using build_unflags option (issue #1712)

- Export `LIBS`, `LIBPATH`, and `LINKFLAGS` data from project dependent libraries to the global build environment

- Don’t export `CPPPATH` data of project dependent libraries to framework’s build environment (issue #1665)

- Handle “architectures” data from “library.properties” manifest in lib_compat_mode = strict

- Added workaround for Python SemVer package’s issue #61 with caret range and pre-releases

- Replaced conflicted “env” pattern by “sysenv” for “platformio.ini” Dynamic Variables” (issue #1705)

- Removed “date&time” when processing project with platformio run command (issue #1343)

- Fixed issue with invalid LD script if path contains space

- Fixed preprocessor for Arduino sketch when function returns certain type (issue #1683)

- Fixed issue when platformio lib uninstall removes initial source code (issue #1023)

### 3.5.3 (2018-06-01)

- PlatformIO Home - interact with PlatformIO ecosystem using modern and cross-platform GUI:

  - “Recent News” block on “Welcome” page

  - Direct import of development platform’s example

- Simplify configuration for PIO Unit Testing: separate main program from a test build process, drop requirement for `#ifdef UNIT_TEST` guard

- Override any option from board manifest in “platformio.ini” (Project Configuration File) (issue #1612)

- Configure a custom path to SVD file using debug_svd_path option

- Custom project description which will be used by PlatformIO Home

- Updated Unity tool to 2.4.3

- Improved support for Black Magic Probe in “uploader” mode

- Renamed “monitor_baud” option to “monitor_speed”

- Fixed issue when a custom lib_dir was not handled correctly (issue #1473)

- Fixed issue with useless project rebuilding for case insensitive file systems (Windows)

- Fixed issue with `build_unflags` option when a macro contains value (e.g., `-DNAME=VALUE`)

- Fixed issue which did not allow to override runtime build environment using extra POST script

- Fixed “RuntimeError: maximum recursion depth exceeded” for library manager (issue #1528)

### 3.5.2 (2018-03-13)

- PlatformIO Home - interact with PlatformIO ecosystem using modern and cross-platform GUI:

  - Multiple themes (Dark & Light)

  - Ability to specify a name for new project

- Control PIO Unified Debugger and its firmware loading mode using debug_load_mode option

- Added aliases (off, light, strict) for LDF Compatibility Mode

- Search for a library using PIO Library Registry ID `id:X` (e.g. `pio lib search id:13`)

- Show device system information (MCU, Frequency, RAM, Flash, Debugging tools) in a build log

- Show all available upload protocols before firmware uploading in a build log

- Handle “os.mbed.com” URL as a Mercurial (hg) repository

- Improved support for old mbed libraries without manifest

- Fixed project generator for Qt Creator IDE (issue #1303, issue #1323)

- Mark project source and library directories for CLion IDE (issue #1359, issue #1345, issue #897)

- Fixed issue with duplicated “include” records when generating data for IDE (issue #1301)

### 3.5.1 (2018-01-18)

- New `test_speed` option to control a communication baudrate/speed between PIO Unit Testing engine and a target device (issue #1273)

- Show full library version in “Library Dependency Graph” including VCS information (issue #1274)

- Configure a custom firmware/program name in build directory (example)

- Renamed `envs_dir` option to `build_dir` in “platformio.ini” (Project Configuration File)

- Refactored code without “arrow” dependency (resolve issue with “ImportError: No module named backports.functools_lru_cache”)

- Improved support of PIO Unified Debugger for Eclipse Oxygen

- Improved a work in off-line mode

- Fixed project generator for CLion and Qt Creator IDE (issue #1299)

- Fixed PIO Unified Debugger for mbed framework

- Fixed library updates when a version is declared in VCS format (not SemVer)

### 3.5.0 (2017-12-28)

- PlatformIO Home - interact with PlatformIO ecosystem using modern and cross-platform GUI:

  - Library Manager:

    - Search for new libraries in PlatformIO Registry

    - “1-click” library installation, per-project libraries, extra storages

    - List installed libraries in multiple storages

    - List built-in libraries (by frameworks)

    - Updates for installed libraries

    - Multiple examples, trending libraries, and more.

  - PlatformIO Projects

  - PIO Account

  - Development platforms, frameworks and board explorer

  - Device Manager: serial, logical, and multicast DNS services

- Integration with Jenkins CI

- New include folder for project’s header files (issue #1107)

- Depend on development platform using VCS URL (Git, Mercurial and Subversion) instead of a name in “platformio.ini” (Project Configuration File). Drop support for `*_stage` dev/platform names (use VCS URL instead).

- Reinstall/redownload package with a new `-f, --force` option for platformio lib install and platformio platform install commands (issue #778)

- Handle missed dependencies and provide a solution based on PlatformIO Library Registry (issue #781)

- New setting projects_dir that allows to override a default PIO Home Projects location (issue #1161)

- Library Dependency Finder (LDF):

  - Search for dependencies used in PIO Unit Testing (issue #953)

  - Parse library source file in pair with a header when they have the same name (issue #1175)

  - Handle library dependencies defined as VCS or SemVer in “platformio.ini” (Project Configuration File) (issue #1155)

  - Added option to configure library Compatible Mode using library.json

- New options for platformio device list command:

  - `--serial` list available serial ports (default)

  - `--logical` list logical devices

  - `--mdns` discover multicast DNS services (issue #463)

- Fixed platforms, packages, and libraries updating behind proxy (issue #1061)

- Fixed missing toolchain include paths for project generator (issue #1154)

- Fixed “Super-Quick (Mac / Linux)” installation in “get-platformio.py” script (issue #1017)

- Fixed “get-platformio.py” script which hangs on Windows 10 (issue #1118)

- Other bug fixes and performance improvements

### 3.4.1 (2017-08-02)

- Pre/Post extra scripting for advanced control of PIO Build System (issue #891)

- New lib_archive option to control library archiving and linking behavior (issue #993)

- Add “inc” folder automatically to CPPPATH when “src” is available (works for project and library) (issue #1003)

- Use a root of library when filtering source code using library.json and `srcFilter` field

- Added `monitor_*` options to white-list for “platformio.ini” (Project Configuration File) (issue #982)

- Do not ask for board ID when initialize project for desktop platform

- Handle broken PIO Core state and create new one

- Fixed an issue with a custom transport for PIO Unit Testing when multiple tests are present

- Fixed an issue when can not upload firmware to SAM-BA based board (Due)

### 3.4.0 (2017-06-26)

- PIO Unified Debugger

  - “1-click” solution, zero configuration

  - Support for 100+ embedded boards

  - Multiple architectures and development platforms

  - Windows, MacOS, Linux (+ARMv6-8)

  - Built-in into PlatformIO IDE for Atom and PlatformIO IDE for VScode

  - Integration with Eclipse and Sublime Text

- Filter PIO Unit Testing tests using a new `test_filter` option in “platformio.ini” (Project Configuration File) or platformio test –filter command (issue #934)

- Custom `test_transport` for PIO Unit Testing Engine

- Configure Serial Port Monitor in “platformio.ini” (Project Configuration File) (issue #787)

- New monitor target which allows to launch Serial Monitor automatically after successful “build” or “upload” operations (issue #788)

- Project generator for VIM

- Multi-line support for the different options in “platformio.ini” (Project Configuration File), such as: `build_flags`, `build_unflags`, etc. (issue #889)

- Handle dynamic `SRC_FILTER` environment variable from library.json extra script

- Notify about multiple installations of PIO Core (issue #961)

- Improved auto-detecting of mbed-enabled media disks

- Automatically update Git-submodules for development platforms and libraries that were installed from repository

- Add support for `.*cc` extension (issue #939)

- Handle `env_default` in “platformio.ini” (Project Configuration File) when re-initializing a project (issue #950)

- Use root directory for PIO Home when path contains non-ascii characters (issue #951, issue #952)

- Don’t warn about known `boards_dir` option (pull #949)

- Escape non-valid file name characters when installing a new package (library) (issue #985)

- Fixed infinite dependency installing when repository consists of multiple libraries (issue #935)

- Fixed linter error “unity.h does not exist” for Unit Testing (issue #947)

- Fixed issue when Library Dependency Finder (LDF) does not handle custom `src_dir` (issue #942)

- Fixed cloning a package (library) from a private Git repository with custom user name and SSH port (issue #925)

### 3.3.1 (2017-05-27)

- Hotfix for recently updated Python Requests package (2.16.0)

### 3.3.0 (2017-03-27)

- PlatformIO Library Registry statistics with new pio lib stats command

  - Recently updated and added libraries

  - Recent and popular keywords

  - Featured libraries (today, week, month)

- List built-in libraries based on development platforms with a new pio lib builtin command

- Show detailed info about a library using pio lib show command (issue #430)

- List supported frameworks, SDKs with a new pio platform frameworks command

- Visual Studio Code extension for PlatformIO (issue #619)

- Added new options `--no-reset`, `--monitor-rts` and `--monitor-dtr` to pio test command (allows to avoid automatic board’s auto-reset when gathering test results)

- Added support for templated methods in `*.ino to *.cpp` converter (pull #858)

- Package version as “Repository URL” in manifest of development version (`"version": "https://github.com/user/repo.git"`)

- Produce less noisy output when `-s/--silent` options are used for platformio init and platformio run commands (issue #850)

- Use C++11 by default for CLion IDE based projects (pull #873)

- Escape project path when Glob matching is used

- Do not overwrite project configuration variables when system environment variables are set

- Handle dependencies when installing non-registry package/library (VCS, archive, local folder) (issue #913)

- Fixed package installing with VCS branch for Python 2.7.3 (issue #885)

### 3.2.1 (2016-12-07)

- Changed default LDF Mode from `chain+` to `chain`

### 3.2.0 (2016-12-07)

- PIO Remote™. Your devices are always with you!

  - Over-The-Air (OTA) Device Manager

  - OTA Serial Port Monitor

  - OTA Firmware Updates

  - Continuous Deployment

  - Continuous Delivery

- Integration with Cloud IDEs

  - Cloud9

  - Codeanywhere

  - Eclipse Che

- PIO Account and PLATFORMIO_AUTH_TOKEN environment variable for CI systems (issue #808, issue #467)

- Inject system environment variables to configuration settings in “platformio.ini” (Project Configuration File) (issue #792)

- Custom boards per project with `boards_dir` option in “platformio.ini” (Project Configuration File) (issue #515)

- Unix shell-style wildcards for upload_port (issue #839)

- Refactored Library Dependency Finder (LDF) C/C++ Preprocessor for conditional syntax (`#ifdef`, `#if`, `#else`, `#elif`, `#define`, etc.) (issue #837)

- Added new LDF Modes: `chain+` and `deep+` and set `chain+` as default

- Added global `lib_extra_dirs` option to `[platformio]` section for “platformio.ini” (Project Configuration File) (issue #842)

- Enabled caching by default for API requests and Library Manager (see enable_cache setting)

- Native integration with VIM/Neovim using neomake-platformio plugin

- Changed a default exit combination for Device Monitor from `Ctrl+]` to `Ctrl+C`

- Improved detecting of ARM mbed media disk for uploading

- Improved Project Generator for CLion IDE when source folder contains nested items

- Improved handling of library dependencies specified in `library.json` manifest (issue #814)

- Improved Library Dependency Finder (LDF) for circular dependencies

- Show vendor version of a package for platformio platform show command (issue #838)

- Fixed unable to include SSH user in `lib_deps` repository url (issue #830)

- Fixed merging of “.gitignore” files when re-initialize project (issue #848)

- Fixed issue with `PATH` auto-configuring for upload tools

- Fixed `99-platformio-udev.rules` checker for Linux OS

### 3.1.0 (2016-09-19)

- New! Dynamic variables/templates for “platformio.ini” (Project Configuration File) (issue #705)

- Summary about processed environments (issue #777)

- Implemented LocalCache system for API and improved a work in off-line mode

- Improved Project Generator when custom `--project-option` is passed to platformio init command

- Deprecated `lib_force` option, please use lib_deps instead

- Return valid exit code from `plaformio test` command

- Fixed Project Generator for CLion IDE using Windows OS (issue #785)

- Fixed SSL Server-Name-Indication for Python < 2.7.9 (issue #774)

### 3.0.1 (2016-09-08)

- Disabled temporary SSL for PlatformIO services (issue #772)

### 3.0.0 (2016-09-07)

- PlatformIO Plus

  - Local and Embedded Unit Testing (issue #408, issue #519)

- Decentralized Development Platforms

  - Development platform manifest “platform.json” and open source development platforms

  - Semantic Versioning for platform commands, development platforms and dependent packages

  - Custom package repositories

  - External embedded board configuration files, isolated build scripts (issue #479)

  - Embedded Board compatibility with more than one development platform (issue #456)

- Library Manager 3.0

  - Project dependencies per build environment using lib_deps option (issue #413)

  - Semantic Versioning for library commands and dependencies (issue #410)

  - Multiple library storages: Project’s Local, PlatformIO’s Global or Custom (issue #475)

  - Install library by name (issue #414)

  - Depend on a library using VCS URL (GitHub, Git, ARM mbed code registry, Hg, SVN) (issue #498)

  - Strict search for library dependencies (issue #588)

  - Allowed `library.json` to specify sources other than PlatformIO’s Repository (issue #461)

  - Search libraries by headers/includes with `platformio lib search --header` option

- New Intelligent Library Build System

  - Library Dependency Finder that interprets C/C++ Preprocessor conditional macros with deep search behavior

  - Check library compatibility with project environment before building (issue #415)

  - Control Library Dependency Finder for compatibility using lib_compat_mode option

  - Custom library storages/directories with lib_extra_dirs option (issue #537)

  - Handle extra build flags, source filters and build script from library.json (issue #289)

  - Allowed to disable library archiving (`*.ar`) (issue #719)

  - Show detailed build information about dependent libraries (issue #617)

  - Support for the 3rd party manifests (Arduino IDE “library.properties” and ARM mbed “module.json”)

- Removed `enable_prompts` setting. Now, all PlatformIO CLI is non-blocking!

- Switched to SSL PlatformIO API

- Renamed `platformio serialports` command to `platformio device`

- Build System: Attach custom Before/Pre and After/Post actions for targets (issue #542)

- Allowed passing custom project configuration options to `platformio ci` and `platformio init` commands using `-O, --project-option`.

- Print human-readable information when processing environments without `-v, --verbose` option (issue #721)

- Improved INO to CPP converter (issue #659, issue #765)

- Added `license` field to library.json (issue #522)

- Warn about unknown options in project configuration file `platformio.ini` (issue #740)

- Fixed wrong line number for INO file when `#warning` directive is used (issue #742)

- Stopped supporting Python 2.6

## PlatformIO Core 2

### 2.11.2 (2016-08-02)

- Improved support for Microchip PIC32 development platform and ChipKIT boards (issue #438)

- Added support for Pinoccio Scout board (issue #52)

- Added support for Teensy USB Features (HID, SERIAL_HID, DISK, DISK_SDFLASH, MIDI, etc.) (issue #722)

- Switched to built-in GCC LwIP library for Espressif development platform

- Added support for local `--echo` for Serial Port Monitor (issue #733)

- Updated `udev` rules for the new STM32F407DISCOVERY boards (issue #731)

- Implemented firmware merging with base firmware for Nordic nRF51 development platform (issue #500, issue #533)

- Fixed Project Generator for ESP8266 and ARM mbed based projects (resolves incorrect linter errors)

- Fixed broken LD Script for Element14 chipKIT Pi board (issue #725)

- Fixed firmware uploading to Atmel SAMD21-XPRO board using ARM mbed framework (issue #732)

### 2.11.1 (2016-07-12)

- Added support for Arduino M0, M0 Pro and Tian boards (issue #472)

- Added support for Microchip chipKIT Lenny board

- Updated Microchip PIC32 Arduino framework to v1.2.1

- Documented uploading of EEPROM data (from EEMEM directive)

- Added `Rebuild C/C++ Project Index` target to CLion and Eclipse IDEs

- Improved project generator for CLion IDE

- Added `udev` rules for OpenOCD CMSIS-DAP adapters (issue #718)

- Auto-remove project cache when PlatformIO is upgraded

- Keep user changes for `.gitignore` file when re-generate/update project data

- Ignore `[platformio]` section from custom project configuration file when platformio ci –project-conf command is used

- Fixed missed `--boot` flag for the firmware uploader for ATSAM3X8E Cortex-M3 MCU based boards (Arduino Due, etc) (issue #710)

- Fixed missing trailing `\` for the source files list when generate project for Qt Creator IDE (issue #711)

- Split source files to `HEADERS` and `SOURCES` when generate project for Qt Creator IDE (issue #713)

### 2.11.0 (2016-06-28)

- New ESP8266-based boards: Generic ESP8285 Module, Phoenix 1.0 & 2.0, WifInfo

- Added support for Arduino M0 Pro board (issue #472)

- Added support for Arduino MKR1000 board (issue #620)

- Added support for Adafruit Feather M0, SparkFun SAMD21 and SparkFun SAMD21 Mini Breakout boards (issue #520)

- Updated Arduino ESP8266 core for Espressif platform to 2.3.0

- Better removing unnecessary flags using `build_unflags` option (issue #698)

- Fixed issue with `platformio init --ide` command for Python 2.6

### 2.10.3 (2016-06-15)

- Fixed issue with `platformio init --ide` command

### 2.10.2 (2016-06-15)

- Added support for ST Nucleo L031K6 board to ARM mbed framework

- Process `build_unflags` option for ARM mbed framework

- Updated Intel ARC32 Arduino framework to v1.0.6 (issue #695)

- Improved a check of program size before uploading to the board

- Fixed issue with ARM mbed framework `-u _printf_float` and `-u _scanf_float` when parsing `$LINKFLAGS`

- Fixed issue with ARM mbed framework and extra includes for the custom boards, such as Seeeduino Arch Pro

### 2.10.1 (2016-06-13)

- Re-submit a package to PyPI

### 2.10.0 (2016-06-13)

- Added support for emonPi, the OpenEnergyMonitor system (issue #687)

- Added support for SPL framework for STM32F0 boards (issue #683)

- Added support for Arduboy DevKit, the game system the size of a credit card

- Updated ARM mbed framework package to v121

- Check program size before uploading to the board (issue #689)

- Improved firmware uploading to Arduino Leonardo based boards (issue #691)

- Fixed issue with `-L relative/path` when parsing `build_flags` (issue #688)

### 2.9.4 (2016-06-04)

- Show `udev` warning only for the Linux OS while uploading firmware

### 2.9.3 (2016-06-03)

- Added support for Arduboy, the game system the size of a credit card

- Updated 99-platformio-udev.rules for Linux OS

- Refactored firmware uploading to the embedded boards with SAM-BA bootloader

### 2.9.2 (2016-06-02)

- Simplified Continuous Integration with AppVeyor (issue #671)

- Automatically add source directory to `CPPPATH` of Build System

- Added support for Silicon Labs SLSTK3401A (Pearl Gecko) and MultiTech mDot F411 ARM mbed based boards

- Added support for MightyCore ATmega8535 board (issue #585)

- Added `stlink` as the default uploader for STM32 Discovery boards (issue #665)

- Use HTTP mirror for Package Manager in a case with SSL errors (issue #645)

- Improved firmware uploading to Arduino Leonardo/Due based boards

- Fixed bug with `env_default` when `pio run -e` is used

- Fixed issue with `src_filter` option for Windows OS (issue #652)

- Fixed configuration data for TI LaunchPads based on msp430fr4133 and msp430fr6989 MCUs (issue #676)

- Fixed issue with ARM mbed framework and multiple definition errors on FRDM-KL46Z board (issue #641)

- Fixed issue with ARM mbed framework when abstract class breaks compile for LPC1768 (issue #666)

### 2.9.1 (2016-04-30)

- Handle prototype pointers while converting `*.ino` to `.cpp` (issue #639)

### 2.9.0 (2016-04-28)

- Project generator for CodeBlocks IDE (issue #600)

- New Lattice iCE40 FPGA development platform with support for Lattice iCEstick FPGA Evaluation Kit and BQ IceZUM Alhambra FPGA (issue #480)

- New Intel ARC 32-bit development platform with support for Arduino/Genuino 101 board (issue #535)

- New Microchip PIC32 development platform with support for 20+ different PIC32 based boards (issue #438)

- New RTOS and build Framework named Simba (issue #412)

- New boards for ARM mbed framework: ST Nucleo F410RB, ST Nucleo L073RZ and BBC micro:bit

- Added support for Arduino.Org boards: Arduino Leonardo ETH, Arduino Yun Mini, Arduino Industrial 101 and Linino One (issue #472)

- Added support for Generic ATTiny boards: ATTiny13, ATTiny24, ATTiny25, ATTiny45 and ATTiny85 (issue #636)

- Added support for MightyCore boards: ATmega1284, ATmega644, ATmega324, ATmega164, ATmega32, ATmega16 and ATmega8535 (issue #585)

- Added support for TI MSP430 boards: TI LaunchPad w/ msp430fr4133 and TI LaunchPad w/ msp430fr6989

- Updated Arduino core for Espressif platform to 2.2.0 (issue #627)

- Updated native SDK for ESP8266 to 1.5 (issue #366)

- PlatformIO Library Registry in JSON format! Implemented `--json-output` and `--page` options for platformio lib search command (issue #604)

- Allowed to specify default environments env_default which should be processed by default with `platformio run` command (issue #576)

- Allowed to unflag(remove) base/initial flags using build_unflags option (issue #559)

- Allowed multiple VID/PID pairs when detecting serial ports (issue #632)

- Automatically add `-DUSB_MANUFACTURER` with vendor’s name (issue #631)

- Automatically reboot Teensy board after upload when Teensy Loader GUI is used (issue #609)

- Refactored source code converter from `*.ino` to `*.cpp` (issue #610)

- Forced `-std=gnu++11` for Atmel SAM development platform (issue #601)

- Don’t check OS type for ARM mbed-enabled boards and ST STM32 development platform before uploading to disk (issue #596)

- Fixed broken compilation for Atmel SAMD based boards except Arduino Due (issue #598)

- Fixed firmware uploading using serial port with spaces in the path

- Fixed cache system when project’s root directory is used as `src_dir` (issue #635)

### 2.8.6 (2016-03-22)

- Launched PlatformIO Community Forums (issue #530)

- Added support for ARM mbed-enabled board Seed Arch Max (STM32F407VET6) (issue #572)

- Improved DNS lookup for PlatformIO API

- Updated Arduino Wiring-based framework to the latest version for Atmel AVR/SAM development platforms

- Updated “Teensy Loader CLI” and fixed uploading of large .hex files (issue #568)

- Updated the support for Sanguino Boards (issue #586)

- Better handling of used boards when re-initialize/update project

- Improved support for non-Unicode user profiles for Windows OS

- Disabled progress bar for download operations when prompts are disabled

- Fixed multiple definition errors for ST STM32 development platform and ARM mbed framework (issue #571)

- Fixed invalid board parameters (reset method and baudrate) for a few ESP8266 based boards

- Fixed “KeyError: ‘content-length’” in PlatformIO Download Manager (issue #591)

### 2.8.5 (2016-03-07)

- Project generator for NetBeans IDE (issue #541)

- Created package for Homebrew Mac OS X Package Manager: `brew install platformio` (issue #395)

- Updated Arduino core for Espressif platform to 2.1.0 (issue #544)

- Added support for the ESP8266 ESP-07 board to Espressif (issue #527)

- Improved handling of String-based `CPPDEFINES` passed to extra `build_flags` (issue #526)

- Generate appropriate project for CLion IDE and CVS (issue #523)

- Use `src_dir` directory from Project Configuration File platformio.ini when initializing project otherwise create base `src` directory (issue #536)

- Fixed issue with incorrect handling of user’s build flags where the base flags were passed after user’s flags to GCC compiler (issue #528)

- Fixed issue with Project Generator when optional build flags were passed using system environment variables: PLATFORMIO_BUILD_FLAGS or PLATFORMIO_BUILD_SRC_FLAGS

- Fixed invalid detecting of compiler type (issue #550)

- Fixed issue with updating package which was deleted manually by user (issue #555)

- Fixed incorrect parsing of GCC `-include` flag (issue #552)

### 2.8.4 (2016-02-17)

- Added support for the new ESP8266-based boards (ESPDuino, ESP-WROOM-02, ESPresso Lite 1.0 & 2.0, SparkFun ESP8266 Thing Dev, ThaiEasyElec ESPino) to Espressif development platform

- Added `board_f_flash` option to Project Configuration File platformio.ini which allows to specify custom flash chip frequency for Espressif development platform (issue #501)

- Added `board_flash_mode` option to Project Configuration File platformio.ini which allows to specify custom flash chip mode for Espressif development platform

- Handle new environment variables PLATFORMIO_UPLOAD_PORT and PLATFORMIO_UPLOAD_FLAGS (issue #518)

- Fixed issue with `CPPDEFINES` which contain space and break PlatformIO IDE Linter (IDE issue #34)

- Fixed unable to link C++ standard library to Espressif platform build (issue #503)

- Fixed issue with pointer (`char* myfunc()`) while converting from `*.ino` to `*.cpp` (issue #506)

### 2.8.3 (2016-02-02)

- Better integration of PlatformIO Builder with PlatformIO IDE Linter

- Fixed issue with removing temporary file while converting `*.ino` to `*.cpp`

- Fixed missing dependency (mbed framework) for Atmel SAM development platform (issue #487)

### 2.8.2 (2016-01-29)

- Corrected RAM size for NXP LPC1768 based boards (issue #484)

- Exclude only `test` and `tests` folders from build process

- Reverted `-Wl,-whole-archive` hook for ST STM32 and mbed

### 2.8.1 (2016-01-29)

- Fixed a bug with Project Initialization in PlatformIO IDE

### 2.8.0 (2016-01-29)

- PlatformIO IDE for Atom (issue #470)

- Added `pio` command line alias for `platformio` command (issue #447)

- Added SPL-Framework support for Nucleo F401RE board (issue #453)

- Added `upload_resetmethod` option to Project Configuration File platformio.ini which allows to specify custom upload reset method for Espressif development platform (issue #444)

- Allowed to force output of color ANSI-codes or to disable progress bar even if the output is a `pipe` (not a `tty`) using Environment variables (issue #465)

- Set 1Mb SPIFFS for Espressif boards by default (issue #458)

- Exclude `test*` folder by default from build process

- Generate project for IDEs with information about installed libraries

- Fixed builder for mbed framework and ST STM32 platform

### 2.7.1 (2016-01-06)

- Initial support for Arduino Zero board (issue #356)

- Added support for completions to Atom text editor using `.clang_complete`

- Generate default targets for supported IDE (CLion, Eclipse IDE, Emacs, Sublime Text, VIM): Build, Clean, Upload, Upload SPIFFS image, Upload using Programmer, Update installed platforms and libraries (issue #427)

- Updated Teensy Arduino Framework to 1.27 (issue #434)

- Fixed uploading of EEPROM data using `uploadeep` target for Atmel AVR development platform

- Fixed project generator for CLion IDE (issue #422)

- Fixed package `shasum` validation on Mac OS X 10.11.2 (issue #429)

- Fixed CMakeLists.txt `add_executable` has only one source file (issue #421)

### 2.7.0 (2015-12-30)

Happy New Year!

- Moved SCons to PlatformIO packages. PlatformIO does not require SCons to be installed in your system. Significantly simplified installation process of PlatformIO. `pip install platformio` rocks!

- Implemented uploading files to file system of ESP8266 SPIFFS (including OTA) (issue #382)

- Added support for the new Adafruit boards Bluefruit Micro and Feather (issue #403)

- Added support for RFDuino (issue #319)

- Project generator for Emacs text editor (pull #404)

- Updated Arduino framework for Atmel AVR development platform to 1.6.7

- Documented firmware uploading for Atmel AVR development platform using Programmers: AVR ISP, AVRISP mkII, USBtinyISP, USBasp, Parallel Programmer and Arduino as ISP

- Fixed issue with current Python interpreter for Python-based tools (issue #417)

### 2.6.3 (2015-12-21)

- Restored support for Espressif ESP8266 ESP-01 1MB board (ready for OTA)

- Fixed invalid ROM size for ESP8266-based boards (issue #396)

### 2.6.2 (2015-12-21)

- Removed `SCons` from requirements list. PlatformIO will try to install it automatically, otherwise users need to install it manually

- Fixed `ChunkedEncodingError` when SF connection is broken (issue #356)

### 2.6.1 (2015-12-18)

- Added support for the new ESP8266-based boards (SparkFun ESP8266 Thing, NodeMCU 0.9 & 1.0, Olimex MOD-WIFI-ESP8266(-DEV), Adafruit HUZZAH ESP8266, ESPino, SweetPea ESP-210, WeMos D1, WeMos D1 mini) to Espressif development platform

- Created public platformio-pkg-ldscripts repository for LD scripts. Moved common configuration for ESP8266 MCU to `esp8266.flash.common.ld` (issue #379)

- Improved documentation for Espressif development platform: OTA update, custom Flash Size, Upload Speed and CPU frequency

- Fixed reset method for Espressif NodeMCU (ESP-12E Module) (issue #380)

- Fixed issue with code builder when build path contains spaces (issue #387)

- Fixed project generator for Eclipse IDE and “duplicate path entries found in project path” (issue #383)

### 2.6.0 (2015-12-15)

- Install only required packages depending on build environment (issue #308)

- Added support for Raspberry Pi WiringPi framework (issue #372)

- Implemented Over The Air (OTA) upgrades for Espressif development platform. (issue #365)

- Updated CMSIS framework and added CMSIS support for Nucleo F401RE board (issue #373)

- Added support for Espressif ESP8266 ESP-01-1MB board (ready for OTA)

- Handle `upload_flags` option in platformio.ini (issue #368)

- Improved PlatformIO installation on the Mac OS X El Capitan

### 2.5.0 (2015-12-08)

- Improved code builder for parallel builds (up to 4 times faster than before)

- Generate .travis.yml CI and .gitignore files for embedded projects by default (issue #354)

- Removed prompt with “auto-uploading” from platformio init command and added `--enable-auto-uploading` option (issue #352)

- Fixed incorrect behaviour of platformio serialports monitor in pair with PySerial 3.0

### 2.4.1 (2015-12-01)

- Restored `PLATFORMIO` macros with the current version

### 2.4.0 (2015-12-01)

- Added support for the new boards: Atmel ATSAMR21-XPRO, Atmel SAML21-XPRO-B, Atmel SAMD21-XPRO, ST 32F469IDISCOVERY, ST 32L476GDISCOVERY, ST Nucleo F031K6, ST Nucleo F042K6, ST Nucleo F303K8 and ST Nucleo L476RG

- Updated Arduino core for Espressif platform to 2.0.0 (issue #345)

- Added to FAQ explanation of Can not compile a library that compiles without issue with Arduino IDE (issue #331)

- Fixed ESP-12E flash size (pull #333)

- Fixed configuration for LowPowerLab MoteinoMEGA board (issue #335)

- Fixed “LockFailed: failed to create appstate.json.lock” error for Windows

- Fixed relative include path for preprocessor using `build_flags` (issue #271)

### 2.3.5 (2015-11-18)

- Added support of libOpenCM3 framework for Nucleo F103RB board (issue #309)

- Added support for Espressif ESP8266 ESP-12E board (NodeMCU) (issue #310)

- Added support for pySerial 3.0 (issue #307)

- Updated Arduino AVR/SAM frameworks to 1.6.6 (issue #321)

- Upload firmware using external programmer via platformio run –target program target (issue #311)

- Fixed handling of upload port when `board` option is not specified in platformio.ini (issue #313)

- Fixed firmware uploading for nordicrf51 development platform (issue #316)

- Fixed installation on Mac OS X El Capitan (issue #312)

- Fixed project generator for CLion IDE under Windows OS with invalid path to executable (issue #326)

- Fixed empty list with serial ports on Mac OS X (isge #294)

- Fixed compilation error `TWI_Disable not declared` for Arduino Due board (issue #329)

### 2.3.4 (2015-10-13)

- Full support of CLion IDE including code auto-completion (issue #132)

- PlatformIO command completion in Terminal for `bash` and `zsh`

- Added support for ubIQio Ardhat board (pull #302)

- Install SCons automatically and avoid `error: option --single-version-externally-managed not recognized` (issue #279)

- Use Teensy CLI Loader for upload of .hex files on Mac OS X (issue #306)

- Fixed missing framework-mbed package for teensy platform (issue #305)

### 2.3.3 (2015-10-02)

- Added support for LightBlue Bean board (pull #292)

- Added support for ST Nucleo F446RE board (pull #293)

- Fixed broken lock file for “appstate” storage (issue #288)

- Fixed ESP8266 compile errors about RAM size when adding 1 library (issue #296)

### 2.3.2 (2015-09-10)

- Allowed to use ST-Link uploader for mbed-based projects

- Explained how to use `lib` directory from the PlatformIO based project in `readme.txt` which will be automatically generated using platformio init command (issue #273)

- Found solution for “pip/scons error: option –single-version-externally-managed not recognized” when install PlatformIO using `pip` package manager (issue #279)

- Fixed firmware uploading to Arduino Leonardo board using Mac OS (issue #287)

- Fixed SConsNotInstalled error for Linux Debian-based distributives

### 2.3.1 (2015-09-06)

- Fixed critical issue when platformio init –ide command hangs PlatformIO (issue #283)

### 2.3.0 (2015-09-05)

- Added native, linux_arm, linux_i686, linux_x86_64, windows_x86 development platforms (issue #263)

- Added PlatformIO Demo page to documentation

- Simplified installation process of PlatformIO (issue #274)

- Significantly improved Project Generator which allows to integrate with the most popular IDE

- Added short `-h` help option for PlatformIO and sub-commands

- Updated mbed framework

- Updated `tool-teensy` package for Teensy platform (issue #268)

- Added FAQ answer when Program “platformio” not found in PATH (issue #272)

- Generate “readme.txt” for project “lib” directory (issue #273)

- Use toolchain’s includes pattern `include*` for Project Generator (issue #277)

- Added support for Adafruit Gemma board to atmelavr platform (pull #256)

- Fixed includes list for Windows OS when generating project for Eclipse IDE (issue #270)

- Fixed `AttributeError: 'module' object has no attribute 'packages'` (issue #252)

### 2.2.2 (2015-07-30)

- Integration with Atom IDE

- Support for off-line/unpublished/private libraries (issue #260)

- Disable project auto-clean while building/uploading firmware using platformio run –disable-auto-clean option (issue #255)

- Show internal errors from “Miniterm” using platformio serialports monitor command (issue #257)

- Fixed platformio serialports monitor –help information with HEX char for hotkeys (issue #253)

- Handle “OSError: [Errno 13] Permission denied” for PlatformIO installer script (issue #254)

### 2.2.1 (2015-07-17)

- Project generator for CLion IDE (issue #132)

- Updated `tool-bossac` package to 1.5 version for atmelsam platform (issue #251)

- Updated `sdk-esp8266` package for espressif platform

- Fixed incorrect arguments handling for platformio serialports monitor command (issue #248)

### 2.2.0 (2015-07-01)

- Allowed to exclude/include source files from build process using src_filter (issue #240)

- Launch own extra script before firmware building/uploading processes (issue #239)

- Specify own path to the linker script (ld) using build_flags option (issue #233)

- Specify library compatibility with the all platforms/frameworks using `*` symbol in library.json

- Added support for new embedded boards: ST 32L0538DISCOVERY and Delta DFCM-NNN40 to Framework mbed

- Updated packages for Framework Arduino (AVR, SAM, Espressif and Teensy cores, Framework mbed, Espressif ESP8266 SDK (issue #246)

- Fixed `stk500v2_command(): command failed` (issue #238)

- Fixed IDE project generator when board is specified (issue #242)

- Fixed relative path for includes when generating project for IDE (issue #243)

- Fixed ESP8266 native SDK exception (issue #245)

### 2.1.2 (2015-06-21)

- Fixed broken link to SCons installer

### 2.1.1 (2015-06-09)

- Automatically detect upload port using VID:PID board settings (issue #231)

- Improved detection of build changes

- Avoided `LibInstallDependencyError` when more than 1 library is found (issue #229)

### 2.1.0 (2015-06-03)

- Added Silicon Labs EFM32 siliconlabsefm32 development platform (issue #226)

- Integrate PlatformIO with Circle CI and Shippable CI

- Described in documentation how to create/register own board for PlatformIO

- Disabled “nano.specs” for ARM-based platforms (issue #219)

- Fixed “ConnectionError” when PlatformIO SF Storage is off-line

- Fixed resolving of C/C++ std libs by Eclipse IDE (issue #220)

- Fixed firmware uploading using USB programmer (USBasp) for atmelavr platform (issue #221)

### 2.0.2 (2015-05-27)

- Fixed libraries order for “Library Dependency Finder” under Linux OS

### 2.0.1 (2015-05-27)

- Handle new environment variable PLATFORMIO_BUILD_FLAGS

- Pass to API requests information about Continuous Integration system. This information will be used by PlatformIO-API.

- Use `include` directories from toolchain when initialising project for IDE (issue #210)

- Added support for new WildFire boards from Wicked Device to atmelavr platform

- Updated Arduino Framework to 1.6.4 version (issue #212)

- Handle Atmel AVR Symbols when initialising project for IDE (issue #216)

- Fixed bug with converting `*.ino` to `*.cpp`

- Fixed failing with `platformio init --ide eclipse` without boards (issue #217)

### 2.0.0 (2015-05-22)

Made in Paradise

- PlatformIO as Continuous Integration (CI) tool for embedded projects (issue #108)

- Initialise PlatformIO project for the specified IDE (issue #151)

- PlatformIO CLI 2.0: “platform” related commands have been moved to `platformio platforms` subcommand (issue #158)

- Created PlatformIO gitter.im room (issue #174)

- Global `-f, --force` option which will force to accept any confirmation prompts (issue #152)

- Run project with platformio run –project-dir option without changing the current working directory (issue #192)

- Control verbosity of platformio run command via `-v/--verbose` option

- Add library dependencies for build environment using lib_install option in `platformio.ini` (issue #134)

- Specify libraries which are compatible with build environment using lib_use option in `platformio.ini` (issue #148)

- Add more boards to PlatformIO project with platformio init –board command (issue #167)

- Choose which library to update (issue #168)

- Specify platformio init –env-prefix when initialise/update project (issue #182)

- Added new Armstrap boards (issue #204)

- Updated SDK for espressif development platform to v1.1 (issue #179)

- Disabled automatic updates by default for platforms, packages and libraries (issue #171)

- Fixed bug with creating copies of source files (issue #177)

## PlatformIO Core 1

### 1.5.0 (2015-05-15)

- Added support of Framework mbed for Teensy 3.1 (issue #183)

- Added GDB as alternative uploader to ststm32 platform (issue #175)

- Added examples with preconfigured IDE projects (issue #154)

- Fixed firmware uploading under Linux OS for Arduino Leonardo board (issue #178)

- Fixed invalid “mbed” firmware for Nucleo F411RE (issue #185)

- Fixed parsing of includes for PlatformIO Library Dependency Finder (issue #189)

- Fixed handling symbolic links within source code directory (issue #190)

- Fixed cancelling any previous definition of name, either built in or provided with a `-D` option (issue #191)

### 1.4.0 (2015-04-11)

- Added espressif development platform with ESP01 board

- Integrated PlatformIO with AppVeyor Windows based Continuous Integration system (issue #149)

- Added support for Teensy LC board to teensy platform

- Added support for new Arduino based boards by SparkFun, BQ, LightUp, LowPowerLab, Quirkbot, RedBearLab, TinyCircuits to atmelavr platform

- Upgraded Arduino Framework to 1.6.3 version (issue #156)

- Upgraded Energia Framework to 0101E0015 version (issue #146)

- Upgraded Arduino Framework with Teensy Core to 1.22 version (issue #162, issue #170)

- Fixed exceptions with PlatformIO auto-updates when Internet connection isn’t active

### 1.3.0 (2015-03-27)

- Moved PlatformIO source code and repositories from Ivan Kravets account to PlatformIO Organisation (issue #138)

- Added support for new Arduino based boards by SparkFun, RepRap, Sanguino to atmelavr platform (issue #127, issue #131)

- Added integration instructions for Visual Studio and Sublime Text IDEs

- Improved handling of multi-file `*.ino/pde` sketches (issue #130)

- Fixed wrong insertion of function prototypes converting `*.ino/pde` (issue #137, issue #140)

### 1.2.0 (2015-03-20)

- Added full support of mbed framework including libraries: RTOS, Ethernet, DSP, FAT, USB.

- Added freescalekinetis development platform with Freescale Kinetis Freedom boards

- Added nordicnrf51 development platform with supported boards from JKSoft, Nordic, RedBearLab, Switch Science

- Added nxplpc development platform with supported boards from CQ Publishing, Embedded Artists, NGX Technologies, NXP, Outrageous Circuits, SeeedStudio, Solder Splash Labs, Switch Science, u-blox

- Added support for ST Nucleo boards to ststm32 development platform

- Created new Frameworks page in documentation and added to PlatformIO Web Site (issue #115)

- Introduced online Embedded Boards Explorer

- Automatically append define `-DPLATFORMIO=%version%` to builder (issue #105)

- Renamed `stm32` development platform to ststm32

- Renamed `opencm3` framework to libopencm3

- Fixed uploading for atmelsam development platform

- Fixed re-arranging the `*.ino/pde` files when converting to `*.cpp` (issue #100)

### 1.1.0 (2015-03-05)

- Implemented `PLATFORMIO_*` environment variables (issue #102)

- Added support for SainSmart boards to atmelsam development platform

- Added Project Configuration option named envs_dir

- Disabled “prompts” automatically for Continuous Integration systems (issue #103)

- Fixed firmware uploading for atmelavr boards which work within `usbtiny` protocol

- Fixed uploading for Digispark board (issue #106)

### 1.0.1 (2015-02-27)

PlatformIO 1.0 - recommended for production

- Changed development status from `beta` to `Production/Stable`

- Added support for ARM-based credit-card sized computers: Raspberry Pi, BeagleBone and CubieBoard

- Added atmelsam development platform with supported boards: Arduino Due and Digistump DigiX (issue #71)

- Added ststm32 development platform with supported boards: Discovery kit for STM32L151/152, STM32F303xx, STM32F407/417 lines and libOpenCM3 Framework (issue #73)

- Added teensy development platform with supported boards: Teensy 2.x & 3.x (issue #72)

- Added new Arduino boards to atmelavr platform: Arduino NG, Arduino BT, Arduino Esplora, Arduino Ethernet, Arduino Robot Control, Arduino Robot Motor and Arduino Yun

- Added support for Adafruit boards to atmelavr platform: Adafruit Flora and Adafruit Trinkets (issue #65)

- Added support for Digispark boards to atmelavr platform: Digispark USB Development Board and Digispark Pro (issue #47)

- Covered code with tests (issue #2)

- Refactored Library Dependency Finder (issues #48, #50, #55)

- Added src_dir option to `[platformio]` section of platformio.ini which allows to redefine location to project’s source directory (issue #83)

- Added `--json-output` option to platformio boards and platformio search commands which allows to return the output in JSON format (issue #42)

- Allowed to ignore some libs from Library Dependency Finder via lib_ignore option

- Improved platformio run command: asynchronous output for build process, timing and detailed information about environment configuration (issue #74)

- Output compiled size and static memory usage with platformio run command (issue #59)

- Updated framework-arduino AVR & SAM to 1.6 stable version

- Fixed an issue with the libraries that are git repositories (issue #49)

- Fixed handling of assembly files (issue #58)

- Fixed compiling error if space is in user’s folder (issue #56)

- Fixed AttributeError: ‘module’ object has no attribute ‘disable_warnings’ when a version of requests package is less then 2.4.0

- Fixed bug with invalid process’s “return code” when PlatformIO has internal error (issue #81)

- Several bug fixes, increased stability and performance improvements

## PlatformIO Core Preview

### 0.10.2 (2015-01-06)

- Fixed an issue with `--json-output` (issue #42)

- Fixed an exception during platformio upgrade under Windows OS (issue #45)

### 0.10.1 (2015-01-02)

- Added `--json-output` option to platformio list, platformio serialports list and platformio lib list commands which allows to return the output in JSON format (issue #42)

- Fixed missing auto-uploading by default after platformio init command

### 0.10.0 (2015-01-01)

Happy New Year!

- Implemented platformio boards command (issue #11)

- Added support of Engduino boards for atmelavr platform (issue #38)

- Added `--board` option to platformio init command which allows to initialise project with the specified embedded boards (issue #21)

- Added example with uploading firmware via USB programmer (USBasp) for atmelavr MCUs (issue #35)

- Automatic detection of port on platformio serialports monitor (issue #37)

- Allowed auto-installation of platforms when prompts are disabled (issue #43)

- Fixed urllib3’s SSL warning under Python <= 2.7.2 (issue #39)

- Fixed bug with Arduino USB boards (issue #40)

### 0.9.2 (2014-12-10)

- Replaced “dark blue” by “cyan” colour for the texts (issue #33)

- Added new setting `enable_prompts` and allowed to disable all PlatformIO prompts (useful for cloud compilers) (issue #34)

- Fixed compilation bug on Windows with installed MSVC (issue #18)

### 0.9.1 (2014-12-05)

- Ask user to install platform (when it hasn’t been installed yet) within platformio run and platformio show commands

- Improved main documentation

- Fixed “OSError: [Errno 2] No such file or directory” within platformio run command when PlatformIO isn’t installed properly

- Fixed example for Eclipse IDE with Tiva board (issue #32)

- Upgraded Eclipse Project Examples to latest Luna and PlatformIO releases

### 0.9.0 (2014-12-01)

- Implemented platformio settings command

- Improved platformio init command. Added new option `--project-dir` where you can specify another path to directory where new project will be initialized (issue #31)

- Added Migration Manager which simplifies process with upgrading to a major release

- Added Telemetry Service which should help us make PlatformIO better

- Implemented PlatformIO AppState Manager which allow to have multiple `.platformio` states.

- Refactored Package Manager

- Download Manager: fixed SHA1 verification within Cygwin Environment (issue #26)

- Fixed bug with code builder and built-in Arduino libraries (issue #28)

### 0.8.0 (2014-10-19)

- Avoided trademark issues in library.json with the new fields: frameworks, platforms and dependencies (issue #17)

- Switched logic from “Library Name” to “Library Registry ID” for all platformio lib commands (install, uninstall, update and etc.)

- Renamed `author` field to authors and allowed to setup multiple authors per library in library.json

- Added option to specify “maintainer” status in authors field

- New filters/options for platformio lib search command: `--framework` and `--platform`

### 0.7.1 (2014-10-06)

- Fixed bug with order for includes in conversation from INO/PDE to CPP

- Automatic detection of port on upload (issue #15)

- Fixed lib update crashing when no libs are installed (issue #19)

### 0.7.0 (2014-09-24)

- Implemented new [platformio] section for Configuration File with home_dir option (issue #14)

- Implemented Library Manager (issue #6)

### 0.6.0 (2014-08-09)

- Implemented platformio serialports monitor (issue #10)

- Fixed an issue `ImportError: No module named platformio.util` (issue #9)

- Fixed bug with auto-conversation from Arduino *.ino to *.cpp

### 0.5.0 (2014-08-04)

- Improved nested lookups for libraries

- Disabled default warning flag “-Wall”

- Added auto-conversation from *.ino to valid *.cpp for Arduino/Energia frameworks (issue #7)

- Added Arduino example with external library (Adafruit CC3000)

- Implemented platformio upgrade command and “auto-check” for the latest version (issue #8)

- Fixed an issue with “auto-reset” for Raspduino board

- Fixed a bug with nested libs building

### 0.4.0 (2014-07-31)

- Implemented platformio serialports command

- Allowed to put special build flags only for `src` files via src_build_flags environment option

- Allowed to override some of settings via system environment variables such as: `PLATFORMIO_SRC_BUILD_FLAGS` and `PLATFORMIO_ENVS_DIR`

- Added `--upload-port` option for platformio run command

- Implemented (especially for SmartAnthill) platformio run -t uploadlazy target (no dependencies to framework libs, ELF and etc.)

- Allowed to skip default packages via platformio install –skip-default-package option

- Added tools for Raspberry Pi platform

- Added support for Microduino and Raspduino boards in atmelavr platform

### 0.3.1 (2014-06-21)

- Fixed auto-installer for Windows OS (bug with %PATH% custom installation)

### 0.3.0 (2014-06-21)

- Allowed to pass multiple “SomePlatform” to install/uninstall commands

- Added “IDE Integration” section to README with Eclipse project examples

- Created auto installer script for PlatformIO (issue #3)

- Added “Super-Quick” way to Installation section (README)

- Implemented “build_flags” option for environments (issue #4)

### 0.2.0 (2014-06-15)

- Resolved issue #1 “Build referred libraries”

- Renamed project’s “libs” directory to “lib”

- Added arduino-internal-library example

- Changed to beta status

### 0.1.0 (2014-06-13)

- Birth! First alpha release