Solidity is an object-oriented, high-level language for implementing smart contracts. A smart contract is a program that governs the behavior of accounts in an Ethereum state.
Among other features of Solidity, it supports inheritance, libraries, and complex user-defined types.
Using Solidity, you can create contracts for things like voting, crowdfunding, blind auctions, and multisignature wallets.
Solidity should be updated when deploying contracts. Unless there are exceptional circumstances, only the latest version receives security updates. Furthermore, breaking changes as well as new features are introduced regularly. This fast pace of change is indicated by a version number of 0.y.z.
Since Solidity uses an ECMAScript-like syntax, it is familiar to existing web developers; however, unlike ECMAScript, it has static typing and different return types. It is important to note that Solidity differs from other EVM-targeting languages such as Serpent and Mutan in some important ways. In addition to complex member variables, it supports hierarchical mappings and structs. With C3 linearization, Solidity contracts support multiple inheritance. With Solidity, multiple type-safe functions can be accessed in a single contract using an application binary interface (ABI) (this was later supported by Serpent as well). In addition, Solidity includes a "Natural Language Specification", a documentation system for describing method-call ramifications in a user-centric manner.