Pyret is a teaching language by the Brown Programming Languages Team. It is used to teach an introductory class in Brown. At the time of writing, there is no IDE available for Pyret, and this project hopes to fill this need.

Update: Pyret has moved on significantly, and there is an excellent online IDE. The language specification and runtime have also changed significantly, and so this IDE is no longer usable.

In a class on software development, I lead a team of three other programmers to write this IDE over the span of six weeks.

Features

Like any good IDE, Cutlass contains appropriate syntax highlighting, find-and-replace features, automatic indentation, an undo/redo stack, etc. In addition to these, there are some Pyret-specific features.

Call Graph

Cutlass understands how control flows through Pyret code. Recursive functions, functions as arguments, functions called and calling functions — we keep track of all these. In the quick navigation bar, data types are color-coded. When editing a function, all caller and callee functions are highlighted, and recursion and mutual recursion is separately displayed.

Scope-Aware

Cutlass understands how scope works in Pyret, and is able to automatically highlight tokens that mean the same thing.

Error Detection

Cutlass detects common errors in Pyret relating to well-formedness of code. It highlights these errors and provides a user-friendly error message.

Laskura

Cutlass runs like any other offline IDE, reading, writing, and running code all on the local system. Cutlass can instead connect to a Laskura server, and do all these remotely. This feature was designed so that educators could use Pyret without requiring the language be installed on a local system. This was made possible by a cleverly designed abstraction mechanism that decouples Cutlass from the system its run on.