input-output-hk / input-output-hk/Developer-Experience-working-group
Plutus Multi-language support
- Dominant language
- No language data
- Stars
- 24
- Forks
- 14
- PR merge metrics
- No merged PRs in 30d
Description
Plutus was originally released with `PlutusTx` as the default Haskell API for building plutus onchain scripts. other tools have quickly emerged for writing plutus _without Haskell_, either as a standalone language, or as an embedded DSL in mainstream programming languages. Additionally, other tools have arisen for _building transactions offchain_ in multiple languages. A problem that then arises from this plethora of choice is sharing types and interfaces across languages for convenience, and in the case of Haskell alternatives, there has been compiler compatibility issues that can make certain alternatives harder to use.
Smart Contract Languages (Onchain Scripts)
- [PlutusTx](https://github.com/input-output-hk/plutus), Haskell*
- [Plutarch](https://github.com/Plutonomicon/plutarch-core), Haskell*
- [Pluto](https://github.com/Plutonomicon/pluto), Standalone
- [Helios](https://github.com/hyperion-bt/helios), Standalone
- [Aiken](https://github.com/txpipe/aiken/), Rust/Standalone
- [Imperator](https://github.com/ImperatorLang/imperator), Standalone
- [plu-ts](https://github.com/HarmonicPool/plu-ts), Typescript/Javascript
Transaction Builder Toolkits (Offchain Code)
- [PyCardano](https://github.com/cffls/pycardano), Python*
- [PAB](https://github.com/input-output-hk/plutus-apps), Haskell*
- [plu-ts](https://github.com/HarmonicPool/plu-ts), Typescript/Javascript
- [decentralized application backend (DAB)](https://github.com/cardano-foundation/dab), API-based - this may qualify as more of an indexer/tx subscription service without an API that covers both indexing and submission.
- [cardano-transaction-lib](https://github.com/Plutonomicon/cardano-transaction-lib), Purescript (Javascript/Typescript coming soon)*
- [lucid](https://github.com/spacebudz/lucid), Javascript
- [mesh](https://mesh.martify.io/), Javascript
** known to be used in production, or have large plutus projects actively adopted for production purposes
Cardano has a flourishing polyglot suite of tools, however there are going to be a number of gaps when attempting to compose these individual tools into a full-fledged application:
- type sharing between smart contract and Transaction builder layers
- currently there is no known implementation of these tools for platforms that target mobile or gaming/metaverse technology. the best offering here is currently javascript, but it would be great to see similar tools for in C#, Dart, Golang, Swift, etc.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.