TA
T.V. Aerts
info
Please Note
<p>This page displays the records of the person named above and is not linked to a unique person identifier. This record may need to be merged to a profile.</p>
2 records found
1
Incrementalizing Statix
A Modular and Incremental Approach for Type Checking and Name Binding using Scope Graphs
Master thesis
(2019)
-
Taico Aerts, Hendrik van Antwerpen, Eelco Visser, Neil Yorke-Smith, Robbert Krebbers
Statix is a language which generates a type checker from a declarative specification. However, Statix is not fast enough for quick feedback in IDEs because it always has to reanalyze all files. In this thesis, we improve the analysis time of Statix by applying the ideas of separate compilation to create a model for incremental analysis. Statix uses a scope graph for representing the scoping and declarations of a project. We split the scope graph over multiple smaller modules which can be analyzed in isolation. Our model automatically detects dependencies between modules and supports creating scope graph diffs to determine modules affected by changes with high precision. The modules from our model can be solved in parallel, already yielding performance improvements of up to 40% compared to the original implementation. Finally, we implement an optimistic strategy with our model and show that it is effective whenever changes are small, reducing analysis time by up to 5 times for large projects.
...
Statix is a language which generates a type checker from a declarative specification. However, Statix is not fast enough for quick feedback in IDEs because it always has to reanalyze all files. In this thesis, we improve the analysis time of Statix by applying the ideas of separate compilation to create a model for incremental analysis. Statix uses a scope graph for representing the scoping and declarations of a project. We split the scope graph over multiple smaller modules which can be analyzed in isolation. Our model automatically detects dependencies between modules and supports creating scope graph diffs to determine modules affected by changes with high precision. The modules from our model can be solved in parallel, already yielding performance improvements of up to 40% compared to the original implementation. Finally, we implement an optimistic strategy with our model and show that it is effective whenever changes are small, reducing analysis time by up to 5 times for large projects.
Native WebLab
Safe Execution of Native Code in WebLab
Bachelor thesis
(2017)
-
Bram Crielaard, Chiel Bruin, Taico Aerts, Danny Groenewegen, Eelco Visser, Otto Visser
WebLab is a system where students can write and test code using an online interface. Course coordinators can create assignments and exams, where they can define automated tests to verify that the student code meets requirements. As WebLab only offered support for programming languages which run on the Java Virtual Machine, it was limited to a specific set of languages. In this project, we have designed a system which enables WebLab to support arbitrary languages, while still being able to guarantee scalability, security and reliability. To limit the scope of this project, the focus was laid on the programming language Python. The designed system uses Docker containers to execute arbitrary code in a safe and isolated way. A test fuzzing system with tamper detection is used to achieve reliable test results. The system is flexible as support for new programming languages can be added with relatively little effort. This report describes the design of the system, the research that was done and the process used. The report concludes with recommendations for future work on this project.
...
WebLab is a system where students can write and test code using an online interface. Course coordinators can create assignments and exams, where they can define automated tests to verify that the student code meets requirements. As WebLab only offered support for programming languages which run on the Java Virtual Machine, it was limited to a specific set of languages. In this project, we have designed a system which enables WebLab to support arbitrary languages, while still being able to guarantee scalability, security and reliability. To limit the scope of this project, the focus was laid on the programming language Python. The designed system uses Docker containers to execute arbitrary code in a safe and isolated way. A test fuzzing system with tamper detection is used to achieve reliable test results. The system is flexible as support for new programming languages can be added with relatively little effort. This report describes the design of the system, the research that was done and the process used. The report concludes with recommendations for future work on this project.