Automatic memory management for the Fasto compiler hos Københavns Universitet

Programming Languages and Theory of Computation

Denne sektion udfører forskning i programmeringssprogsteknologi og i teorien om beregning. Meget af arbejdet involverer emner i krydsfeltet mellem programmeringssprog teori og anvendelse.

Forskningssektionen er inddelt i otte områder:

  • Decentraliseret systemer

  • Sikkerhed og privatliv

  • Higher-Order and Typed Programming Language

  • Programinversion og reversibel beregning

  • Programmeringssprog teori og teknologi

  • Teori om beregning

  • Funktionel teknologi for moderne arkitektur

  • Finansiel gennemsigtighed

Læs mere her: https://di.ku.dk/english/research/pltc/

 

Engelsk version:

The section perform research in programming language technology and in the theory of computation. Much of the work involves topics in the intersection of programming language theory and applications.

The section is divided into eight areas:

  • Decentralized Systems

  • Security and Privacy

  • Higher-Order and Typed Programming Language

  • Program Inversion and Reversible Computing

  • Programmering Language Theory and Technology

  • Theory of Computation

  • Functional Technology for Modern Architectures

  • Financial Transparency

Read more here: https://di.ku.dk/english/research/pltc/

 

Supervisor

Andrzej Filinski andrzej@di.ku.dk

Background

 In the DIKU course "Implementation of Programming Languages (IPS)", the
mandatory term project involves completing a partial implementation of a compiler for a
simple functional language named Fasto. One of the significant limitations of that compiler is
that it provides no support for reusing heap memory, meaning that any substantial program
working with large arrays will quickly run out of available space and crash.

Project

The proposed project consists of adding one or more variants of automatic memory
management to the compiler, comparable to what is provided by, e.g., F#. Possible
approaches could be based on reference counting or garbage collection (mark-sweep or
two-space), and will involve designing and implementing the relevant compile-time and runtime support, as well as evaluating performance and usability. A more ambitious project
(especially suitable for a two-person group) would also extend the source language and
compiler with support for higher-order functions, using heap-allocated closures.

Expected prerequisites: IPS. Bits of PLD might be useful, but are not a requirement.

Husk at nævne, at du fandt dette opslag på KU Projekt & Job