Giter Club home page Giter Club logo

c0vm-ts's Introduction

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.