|
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.
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
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.
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.
The following skills are required:
Please check the project plan for this.
This is just the start of a language server. Many more features are possible in the language server protocol, e.g. refactoring.
This project can be done by a full-time or part-time mentee.
Sean Young
hyperledger chat: seanyoung
twitter/telegram: iamseanyoung
Shivam Balikondwar
hyperledger chat: sbalikondwar
During the mentorship a language server was developed which used Solang compiler as its backend to process Solidity files.
The server is implemented in Rust using tower-lsp as a base framework to process client(editor)-server requests.
A vscode extension was also developed in TypeScript to use the server providing features:
The code is present on github under hyperledger-labs at https://github.com/hyperledger-labs/solang-vscode.
Checkout the readme page to learn how to use it.
A visual demo video of the implementation is uploaded here.
The project plan contains technicalities of how the client-server communication process takes place.
Hyperledger Mentorship presentation slides(google slides link)