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

Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change

09:00 - 10:30
Better Tools and Tooling InfrastructureMoreVMs at D2.10
09:00
25m
Talk
When a Mouse Eats a Python: Smalltalk-style Development for Python and Ruby
MoreVMs
Tim Felgentreff Hasso-Plattner-Institute, Potsdam, Fabio Niephaus Hasso Plattner Institute, University of Potsdam, Tobias Pape HPI, Germany, Robert Hirschfeld HPI
File Attached
09:25
25m
Talk
Debugging Await in Dart
MoreVMs
File Attached
09:50
25m
Talk
Building Reusable, Low-overhead Tooling Support into a High Performance Polyglot VM
MoreVMs
File Attached
10:15
25m
Talk
Debugging with Back-In-Time Evaluation
MoreVMs
Stefan Schulz Philipps-Universität Marburg, Christoph Bockisch Philipps-Universität Marburg
File Attached