Features for early production readiness
- Dominant language
- Haskell
- Stars
- 113
- Forks
- 9
- Avg merge
- 4d 9h
- Merged PRs (30d)
- 1
Description
The items I mentioned being important for "early production readiness":
- [x] ABI encoding/decoding for ADTs
- [x] Storage encoding for ADTs
- [x] ABI encoding for arrays (#526)
- [x] Storage arrays
- [ ] Memory arrays
- [ ] `abi_encode`/`abi_decode` function usable within the language, this is frequently used by building data for signature checking (this likely already exists in some form) (see [EIP-712](https://eips.ethereum.org/EIPS/eip-712), and [Solidity's features](https://docs.soliditylang.org/en/v0.8.35/cheatsheet.html#abi-encoding-and-decoding-functions))
- [ ] support for logs / emit (most of the scaffolding exists, see #447)
- [ ] encoding errors properly (similar work to logs)
- [ ] interaction with other contracts, i.e. an "interface" (trait/etc.) and calls to those functions
- [x] public/private functions in contracts (#434)
- [ ] Signed integer types
- [ ] Checked arithmetic by default (#484)
- [x] `struct` data type in memory/ABI (#568)
- [x] `struct` in storage (#571)
Nice to haves:
- [ ] Proper calldata support (i.e. `calldata(bytes)`)
- [ ] Fixed-size storage arrays
- [ ] Constants
- [x] `break` in for loops (#488)
- [x] `continue` in for loops (#490)
- [ ] Cleaner literal assignments (i.e. no need for `uint256(1234)` everywhere)
- [ ] Easier type conversions
- [x] Automatic deriving of some traits (#505)
- [x] Syntactical sugar for mod, bitwise and/or/xor (#485)
- [x] Syntactical sugar for bitwise not (#536)
- [x] Compound assignments `*=` and `/=` (#537)
- [ ] Syntactic sugar for shifts (`<<`, `>>`) -- consider arithmetic vs logical
- [ ] Syntactical sugar for exp (`n ** y`)
- [ ] Syntactical sugar for `++`/`--` expressions
- [ ] Syntactical sugar for slicing `[n:]`, `[n:m]`, `[:m]`
I think after these it would be possible to accomplish most needs as a user.
Contributor guide
No contributing guide indexed for this repository
Research direction
This is a broad roadmap rather than a single actionable change, and it names no files, tests, or entry points. First split the unchecked items into separate issues and inspect the referenced issues such as #447 before defining one feature's scope and completion criteria.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell, solidity
- Domain
- blockchain, compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100