Solidity 0.5.0-私たちにとっての新機能

更新: 11/13/2018 リリースがリリースされました 。変更点の詳細な説明はこちらです 。 この記事では、5月(リリースの5か月前)のこのバージョンの状態について説明しています。


バージョン0.5.0で予想されるSolidity言語の変更についてお話したいと思います。 私はすぐに、言語、つまり文法とセマンティクスのみに制限することに注意します。


英語でさえこの主題に関する健全なテキストはありませんが、最近プロジェクトが Solidityリポジトリに登場しました。
その上で、バージョン0.5.0の準備の進行状況を追跡できます。


免責事項:この記事では、プロジェクトの現在の状態について説明していますが、リリースにより変更される可能性があります。 正確な情報は、公式の変更ログから取得できます。


廃止されたデザインの最終禁止


Solidityは、言語から削除したいかなり多くの古い構成要素を蓄積していますが、下位互換性のために失敗します。 このカテゴリの変更には次のものが含まれます。



より強力な構文


Solidityでは、非常に異なる構造の構文が類似しています。 これにより、コードの読み取りが難しくなりますが、さらにソースコードを操作するツールの開発者の生活を台無しにします(これはコンパイラにも当てはまります)。 この方向でも作業が行われているのを見るのは素晴らしいことです。



可視性修飾子とABI


主にデフォルト値が存在するため、可視性修飾子の簡単な混乱がありました。 多くの小さな編集が蓄積されているため、言語がより厳密になり、この混乱が解消されます。
そして、これらの修飾子はABI契約に該当するため、変更は彼に影響を与えました。



任意の数の引数とデータパッキングを持つ関数


Solidityには、任意の数の引数を取り、それらを1つのバイナリソーセージに接着して操作するいくつかの関数があります。 このプロセスには多くの微妙な点と明らかでない瞬間がありますが、今ではそれらに対処することにしました。



「メモリを使用した作業」の改善


これは、主にアセンブリを使用しないストレージへの「予期しない」アクセスに関するものだからです。



疑わしいから


蜂蜜の樽はすべて、軟膏で独自のハエを持ちます。



言語ではない


言語に直接影響を与えないが、同時に新しい契約のコードに大きな影響を与えるいくつかの非常に重要な変更があります。



いくつかの結論


リリースのリリース日はまだ不明ですが、多くの革新がすでに触れられています。
彼らはオンになります
pragma experimental "v0.5.0";
そして
pragma experimental "ABIEncoderV2";
もちろん、コンパイラは警告を発行します。


一般的に、0.5.0は肯定的に認識されます。 後方互換性のために何らかの形で排除できないものを削除し、いくつかの滑りやすいトピックをしっかりとリファクタリングし、いくつかの有用な変更を加えます。 その後、 継承リファクタリングを待ちます。そこに、 Vyper間に合うかもしれません。



Source: https://habr.com/ru/post/J353306/


All Articles