Arduino IDE 2.3.8 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 spurious platform and library installation failures due to download timeout

arduino/arduino-ide#2862, arduino/arduino-cli#3076, arduino/arduino-cli#3013

When an Arduino boards platform is installed via Boards Manager, or a library installed via Library Manager, files are downloaded from the Internet.

A timeout system is in place to allow Arduino IDE to recover from the situation where a download attempt hangs for some reason. Previously, this timeout system was incorrectly implemented in a way that caused it to impose a hard 60 second time limit for each download. Since some of the files of boards platform installation are quite large, this caused installations to fail spuriously for users who didn't have a high speed Internet connection. The same problem could also occur during installations of especially large libraries by users with slower Internet connections.

The timeout system has now been corrected so that it will only trigger in the case of long periods without progress during the download operations.

Avoid compilation failure for sketches with UTF-8 BOM encoding

arduino/arduino-ide#2862, arduino/arduino-cli#2983, arduino/arduino-cli#3015

Some editors add a "byte order mark" (BOM) to the start of content. Previously, if this character was present in a sketch code file, it would cause compilation to fail:

C:\Users\per\Documents\Arduino\Foo\Foo.ino:1:1: error: stray '\357' in program
 /* test */
 ^
C:\Users\per\Documents\Arduino\Foo\Foo.ino:1:2: error: stray '\273' in program
 /* test */
  ^
C:\Users\per\Documents\Arduino\Foo\Foo.ino:1:3: error: stray '\277' in program
 /* test */
   ^

This cryptic error was difficult for users to troubleshoot since it was caused by an invisible character.

BOM characters are now removed from sketch code files before they are passed to the C++ compiler, avoiding the compilation failure.

Add support for native Windows ARM tool builds

arduino/arduino-ide#2862, arduino/arduino-cli#3035

Arduino IDE utilizes various helper tools when performing operations such as compilation and uploading. Builds of these tools are provided for each host architecture, and Arduino IDE automatically installs the appropriate build for your PC.

Thanks to the Prism emulator, x86 executables can be used on Windows ARM machines. However, the best performance will be obtained from using native builds. Arduino IDE now supports the automatic installation of native Windows ARM builds of tool dependencies if available. It will fall back to installing x86 builds if the tool maintainer has not published Windows ARM builds.

Adjust "Blink" example comments to avoid assumption of on-board LED circuit configuration

arduino/arduino-ide#2869, arduino/arduino-examples#94

The Arduino IDE installation includes a collection of "built-in" examples, which are accessible via the File > Examples menu.

Previously, the comments in the "Blink" example assumed an active high circuit. This meant the comments were incorrect when used with a board that has an active low circuit.

Those comments have been reworded so that they will be equally correct for all boards.

(Thanks @FrankSchmidt)

Fix inappropriate compilation cache use after platform update

arduino/arduino-ide#2862, arduino/arduino-cli#3042

For the sake of efficiency, Arduino IDE caches the objects produced by a sketch compilation and reuses those for subsequent compilations when appropriate. It is important that components of the sketch program be recompiled from source when the sources have changed since the cache was established.

Previously, it was possible that the cache might be inappropriately used under certain conditions after the update of an Arduino boards platform. Such a reuse could cause unexpected results.

Update Arduino CLI dependency to 1.4.1

arduino/arduino-ide#2862

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

Expand and improve translations

arduino/arduino-ide#2840, arduino/arduino-ide#2862, arduino/arduino-cli#2978, arduino/arduino-cli#3065

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


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

3 Likes

I noticed a slight difference in compiler output versus 2.3.7 (expected with changes), seen here: Uploading nano card on tumbller - #9 by xfpd

Here is the diff between the two:

@@ -16,8 +16,8 @@
 C:\Users\user\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\cores\arduino -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\variants\eightanaloginputs -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\libraries\Wire\src C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\libraries\Wire\src\Wire.cpp -o nul
 C:\Users\user\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\cores\arduino -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\variants\eightanaloginputs -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\libraries\Wire\src C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\libraries\Wire\src\utility\twi.c -o nul
 Generating function prototypes...
-C:\Users\user\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\cores\arduino -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\variants\eightanaloginputs -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\libraries\Wire\src C:\Users\user\AppData\Local\arduino\sketches\43821B1C0F19C183B92BE6F09DD6330D\sketch\Tumbller.ino.cpp -o C:\Users\user\AppData\Local\Temp\2218099315\sketch_merged.cpp
-C:\Users\user\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\user\AppData\Local\Temp\2218099315\sketch_merged.cpp
+C:\Users\user\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\cores\arduino -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\variants\eightanaloginputs -IC:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\libraries\Wire\src C:\Users\user\AppData\Local\arduino\sketches\43821B1C0F19C183B92BE6F09DD6330D\sketch\Tumbller.ino.cpp -o C:\Users\user\AppData\Local\Temp\1125229130\sketch_merged.cpp
+C:\Users\user\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\user\AppData\Local\Temp\1125229130\sketch_merged.cpp
 
 Compiling sketch...
 "C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\eightanaloginputs" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src" "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\Adafruit_NeoPixel.cpp" -o "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\Adafruit_NeoPixel.cpp.o"
@@ -36,6 +36,16 @@
               ^~~~~~~
 "C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\eightanaloginputs" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src" "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\KalmanFilter.cpp" -o "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\KalmanFilter.cpp.o"
 "C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\eightanaloginputs" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src" "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\MPU6050.cpp" -o "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\MPU6050.cpp.o"
+C:\Users\user\Downloads\Tumbller\MPU6050.cpp: In member function 'void MPU6050::getMotion9(int16_t*, int16_t*, int16_t*, int16_t*, int16_t*, int16_t*, int16_t*, int16_t*, int16_t*)':
+C:\Users\user\Downloads\Tumbller\MPU6050.cpp:614:61: warning: unused parameter 'mx' [-Wunused-parameter]
+                          int16_t *gy, int16_t *gz, int16_t *mx, int16_t *my,
+                                                             ^~
+C:\Users\user\Downloads\Tumbller\MPU6050.cpp:614:74: warning: unused parameter 'my' [-Wunused-parameter]
+                          int16_t *gy, int16_t *gz, int16_t *mx, int16_t *my,
+                                                                          ^~
+C:\Users\user\Downloads\Tumbller\MPU6050.cpp:615:35: warning: unused parameter 'mz' [-Wunused-parameter]
+                          int16_t *mz) {
+                                   ^~
 "C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\eightanaloginputs" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src" "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\MsTimer2.cpp" -o "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\MsTimer2.cpp.o"
 C:\Users\user\Downloads\Tumbller\KalmanFilter.cpp: In member function 'void KalmanFilter::Angle(int16_t, int16_t, int16_t, int16_t, int16_t, int16_t, float, float, float, float, float, float)':
 C:\Users\user\Downloads\Tumbller\KalmanFilter.cpp:34:34: warning: unused parameter 'ax' [-Wunused-parameter]
@@ -48,25 +58,15 @@
  void KalmanFilter::Angle(int16_t ax, int16_t ay, int16_t az, int16_t gx, int16_t gy, int16_t gz, float dt, float Q_angle, float Q_gyro, float R_angle, float C_0, float K1) {
                                                                                                                                                                          ^~
 "C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\eightanaloginputs" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src" "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\Tumbller.ino.cpp" -o "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\sketch\\Tumbller.ino.cpp.o"
-C:\Users\user\Downloads\Tumbller\MPU6050.cpp: In member function 'void MPU6050::getMotion9(int16_t*, int16_t*, int16_t*, int16_t*, int16_t*, int16_t*, int16_t*, int16_t*, int16_t*)':
-C:\Users\user\Downloads\Tumbller\MPU6050.cpp:614:61: warning: unused parameter 'mx' [-Wunused-parameter]
-                          int16_t *gy, int16_t *gz, int16_t *mx, int16_t *my,
-                                                             ^~
-C:\Users\user\Downloads\Tumbller\MPU6050.cpp:614:74: warning: unused parameter 'my' [-Wunused-parameter]
-                          int16_t *gy, int16_t *gz, int16_t *mx, int16_t *my,
-                                                                          ^~
-C:\Users\user\Downloads\Tumbller\MPU6050.cpp:615:35: warning: unused parameter 'mz' [-Wunused-parameter]
-                          int16_t *mz) {
-                                   ^~
 Compiling libraries...
 Compiling library "Wire"
-"C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\eightanaloginputs" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src" "C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src\\Wire.cpp" -o "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\libraries\\Wire\\Wire.cpp.o"
 In file included from C:\Users\user\Downloads\Tumbller\Tumbller.ino:15:0:
 C:\Users\user\Downloads\Tumbller\Ultrasonic.h: In function 'void obstacleAvoidanceMode()':
 C:\Users\user\Downloads\Tumbller\Ultrasonic.h:208:56: warning: self-comparison always evaluates to true [-Wtautological-compare]
      if (distance_value >= distance_min && distance_max <= distance_max)
                                            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~
 "C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -c -g -Os -Wall -Wextra -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\eightanaloginputs" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src" "C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src\\utility\\twi.c" -o "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\libraries\\Wire\\utility\\twi.c.o"
+"C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\eightanaloginputs" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src" "C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\libraries\\Wire\\src\\Wire.cpp" -o "C:\\Users\\user\\AppData\\Local\\arduino\\sketches\\43821B1C0F19C183B92BE6F09DD6330D\\libraries\\Wire\\Wire.cpp.o"
 Compiling core...
 Using precompiled core: C:\Users\user\AppData\Local\arduino\cores\arduino_avr_nano_cpu_atmega328_521f16bbc40a6c70ccbbb254bc527297\core.a
 Linking everything together...
  • Sketch build folder name changed from 2218099315 to 1125229130.
  • Compiler warnings were printed at a different relative position on the output (but identical content).
  • Swapped order of printed compilation commands for Wire/Wire.cpp and Wire/utility/twi.c.

The compilation process is threaded, which makes the order of the output a bit non-deterministic. So I'm not certain that the differences are actually caused by the update.

2 Likes

Is a similar ARM update still coming for Apple Silicon or has it happened and I didn't notice?

The equivalent support for installing native Apple Silicon tool builds when running on an Apple Silicon machine was added over five years ago:

1 Like

I am pretty sure I had to install Rosetta and several Mac users on this forum were given the same reply in the last two years. Are we talking about the same thing? I don;t mean the main download, that does have two verions, Intel and Silicon but some of the toolchain needed Rosetta long after 5 years ago.
You said the following re needing Rosetta, I think Aug 2025 is well inside 5 years.
OR am I totally misunderstanding you?

This is about Arduino IDE supporting the installation of Apple Silicon tool builds when those builds are available.

The other piece of the puzzle is that Apple Silicon builds of some tools have not been produced. In this case, Arduino IDE falls back to installing the x86 build of the tool. In this case, Rosetta is required.

No work is needed in Arduino IDE to support working fully without Rosetta. The remaining work is to add support for producing Apple Silicon builds to the build systems of each tool, and then producing such builds. That work needs to be done for each individual tool. Some of those tools are maintained by the Arduino company. Some tools that are only dependencies of 3rd party boards platforms are maintained by other entities, without any involvement from Arduino.