Skip to content

Issue: Add WebAssembly Support for Numerical C++ Code in Bokeh #357

@miranov25

Description

@miranov25

Issue: Add WebAssembly Support for Numerical C++ Code in Bokeh

Objective:

Implement a library of numerical functions using WebAssembly (WASM) to be integrated into the Bokeh client side. Additionally, ensure the functionality is testable using Node.js.

Description:

We aim to enhance the Bokeh client-side capabilities by adding a library of numerical functions written in C++ and compiled to WebAssembly (WASM). This will allow us to leverage the performance benefits of WebAssembly for computationally intensive tasks directly within the browser. The new functionality will be added under Tools/WASM.

Tasks:

  1. Setup WebAssembly Environment:

    • Configure the build environment for compiling C++ code to WebAssembly.
    • Ensure compatibility with both the Bokeh client and Node.js for unit testing.
  2. Develop Numerical Functions:

    • Implement a library of numerical functions in C++ (e.g., optimization algorithms, matrix operations, statistical computations).
    • Compile these functions to WebAssembly.
  3. Integrate with Bokeh:

    • Create a JavaScript interface to load and call the WebAssembly functions from Bokeh.
    • Ensure seamless interaction between the Bokeh client and the WebAssembly module.
  4. Unit Testing with Node.js:

    • Set up a Node.js environment for running unit tests on the WebAssembly functions.
    • Develop comprehensive unit tests to verify the correctness and performance of the numerical functions.
  5. Documentation:

    • Provide detailed documentation on how to use the new WebAssembly numerical functions in Bokeh.
    • Include examples and use cases.

Acceptance Criteria:

  • The numerical functions library is successfully implemented in C++ and compiled to WebAssembly.
  • The WebAssembly functions can be called from the Bokeh client side.
  • Comprehensive unit tests are implemented and passing in a Node.js environment.
  • Detailed documentation and examples are provided.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions