So it is more interesting topic here. We want to provide much more functional experience here. It is not yet implemented perfectly, so sometimes you need to do things manually now, but look:
If you put node
readFile and you are reading a file from disk, we should thread the world (your computer, your filesystem etc) as a state that could change. Luna in its pure nature should read the file (lazily, when necessary) and should re-evaluate nodes when the file changes on disk. This should be the default behavior. This way you think about the program as like about a state that is always up to date.
Moreover, every node will have an option to “freeze” its computations, so you could create a node on the stage, freeze it and it will load the file only once from disk. If the file changes you will have to click “reload” button on this node to update it. This will work with every type of node on the scene, including custom defined nodes.
If you woudl like then to “simulate” run behavior, you will use
readDB / … nodes that are freezed and when you would like to recompute them, you will need to press “refresh all button”, which will refresh all feezed nodes as necessary.
This is where we are heading, because it gives you the cleanest and most functional approach out there. Moreover, you can use the command line Luna compiler to run Luna programs in command line the ‘good old way’, however the GUI was designed to provide higher abstraction level and don’t make you thinking about “running something”.
And yes, it is not there yet, so its rough around the corners. If you have any specific use case now, we’d love to help choose you the best workflow now.
What do you think about it ?