Ada 202x (33日目) - pragma Restrictions/pragma Profile¶
既に大ネタは出し終わり後はもう細かすぎて伝わらないのではないか感。 AIの数で言えばまだ半分いってないんですぜ……。
pragma Restrictionsの変更¶
pragma Restrictions で指定できる制限にいくつか変更があります。
No_Dynamic_Attachmentの変更¶
No_Dynamic_Attachment は割り込みハンドラを動的に設定することを禁止します。
これが有効な場合同じ割り込み番号に複数のハンドラがあると Program_Error になると定められました。
No_Dynamic_Attachment がない場合は後から現れたものに上書きされます。
No_IOの変更¶
No_IO は入出力を行うライブラリを使用禁止にします。
これが有効な場合 Ada.Directories も禁止になりました。
Pure_Barriers¶
Pure_Barriers が追加されました。
従来の Simple_Barriers よりも若干緩い制限です。
Simple_Barriers は entry のバリアを定数値か protected オブジェクト内の変数参照のみに制限するものでした。
protected Prot1 is
   entry E1;
private
   Condition : Boolean := False;
end Prot1;
protected body Prot1 is
   entry E1
      when Condition is -- This is a barrier.
   begin
      null;
   end E1;
end Prot1;
狙いとしては、複雑な式を禁止することで検証しやすくしたりロックフリーな形に展開したい等があるのだと思います。
Pure_Barriers では加えてstaticな式、'Count 属性、論理演算、 in 、if式等が使えます。
ここでのpureは副作用がないという意味ですね。
pragma Profileの変更¶
プロファイルとは制限や各種ポリシーの組み合わせです。 主にOSなし環境向けに機能制限版のAdaを定めています。
これまでRavenscarプロファイルが定義されていました。
Jorvikプロファイル¶
Jorvikと呼ばれるプロファイルが新しく定義されました。
Ravenscarプロファイルよりも若干緩くなっています。
例えばRavenscarプロファイルには Simple_Barriers が含まれていましたが、Jorvikプロファイルでは Pure_Barriers に置き換わっています。
Ravenscarはイギリスの地名でした。 Jorvikの名前はRavenscarの近くで活動していた海賊から取られたそうです。
関連AI¶
- AI12-0252-1 Duplicate interrupt handlers under Ravenscar 
- AI12-0290-1 Restriction Pure_Barriers 
- AI12-0291-1 Jorvik Profile 
- AI12-0318-1 No_IO should apply to Ada.Directories