Metaprogramming Program Analyzers- [electronic resource]
Metaprogramming Program Analyzers- [electronic resource]
- 자료유형
- 학위논문파일 국외
- 최종처리일시
- 20240214101909
- ISBN
- 9798380722575
- DDC
- 005
- 저자명
- Wei, Guannan.
- 서명/저자
- Metaprogramming Program Analyzers - [electronic resource]
- 발행사항
- [S.l.]: : Purdue University., 2023
- 발행사항
- Ann Arbor : : ProQuest Dissertations & Theses,, 2023
- 형태사항
- 1 online resource(307 p.)
- 주기사항
- Source: Dissertations Abstracts International, Volume: 85-05, Section: A.
- 주기사항
- Advisor: Rompf, Tiark.
- 학위논문주기
- Thesis (Ph.D.)--Purdue University, 2023.
- 사용제한주기
- This item must not be sold to any third party vendors.
- 초록/해제
- 요약Static program analyzers are vital tools to produce useful insights about programs without executing these programs. These insights can be used to improve the quality of programs, e.g., detecting defects in programs, or optimizing programs to use fewer resources. However, building static program analyzers that are simultaneously sound, performant, and flexible is notoriously challenging.This dissertation aims to address this challenge by exploring the potential of applying correct-by-construction metaprogramming techniques to build static program analyzers. Metaprogramming techniques manipulate and transform programs as data objects. In this thesis, we consider static program analyzers as the objects to be manipulated or transformed. We show that metaprogramming techniques can improve our understanding, the construction, flexibility, and performance of program analyzers.We first study the inter-derivation of abstract interpreters. Using off-the-shelf program transformation techniques such as refunctionalization, we demonstrate that big-step abstract interpreters can be mechanically derived from their small-step counterparts, thus building a functional correspondence between two different styles of abstract interpretation.To build high-performance program analyzers, we exploit the first Futamura projection to build compilers for abstract interpretation and symbolic execution. The first Futamura projection states that specializing an interpreter with respect to an input program is a process equivalent to compilation, thus providing a practical way to repurpose interpreters for compilation and code generation. We systematically apply this idea to build programanalysis compilers by writing analyzers as staged interpreters using higher-level abstractions. The staged interpreter can be used for generating sound and performant analysis code given a specific input program. Moreover, the approach enables using abstractions without regret: by using higher-level program abstractions, the analyzer can be written in a way that is close to its high-level specification (e.g. big-step operational semantics), and by compilation, the analyzer is performant since it does not need to pay the runtime overhead of using these abstraction mechanisms.We also develop novel type systems that track sharing and separation in higher-order imperative languages. Such type systems are useful both for general-purpose programming languages and for optimization of domain-specific metaprograms such as those programanalysis compilers.
- 일반주제명
- Programming languages.
- 일반주제명
- Algebra.
- 일반주제명
- Performance evaluation.
- 일반주제명
- Interpreters.
- 일반주제명
- Semantics.
- 일반주제명
- Computer science.
- 일반주제명
- Logic.
- 일반주제명
- Translation studies.
- 기타저자
- Purdue University.
- 기본자료저록
- Dissertations Abstracts International. 85-05A.
- 기본자료저록
- Dissertation Abstract International
- 전자적 위치 및 접속
- 로그인 후 원문을 볼 수 있습니다.