Arduino IDE 2.3.5 is now available

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

Sanitize notification messages

arduino/arduino-ide#2664

Arduino IDE uses notifications to communicate information about various events (e.g., completion of an upload) to the user.

In some cases, the text of the notification message might contain content that comes from external sources. It is possible that an attacker could introduce malicious content into the notification message text, using it for a cross-site scripting attack:

Sanitization code has been added to render any potentially malicious content in the notification message harmless.

Gracefully handle invalid package index URLs

arduino/arduino-ide#2645, arduino/arduino-cli#2817, arduino/arduino-cli#2786

Support for specific board models in Arduino IDE is provided by Arduino boards platforms. Platforms can be installed via Boards Manager. Boards Manager uses data published to the Internet in a package index file.

In order to install a 3rd party boards platform, the user must first add the URL of that platform's package index to Arduino IDE's "Additional Boards Manager URLs" preference.

Previously, if the user added an invalid URL to the "Additional Boards Manager URLs" preference, it would cause Arduino IDE to be non-functional and the only way to restore it from that state was to manually remove the invalid data from an obscure configuration file.

Arduino IDE will now gracefully handle invalid "Additional Boards Manager URLs" preference data. Of course, the dependent boards platform will still not be available for installation via Boards Manager under these conditions, but the user will now be able to easily correct their mistake via the Arduino IDE preferences GUI if this happens.

(Thanks @jjmurflo)

Update Eclipse Theia Platform framework to 1.57.0

arduino/arduino-ide#2654

Arduino IDE is built on the free open source Eclipse Theia Platform framework.

In order to benefit from the ongoing development work in the Eclipse Theia Platform project, Arduino IDE has been updated to using Eclipse Theia Platform version 1.57.0.

(Thanks @dankeboy36)

Reliably provide "state" information to extensions

arduino/arduino-ide#2643, arduino/arduino-ide#2642

Arduino IDE has a powerful and flexible extension framework. Anyone can add additional capabilities to Arduino IDE without making any modifications to the IDE's codebase.

In addition to its general support for VS Code extensions, Arduino IDE also provides supplemental "state" information specific to Arduino sketch development, which may be required by extensions written by the Arduino community.

Previously, that "state" information was unnecessarily withheld under certain conditions.

(Thanks @dankeboy36)

Update Arduino CLI dependency to 1.2.0

arduino/arduino-ide#2645

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.2.0.

Fix coloration of preprocessor stderr output

arduino/arduino-ide#2645, arduino/arduino-cli#2806

The output from the tools used to compile and upload Arduino sketches is displayed in Arduino IDE's "Output" panel. The text is colored to communicate its significance to the user. The output from the tool's "standard output" stream is colored white, and the the output from the "standard error" stream colored red.

Errors or warnings may be produced by the C preprocessor, and it prints these to the standard error stream. Previously, this text was incorrectly given the standard output coloration.

Add support for configuring Arduino CLI network timeout via settings file

arduino/arduino-ide#2645, arduino/arduino-cli#2770, arduino/arduino-cli#2769

Much of the non-GUI functionality of Arduino IDE comes from the Arduino CLI tool.

Arduino CLI uses various resources from the Internet, and thus makes network requests under certain conditions. In some unusual use cases, it might be useful to the user to be able to configure a specific timeout duration for requests that don't receive a response due to exceptional network conditions.

This can now be done via the network.connection_timeout key of the Arduino CLI configuration file used by Arduino IDE.

Add support for disabling enhanced port identification

arduino/arduino-ide#2645, arduino/arduino-cli#2770, arduino/arduino-cli#2769

Support for specific board models in Arduino IDE is provided by Arduino boards platforms. With the exception of the foundational "Arduino AVR Boards" platform, which is automatically installed by Arduino IDE, the user must install the necessary platform before they can use their board. New users who aren't aware of that requirement and so don't install the platform dependency might think that their board or the IDE is broken.

The ports of Arduino boards can be automatically identified by Arduino IDE via the port's identification properties. This is used for convenience features such as labeling the ports in the Tools > Port menu (e.g., "COM42 (Arduino Uno)") The primary source of the board model / port property association data is the boards platform. However, if the platform for the connected board is not installed then that information will not be available to Arduino IDE. For this reason, a secondary port identification system has been implemented, which obtains board model associations from an online API.

The ability to identify ports of Arduino boards for which no platform is installed is very useful because it allows Arduino IDE to automatically offer to install the missing platform dependency for the user, supporting a natural user flow for the first use of a board and thus making the learning curve more gentle for new users:

The port identification functionality is provided by the Arduino CLI tool. Advanced configuration of this tool can be made via a configuration file.

In some unusual or advanced use cases, the user might want to disable the feature for identifying the board port via the online API. This can now be done via the network.cloud_api.skip_board_detection_calls key of the Arduino CLI configuration file used by Arduino IDE.

Add support to library discovery system for compilers with unusual error message format

arduino/arduino-ide#2645, arduino/arduino-cli#2782

The C++ compiler must be configured with the paths of all library dependencies of a sketch. The Arduino sketch build system handles this automatically. This "library discovery" system works by tentatively running the C preprocessor on the sketch program. If preprocessing fails, the system parses the text of the preprocessor's error messages. If the error was caused by the absence of a file referenced by one of the sketch program's #include directives, this indicates that the path to the library dependency providing the header file has not yet been added to the compiler's "search path".

It turns out that some rarely used compilers use an unusual format for these error messages, and the parsing code was not able to correctly recognize the messages in that format. The library discovery code has now been updated to add support for those compilers.

Add support for disabling platform installation integrity checks

arduino/arduino-ide#2645, arduino/arduino-cli#2740, arduino/arduino-cli#1468

Support for specific board models in Arduino IDE is provided by Arduino boards platforms. Platforms can be installed via Boards Manager, which downloads the archive files for the platform from the Internet.

By default, Boards Manager checks the downloaded archives against the checksum defined by the platform's package index in order to ensure the file was not corrupted. Although this is very useful behavior for any production usage, it can be inconvenient in advanced use cases where a package index provides beta tester versions of the platform, which are continuously updated as the platform's development work progresses.

These users can now disable that integrity check via the board_manager.enable_unsafe_install key of the Arduino CLI configuration file used by Arduino IDE.

(Thanks @obra)

Only delay after serial output in "Knock" built-in example

arduino/arduino-ide#2646, arduino/arduino-examples#81, arduino/docs-content#2159

A collection of example sketches demonstrating various concepts are bundled with the Arduino IDE installation. The "Knock" example uses a piezo disc to detect the vibrations associated with a knock.

Previously a "debouncing" delay was incorrectly positioned in the example code, which caused it to miss detection of some knocks.

(Thanks @thespiffer1)

Document incomplete nature of "p08_DigitalHourglass" built-in example

arduino/arduino-ide#2646, arduino/arduino-examples#84, arduino/arduino-examples#83

A collection of example sketches are bundled with the Arduino IDE installation. These include the sketches that accompany the Arduino Starter Kit.

The "p08_DigitalHourglass" sketch is intentionally left incomplete. The Arduino Projects Book that comes with the starter kit instructs the user to add their own code to indicate the completion of the timer.

In addition to owners of the Arduino Starter Kit, other users might use this sketch as a reference, and thus not have the context provided by the Arduino Projects Book. Comments were added to the sketch to instruct the user to add the missing code.

(Thanks @DaveX)

Expand and improve translations

arduino/arduino-ide#2597, arduino/arduino-ide#2645, arduino/arduino-cli#2771

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:

https://github.com/arduino/arduino-ide/blob/main/docs/contributor-guide/translation.md#translator-guide


Full changelog here:

https://github.com/arduino/arduino-ide/releases/tag/2.3.5


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:

https://github.com/arduino/arduino-ide

4 Likes

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.