Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Consider Second Language for Wasm contracts #74
Rust has great support for wasm and I do like it, but it also has a steep learning curve and may not be ideal to get most number of developers building on cosmwasm. Since the actual bindings are not so big, once they stabilize, I would be interested in adding support for writing contracts in another language. This would require both the basic libraries (what
Time for investigation is now. Time for implementation is when cosmwasm api is stabilized (at or nearing a 1.0 release)
There is a nice list of wasm-suppporting languages. Many are "unstable but usable". I would prefer to take one with stable wasm support, but this really ends up with C/C++, Rust, AssemblyScript or Go if we stick to mainstream languages with stable support. We may also consider some nice ones with unstable support.
AssemblyScript A subset of typescript, meant to introduce web developers to wasm. Near Protocol is using this as the main language for their wasm smart contracts (along side rust), chosen for ease-of-use by devs.
Go There is a custom llvm backend for go, branded "tinygo" which allows you to compile go programs to wasm. While go is more verbose than the other languages on this list, it is also known to cosmos SDK developers.
Kotlin Nice ergonomic language, known by many android developers. Kotlin/Native adds wasm32 support, but it is not 1.0 yet and seems like progress is slowing down (from forum comment)
Swift a very nice language, used by iOS developers everywhere, but wasm support is just starting:
Can you take a look at the above link and let me know if this would be a good option for you? (If so, please add a
But do what's best for project not because I want it, I can learn new things. Go seems to make sense because Cosmos SDK in Go as well. I'm excited about the Cosmos toolset that is being built. I did get the Rust toolset setup and the test contract to compile. Definitely some learning curve for me with development in Rust. Modern Symfony/Drupal dev in PHP is full on OO, but no pointers.