Testing my example cesars/0-all-examples/0003-rich-time-schrolling v0.0.14 in version 0.30.1, the first thing I found is the lack of pulse-on-change, I solved it by changing to pulse-on-change(number).
Now in version 0.30.1 I have an error due to code too large, of 71% to 100%. (Arduino UNO)
Sketch uses 32368 bytes (100%) of program storage space. Maximum is 32256 bytes.
Global variables use 1958 bytes (95%) of dynamic memory, leaving 90 bytes for local variables. Maximum is 2048 bytes.
Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for tips on reducing it.
testing in 0.29.1
Sketch uses 23188 bytes (71%) of program storage space. Maximum is 32256 bytes.
Global variables use 1982 bytes (96%) of dynamic memory, leaving 66 bytes for local variables. Maximum is 2048 bytes.
Low memory available, stability problems may occur.
I’ve compared the generated C++ before and after 0.30. And yes, the problem is in the errors. Previously, they were ignored just in the place where they were emitted (the ERR pulse) and now every recursively downstream node makes a computation to check whether it is affected by an error or not. The deeper the node, the more complex the computation is:
These computations consume flash. The example above is a rollout of a single stage of the dataselect variadic node. And your example has maaany stages.
Well, I overlooked such scenarios and as a result, XOD 0.30 performs worse. I need some more time to find a solution to get back in terms of memory usage. If someone feels the power to solve this C++ riddle, help is much appreciated.
I did a test deactivating ERR on all the nodes of rtc and yes, the consumption of resources was reduced.
Sketch uses 20616 bytes (63%) of program storage space. Maximum is 32256 bytes.
Global variables use 1753 bytes (85%) of dynamic memory, leaving 295 bytes for local variables. Maximum is 2048 bytes.
Low memory available, stability problems may occur.