Skip to content

Feature

rpfister102 edited this page May 3, 2019 · 13 revisions

Core Feature Proposal

This is a proposal which specifies the core features of the language. Those features will be implemented first. All other features are implemented later.

Core Features

  • contract
  • arithmetic operations (+/-/*///%)
  • comparison operattions (<, >, <=, >=, ==, !=)
  • negation (!)
  • variable declaration without structs, map, array (int, bool, string, address, a.s.o.)
  • function declaration
  • return statements (multiple)
  • structural statements (if, else a.s.o)
  • call statement
  • variable access
  • assignment

Questions

  • What do you think about version? I guess it's not required as a core feature and easy to add later - Can be postponed.
  • Is the constructor a core feature? It is really helpful (e.g. set owner) but is it required as core feature? - No.
  • Is it easier to implement single return values first or should we directly start with multiple return values? - Do multiple right away.
  • Should we implement default values in the core version? - No, as dynamic values are possible.

Thomas - "For me, Core is really just creating a contract with a function that adds two integers and returns it."

Additional Features (sorted by implementation order)

  1. Function Call ✅
  2. VM support Multiple Return values ✅
  3. Designator ✅
  4. this keyword ✅
  5. Constructor ✅
  6. Array
  7. Map
  8. Struct ✅
  9. address
  10. Expressions (Rest)
  11. Else If Support
  12. Builtins -> msg, value, block a.s.o.
  13. For
  14. Foreach
  15. Annotations
  16. Builtin Errors
  17. Interfaces
  18. Custom Errors
Clone this wiki locally