The Dart virtual machine supports hot reloading of code, e.g., changing the code while it is executing, without the need to restart the program. The Dart workflow for such changes differs from what is done in classical live environments like Smalltalk. The Dart VM monitors changes to source files and updates the program with respect to changes across the program’s code base atomically. The system runs on mobile devices (both Android and iOS).
The Dart programming language  includes built in support for asynchrony  via constructs like async functions, await expressions and await for loops. Debugging asynchronous code is notoriously difficult. When an asynchronous function fails unexpectedly, the code that invoked is no longer active. If no special effort is made, even a stack trace beyond the entry into the asynchronous code is not available. The Dart VM supports complete stack traces for asynchronous code, as well the ability to step into, out of, or over asynchronous code. In addition, the Dart VM supports hot reloading, i.e., the ability to modify code during program execution allowing users to make live fixes, known as fix-and-continue debugging. These features work together seamlessly to provide a high quality debugging experience for asynchronous code.
The Dart VM comes with an interactive tool, the Observatory, that allows programmers to debug, profile and monitor the running system in various ways. We plan to demonstrate Observatory updating and debugging a running inter- active mobile application.
A technical description of the implementation of async debugging in Dart will be presented at the MoreVMs workshop at Programming 17. A paper on hot reloading in the Dart VM is in preparation.
 Gilad Bracha. The Dart Programming Language. Addison-Wesley, Boston, Massachusetts, 2015.
 Erik Meijer, Kevin Milliken, and Gilad Bracha. Spicing up Dart with side effects. Queue, 13(3):40:40-40:59, March 2015.