Skip to content
Basheer Subei edited this page Jul 29, 2015 · 77 revisions

See this issue for current progress on the REPL feature.

Summary

The goal is to incorporate interactive features into the Swift/T language and environment, so users could interactively run Swift code and monitor its progress, making it easier to learn Swift and prototype Swift code.

Main features into the shell-like environment

  • Monitoring commands
    • overview status including active servers and workers.
    • status of running tasks (like ps)
    • view all data members and inspect them while tasks are running in the background.
  • To run and evaluate multiple Swift/T code snippets.

List of tasks to complete:

  • STC -c flag to omit generating boilerplate.
  • Have the -c STC flag generate unique names (functions and globals) for tic code, maybe using prefixes. When running evaling -O0 tic code with multiple workers, the other worker ranks crash and say invalid command name for the SOFT, HARD proc names. I'm assuming that's because they were redefined using uplevel #0.
  • REPL should load user-input tic file (only proc definitions and global var assignments), then spawn tasks (max priority) for all other workers to do the same. Then (barrier or not), it should execute any calls in main of the tic.
  • ls command to view state of all global vars. Use the global_map (Tcl dict) that gets created whenever create_globals is called (Tim's new commits). Also needs below task.
  • only create TDs once (on worker 0), then create globals_map on all workers (put tasks), and set the variable references on all workers (put tasks).
  • double check the multicreate permanent thing.
  • make STC use multicreate_repl instead of declare_globals when -c is passed.
  • the local references to the global TDs are being lost at some point along the way
  • stdout doesn't work when multiple turbine workers are used (even on worker 0).
  • double-check the put task priority thing (make sure the "put to all workers" gives max priority)
  • more formal definition of use cases. Look at things like IPython and how user interacts.
Clone this wiki locally