An open API service indexing awesome lists of open source software.

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!

Awesome Lists containing this project

README

          

![image](https://user-images.githubusercontent.com/47029019/177197388-a7884f33-ae32-45bb-91de-139a8ff04cbf.png)

# 🤗 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](https://user-images.githubusercontent.com/47029019/177198127-8f17d13b-e09f-4d1c-b214-b3bcad33e9ae.png)

# Features

![Slide2](https://user-images.githubusercontent.com/47029019/188786107-2c936dd6-f0c8-4102-9e97-f93d9c37dd39.png)
![Slide4](https://user-images.githubusercontent.com/47029019/188786411-43c66821-0f21-434f-a270-c0f500c5f5d2.png)
![Slide3](https://user-images.githubusercontent.com/47029019/188786109-3a2f0b60-d1ed-4edd-a8c8-74effcd206e2.png)
![Slide5](https://user-images.githubusercontent.com/47029019/188787516-47821a85-5cd3-4394-9b8a-318138442aa0.png)

# 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