Skip to content

Programming Framework Enhancements #400

@walterbender

Description

@walterbender

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)

@meganindya @walterbender

Category

Backend, Documentation, Frontend

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions