Developer Infrastructure (DevInfra) owns most of the coding life cycle at Meta, from the time code leaves an engineer’s mind until it reaches the people who use our apps. Our mission is to increase developer efficiency so that we can continue to ship awesome products quickly. We lead the industry by building innovative developer tools and automation infrastructure that are reliable and fast, ensuring that every second of engineering time is spent on the things that matter.
As part of Meta’s commitment to innovation, members of the DevInfra team are often involved in academic papers. Over the last half year or so, our research has covered machine learning, static analysis, efficiency, and more. We’ve also worked with lots of others outside Meta as we seek to build and share what we’ve learned. In this post, we’ve collected some of the papers the engineering community might be interested in. Authors with a Meta affiliation are in bold. If you are interested in joining Meta to work with the DevInfra team, click here for more information.
Machine learning
The topic of neural networks and machine learning has been a great driver of recent innovations in computer science. We’ve been applying these techniques to general problems as well as specific developer-oriented problems, like inferring types for Python programs.
- Topic recommendation for software repositories using multi-label classification algorithms, by Maliheh Izadi, Abbas Heydarnoori, and Georgios Gousios, tackles the problem of taking tags on GitHub repositories and then predicting suitable tags for as-yet-untagged repositories.
- Type4Py: Deep similarity learning-based type inference for Python, by Amir M. Mir, Evaldas Latoskinas, Sebastian Proksch, and Georgios Gousios, aims to annotate untyped Python with predicted types using machine learning, letting users rapidly add types to a legacy untyped codebase.
Static analysis
Static analysis tooling is great for helping developers discover problems earlier in their life cycle. Meta has contributed to this field with the publicly available Infer tool and the incorrectness logic foundation on which it is built.
- A compositional deadlock detector for Android Java, by James Brotherston, Paul Brunet, Nikos Gorogiannis,and Max Kanovich, looks at a diff time static analysis, which aims to give results in 15 minutes and is already built into Infer. Of the ~500 deadlock reports issued in the last two years, 54 percent of them have been fixed, removing hundreds of deadlocks from our Android applications.
- On algebra for program correctness and incorrectness, by Bernhard Möller, Peter O’Hearn, and Tony Hoare, builds on the recent incorrectness logic, providing a formalism for marrying both correctness and incorrectness logic.
Efficiency
Meta has lots of servers and lots of users, so at our scale, even small efficiency wins can offer large benefits. We’ve been looking at caching, optimizing code, and increasing parallelism, techniques we already rely on and hope to build upon.
- Kangaroo: Caching billions of small objects in flash, by Sara McAllister, Benjamin Berg, Julian Tutuncu-Macias, Juncheng Yang, Sathya Gunasekar, Jimmy Lu, Daniel Berger, Nathan Beckmann, and Gregory R. Ganger, looks at how to efficiently store lots of small objects on a combination of flash drive and RAM, without leading to excessive wear on the flash drives.
- Task parallel assembly language for uncompromising parallelism, by Mike Rainey, Ryan R. Newton, Kyle Hale, Nikos Hardavellas, Simone Campanoni, Peter Dinda, and Umut A. Acar, looks at the problem of choosing the granularity of parallel tasks for maximum efficiency. Traditionally, this required programmers to choose when to call parallel or sequential functions in their code, but heartbeat scheduling provides a theoretically sound and practically efficient way to automate parallelism decisions.
- Efficient tree-traversals: Reconciling parallelism and dense data representations, by Chaitanya Koparkar, Mike Rainey, Michael Vollmer, Milind Kulkarni, and Ryan Newton, looks at adding parallelism to the highly efficient Gibbon Haskell compiler, which is specialized to tree traversals. Gibbon achieves a 2X speedup over the best competing compilers, both sequentially and in parallel.
- VESPA: Static profiling for binary optimization, by Angélica Aparecida Moreira, Guilherme Ottoni, and Fernando Magno Quintão Pereira, applies profile-guided binary optimizations without running the program to profile it; instead, it uses a static profile obtained through a machine learning model. The result is a 5.47 percent performance improvement over clang at -O3.