Tealish Roadmap #64
Pinned
fergalwalsh
announced in
Announcements
Replies: 1 comment
-
I'll just comment with: |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
This post outlines the current high level roadmap for the development of the Tealish project.
These items are not listed in priority order. This post will be updated with links to issues and discussions as features are worked on.
If you would like to contribute to the development of any of these features please start or join a Discussion on the topic to flesh out the details before starting to work on the code/docs.
New Language Features
New types: we will add more semantic types to the language. These are likely to include
bigint
,addr
,uint8, ..., uint512
.More types will increase readability of programs and allow for more safety checks in the compiler & external tools.
Arrays: we will support arrays of fixed sized types. Common array patterns such as element assignment, slicing, iteration and concatenation will likely be supported.
External functions & router: we will define a language native syntax for abstracting the common pattern of routing app calls to specific blocks or functions based on arguments. This will likely include serialization between bytes and Tealish types.
Modules/Imports/Includes: we will support some method of code reuse.
Operator overloading: we will investigate and consider supporting overloading of common operators to allow for
+
,*
, etc with bytes backed big integers. This may potentially also include allowing+
in place ofconcat
.Template variables: we will add support for
TMPL_XXX
variables as values ofconst
s so that template substitution can be done in a standard way with the Teal code.Language Improvements
Macros for constants: we will use Teal macros for user defined
const
s to make the Teal more readable. (Macro support #49)Frame pointers for func args & locals: we will convert functions to use frame pointers instead of scratch slots. This will allow for more usage of functions without worrying about exhausting scratch slots or limiting call paths. (Use frame pointer opcodes for functions - part 1 #25)
Parser improvements: we will make the parser less strict about whitespace where necessary and better able to provide errors for incorrect inputs.
Error improvements: we will improve error handling to make sure a Tealish specific error with line numbers & context is raised
in all circumstances.
Program model: we will improve the internal program model to make it easier to traverse the nodes for analysis and other tooling.
Hex literals: we will support
0xFF..
syntax for byte literals (Hex literal #60)Docs
Tutorials: we will write some tutorials on building apps with Tealish. There will be multiple levels covering various features of the AVM & the Tealish language.
Getting Started Guide: we will write some guides introducing Tealish from different perspectives depending on prior experience - guides for PyTeal developers, Teal developers, EVM developers and those new to blockchain.
Opcode docs: we will generate a version of the AVM opcode docs with Tealish syntax and Tealish specific notes where necessary to make it easier to find and understand the available opcodes.
Program model docs: we will document parts of the program model that can be considered public and stable and safe to interface with from external tools.
Tooling
The CLI will be updated to be more flexible in terms of where it outputs build artifacts.
We will make a tool for generating a
contract.json
(or similar) for a program. This will include extracting external functions, (with their arguments and return types), and structs and other potential user defined types.tealish start
: we will create a tool to help starting a new project/app. It will include boilerplate Tealish code and possibly some tests & an app client stub (in Python).If you have an idea for a feature or doc that is not included above please start an Idea discussion about it.
Beta Was this translation helpful? Give feedback.
All reactions