ETC Labs, an accelerator dedicated to research and core technology development for users of the Ethereum Classic (ETC) protocol, has announced the Alpha release of EVM-LLVM (Ethereum Virtual Machine- Low Level Virtual Machine) for the Ethereum stack communities.
This new infrastructure marks a milestone in the evolution of smart contract development that will enable developers to use a larger variety of programming languages to target the EVM and also benefit from LLVM’s mature tooling ecosystem of debugging, validator, static analysis, and more. By adding EVM to the choices available to developers, LLVM brings new capabilities to the development community working in the ETC ecosystem.
Until now, DApp functionality required the use of a new decentralized network of computers, a new operating system, and a new programming language. The EVM and Solidity were created to address these handicaps. Solidity is the leading smart contract programming language for EVM-based blockchains, and other blockchains are compatible with contracts written using Solidity. However, smart contract developers have a love-hate relationship with Solidity; it is new, and it is unfamiliar.
With the introduction of EVM-LLVM, DApp developer capabilities are enhanced, making possible more useful and interesting DApps and improving DApp quality, portability, and lifespan. All with improvements in the ease of writing and maintaining DApp code.
“This is a significant innovation because it enables developers to write smart contracts in many languages in addition to the leading language, Solidity. It’s important to recognize Alan Li, who leads the project team. His foresight and expertise have made this release possible. This is a breakthrough technical development and signals that ETC Labs and the ETC Core development team that stewards the Ethereum Classic platform have fulfilled one of our strategic priorities: interoperability.”
– Terry Culver, CEO of ETC Labs
LLVM is a library that is used to construct, optimize, and produce intermediate and/or binary machine code. It can be used as a compiler framework in which the user provides the “front end” (parser and lexer) and the “back end” (code that converts LLVM’s representation to actual machine code). LLVM supports a variety of front-end languages, including Rust, Objective C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, and GLSL, and LLVM also supports new target platforms (WASM).
An EVM backend for LLVM makes it possible to adopt this array of languages for contract programming. Access for more languages creates access for more developers to build DApps on Ethereum Classic and EVM-based blockchains.
The LLVM ecosystem also provides mature, high-quality tools for development, including tools for debugging, validator, and static analysis; and the LLVM community is committed to supporting the LLVM project through an extended lifespan, making it one of the most widely accepted toolchain platforms. Developers working on LLVM-base infrastructure will receive ongoing benefits and support from the LLVM community, providing a future-proof toolchain.
A recent ETC Core collaborative partnership with Second State has targeted completion of a pipeline for EVM use in LLVM. Second State’s SOLL compiler generates compatible LLVM-IR that can utilize the LLVM-EVM-backend to translate to EVM-bytecode.
“The LLVM-EVM project complements the SOLL compiler to provide an EVM target for the compiler toolchain. The EVM is the dominant smart contract execution engine today. We believe that EVM and Ewasm [the Second State VM] will co-exist for the foreseeable future. LLVM-EVM, together with SOLL, bridges and unifies the developer experience between EVM and Ewasm.”
– Michael Yuan from Second State
The Vyper team is also experimenting with code generation on the LLVM infrastructure.
“Vyper sees the LLVM-EVM backend project as a real win for smart contract development. The world-class, mature tooling and optimization infrastructure that LLVM provides will lead to safer and more performant code for EVM-based smart contracts, especially when paired with EVM-only languages like Vyper. This backend will support hundreds of deployed public and enterprise chains that already run the EVM, the most proven VM that exists for the production use of smart contracts in real-world applications,” said the Vyper team in a recent post.
EVM LLVM is a compiler backend for the smart contract engine EVM. For developers building with smart contract DSL (Domain Specific Language) on LLVM, or porting over an existing language, the source code can be downloaded at the official EVM-LLVM project’s Github repository. ETC Core’s compiler development lead, Alan Li, has called for community participation in the creation of new smart contract languages, porting and using existing LLVM-based analysis, validation, debugging, or optimization tools for easier, safer, future-proof smart contract development.
The project’s initial documentation is available at llvm.etccore.io.
Technical information and the wiki are posted at GitHub for the community to review, challenge, suggest, or even fork to improve the project code over time.