mir VS ecl

Compare mir vs ecl and see what are their differences.


A lightweight JIT compiler based on MIR (Medium Internal Representation) and C11 JIT compiler and interpreter based on MIR (by vnmakarov)


By embeddable-common-lisp
Our great sponsors
  • Scout APM - Truly a developer’s best friend
  • Zigi - Workflow assistant built for devs & their teams
  • InfluxDB - Build time-series-based applications quickly and at scale.
  • SonarQube - Static code analysis for 29 languages.
mir ecl
14 12
1,671 -
- -
7.9 -
15 days ago -
MIT License -
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 mir. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-08-17.


Posts with mentions or reviews of ecl. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-06-09.
  • Implementation comparison
    2 projects | reddit.com/r/lisp | 9 Jun 2022
    The correct one would be https://gitlab.com/embeddable-common-lisp/ecl
  • Wildcard-less alternative to cl:pathname?
    2 projects | reddit.com/r/Common_Lisp | 6 Jun 2021
    Related issue: https://gitlab.com/embeddable-common-lisp/ecl/-/issues/394. That's not exactly this bug, but if that issue were fixed, I think it would also fix this.
  • uLisp
    18 projects | news.ycombinator.com | 4 May 2021
    > I would love to program my fleet of ESP8266s with anything but C.

    Have you looked into Embeddable Common-Lisp? (https://gitlab.com/embeddable-common-lisp/ecl)

  • GNU lightning: generates assembly language code at run-time
    5 projects | news.ycombinator.com | 8 Apr 2021
    > I don't think ECL uses GCC as a JIT; most common lisps use an incremental AOT compiler, which is different


    What is the difference?

    5 projects | news.ycombinator.com | 8 Apr 2021
    > No, but new javascript programs are frequently loaded.

    This is probably what confuses a lot of people into thinking that program distribution has anything to do with JIT. JavaScript is the only programming language for which the main method of program distribution is source-code-only, and why all the trade-offs of adaptive optimization seem necessary, to the point that now people are making its necessity into a virtue. Likewise for Java stealing credit for popularizing portable bytecode as the main method of program distribution - although Gosling coined the term JIT years before Java had a JIT compiler.

    > If (for instance) I write a script in c and run it with tcc -run

    And what happens when you use libtcc?

    > Compilation should occur concurrently with execution

    Execution of what? You do not need an interpreter or a bytecode VM to have a JIT compiler.

    > usually accompanied by some heuristic for deciding what to compile first (e.g. tracing)

    That is adaptive optimization, and is orthogonal to compiling (you can have adaptive optimizations in an interpreter or a bytecode VM). Tracing (which is not a heuristic btw) is a variation of profile-guided optimization, which is orthogonal to JIT.

    > Even if it is not, however, ECL does not JIT c, but produces it statically.

    I posted this elsewhere in this thread:


    Can you explain why you think that is not a JIT.

What are some alternatives?

When comparing mir and ecl you can also consider the following projects:

ulisp - A version of the Lisp programming language for ATmega-based Arduino boards.

LuaJIT - Mirror of the LuaJIT git repository

nesper - Program the ESP32 with Nim! Wrappers around ESP-IDF API's.

Cwerg - A light-weight compiler for a low level language with a reusable backend

fe - A tiny, embeddable language implemented in ANSI C

terra - Terra is a low-level system programming language that is embedded in and meta-programmed by the Lua programming language.

asmjit - Machine code generation for C++


Fennel - Lua Lisp Language

nelua-lang - Minimal, efficient, statically-typed and meta-programmable systems programming language heavily inspired by Lua, which compiles to C and native code.

llvm-project - The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Note: the repository does not accept github pull requests at this moment. Please submit your patches at http://reviews.llvm.org.