A practical subtyping system for Erlang
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
A soft-typing system for Erlang
Proceedings of the 2003 ACM SIGPLAN workshop on Erlang
DrScheme: a programming environment for Scheme
Journal of Functional Programming
Practical type inference based on success typings
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
A language for specifying type contracts in erlang and its interaction with success typings
ERLANG '07 Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop
Programming Erlang: Software for a Concurrent World
Programming Erlang: Software for a Concurrent World
Erlang testing and tools survey
Proceedings of the 7th ACM SIGPLAN workshop on ERLANG
Gradual typing of erlang programs: a wrangler experience
Proceedings of the 7th ACM SIGPLAN workshop on ERLANG
Static detection of race conditions in erlang
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
This invited talk will present the key ideas in the design and implementation of Dialyzer, a static analysis tool for Erlang programs. Dialyzer started as a defect detection tool using a rather ad hoc dataflow analysis to detect type errors in Erlang programs, but relatively early in its development it adopted a more disciplined approach to detecting definite type clashes in dynamically typed languages. Namely, an approach based on using a constraint-based analysis to infer success typings which are also enhanced with optional contracts supplied by the programmer. In the first part of the talk, we will describe this constraint-based approach to type inference and explain how it differs with past and recent attempts to type check programs written in dynamic languages. In the second part of the talk, we will present important recent additions to Dialyzer, namely analyses that detect concurrency defects (such as race conditions) in Erlang programs. For a number of years now, Dialyzer has been part of the Erlang/OTP system and has been actively used by its community. Based on this experience, we will also critically examine Dialyzer's design choices, show interesting cases of Dialyzer's use, and distill the main lessons learned from using static analysis in open source as well as commercial code bases of significant size.