Versions Compared

Key

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

TBD

Abstract

Solang is the compiler for the Solidity language which is used to write smart contracts for fabric and ethereum. A Language server for Solidity language is developed that can help the developers with providing proper code compilation messages along with features like diagnostics, syntax coloring and hoversHyperledger Labs Blockchain Automation Framework(BAF) is a tool to deploy different DLT platforms automatically on a given Kubernetes cluster. BAF supports multi-cloud and multi-DLT deployments, and already supports HL Fabric, HL Besu, Quorum, R3 Corda. For HL Besu, currently only IBFT2 Consensus is supported by BAF.

Mentor and Mentee

Mentor: Sean Young Sownak Roy 

Timezone: UK

Rocketchat(Hyperledger): seanyoungsownak

Mentee: Shivam BalikondwarRoshan Raut

Timezone: IST

Rocketchat(Hyperledger): sbalikondwarroshan13046

Mail:  cha0sk1ng101010@gmail roshanpk.raut@gmail.com

Communication channel: Jitsi +   Rocketchat + Github

Project repo: https://github.com/hyperledger-labs/solangblockchain-automation-vscodeframework

Deliverables

  •  VScode extension that can be used to use the implementation.
  •  Language Server for Solidity.
  •  Tests for the implementation.
  •  Documentation of the Language ServerDocumented, ready-to-use Besu Clique consensus on BAF.
  •  Documented upgrade of Besu to latest stable on BAF.

Milestones

Eval 1:

  •  VScode extension(basic functionality) + Syntax highlighting.
  •  Implemented Rust server to receive and send JSON-RPC responses from VScode client.

...

  •  Extending hover implementation for function, struct, enum, events, built-ins documentation lookups.
  •  Test and Documentation implemented for same.

Timeline

WeekTask/PlanStatus
May 25 - May 29Mentee intro with the mentor. I already communicated with the mentor(Sean)  Done
June 1 - June 14Implement basic functionality of VScode extension. Syntax highlighting of Solidity language. Done
June 15 - June 28 Rust server for receiving the incoming requests from VScode clients.Done
June 29 - July 5 Buffer period to complete the remaining work and co-op with difficulties during implementation.Done
July 6 - July 12

Complete tests and documentation of the Rust server impl.

Eval on July 10: Provide reports for first quarter to the program organisers.

Done

Eval completed

July 13 - July 26Work on implementing diagnostics. Prepare the backend to process incoming code.Done
July 27 - August 9Work on diagnostics, fixing Range issues and fixing minor bugs.Done
August 10 - August 16Buffer period to complete the remaining work and co-op with difficulties during implementation.Done
August 17 - August 23

Complete tests and documentation of the diagnostics implementation.

Eval on August 21: Provide reports for the second quarter to the program organisers.

Done

Eval completed

August 24 - Sept 6Work on the hover feature. List out all possible grammar definitions and start implementing.Done
Sept 7 - Sept 20Follow up on the work.Done
Sept 21 - 27

Finished the basics of hover implementation. Added hover for variable definition and types.

Done
Sept 28 - Oct 4

Complete tests and documentation of the implementation.

Eval on Oct 2: Provide reports for third quarter to the program organisers.

Done

Eval completed

Oct 5 - Oct 18

Week1: Work on adding support for Function + Return-type + Function params hover.

Week2: Work on adding support for Emit token in hover.

Done
Oct 19 - Nov 1

Week1: Work on adding support for struct entries in hover.

Week2: Buffer period to follow up on the work.

Done
Nov 2 - Nov 8 Used this week to work on hover implementation.Done
Nov 9 - Nov 13

Time to complete remaining details and documentation.

Done

Eval completed


Explanation

A language server is a program that communicates with the editor to provide different editing features for a programmer. The communication takes place in the form of IO buffers and JSON-RPC messages.

...

The process flow of the same is shown below:



Methodology

I followed the “Design-Code-Test-Document​” methodology.

...