XOD 0.23.0 Brings Buses and IDE Performance
It’s time for a new XOD programming language and IDE release. For the 0.23.0 version, XOD developers focused on a few pain points that frustrated xoders for a while.
First, it is IDE performance. We have implemented a few new features in the recent versions and although they carry xoding power they also negatively affected IDE responsiveness. Sometimes in a complex project just moving a node took a few seconds 😵. That’s because on every little change XOD IDE re-validated the whole project and all libraries to detect whether the difference introduced an error or not. That was massive overkill.
Now, when you make a change, the system analyzes does it have a chance to introduce this-or-that kind of error and runs only the relevant re-computations. It allows skipping the most calculations that were previously run in any case.
TL;DR: XOD IDE now works 5 to 10x faster when moving, creating, deleting links and nodes, binding values, performing a search, and monitoring watched values.
In not-so-trivial programs patches become really complicated from time to time because the web of links crossing everything everywhere makes the program really hard to understand and explain.
At the same time much of visual complexity is often created by one or a few “link clusters.” To solve the problem XOD now offers so-called buses.
If you’ve dealt with electronic schemes, you know what GND and Vcc buses are: regardless of the number of their symbols on a scheme, they essentially denote the same wire, that is they are connected implicitly behind the scenes. XOD takes the same principle.
Take a look at a patch equivalent to the one above which employs buses:
Now it’s easier to see the main flow and the secondary links no longer pollute the canvas. Read more about buses in the new guide article in XOD documentation.
Watch and constant nodes improvements
One annoying thing about
constant-* nodes is that by default they show “consta…” label rather than the actual value they hold. We addressed it and now constants show their values unless the label is intentionally overridden.
…But one slot in width is often too little to contain the whole value. The same is true for
watch’es. So, we made the constants and watches resizable.