🎉 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.
Link: https://yutian-chen.gitbook.io/c0vm.ts-dev-documentation/
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:
ChangeNativeIO::Readline
toasync
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
ando1
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 onlocalStorage
- Editor:
Auto language-detection & switch