Plutus vs Pluto vs Plutarch vs Plutus Light

Can someone explain to a beginner (who has previously attempted the Plutus Pioneers program but dropped out halfway through) what the differences are between all these different ways of programming Plutus core; and which one(s) should I learn?

Plutus: https://github.com/input-output-hk/plutus
Plutarch: https://github.com/Plutonomicon/plutarch-plutus
Pluto: https://github.com/Plutonomicon/pluto
Plutus Light: https://github.com/openengineer/Plutus-Light

1 Like

Use/learn plutus.

At quick glance, the other 2.5 tools you list (plutarch-plutus and plutus-light) are nascent projects aimed at creating domain specific languages that compile to plutus core.

Plutus is IOG’s Haskell framework for writing validator scripts. It uses Haskell’s metaprogramming features to compile your on-chain logic, written in Haskell, into Plutus core. This approach allows both on- and off-chain code to reside in the same source.

Pluto is a low-level language that compiles to plutus-core. It can only be used for on-chain logic. The reference compiler of Pluto is written in Haskell. I think Pluto is intended as an intermediate representation for high-level languages.

Plutarch is an alternative to IOG’s Plutus, and is essentially a Haskell library, so you can still use Plutus where necessary. Plutarch allows compiling your programs into more compact plutus-core scripts (resulting in lower fees).

Plutus-Light, recently renamed to Helios, is a C-like high-level language that compiles to plutus-core. Like Pluto it can only be used for the on-chain logic. The reference compiler is a single JavaScript file with no dependencies.

For serious work I recommend learning Plutus (and optionally using Plutarch when script sizes become an issue). Pluto is too low level to be practical. We (I am the creator) are still in the process of testing Helios so I don’t yet recommend you use that (unless you want to help us debug the compiler :stuck_out_tongue: )

1 Like