Status report: specifying javascript with ML
ML '07 Proceedings of the 2007 workshop on Workshop on ML
Confessions of a used programming language salesman
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Balancing language concerns: who decides?
Proceedings of the 2008 AOSD workshop on Software engineering properties of languages and aspect technologies
Gradual typing with unification-based inference
DLS '08 Proceedings of the 2008 symposium on Dynamic languages
Safe Cross-Language Inheritance
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
An Operational Semantics for JavaScript
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Static type inference for Ruby
Proceedings of the 2009 ACM symposium on Applied Computing
Exploring the Design Space of Higher-Order Casts
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Towards gradual typing for generics
Proceedings for the 1st workshop on Script to Program Evolution
Understanding the dynamics of JavaScript
Proceedings for the 1st workshop on Script to Program Evolution
Software hardening: a research agenda
Proceedings for the 1st workshop on Script to Program Evolution
Efficient virtual machine support of runtime structural reflection
Science of Computer Programming
Thorn: robust, concurrent, extensible scripting on the JVM
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Profile-guided static typing for dynamic scripting languages
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Threesomes, with and without blame
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Integrating typed and untyped code in a scripting language
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Extending Dylan's type system for better type inference and error detection
Proceedings of the 2010 international conference on Lisp
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Contract-driven testing of javascript code
TOOLS'10 Proceedings of the 48th international conference on Objects, models, components, patterns
Union and intersection types to support both dynamic and static typing
Information Processing Letters
Reconciling method overloading and dynamically typed scripting languages
Computer Languages, Systems and Structures
How developers use the dynamic features of programming languages: the case of smalltalk
Proceedings of the 8th Working Conference on Mining Software Repositories
Always-available static and dynamic feedback
Proceedings of the 33rd International Conference on Software Engineering
Proceedings of the 25th European conference on Object-oriented programming
The impact of optional type information on jit compilation of dynamically typed languages
Proceedings of the 7th symposium on Dynamic languages
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Virtual values for language extension
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Application optimization when using gradual typing
Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
Space-efficient gradual typing
Higher-Order and Symbolic Computation
Implementing a Language with Flow-Sensitive and Structural Typing on the JVM
Electronic Notes in Theoretical Computer Science (ENTCS)
The ins and outs of gradual type inference
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A qualitative human-centric evaluation of flexibility in middleware implementations
Empirical Software Engineering
Fast and precise hybrid type inference for JavaScript
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Object-oriented programming with gradual abstraction
Proceedings of the 8th symposium on Dynamic languages
An empirical study of the influence of static type systems on the usability of undocumented software
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Constraining delimited control with contracts
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Calculating threesomes, with blame
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Cast insertion strategies for gradually-typed objects
Proceedings of the 9th symposium on Dynamic languages
Tackling the efficiency problem of gradual typing
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Distributed ECA rules for data management policies
RuleML'13 Proceedings of the 7th international conference on Theory, Practice, and Applications of Rules on the Web
A hybrid class- and prototype-based object model to support language-neutral structural intercession
Information and Software Technology
Hi-index | 0.01 |
Static and dynamic type systems have well-known strengths and weaknesses. In previous work we developed a gradual type system for a functional calculus named $\lambda^?_\to$. Gradual typing provides the benefits of both static and dynamic checking in a single language by allowing the programmer to control whether a portion of the program is type checked at compile-time or run-time by adding or removing type annotations on variables. Several object-oriented scripting languages are preparing to add static checking. To support that work this paper develops $\mathbf{Ob}^{?}_{, a gradual type system for object-based languages, extending the Ob calculus of Abadi and Cardelli. Our primary contribution is to show that gradual typing and subtyping are orthogonal and can be combined in a principled fashion. We also develop a small-step semantics, provide a machine-checked proof of type safety, and improve the space efficiency of higher-order casts.