diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2022-08-20 18:15:05 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2022-08-20 18:15:05 -0400 |
| commit | 522593291751c89db2cab0db7e6522973894cafd (patch) | |
| tree | 3b3916e777edb9b1c0352f7337bbe9dcf576eba9 | |
| parent | 25f15d63d7f0f25707e32bfad28e233f433bb551 (diff) | |
Update comments on CBQN performance: most things implemented natively
| -rw-r--r-- | docs/running.html | 2 | ||||
| -rw-r--r-- | running.md | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/docs/running.html b/docs/running.html index 7f6d411e..947d3acf 100644 --- a/docs/running.html +++ b/docs/running.html @@ -87,7 +87,7 @@ <p>C sources are kept in the <a href="https://github.com/dzaima/CBQN">CBQN</a> repository, but it also depends on bytecode from the BQN sources here. Running <code><span class='Value'>make</span></code> gets a working copy right away with saved bytecode. Then to use the latest bytecode, call <code><span class='Value'>$</span> <span class='Value'>.</span><span class='Function'>/BQN</span> <span class='Value'>genRuntime</span> <span class='Value'>…</span><span class='Function'>/BQN</span></code>, where <code><span class='Value'>…</span><span class='Function'>/BQN</span></code> points to this repository, and run <code><span class='Value'>make</span></code> again.</p> <p>CBQN is developed on Linux, and as-is will only run on Unix-like systems (including macOS). To run on Windows, <a href="https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux">WSL</a> has the best support but there are also native builds based on each of Cygwin and Mingw <a href="https://github.com/actalley/WinBQN">here</a>.</p> <p><code><span class='Value'>genRuntime</span></code> can also be run with another BQN implementation (the Node.js one works but takes up to a minute), and plain <code><span class='Value'>.</span><span class='Function'>/</span><span class='Value'>genRuntime</span></code> uses your system's <code><span class='Value'>bqn</span></code> executable. I symlink <code><span class='Value'>…</span><span class='Function'>/CBQN/BQN</span></code> to <code><span class='Value'>~</span><span class='Function'>/</span><span class='Value'>bin</span><span class='Function'>/</span><span class='Value'>bqn</span></code> so I can easily use CBQN for scripting.</p> -<p>CBQN uses the self-hosted runtime to achieve full primitive coverage, and implements specific primitives or parts of primitives natively to speed them up. This means primitives with native support—including everything used by the compiler—are fairly fast while others are much slower.</p> +<p>CBQN has native support for most primitive functionality and falls back to the self-hosted runtime to fill the gaps. The most important operations are fast, and it's almost always possible to write code that sticks to them. However, some cases, particularly those that deal with multiple axes, are much slower (although still fine for most use cases).</p> <h3 id="dzaimabqn"><a class="header" href="#dzaimabqn">dzaima/BQN</a></h3> <p><a href="https://github.com/dzaima/BQN/">dzaima/BQN</a> is an implementation in Java created by modifying the existing dzaima/APL, and should be easy to run on desktop Linux and Android. It was historically the main implementation, but is now updated only to stay up to date with language changes. Major missing functionality is dyadic Depth (<code><span class='Modifier2'>⚇</span></code>) and set functions <code><span class='Function'>⊐⊒∊⍷</span></code> with rank >1, and there are various small differences from the BQN spec, mostly to do with rank, handling of atoms, fills, and headers. It uses UTF-16 instead of UTF-32, so that characters like <code><span class='Value'>𝕩</span></code> don't behave correctly.</p> <p>To get an executable that works like CBQN, make a script with the following contents. Scripts may use <code><span class='Comment'>#! /usr/bin/env dbqn</span></code> to run with dzaima/BQN specifically, but this is rare now (in this repository, only <code><span class='Value'>test</span><span class='Function'>/</span><span class='Value'>dzaima</span></code> does it).</p> @@ -47,7 +47,7 @@ CBQN is developed on Linux, and as-is will only run on Unix-like systems (includ `genRuntime` can also be run with another BQN implementation (the Node.js one works but takes up to a minute), and plain `./genRuntime` uses your system's `bqn` executable. I symlink `…/CBQN/BQN` to `~/bin/bqn` so I can easily use CBQN for scripting. -CBQN uses the self-hosted runtime to achieve full primitive coverage, and implements specific primitives or parts of primitives natively to speed them up. This means primitives with native support—including everything used by the compiler—are fairly fast while others are much slower. +CBQN has native support for most primitive functionality and falls back to the self-hosted runtime to fill the gaps. The most important operations are fast, and it's almost always possible to write code that sticks to them. However, some cases, particularly those that deal with multiple axes, are much slower (although still fine for most use cases). ### dzaima/BQN |
