Reachability types: tracking aliasing and separation in higher-order functional programs
Ownership type systems, based on the idea of enforcing unique access paths, have been
primarily focused on objects and top-level classes. However, existing models do not as …
primarily focused on objects and top-level classes. However, existing models do not as …
Nullaway: Practical type-based null safety for java
NullPointerExceptions (NPEs) are a key source of crashes in modern Java programs.
Previous work has shown how such errors can be prevented at compile time via code …
Previous work has shown how such errors can be prevented at compile time via code …
Putting the semantics into semantic versioning
The long-standing aspiration for software reuse has made astonishing strides in the past few
years. Many modern software development ecosystems now come with rich sets of publicly …
years. Many modern software development ecosystems now come with rich sets of publicly …
ReIm & ReImInfer: Checking and inference of reference immutability and method purity
Reference immutability ensures that a reference is not used to modify the referenced object,
and enables the safe sharing of object structures. A pure method does not cause side-effects …
and enables the safe sharing of object structures. A pure method does not cause side-effects …
Gentrification gone too far? affordable 2nd-class values for fun and (co-) effect
First-class functions dramatically increase expressiveness, at the expense of static
guarantees. In ALGOL or PASCAL, functions could be passed as arguments but never …
guarantees. In ALGOL or PASCAL, functions could be passed as arguments but never …
Lightweight polymorphic effects
Type-and-effect systems are a well-studied approach for reasoning about the computational
behavior of programs. Nevertheless, there is only one example of an effect system that has …
behavior of programs. Nevertheless, there is only one example of an effect system that has …
Further lessons from the JML project
JML is an ambitious project in formal specification and verification that has aimed to bring
value to Java programmers. As an international, cooperative effort, JML has been a uniting …
value to Java programmers. As an international, cooperative effort, JML has been a uniting …
Pure methods for roDOT
Object-oriented programming languages typically allow mutation of objects, but pure
methods are common too. There is great interest in recognizing which methods are pure …
methods are common too. There is great interest in recognizing which methods are pure …
Sound and complete flow ty** with unions, intersections and negations
DJ Pearce - … Workshop on Verification, Model Checking, and …, 2013 - Springer
Flow ty** is becoming a popular mechanism for ty** existing programs written in
untyped languages (eg JavaScript, Racket, Groovy). Such systems require intersections for …
untyped languages (eg JavaScript, Racket, Groovy). Such systems require intersections for …
[HTML][HTML] Designing a verifying compiler: Lessons learned from develo** whiley
DJ Pearce, L Groves - Science of Computer Programming, 2015 - Elsevier
An ongoing challenge for computer science is the development of a tool which automatically
verifies programs meet their specifications, and are free from runtime errors such as divide …
verifies programs meet their specifications, and are free from runtime errors such as divide …