Solidity Language Updates: Major And Minor Changes
Solidity is a programming language used in the Ethereum environment. It is the most popular language to write smart contracts and Dapps on. There are other languages but since Solidity is supported by Ethereum developers it can be considered as the leading one.
All written smart contracts are saved in the Ethereum blockchain for a long time. However, in contradiction to Bitcoin this data is not immutable. This means, that all program data recorded in blocks might be erased. Such approach allows Solidity to evolve without being a burden for the Ethereum environment development.
The Ethereum Virtual Machine was created to process Dapps and smart contracts. It uses data from Solidity-based programs to bring out the result of their processing. The EVM is growing along with the Ethereum network. Some commands are changed, others are introduced, yet others are removed from the commands pool. Thus, removing immutability of smart contracts is necessary for the constantly evolving environment.
On November 13, 2018, Solidity version changed from 0.4.x to 0.5.x. The developers introduced changes that significantly influenced the process of programing. It is interesting that on December 3 of the same year, another update was released — 0.5.1. Later, on December 19, the 0.5.2 update was introduced. Such an intensive growth is really interesting to examine.
Major Changes vs Minor Changes
Sometimes it is not really clear what exactly makes one or another update really important. Talking about Solidity we can address this question to the official release page of Solidity. A few interesting things, besides the release number, stand out:
- The number of developers are thanked for contributing to the update. Comparing 0.5.0 and 0.5.1-0.5.2 versions, it is clear that the first one involved more people: 11 lines with names against 2-3 lines. As a rule, the more people participate in the development of a project, the more ideas are presented and the more thorough check is carried out.
- The number of changes. In smaller versions of updates, the list of changes is short and located on the same page. The large update, on the contrary, has so many changes that none of them are indicated. Instead, there is a reference to the list of changes.
- Release description. The release is stated to be “breaking”. Included components are: increased definition explicitness, removed rare cases, low level interface is simplified.
In order to understand the difference between the 0.5.0 update and other updates, it is worth taking a look at their descriptions. Let’s consider the following releases: 0.4.19-0.4.25, 0.5.0, 0.5.1 and 0.5.2.
0.4.23 and 0.4.25 are bug fixing. 0.4.19, 0.4.20, 0.5.1, and 0.5.2 have a small impact on particular areas of internal changes, usability, security, and performance. 0.4.21 and 0.4.24 introduce changes planned for 0.5.0 in a test mode, so that the developers could try them out before they are finally applied. The last one, 0.4.22, brings “several important and long-awaited changes”, yet it cannot be called major because the number of the changes is rather small.
General Updating Process
Looking at small updates, we can notice an interesting thing. Several changes planned for 0.5.0 have been checked in advance. Different particular cases were introduced for the sake of developers. As we can see, the first update of this kind was proposed in March 2018. Its description says, “We again introduced several changes that are scheduled for the version 0.5.0”. It is difficult to track the update where some planned features for 0.5.0 were initially proposed. But one thing is clear: the developers had several months for testing.
The development of Solidity is an inherent part of the Ethereum evolution. As the functionality of smart contracts expands, all components of Solidity have an influence both on the Ethereum developers community and regular participants.