Ada 2020 (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_Barriersentry のバリアを定数値か 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