Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


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

MentorMentorMentee

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.



WeekDateActivityStatus
1-2May 31 - June 13Work simultaneously on the first two deliverables to get a grasp of the hardness of each problem.
  •  
3-4June14 - June 27Traverse the Control Flow Graph for each function to get the each array size after pops and pushesIn progress
5-6June28 - July11Provide documentation and test cases for Evaluation 1
7-8July12 - July 25Write a signed version for __mul32()
9-10July 26 - August 28Implement overflow functionality for pow()
11-12August 9 - August 22Provide randomized testing and documentation for overflow functionality of the compiler
13 - 14August 23 - September 5Navigating solang's parser source code.
15 - 16September 6 - September 19Implement 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 17Discussions with the mentors to reach an agreement on the technique to recover from semantic errors
21-22October 18 - October 31Implement 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.