-
Notifications
You must be signed in to change notification settings - Fork 136
Description
Ticket Contents
Description
There are three parts to this project:
- Improvements and optimizations to the Program Syntax Framework
- Enhancements and performance optimizations to the Execution Engine
- Addition of Telemetry and Debugging support
We need to revisit some design considerations made while initially building the Program Syntax Framework. This framework is responsible for defining the business logic and rules for units of a program's syntax (literals, expressions, statements, blocks, functions) and maintaining the Syntax Tree that represents a program. There's scope for some work to be done in it's refinement.
The Execution Engine handles the runtime behavior of a program. Currently, it is in a very rudimentary state and is a work-in-progress. The goal is to build a low overhead interpreter that supports pseudo real-time and concurrency. Of course, JavaScript is single-threaded and the JavaScript engine on the browser doesn't support concurrency. So, we'll have to mock a closer behavior with Events.
It is desirable to be able to monitor the runtime states of an executing program. We want to collect execution information, messages, errors while a program is executing, and also control the execution itself. The goal is to add support for the said.
The framework code is contained in github.com/sugarlabs/musicblocks-v4-lib.
Goals & Mid-Point Milestone
Goals
- [Improvements and optimizations to the Program Syntax Framework]
- [Enhancements and performance optimizations to the Execution Engine]
- [Addition of Telemetry and Debugging support]
- [Goals Achieved By Mid-point Milestone]
- [Program Syntax Framework]
- [Some Execution Engine enhancements]
Setup/Installation
Expected Outcome
A working execution engine integrated into Music Blocks v4
Acceptance Criteria
Implementation Details
Mockups/Wireframes
Product Name
Music Blocks v4
Organisation Name
Sugar Labs
Domain
Education
Tech Skills Needed
- Strong experience with TypeScript 4
- Experience of writing tests using Jest
- Good understanding of the JavaScript Event Loop
Mentor(s)
Category
Backend, Documentation, Frontend