You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

TitleCreate a new Solidity Language Server (SLS) using Solang Compiler
Status

APPLICATION REVIEW

Difficulty

  HIGH

Description 

Solidity is a language for Smart Contracts used by the Ethereum Solidity compiler. Solang is a new implementation of the Solidity compiler, which can target wasm on more blockchains. Solang is written in rust and uses a generated Solidity parser.

Modern IDEs provide syntax highlighting, symbol definition, errors, warnings etc. This is often done via the Language Server Protocol. There are no good implementations of a language server for Solidity, however using the parser and resolver of Solang, this can change.

The idea of this mentorship is to extend the Solang Compiler project so it can run as a language server, that implements the Language Server Protocol.

Additional Information

https://en.wikipedia.org/wiki/Solidity

https://en.wikipedia.org/wiki/Language_Server_Protocol
https://microsoft.github.io/language-server-protocol/specifications/specification-current/

https://github.com/rust-lang/rls (rust language server)

https://github.com/hyperledger-labs/solang

Learning Objectives

  • First and foremost the mentee will learn how to be a positive collaborator and contributor in an active open source project.
  • Learn how to work within the Hyperledger open source ecosystem and culture.
  • Understand smart contracts and the language Solidity language
  • Increase understanding of compiler technology and development tooling

Expected Outcome

  • Extend Solang in the existing rust code base to include language server binary
  • Implement Syntax Highlighting
  • Symbol Definition
  • errors and warnings
  • test cases

Relation to Hyperledger 

Hyperledger Burrow and Hyperledger Sawtooth can run smart contracts compiled using Solang. So, this tool will help users write smart contracts in Solidity for those project.

Education Level

The ideal mentee is a university student or a developer with one or two years of experience with a solid background in Computer Science, especially compiler technology.

Skills

The following skills are required:

  • Working knowledge of rust
  • Understanding of the parsing and resolving stages of a compiler

Schedule

Sr. noWeekWork to be doneStatus
1

June 1 - June 7 

Initial work on investigating tools and extensions required for the client side request processing. Create a minimal extension to send the requests from Client(vscode) to the Server(stdio/tpc).Can send the messages from client side to stdio, Working on validating the reception of the requests by a sample python server. 
2June 8 - June 14Test for interoperability of the vscode extension, confirm the receiving of the requests. Start working on the server side implementing the functionality to read requests from the client( Eg. Reading messages from stdin using Rust).
3June 15 - June 21Follow up on past week task, Test and confirm sending and receiving of the requests between client and server. Start working on the first feature which is compiling Solidity contracts. 
4June 22 - June 29Buffer period. Follow up of the work of compiling Solidity and implementing extension command for compiling and testing for same.

Future plans

This is just the start of a language server. Many more features are possible in the language server protocol, e.g. refactoring.

Preferred Hours and Length of Internship

This project can be done by a full-time or part-time mentee.

Mentor(s) Names and Contact Info

Sean Young

sean@mess.org

hyperledger chat: seanyoung

twitter/telegram: iamseanyoung





  • No labels