SPLASH 2021
Sun 17 - Fri 22 October 2021 Chicago, Illinois, United States
Fri 22 Oct 2021 11:05 - 11:20 at Zurich E - OOPSLA 2020 Papers 4 Chair(s): Clément Pit-Claudel

Dynamic linking is extremely common in modern software systems, thanks to the flexibility and space savings it offers. However, this flexibility comes at a cost: every library call has an extra layer of indirection, and it’s impossible to perform interprocedural optimizations that involve calls to a dynamic library. The basic problem is that the run-time behavior of the dynamic linker can’t be predicted at compile time, so the compiler can make no assumptions about how external calls will behave.

This paper introduces guided linking, a technique for optimizing dynamically linked software when some information about the dynamic linker’s behavior is known in advance. The developer provides an arbitrary set of programs, libraries, and plugins to our tool, along with constraints that limit the possible dynamic linking behavior of the software. Given a software set and a list of constraints, our tool takes advantage of the constraints to optimize the software for speed and size. For example, the “no dynamic redefinitions” constraint can be applied to a function when the developer knows the function will never be unexpectedly overridden with a different definition at run time; this constraint allows dynamic references between libraries in the set to be resolved to static references, which can then be optimized with standard link-time optimizations. As an additional optimization, we deduplicate identical functions that appear anywhere in the software set.

By applying guided linking to a dynamically linked distribution of Clang and LLVM, and using the constraint that no other software will use the LLVM libraries, we can increase speed by 6% and reduce file size by 11%. If we relax the constraint to allow other software to use the LLVM libraries, we can still increase speed by 5.5% and reduce file size by 3%. If we apply guided linking to the Python interpreter and a set of loadable Python modules, applying the constraint that no other programs or modules will be used, we can increase speed by an average of 6.6%. If we use guided linking to combine 11 different versions of the Boost library, applying minimal constraints, we can reduce the total library size by 57%.

Fri 22 Oct

Displayed time zone: Central Time (US & Canada) change

10:50 - 12:10
OOPSLA 2020 Papers 4SIGPLAN Papers at Zurich E
Chair(s): Clément Pit-Claudel MIT CSAIL
10:50
15m
Talk
DiffStream: Differential Output Testing for Stream Processing Programs
SIGPLAN Papers
Konstantinos Kallas University of Pennsylvania, Filip Niksic Google, Caleb Stanford University of Pennsylvania, Rajeev Alur University of Pennsylvania
11:05
15m
Talk
Guided Linking: Dynamic Linking Without the Costs
SIGPLAN Papers
Sean Bartell University of Illinois at Urbana-Champaign, Will Dietz University of Illinois at Urbana-Champaign, Vikram S. Adve University of Illinois at Urbana-Champaign, USA
Link to publication DOI
11:20
15m
Talk
Regex Matching with Counting-Set Automata
SIGPLAN Papers
Lukáš Holík Brno University of Technology, Ondřej Lengál Brno University of Technology, Olli Saarikivi Microsoft, Lenka Turoňová Brno University of Technology, Margus Veanes Microsoft, Tomáš Vojnar Brno University of Technology
11:35
15m
Talk
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API Usages, and DifferencesIn-Person
SIGPLAN Papers
Mehdi Bagherzadeh Oakland University, Nicholas Fireman Oakland University, Anas Shawesh Oakland University, Raffi Khatchadourian CUNY Hunter College
Link to publication DOI Pre-print Media Attached
11:50
20m
Live Q&A
Discussion, Questions and Answers
SIGPLAN Papers