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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy