v0.0.9 Release Notes
Atomic Edits
The main stars of the show of version v0.0.9 are atomic edits, that improves cache performance and allows a much more robust and capable reference refactoring implementation than before.
Until now the unit of parsing was a line, basically on every new character addition or deletion the system reparsed the input string and replaced the entire old idea branch with the new result. This caused unnecessary cache invalidations in certain cases.
Atomic edits brought tree updates down to the idea level, so instead of replacing and invalidating entire branches the system now realizes when it's enough to change the value of a single idea. The system still reparses the entire line, but then before it replaces the old one, it compares it with the old version and detects if only single value has changed. In these cases it only swaps the modified idea's value instead of the entire line. This also means that in these cases only a single idea's evaluation paths get invalidated.
This increases cache performance - in certain cases dramatically -, which translates to a more responsible system in practice. Atomic edits also make the robust implementation of several features much easier.
Same Line Refactoring
In this release the only affected feature is label renaming and reference refactoring, which got rewritten almost from scratch. The new implementation is now based on atomic edits, since changing the name part of a Label is exactly a case that can be catched with it. The main user facing change is that now it's possible to refactor label names inside lines. It may worth mentioning that this was the first time, when we're updating the input string itself while we're editing it.
Spaces Insertion
To further avoid unnecessary idea tree updates the system now detects cases when the user inserts or deletes space characters which coalesces with other space characters in the idea string. In these cases it doesn't update the idea tree at all.
Demo
Please check out the belonging demo video .