Even though this is my initial post on this blog, numerous individuals may already recognize me as the individual behind Solidity. I have recently assumed the leadership of the C++ team and would like to express my vision for the forthcoming development.
Ethereum is an open-source initiative that anyone can utilize and enhance. From our observations at conferences and gatherings, there are countless people engaged in projects built atop Ethereum, while we only have a limited team dedicated to the actual platform. Ethereum ought to be an inclusive project that welcomes anyone to suggest enhancements, genuinely implement them, and have them endorsed.
As the newly appointed C++ team lead, I will strive to minimize the entry barriers for both users (DApp creators) and developers (platform engineers). This is an essential measure, and I firmly believe this is the direction software development should take, particularly for software intended to benefit humanity collectively.
Naturally, the community can only assist us; we cannot expect anyone to create a crucial feature with a deadline in their leisure time. For this reason, the core team will concentrate on the significant software components, while numerous other tasks will be optional. We will eliminate any redundant work between the Go and C++ teams unless it is crucial for identifying consensus errors, and we will diligently work to eliminate the unseen “language barrier” to unite the teams into one cohesive unit.
Consequently, our main focus will be Solidity and Mix (the IDE and smart contract debugger), while the C++ implementation of ethereum/web3 (“eth”) will synchronize its interface with the Go implementation Geth, allowing existing front-ends such as Mist, the Ethereum wallet, the Geth console, and other tools to connect to both backends without any modifications.
On a related note, this implies that we cannot facilitate the evolution of the C++ UI AlethZero into a fully functional DApp browser, and we would welcome the integration of its distinctive features (primarily the blockchain explorer) as a DApp within Mist.
From a more technical perspective, our current roadmap is outlined below, while many items for eth will depend on our capacity and potentially on the extent of assistance we receive from outside contributors.
If you wish to contribute, please refer to our contributor’s guide or connect with us on Gitter.
Solidity:
The overarching concept is to render Solidity more adaptable and permit the implementation of generic data types.
Particular features planned:
- anonymous functions for use in internal callbacks for functions such as map, reduce, sort, and others, as well as for asynchronous cross-contract (or cross-chain) callbacks
- type templates, particularly for libraries to facilitate reusable data structures
- inline assembly
Inline assembly and type templates in conjunction will hopefully accelerate the implementation of additional features.
Mix:
The standout feature of Mix is its source-level Solidity debugger. We aim to enhance it so that you can also debug existing contracts. Moreover, we intend to integrate existing solutions for package management and testing (dapple, truffle, embark, …).
Specific enhancements include:
- debugging past transactions in a live or test chain
- executing JavaScript unit tests directly from the IDE
- GitHub integration (load from/save to repository, load libraries directly from GitHub)
- why3 (formal verification) integration
Eth:
We will enhance eth to be more versatile and interoperable with other components of the Ethereum ecosystem. This will allow us to remove features that are already present elsewhere, simplifying the construction and maintenance of eth. Furthermore, we can more readily target embedded devices and different platforms. We also aspire to make the just-in-time compiler accessible to other implementations.
- minimize external dependencies where feasible, enhance build processes
- substitute eth console with a Node.js application (eliminating v8 as a dependency) or “geth attach”
- rapid sync
- refine the just-in-time compiler on smaller numbers
- state trie pruning
- light client
- integrate private/consortium chain executable flu into the regular executable (depending on capacity)