aiken-lang / aiken

A modern smart contract platform for Cardano
https://aiken-lang.org
Apache License 2.0
468 stars 91 forks source link

TODOs :: Road to β #754

Closed KtorZ closed 1 month ago

KtorZ commented 11 months ago

This issue summarizes the work remaining work we foresee for the β-release of Aiken. Items are settled and some may be added as needed. But it gives a general overview.

Off-chain code generation

[!NOTE]

We will no longer be addressing this since it has proven to be a non-problem. What we are observing in practice are frameworks (e.g. translucent, bloxbean, Plutus-Tx...) providing their own support for CIP-0057 Plutus blueprints which are bespoke for the language they live in. This is better than a clunky plugin system based on a portable VM.

Language Server Protocol

Core Improvements

Plutus V3

Property-based testing framework

Command-line

Aikup

QA

Issues to be drafted

MitchTurner commented 11 months ago

Off-chain code generation

Is this for generating types and serialization? Very excited for that. Would appreciate Rust type :)

Also, extism seems like a wasm thing. Curious how that's related to generated types.

KtorZ commented 11 months ago

@MitchTurner thats exactly what it is about, generating boilerplate smart constructors and serialisation code for datum and redeemers.

Extism here is used as a decoupling mechanism. We don't want to be writing all the code generation for all languages ourselves. So we need a way for the Aiken cli to delegate part of the generation to "plugins". So that in Aiken, we handle the parsing and processing of the blueprint and we hook onto plugins for generating the actual code. Now we thought about it and people are most likely going to want to use their own favorite languages for the job, and it will be complicated to package plugins if we simply rely on binaries. Thus the need for a portable target which is widely support across languages -> wasm.

Rust is something we'd like to have eventually and it would be a nice trial if you want to give it a try and build the Rust plug-in!

MitchTurner commented 11 months ago

Nice. Yeah I'd be open to help out on the Rust plugin. That's the biggest pain point with Naumachia rn, manually writing the PlutusData conversions for Rust types. It'll be great to have the types handed to you from your Aiken code 🤝