Programming Systems
At Uber's Programming Systems Team, we are at the forefront of innovation, harnessing cutting-edge advancements in programming languages, software engineering, distributed systems, and artificial intelligence to make Uber more efficient and reliable. Our mission is to pioneer transformative technologies, integrating state-of-the-art static and dynamic program analysis, compiler optimizations, and performance tuning to push the boundaries of software capabilities.
A key pillar of our work is revolutionizing developer productivity. By combining sophisticated program analysis with Generative AI, we empower engineers to tackle complex challenges, from bug detection and advanced debugging to program synthesis and automated program repair. Our solutions are designed not just to enhance the quality of engineering output but also to minimize the burden of routine tasks, enabling developers to focus on innovation. Committed to advancing technology for the broader community, we proudly contribute the majority of our tools as open-source projects and publish at top research venues.
Meet the team
Shauvik Roy Choudhary
Engineering Manager, PhD. 🎓
Milind Chabbi
Sr Staff Research Scientist, PhD 🎓
Peng Liu
Staff Software Engineer, PhD 🎓
Sonal Mahajan
Staff Software Engineer, PhD 🎓
Farnaz Behrang
Senior Software Engineer, PhD 🎓
Yuxin Wang
Senior Software Engineer, PhD 🎓
Akshay Uttare
Software Engineer II, PhD 🎓
Chris Zhang
Software Engineer II, PhD 🎓
Diego Marcilio
Software Engineer II, PhD 🎓
Hunkar Tunc
Software Engineer II, PhD 🎓
Nikhil Parasaram
Software Engineer II, PhD 🎓
Yufan Xu
Software Engineer II, PhD 🎓
Projects
Feature flags, frequently used for gradual rollouts and feature experimentation, often leave behind unnecessary code once the experiment concludes. This increases complexity, bloats the source and binary, and can lead to bugs and misconfigurations. AutoClean leverages our Piranha code transformation toolset to automatically eliminate these stale feature flags from production and test code.
NullAway for Java and NilAway for Go are static analysis tools designed to prevent null/nil-related errors. NullAway uses @Nullable annotations to ensure pointers are not null when dereferenced, while NilAway employs an inference engine to catch potential nil panics at compile time without requiring manual annotations. Together, these tools enhance code safety by addressing null/nil-related issues proactively.
Modern microservice architectures bring scalability and flexibility but often introduce challenges in diagnosing latency and errors. CRISP is a tool that helps engineers analyze performance issues by identifying critical paths and visualizing bottlenecks using differential flamegraphs. It provides actionable insights into latency and error propagation, assisting teams in improving system reliability and efficiency.
Automatically Fixing Bugs in Software
Dr.Fix is a project designed to automatically fix bugs, enhancing both software quality and developer productivity. Dr.Fix introduces a novel hybrid approach that combines program analysis with generative AI, providing robust solutions to real-world problems. Currently, Dr.Fix streamlines various developer workflows: it repairs concurrency issues in Go, optimizes Go services, and fixes flaky tests.
Last Diff Analyzer is a multi-language, platform-agnostic tool for automatically approving behavior-preserving code changes. By integrating with code hosting platforms, it streamlines workflows by approving updates and bypassing costly CI tests. With support for Golang and Java, its extensible framework unifies language structures while allowing for easy expansion to Kotlin, Swift, TypeScript and more.
Automated Detection and Remediation of Resource Leaks
LeakGuard is a suite of tools that work together to find and fix leaks in Java and Go applications. These tools use a combination of static and dynamic analysis, generative AI, and new runtime techniques to find and fix performance bottlenecks and memory issues. By using LeakGuard, developers can save time and effort while also making their systems more reliable and efficient.
Publications
Technical papers, talks and blog articles featuring current and former team members*
- 2025
- Understanding and Reducing Latency in Microservices through Error Analysis, I-Ting Angelina Lee, Zhizhou Zhang, Abhishek Parwal, and Milind Chabbi, Proceedings of the ACM on Measurement and Analysis of Computing Systems, SIGMETRICS 2025
- CI at Scale: Lean, Green, and Fast. Dhruva Juloori, Zhongpeng Lin, Matthew Williams, Eddy Shin, Sonal Mahajan. To appear in the proceedings of IEEE/ACM 47th International Conference on Software Engineering: Software Engineering in Practice (ICSE), 2025
- 2024
Down Small - FixrLeak: GenAI-based Resource Leak Fix for Real-World Java Programs, Zhizhou Zhang, Akshay Utture, Manu Sridharan, Jens Palsberg, Machine Learning for Systems Workshop at 38th NeurIPS 2024
- Automating Efficiency Improvement by Profile Guided Optimization, Jin Lin, GopherCon 2024 session
- A Lightweight Polyglot Code Transformation Language. Ameya Ketkar, Daniel Ramos, Lazaro Clapp, Raj Barik, And Murali Krishna Ramanathan. (PLDI 2024).
- Unveiling and Vanquishing Goroutine Leaks in Enterprise Microservices: A Dynamic Analysis Approach. Georgian-Vlad Saioc, Dmitriy Shirchenko, and Milind Chabbi. In proceedings of the 2024 IEEE/ACM International Symposium on Code Generation and Optimization (CGO '24).
- 2023
Down Small - Last Diff Analyzer: Multi-language Automated Approver for Behavior-Preserving Code Revisions. Yuxin Wang, Adam Welc, Lazaro Clapp, and Lingchao Chen. In Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2023).
- Protecting Locks Against Unbalanced Unlock(), Vivek Shahare, Milind Chabbi, Nikhil Hegde, Proceedings of the 35th ACM Symposium on Parallelism in Algorithms and Architectures (SPAA 2023)
- Early notice: GenAI-based Datarace Fix for Real-World Golang Programs. Feiyang Jin, Zhizhou Zhang, Rajkishore Barik, Gautam Korlam, Milind Chabbi. Machine Learning for Systems Workshops at 37th NeurIPS 2023.
- Practical Inference of Nullability Types, Nima Karimipour, Justin Pham, Lazaro Clapp, Manu Sridharan. In Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2023)
- NilAway: Practical Nil Panic Detection for Go, Sonal Mahajan, Yuxin Wang, Lazaro Clapp and Raj Barik. Uber Engineering Blog, 2023
- 2022
Down Small - A study of real-world data races in Golang. Milind Chabbi and Murali Krishna Ramanathan, In Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI 2022). Association for Computing Machinery, New York, NY, USA,
- CRISP: Critical Path Analysis of Large-Scale Microservice Architectures , Zhang, Zhizhou, Murali Krishna Ramanathan, Prithvi Raj, Abhishek Parwal, Timothy Sherwood, and Milind Chabbi. In 2022 USENIX Annual Technical Conference (USENIX ATC 22), pp. 655-672. 2022.
- Profile-Guided Optimization in the Go Compiler. Jin Lin, Raj Barik. In GopherCon 2022
- LeakProf: Featherlight In-Production Goroutine Leak Detection. Georgian-Vlad Saioc and Miind Chabbi. Uber Engineering Blog, 2022
- Dynamic Data Race Detection in Go Code, Murali Krishna Ramanathan and Milind Chabbi, Uber Engineering Blog, 2022
- Data Race Patterns in Go, Milind Chabbi and Murali Krishna Ramanathan. Uber Engineering Blog, 2022
- 2021
Down Small - An experience with code-size optimization for production iOS mobile applications. Milind Chabbi, Jin Lin, and Raj Barik, In Proceedings of the 2021 IEEE/ACM International Symposium on Code Generation and Optimization (CGO '21). IEEE Press, 363–366. https://doi.org/10.1109/CGO51591.2021.9370306
- Optimistic concurrency control for real-world go programs. Zhang, Z., Chabbi, M., Welc, A., & Sherwood, T., In 2021 USENIX Annual Technical Conference (USENIX ATC 21) (pp. 939-955).
- How Uber Deals with Large iOS App Size, Milind Chabbi, Raj Barik, Jin Lin. Uber Engineering Blog, 2021
- pprof++: A Go Profiler with Hardware Performance Monitoring. Milind Chabbi. Uber Engineering Blog, 2021
- CRISP: Critical Path Analysis for Microservice Architectures. Milind Chabbi, Chris Zhang, Murali Krishna Ramanathan. Uber Engineering Blog, 2021
- Handling Flaky Unit Tests in Java, Ravi Agarwal, Lazaro Clapp, Gautam Korlam, Murali Krishna Ramanathan, Vijay Subramanian. Uber Engineering Blog, 2021
- 2020
Down Small - Piranha: Reducing Feature Flag Debt at Uber Murali Krishna Ramanathan, Lazaro Clapp, Rajkishore Barik, Manu Sridharan IEEE/ACM 42nd International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP), 2020
- Introducing Piranha: An Open Source Tool to Automatically Delete Stale Code, Murali Krishna Ramanathan, Lazaro Clapp, Rajkishore Barik and Manu Sridharan, Uber Engineering Blog, 2020
- 2019
Down Small - NullAway: Practical Type-Based Null Safety for Java Subarno Banerjee, Lazaro Clapp, Manu Sridharan 27th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE), 2019.
- Optimization of swift protocols. Rajkishore Barik, Manu Sridharan, Murali Krishna Ramanathan, and Milind Chabbi, Proc. ACM Program. Lang. 3, OOPSLA (October 2019)
- Link Time Optimization for Swift. Jin Lin, Milind Chabbi and Raj Barik. In 2019 LLVM Developers' Meeting.
- 2018
Down Small - Safe stream-based programming with refinement types Benno Stein, Lazaro Clapp, Manu Sridharan, Bor-Yuh Evan Chang. In proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering, (ASE), 2018.
*Disclaimer: The views and opinions expressed in the publications are those of the authors and the publications are not affiliated with Uber Technologies Inc.
About