164 research outputs found

    Unifying type systems for mobile processes

    Full text link
    We present a unifying framework for type systems for process calculi. The core of the system provides an accurate correspondence between essentially functional processes and linear logic proofs; fragments of this system correspond to previously known connections between proofs and processes. We show how the addition of extra logical axioms can widen the class of typeable processes in exchange for the loss of some computational properties like lock-freeness or termination, allowing us to see various well studied systems (like i/o types, linearity, control) as instances of a general pattern. This suggests unified methods for extending existing type systems with new features while staying in a well structured environment and constitutes a step towards the study of denotational semantics of processes using proof-theoretical methods

    Abstractions for Distributed Programming: Guests or Relatives?

    Get PDF
    What abstractions are useful for expressing distributed interaction? This question has constituted an active area of research in the last decades and several candidates have been proposed, including remote method invocation, tuple spaces and publish/subscribe. How should these abstractions be supported? Through a library or ``directly'' within a language? This important complementary question has sparked less enthousiasm. This paper contributes to addressing this question in the context of Java and the type-based publish/subscribe (TPS) abstraction, an object-oriented variant of the publish/subscribe paradigm. We compare our three implementations of TPS, namely in (1) an extension of Java we designed to inherently support TPS, (2) standard Java, and (3) Java augmented with genericity. Through our comparison, we identify some general purpose that features that an object-oriented language should have in order to enable a satisfactory library implementation of TPS. We (re-)insist here on the importance of providing both genericity and reflective features in the language, and point out the very fact that the way these features are currently supported might indeed enable satisfactory implementations of remote method invocations, yet is still insufficient for TPS and tuple spaces

    Fighting bit Rot with Types (Experience Report: Scala Collections)

    Get PDF
    We report on our experiences in redesigning Scala\u27s collection libraries, focussing on the role that type systems play in keeping software architectures coherent over time. Type systems can make software architecture more explicit but, if they are too weak, can also cause code duplication. We show that code duplication can be avoided using two of Scala\u27s type constructions: higher-kinded types and implicit parameters and conversions

    Java and scala's type systems are unsound: the existential crisis of null pointers

    Get PDF
    We present short programs that demonstrate the unsoundness of Java and Scala's current type systems. In particular, these programs provide parametrically polymorphic functions that can turn any type into any type without (down) casting. Fortunately, parametric polymorphism was not integrated into the Java Virtual Machine (JVM), so these examples do not demonstrate any unsoundness of the JVM. Nonetheless, we discuss broader implications of these findings on the field of programming languages

    Advanced flow-based type systems for object-oriented languages

    Get PDF
    Ph.DDOCTOR OF PHILOSOPH

    Towards the flexible reuse of model transformations: A formal approach based on Graph Transformation

    Full text link
    This is the author’s version of a work that was accepted for publication in Journal of Logical and Algebraic Methods in Programming. Changes resulting from the publishing process, such as peer review, editing, corrections, structural formatting, and other quality control mechanisms may not be reflected in this document. Changes may have been made to this work since it was submitted for publication. A definitive version was subsequently published in Journal of Logical and Algebraic Methods in Programming 83.5-6 (2014) , DOI:10.1016/j.jlamp.2014.08.005This special issue of the Journal of Logic and Algebraic Methods in Programming (JLAMP) includes full revised versions of selected papers that were presented at the 24th Nordic Workshop on Programming Theory (NWPT 2012). The workshop took place in Bergen, Norway, during 31 October–2 November 2012 and was organized by the Department of Informatics, University of Bergen, and the Bergen University College.Model transformations are the heart and soul of Model Driven Engineering (MDE). However, in order to increase the adoption of MDE by industry, techniques for developing model transformations in the large and raising the quality and productivity in their construction, like reusability, are still needed. In previous works, we developed a reutilization approach for graph transformations based on the definition of concepts, which gather the structural requirements needed by meta-models to qualify for the transformations. Reusable transformations are typed by concepts, becoming transformation templates. Transformation templates are instantiated by binding the concept to a concrete meta-model, inducing a retyping of the transformation for the given meta-model. This paper extends the approach allowing heterogeneities between the concept and the metamodel, thus increasing the reuse opportunities of transformation templates. Heterogeneities are resolved by using algebraic adapters which induce both a retyping and an adaptation of the transformation. As an alternative, the adapters can also be employed to induce an adaptation of the meta-model, and in this work we show the conditions for equivalence of both approaches to transformation reuse.We thank the referees for their detailed comments, which helped to greatly improve the paper. This work has been supported by the Spanish Ministry of Economy and Competitivity with project Go-Lite (TIN2011-24139)

    Improving support for generic programming in C# with associated types and constraint propagation

    Get PDF
    Generics has recently been adopted to many mainstream object oriented languages, such as C# and Java. As a particular design choice, generics in C# and Java use a sub-typing relation to constraint type parameters. Failing to encapsulate type parameters within generic interfaces and inability to encapsulate type constraints as part of an interface definition have been identified as deficiencies in the way this design choice has been implemented in these languages. These deficiencies can lead to verbose and redundant code. In particular, they have been reported to affect the development of highly generic libraries. To address these issues, extending object oriented interfaces and sub-typing with associated types and constraint propagation has been proposed and studied in an idealized small-scale formal setting. This thesis builds on this previous work and provides a design and implementation of the extensions in full C#. We also present a proof of soundness of the Featherweight Generic Java (FGJ) formalism extended with interfaces. This property was assumed in a proof of type safety of associated types and constraint propagation, but no proof for the property was provided
    corecore