Minutes from ASISWG/ASISRG Meeting of 2-3 November 1995 in San Diego CA, USA The Ada Semantic Interface Specification Working Group (ASISWG) and the Ada Semantic Interface Specification Rapporteur Group (ASISRG) met all day Thursday and Friday (2-3 November) at Thomson Software Products in San Diego, California, USA. The following people attended: Steve Blake, Thomson Software Currie Colket, SPAWAR Dan Cooper, Boeing Dr. Robert Leif, Ada_Med Dan Rittersdorf, Harris Computer Systems Corporation Clyde Roby, IDA Bill Thomas, MITRE The primary goal of this meeting was to produce an ASIS specification for Ada 95 suitable for public review. Several drafts had already been brought before ASISWG/ASISRG for review. Draft Version 2.0.D was reviewed by ASISWG at this meeting. Several changes were made and Draft Version 2.0.E was distributed at Tri-Ada'95 the following Monday. Before we actually began our meeting, Dr. Robert Leif, who is also Vice-President of San Diego SIGAda, presented a short talk about "ASIS, San Diego". Dr. Leif wants to use Ada in the development of software for medical devices. He also suggested that ASIS be in Thomson's Windows products. His presentation was mainly about the need for Ada user-friendly tools and that ASIS could be a catalyst in the development of these tools: a tool to eliminate "use" clauses, a tool to convert variant records to tagged records, a browser, a type flattener (especially of tagged type extensions), a body and specification coordinator (especially during the development of Ada bodies), etc. ASISWG's charter was submitted to the Extended Executive Committee meeting of SIGAda held on Tuesday night (7 November 1995) at Tri-Ada'95. Except for a minor correction -- "ISO/IEC 8652" was changed to "ISO/IEC 8652:1995" -- the charter was approved. Minutes and Action Items from June Meeting The minutes of the June 1995 meeting were accepted and approved by a formal motion and vote. The Action Items from the June 1995 meeting were reviewed (these are available on the AJPO's SW-Eng host). The following action items were discussed at this meeting: 9506-02. Currie has contacted Ed Colbert. Currie will send the most recent ASIS specification to SIGAda's OOWG. Dan Cooper also suggested Prof. Strohmeier as a reviewer. (Currie will also send the ASIS specifications to ABWG and OOWG.) 9506-05. The attendees were impressed with Sergey's article on ASIS for GNAT. It would be valuable for this article or an updated version of it to be in an upcoming issue of AdaLetters. Currie will contact Sergey to see if this is possible. This led into further discussions, initiated by Dr. Leif, about publishing articles in non-Ada journals, e.g., IEEE Spectrum or other such journals/magazines. Perhaps our FAQ could be developed into an article format. 9506-12. There was some discussion about .tar files that currently exist on the ASIS archives. If we keep files in .tar format, then we should also make available the tar.exe program for the PC. ISO Standardization of ASIS There had been some discussion about what, if any, word/document processor was used by ISO/IEC JTC1/SC22. Currie said that SC22 has no particular word processor (however, SC21 has agreed upon Microsoft Word). For the time period, we should be able to use any word processor convenient to our needs. For the near future, we will continue to release versions in an ASCII compilable format. Currently there is no requirement to use any ISO format until the Proposed Draft International Standard (DIS) is submitted. We need five nations to support the standardization of ASIS at the ISO level. We currently have support from Germany, Russia, Switzerland, and the United States. Canada proposed the initial motion concerning the standardization of ASIS. The United Kingdom, who strongly supports safety and security, sees a potential from ASIS in that domain. Other nations who see ASIS as a potential in the safety and security area include France and Japan (ground transportation) and Sweden. We agreed to send a copy of ASIS to Brian Wichmann of ISO/IEC JTC1/SC22 WG9 HRG (Safety and Security) for their input. There will be a paper ballot at the 2 February 1996 meeting of ISO/IEC JTC1/SC22 for ASIS. Dr. Robert Mathis will be submitting ASIS 95 Version 2.0.E to SC22 as a pre-Committee Draft (CD). He will also be encouraging SC22 members to access the ASIS Home Page as a proposed model for electronic ISO standard generation. The formal ASIS CD process will start shortly after the WG9 ASIS New Work Item is approved in February 1996. ASISWG/ASISRG can approve a version to go up to SC22 as a CD in March 1996. It would be circulated to WG9 members who would formally vote for submission to SC22 at their meeting on 14 June 1996. In approximately 6 months, we would have an approved CD, at which time we would resolve comments and resubmit as a Draft International Standard (DIS). Expected ASIS Schedule for ISO Standardization As can be seen by the following schedule, we are still looking for an ISO approved standard ASIS 95 in the 1997-98 time frame. Dec 93 AJPO recommends ASIS V1.1.0 (ASIS 83) be used as interface to Ada 83 Program Library Mar 94 Design Goals for ASIS 95 identified Jun 94 ASISWG finalizes ASIS 83 as V1.1.1 with test suite Jun 94 Evaluate design approaches for ASIS 95 Nov 94 Finalize approach for ASIS 95 Nov 94 Categorize outstanding ASIS 83 deferred issues Nov 94 Proposed KINDS for ASIS 95 Feb 95 ASIS Home Page on WWW established http://www.acm.org/sigada/WG/asiswg/asiswg.html Mar 95 Finalize ASIS 95 Kinds Mar 95 Provide ASIS 95 in Skeleton format Mar 95 Organize ASIS 83 Deferred Issues and Current Issues Apr 95 ASISRG created unanimously by ISO/IEC JTC1/SC22 WG9 Jun 95 Approved initial ASIS 95 Element_Kind Type Hierarchy Jun 95 Approved changes to ASIS 83 to produce ASIS 95 draft standard Jun 95 Defined ASIS terminology Jun 95 Approved new library/environment model Oct 95 Prototype demonstration of ASIS for GNAT Nov 95 Draft ASIS 95 distributed for public comments Feb 96 Expected SC22 approval of WG9 ASIS New Work Item (NWI) Mar 96 ASISWG/ASISRG approval of ASIS 95 ISO Committee Draft (CD) Spr 96 ASIS available for GNAT Ada 95 Compiler Jun 96 WG9 approval of ASIS 95 ISO CD (14 June meeting) Fall 96 SC22 approves ASIS 95 ISO CD Win 97 Balloting complete for ASIS 95 Proposed Draft IS Sum 97 Balloting complete for ASIS 95 Draft International Standard 1997-98 ASIS 95 approved ISO Standard ASIS on the Internet The following information is now available via the World Wide Web (either on the ACM host or via links to the AJPO host): * the ASIS Frequently Asked Question (FAQ) list * ASIS Vendor Products (both implementations and client products) * ASIS Related Work * ASIS Tutorials (soon from Rational and Thomson) * information about ASIS for GNAT * information about the AJPO ATIP: ASIS/PVL * other information about ASISWG and its meetings, etc. The URL is: http://www.acm.org/sigada/WG/asiswg/asiswg.html Currie noted that he was contacted by Mary J. Pollack of Computer Sciences Corporation (CSC). She is working on the Navy's AEGIS project and is interested in using ASIS as a means to decouple interfaces from primary operational systems to the system responsible for data reduction. There are a number of operational systems, each with its own interface for data reduction purposes. Typically the operational system writes data to a disk which is then processed by a data reduction system on a separate computer. Instead of requiring a specified data reduction format (as had been required in the past), each operational system could record data on disk in a byte stream as had been done with the Air Force's System 1 without any special formatting to satisfy interface requirements. ASIS could be used to build the data reduction program to identify the formats of the records (messages) recorded to disk and applying Chapter 13 change of representation clauses in reverse to be able to read and process the records in the data reduction program. Several advantages to this approach were identified: 1. the primary operational system would not lose processing cycles formatting data to satisfy interface requirements; 2. a generalized data reduction algorithm would be very cost effective; and 3. the approach could be applied to a number of operational systems requiring data reduction. It should be noted that the names of the ASIS related email discussion lists have changed; they are now XXX@SW-Eng.Falls-Church.Va.US where XXX is one of the following: ASIS ASIS-Technical ASIS-Request ASIS-Technical-Request ASIS-Officers ASIS-Comment The updated ASIS Frequently Asked Questions (FAQ) list was distributed at this meeting; this FAQ was also distributed at the ASISWG Birds-of-a-Feather session at Tri-Ada'95 on Monday evening (6 November 1995). Formal Issues discussed at this ASISWG/ASISRG meeting #003 - Traceability of Outstanding ASIS 83 issues Dan Rittersdorf did not implement automatic traceability due to lack of time he could give to this endeavor. Currie suggested that those who submitted issues for ASIS 83 look at ASIS 95 to determine if their issue was handled properly and if not, then to re-raise their issue. But some of the people who originally raised an issue are no longer working with ASIS now. It was noted that many issues have already been incorporated into ASIS 95. However, we would like the previous group of people to re-examine their issues and perhaps reissue them (as comments against ASIS 95) -- see Action Items 9511-08 and 9511-09 and Decision 9511-01. Issue #003 remained Open. #005 - Proposed Conformance Rules This issue concerns what an ASIS vendor is allowed to remove from the ASIS specification. Jim Lonjers was looking for kinds of conformance coming out of the POSIX specification. We ought to reuse most of what POSIX did. We also have Ada 95 child packages to use. Dan Rittersdorf noted that if the Ada 95 POSIX specification uses child packages in their new architecture, they might use child packages for vendor extensions. Similarly, we could do the same. We should start with POSIX conformance rules as a basis for ASIS conformance rules. This issue is still open. #009 - ASIS Does Not Preclude Client/Server Implementation. Dan Cooper has a reply from Rational concerning this Issue; he will include it as part of the email discussion concerning this issue as we put it on the net. Currently there is nothing in the ASIS specification which precludes such an approach. Some vendors are investigating the possibilities of implementing ASIS using a Client/Server model. The issue was Approved, but does not require any change to the ASIS specification. #010 - Support of Comments in Source Text (NEW) In some sense, this may come under Issue #005 about conformance; however, we decided to separate this issue out as a separate one. We will stay away from the issue of PDL (as formal comments). However, we SHALL REQUIRE EVERY conforming ASIS implementation to support comments in the source text. #XXX - Normalization of Association Lists (proposed as NEW, but withdrawn) We had some discussion about association lists for parameters, etc. and that there are unnormalized forms (corresponding to source text). The normalized form would be indistinguishable and all parameters must be present. We will ask the originators of this issue for clarification before making it a formal issue for ASIS 95. [In email discussions since the meeting was held, Sergey Rybin suggested that we drop this issue because the main point of the Ada Europe discussions concerning the normalized lists was their importance for some ASIS applications. The current ASIS 95 draft defines this aspect quite clearly except maybe some technical details concerning the retrieving of the components of the normalized lists, but these details (if any) are the subject of future technical discussions.] Other Issues for Consideration * Rational has released their version of ASIS 95. For marketing reasons, they had to release their products earlier than when the definition of ASIS 95 would be ready. They saw ASISWG as moving too slow in defining the ASIS specification. However, we are expecting/hoping that they will reconcile with ASISWG's ASIS 95 in a future (hopefully next) release. * Currie has interfaced with Dan Fisher at Rational; Dan has made Rational's tutorial available (it is currently available as a link from ASISWG's WWW page). * There are many different areas concerning "conformance". Several comment sentinels in the ASIS specification delineates some of these. We should make sure that we document these properly. We noted that Ada 95 had "implementation permissions", so maybe ASIS will have them? * Object-oriented ASIS There was a short discussion about this, but it was generally agreed that ASIS is more procedurally oriented. However, someone could easily develop a higher level object-oriented toolkit layer implemented in ASIS. * Debuggers were removed from the list of tools that can be developed "on ASIS"; i.e., a real debugger cannot be generated using ASIS. * Marking/Releasing/Disassociating Elements Although we had discussed this issue in the past and effectively "removed" interfaces addressing this issue from ASIS, we re-examined this issue at the November meeting. Mainly, where things are built dynamically (e.g., GNAT), there may be a need for marking, releasing, and/or disassociating Elements. A couple of years ago, the major ASIS implementations had virtual memory management built into them, so this was not a major problem. Do we need marking, releasing, disassociating back into ASIS now? Maybe not at the client tool level, but these could be visible at that level; clients should probably be aware of such things. We will probably raise this as an issue before the next meeting. Finalize ASIS 95 Specification The work on finalizing the ASIS 95 specification consumed most of the afternoon Thursday and nearly all day Friday (somewhat into the evening so that we didn't have to meet on Saturday). Steve Blake had prepared some handouts from which the discussion was based. Many of the comments from the last ASISWG meeting had been incorporated in the Version 2.0.D of the ASIS specification presented at this meeting. Many of the issues discussed were presented in the June 1995 minutes; here is the list of issues that are still unresolved from that meeting: * Trait_Kinds commentary was reviewed. Steve will check the order and the mutual exclusivity. He will consider changing Not_a_XXX to No_Applicable_XXX. Maybe look at changing An_Ordinary_Trait to something else. Perhaps look at a different term for "Trait". This is still an open issue; no change has been made. * There should be a usage explanation at the beginning of each package; it should basically follow the RM 95 syntax, not necessarily the concepts. This is still an open issue; no change has been made. * Unit_State_Kinds discussion. Unit_State_Kinds has been deleted (see Section 4.5). There is still a problem with consistent and inconsistent units. We noted that units within an Ada environment should be consistent; if they were inconsistent, then tools shouldn't process those units any further (after discovering that they were inconsistent). The queries Is_Consistent and Is_Obsolete were removed. The approach is simplistic and defines a clean model, but you can still tell if units are correct and how they are related. Section 4.5 shows a new unit classification, unit classes, unit origins, and shows other changes. The ASIS user can easily build his own Is_Consistent and Is_Obsolete. Inconsistent units may be analyzable if the compilation system permits it -- this is an implementation permission. However, some commentary must appear in ASIS making this very clear. * Unit_Origins discussion. Unit_Origins has been modified (see section 4.4). What is here now is not what we were thinking about last time. There was further discussion about why we have Unit_Origins at all. Dan Cooper's scenario (from the June meeting) is not pragmatically possible; most compilers will not accept other SYSTEM and/or STANDARD packages. This looks useful for on-the-fly (e.g., GNAT) analysis, i.e., a source-based analysis. The intent was for users to filter out major subdivisions of units space. Is there another strategy? There was also some analagous discussion about predefined operations, e.g., Integer "+". If we have something like Is_Predefined, it must be very clear what its semantics are. Another approach to filtering out is to have a file of excluded units; note that this can be done outside ASIS. We need to revisit this issue in the future. * Section 4. We will need to add terminology, especially about the Ada environment, Ada library, etc. The subprogram Semantic_Dependence_Order replaces three subprograms, but these will be rewritten in terms of Semantic_Dependence_Order and placed in the .../toolkits directory. This is still an open issue; no change has been made. * Sections 4.2 through 4.5. Much of this has been discussed previously in the meeting; the terminology in section 4.5 can be added to the ASIS glossary. This is still an open issue; no change has been made. * Section 4.6. More discussion related to 3.5. Also, get rid of the four unit relationship filter queries; these can be placed at the toolkit level. Although these four unit relationship filter queries have been deleted, no toolkit level has been defined. * Remove the prefix Compilation_ on most of the routines in the ASIS_Compilation_Units package. Move the functions Unit_Declaration, Context_Clause_Elements, and Name_Units from the ASIS_Compilation_Units package to other packages appropriate to where they really belong. There was also some discussion about moving some other subprograms into child package(s) for ASIS_Compilation_Units. Compilation_Unit Queries returning Elements has been moved. The prefix Compilation_ has not been removed due to potential name clashes, i.e., Compilation_Unit_Declaration would become Unit_Declaration which would easily be confused with Asis_Elements.Unit_Declaration. (We have avoided overloading of names throughout ASIS.) The child unit structure is still an open issue. * There was further discussion about whether the References subprogram should be in the ASIS specification or whether it is one of the many things that should be in .../toolkits. It needs to be optimized on the server side as well as the client side. It balances the capability of getting definitions. The question arises about what ideally is a Reference? It is ill-defined. Do we look at implicit along with explicit references? At the June meeting, there was general agreement that we should have it. There was some consensus that it should be in ASIS and not in .../toolkits. At the November meeting, there was further discussion about the References subprogram as well as the Traverse subprogram. After further discussion and a couple of examples, there was some general agreement that we should look at making both of these subprograms generic. There are also several new issues outstanding that we discussed at the November meeting: * ASIS semantics of Ada Implicit Constructs. Implicit elements is still an open issue. * It is still an open issue that a statement identifier should not be Defining_Name. Occurrence of the loop name IS NOT the Defining_Name, but the current ASIS semantics for Ada Implicit Constructs requires us to treat it as Defining_Name. This is technically incorrect, but for convenience, etc., it is currently Defining_Name. We will place this information in the commentary. * Are there other structural queries returning lists that need to include pragmas? Some queries already have Include_Pragmas as an additional boolean parameter. * Should Asis_String still be defined? Can ASIS use Ada 95 Standard.String? It is now defined as Ada 95 STANDARD.String. Should we follow POSIX's lead? Should this be in the "obsolescence" portion of ASIS? * ASIS Package organization should be a hierarchy. * We need a query to determine if multiple object declarations are normalized to an equivalent sequence of single declarations. This was added to version 2.0.D. * We need a query to determine if multiple context clauses are normalized to an equivalent sequence of single context clauses. This was added to version 2.0.D. * Should name conventions apply to compilation units as well as elements? Should Semantic_Dependence_Order be named Corresponding_Semantic_Dependence_Order? Should Elaboration_Order be named Corresponding_Elaboration_Order? * In the documentation, when the appropriate list is long, and includes nearly every kind except one or two -- is this form of appropriate list more useful? "All Unit_Kinds are appropriate except: A_Nonexistent_Declaration A_Nonexistent_Body" We decided to go back to the original way of documenting the interface, i.e., listing only the appropriate things, even if the list may be long -- mainly in the interest of grepability. * Hash needs a complete description. This will be vendor-dependent. Should ASIS provide a unique integer value that could then be used for user-defined hash functions? See Booch Components for a good definition of "hash"; look into defining a generic for this function. * Should these be normalizers, accepting type declarations? Corresponding_First_Subtype, Corresponding_Last_Constraint, and Corresponding_Last_Subtype. We decided to keep it as in ASIS 1.1. * Semantic changes, i.e., operational changes, differences in appropriate lists should be noted for all queries. This should be in our standard for sentinel commentary, i.e., any differences relative to ASIS 1.1. * Should operational queries (i.e., environment programmatic queries) be provided for each class of implicit elements (i.e., instances, inherited subprograms, predefined operators)? We decided that anywhere there is a permission, there should be a boolean query. We also need consistent commentary for permissions regarding implicit elements. We reviewed the proposed version 2.0.D of ASIS 95. Appendix C describes a list of changes since 2.0.C. Some of the areas we discussed at this ASISWG meeting include: 3.2.1 - RM 95 defines certain attributes as functions. ASIS will not provide query access to these. We will treat attribute references as an Attribute_Reference rather than faking it. Does an attribute that is a procedure (e.g., T'READ) indicate a call or an attribute reference or what? We must examine this before next time. 3.5 - Body block functionality This was discussed on the Internet between the June meeting and the November meeting. We agreed to go with the general concensus of that email discussion. 3.7 - The idea of treating TERMINATE as a statement cleans things up. Path_Kinds (new terminology replacing Alternative_Kinds) are nice since this reflects execution paths rather than statement syntactic elements. Fewer queries are needed to provide the same functionality with respect to statements -- this is good. 3.8 - Availability of text (a recently discussed issue). We agreed that ASIS conformance SHALL SUPPORT this (see earlier discussion about New Issue #010). Is_Text_Available has new semantics -- it is now for text images of explicit stuff; implicit stuff returns FALSE. It makes sense that an element has a text image. Line availability is a required feature. Clarification has been supplied. 4.4 - Unit classification is expanded; we cleaned up comments. 4.5 - Compilation unit state is now much simpler. 4.6 - Semantic dependency relationships. We more clearly defined the semantics of the queries. This implies that the list can be submitted to the compiler for a proper compilation/recompilation order. We reviewed the changes to the proposed conventions, to the ASIS types, to the ASIS commentary, and to the ASIS queries and basically agreed to all these. We will revisit Is_Predefined for a Reference. Do we really want it? Do we really care? Discussion of ASIS Features We haven't really looked at Object-Orientedness per se. Sergey has implemented most of the syntactic interfaces of version 2.0.C and will be doing the semantic interfaces soon. Late Friday afternoon, Dan Cooper and Steve Blake reviewed what Rational has done moving from ASIS 83 to their version of ASIS 95 in order to see what, if anything, may be applicable to our definition of the ASIS specification. No omissions were found in version 2.0.D; Steve will send an email message to Gary Barnes of Rational highlighting key differences in approach. We have generally agreed that version 2.0 will have minor changes from version 2.0.E. Things like Traverse and References will take some thinking before we put them into the specification. Version 2.0.E, which was distributed at Tri-Ada'95, mainly had non-functional changes to version 2.0.D. We put off the discussion about an ASIS Conformance Suite until a future date, after we discuss what Conformance really means. ASISWG at Tri-Ada'95 An ASIS Birds-of-a-Feather was scheduled on Monday, 6 November 1995, at Tri-Ada'95. It was mainly an informal gathering where people came in and discussed any ASIS (or other) related topics with the "regular ASISWGers" who showed up. We distributed 3.5-inch floppy diskettes containing the ASIS FAQ, the tutorials, ASISWG overview slides (in PowerPoint), Sergey's paper about ASIS for GNAT (in PostScript), and a few other files. We also distributed hardcopy of the FAQ and Sergey's paper. Future Meetings We have tentatively scheduled the next ASISWG meeting at Harris Computer Systems in Ft. Lauderdale, Florida, on 11-12 March 1996 (Monday and Tuesday). This meeting will occur before the Software Technology Conference (STC) to be held in Salt Lake City, Utah, from 22-26 April 1996. Currie is scheduled to give a presentation at STC titled: "ASIS - An Interface to the Ada 95 Environment." This would also be a good time for an article to be released. Again, we will try to make the specification available on a floppy disk along with other ASIS related stuff. We noted that STC provides their proceedings on CD-ROM so PowerPoint slide presentations and papers can be put on it. The next version of ASIS should also be ready to be placed on this CD-ROM. ASISWG will meet (confirmed at Tri-Ada'95 conversation with Prof. Strohmeier) at Ada Europe 96 in Montreux, Switzerland, on Monday, 10 June 1996 -- Ada Europe 96 will be held 10-14 June 1996. During our discussions here at this November's ASISWG meeting, we discussed the possibility of holding one or two 1.5-hour sessions during the main conference of Ada Europe 96. If so, then we would like to have: * Overview of ASISWG/ASISRG - Currie Colket * Overview of ASIS 95 - Steve Blake * Boeing presentation - Dan Cooper? * ASIS for GNAT - Sergey Rybin? * AdaMat community for a presentation * European speakers about their use of ASIS * MITRE's ASIS work - Clyde Roby and/or Bill Thomas There is also a WG9 meeting on Friday, 14 June at the same location. ASIS at COMPASS? This conference is scheduled for 17-21 June 1996 in the Washington DC / Baltimore area (perhaps at NIST?) and is about critical and high assurance applications. Dan Cooper may develop a paper/presentation for this conference. ASIS at OOPSLA'96 and/or COMDEX? ASIS in AdaLetters and Other Periodicals Bill Thomas and Currie may work on an article for one of ACM's magazines/journals. The next issue of AdaLetters has a deadline of 30 November for its January/February issue. We may be able to have an updated version of Sergey's article about ASIS for GNAT ready for this issue. We can also include the highlights of this ASISWG meeting as well as what happened at Tri-Ada'95. We should also include the FAQ (in article format) for this issue. The deadline for the March/April issue of AdaLetters is 31 December 1995. Perhaps we can have an article (one for ACM magazine) ready for this issue. The deadline for the following issue of AdaLetters is 29 February 1996.