# SOLL Compiler (for YUL and Solidity) by Michael Yuan

- Channel: [Devcon](https://streameth.org/devcon)
- Date: 2020-10-07
- Duration: 14:23
- Watch: https://streameth.org/watch/yt-BVsmxVfdT8o
- YouTube: https://www.youtube.com/watch?v=BVsmxVfdT8o

## Description

Learn more about the evolution and current state of the SOLL compiler project, which builds compiler front ends for YUL and Solidity, and backends for Ewasm and EVM. This talk includes a report on the technical progress made so far as well as future roadmaps and collaborations. It also discussed the web-based IDE developed for Solidity that allows fast dapp development and deployment on Ethereum compatible blockchains.

## Transcript

the soul team you know that's um that's how we position it is the irvm based or cared for solidity and you're actually you know so its solidity are we're you know that's where the name came from it's not very imaginative but anyway so we are very distributed a team I live in Texas you know that's but most of the engineers that work on soul they live being PI Bay and in a minute you can't you don't know why because you know this because a lot of this compiler tired talent you know actually come from the semiconductor industry so you know that's that's our background he's primarily in compilers for chips and hardware and things like that and also for enterprise software I've you know my myself has a background the enterprise software so high that I from from our team would give a more in-depth overview of soul tomorrow that's he has a talk scheduled for tomorrow so if you like what what is what are you here today from me you know make sure that you catch his talk tomorrow so oh well my publisher made me do it you know so this is a book I wrote last year and it has a lot of solidity and developer tools and it's probably too too much of an entry-level book for this audience but you know I just want to put it here it's it's published by NS and Wesley in the US so anyway um let's get started so first of all the burning questions you all want to ask is why another compiler why do we need another compiler why did we what were we thinking we started almost a year ago when we decided to write another compiler you know so I want to put up the two quotes Vitalik had back in 2018 and he talked about you know one of the major strengths of is erm or any decentralized ecosystem really is a diversity of tools and diversity of software right you know it's it's decentralization of software so that's where we see ourselves in this ecosystem is to provide I wouldn't say alternative but to provide on some you knows another way to do another tool chain - for a prevailing language like a solidity or you are so that we can have multiple and multiple backends and to have another toolkit and that's provide more stability to the ecosystem so that's where you know where we see ourselves coming from so what is it what exactly is so you know just said it's solid a VM so at the current state you know if you look at the release software of Sol on github you know there's there's three major parts the first is we have a solidity to Eva's on compile you mustn't stand for a certain flavor where some that we already knew that so it's hats can compile a data source code to webassembly you serve and flavor the web some and the second aspect of its it's your true Eva's own compiler and another interesting aspect of it it generates EVM targets the traditional the you know the the current generation UVM targets with the help of EVM lrvm project which is projects a linear LED so most importantly you know our position of it it's not just a compiler that you can use out of the box it's a collection of tools and libraries to build your own language tools in a serum ecosystem that's how we see this products going in future so here's a github link to this to this project it's second - state search so it's easy to remember so before I go further I want to take a minute to talk about you know why even you know that's Eastern flavor the web somebody why do we should start has a contagion target why don't we just to do um directly you know first of course is because there's already isolated a TVM compiler and that's it's you know and it's widely used and we don't really necessarily want compete with that so you know that's so farmed from the get-go we we try to choose another compiler target that's a stoplight economy so um and also because that's at the team we also build our own web round hang and part and a mode of that webassembly around Hermes is evil on so you know so if you go to a router project it's called ssbm it's second estate virtual machine it has its a fully compliant webassembly virtual machines can be used on the server side and also primary used on the server side i would say and it has a which has a mode that's it's called eva the mode that you can it actually we have confirm these passes all the state value bottom tests so you know these sides pass the test suite 100% and the soul we saw an SS vm you can actually now start a Eva's own private note and used so to compile your so later the contract into web assembly and run it on that you know so it's sort of like a mini test net and also simply use our test net you know there's a there's a test net with that we had in partnership with several miles that use the old the older generation of what I call you know what they call a Thurmond you know the tenements either amount animate and then we put the SS VM eurozone in there to replace the gas virtual machine so that's so that provides a complete end-to-end solution that allows people to compile from you also their data source code to webassembly bytecode and then run is where the simplified for the email actual packaging so that so that's the work that we have done so far so here is a demo I'm I'm glad it drawn so you know because I I don't have to go to go to youtube for that but it so it's animated Jeff so it basically it shows that some the the big chunk of tests that you just saw sorry this goes too fast but the big chunk of text you just saw is compiled by code encoded into technique hex format and so this is your standard guess console that connects our test net that allows you know that's so it goes over again so so it's a local County and put that in there and deploy it either contract so what contract that is that the ERC 20 contracts that compiled to webassembly bytecode and then raw on the eve of them test nets using salt so there's you know a lot of tools that a mouse about toast that's that that we have developed so far so it basically shows you that you can use the council to make transfers from inside the contract so so that's just you know the work that we have that we have done that we can demonstrate here so if you go to our our software release page that you can see the current status of the of the compiler the current status of the comparison so we tested socialiste every release we test all the almost 500 test cases from from your library and we pass almost 80% of X so here is you know there's some the text on the bottom of the page says the features that was currently supported by so so you know mob there are still many features in you that are not yet supported by the we're still working on that but you know it's a but as we have also heard that your language itself is evolving so we definitely want a closer partnership with the rest of the solidity team and your team so that we can have a have a really strong roadmap that we will be able to support all those features in the near future so so currently it passes 400m it passes over close to 80% of all the test cases of you and what about the celerity for net it's less impressive you know there's absolutely that has any testing contract those are not unit tests but you know for tests with you know complete contracts and we can pass 27 there's still a lot of features that are not implemented related features that are not implemented so however we have found some of the celerity contract we can use saw so see to compare it to your and then use so about two to two ever summaries that pass that worked you know and for a couple of those contracts but straight from solidity we can't support one of the most commonly used contracts at the ERC 20 contracts so that's that's where the demo day if you have just a saw is a GRC plant a contract reading insulated a compiled by salt and then you deploy it on your buzzer so below is some of the you know the the text here is some of the only implemented language features in solidity you know so as you can see there's still a bunch of things that's that we are thinking about you know what's the best way to to implement you've been basic features like with a market value it's still still our roadmap so high that high from our team gonna be able to talk more about this tomorrow you know that's you know why we choose to even some features first and why some are difficult to do and then well we just talked about so as a compiler tool so as a compiler to as of today is I think is is a prototype so it's not yet ready for production use obviously because it doesn't pass all the tests Suites so it's a it's it provides some interesting features and however going forward what we really see so as a as a toolkit as a library of components that other people can use to build their own languages you know so for instance because it's based on error we emits an intermediate language so it can it can support multiple language from hands right you know so it can right now we have demonstrated a partial support for solidity and so and your but um there's um you know you wasn't binding for us that's that can come how you where are we am not through our tool but can be you know can be mixed and matched with a rust compiler in that way and there's more than 20 languages there are VM already support so by by by building on that framework we thought there's there may be opportunity for us to become you know one of the tools in in in the tool channel or in a chapter or we in the tool chest that people can use right you know then I put here is a is article from UTC cause I Langley that he talked about he wrote in the Escalade he talks about building atomic specific languages using our left and then on the back end you know so on the front end that we are we're envisioning a toolkit that can support components that can support multiple programming languages on the back end we are envisioning the toolkit can support multiple random targets so we have our relational webassembly and we have shown through IBM LVM project we can support Tracy VM and but what about I thought more interesting use cases or not really more interest but you know one of the popular use cases is the not non-blocking capital use k this is if you look at you know other projects out there like the Facebook Libre or the you know the Chinese central bank projects you know the digital you maybe project you know those are all I would say projects is rooted in crypto but not proxy base so they use a lot of infrastructure that come from the crypto world likes digital wallets the the smart contracts the you know things of that nature but not necessarily boxing based is there a possibility to build a toolkit that make solidity or more of a more general programming language that can be used in those kind scenarios so so here's you know what what do you mean we've engine with with with the talk head like so that's that we might be able to do is to you so for instance one of the things you know that has going on for in academic world for very long time is formal verification that we you know but before branching comma you know it's it's very few you know very little code has been actually formally verified or have that kind of security you mean in the bank's you know people don't bother to do that but solidity is probably one of the early land the first languages that that has a lot of tools around formal verification but is it possible that can we use formally verified solidity application in cloud computing environment instead of just in blockchain like you know can we set up say a function of service function at the cervix or a container service amylin cloud that can run solidity code the formally verified solid it well instead of you know having to have a block team on the backend you know six of that nature you know that's something that you know from our point of view it's really really really interesting that we want to you know make our makes so part of the part of the bigger story in the serum system as a blocking system and also in the cloud computing system so anyway that's that's what I have and again the the probably grant get up is get out / second attach state / as well and we'd love to get if you hear your feedback and we'd love to for more collaboration with so with the community and I think I'm two minutes so you know thank you very much and and and if you have questions let's thank you Michael
