Specializing Scope Graph Resolution Queries: Extended Edition

10/12/2022
by   Aron Zwaan, et al.
0

To warrant programmer productivity, type checker results should be correct and available quickly. Correctness can be provided when a type checker implementation corresponds to a declarative type system specification. Statix is a type system specification language which achieves this by automatically deriving type checker implementations from declarative typing rules. A key feature of Statix is that it uses scope graphs for declarative specification of name resolution. However, compared to hand-written type checkers, type checkers derived from Statix specifications have sub-optimal run time performance. In this paper, we identify and resolve a performance bottleneck in the Statix solver, namely part of the name resolution algorithm, using partial evaluation. To this end, we introduce a tailored procedural intermediate query resolution language, and provide a specializer that translates declarative queries to this language. Evaluating this specializer by comparing type checking run time performance on three benchmarks (Apache Commons CSV, IO, and Lang3), shows that our specializer improves query resolution time up to 7.7x, which reduces the total type checking run time by 38 - 48

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/01/2019

Type Checking Program Code using SHACL (Extended Version)

It is a strength of graph-based data formats, like RDF, that they are ve...
research
08/12/2018

Typed Closure Conversion for the Calculus of Constructions

Dependently typed languages such as Coq are used to specify and verify t...
research
08/08/2019

Manifest Contracts with Intersection Types

We present a manifest contract system PCFvΔH with intersection types. A ...
research
09/12/2019

Which of My Transient Type Checks Are Not (Almost) Free?

One form of type checking used in gradually typed language is transient ...
research
02/26/2019

Correct and Efficient Antichain Algorithms for Refinement Checking

Refinement checking plays an important role in system verification. This...
research
11/24/2021

CircuitFlow: A Domain Specific Language for Dataflow Programming (with appendices)

Dataflow applications, such as machine learning algorithms, can run for ...
research
08/06/2018

Size-Change Termination as a Contract

Program termination is an undecidable, yet important, property relevant ...

Please sign up or login with your details

Forgot password? Click here to reset