- Sponsor:
- sigplan
The papers in this volume were presented at the Thirteenth Annual ACM Symposium on the Principles of Programming Languages, sponsored jointly by SIGACT and SIGPLAN. They were selected from 165 abstracts submitted in response to the program committee's call for papers. We thank all those who submitted abstracts for their interest in POPL.Submissions were not formally refereed, but each was read by the entire program committee. As usual, technical excellence was an essential criterion, but our selections were also influenced by factors such as topicality and the desire to strike a balance between papers of theoretical and practical interest. Because of this, and especially in light of the large number of abstracts submitted this year, we expect that revised or expanded versions of many of the submissions will eventually appear in refereed journals.
Proceeding Downloads
Remote attribute updating for language-based editors
A major drawback to the use of attribute grammars in language-based editors has been that attributes can only depend on neighboring attributes in a program's syntax tree. This paper concerns new attribute-grammar-based methods that, for a suitable class ...
Dynamically bypassing copy rule chains in attribute grammars
Attribute grammars require copy rules to transfer values between attribute instances distant in an attributed parse tree. We introduce copy bypass attribute propagation that dynamically replaces copy rules with nonlocal dependencies, resulting in faster ...
Global storage allocation in attribute evaluation
Global storage allocation for attributes in an attribute grammar evaluator is discussed and an algorithm for determining if a given set of attribute occurrences can share a common global storage is obtained.
Finding the source of type errors
It is a truism that most bugs are detected only at a great distance from their source. Although polymorphic type-checking systems like those in ML help greatly by detecting potential run-time type errors at compile-time, such systems are still not very ...
A maximum-flow approach to anomaly isolation in unification-based incremental type inference
A crucial aspect of a program intended for general use is its behavior in the presence of erroneous inputs. For instance, much attention has been devoted to the problems of error detection, reporting, and correction in compilers<sup>1,2</sup>. As ...
Hierarchical VLSI design systems based on attribute grammars
The attribute grammar technique used for design of structure editors is suggested as a foundation for building <i>hierarchical incremental design editors</i> for VLSI circuits. The usual definition of attribute grammars is extended: the cycles that ...
Code motion of control structures in high-level languages
One trend among programmers is the increased use of abstractions. Through encapsulation techniques, abstractions extend the repertory of data structures and their concomitant operations that are processed directly by a compiler. For example, a compiler ...
Compilers and staging transformations
Computations can generally be separated into stages, which are distinguished from one another by either frequency of execution or availability of data. <i>Precomputation</i> and <i>frequency reduction</i> involve moving computation among a collection of ...
Higher-order strictness analysis in untyped lambda calculus
A function is said to be <i>strict</i> in one of its formal parameters if, in all calls to the function, either the corresponding actual parameter is evaluated, or the call does not terminate. Detecting which arguments a function will surely evaluate is ...
Retargetable high-level alias analysis
All optimizing compilers must deal with the problem of aliases arising due to the presence of multiple names that reference the same memory areas. Presented in this paper is a staged, high-level alias analysis methodology that provides detailed alias ...
High-quality code generation via bottom-up tree pattern matching
High-quality local code generation is one of the most difficult tasks the compiler-writer faces. Even if register allocation decisions are postponed and common subexpressions are ignored, instruction selection on machines with complex addressing can be ...
A parallel language and its compilation to multiprocessor machines or VLSI
A language <b>Crystal</b> and its compiler for parallel programming is presented. The goal of <b>Crystal</b> is to help programmers in seeking efficient parallel implementations of an algorithm, and managing the complexity that might arise in dealing ...
Towards programming with knowledge expressions
Explicit use of knowledge expressions in the design of distributed algorithms is explored. A non-trivial case study is carried through, illustrating the facilities that a design language could have for setting and deleting the knowledge that the ...
Limitations of synchronous communication with static process structure in languages for distributed computing
Modules in a distributed program are active, communicating entities. A language for distributed programs must choose a set of communication primitives and a structure for processes. This paper examines one possible choice: synchronous communication ...
Atomic data abstractions in a distributed collaborative editing system
This paper describes our experience implementing CES, a distributed Collaborative Editing System written in Argus, a language that includes facilities for managing long-lived distributed data. Argus provides <i>atomic actions,</i> which simplify the ...
A really abstract concurrent model and its temporal logic
In this paper we advance the radical notion that a computational model based on the <i>reals</i> provides a more abstract description of concurrent and reactive systems, than the conventional <i>integers</i> based behavioral model of execution <i>...
Expressing interesting properties of programs in propositional temporal logic
We show that the class of properties of programs expressible in propositional temporal logic can be substantially extended if we assume the programs to be <i>data-independent.</i> Basically, a program is data-independent if its behavior does not depend ...
Operational semantics of a parallel object-oriented language
In this paper the semantics of the programming language POOL is described. It is a language that integrates the object-oriented structure of languages like Smalltalk-80 with facilities for concurrency and communication like the ones in Ada. The ...
Equational logic programming: an extension to equational programming
The paradigm of equational programming potentially possesses all the features provided by Prolog-like languages. In addition, the ability to reason about equations, which is not provided by Prolog, can be accommodated by equational languages. In this ...
Logic and inheritance
An elaboration of the Prolog language is described in which the notion of first-order term is replaced by a more general one. This extended form of terms allows the integration of inheritance---an <i>IS-A</i> taxonomy---directly into the unification ...
Unification in many-sorted algebras as a device for incremental semantic analysis
Language-specific editors for typed programming languages must contain a subsystem for semantic analysis in order to guarantee correctness of programs with respect to the context conditions of the language. As programs are usually incomplete during ...
Distributed data structures in Linda
A <i>distributed data structure</i> is a data structure that can be manipulated by many parallel processes simultaneously. Distributed data structures are the natural complement to parallel program structures, where a <i>parallel program</i> (for our ...
Para-functional programming: a paradigm for programming multiprocessor systems
One of the most important pragmatic advantages of functional languages is that concurrency in a program is <i>implicit</i> -- there is no need for special constructs to express parallelism as is required in most conventional languages. Furthermore, it ...
Annotations for distributed programming in logic
It has been recognised that languages like Concurrent Prolog and Parlog which use committed choice non-determinism have departed from the original concept of logic programming, but no new paradigm has been suggested. In this paper we propose that ...
Representation independence and data abstraction
One purpose of type checking in programming languages is to guarantee a degree of "representation independence:" programs should not depend on the way stacks are represented, only on the behavior of stacks with respect to push and pop operations. In ...
Using dependent types to express modular structure
Writing any large program poses difficult problems of organization. In many modern programming languages these problems are addressed by special linguistic constructs, variously known as modules, packages, or clusters, which provide for partitioning ...
"Type" is not a type
A function has a <i>dependent type</i> when the type of its result depends upon the value of its argument. Dependent types originated in the type theory of intuitionistic mathematics and have reappeared independently in programming languages such as CLU,...
Data flow analysis of applicative programs using minimal function graphs
Data or program flow analysis is concerned with the static analysis of programs, to obtain as much information as possible about their possible run time behavior without actually having to run the programs. Due to the unsolvability of the halting ...
A mechanically certified theorem about optimal concurrency of sorting networks
Our concern is the mechanical certification of transformations of sequential program executions into parallel executions with equivalent semantics. The objective of such transformations is to accelerate the execution of programs. The result reported ...
Executable specifications with quantifiers in the FASE system
We present an overview of the FASE system for executable specifications based upon final, rather than initial, algebras. Particular emphasis is placed upon the execution of expressions involving quantifiers. The need for such expressions is explained, ...
Recommendations
Acceptance Rates
Year | Submitted | Accepted | Rate |
---|---|---|---|
POPL '15 | 227 | 52 | 23% |
POPL '14 | 220 | 51 | 23% |
POPL '04 | 176 | 29 | 16% |
POPL '03 | 126 | 24 | 19% |
POPL '02 | 128 | 28 | 22% |
POPL '01 | 126 | 24 | 19% |
POPL '00 | 151 | 30 | 20% |
POPL '99 | 136 | 24 | 18% |
POPL '98 | 175 | 32 | 18% |
POPL '97 | 225 | 36 | 16% |
POPL '96 | 148 | 34 | 23% |
POPL '94 | 173 | 39 | 23% |
POPL '93 | 199 | 39 | 20% |
POPL '92 | 204 | 30 | 15% |
POPL '91 | 152 | 31 | 20% |
POPL '89 | 191 | 30 | 16% |
POPL '88 | 177 | 28 | 16% |
POPL '87 | 108 | 29 | 27% |
POPL '83 | 170 | 28 | 16% |
POPL '82 | 121 | 38 | 31% |
POPL '81 | 121 | 24 | 20% |
POPL '79 | 146 | 27 | 18% |
POPL '78 | 135 | 27 | 20% |
POPL '77 | 105 | 25 | 24% |
POPL '76 | 90 | 20 | 22% |
POPL '75 | 100 | 23 | 23% |
POPL '73 | 100 | 22 | 22% |
Overall | 4,130 | 824 | 20% |