Arduino IDE 2.3.4 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!

:exclamation: Deprecation notice: Upcoming cessation of support for Linux distros using glibc 2.28 :exclamation:

Recent changes in the framework used to produce automated release of Arduino IDE resulted in the loss of compatibility of the Linux builds with older Linux distro versions that use version 2.28 of the GNU C Library (glibc) shared library. This includes Ubuntu 18.04. Arduino IDE 2.3.4 will be the last version that can be used with these distro versions.

Future releases (including nightly and tester builds) will fail to start on machines using these distro versions with an error like:

Error: node-loader:
Error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /home/foo/arduino-ide/resources/app/lib/backend/native/pty.node)
    at 85467 (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:2766)
    at __webpack_require__ (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:6663105)
    at 23571 (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:3374073)
    at __webpack_require__ (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:6663105)
    at 55444 (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:3369761)
    at __webpack_require__ (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:6663105)
    at 24290 (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:1780542)
    at __webpack_require__ (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:6663105)
    at 43416 (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:1770138)
    at __webpack_require__ (/home/foo/arduino-ide/resources/app/lib/backend/main.js:2:6663105)

If you don't know which version of glibc your machine is using, run this from the terminal:

/lib/x86_64-linux-gnu/libc.so.6

Further technical details are available here.

The recommended path forward is to update to a modern version of Linux. If you can't or won't do that, you can update to the last compatible version of Arduino IDE, 2.3.4, and then avoid updating when future releases (e.g., 2.3.5) come out. There are two methods for dealing with these update offers. I'll provide instructions for both of them. You can pick whichever one of the two is most convenient for you.

"SKIP VERSION"

The "Update Available" dialog contains a "SKIP VERSION" button. If you click that button, Arduino IDE will no longer show the dialog for the specific newer version being offered at the time you click the button.

The dialog will appear once again each time Arduino releases a new version of Arduino IDE, so you will need to click the button again after each release. That is slightly inconvenient, but the release cycle is fairly long so I don't think it will be very burdensome.

Disable All Update Offers

It is possible to completely disable the offers of updates in the Arduino IDE advanced settings. The downside is this setting also disables offers of updates for your installed boards platforms and libraries.

  1. Press the Ctrl+Shift+P keyboard shortcut (Command+Shift+P for macOS users) to open the "Command Palette".
    A menu will appear on the editor toolbar:
  2. Select the "Preferences: Open Settings (UI)" command from the menu.
    You can scroll down through the list of commands to find it or type the name in the field.
    A "Preferences" tab will open in the Arduino IDE main panel.
  3. Type arduino.checkForUpdates in the "Search Settings" field of the "Preferences" tab.
  4. Uncheck the box under the "Arduino: Check For Updates" setting.
  5. Close the Preferences tab by clicking its X icon.

Keeping Your Arduino Dependencies Updated

If you chose this "Disable All Update Offers" method, make sure to periodically check to see if newer versions of your installed boards platforms and libraries are available. You can do this by opening Boards Manager and then setting the "Type" menu to "Updatable", then repeating the process with Library Manager.

There is no possibility of a problem using newer versions of Arduino libraries on a computer with an older version of Linux, so don't worry about an incompatibility when updating your libraries.

It is theoretically possible that some future version of a boards platform could have an increased minimum Linux version requirement in its tool dependencies. Even if you did encounter that a boards platform stopped working after an update, you can always easily downgrade the platform back to the last working version via the Arduino IDE Boards Manager.

Fix operations hanging while Serial Monitor/Plotter is open

arduino/arduino-ide#2571, arduino/arduino-ide#2562, arduino/arduino-cli#2728, arduino/arduino-cli#2719

A bug was introduced in Arduino IDE 2.3.3 that caused operations such as downloading Boards Manager package index files to hang if performed while Serial Monitor or Serial Plotter is open. The bug has now been fixed.

(Thanks @k5map and @starthemorning)

Fix bug causing failed uploads to be indicated as successful

arduino/arduino-ide#2518, arduino/arduino-ide#2516

At the termination of an upload operation, Arduino IDE displays a notification to communicate the result to the user.

A bug was introduced in Arduino IDE 2.3.3 that caused the IDE to display the upload success notification even when the upload failed. This bug has now been fixed.

Fix compilation caching when library installation or cache path contains non-ASCII characters

arduino/arduino-ide#2571, arduino/arduino-cli#2733, arduino/arduino-cli#2671

In order to reduce the sketch compilation duration, Arduino IDE caches the compiled files and reuses those on subsequent compilations when appropriate.

Previously, the caching did not work when libraries were installed under a path containing non-ASCII characters, or when the path where the cached files are stored contained such characters. This resulted in unnecessarily long compilation durations for the affected users.

(Thanks @g91_y and @vvb333007)

Fix hang on startup when Raspberry Pi Pico/RP2040 platform installed

arduino/arduino-ide#2571, arduino/arduino-cli#2707, arduino/arduino-cli#2665, arduino/pluggable-discovery-protocol-handler#50

Previously, Arduino IDE would sometimes hang on startup if the user had previously installed @earlephilhower's excellent "Raspberry Pi Pico/RP2040" boards platform. Compatibility with that platform has now been restored.

Kill tool process when upload is canceled

arduino/arduino-ide#2571, arduino/arduino-ide#2517, arduino/arduino-cli#2726

A "CANCEL" button was added to the progress notification Arduino IDE shows during sketch compilation and upload. The user can click this button if for some reason they wish to cancel the operation (e.g., it is clear from the output that the upload is going to fail eventually).

Previously, the button affected the Arduino IDE GUI, but didn't actually cancel the underlying process. This could result in spurious failures of subsequent operations if the collided with the still running process from the "canceled" operation.

The upload tool process is now killed when the button is clicked.

Display a more helpful message when cryptographic signature validation fails due to incorrect system time

arduino/arduino-ide#2571, arduino/arduino-cli#2750

Index files used by Arduino IDE are cryptographically signed. Arduino IDE validates the signature of these files. Signatures are time stamped, so if the system time on a users's computer is set to a time in the past, the validation will fail due the signature being considered invalid at any time prior to the timestamp. This causes Arduino IDE to hang on startup, with an "Error verifying signature: openpgp: signature expired" error message in the logs.

The error message displayed under these conditions has been updated to include the hint "is your system clock set correctly?".

Don't fail platform installation on mismatch with size fields of package index

arduino/arduino-ide#2571, arduino/arduino-cli#2739, arduino/arduino-cli#2332

The Arduino IDE Boards Manager is populated by data from index files. In addition to the primary index file maintained by Arduino, the user can specify additional 3rd party Arduino boards platforms to be included by adding URLs to the "Additional Boards Manager URLs" preference. The package index data includes the checksum and file size for each of the files that will be downloaded by Arduino IDE.

The purpose of the checksum is to ensure the downloaded file has not been corrupted in any way. The purpose of the file size data is to allow Arduino IDE to display a progress indicator while downloading the file. Arduino IDE 1.x only validated the checksum after download, as this is fully sufficient. If the maintainer of a package index made an error in the file size value, the only impact on the user would be an inaccurate progress indicator, so package index maintainers who used Arduino IDE 1.x would not have any sign of their error.

Previously, Arduino IDE 2.x validated the file size against the package index. This resulted in unnecessary boards platform installation failures. It is now changed to only validate against the checksum.

Improve resiliency to errors in package indexes

arduino/arduino-ide#2571, arduino/arduino-cli#2713

The Arduino IDE Boards Manager is populated by data from index files. In addition to the primary index file maintained by Arduino, the user can specify additional 3rd party Arduino boards platforms to be included by adding URLs to the "Additional Boards Manager URLs" preference. The maintainers of the package index files occasionally introduce errors in the data format, which might impact the functionality of Arduino IDE.

Arduino IDE is now able to more gracefully handle such errors.

Display donation links on Arduino IDE update

arduino/arduino-ide#2581

Arduino IDE is a cornerstone of the Arduino initiative. The IDE, as well as all its helper tools and components, are free open source software. This software benefits the entire Arduino community, even those who do not use the boards sold by Arduino. The ongoing work to develop and maintain this software can be supported by donating to Arduino.

The IDE now displays a link to the donation page during updates via the auto-updater, and on the first start after an update.

Fix memory leak when scanning sketchbooks with large folders

arduino/arduino-ide#2555, arduino/arduino-ide#2537

Previously, the IDE could become unresponsive if the sketchbook contained a folder with many/large files.

Support compilation of very large sketch files

arduino/arduino-ide#2571, arduino/arduino-cli#2729, arduino/arduino-cli#2718

Previously, compilation would fail spuriously if any sketch code file was larger than 4 MB. The maximum sketch file size has now been increased to 16 MB.

(Thanks @jacek_kander)

Store all temporary files in path indicated by build_cache.path

arduino/arduino-ide#2571, arduino/arduino-cli#2673, arduino/arduino-cli#2668

When a sketch is compiled, Arduino IDE stores the generated files in a temporary folder. It is possible to configure the path under which the files are stored via Arduino CLI's build_cache.path configuration key. This capability might be required for some rare advanced use cases.

Previously, the configuration only controlled where the generated Arduino core library files were cached, while sketch and library files were still stored in the default location. All generated files are now stored under the path specified by the build_cache.path configuration key when the user has added that key to the configuration file.

Align viewsWelcome behavior to VS Code

arduino/arduino-ide#2543

This change allows Arduino IDE extension developers to accomplish certain UI designs.

(Thanks @dankeboy36 and @pjrc)

Expand and improve translations

arduino/arduino-ide#2523, arduino/arduino-ide#2571, arduino/arduino-cli#2692, arduino/arduino-cli#2757

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

Update Arduino CLI dependency to 1.1.1

arduino/arduino-ide#2571

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


Full changelog here:

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


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

6 Likes

This version rocks :).

  1. "Go To Reference" works!
  2. Non-latin1 paths are ok

May be one day we can get "Search for all references" (displays clickable list of codelines from project files which refer to a function or to a variable).

And another day - "Go to definition".

Definitely it is good to have a couple of "Preferences" tickboxes so we can disable function prototypes generation and library detection steps when we don't need it. Recently I had a code which was not intended to be compiled (was #if 0 #endif'ed) but still Arduino IDE started to parse it to generate function prototypes and failed resulting in syntax error on compilation.

Thanks in no small part to your bug report and beta testing of the fix for the bug :+1:

I know you are already aware of it, but for the benefit of other interested parties I'll add a note that the Arduino developers are tracking the deficiency here:

If you have a GitHub account, you can subscribe to that thread to get notifications of any new developments related to this subject:


:exclamation: Please only comment on the GitHub issue thread if you have new technical information that will assist with the resolution. General discussion and support requests are always welcome here on the Arduino Forum.


I guess you are referring to this bug:

We are already tracking multiple bugs in the prototype generation system, but I can't say whether the one you encountered is known. Did you already make a forum topic about this problem? If not, you can make one, providing a complete minimal sketch that can be used to reproduce the fault, and I'll check whether it is being tracked.

2 posts were split to a new topic: Avrdude: ser_open(): can't open device ".\COM4": The semaphore timeout period has expired

I'll try to reproduce.

Being able to switch off parts of the software logic where the software tries to be smart/make decisions is a normal practice. And it is easy to implement :slight_smile:

1 Like

A post was split to a new topic: IDE hangs on startup: "mkdir c:\Users\Veronika.arduinoIDE: Access is denied"

3 posts were split to a new topic: Sketch file, folder mismatch even though symlink name is correct