Mon 3 Apr 2017 09:00 - 09:25 at D2.10 - Better Tools and Tooling Infrastructure

Debuggers in interactive programming environments are powerful tools to explore and develop systems at runtime.

However, among users of scripting languages such as Python or Ruby, a debugger is sometimes viewed as a rarely used “development time” tool. As Seaton, Van De Vanter, and Haupt have observed debugging support is assumed to come with compromises: there surely must be a performance impact; in order to minimize the impact when debugging is not needed the functionality surely must be limited; the complexity of debugging couples debuggers closely to just one language; and in order to actually use debugging facilities, one surely must accept the inconvenience of having to run the program in a special “debug” mode.

Due to the inconvenience involved in using debuggers in such systems, developers instead set up feedback loops by creating the infrastructure for quick, repeated test executions. This further cements the distinction between “development time” and “deployment time”: to a program running in production, this feedback loop infrastructure is not available and any issues have to be reproduced and distilled into tests on a development system before they can be fixed.

As Gilad Bracha has noted, this separation of development time and deployment time stands in contrast to environments in the Lisp, Smalltalk, and Self heritage that view programs as live, continuously evolving systems. The development environment is the runtime environment and developers can work with concrete objects and can interrupt, inspect, and modify runtime state, and keep running.

In this work, we present a prototype virtual machine (VM) written in RPython based on the RSqueak/VM that provides Squeak/Smalltalk’s live development and debugging to PyPy Python and Topaz Ruby. Of particular interest in this context is how the interpreters can be adapted in a general fashion for Smalltalk-style development, as well as the practical overhead of such an integration.

The core features of our prototype are:

  • A combination of multiple RPython interpreters in the same, cooperatively scheduled execution environment,
  • Smalltalk-style unhandled exception debugging for Ruby and Python,
  • Smalltalk-style edit-and-continue for Ruby and Python.
Extended Abstract (morevms17-final14.pdf)99KiB

Mon 3 Apr

MoreVMs-2017-papers
09:00 - 10:30: MoreVMs 2017 - Better Tools and Tooling Infrastructure at D2.10
MoreVMs-2017-papers149120280000009:00 - 09:25
Talk
File Attached
MoreVMs-2017-papers149120430000009:25 - 09:50
Talk
File Attached
MoreVMs-2017-papers149120580000009:50 - 10:15
Talk
File Attached
MoreVMs-2017-papers149120730000010:15 - 10:40
Talk
File Attached