We are thrilled to announce that LimeChain has won and completed a new grant from the Web3 Foundation. The grant is for researching the feasibility of developing a Go Runtime framework for the Polkadot blockchain protocol.
One of our goals at LimeChain is to create robust tools to help developers build impactful Web3 projects and grow the overall Web3 ecosystem. We’ve already had the opportunity to make a meaningful contribution to the Polkadot ecosystem – as part of an earlier grant-winning bid we created Subsembly, an AssemblyScript runtime framework aimed at enabling developers to build runtimes in a language similar to TypeScript, which is widely used in the Web3 dev community. Now, we’re looking to provide the community with another powerful tool in the form of Go Runtime.
Why Go Runtime?
Our initial motivation for creating Subsembly was to provide the Polkadot dev community with a convenient and easy to understand and use framework for building runtimes. Polkadot already has an extremely powerful framework called Substrate, whose modular design ensures great flexibility when building Web3 applications. However, learning how to work with Substrate can be difficult to newcomers, owing to the fact that coding is done in Rust, a language notorious for its steep learning curve.
In contrast, Go is a powerful and fast programming language, with focus on simplicity. The language has gained a lot of traction in recent years, with more and more developers becoming familiar with it. We believe that all this makes Go perfect for implementing an alternative runtime framework aimed at newcomers to the Web3 space. A lower barrier to entry could encourage many more talented programmers to take their first steps in blockchain development.
Ultimately, our goal is to develop and implement a full-fledged framework for Go runtimes, but we first need to lay the groundwork for this to happen. The grant from the Web3 Foundation has allowed us to conduct important research that will help us to identify and address any Go-related technical challenges that could occur during the actual implementation of the framework.
Our research identified three main challenges: the official Go compiler does not support WebAssembly for non-browser environments, so TinyGo has to be used instead; managing memory externally is not supported in Go/TinyGo; limited standard library support in TinyGo. Solving these challenges will allow us to build a full-fledged Go Runtime framework, which will be a big boost for the Polkadot community.
We are happy to share that we’ve been able to achieve all goals we set out in our proposal. Most notably, we conducted a thorough research on TinyGo and we successfully created a Proof of Concept. This takes us one step closer to the actual implementation of a functional Go Runtime, which we see as the natural progression of this project.