There's some tribal knowledge around about Arduino IDE (and library) versions. I've heard from people that a certain version is the one that works and they don't want to update. Partly this is because they are using an old library and new code "breaks" the build.
Recently, I was talking with Paul, VK3HN, and he mentioned that he had a sketch that, when built for an Uno, was short of RAM.
Paul sent me the code, I compiled it, and didn't get the warning.
This was puzzling of course. I figured it could be one of two things:
- One of the libraries had been improved to use less RAM
- The gcc compiler bundled in the IDE had improved.
Here's the compile output from Paul:
The figure is dynamic memory use:
Paul: 1539
Mine: 1132
Quite a big difference if you only have 2048 bytes of RAM.
It turned out that I was on a slightly later version of the IDE 1.8.15 (not even the latest) and Paul was on 1.8.12.
I tried the beta of Arduino IDE 2 and got the same memory use so I think the version of gcc bundled in it is the same.
gcc has lots of options and, while I understand the Arduino IDE wants to keep thinks simple, it would be good if the compile options were exposed.
The lesson out of this is that the tools do get better and it's a good idea to upgrade.