Guannan Wei
Email: guannanwei at purdue.edu
Address: 305 N. University Street, West Lafayette, IN 47907
CV | Blog
Github | Twitter | Google Scholar
I’m a Ph.D. student in Computer Science at Purdue University, advised by Tiark Rompf since 2017. I’m also a member of Purdue’s Programming Languages (PurPL) group. Previously I received M.S. degree in Computer Science from the University of Utah, where I studied static analysis in Matt Might’s research group. I majored in Laws and Business Management as an undergraduate at the China University of Geosciences, Beijing.
I was an intern at SambaNova Systems (Summer 2020, remote), Galois (Summer 2018, Portland, OR), Baidu (Fall 2013, Beijing), and two tech-startups (2012-2013, 2014-2015, Beijing).
I occasionally take notes of what I read, collect elegant programs, or post random thoughts in my Blog. I’m an amateur photographer, see my gallery and Instagram account.
Research
I am interested in the scientific and engineering aspects of computer programs. More specifically, I study programming languages and notions to help people build correct, safe, and fast programs. I also build tools that automatically generate, transform, and analyze programs to achieve correctness, safety, or performance.
High-performance program analysis engines using metaprogramming and compiler optimizations.
We developed compilers for dynamic symbolic execution (ICSE ’23, PEPM ’22, FSE ’21, OOPSLA ’20) and abstract interpretation (OOPSLA ’19) by writing analyzers as staged definitional interpreters. Our recent development demonstrates efficient parallel symbolic execution by compiling to continuation-passing style and cooperative concurrency. I also developed a derivational approach to building big-step abstract interpreters from their small-step correspondences (ICFP ’18).Expressive type-and-effect systems tracking aliases, separation, and dependencies for higher-order imperative languages.
We developed the foundational reachability types with a flow-sensitive effect system (OOPSLA ’21), which has been extended with type-and-reachability polymorphism and applied to designing a graph-based compiler middle-end.
Publications
Compiling Parallel Symbolic Execution with Continuations
Guannan Wei, Songlin Jia, Ruiqi Gao, Haotian Deng, Shangyin Tan, Oliver Bračevac, Tiark Rompf
The 45th International Conference on Software Engineering (ICSE 2023)
[pdf] [artifact]What If We Don’t Pop the Stack? The Return of Second-Class Values
Anxhelo Xhebraj, Oliver Bračevac, Guannan Wei, Tiark Rompf
Proceedings of the 36th European Conference on Object-Oriented Programming (ECOOP 2022). Berlin, Germany
[pdf] [dagstuhl] [artifact]Towards Partially Evaluating Symbolic Interpreters for All
Shangyin Tan, Guannan Wei, Tiark Rompf
ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM), co-located with POPL 2022. Philadelphia, PA, USA
[pdf] [bib]Reachability Types: Tracking Aliasing and Separation in Higher-Order Functional Programs
Yuyan Bao, Guannan Wei, Oliver Bračevac, Yuxuan Jiang, Qiyang He, Tiark Rompf
Proceedings of the ACM on Programming Languages, Volume 5 (OOPSLA 2021). Online/Chicago, IL, USA
[pdf] [acm dl] [artifact]LLSC: A Parallel Symbolic Execution Compiler for LLVM IR (Tool Demonstration)
Guannan Wei, Shangyin Tan, Oliver Bračevac, Tiark Rompf
Proceedings of the 29th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2021)
[pdf] [acm dl] [demo]Compiling Symbolic Execution with Staging and Algebraic Effects
Guannan Wei, Oliver Bračevac, Shangyin Tan, Tiark Rompf
Proceedings of the ACM on Programming Languages, Volume 4 (OOPSLA 2020). Online
[pdf] [acm dl] [artifact]Staged Abstract Interpreters: Fast and Modular Whole-Program Analysis via Meta-Programming
Guannan Wei, Yuxuan Chen, Tiark Rompf
Proceedings of the ACM on Programming Languages, Volume 3 (OOPSLA 2019). Athens, Greece
[pdf] [acm dl] [artifact]Precise Reasoning with Structured Time, Structured Heaps, and Collective Operations
Grégory Essertel, Guannan Wei, Tiark Rompf
Proceedings of the ACM on Programming Languages, Volume 3 (OOPSLA 2019). Athens, Greece
[pdf] [acm dl] [artifact]BDA: Practical Dependence Analysis for Binary Executables by Unbiased Whole-program Path Sampling and Per-path Abstract Interpretation
Zhuo Zhang, Wei You, Guanhong Tao, Guannan Wei, Yonghwi Kwon, Xiangyu Zhang
Proceedings of the ACM on Programming Languages, Volume 3 (OOPSLA 2019). Athens, Greece
[pdf] [acm dl] [artifact]Towards Verified Binary Raising
Joe Hendrix, Guannan Wei, Simon Winwood
Workshop on Instruction Set Architecture Specification, co-located with ITP 2019. Portland, OR, USA
[pdf] [bib]Graph Neural Reasoning for 2-Quantified Boolean Formula Solvers
Zhanfu Yang, Fei Wang, Ziliang Chen, Guannan Wei, Tiark Rompf
Workshop on Learning and Reasoning with Graph-Structured Representations, co-located with ICML 2019. Long Beach, CA, USA
[pdf] [bib]Refunctionalization of Abstract Abstract Machines (Functional Pearl)
Guannan Wei, James M. Decker, Tiark Rompf
Proceedings of the ACM on Programming Languages, Volume 2 (ICFP 2018). St. Louis, MO, USA
[pdf] [acm dl] [artifact]
Talks/Posters
Compiling Parallel Symbolic Execution with Continuations
ICSE 2023. Remote. May, 2023 [slides]Compiling and Controlling Symbolic Execution
Purdue PL Seminar. West Lafayette, IN. December, 2022 [slides]Reachability Types: Tracking Aliasing and Separation in Higher-Order Functional Programs
OOPSLA 2021. Chicago, IL. October, 2021 [poster]LLSC: A Parallel Symbolic Execution Compiler for LLVM IR
ESEC/FSE 2021. Online. August, 2021 [slides]Compiling Symbolic Execution with Staging and Algebraic Effects
OOPSLA 2020. Online. November, 2020 [slides]Metaprogramming for Program Analyzers
PurPL Retreat. Online. August, 2020 [slides]Staged Abstract Interpreters
OOPSLA 2019. Athens, Greece. October 23, 2019 [slides]Refunctionalization of Abstract Abstract Machines (Functional Pearl)
ICFP 2018. St. Louis, MO. September 24, 2018 [slides][poster]Precise Reasoning with Structured Heaps and Collective Operations à la Map/Reduce
Purdue PL Seminar. West Lafayette, IN. January 26, 2018 [slides]
Midwest PL Summit (MWPLS 2017). Bloomington, IN. December 1, 2017 [slides]
Huawei Research Summit. Urbana-Champaign, IL. March 8, 2018 [slides]
Teaching
- Lead Teaching Assistant, CS352 Compilers: Principles and Practice (undergraduate), Purdue University, Spring 2020 [testimonials]
Teaching Assistant, CS502 Compilers: Principles and Practice (graduate), Purdue University, Fall 2019
Lab Instructor, CS252 System Programming (undergraduate), Purdue University, Fall 2017, Spring 2018
Services
PC Member: ICCQ 2023, VMIL 2021, EuroSys Shadow 2021
Artifact Evaluation Committee Member: PLDI 2023, POPL 2023, PLDI 2022, PLDI 2021, ICFP 2021, ISSTA 2021, OOPSLA 2020, ICFP 2020, CAV 2020, ICFP 2019
Student Volunteer: POPL 2023, MWPLS & PurPL Fest 2019, ICFP 2019
Sub-reviewer: ICLR 2019
Voluntary translator, Software Foundations (Chinese edition)
Contributed to Lightweight Modular Staging, Scala documentation, Highlight.js, etc.
Quotes
“The struggle itself is enough to fill a man’s heart. One must imagine Sisyphus happy.” — Albert Camus