Presenting a set of template Rust, WASM and Deno projects on GitHub which make use of GitHub Actions and Workflows for continuous integration.

I’ve previously outlined my reasons for evaluating Rust and Deno. Using these technologies, I am looking to achieve:

  • A scriptable high-level layer (Deno REPL) controlling a performant lower-level core (Rust).
  • A single executable binary via Deno Compile.
  • Cross platform executables via cross-compilation support for Deno and Rust.
  • Ability to dynamically load and run additional logic after installation via Deno’s support for the Javascript import() function.
  • Agnostic support for running as an OS process or in a browser runtime via Deno’s web platform APIs and the ability to compile Rust to WASM.
  • Simple project scaffolding via Deno’s stated goal to “provide built-in tooling to improve developer experience”.

I wanted to see if these could all be achieved using free SaaS tooling for continuous integration including:

  • code analysis
  • automated dependency updates
  • automated unit testing and integration/acceptance testing
  • automated semantic releases
  • automatically generated API documentation

I created the template projects and GitHub workflow and actions discussed here to see if the technologies could deliver on their promises and thus achieve my aims.

The plan for Flowscripter has always included the following goals:

  • Use TypeScript.
  • Use dynamic import of ES modules.
  • Rely on existing module dependency directives to auto-install plugin dependencies i.e. not inventing a new module dependency framework.
  • Providing Flowscripter as a single downloadable binary with no need for pre-installed dependencies e.g. Node.js, ffmpeg.
  • Support native extensions written in Rust.