Almost three months after the C++ team was “rebooted,” I’d like to give you an update on the team itself, what we’ve done, and what we’re planning.
team update
The so-called C++ team currently consists of Paweł Bylica (@chfast), Greg Colvin (@gcolvin), Liana Husikyan (@LianaHus), Dimitry Khokhlov (@winsvega), Yann Levreau (@yann300) and Bob Summerwill (@bobsummerwill) . , me (@chriseth) and (kindly “donated” by Eris Industries) RJ (@VoR0220).
Paweł is the original author of the llvm-based EVM-native just-in-time (JIT) compiler. He joined us back in April and will continue to improve JIT.
Greg joined in February and has already achieved significant speedups in our C++ implementation of the Ethereum Virtual Machine, leveraging his experience implementing the Java Virtual Machine for his previous employer, Oracle.
Liana and Yann are working on Solidity and its IDE (yes, plural, see below!).
Dimitry is responsible for consensus testing and also works on the C++ core.
Bob joined in February (having been a part of the community for a long time) and is currently leading an ambitious effort to unpack the C++ codebase. He is also a person who contributed greatly to this case. Farm Guide.
RJ joined Eris Industries in March and is developing the Solidity compiler.
Moreover, the coordination and cooperation between the C++ and Go teams is at a completely different level than before. One of the reasons we are improving the interpreter is to get a watermark for the go-ethereum interpreter, and the lessons learned along the way are reflected directly in the go interpreter, to name just one example.
Remix Announcement
Developing Solidity itself and providing resources and tools for people writing smart contracts and dapps is one of the C++ team’s biggest areas of work. These essential tools are debuggers for Solidity and the Ethereum Virtual Machine. This allows developers to look inside the virtual machine and find the exact points in their code that aren’t doing what they expect. our IDE mix This is a great piece of software that provides exactly this. Unfortunately, most people prefer not to use it. Browser robustness Or maybe some unit testing tool.
This is understandable. People don’t want to switch editors (which is why we’ve gotten so many Solidity plugins for existing IDEs in the last few months) or install additional software. Moreover, the relative amount of external contributions we have received on html5+js-based minimalist IDE browser robustness compared to C++/Qt-based Mix is overwhelming.
Because of that, and in an effort to increase modularity, reusability, and openness, we decided to rethink how we deliver developer tools. remix project We will create a set of reusable html5+js modules for developing and debugging smart contracts.
This means that debuggers for EVM and Solidity can be integrated not only into browser robustness (which will move to a more prominent location in the future), but also into Visual Studio Code, Atom, Sublime, basically any IDE. Based on html5+js. You can even run the debugger from within Mist, even for past transactions!
It’s a bit early to try a remix, but if you want, you can follow the instructions in the repository, but be sure to use the latest development version of cpp-ethereum as your backend node.
For all other users: Here are screenshots of an early proof-of-concept version.
other tasks
In relation to the focus of other current projects, we are improving the runtime performance of virtual machines. Greg has already made great strides in that area and still has a lot of ideas. We are currently setting up a general benchmark so that we can compare the performance of different implementations and the differences between interpreters and just-in-time (JIT) compilers. We plan to make our Just-In-Time (JIT) compiler available for use by other implementations such as py-ethereum and go-ethereum.
Solidity’s main area of work is to extend the usefulness of the library through fixed-point types, structures that are now part of the ABI, “inlineable” functions, and templates. We’d also like to invite the community to help us write and publish useful libraries. Special thanks to Alex Beregszaszi (@axic), Nick Johnson (@Arachnid) and Andreas Olofsson (@androlo) for the great start there!
Finally, we want to reduce the pain caused by external and internal dependencies, especially when working with the current C++ codebase. We’re already almost to the point where we can compile Solidity independently, and the goal is to go back to our old home, the ethereum/cpp-ethereum repository, and split it for only the parts that make sense, namely Mix, Solidity, and EVMJIT. .