Ada 202x (51日目) - 7月30日の電子会議の結果 =========================================== .. post:: Aug 06, 2020 :tags: ada, ada_2022 `7月30日に行われた電子会議の議事録 `_\ が公開されました。 またもNonblockingアスペクトの修正 --------------------------------- :doc:`49日目 `\ で紹介した変更で ``Nonblocking`` はgenericの引数との論理積が取られるようになりました。 今回の変更では ``Dispatching`` や ``Use_Formal`` (下記)も反映されるようになります。 文面も全面的に整理されました。 またもGlobalアスペクトの記法の修正 ---------------------------------- :doc:`48日目 `\ で ``do`` または ``use`` を使った構文が追加されましたが、予約語の再利用をやめて専用のアスペクトになりました。 .. code-block:: ada type T is abstract tagged null record; procedure Primitive (Object : in out T) is abstract; procedure Proc1 (Object : in out T'Class) with Dispatching => Primitive (Object); procedure Proc1 (Object : in out T'Class) is begin Primitive (Object); end Proc1 .. code-block:: ada generic X : in out Integer; package Generic_Pkg1 is procedure Proc with Use_Formal => X; end Generic_Pkg1; 引数のことまで ``Global`` に詰め込むのも変でしたので分離されて良かったと思います。 (まだ ``overriding`` は残ってますが。) .. container:: gray-and-small それからpragma ``Restrictions`` に ``No_Hidden_Indirect_Globals`` が追加されていたのを見逃していましたのでこれも\ :doc:`48日目 `\ に追記しました。 その他サンプルコード等の修正 ---------------------------- 例によってサンプルコード等の修正がひとつのAI(`AI12-0386-1`_)で行われています。 その他特記事項 -------------- Generalize prefix views +++++++++++++++++++++++ Generalize prefix viewsがAda 202xに間に合わずに見送られそうです……。 問題点としましてはaccess型にまでドット記法を許してしまうと非互換が起きてしまいます。 .. code-block:: ada declare type T is tagged null record; procedure Proc (X : T) is begin Ada.Text_IO.Put_Line ("T"); end Proc; type A is access T; procedure Proc (X : A) is begin Ada.Text_IO.Put_Line ("A"); end Proc; Object : A := new T; begin Object.Proc; 今までは ``T`` 型のプリミティブの ``Proc`` が呼ばれていました。 全ての型にドット記法が使えるとなると ``A`` 型のプリミティブの ``Proc`` が優先して呼ばれてしまいます。 access型だけを除外するにもprivate型の実体がaccess型の場合もありますのでうまくありません。 ``Prefix_Notation`` アスペクトや ``record private`` みたいな記法も提案されましたが、Tucker先生が無変更で使えることにこだわっておられました。 まあ確かに実用上は既存のprivate型ほぼ全てに書き足していくことになるでしょうしそんな作業やりたくないですし。 実際 ``Nonblocking`` と ``Global`` で辟易しておられるでしょうから。 Add "parallel" to aggregate iterators +++++++++++++++++++++++++++++++++++++ も難航中のようです。 ``'Parallel_Reduce`` の代わりという枠を超えてしまったのが原因? コンテナにも変更が必要な上にaggregate式の並列化がありならquantified式もありでは、いや何でもかんでもやろうとすんな、みたいな。 引き続き検討は続けられるそうです。 Procedural iterators for generic procedures +++++++++++++++++++++++++++++++++++++++++++ も見送られそうです。 もし採用されていれば部分的にでも暗黙のインスタンス化ができるようになりましたが、まあ入れるならきちんと入れて欲しいですし。 関連AI ------ - `AI12-0374-2`_ **Fixes for Nonblocking** - `AI12-0380-1`_ **Fixups for Global annotations** - `AI12-0386-1`_ **Still More Presentation issues** .. _`AI12-0374-2`: http://www.ada-auth.org/cgi-bin/cvsweb.cgi/ai12s/ai12-0374-2.txt .. _`AI12-0380-1`: http://www.ada-auth.org/cgi-bin/cvsweb.cgi/ai12s/ai12-0380-1.txt .. _`AI12-0386-1`: http://www.ada-auth.org/cgi-bin/cvsweb.cgi/ai12s/ai12-0386-1.txt