PLDI 2017- Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation

Full Citation in the ACM Digital Library

SESSION: Compiler Optimizations

Cache locality optimization for recursive programs

Fusing effectful comprehensions

Generalizations of the theory and deployment of triangular inequality for compiler-based strength reduction

Alive-Infer: data-driven precondition inference for peephole optimizations in LLVM

SESSION: Learning and Probabilistic

DemoMatch: API discovery from demonstrations

Similarity of binaries through re-optimization

Synthesizing program input grammars

Compiling Markov chain Monte Carlo algorithms for probabilistic modeling

SESSION: Concurrency Analysis

BARRACUDA: binary-level analysis of runtime RAces in CUDA programs

BigFoot: static check placement for dynamic race detection

Dynamic race prediction in linear time

Systematic black-box analysis of collaborative web applications

SESSION: Language Implementation

Bringing the web up to speed with WebAssembly

Miniphases: compilation using modular and efficient tree transformations

Proactive and adaptive energy-aware programming with mixed typechecking

Simple, fast, and safe manual memory management

SESSION: Static Analysis

Compositional recurrence analysis revisited

Context transformations for pointer analysis

Efficient and precise points-to analysis: modeling the heap by merging equivalent automata

Static deadlock detection for asynchronous C# programs

SESSION: Dynamic Analysis and Testing

Achieving high coverage for floating-point code via unconstrained programming

Instruction punning: lightweight instrumentation for x86-64

Low overhead dynamic binary translation on ARM

Skeletal program enumeration for rigorous compiler testing

SESSION: Static Analysis and Security

Decomposition instead of self-composition for proving the absence of timing channels

Automatic program inversion using symbolic transducers

Control-flow recovery from partial failure reports

Rigorous analysis of software countermeasures against cache attacks

SESSION: Synthesis

Component-based synthesis of table consolidation and transformation tasks from examples

Network configuration synthesis with abstract topologies

Synthesizing highly expressive SQL queries from input-output examples

Synthesizing memory models from framework sketches and Litmus tests

SESSION: Functional Programming and Correctness

Compiling without continuations

FunTAL: reasonably mixing a functional language with assembly

HoTTSQL: proving query rewrites with univalent SQL semantics

Levity polymorphism

SESSION: Parallelization and Concurrency

Synthesis of divide and conquer parallelism for loops

Futhark: purely functional GPU-programming with nested parallelism and in-place array updates

Gradual synthesis for static parallelization of single-pass array-processing programs

SESSION: Verified Computation

A formally verified compiler for Lustre

Flatten and conquer: a framework for efficient analysis of string constraints

SESSION: Correctness

Repairing sequential consistency in C/C++11

Taming undefined behavior in LLVM

SESSION: Systems and Performance

Low-synchronization, mostly lock-free, elastic scheduling for streaming runtimes

Practical partial evaluation for high-performance dynamic language runtimes

Responsive parallel computation: bridging competitive and cooperative threading

StreamQRE: modular specification and efficient evaluation of quantitative queries over streaming data