If you are using a recent version of the IDE, you will get an auto-update offer simply by starting the IDE.
Otherwise, the release is available for download here:
https://www.arduino.cc/en/software
This release provides some nice advancements and fixes.
Thanks so much to the forum community for all the valuable testing and feedback that has helped us greatly in identifying and investigating these bugs and enhancements!
Highlights
- Serial Monitor "Copy Output" feature
- "Installed" filter in Boards Manager
- Dependencies installation during "INSTALL ALL" libraries update
- Resolve security vulnerabilities in macOS builds
Add "Copy Output" icon to Serial Monitor toolbar
arduino/arduino-ide#2718, arduino/arduino-ide#1729
Due to limitations of the technology used for the implementation of the Arduino Serial Monitor, the ability to select text in the output field is limited to the visible area of the field (arduino/arduino-ide#812, arduino/arduino-ide#1081). Previously, this means that collecting all Serial Monitor content via the standard "select and copy" workflow is not possible.
It is now possible to collect the full Serial Monitor content in an even more convenient manner by clicking the new "Copy Output" icon that has been added to the right side of the Serial Monitor toolbar:
Add "Installed" filter to Boards Manager
arduino/arduino-ide#2812, arduino/arduino-ide#2638
Boards Manager and Library Manager have a "Type" menu that allows filtering the list of boards platforms or libraries. Previously, an "Installed" option was present in the Library Manager menu, but not in Boards Manager.
This convenient filter option has now been added to Boards Manager, making it easy to obtain a list of the boards platforms you have installed.
Install dependencies during "INSTALL ALL" libraries update
arduino/arduino-ide#2830, arduino/arduino-ide#2505
Arduino IDE periodically checks whether newer versions of any of the installed libraries are available. If so, it displays a notification that offers to update them:
Arduino libraries may have dependencies on other libraries. The library developer can define these dependencies in the library metadata. That information is used by Library Manager to install the dependencies along with a library.
Since dependencies may change from one release of a library to another, the installation of the specified dependencies should be done when updating a library as well as during the initial installation. Previously, this was not done when updating libraries via the "INSTALL ALL" button in the library update notification.
Use proxy configuration with Boards Manager
arduino/arduino-ide#2806, arduino/arduino-cli#2889, arduino/arduino-cli#2888
Some users may access the Internet through a proxy server. Arduino IDE can be configured accordingly via the "Network" tab of the "Preferences" dialog.
A regression occurred that caused Arduino IDE to ignore the proxy configuration when a boards platform was installed via Boards Manager. That bug has now been fixed.
Fixes for security vulnerabilities in macOS builds
Security vulnerabilities were identified in the builds of Arduino IDE for macOS hosts:
These vulnerabilities have been fixed in Arduino IDE 2.3.7. To ensure security and stability, users are advised to update as soon as possible.
Remove unnecessary macOS entitlement for environment variables
See:
Use minimal file permissions for internal utilities
See:
Expand and improve translations
arduino/arduino-ide#2709, arduino/arduino-ide#2806, arduino/arduino-cli#2854, arduino/arduino-cli#2914, arduino/arduino-cli#2939
The community work to make Arduino IDE accessible to everyone in the world through localization of the text of the IDE's UI continues, reaching high coverage levels for 18 languages/locales.
If you would like to contribute to the Arduino IDE translations, please see the information here:
Update Arduino CLI dependency to 1.3.1
Much of the non-GUI functionality of Arduino IDE comes from the Arduino CLI tool.
In order to benefit from the ongoing development work in the Arduino CLI project, Arduino IDE has been updated to using Arduino CLI version 1.3.1.
Remember platform tool dependencies provided by another index
arduino/arduino-ide#2806, arduino/arduino-cli#2942
Arduino boards platforms have dependencies on a collection of tools used for operations such as compilation and uploading. The platform developer may define these dependencies in their package index.
In addition to tools they provide themselves, the platform developer may specify dependencies on tools already offered by other platform developers.
The obvious use of this tool dependencies information is to allow Boards Manager to install tools along with the platform. Additionally, this information is used by the platform framework in discovering the locations of the installed tools. Since the user might later remove additional package indexes from their system, Arduino IDE stores the tool dependencies data alongside the platform installation at the time of platform installation.
Previously, the full data about tool dependencies referenced from other package indexes was not recorded by Boards Manager. This could result in inappropriate tool selection or removal of tool dependencies under certain conditions.
Support multiple recipe.c.combine patterns in platforms
arduino/arduino-ide#2806, arduino/arduino-cli#2954
The commands invoked by Arduino IDE when compiling a sketch are generated from "patterns" (i.e., templates) defined in the configuration files of the boards platform.
One of these "patterns" is defined by the recipe.c.combine.pattern property, which is used for linking the individual compilation objects produced by the earlier compilation commands.
The need was found to allow platforms to run multiple linking commands in sequence. This is now supported by defining multiple properties with a recipe.c.combine.<index>.pattern format, where <index> is an integer used to differentiate the properties and define the order in which the commands are invoked.
Fix function prototype generation failure when processing long lines of code
arduino/arduino-ide#2806, arduino/arduino-cli#2935, arduino/ArduinoCore-zephyr#140
Arduino IDE automatically generates function prototypes for functions defined in a .ino file that don't have a manually created prototype.
It was discovered that the prototype generation failed when processing sketch programs that contain extremely long lines of code. This would normally be an unusual condition, but did occur even minimal sketches when compiled for a board from Arduino's Zephyr OS-based Arduino platforms due to a quirk of that platform's core code.
(Thanks @KurtE)
Enhancements and fixes for build profiles
Arduino sketches have a dependency on the Arduino boards platforms of the target boards, and typically on a set of libraries as well.
Traditionally, all Arduino sketches share a global set of installed dependencies. In some cases, this can be problematic. For example, updating a library to a new version that has a breaking change may cause existing sketches written for use with the previous version to no longer work.
In order to support the more advanced use case where a developer wants more control over the sketch project dependencies, Arduino has implemented a "build profile" system, where the sketch is compiled in an isolated environment which only contains the set of dependencies specified in a metadata file bundled with the sketch.
Build profile support is implemented in the Arduino CLI helper tool Arduino IDE uses to compile sketches. Handling of build profiles has not been officially added to the Arduino IDE GUI, so previously this feature has only been accessible to those using Arduino CLI directly from the command line, and thus the work on the build profiles system has not been notable to Arduino IDE users. This situation has changed to some extent recently due to the availability of build profiles support in Arduino IDE through the 3rd party Arduino Sketch Vault extension.
Support locally installed libraries in build profiles
arduino/arduino-ide#2806, arduino/arduino-cli#2930, arduino/arduino-cli#2133
The primary source of dependencies is the Library Manager and Boards Manager distribution systems. However, a sketch might also have dependencies on libraries that are not available from those sources. For this reason, support has been added to specifying a local path to a library in the build profile via a dir key in the libraries sequence element. For example:
profiles:
foo:
fqbn: arduino:avr:uno
libraries:
# The library in the `extras/FooLib` subfolder of the sketch.
- dir: extras/FooLib
# Servo@1.3.0 from Library Manager
- Servo (1.3.0)
platforms:
- platform: arduino:avr (1.8.6)
Support use of global platform installation with build profiles
arduino/arduino-ide#2806, arduino/arduino-cli#2940, arduino/arduino-cli#2927
Build profiles offer the ability to fully control the dependencies environment of a sketch. This includes the boards platforms in addition to the library dependencies.
However, users may be primarily interested in managing the library dependencies, since these are the most common source of problems caused by breaking changes and collisions.
Although libraries are generally quite lightweight in terms of disk usage, a platform installation may be gigabytes in size.
A user not interested in managing the platform dependency, and who wishes to avoid ending up with additional installations of a platform may prefer to configure their build profile to simply use whichever version of the platform dependency is already installed globally.
When you pin a platform version in the build profile, it is installed via the Boards Manager system. users may also be using manually installed platforms (either due to the platform developer not having provided Boards Manager support, or due to using a development version of a platform). This change provides support for using these manually installed platforms with build profiles.
Compile all libraries specified by build profile
arduino/arduino-ide#2806, arduino/arduino-cli#2951
Traditionally, the Arduino sketch build system performs a "library discovery" operation, where the specific library dependencies of a sketch are automatically determined. "Library discovery" requires repeatedly preprocessing the sketch program and thus is a fairly computing intensive process. This operation can be a significant portion of the duration of a sketch build.
There is a clear need for library discovery in the case of building a sketch in the global dependencies environment where many irrelevant libraries are typically present. This is not the case when a build profile is in use. In this case, the only standalone libraries present will be those specifically indicated as being dependencies of the sketch. Thus, the build system will assume that all those libraries should be compiled and thus avoid the need for their discovery.
Full changelog here:
https://github.com/arduino/arduino-ide/releases/tag/2.3.7
If you have any questions or feedback please post here in the dedicated forum category for Arduino IDE 2.x:
https://forum.arduino.cc/c/software/ide-2-x/93
If you want to see the list of known issues, work in progress, submit a formal report, or contribute to development, the Arduino IDE 2.x source code is hosted in this public repository:

