cdfa / frugel

An error-tolerant live programming environment (my Master's thesis)
GNU General Public License v3.0
18 stars 3 forks source link

I/O support #32

Open cdfa opened 2 years ago

cdfa commented 2 years ago

Currently, the programming environment does not support languages with I/O, which would be necessary for any real-world language. Combining I/O with live programming is challenging because running code automatically may cause unintentional or even destructive side effects. Additionally, I/O actions may block execution indefinitely, which prevents the programming environment from providing runtime information for the whole program (in time).

The first issue is one of safety. Automatic program execution could be made safe by isolating the program from the rest of the system running on the computer using containers (as in Docker). Containers are already widely used for this purpose, so the remaining work is building an interactive system for defining container images based on the program's requirements and integrating this in a development environment. For prototyping, it would also be nice to be able to approve I/O actions interactively instead of having to modify a container image.

If the runtime environment of the program is brought under control of the programming environment, the performance issue is also solved more easily. Snapshots of intermediate container states could be used to skip the computations and I/O actions that lead up to that state in later executions.