Ada 202x (51日目) - 7月30日の電子会議の結果¶
7月30日に行われた電子会議の議事録が公開されました。
またもNonblockingアスペクトの修正¶
49日目で紹介した変更で Nonblocking
はgenericの引数との論理積が取られるようになりました。
今回の変更では Dispatching
や Use_Formal
(下記)も反映されるようになります。
文面も全面的に整理されました。
またもGlobalアスペクトの記法の修正¶
48日目で do
または use
を使った構文が追加されましたが、予約語の再利用をやめて専用のアスペクトになりました。
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
generic
X : in out Integer;
package Generic_Pkg1 is
procedure Proc
with Use_Formal => X;
end Generic_Pkg1;
引数のことまで Global
に詰め込むのも変でしたので分離されて良かったと思います。
(まだ overriding
は残ってますが。)
それからpragma Restrictions
に No_Hidden_Indirect_Globals
が追加されていたのを見逃していましたのでこれも48日目に追記しました。
その他サンプルコード等の修正¶
例によってサンプルコード等の修正がひとつのAI(AI12-0386-1)で行われています。
その他特記事項¶
Generalize prefix views¶
Generalize prefix viewsがAda 202xに間に合わずに見送られそうです……。
問題点としましてはaccess型にまでドット記法を許してしまうと非互換が起きてしまいます。
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