... and #undef statements). The partial preprocessor adds these features to the macro table and c... more ... and #undef statements). The partial preprocessor adds these features to the macro table and considers them defined or undefined with presence condition true (ie ... For example, we can initiallyundefine all macros used for include guards (eg, by pattern matching _*_H), so that ...
Proceedings of the 3rd Annual Conference on Systems Programming and Applications Software For Humanity, Oct 19, 2012
ABSTRACT Conventional collection libraries do not perform automatic collection-specific optimizat... more ABSTRACT Conventional collection libraries do not perform automatic collection-specific optimizations. Instead, performance-critical code using collections must be hand-optimized, leading to non-modular, brittle, and redundant code. We propose SQuOpt, the Scala Query Optimizer, a deep embedding of the Scala collection library performing collection-specific optimizations automatically without external tools or compiler extensions.
Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity - SPLASH '12, 2012
ABSTRACT Conventional collection libraries do not perform automatic collection-specific optimizat... more ABSTRACT Conventional collection libraries do not perform automatic collection-specific optimizations. Instead, performance-critical code using collections must be hand-optimized, leading to non-modular, brittle, and redundant code. We propose SQuOpt, the Scala Query Optimizer, a deep embedding of the Scala collection library performing collection-specific optimizations automatically without external tools or compiler extensions.
Proceedings of the 4th Workshop on Scala - SCALA '13, 2013
ABSTRACT Generalized algebraic data types (GADTs) allow embedding extensible typed ASTs and trans... more ABSTRACT Generalized algebraic data types (GADTs) allow embedding extensible typed ASTs and transformations on them. Such transformations on typed ASTs are useful for code optimization in deeply embedded DSLs, for instance when using Lightweight Modular Staging (LMS). However, in Scala it is hard to make transformations for typed ASTs type-safe. Therefore, AST transformations in LMS are often not fully typechecked, preventing bugs from being caught early and without extensive testing. We show that writing type-safe transformations in such embeddings is in fact not just hard, but impossible without using unsafe casts or significantly restricting extensibility: Declaration-site variance opens GADTs representing typed ASTs not only to desirable extensions, but also to extensions that introduce exotic terms. We make the problem concrete on an embedding of λ<: through covariant GADTs. We discuss solution approaches, and sketch a Scala extension to address this problem without either introducing unsafe casts or restricting extensibility. We believe a complete solution would significantly ease writing transformations by allowing type-checking to verify them, and thus would ease their development.
Proceedings of the 2007 ACM symposium on Applied computing - SAC '07, 2007
To fight community abuse, we introduce in this paper a set of simple, yet powerful, trust protoco... more To fight community abuse, we introduce in this paper a set of simple, yet powerful, trust protocols, aimed at enforcing on a P2P network a boolean Code of Conduct verifiable by the network agents themselves. Having a boolean Code of Conduct which honest agents never violate allows effective enforcing of it. A formal model for trust protocol definition and analysis is also defined, and properties of these protocols are formally defined and proved according to this model.
... Lexical Macros and Conditional Compilation Christian Kästner Paolo G. Giarrusso Tillmann Rend... more ... Lexical Macros and Conditional Compilation Christian Kästner Paolo G. Giarrusso Tillmann Rendel Sebastian Erdweg Klaus Ostermann ... In addition, we provide a strategy to deal with macros and file inclusion, using a variability-aware lexer. ...
ABSTRACT Distributed object-oriented middlewares, like Java RMI or CORBA, abstract message sends ... more ABSTRACT Distributed object-oriented middlewares, like Java RMI or CORBA, abstract message sends into method calls, providing program-mers with a familiar object-oriented programming model. However, a re-mote method cannot mutate the heap of the client with the same ease as a local method without incurring significant overhead. Workarounding this limitation requires exposing implementation details of the server, thus compromising modularity. Existing solutions for Java do not implement the full Java semantics, in particular for multi-threaded programs. Al-ternatively, they require using non-standard JVMs, a requirement which compromises portability and interoperability. We discuss a simple approach to eliminate the semantic difference, char-acterize its overhead and discuss novel optimizations tailored to our sce-nario, which we believe will minimize the overhead.
... and #undef statements). The partial preprocessor adds these features to the macro table and c... more ... and #undef statements). The partial preprocessor adds these features to the macro table and considers them defined or undefined with presence condition true (ie ... For example, we can initiallyundefine all macros used for include guards (eg, by pattern matching _*_H), so that ...
Proceedings of the 3rd Annual Conference on Systems Programming and Applications Software For Humanity, Oct 19, 2012
ABSTRACT Conventional collection libraries do not perform automatic collection-specific optimizat... more ABSTRACT Conventional collection libraries do not perform automatic collection-specific optimizations. Instead, performance-critical code using collections must be hand-optimized, leading to non-modular, brittle, and redundant code. We propose SQuOpt, the Scala Query Optimizer, a deep embedding of the Scala collection library performing collection-specific optimizations automatically without external tools or compiler extensions.
Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity - SPLASH '12, 2012
ABSTRACT Conventional collection libraries do not perform automatic collection-specific optimizat... more ABSTRACT Conventional collection libraries do not perform automatic collection-specific optimizations. Instead, performance-critical code using collections must be hand-optimized, leading to non-modular, brittle, and redundant code. We propose SQuOpt, the Scala Query Optimizer, a deep embedding of the Scala collection library performing collection-specific optimizations automatically without external tools or compiler extensions.
Proceedings of the 4th Workshop on Scala - SCALA '13, 2013
ABSTRACT Generalized algebraic data types (GADTs) allow embedding extensible typed ASTs and trans... more ABSTRACT Generalized algebraic data types (GADTs) allow embedding extensible typed ASTs and transformations on them. Such transformations on typed ASTs are useful for code optimization in deeply embedded DSLs, for instance when using Lightweight Modular Staging (LMS). However, in Scala it is hard to make transformations for typed ASTs type-safe. Therefore, AST transformations in LMS are often not fully typechecked, preventing bugs from being caught early and without extensive testing. We show that writing type-safe transformations in such embeddings is in fact not just hard, but impossible without using unsafe casts or significantly restricting extensibility: Declaration-site variance opens GADTs representing typed ASTs not only to desirable extensions, but also to extensions that introduce exotic terms. We make the problem concrete on an embedding of λ<: through covariant GADTs. We discuss solution approaches, and sketch a Scala extension to address this problem without either introducing unsafe casts or restricting extensibility. We believe a complete solution would significantly ease writing transformations by allowing type-checking to verify them, and thus would ease their development.
Proceedings of the 2007 ACM symposium on Applied computing - SAC '07, 2007
To fight community abuse, we introduce in this paper a set of simple, yet powerful, trust protoco... more To fight community abuse, we introduce in this paper a set of simple, yet powerful, trust protocols, aimed at enforcing on a P2P network a boolean Code of Conduct verifiable by the network agents themselves. Having a boolean Code of Conduct which honest agents never violate allows effective enforcing of it. A formal model for trust protocol definition and analysis is also defined, and properties of these protocols are formally defined and proved according to this model.
... Lexical Macros and Conditional Compilation Christian Kästner Paolo G. Giarrusso Tillmann Rend... more ... Lexical Macros and Conditional Compilation Christian Kästner Paolo G. Giarrusso Tillmann Rendel Sebastian Erdweg Klaus Ostermann ... In addition, we provide a strategy to deal with macros and file inclusion, using a variability-aware lexer. ...
ABSTRACT Distributed object-oriented middlewares, like Java RMI or CORBA, abstract message sends ... more ABSTRACT Distributed object-oriented middlewares, like Java RMI or CORBA, abstract message sends into method calls, providing program-mers with a familiar object-oriented programming model. However, a re-mote method cannot mutate the heap of the client with the same ease as a local method without incurring significant overhead. Workarounding this limitation requires exposing implementation details of the server, thus compromising modularity. Existing solutions for Java do not implement the full Java semantics, in particular for multi-threaded programs. Al-ternatively, they require using non-standard JVMs, a requirement which compromises portability and interoperability. We discuss a simple approach to eliminate the semantic difference, char-acterize its overhead and discuss novel optimizations tailored to our sce-nario, which we believe will minimize the overhead.
Uploads
Papers by Paolo G. Giarrusso