Extending the wasm wit interface for HPCC Systems

This project is available as a student work experience opportunity with HPCC Systems. Curious about other projects we are offering? Take a look at our Ideas List.

Student work experience opportunities also exist for students who want to suggest their own project idea. Project suggestions must be relevant to HPCC Systems and of benefit to our open source community. 

Find out about the HPCC Systems Summer Internship Program.

Project Description

WebAssembly or wasm is a low-level binary format for the web that is compiled from other languages to offer maximized performance and augments JavaScript. The HPCC Systems platform currently supports embedding wasm via a plugin. 

The wasm interface type (wit) format is an Interface Description Language to provide tooling for the WebAssembly Component Model. The concept of an "interface" is central in wit as a collection of functions and types. An interface can be thought of as an instance in the WebAssembly Component Model, for example a unit of functionality imported from the host or implemented by a component for consumption on a host.

Lastly, wit-bindgen is a language bindings generator for wit, which defines the general interface of the wasm module. With wit-bindgen, the compiled wasm module can be imported into other languages in an automated and transparent way.

The goal of this project is to extend the wasm wit interface to provide extra functionality to the HPCC Systems wasm plugin and develop a wit-bindgen for ECL.

Requirements and considerations for this project:

  • The first step involves the development of a grammar and lexical compiler for parsing *.wit files.

  • A syntax check is needed for the parsed files.

  • The parsed tree should be used to generate ECL and C++ code.

Completion of this project involves:

  • A functional wit-bindgen for ECL. 

  • A complete GitHub project with code and documentation .

  • A blog, a recorded presentation, and a poster artifact about your project (see examples from previous years here).

Mentor

Gordon Smith
Gordon.Smith@lexisnexisrisk.com

Backup Mentor: 

TBD

Skills needed
  • Good programming background.

  • Ability to code in C++.

  • Ability to build and test the HPCC system (guidance will be provided).

  • Knowledge of wasm sufficient to write and run test cases.

  • Knowledge of ECL sufficient to re-use existing code (see resources below to become familiar with the ECL  language).

  • Ability to write test code.

Important resources

All pages in this wiki are subject to our site usage guidelines.