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