Skip to content

The big picture for Godot Sandbox #263

Description

@fwsGonzo

There were a few big ticket things that I wanted to achieve in order to make Godot Sandbox a compelling addon. First of all, the interpreter mode is great, but libriscv has always had a JIT mode, and it has even been fuzzed. So, it would make sense to bring the JIT to the platforms where it's available.

Big picture items:

  • Support adding godot-sandbox as a Godot engine module
    • Windows amd64
    • Linux amd64
    • macOS aarch64
    • Add JIT support (experimental)
  • Support and enable JIT-compilation by default on many platforms
    • Windows amd64
    • Linux amd64
    • macOS aarch64
    • Android aarch64
  • Add support for mixing JIT-compilation and full binary translation (with the latter taking priority)
    • Full-binary translation takes precedence over JIT-compiled code
    • Make it possible to load a full-binary translation despite having already loaded JIT-compilation??
  • Add support for JIT background compilation to avoid stuttering and loading times
    • Background-thread compilation and live-patching
  • Make it possible to compile binary translation on the 3 major desktop platforms
    • Windows using Zig
    • Linux using Zig or system cross-compiler
    • macOS using Zig
  • Make it possible to automatically create and configure CMake projects, provided dependencies are installed
    • Automatically create a default/example CMakeLists.txt if missing or empty
    • Automatically configure CMake
    • Allow changing CMake settings from within the editor (eg. toggle LTO and stripped options)
    • Update example project and C++ script template
  • Add editor GUI to download/manage dependencies for C/C++ compilation
    • Manage dependencies for Windows
    • Manage dependencies for Linux
    • Manage dependencies for macOS
  • Add support for memory sharing. Memory sharing saves copying/duplication and could improve performance.
    • Implement Sandbox::share_XXX_array() with support for most packed arrays
    • Add a unit test

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions