AI22-0077-1

!standard 3.10.2(3/5)                                    23-12-14  AI22-0077-1/02

!class Amendment 23-06-05

!status No Action  9-0-2   23-12-14

!status work item 23-06-05

!status received 23-06-05

!priority High

!difficulty Hard

!subject Discussion on Accessibility Checking

!summary

The ARG should spend some time discussing accessibility checking and ways to reduce the associated complexity for the average Ada user.

!issue

Accessibility checking has grown in complexity as Ada has evolved, with the net effect that the main section in the Ada Reference Manual dealing with this, 3.10.2, has been dubbed the "heart of darkness" by even the most lawyerly of Ada language lawyers. This AI is an attempt to help structure a discussion of possible ways to improve things. Most of the specifics will appear in other AIs – this AI is merely an attempt to organize the anticipated discussion of accessibility.

!recommendation

There are a number of relatively independent threads of discussion relating to accessibility checks:

  1. How best to implement the existing dynamic accessibility checks for Ada (AI22-0034-1/2)
  1. Access-type accessibility checks
  2. Tag accessibility checks
  1. What sort of restrictions could be imposed to eliminate most of the need for dynamic accessibility checks, at least for access types (AI22-0076-1)
  2. What new features, if any, might replace some of the features that lead to dynamic accessibility checking, such as functions with aliased results (AI22-0075-1)
  3. How might ownership notions and/or new storage management approaches reduce the need for accessibility checking, while also simplifying alias analysis for parallel programming (AI12-0240-{1-6}, SPARK ownership model, bounded class-wide objects, ParaSail's ownership and region-based storage model – see Sections 3 and 5 of the ParaSail article, Guava version of Java – see notion of unshared "values", Rust's ownership model, etc.) [Editor’s note: This is one of the remaining “issues to revive from Ada 2022” based on AI12-0240-5 (the last version worked on for Ada 2022).  ARG GitHub issue #58 has been created to capture this part of the discussion.]

The most promising areas for ARG discussion in the near term would seem to be topics (2) and (3) above. Item (1) is more of a discussion for implementors, and the associated AI is at this point more of an existence proof that any sort of full examination of implementation issues. Item (4) is for the longer term, and deserves its own language study group.

!wording

Not applicable to this AI

!discussion

This is not appropriate as an AI, but should be renamed into a "Working Group Discussion Document" and placed in the appropriate working group's Google Folder.

!example

TBD

!ACATS test

Not applicable

!appendix