Skip to content

Releases: MarkChenYutian/C0VM-ts

v1.2.1 - Object File Support, 15-122 Project Import Guide, and more

27 Aug 14:25
995b730
Compare
Choose a tag to compare

What's Changed

  • Support to o0 and o1 object file
  • Support to retrieve and display interface of object file in code editor when possible
  • Import 122 project automatically by @MarkChenYutian in #44
  • Improve exception message from the program (now showing traceback and detailed position of exception)
  • Auto-compile on directory import
  • Fix graphical debug console render error by force re-rendering
  • Fix display error when out-of-scope variable is reused by cc0 by @MarkChenYutian in #38
  • Clean up codebase for folder upload
  • Hide internal variables generated by cc0 compiler when using -d dynamic contract check flag
  • Show compile command and result in standard output.
  • Bump webpack from 5.74.0 to 5.76.0 by @dependabot in #40
  • Bump react-flow to v11

Full Changelog: v1.0.0...v1.2.1

Screenshots

image

image

v1.0.0 - C1 Support and UX Improvement!

17 Jan 06:58
fc6eb51
Compare
Choose a tag to compare

After a long development in winter break, the C0VM.ts project is reaching a new stage and we are happy to announce the C0VM.ts - version 1.0.0! Feel free to play with it on https://visualc0.tk

release

Support C1 Language Standard

The C0VM.ts now supports C1 Language Standard including Generic Pointer void* (tagged pointer) and Function Pointer! Here's a Demo:

c1_support

Improvements Comparing to Previous Version

Editor User Experience Improvement @chaosarium

  • #16 - Thanks for @chaosarium 's work on editor tab, we can now rename editor tab by double-clicking on tab name instead of pressing alt and click tab - an operation that is much more intuitive.
  • #22 - @chaosarium added the feature of "Import Folder" and therefore we won't need to do import all files one by one.

AutoStep and Shortcut Keys for Execution @Helen0721

  • #20 - With @Helen0721 's work on AutoStep and short cut key for C0VM actions, students won't need to press the "Step" button repetitively anymore.

Maintenance & Debugging @MarkChenYutian

  • #9 - By parsing C0 source code and generate the memory layout for each struct directly on frontend, we can now display all struct fields before they are accessed by bytecode instruction.
  • #11 - By remove StructuredClone dependency, the compatibility of project is improved. For instance, we now support WeChat browser!
  • #21 - The relationship between CodeMirror state and React state is finally cleaned up and all breakpoints are working perfectly now even when the editor is re-rendered.
  • #24 - Breakpoints, finally are rendered in CSS instead of a 🔴 emoji, which means their appearance will be unified across platforms.

Other Small Improvements

  • Improved UI to give more space for code editor.
  • Add tooltips to disabled buttons that explains why action is disabled.
  • Fix dependency problem (no more --legacy-peer-deps) and bump to Ant-design 5.
  • Add tutorial page for new user to make it easier to use
  • Debug console will display types according to the typedefs in source code. (e.g. if we have typedef T* T_t, debug console will show T_t for T* typed variable).

v0.3.1-beta

17 Dec 05:41
Compare
Choose a tag to compare

🎉 Thanks for Testing and Feedback!

Thanks everyone for playing and testing with our C0 visualizer!
According to the web statistics, more than 250 students have used this website for 120+ hours in the past two weeks!

With all 15122 staffs and students actually using this project, we fixed many bugs & receives lots of feature requests in this beta version including:

#5 - Type inference problem when executing recursive function
#6 - Support WeChat browser
#7 - Enforce recompile when source code is changed
#8 - Parse native library not working as expected
#11 - Improve compatibility of project by removing dependency to StructuredClone API.
...

🔧 Major Improvement in this version

  1. Deploy on internet - visit https://visualc0.tk
  2. Option to hide bytecode implementation
  3. Set breakpoints on C0 source code
  4. "Details" mode in debug console
  5. Abort C0 program & async C0 program execution
  6. Stability improvement
  7. Compatibility improvement

🚀 Next Step for this Project

The next stage of this project is to continuously improve user experience and expand the appliable field of this visualizer.

Specifically, we will focus on these aspects of the project in the upcoming winter development:

  1. Support uncommon C0 language features (nested struct)
  2. Support C1 language
  3. Support C0/C1 object file
  4. Improve user experience - import folder as C0 project, restore progress from LocalStorage, etc.
  5. Improve user interface - dark mode, tutorial to breakpoint, etc.

image

v0.2.5-alpha

25 Jul 23:43
Compare
Choose a tag to compare
v0.2.5-alpha Pre-release
Pre-release

🎉 Debug Console, both Tabular and Graphical

👀 Multi-tab C0 Code Editor

🐞 Core Improvement & Bug Fix

  • 7b50909 Complete support for String native function group
  • Better Type Inference during runtime
  • fbaccee Reconstruct the frontend on React framework
  • Bug fix and UX improvement:
    dce4972 On DEBUG mode, dump the application state
    3949aa6 Add error boundary on components - Application Root and Debug Console
    7071d9b Fix breakpoint behavior, Improve UI robust on unexpected user input

v0.1.0-alpha

03 Jul 15:13
Compare
Choose a tag to compare
v0.1.0-alpha Pre-release
Pre-release

image

The C0VM-ts is now fully functional C0 Virtual Machine in typescript and provides following features:

  • Basic Debugger features like: Breakpoints, Step and Run
  • Basic Debug Console features: Showing function call stack, Showing local variables in each stack frame
  • Remote-compile features: By sending fetch request to remote server, user can compile C0 code at front-end browser

Some other (not so cool, but important) things are

  • Responsive UI: Adaptive to mobile, pad and laptop
  • Syntax Highlighting for BC0 code editor
  • Highlighting the position of C0VM execution