https://github.com/markchenyutian/c0vm-ts
Compile, Debug and Visualize C0 Program on any modern browser!
https://github.com/markchenyutian/c0vm-ts
15122 carnegie-mellon-university computer-science-education frontend-app visualization
Last synced: 3 months ago
JSON representation
Compile, Debug and Visualize C0 Program on any modern browser!
- Host: GitHub
- URL: https://github.com/markchenyutian/c0vm-ts
- Owner: MarkChenYutian
- Created: 2022-05-24T19:17:24.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-23T04:36:47.000Z (9 months ago)
- Last Synced: 2025-04-14T11:41:40.179Z (6 months ago)
- Topics: 15122, carnegie-mellon-university, computer-science-education, frontend-app, visualization
- Language: TypeScript
- Homepage: https://cs122.andrew.cmu.edu/visualc0/
- Size: 41.7 MB
- Stars: 7
- Watchers: 1
- Forks: 2
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# 🤗 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.

# Features



# 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 countDebug 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