Arduino IDE 2.3.10 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/#ide-download-section


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

Fix inappropriate sketch compilation cache reuse

arduino/arduino-ide#2920, arduino/arduino-cli#3206, arduino/arduino-cli#3202

When you compile a sketch in Arduino IDE, the compiled objects are cached. On subsequent "Verify/Compile" operations, these objects are reused instead of recompiling those source code components when appropriate. This significantly reduces the duration of a compilation.

Previously, under specific conditions, the cached object from the .ino files of the sketch were reused even when the source code had been modified since the time the cache was established. This caused the sketch program behavior to not reflect the source code as it was at the time of the "Verify/Compile" operation.

The determination of when the sketch .ino files should be recompiled has now been fixed and the cache will now always be used only in the case where no modifications have been made since.

Support forcing recompilation

arduino/arduino-ide#2923

When you compile a sketch in Arduino IDE, the compiled objects are cached. On subsequent "Verify/Compile" operations, these objects are reused instead of recompiling those source code components when appropriate. The use of the cache significantly reduces the duration of a compilation.

The sketch build system is designed to automatically recompile source code if changes have been made since the time the cache was established. So there is no need for the user to manage the cache, or even be aware of the existence of the caching system. However, in rare instances where something is wrong with the cache (e.g., the files were corrupted somehow), it may be necessary for the user to force a full recompile. Additionally, advanced users sometimes wish to perform a full recompile for obscure reasons.

It is now possible to trigger a full recompile via any of the following methods:

  • Holding the Shift key when clicking the "Verify" button on the Arduino IDE toolbar.
  • Pressing the Ctrl+Shift+R keyboard shortcut (Command+Shift+R).

Support precompiled library binary path configuration

arduino/arduino-ide#2920, arduino/arduino-cli#3199

In addition to the traditional compilation from source code, the Arduino library framework also supports precompiled libraries. In order to utilize this feature, the library developer must place the compiled objects for a given target under a specific subfolder in the library.

The sketch build system determines the path of the compiled objects by parsing the compilation command. For certain boards platforms, that approach might not be suitable. For this reason, support has been added for platform developers to use an alternative approach of defining the relevant precompiled binary path components via platform properties:

https://arduino.github.io/arduino-cli/latest/library-specification/#precompiled-binaries

Fix incorrect display of platform install script status messages

arduino/arduino-ide#2920, arduino/arduino-cli#3194, arduino/arduino-cli#3176

An Arduino boards platform may require the performance of operations on install or uninstall. For example, it may be necessary to install Windows drivers to support the boards of the platform. In order to support this requirement, Boards Manager automatically runs special scripts if present in the installed platform or tool dependencies. Messages are printed in Arduino IDE's "Output" panel to indicate the execution of these scripts.

Previously, Boards Manager printed the status messages even when no script was being executed.

(Thanks @pjrc)

Update Arduino CLI dependency to 1.5.1

arduino/arduino-ide#2920

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

Expand and improve translations

arduino/arduino-ide#2884, arduino/arduino-ide#2920, arduino/arduino-cli#3197

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


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

How is one supposed to remember that option :slight_smile: I don't think anybody will hold a key (shift, alt, ctrl) or combination thereof when hovering the mouse over a button.
I've logged a feature request; Add "rebuild" option to sketch menu · Issue #2925 · arduino/arduino-ide · GitHub.

I get the download offer for 2.3.10 from the 2.3.9 IDE but I like to install releases manually as I keep every single Arduino release since pre 1.0 on my machine for testing.

I also see the 2.3.10 tag on the github repo, but I'm not seeing 2.3.10 on the the download page.
I still see 2.3.9

Am I blind?

--- bill

No. And the link will download 2.3.9.

I got 2.3.10...

Yep. You just showed and confirmed, what I reported.
The offer for 2.3.10 shows up in the IDE.
I'm talking about the Arduino software download page.
It shows 2.3.9 and the link on that page downloads 2.3.9

I do not do IDE installs/updates from the IDE.
I do manual installs so I have more control where it goes since I have dozens of IDE installations on my machine.

--- bill

This is what @bperrybap reported: https://www.arduino.cc/en/software/ still gives 2.3.9

Thanks for pointing this out. I had written about this in the release announcement, but I see now I somehow managed to remove that note.

I apologize for any confusion.

The developers made the release at the end of their day, and didn't get around to updating the Software page. The update is already in progress, so it will be updated after they start work.

Until then, you can download Arduino IDE from the links under the "Assets" section of the release page here:

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

I figured that was the case.

BTW, I really like the clean compile option to re-build everything.
I've been unlucky enough to experience many cache issues - which is why I typically still use IDE 1.x for my library development.

2.x Builds are so much faster these days. I'm impressed.
On my more than 10 year old dell optiplex 9020 the clean build of everything using IDE 2.3.10 for one of my large hd44780 library examples for the AVR platform now only takes 2 seconds and about 1 second when modules in the core are already built.

Kind of makes you wonder if all the complexity for the caching is really needed all that much anymore.

--- bill

Yeah! It is really great the developers were able to improve the efficiency.

This work was driven by the need to achieve good performance when Arduino App Lab compiles the sketch component of Arduino Apps on the relatively resource constrained UNO Q platform. Since all official development tools (and some 3rd party tools as well) all utilize the same sketch build system via Arduino CLI, the work can benefit all users.

I think you would find it still has a significant benefit when compiling larger libraries, or for boards with a heavier core.

I was given the option to install or not. I could have chosen to download only (selecting "not now").

But then is it possible to to select that you want the zip image vs the appimage and then were does the IDE store the download?

I still like having full control.
I've been burned in the past by letting the IDE update things particularly core libraries since it was slamming them into the users private sketchbook/libraries area.

--- bill

Yeah, I'm interested in trying this with the ESP32 platform which is quite larger than the AVR platform core.
For some reason in the past ESP32 builds always rebuilt everything every time.
Maybe that has been resolved.
--- bill

What should clicking the Upload icon with shift held down or using the Ctrl+Shift+U keyboard shortcut do ?

The former just seems to do a normal compile rather than a recompile whilst the latter causes an error

Failed programming: recipe not found 'program.pattern'

It would seem to make sense that a full recompile could be done before an upload

That is Upload Using Programmer.

That might depend on the select board, not sure.

So it is.
I foresee some confusion

A menu option to always recompile is looking like a better solution to me

Not that I've seen. It always reconverts the .ino into .ino.cpp and builds that. Benchmarking this complex sketch (from maybe a year ago), it has a bunch of .cpp too; while that time is saved, it always spends at least a few seconds on the .ino.cpp

clean cached
prepare 0.906 0.878
detecting libraries 94.407 12.608
function prototypes 1.415 1.402
compiling sketch 8.320 2.558
compiling libraries 37.658 0.069
compiling core 6.318 0.062
linking 7.726 7.630
final 0.565 0.563
-------- --------
Total 157.314 25.770

The library and core times on a rebuild are near-zero, and it says "Using previously compiled file" a lot and "Using previously compiled core" in the verbose output.

Note that, starting from Arduino IDE 2.3.9, the compilation cache also covers the .ino files. So the .ino source code will only be recompiled if modifications have been made since the time the cache was established:

https://forum.arduino.cc/t/arduino-ide-2-3-9-is-now-available/1445996#p-8443176-avoid-recompiling-sketch-source-code-3

Arduino IDE 2.3.10 is now available for download from the "Software" page.

Updated times with CLI v1.5.1 -- single run, quad-core

clean cached
prepare 1.435 1.584
detecting libraries 48.482 0.503
function prototypes 1.782 0.000
compiling sketch 8.422 0.009
compiling libraries 51.726 0.083
compiling core 7.360 0.025
linking 10.824 9.749
final 1.319 1.316
-------- --------
Total 131.350 13.269

IIRC, the run posted earlier did not have multi-threaded "detecting libraries" either; this does, cutting that time in half on a clean build. Sketch re-build time is near-zero.