Choosing an Implementation

The best implementation depends on what you want to do first. The Makrell family shares a common foundation, but the current tracks have different host languages, tooling, and maturity.

Use this page as a practical starting guide rather than a strict ranking.

Choose MakrellPy

Choose MakrellPy if you want:

  • a broad practical language experience

  • strong macro and pattern-matching examples

  • direct Python interop

  • a good place to learn family-wide Makrell ideas through one implementation

MakrellPy is often the easiest starting point when your goal is to understand the language model itself.

Choose MakrellTS

Choose MakrellTS if you want:

  • TypeScript or JavaScript alignment

  • browser and Node.js workflows

  • access to the JavaScript ecosystem

  • a path that fits frontend or web tooling better

MakrellTS is a natural choice when your host environment is already centered on TypeScript, Node.js, or the browser.

Choose Makrell#

Choose Makrell# if you want:

  • CLR and .NET interop

  • compiled assemblies and dynamic loading

  • the .NET CLI-oriented workflow

  • MRON and MRML support from the .NET track

Makrell# is the right fit when your main interest is the .NET ecosystem and its libraries.

Choose MRON or MRML

Choose MRON or MRML first if you mainly want:

  • structured data

  • structured markup

  • a Makrell-shaped format without adopting a full host language first

These are also useful when you are exploring the family through configuration, content, or markup rather than general programming.

A simple rule of thumb

If you are still undecided:

  • start with MakrellPy for language learning

  • start with MakrellTS for JavaScript or browser work

  • start with Makrell# for .NET work

  • start with MRON or MRML for data and markup tasks

For a broader side-by-side comparison, continue with Implementation Matrix.