From 22d763fbf6d50ca3001f53424085f772276d55e2 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Thu, 26 Nov 2020 21:59:49 -0500 Subject: Shift some material cut from running.md to implementation/README.md --- docs/implementation/index.html | 2 ++ 1 file changed, 2 insertions(+) (limited to 'docs/implementation') diff --git a/docs/implementation/index.html b/docs/implementation/index.html index 0aa8342f..8235b6cd 100644 --- a/docs/implementation/index.html +++ b/docs/implementation/index.html @@ -10,6 +10,8 @@
  • Comparison to Co-dfns discusses the general compilation strategy and how it compares to the only other array-based compiler.
  • The BQN virtual machine and runtime describes the non-self-hosted parts of the BQN implementation, that is, everything you need to port it to a new platform.
  • +

    This repository's BQN implementation is written mainly in BQN: the bytecode compiler is completely self-hosted, and the majority of the runtime is written in BQN except that it is allowed to define primitives; some preprocessing turns the primitives into identifiers. The remaining part, a VM, can be implemented in any language to obtain a version of BQN running in that language.

    +

    The VM used for the online REPL is the Javascript implementation. The bytecode matches dzaima/BQN's format, and an extension to the compiler adjusts the slightly different block declarations to target dzaima+reference BQN. An earlier experiment targetting WebAssembly works only on a very small subset of BQN. All versions have automated tests in the test directory.

    I have also held some forum discussions on the actual workings of the compiler, but aborted these because the interactive format wasn't doing too much. I haven't yet started on non-interactive replacements.