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
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
Skills
The following skills are desirable:
- Working knowledge of rust
- Understanding of the parsing and resolving stages of a compiler
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
No preference
Mentor(s) Names and Contact Info
Sean Young
hyperledger chat: seanyoung
twitter/telegram: iamseanyoung