Academic
Publications
Mint: Java multi-stage programming using weak separability

Mint: Java multi-stage programming using weak separability,10.1145/1806596.1806642,Edwin Westbrook,Mathias Ricken,Jun Inoue,Yilong Yao,Tamer Abdelatif

Mint: Java multi-stage programming using weak separability   (Citations: 6)
BibTex | RIS | RefWorks Download
Multi-stage programming (MSP) provides a disciplined approach to run-time code generation. In the purely functional setting, it has been shown how MSP can be used to reduce the overhead of abstractions, allowing clean, maintainable code without pay- ing performance penalties. Unfortunately, MSP is difficult to com- bine with imperative features, which are prevalent in mainstream languages. The central difficulty is scope extrusion, wherein free variables can inadvertently be moved outside the scopes of their binders. This paper proposes a new approach to combining MSP with imperative features that occupies a "sweet spot" in the design space in terms of how well useful MSP applications can be ex- pressed and how easy it is for programmers to understand. The key insight is that escapes (or "anti-quotes") must be weakly separable from the rest of the code, i.e. the computational effects occurring inside an escape that are visible outside the escape are guaranteed to not contain code. To demonstrate the feasibility of this approach, we formalize a type system based on Lightweight Java which we prove sound, and we also provide an implementation, called Mint, to validate both the expressivity of the type system and the effect of staging on the performance of Java programs.
Cumulative Annual
View Publication
The following links allow you to view full publications. These links are maintained by other sources not affiliated with Microsoft Academic Search.
    • ...MetaOCaml [2] and Mint [44] have been proposed as a disciplined approach to building code generators...
    • ...Only very recently have type-systems been devised to handle both staging and effects [23, 24, 44]...
    • ...Mint [44], a multi-stage extension of Java, restricts non-local operations within escapes to final classes which excludes much of the standard Java library...
    • ...Combining LMS with the type system of Westbrook et al. [44] would be an interesting avenue for future research, if utmost security is strived for...

    Tiark Rompfet al. Lightweight modular staging: a pragmatic approach to runtime code gene...

    • ...Multi-staged static type systems [13, 37, 25, 40] and their inference algorithms can be considered sound static analyses, but extending them for analyzing other behavior than types (´ a la effect type systems [27, 22, 39]) is also constrained by the aforementioned infinite-concretization trap...
    • ...Multi-staged static type systems [13, 37, 25, 40] and their inference algorithms are limited forms of staged static analyses...

    Wontae Choiet al. Static analysis of multi-staged programs via unstaging translation

    • ...As an alternative to dynamic typing, the Java-like metaprogramming language Mint [20] simply prohibits the sharing of state between different meta-programming stages, resulting in a statically sound typing system...
    • ...We believe that both suggestions can be made to coexist with modern logics for higher-order state [2,21], in the case of [20] easily so...

    Martin Bergeret al. Program Logics for Homogeneous Meta-programming

    • ...This includes the most recently proposed MSP Java extension 'Java Mint' [7, 8, 9], and the C# extension "Metaphor" [10, 11]...

    T. A. El-lateefet al. Software approach for performance improvement using multi-staging

    • ...MetaML [30], Prolog [28], OpenJava [31], and JavaMint [32] are meta-circular languages, while C++ [18], D [9], Meta-trait-Java [26] and MorphJ [16] use a specialized meta-language...
    • ...The comparison with JavaMint [32] is also interesting, since our work is specular in many ways: JavaMint generates code at runtime, which consists of expressions only, and whose type is statically known...

    Marco Servettoet al. MetaFJig: a meta-circular composition language for Java-like classes

Sort by: