
Aiken
Aiken is a modern and accessible programming language, specifically created to both simplify and enhance the development of smart contracts on Cardano. It comes in an easy to learn syntax, designed for effortless integration with other tools and languages, plus includes various state-of-the-art features that meet the current expectations of developers.
Foster growth in the Cardano ecosystem.
In true Open Source fashion, Aiken arose from the dedicated efforts of various individuals. After the original kickoff with the support of TxPipe on the foundational tooling, the Cardano Foundation helped in materialising the ideas behind a smart contract programming language. Both saw the potential of Aiken and how it could foster growth in the Cardano ecosystem. Over the course of its development, Aiken has rapidly grown to become one of the most loved frameworks for building smart-contracts on Cardano with many of the largest dApps migrating to it.
While Aiken-the-language has been mostly stable for a while, its ecosystem of tools keeps evolving and reshaping to ensure the best developer experience possible to its users. This is only truly achievable as a collaborative effort, with more than 40 code contributors and even more contributors providing feedback and ideas constantly. So it is only natural for Aiken to become one of the first projects hosted under PRAGMA as it already embodies the very core principles behind PRAGMA.




Recently
Important milestone recently completed.
Workspaces
Straightforward support for workspaces via a members
property in the root aiken.toml
file. Glob patterns are supported.
Types as Namespaces
Introduces support for using types as namespaces to access constructors in patterns and value construction. This simplifies the import management; especially for types with many constructors where it can get quite cumbersome having to import each constructor independently.
Read moreBenchmarks
A new bench
command and language keyword. The command is very similar to aiken check, and will collect and run benchmarks found across the codebase. A bench is a new type of test that takes in a Sampler. A Sampler is a scaled Fuzzer which receive a monotically increasing size as parameter. This allows fine-grained control over generated values.
Currently
Items currently being worked on.
New LSP quickfixes
A variety of new automatic LSP quickfixes to cover warnings and errors such as "unexpected type holes", "unused private constant" or "unused private function".
Read moreReplaying Transaction with Custom Script
Allows users to re-run an existing transaction while overridding specific scripts (to introduce traces, for example) without altering the transaction CBOR. This comes as an extra troubleshooting mechanism when something goes wrong in production.
Read moreNext
Upcoming steps already planned for development.
Zero-Knowledge support
Make Aiken capable of producing arithmetic circuits for zero-knowledge proving. Various ideas are being explored, mostly relying on the existing tooling around RISC-V and WebAssembly.
Read moreUnder discussion
Discussions and design under consideration.