Skip to content

Compile, Debug and Visualize C0 Program on any modern browser!

Notifications You must be signed in to change notification settings

MarkChenYutian/C0VM-ts

Repository files navigation

image

🤗 About C0VM.ts

🎉 C0VM.ts is now part of the Course infrastructure for 15-122 Principles of Imperative Computation!

Visit us at: https://cs122.andrew.cmu.edu/visualc0/

This project is my project for Summer Undergraduate Research Fellowship (SURF) in CMU. More importantly, it's an attempt to improve students' 15-122 learning experience.

By employing various visualization and front-end technology, we made it possible to execute and visualize C0 Language on any device that supports modern browser. This project also allows instructors of 15-122 to embed runnable code exerciese in Learning Material System (LMS) like Canvas or Diderot thus creating a more interactive learning environment.

image

Features

Slide2 Slide4 Slide3 Slide5

Developer Zone

Documentation

Link: https://yutian-chen.gitbook.io/c0vm.ts-dev-documentation/

Ongoing Developments

C0VM.ts Main Functionality
  • Function: Improve type inference system - allow struct on stack [Breaking change required]
  • Allocator: Implement memory allocator with garbage collection. (Nice to have)
  • Error Msg: Show readable error message on AADDS access out of bound.
  • Function: Change NativeIO::Readline to async function
  • Function: Heap allocator garbage collection based on ref count
Debug Console
  • Debugger: Add garbage collection sign (pacman)
  • Debugger: Show pointer address on hover on struct component
  • Debugger: When a function is called, display variable boxes for all of its local variables right away rather than incrementally (add the names as the declaration for them are executed) → CC0 will reuse variable slots, see Issue@34
  • Debugger: Hide the detailed structure in o0 and o1 file.
  • Debugger: Add a "step over" option?
C0VM.ts Backend Server
UI/UX Enhancements
  • UI: Flexible grid proportion (editor resize)
  • React: Encapsulate the application using shadowRoot in HTML (Nice to have)
  • UI: Garbage collection on graphical debug console → User click the isolated node to "collect" them.
Feature Enhancements
Editor Enhancement
  • Syntax Highlighting: Rewrite the parser generator profile to match with formal definition in C0Reference.pdf
  • Editor: Import object file (.o0 and .o1 file)
  • Editor: Jump to the line executing (Nice to have)
  • Editor: Autocomplete for C0 Language (Nice to have)
  • Debug: Fix drag & drop import not working problem
  • Editor: Replace Codemirror with Monaco https://microsoft.github.io/monaco-editor/
  • Editor: Recover editor content based on localStorage
  • Editor: Auto language-detection & switch