full functionality of this site and enable such things as forum posting.
I am not really thrilled to read that this can break sketches, also implying you divert further from the Arduino compatibility?
Please also post info on how to revert back to the old, i.e. the current status if this gives problems!
Actually it's going closer to the Arduino compatibility, not further from it. The end result will be an improvement in compatibility, there's just this one step along the way.
Reverting is very easy, as the actual compiler change is just one line in the compiler.txt config file. If you just remove (or comment out) the
compile.preproc= line you will get the old functionality.
But I am confident you won't want it, since this change will make things work that previously didn't:
#ifdef will be honoured so no spurious libraries will be attempted to be compiled
System headers that also have same-named files in a library won't then cause that library to be incorrectly included
This change will basically bring it into line with how the Arduino IDE does it.
And anyway, the "sketch breaking" is only if you don't upgrade, otherwise you may just fall foul of the bug. There's other ways of working around it too, such as manually compiling a library that has been included twice, so it's not a show stopper if you don't upgrade - you just have to be aware of what might happen.
The symptom is:
You include two different headers from the same library
UECIDE includes the library twice in the tree, once for each header
UECIDE compiles both copies in parallel, and that compilation interferes between the two
If you compile one of them manually (right click on it and select "Compile Now") the other one also shows as compiling. Compilation works, and UECIDE shouldn't need to compile them again when you compile your sketch.
So it's not breaking
your sketch, more breaking the compilation flow on rare occasions.