Abstract
Solang is a solidity compiler for Solana, Ewasm and substrate. What is required in the project three main subprojects: add overflow detection to integers represented with more than 64 bits, improve Solang's parser to continue parsing after encountering a parser error and finally, generate more optimized LLVM-IR for solidity code containing array bound checks.
Mentors and Mentee
Mentor | Mentor | Mentee |
---|---|---|
Sean Young Time zone: BST | Lucas Steuernagel Timezone: BRT | Salaheldin Soliman Timezone: GMT+2 |
Deliverables
- Overflow detection for big unsigned/signed integers
- improved LLVM-IR for array boundary checks
- improved diagnostics generated by Solang's parser
Milestones
Evaluation 1 :
- Creating temporary variables that hold dynamic array lengths after pushes and pops
- Replace ArrayLength expression with the temporary variable mapped to the dynamic array
Evaluation 2 :
- Make changes to __mul32() (the function that handles multiplication of big integers), and change how is it called by Solang's code emitter.
- Add a signed version to __mul32 that handles signed numbers.
- Add overflow detection to pow().
Evaluation 3 :
- Integrate Larpop's error recovery technique for Solang's parser
Evaluation 4 :
- Implement a recovery technique for semantic errors.
Week | Date | Activity | Status |
---|---|---|---|
1-2 | May 31 - June 13 | Work simultaneously on the first two deliverables to get a grasp of the hardness of each problem. | |
3-4 | June14 - June 27 | Traverse the Control Flow Graph for each function to get the each array size after pops and pushes | In progress |
5-6 | June28 - July11 | Provide documentation and test cases for Evaluation 1 | |
7-8 | July12 - July 25 | Write a signed version for __mul32() | |
9-10 | July 26 - August 28 | Implement overflow functionality for pow() | |
11-12 | August 9 - August 22 | Provide randomized testing and documentation for overflow functionality of the compiler | |
13 - 14 | August 23 - September 5 | Navigating solang's parser source code. | |
15 - 16 | September 6 - September 19 | Implement Larpop's error recovery technique with Solang's parser | |
17 - 18 | September 20 - October 3 Evaluation 3 | Provide tests and documentation for parser error recovery | |
19 -20 | October 4 - October 17 | Discussions with the mentors to reach an agreement on the technique to recover from semantic errors | |
21-22 | October 18 - October 31 | Implement the technique to Solang's parser | |
23-24 | November 1 - November 14 Evaluation 4 | Provide tests and documentation for semantic error recovery |
Methodology:
1- For each milestone, I will have daily discussions with mentors over discord and weekly over zoom, in order to know if I am being on the right track. I will continuously inform my mentors of my progress in each issue.
2- I will work on multiple issues concurrently but will try to adhere to the project plan as much as possible.
Documentation:
Documentation for each milestone will be provided upon milestone delivery.