Solid is not really 100% solid, but just in some aspects, including the feedback resolution. A solid block is however still not compiled as a closed entity and all its internal parts participate on their own in the global scheduling by the compiler. This was a learning from SynC Modular, where automatic feedback resolution could have been inserted at a random position, sometimes deeply inside the structure and one doesn't see it. In the first version of ReaktorCore we didn't highlight the entire loop either (just the point of the implicit unit delay), and I guess that was the primary motivation for the solid feature. However it also proved useful in other aspects. In the end, most of the blocks can't be used for feedback resolution, as there are dependencies from inputs to outputs. Marking such blocks as solid makes this explicit and makes the builder workflow more predictable. Only a few modules (like unit delays and such) actually benefit from feedback resolution, and respectively need to be marked as non-solid.stefano-orastron wrote: Tue May 31, 2022 7:16 pm It seems like we might have overlooked Reaktor Core indeed - but the manual was a bit misleading. Now I'm seeing all the solid/non-solid stuff for feedbacks. If I understand correctly, if you set the relevant parts as non-solid, then it can actually deal with arbitrary block boundaries. And, yeah, given the complexity I suspect it may have quite some performance issues.
Edit: you could say that from the functional perspective solid behaves like 100% solid, so it's simpler to handle for the user. However under the hood it's still not really solid, to maintain the optimization possibilities.
Edit2: actually Edit1 is probably wrong, the solidity is not really 100%. Just in some aspects, as I originally wrote.
As for the performance issues, I challenge you to find some. Not that there are none, but the compiler is very advanced in "tearing the blocks apart" and recombining them back to the most performant linear code (or so is the goal at least
