Skip to content

Old Implementation

Latest

Choose a tag to compare

@RiscadoA RiscadoA released this 24 Sep 08:01
· 283 commits to main since this release
old-impl

Contains the initial implementation of the CLASS compiler, which followed a different architecture which didn't last until the end of the thesis.
In this version, the IR handles session queues (with push and pop instructions) which are allocated on the heap, separately from process environments, and are shared between processes.
This differs greatly from the most recent version, where session-related data is stored on the process environment where it will be received, and no extra allocations are required for it.

Additionally, in this version, exponentials follow a completely different optimization pathway: they are 'pre-computed'. Essentially, the generated code is designed to allow cloning of closures along with their environemnts. Exponentials are normal sessions for which the positive segment immediately runs. Then, whenever a 'call exponential' is executed, the whole linear session is cloned. This didn't make it to the final version, as it severely limited the possible implementations, requiring a lot of edge cases and branching. Additionally, exponential integers and booleans are optimized to be stored within the process itself, but not linear integers and booleans.