You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The main selling point of Enso and Enso Studio is the language's interactivity. However, enabling this interactivity requires deep runtime support for introspection of running code. This allows the GUI to obtain values and type information to display to users, but also allows for the implementation of more complex functionality such as debuggers and a REPL.
Value
Without the support for runtime introspection it is impossible to provide the promised Enso GUI, so this is inherently very necessary.
Specification
The following elements are presented in order as a plan for the introspection functionality into the interpreter in a way that allows it to take place in parallel with the work on the new syntax (#806). Each of these phases should not break interpreter behaviour on master. Additionally, it is very important that the runtime and the engine only talk via org.graalvm.polyglot. There should never be an explicit runtime dependency on runtime by either gateway or language_server.
Take the interpreter's handling of dependencies and the execution flow and streamline it to make it work with interactive workflows (Re-Architect the Interpreter Lifecycle #756).
Design support for multi-client connections in the engine, and record this design in the documentation (Design Rudimentary Multi-Client Support #736). From now on, all future functionality should account for multi-client development.
Summary
The main selling point of Enso and Enso Studio is the language's interactivity. However, enabling this interactivity requires deep runtime support for introspection of running code. This allows the GUI to obtain values and type information to display to users, but also allows for the implementation of more complex functionality such as debuggers and a REPL.
Value
Without the support for runtime introspection it is impossible to provide the promised Enso GUI, so this is inherently very necessary.
Specification
The following elements are presented in order as a plan for the introspection functionality into the interpreter in a way that allows it to take place in parallel with the work on the new syntax (#806). Each of these phases should not break interpreter behaviour on master. Additionally, it is very important that the runtime and the engine only talk via
org.graalvm.polyglot
. There should never be an explicit runtime dependency onruntime
by eithergateway
orlanguage_server
.text/openFile
#665, Implementtext/closeFile
#664, Implementtext/save
#663, Implementtext/applyEdit
#662, Implementtext/didChange
#661).executionContext/create
#658, ImplementexecutionContext/push
#657, ImplementexecutionContext/expressionValuesComputed
#656, Execution Context Integration with Text Change Events #655, ImplementexecutionContext/destroy
#654, ImplementexecutionContext/pop
#653, ImplementexecutionContext/recompute
#652, ImplementexecutionContext/fork
#481).executionContext/pause
andunpause
methods #471, ImplementexecutionContext/fork
#481).Acceptance Criteria & Test Cases
The text was updated successfully, but these errors were encountered: