maiko VS Co-dfns

Compare maiko vs Co-dfns and see what are their differences.


Medley Interlisp virtual machine (by Interlisp)


High-performance, Reliable, and Parallel APL (by Co-dfns)
Our great sponsors
  • Scout APM - Less time debugging, more time building
  • SonarQube - Static code analysis for 29 languages.
  • SaaSHub - Software Alternatives and Reviews
maiko Co-dfns
2 9
74 510
- 1.0%
7.6 9.0
about 2 months ago 11 days ago
MIT License GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.


Posts with mentions or reviews of maiko. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-11-22.


Posts with mentions or reviews of Co-dfns. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-03-31.
  • Why APL is a language worth knowing
    3 projects | | 31 Mar 2022
    Stories please! What did the closures do to you?

    Hopefully this won't be seen as too combative, but I feel like there are a few people in the array community giving me some pretty strong conclusions that they don't really have the experience to back up (Aaron wrote[0] 17 lines of array compiler, and says the low-abstraction approach he used is the only way to develop sustainably. Cool. I wrote[1] 350 lines of array compiler following his style, and I disagree[2]). At the same time, my experience only goes so far (there's no way I would have invented the array style compiler!), and clearly you arrived at these conclusions somehow. So is there a chance you'd share the observations that led you that way?

    On my end, I was actually introduced to a little object-oriented programming in J when Henry suggested using it for a simulation project. I used it, but I don't think I really got it—just a weird way to organize data. And then in college I had to learn objects-only Java. Not good. But later I worked some with Node.js, and its module system was pretty nice: no name conflicts, easy to share code! Some way into BQN development, I figured out (with some help from a Common Lisp programmer) a way to add modules with an APL-y syntax, and something magic happened. I got objects[3] too! I think I've done about as much OOP in BQN as anywhere else, and I feel like I understand it a lot better now.

    So, this is my experience with Lisp-family features and APL. Fits like a glove, programming is easier and more fun. I mix and match array, functional, and object-oriented styles however I want. Did I lose coherence? When I translate my old J code it comes out shorter and cleaner and without exec (".) everywhere. But I still don't get why I should want the language I use to not support mutability rather than just default to immutability. Did I fail to understand something in J when I had the chance?





  • Barriers to APL Adoption
    4 projects | | 21 Jan 2022
    Co-dfns feels like an academic project that I won't be able to figure out how to use.
  • Array programming language(s) for 3d-graphics?
    5 projects | | 6 Nov 2021
  • Is C the only right option for implementing an array language?
    3 projects | | 24 Aug 2021
    As an example, Aaron Hsu's Co-dfns APL compiler is written in Dyalog APL.
  • Let's build a simple interpreter for APL, part 2 (2020)
    1 project | | 8 Jul 2021
    Does "make use of the speed of array-based language, but save computation time by compiling" refer to using an array language that is compiled? [Co-dfns]( compiles a dialect of APL, so that might be interesting to you.
  • Zig 0.8.0 Release Notes
    6 projects | | 4 Jun 2021
    The changes to the IR data structures in this release are really neat- whole trees and graphs fit in a small fixed number of flat arrays. This saves on allocations, saves on total memory usage, and makes them trivial to serialize because there are no pointers.

    I recently arrived at a similar design for manipulating NFAs as adjacency matrices, as a replacement for more pointer-y adjacency lists, by way of sparse matrix data structures. Rather than Zig's performance angle, I found that it made whole-graph operations much easier to implement and reuse.

    I've also seen similar approaches from array languages like APL, for example this project for running this kind of stuff on GPUs:

    And, I've seen it in Rust as a "workaround" for the borrow checker, where that framing tends to make it feel like cheating or settling, which IMO is unfortunate since when people arrive at it for other reasons it seems to have a lot of other benefits!

    There are probably more contexts I'm not familiar with- anyone have any good examples from domains they've worked in?

  • From Competitive Programming to APL
    2 projects | | 4 Jun 2021
    You might be interested in Aaron Hsu's work on co-dfns, which is a compiler that compiles a subset of Dyalog APL to the GPU.

  • A C compiler which can compile itself (in 2048 bytes)
    6 projects | | 15 Feb 2021
    It's funny to see the Perl comparison when APL-family languages normally have code that looks like that:

  • "Interlisp is a very large software system"
    6 projects | | 2 Jan 2021
    There's a guy who wrote a dyalog compiler for GPU stuff so you can just run your APL stuff on the GPU. He wrote the thing in dyalog, and the compiler is "just" a few files, no more than a page each.

What are some alternatives?

When comparing maiko and Co-dfns you can also consider the following projects:

BQN - An APL-like programming language. Self-hosted!

chibicc - A small C compiler

sbcl - Mirror of Steel Bank Common Lisp (SBCL)'s official repository

ngn-apl - An APL interpreter written in JavaScript. Runs in a browser or NodeJS.

tigerbeetle - A distributed financial accounting database designed for mission critical safety and performance to power the future of financial services.

dex-lang - Research language for array processing in the Haskell/ML family

zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.

april - The APL programming language (a subset thereof) compiling to Common Lisp.

quickjs - Public repository of the QuickJS Javascript Engine. Pull requests are not accepted. Use the mailing list to submit patches.

cloc - cloc counts blank lines, comment lines, and physical lines of source code in many programming languages.

uemacs - Random version of microemacs with my private modificatons