aboutsummaryrefslogtreecommitdiff
path: root/docs/running.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/running.html')
-rw-r--r--docs/running.html20
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/running.html b/docs/running.html
new file mode 100644
index 00000000..9e30492d
--- /dev/null
+++ b/docs/running.html
@@ -0,0 +1,20 @@
+<head><link href="style.css" rel="stylesheet"/></head>
+<h1 id="how-to-run-bqn">How to run BQN</h1>
+<p>BQN is in a very early stage of development, and there is currently no complete implementation of the language. However, it's a relatively simple language to implement, and a few implementations come close.</p>
+<h3 id="bqn-ngn">BQN2NGN</h3>
+<p><a href="https://github.com/mlochbaum/BQN2NGN">BQN2NGN</a> is a prototype implementation in Javascript build to experiment with the langauge, which is now abandoned. Because you can <a href="https://mlochbaum.github.io/BQN2NGN/web/index.html">use it online</a>, this is probably the quickest way to get started with BQN. It has good primitive support, with the main issues being that it uses a J-style insert instead of BQN-style vector reduction, that it has a different version of <a href="doc/group.html">Group</a> (<code><span class='Function'>⊔</span></code>), and that it is missing Choose (<code><span class='Composition'>◶</span></code>). There are also some spelling differences, with Deduplicate (<code><span class='Function'>⍷</span></code>) spelled with <code><span class='Value'>∪</span></code> and Valences (<code><span class='Composition'>⊘</span></code>) spelled with <code><span class='Value'>⍠</span></code>. It is missing value blocks and function headers.</p>
+<p>For automated testing I run BQN2NGN using the <code><span class='Value'>bqn</span></code> executable, which is just a symlink to <code><span class='Value'>apl.js</span></code> in the BQN2NGN repository. It requires Node to run.</p>
+<h3 id="dzaima-bqn">dzaima/BQN</h3>
+<p><a href="https://github.com/dzaima/BQN/">dzaima/BQN</a> is an implementation in Java created by modifying the existing dzaima/APL. It should be easy to run on desktop Linux and Android. It is still in development and has almost complete syntax support but incomplete primitive support.</p>
+<h3 id="dzaima-reference-bqn">dzaima+reference BQN</h3>
+<p>This repository contains a dzaima/BQN script <code><span class='Value'>dzref</span></code> that fills in the gaps in primitive support using BQN implementations of primitives which are not yet up to spec (<a href="spec/reference.bqn">reference implementations</a> of all primitives starting from a small set of pre-existing functions are part of BQN's specification). These alternate implementations can be very slow.</p>
+<p>You can run <code><span class='Value'>dzref</span></code> from ordinary dzaima/BQN using the <code><span class='Value'>•</span><span class='Function'>EX</span></code> command; see for example <a href="dcshim.bqn">dcshim.bqn</a>. For testing, it is run as a Unix script, in which case it depends on an executable <code><span class='Value'>dbqn</span></code> that runs dzaima/BQN on a file argument. I use the following script, using the path to a clone of dzaima/BQN for the jar file.</p>
+<pre><span class='Comment'>#! /bin/bash
+</span>
+<span class='Value'>java</span> <span class='Function'>-</span><span class='Value'>jar</span> <span class='Function'>/</span><span class='Value'>path</span><span class='Function'>/</span><span class='Value'>to</span><span class='Function'>/</span><span class='Value'>dzaima</span><span class='Function'>/BQN/BQN.jar</span> <span class='Function'>-</span><span class='Value'>f</span> <span class='String'>&quot;$@&quot;</span>
+</pre>
+<p>The left argument for <code><span class='Value'>•</span><span class='Function'>EX</span></code> or the shell arguments can contain up to two arguments for the script. The first is a file to run, and the second is BQN code to be run after it.</p>
+<h3 id="bqn">BQN</h3>
+<p>This repository contains the beginnings of a self-hosted compiler for BQN, which is not yet complete enough to do any real programming with. There are currently several versions of the compiler: <a href="nc.bqn">nc.bqn</a> is run with BQN2NGN, while <a href="c.bqn">c.bqn</a> is run with dzaima+reference. Both compilers have a backend targetting <a href="https://en.wikipedia.org/wiki/WebAssembly">WebAssembly</a>, and c.bqn additionally has a backend that targets dzaima/BQN's own bytecode, so that the compiler uses only BQN, but the runtime uses the Java implementations of BQN primitives from dzaima/BQN.</p>
+<p>All versions have automated tests in the <a href="test/">test</a> directory, with the WebAssembly versions tested with Javascript using Node (<a href="test/t.js">test/t.js</a> and <a href="test/dt.js">test/dt.js</a> for BQN2NGN and dzaima/BQN respectively) and the dzaima/BQN backend tested with BQN itself (<a href="test/bt">test/bt</a>).</p>
+