diff options
Diffstat (limited to 'docs/implementation')
| -rw-r--r-- | docs/implementation/codfns.html | 2 | ||||
| -rw-r--r-- | docs/implementation/index.html | 2 | ||||
| -rw-r--r-- | docs/implementation/vm.html | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/docs/implementation/codfns.html b/docs/implementation/codfns.html index 3b15070a..563c4bfe 100644 --- a/docs/implementation/codfns.html +++ b/docs/implementation/codfns.html @@ -3,7 +3,7 @@ <link href="../style.css" rel="stylesheet"/> <title>Co-dfns versus BQN's implementation</title> </head> -<div class="nav"><a href="https://github.com/mlochbaum/BQN">BQN</a></div> +<div class="nav"><a href="https://github.com/mlochbaum/BQN">BQN</a> / <a href="../index.html">main</a> / <a href="index.html">implementation</a></div> <h1 id="co-dfns-versus-bqns-implementation">Co-dfns versus BQN's implementation</h1> <p>The BQN self-hosted compiler is directly inspired by the <a href="https://github.com/Co-dfns/Co-dfns">Co-dfns</a> project, a compiler for a subset of <a href="../doc/fromDyalog.html">Dyalog APL</a>. I'm very grateful to Aaron for showing that array-oriented compilation is even possible! In addition to the obvious difference of target language, BQN differs from Co-dfns both in goals and methods.</p> <p>The shared goals of BQN and Co-dfns are to implement a compiler for an array language with whole-array operations. This provides the theoretical benefit of a short <em>critical path</em>, which in practice means that both compilers can make good use of a GPU or a CPU's vector instructions simply by providing an appropriate runtime (however, only Co-dfns has such a runtime—an ArrayFire program on the GPU and Dyalog APL on the CPU). The two implementations also share a preference for working "close to the metal" by passing around arrays of numbers rather than creating abstract types to work with data. Objects are right out. These choices lead to a compact source code implementation, and may have some benefits in terms of how easy it is to write and understand the compiler.</p> diff --git a/docs/implementation/index.html b/docs/implementation/index.html index d4d7c047..2ab839e4 100644 --- a/docs/implementation/index.html +++ b/docs/implementation/index.html @@ -3,7 +3,7 @@ <link href="../style.css" rel="stylesheet"/> <title>BQN implementation notes</title> </head> -<div class="nav"><a href="https://github.com/mlochbaum/BQN">BQN</a></div> +<div class="nav"><a href="https://github.com/mlochbaum/BQN">BQN</a> / <a href="../index.html">main</a></div> <h1 id="bqn-implementation-notes">BQN implementation notes</h1> <p>Notes about how BQN is implemented. There's not too much here yet.</p> <ul> diff --git a/docs/implementation/vm.html b/docs/implementation/vm.html index cf39c1ce..c0608644 100644 --- a/docs/implementation/vm.html +++ b/docs/implementation/vm.html @@ -3,7 +3,7 @@ <link href="../style.css" rel="stylesheet"/> <title>The BQN virtual machine and runtime</title> </head> -<div class="nav"><a href="https://github.com/mlochbaum/BQN">BQN</a></div> +<div class="nav"><a href="https://github.com/mlochbaum/BQN">BQN</a> / <a href="../index.html">main</a> / <a href="index.html">implementation</a></div> <h1 id="the-bqn-virtual-machine-and-runtime">The BQN virtual machine and runtime</h1> <p>BQN's self-hosted compiler and runtime mean that only a small amount of native code is needed to run BQN on any given platform. For example, the <a href="https://github.com/mlochbaum/BQN/blob/master/implementation/../docs/bqn.js">Javascript environment</a> requires about 200 lines of Javascript code even though it compiles BQN bytecode to Javascript, a more complex strategy than interpreting it directly. This makes it fairly easy to port BQN to new platforms, allowing BQN to run "natively" within other programming languages and interact with arrays in those languages.</p> <h2 id="bytecode">Bytecode</h2> |
