2018年11月24日

RAD Studio / Delphi / C++Builder 10.3 Rio リリース

RAD Studio / Delphi / C++Builder 10.3 Rio がリリースされました!
0

RAD Studio / Delphi / C++Builder 10.3 Rio がリリースされました。
10.2 Tokyo から 1 年 8 ヶ月振りのメジャーアップデートです。
https://www.embarcadero.com/jp/products/rad-studio

  • IDEのUX改善 - より認識しやすいメインウィンドウ、ダイアログなど
  • HighDPIサポートの改善 - マルチ解像度対応の画像管理、スケーリングへの対応
  • Android向けネイティブコントロールのサポート
  • C++17サポート、64-bit向けC++数学計算の高速化、デバッグモードでのビルド最適化
  • インライン変数宣言、型推論など、Delhiの新しい言語機能
  • FireDACが最新のデータベースバージョンをサポート
  • Sencha Ext JSとの連携性/統合性を強化するRAD Serverの拡張

同日付で無償版である Community Edition も 10.3 Rio に更新されています。
https://www.embarcadero.com/jp/free-tools

Owl's perspective @owlsperspective

10.3 Rioではインライン変数と型推論が導入される? plus.google.com/+RafaelDipold/… あとモバイル以外はARCやめてく方向?

2018-10-25 06:38:07
Owl's perspective @owlsperspective

もう少し詳しく。Delphiの新しい言語機能として(1)インライン変数、定数宣言。宣言時に直接値を割り当てられる。ブロックスコープになる(これすごい重要!)。代入文にもforのような制御構文でもOK。 (cont.

2018-10-25 13:37:06
Owl's perspective @owlsperspective

(2)インライン変数のための型推論。 var 変数名 := 初期値; とすると初期値から型推論してくれる。重複して型を書いても必要ないし、リファクタリングの妨げになる。 (cont.

2018-10-25 13:37:49
Owl's perspective @owlsperspective

(3)カスタム管理可能なレコード型。メモリ管理を再定義したりパラメータなしのコンストラクタ/デストラクタや代入など。いままでDelphiのレコード型はコンストラクタは定義できたがパラメータなしのものは定義済、中身が空となっていた

2018-10-25 13:38:19
Owl's perspective @owlsperspective

(これはC#も同じで、要素が多い配列を定義したときにコンストラクタを要素数分呼ぶのか?みたいな話だったと思う)。 (cont.

2018-10-25 13:38:45
Owl's perspective @owlsperspective

コンパイル中のダイアログが変わる。見た目はモダンな感じ。コード補完が改善される。 (cont.

2018-10-25 13:39:06
Owl's perspective @owlsperspective

Delphiの言語の変更。(1)Linux 64ビットコンパイラはARCではなくなる。これは全体としてARCを削除する方向性の一環で、理由はパフォーマンス、ARCと非ARCの2つのメモリモデルによる複雑さ、(Windowsで)VCLをARCに移行できない、ということで、10.3 RioではモバイルコンパイラはARCのままとなる。

2018-10-25 13:39:56
Owl's perspective @owlsperspective

(2)これによりLinuxでAnsiString/AnsiCharが使えるようになる。(3)C++との互換性の向上。4バイト/8バイト以内のレコード型をパラメータとして渡す方法を変更する。(3)コンパイラのパフォーマンスの向上。

2018-10-25 13:40:20
Owl's perspective @owlsperspective

んでついてるコメント見ると、そんなにみんなARCのこと嫌いなの?という…w。それにしても参加者700人以上ってのはすごい。あと長年主張してきたブロックスコープ変数の導入はすごくうれしい。

2018-10-25 13:40:55
Owl's perspective @owlsperspective

IDEの(主にL&Fの)改善 New in 10.3: IDE UI Improvements in the Main Window - Community Blogs - Embarcadero Community community.embarcadero.com/blogs/entry/ne… 統一的にリファインしたよ、ということのよう。

2018-11-01 11:03:16
Owl's perspective @owlsperspective

Android Z-Order, Native Controls, and 10.3 Rio | The Podcast at Delphi.org delphi.org/2018/11/androi… 10.3 Rioで予定されていたAndroidのZオーダ、ネイティブコントロールの件。そういえばDocWikiもRioのページの準備に入ったようですね(まだ見られないけど

2018-11-04 21:39:47
Owl's perspective @owlsperspective

レコード型に関する追加情報 Custom Managed Records Coming in Delphi 10.3 blog.marcocantu.com/blog/2018-nove…

2018-11-08 06:30:59
Owl's perspective @owlsperspective

レコード型の件。Delphiではクラスは参照型(ヒープ上に領域が確保され、変数はそのポインタ)なのに対して、レコード型は値型(基本的にスタック上に領域が確保される)で、メソッドの引数としてレコード型を渡すと(varをつけなければ)call by valueなので一時コピーが作られて渡される。(cont.

2018-11-08 14:12:51
Owl's perspective @owlsperspective

現状のDelphi(10.2およびそれ以前)のレコード型には実際には標準レコード型の他に管理レコード型がある。管理レコード型は文字列のようにメモリ管理が別途行われるようなメンバを含んだレコード型で、コンパイラによって自動的にtry-finallyブロックが追加され、(cont.

2018-11-08 14:13:36
Owl's perspective @owlsperspective

適切にリソース管理が行われるようになっている。Delphi 10.3 Rioで追加される予定のカスタム管理レコード型はデータメンバにかかわらず管理レコード型のようなtry-finallyを強制するもので、レコード型のメソッドとして引数なしのコンストラクタ、デストラクタの少なくとも一方を(cont.

2018-11-08 14:14:07
Owl's perspective @owlsperspective

定義することでカスタム管理レコード型になる。カスタム管理レコード型の変数がスコープに入ると暗黙に引数なしのコンストラクタが呼ばれるとともにtry-finallyブロックが形成され、finallyでデストラクタが呼ばれるようになる。(cont.

2018-11-08 14:14:29
Owl's perspective @owlsperspective

明示してコンストラクタを呼び出すこともできるが、インライン変数でなければコンストラクタ呼び出しが重複することになる。またクラスオペレータとしてAssignを定義することでレコード型の変数の代入をカスタマイズすることもできるようになる。(cont.

2018-11-08 14:14:54
Owl's perspective @owlsperspective

さらにコピーコンストラクタをオーバロード定義することで、メソッドの引数として値渡しするための一時コピーをコピーコンストラクタで作るようにすることもできる。(cont.

2018-11-08 14:15:14
Owl's perspective @owlsperspective

このレコード型の拡張は、TNullable<T>をレコード型で実装するための準備という説を補強する内容なのかな、というのが個人的感想。

2018-11-08 14:15:32
Owl's perspective @owlsperspective

オプションダイアログの変更 New in RAD Studio 10.3: Options Dialog Improvements community.idera.com/developer-tool… 全体的なデザインの見直し、カテゴライズの見直し、検索機能の追加が行われる。検索機能はローカライズとの関係が微妙か?日本語も英語もどちらも使えるといいなぁ。

2018-11-10 12:00:59
Owl's perspective @owlsperspective

C++Builderの変更点 New in RAD Studio 10.3: C++17, asynchronous C++ code completion, and more - Blog - Developer Tools - IDERA Community community.idera.com/developer-tool…

2018-11-20 10:00:13
Owl's perspective @owlsperspective

現実逃避モードで要約。 Win32のC++コンパイラは従来のClang 3.1/3.3(C++11)ベースのものからClang 5.0(C++17)ベースのものに置き換えられる(それ以外のプラットフォームではC++11ベースのままの模様)。BCCベースのコンパイラも依然として同梱される。 (cont.

2018-11-20 11:14:14
Owl's perspective @owlsperspective

また従来はデバッグビルドで最適化を無効化していたが、最適化が有効な状態でデバッグが可能になる。同梱されるSTLも最新のDinkumware STL v8.03aに置き換えられる。Win64ではC++17の機能を使えないが、一部のヘッダはそのまま使える。 (cont.

2018-11-20 11:14:31
残りを読む(180)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?