Skip to content

fxpl/frankenscript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FrankenScript Dynamic Language experiment

This repository contains a toy programming language called "FrankenScript" with Python-like syntax and Python/JavaScript-inspired semantics. The purpose of FrankenScript is to explore the design space for adding a region-based ownership system inspired by Reggio and a concurrency model inspired by behaviour-oriented concurrency to dynamic programming languages to unlock parallelism in a way that is free from data-races (and also deadlocks, if the full behaviour-oriented concurrency model is adopted). FrankenScript is implemented using Trieste. To this end, FrankenScript programs generate a file called mermaid.md with a Mermaid diagram per line in the source program showing the object and region graph of the program at that program point.

Pre-requisites

This project is C++20 based and uses CMake as the build system. We also recommend installing Ninja to speed up the build process.

sudo apt-get install cmake ninja-build clang-15

Build

Once you have the pre-requisites installed, you can build the project by running the following commands:

mkdir build
cd build
cmake -G Ninja ..
ninja

and run the tests with:

ctest

Run

The project can be run by

./build/frankenscript build foo.frank

where foo.fs is a FrankenScript program. This generates a file mermaid.md that contains the Mermaid representation of the heap after each step of the program.

You can run in interactive mode by running:

./build/frankenscript build --interactive foo.frank

Which will keep overwritting the mermaid.md file with the new heap state after each step.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published