The Experts below are selected from a list of 18 Experts worldwide ranked by ideXlab platform

Michael D. Ernst - One of the best experts on this subject based on the ideXlab platform.

  • A practical type system and language for reference immutability
    ACM Press, 2004
    Co-Authors: Adrian Birka, Michael D. Ernst
    Abstract:

    This paper describes a type system that is capable of expressing and enforcing immutability Constraints. The specific Constraint expressed is that the abstract state of the object to which an immutable state is (part of) the transitively reachable state: that is, the state of the object and all state reachable from it by following references. The type system permits explicitly excluding fields or objects from the abstract state of an object. For a statically type-safe language, the type system guarantees reference immutability. If the language is extended with immutability downcasts, then run-time checks enforce the reference immutability Constraints. In order to better understand the usability and efficacy of the type system, we have implemented an extension to Java, called Javari, that includes all the features of our type system. Javari is interoperable with Java and existing JVMs. It can be viewed as a proposal for the semantics of the Java Const Keyword, though Javari’s syntax uses readonly instead. This paper describes the design and implementation of Javari, including the type-checking rules for the language. This paper also discusses experience with 160,000 lines of Javari code. Javari was easy to use and provided a number of benefits, including detecting errors in well-tested code

  • OOPSLA - A practical type system and language for reference immutability
    Proceedings of the 19th annual ACM SIGPLAN Conference on Object-oriented programming systems languages and applications - OOPSLA '04, 2004
    Co-Authors: Adrian Birka, Michael D. Ernst
    Abstract:

    This paper describes a type system that is capable of expressing and enforcing immutability Constraints. The specific Constraint expressed is that the abstract state of the object to which an immutable reference refers cannot be modified using that reference. The abstract state is (part of) the transitively reachable state: that is, the state of the object and all state reachable from it by following references. The type system permits explicitly excluding fields or objects from the abstract state of an object. For a statically type-safe language, the type system guarantees reference immutability. If the language is extended with immutability downcasts, then run-time checks enforce the reference immutability Constraints. In order to better understand the usability and efficacy of the type system, we have implemented an extension to Java, called Javari, that includes all the features of our type system. Javari is interoperable with Java and existing JVMs. It can be viewed as a proposal for the semantics of the Java Const Keyword, though Javari's syntax uses readonly instead. This paper describes the design and implementation of Javari, including the type-checking rules for the language. This paper also discusses experience with 160,000 lines of Javari code. Javari was easy to use and provided a number of benefits, including detecting errors in well-tested code.

  • A practical type system and language for reference immutability
    ACM SIGPLAN Notices, 2004
    Co-Authors: Adrian Birka, Michael D. Ernst
    Abstract:

    This paper describes a type system that is capable of expressing and enforcing immutability Constraints. The specific Constraint expressed is that the abstract state of the object to which an immutable reference refers cannot be modified using that reference. The abstract state is (part of) the transitively reachable state: that is, the state of the object and all state reachable from it by following references. The type system permits explicitly excluding fields or objects from the abstract state of an object. For a statically type-safe language, the type system guarantees reference immutability. If the language is extended with immutability downcasts, then run-time checks enforce the reference immutability Constraints. In order to better understand the usability and efficacy of the type system, we have implemented an extension to Java, called Javari, that includes all the features of our type system. Javari is interoperable with Java and existing JVMs. It can be viewed as a proposal for the semantics of the Java Const Keyword, though Javari's syntax uses readonly instead. This paper describes the design and implementation of Javari, including the type-checking rules for the language. This paper also discusses experience with 160,000 lines of Javari code. Javari was easy to use and provided a number of benefits, including detecting errors in well-tested code.

Adrian Birka - One of the best experts on this subject based on the ideXlab platform.

  • A practical type system and language for reference immutability
    ACM Press, 2004
    Co-Authors: Adrian Birka, Michael D. Ernst
    Abstract:

    This paper describes a type system that is capable of expressing and enforcing immutability Constraints. The specific Constraint expressed is that the abstract state of the object to which an immutable state is (part of) the transitively reachable state: that is, the state of the object and all state reachable from it by following references. The type system permits explicitly excluding fields or objects from the abstract state of an object. For a statically type-safe language, the type system guarantees reference immutability. If the language is extended with immutability downcasts, then run-time checks enforce the reference immutability Constraints. In order to better understand the usability and efficacy of the type system, we have implemented an extension to Java, called Javari, that includes all the features of our type system. Javari is interoperable with Java and existing JVMs. It can be viewed as a proposal for the semantics of the Java Const Keyword, though Javari’s syntax uses readonly instead. This paper describes the design and implementation of Javari, including the type-checking rules for the language. This paper also discusses experience with 160,000 lines of Javari code. Javari was easy to use and provided a number of benefits, including detecting errors in well-tested code

  • OOPSLA - A practical type system and language for reference immutability
    Proceedings of the 19th annual ACM SIGPLAN Conference on Object-oriented programming systems languages and applications - OOPSLA '04, 2004
    Co-Authors: Adrian Birka, Michael D. Ernst
    Abstract:

    This paper describes a type system that is capable of expressing and enforcing immutability Constraints. The specific Constraint expressed is that the abstract state of the object to which an immutable reference refers cannot be modified using that reference. The abstract state is (part of) the transitively reachable state: that is, the state of the object and all state reachable from it by following references. The type system permits explicitly excluding fields or objects from the abstract state of an object. For a statically type-safe language, the type system guarantees reference immutability. If the language is extended with immutability downcasts, then run-time checks enforce the reference immutability Constraints. In order to better understand the usability and efficacy of the type system, we have implemented an extension to Java, called Javari, that includes all the features of our type system. Javari is interoperable with Java and existing JVMs. It can be viewed as a proposal for the semantics of the Java Const Keyword, though Javari's syntax uses readonly instead. This paper describes the design and implementation of Javari, including the type-checking rules for the language. This paper also discusses experience with 160,000 lines of Javari code. Javari was easy to use and provided a number of benefits, including detecting errors in well-tested code.

  • A practical type system and language for reference immutability
    ACM SIGPLAN Notices, 2004
    Co-Authors: Adrian Birka, Michael D. Ernst
    Abstract:

    This paper describes a type system that is capable of expressing and enforcing immutability Constraints. The specific Constraint expressed is that the abstract state of the object to which an immutable reference refers cannot be modified using that reference. The abstract state is (part of) the transitively reachable state: that is, the state of the object and all state reachable from it by following references. The type system permits explicitly excluding fields or objects from the abstract state of an object. For a statically type-safe language, the type system guarantees reference immutability. If the language is extended with immutability downcasts, then run-time checks enforce the reference immutability Constraints. In order to better understand the usability and efficacy of the type system, we have implemented an extension to Java, called Javari, that includes all the features of our type system. Javari is interoperable with Java and existing JVMs. It can be viewed as a proposal for the semantics of the Java Const Keyword, though Javari's syntax uses readonly instead. This paper describes the design and implementation of Javari, including the type-checking rules for the language. This paper also discusses experience with 160,000 lines of Javari code. Javari was easy to use and provided a number of benefits, including detecting errors in well-tested code.

Patrick Lam - One of the best experts on this subject based on the ideXlab platform.

  • ECOOP - C++ Const and Immutability: An Empirical Study of Writes-Through-Const
    2016
    Co-Authors: Jon Eyolfson, Patrick Lam
    Abstract:

    The ability to specify immutability in a programming language is a powerful tool for developers, enabling them to better understand and more safely transform their code without fearing unintended changes to program state. The C++ programming language allows developers to specify a form of immutability using the Const Keyword. In this work, we characterize the meaning of the C++ Const qualifier and present the ConstSanitizer tool, which dynamically verifies a stricter form of immutability than that defined in C++: it identifies Const uses that are either not consistent with transitive immutability, that write to mutable fields, or that write to formerly-Const objects whose Const-ness has been cast away. We evaluate a set of 7 C++ benchmark programs to find writes-through-Const, establish root causes for how they fail to respect our stricter definition of immutability, and assign attributes to each write (namely: synchronized, not visible, buffer/cache, delayed initialization, and incorrect). ConstSanitizer finds 17 archetypes for writes in these programs which do not respect our version of immutability. Over half of these seem unnecessary to us. Our classification and observations of behaviour in practice contribute to the understanding of a widely-used C++ language feature.

Lam Patrick - One of the best experts on this subject based on the ideXlab platform.

  • C++ Const and Immutability: An Empirical Study of Writes-Through-Const
    LIPIcs - Leibniz International Proceedings in Informatics. 30th European Conference on Object-Oriented Programming (ECOOP 2016), 2016
    Co-Authors: Eyolfson Jon, Lam Patrick
    Abstract:

    The ability to specify immutability in a programming language is a powerful tool for developers, enabling them to better understand and more safely transform their code without fearing unintended changes to program state. The C++ programming language allows developers to specify a form of immutability using the Const Keyword. In this work, we characterize the meaning of the C++ Const qualifier and present the ConstSanitizer tool, which dynamically verifies a stricter form of immutability than that defined in C++: it identifies Const uses that are either not consistent with transitive immutability, that write to mutable fields, or that write to formerly-Const objects whose Const-ness has been cast away. We evaluate a set of 7 C++ benchmark programs to find writes-through-Const, establish root causes for how they fail to respect our stricter definition of immutability, and assign attributes to each write (namely: synchronized, not visible, buffer/cache, delayed initialization, and incorrect). ConstSanitizer finds 17 archetypes for writes in these programs which do not respect our version of immutability. Over half of these seem unnecessary to us. Our classification and observations of behaviour in practice contribute to the understanding of a widely-used C++ language feature

Jon Eyolfson - One of the best experts on this subject based on the ideXlab platform.

  • ECOOP - C++ Const and Immutability: An Empirical Study of Writes-Through-Const
    2016
    Co-Authors: Jon Eyolfson, Patrick Lam
    Abstract:

    The ability to specify immutability in a programming language is a powerful tool for developers, enabling them to better understand and more safely transform their code without fearing unintended changes to program state. The C++ programming language allows developers to specify a form of immutability using the Const Keyword. In this work, we characterize the meaning of the C++ Const qualifier and present the ConstSanitizer tool, which dynamically verifies a stricter form of immutability than that defined in C++: it identifies Const uses that are either not consistent with transitive immutability, that write to mutable fields, or that write to formerly-Const objects whose Const-ness has been cast away. We evaluate a set of 7 C++ benchmark programs to find writes-through-Const, establish root causes for how they fail to respect our stricter definition of immutability, and assign attributes to each write (namely: synchronized, not visible, buffer/cache, delayed initialization, and incorrect). ConstSanitizer finds 17 archetypes for writes in these programs which do not respect our version of immutability. Over half of these seem unnecessary to us. Our classification and observations of behaviour in practice contribute to the understanding of a widely-used C++ language feature.