aboutsummaryrefslogtreecommitdiff
path: root/running.md
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-01-30 20:22:47 -0500
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-01-30 20:22:47 -0500
commit99f37de695119fd643b36f373771bcdcc4a626af (patch)
treed30db1ea6cfe1dda0685b271f124f968d5accae5 /running.md
parent5ecf5494573e7c4f554329646edf072e2bd6cb7c (diff)
Move direct command-line execution from test/js to docs/bqn.js
Diffstat (limited to 'running.md')
-rw-r--r--running.md4
1 files changed, 2 insertions, 2 deletions
diff --git a/running.md b/running.md
index 7d9f027a..843c0930 100644
--- a/running.md
+++ b/running.md
@@ -6,9 +6,9 @@ There are currently two active BQN implementations: the self-hosted one in this
### BQN
-The online REPL is [here](https://mlochbaum.github.io/BQN/try.html). The file [docs/bqn.js](docs/bqn.js) is zero-dependency Javascript and can be loaded from Node.js (it's tested this way), but there isn't any convenient way to use it offline right now.
+The online REPL is [here](https://mlochbaum.github.io/BQN/try.html). The file [docs/bqn.js](docs/bqn.js) is zero-dependency Javascript, and can be loaded from HTML or Node.js. It can also be called directly from the command line (using Node); in this case each argument is evaluated as BQN code and the result is printed.
-This repository contains a version of BQN implemented mainly in BQN itself—the compiler is entirely self-hosted, while the runtime is built from a small number of starting functions using preprocessed BQN. This version supports all primitives, except that it doesn't have full support for [inferred](spec/inferred.md) properties. It's still missing syntax support for function headers or multiple bodies. The Javascript-based compiler is also slow, taking about 0.05 seconds plus 1 second per kilobyte of source (this is purely due to the slow runtime, as dzaima+reference achieves 1ms/kB with the same compiler once warmed up).
+The version of BQN in this repository is implemented mainly in BQN itself—the compiler is entirely self-hosted, while the runtime is built from a small number of starting functions using preprocessed BQN. It completely supports the core language except for block headers and multiple body syntax, and a few cases of structural Under (`⌾`). The Javascript-based compiler is also slow, taking about 0.05 seconds plus 1 second per kilobyte of source (this is purely due to the slow runtime, as dzaima+reference achieves 1ms/kB with the same compiler once warmed up).
Because self-hosted BQN requires only a simple virtual machine to run, it is [fairly easy](implementation/vm.md) to embed it in another programming language by implementing this virtual machine. The way data is represented is part of the VM implementation: it can use native arrays or a custom data structure, depending on what the language supports. An initial implementation will be very slow, but can be improved by replacing functions from the BQN-based runtime with native code. As the VM system can be hard to work with if you're not familiar with it, I advise you to contact me to discuss this option it you are interested.