Implementation of the typed call-by-value λ-calculus using a stack of regions
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recursive structures for standard ML
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Declaring and checking non-null types in an object-oriented language
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
A type system for well-founded recursion
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Non-null references by default in java: alleviating the nullity annotation burden
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Unrestricted pure call-by-value recursion
Proceedings of the 2008 ACM SIGPLAN workshop on ML
Semantic Foundations and Inference of Non-null Annotations
FMOODS '08 Proceedings of the 10th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
A Unified Framework for Verification Techniques for Object Invariants
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Flexible Immutability with Frozen Objects
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
Masked types for sound object initialization
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Minimal Ownership for Active Objects
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
A non-null annotation inferencer for Java bytecode
Proceedings of the 8th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Type-Based Object Immutability with Flexible Initialization
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Soundly Handling Static Fields: Issues, Semantics and Analysis
Electronic Notes in Theoretical Computer Science (ENTCS)
Class properties for security review in an object-capability subset of Java: (short paper)
PLAS '10 Proceedings of the 5th ACM SIGPLAN Workshop on Programming Languages and Analysis for Security
Ownership and immutability in generic Java
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
A time-aware type system for data-race protection and guaranteed initialization
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Recency types for analyzing scripting languages
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Enforcing secure object initialization in java
ESORICS'10 Proceedings of the 15th European conference on Research in computer security
Understanding the impact of collection contracts on design
TOOLS'10 Proceedings of the 48th international conference on Objects, models, components, patterns
TOOLS'10 Proceedings of the 48th international conference on Objects, models, components, patterns
Specification and verification: the Spec# experience
Communications of the ACM
Inference of field initialization
Proceedings of the 33rd International Conference on Software Engineering
Software and Systems Modeling (SoSyM)
An empirical study of object protocols in the wild
Proceedings of the 25th European conference on Object-oriented programming
Freedom before commitment: a lightweight type system for object initialisation
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Proceedings of the 10th SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Using the spec# language, methodology, and tools to write bug-free programs
Advanced Lectures on Software Engineering
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Corecursive Featherweight Java
Proceedings of the 14th Workshop on Formal Techniques for Java-like Programs
Multiple aggregate entry points for ownership types
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
True small-step reduction for imperative object oriented languages
Proceedings of the 15th Workshop on Formal Techniques for Java-like Programs
Proceedings of the 15th Workshop on Formal Techniques for Java-like Programs
The billion-dollar fix: safe modular circular initialisation
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Aliasing in Object-Oriented Programming
Hi-index | 0.02 |
Mainstream object-oriented languages such as C# and Java provide an initialization model for objects that does not guarantee programmer controlled initialization of fields. Instead, all fields are initialized to default values (0 for scalars and null for non-scalars) on allocation. This is in stark contrast to functional languages, where all parts of an allocation are initialized to programmer-provided values. These choices have a direct impact on two main issues: 1) the prevalence of null in object oriented languages (and its general absence in functional languages), and 2) the ability to initialize circular data structures. This paper explores connections between these differing approaches and proposes a fresh look at initialization. Delayed types are introduced to express and formalize prevalent initialization patterns in object-oriented languages.