Mir Versions Save

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

v0.1.2

1 year ago

New version (0.1.2) of MIR has been released

Major changes from v0.1.1 to v0.1.2:

  • Numerous bugs were fixed
  • Shared library is now built and installed beside the static library
  • MIR was ported to musl-based Linux systems, e.g. alpine Linux
  • Generator was improved
    • Register allocator was significantly sped up
    • Alloca code generation was improved (alloca insn consolidation)
  • No red zone x86_64 ABI is now supported
  • Generator debug info were enhanced and improved
  • Documentation in Chinese was added

v0.1.1

2 years ago

This release fixes problems and bugs found so far in v0.1.0 release.

v0.1.0

2 years ago

Hello, everyone. I'd like to announce the very first release of MIR code.

MIR is the light-weight JIT compiler with very fast start up time. It can generate code for the following platforms:

  • x86-64 Linux
  • x86-64 MacOS
  • aarch64 Linux
  • aarch64 (M1) MacOS
  • ppc64 big endian Linux
  • ppc64 little endian Linux
  • s390x Linux
  • RISCV Linux. Minimal requirement is I64 (64-bit integer support), M (integer multiplication and division), F and D (single and double precision IEEE FP numbers)

x86-64 Windows is not officially supported yet although some people already successfully use MIR on this platform.

You can generate machine code in memory from Medium Internal Representation or/and C code.

The JIT compiler is designed to work in multi-threaded environment and can generate machine code for different MIR functions and/or C files in parallel.

The generated code should work with code generated by other compilers (e.g. GCC/Clang) as a lot of efforts were spent to achieve target C ABI compatibility (argument passing, memory layout, etc).

The part of release is a standalone C11 compiler/interpreter c2m. It permits to use C as a scripting language.

The more details about the release can be found on https://github.com/vnmakarov/mir/tree/v_0_1

I would like to thank numerous people who are interested in the project, provided invaluable feedback and pull requests, tried the code before any release, and were patient in waiting the promised release.

The project work will continue. The future development directions are

  • improvement in generated code and compilation speed
  • support of speculation/deoptimization on MIR and C code level which is important for JITs of dynamic programming languages
  • more platforms support
  • more interoperability with other compiler IRs