Join us on:

Software Tools and Libraries

Session Chair: Vibha Sazawal, University of Maryland
Accelerating the Creation of Customized, Language-Specific IDEs in Eclipse
Philippe Charles, IBM T. J. Watson Research Center
Robert M. Fuhrer, IBM T. J. Watson Research Center
Stanley M. Sutton Jr., IBM T. J. Watson Research Center
Evelyn Duesterwald, IBM T. J. Watson Research Center
Jurgen Vinju, CWI

Full-featured integrated development environments (IDEs) have become critical to the adoption of new programming languages. Key to the success of an IDE is the provision of services tailored to the languages it supports. However, modern IDEs are large and complex, and the cost of constructing one from scratch can be prohibitive. Generators that work from language specifications reduce costs but produce environments that do not fully reflect distinctive language characteristics or user needs.

We believe that there is a practical middle ground between these extremes of IDE development that can be effectively addressed by an open, semi-automated strategy for IDE development. This strategy is to reduce the burden of IDE development as much as possible, especially for internal IDE details, while opening opportunities for significant customizations to IDE services that require only a modest amount of work. To reduce the effort needed for customization we provide a combination of frameworks, templates, and generators. We demonstrate an extensible IDE architecture that embodies this strategy, and we show that this architecture can be used to produce customized IDEs, with a moderate amount of effort, for a variety of interesting languages.

Debug All Your Code: Portable Mixed-Environment Debugging
Byeongcheol Lee, University of Texas at Austin
Martin Hirzel, IBM Watson Research Center
Robert Grimm, New York University
Kathryn McKinley, University of Texas at Austin

Programmers build large-scale systems with multiple languages to reuse legacy code and leverage languages best suited to their problems. For instance, the same program may use Java for ease-of-programming and C to interface with the operating system. These programs pose significant debugging challenges, because programmers need to understand and control code across languages, which may execute in different environments. Unfortunately, traditional multi-lingual debuggers require a single execution environment.

This paper presents a novel composition approach to building portable mixed-environment debuggers, in which an intermediate agent interposes on language transitions, controlling and reusing single-environment debuggers. We implement debugger composition in Blink, a debugger for Java, C, and the Jeannie programming language. We show that Blink is (1) relatively simple: it requires modest amounts of new code; (2) portable: it supports multiple Java Virtual Machines, C compilers, operating systems, and component debuggers; and (3) powerful: composition eases debugging, while supporting new mixed-language expression evaluation and Java Native Interface (JNI) bug diagnostics. In real-world case studies, we show that language-interface errors require single-environment debuggers to restart execution multiple times, whereas Blink directly diagnoses them with one execution. We also describe extensions for other mixed-environments to show debugger composition will generalize.

The Design of a Task Parallel Library
Daan Leijen, Microsoft Research
Wolfram Schulte, Microsoft Research
Sebastian Burckhardt, Microsoft Research

The Task Parallel Library (TPL) is a library for .NET that makes it convenient to express potential parallelism in a program. The library relies heavily on generics and delegate expressions to provide custom control structures expressing structured parallelism like map-reduce in users programs. The library implementation is build around the notion of a task as a finite CPU-bound computation. To capture the ubiquitous apply-to-all pattern the library also introduces the new concept of a replicable task. Tasks and replicable tasks are assigned to threads using work stealing techniques, but unlike traditional implementations based on the THE protocol, the library uses a novel data structure called a 'duplicating queue'. A distinguishing feature of duplicating queues is that they have sequentially inconsistent behaviour on architectures with weak memory models but capture this non-determinism in a benign way by sometimes duplicating elements. TPL ships as part of the Microsoft Parallel Extensions for .NET framework, is used as the foundation of Parallel LINQ queries.

Please email any questions to . This e-mail address is being protected from spambots. You need JavaScript enabled to view it