Minutes from ASISWG/ASISRG Meeting With Tri-Ada'96 Philadephia, PA (USA) 3 December 1996 The Ada Semantic Interface Specification Working Group (ASISWG) and the Ada Semantic Interface Specification Rapporteur Group (ASISRG) met all day Tuesday (3 December 1996) at the Philadelphia Marriott Hotel in Philadelphia, Pennsylvania (USA). The following people attended: Steve Blake, Aonix Inc. David Brookman, chair of OOWG Currie Colket, SPAWAR Dan Ehrenfried, Little Tree Consulting Ron Price, CACI Clyde Roby, IDA Sergey Rybin, Moscow State University Prof. Alfred Strohmeier, Swiss Federal Institute of Technology The primary goal of this meeting was to complete the ASIS Working Draft to be submitted to ISO/IEC SC22 WG9 at their meeting on Saturday, 7 December, at the Philadelphia Marriott Hotel. The decision was made to submit the updated ASIS Working Draft to WG9 and request that WG9 commence the 60-day ballot process. The ASIS Workding Draft, Version 2.0.k, dated 7 December 1996 was submitted to WG9 at their meeting. WG9 was requested to begin their 60-day letter ballot process as they review the document and provide comments. When WG9 approves the ASIS Working Draft, it will become a Committee Draft (CD); they will then forward it to SC22 for approval. Some of the information from that meeting appears in these minutes. The process included the addressing of open issues followed by a section by section review of the ASIS Working Draft document. Minutes and Action Items from March Meeting The minutes of the June 1996 meeting were accepted and approved by a formal motion and vote. The Action Items from the March 1996 meeting were reviewed (these are available on the AJPO's SW-Eng host). ISO Standardization of ASIS Currie reviewed the ISO Standardization process. SC22 had approved the ASIS New Work Item on 2 February 1996 with 17 nations voting to approve (one nation abstained and 5 nations did not submit their votes on time). To become a formal ISO project, approval at the JTC1 level is required. The JTC1 ballot closed on 28 May 1996, About a week later, the results were announced: the ASIS New Work Item was approved and the Project Number #22-15291 was assigned. This is an important milestone as the ASIS project is now formally recognized by ISO, facilitating the standardization of ASIS. The first real step towards getting an international standard is to submit a Working Draft to WG9. Our latest ASIS for Ada 95 draft specification is ASIS Version 2.0.K. This version was submitted to the WG9 meeting on 7 December for an electronic mail ballot that will be done via a 60-day ballot. We expect the results of the ballot to be either: 1. "approve with comments" -- In this case, ASISRG will address the comments and if WG9 concurs with how we addressed them, the document is forwarded to SC22 as a Committee Draft. 2. "disapprove" -- In this case, rather significant issues are raised which must be addressed by ASISRG. Once they are addressed and incorporated in an updated ASIS Working Draft, ASISRG would request a second WG9 60-day ballot. Once WG9 approves the Working Draft, it is submitted to SC22 as a Committee Draft (CD). Once a CD is in, the ASIS Working Draft becomes the ASIS Committee Draft, as a response to comments formally submitted during the ISO balloting process. There would then be four international ballots: 1. SC22 ballot 2. JTC1 ballot (a successful ballot will result in ASIS as a Draft International Standard -- DIS) 3. SC22 ballot 4. JTC1 ballot (a successful ballot will result in ASIS as an International Standard) The ISO Working Draft document has been under review. The AJPO has requested that CACI and EDS to review the document. Ron Price, present at this meeting, completed the review of ASIS_CD1 (the first part of 3 Word 6.0 documents) and had several comments. It would be useful to have an index; perhaps an index of queries and ASIS types would be valuable. If this is done, it should be done after the CD is submitted. We've included an annex which contains example programs which use ASIS, an annex for the rationale, an annex containing the glossary, and an annex containing information about IDL and how ASIS can be generated from IDL. Expected ASIS Schedule for ISO Standardization This schedule has been revised based upon our meeting with WG9. As can be seen by the following schedule, we are still looking for an ISO approved standard ASIS 95 in the 1998 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 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 SC22 approved ASIS New Work Item (NWI) Mar 96 ASISWG/ASISRG generated ASIS 95 ISO Working Draft (WD) May 96 JTC1 approved ASIS NWI (ASIS assigned Project #22-15291) Jun 96 ASIS-for-GNAT prototype available for GNAT Ada 95 Compiler Jun 96 ASIS draft Working Draft submitted to WG9 for comments Dec 96 First complete ASIS 95 implementation demonstrated by DDC-I at Tri-Ada'96 Dec 96 ASIS Working Draft submitted to WG9 for 60-day ballot Mar 97 WG9 ballot on ASIS closes (1 March) Mar 97 ASISWG/ASISRG resolves WG9 comments (23-24 March) Aug 97 Possible; SC22 ballot on ASIS CD Jan 98 Possible; JTC1 ballot on ASIS CD (ASIS registerable as DIS) Aug 98 Possible; SC22 ballot on ASIS DIS Nov 98 Possible; JTC1 ballot on ASIS DIS Dec 98 Possible; ASIS International Standard printed 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 (for ASIS 83) * 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 The ASIS FAQ was updated for the Tri-Ada'96 conference. Update on ASIS-for-GNAT Project ASIS-for-GNAT cannot be considered as a source-based interface anymore. Some intermediate information is written to a file so that ASIS can access it. ASIS-for-GNAT supports all the syntactic queries through ASIS Version 2.0.j. It can now process multiple units -- there had been a restriction of only one unit at a time. Future work on ASIS-for-GNAT includes implementing the semantic queries. ASIS for GNAT is available by ftp on the lglftp.epfl.ch host in the /pub/ASIS directory. Sergey's tool, ASIStint, could be used as part of the Conformance Suite. They are going to base the ASIS-for-GNAT test suite on that tool. Review Progress Towards Goals We are presently getting ASIS in a form for submission to WG9. The group of interfaces, i.e., ASIS, is targeted to user/clients of ASIS who are tool-builders, targeted to "normal" programmer who might need a quick tool to obtain some information about his programs (which he may currently be developing). ASIS is targeted to end users such as those described above and to end users who develop compiler-related tools, and to end users who develop applications such as IBM's System 1. The latter kind of user may develop applications that really don't do code analysis; it is a rather unique application that uses ASIS. This message marshalling application converts data types to byte streams, then communicates them to another place who then converts the byte streams back to data types. Dan Ehrenfried has written such a tool. He noted that Mickey White (of IBM at the time) was a first step that made meaningful data collection and transmission. This was viewed as a highly important, but litte used, use of ASIS. There was some concern that the IDL permissions were impacting the normal ASIS user by removing the semantic "sugar" from ASIS. This concern was raised because of the removal of all but one of the generic interfaces (remaining generic interface is Traverse_Element) from ASIS. Actually, there was not a major concession to the use of IDL. We had decided that the I/O (along with their generics) would be removed from the required ASIS interfaces before IDL was even an issue, simply to provide a cleaner interface. The I/O was basically instantiations of Sequential_IO and Direct_IO and was not viewed as needed in the interface. The generics to support the optional Data_Decomposition functionality are generally intact. Portable_Data_IO has been moved to the Annex as an Example. The I/O for Asis.Ids has been moved to the annex, too. Both I/O capabilities are provided as implementation I/O examples. Neither should be part of the required interface. The generic for Traverse_Element, perhaps the most important interface in ASIS, was kept. The type that controlled the generic was placed into package Asis, while the generic itself was placed into a separate package called Asis.Iterator. The generic for the Hash function is the only concession made for the use of IDL. This concession actually resolved an inconsistency in the current ASIS interface. There had been four Hash functions. The Hash function in Asis.Elements was a generic while the remaining three in Asis.Ids were not. All four Hash functions were made consistent as non-generics (two of these Hash functions were later removed during the cleanup of package Asis.Ids). Hence, the implementation permission to use IDL resulted in a miniscule loss of functionality for the ASIS interface in that the user would be responsible for mapping a Hash function into its own lower bound and upper bound. This is trivial. Was the academic view of standardization being emphasized over the non-academic tool developer? No! One issue that might have suggested this was the issue of tasking-safeness and the description that appeared in the Working Draft. After some discussion, we decided that the statement should be that ASIS makes no claims to be tasking-safe. Otherwise, there may not be any implementations at all. ASIS should be an ISO standard but only so long as it does not violate usability and efficiency concerns for spot tool developers. Our fundamental goal is portability of tools. We came up with two examples of tools that might need tasking- safeness. 1. a program which uses multiple tasks to do a compare using Traverse_Element with a window for comparing two or more programs 2. a server which can handle multiple clients (but ASIS would probably have one server per client because ASIS is basically a state) We agreed to replace the entire tasking-safe section in the Working Draft with: This standard does not require a tasking-safe implementation. Formal Issues discussed at this ASISWG/ASISRG meeting #012 - Terminology for ASIS 95 Glossary There has been much discussion about this glossary, its form, and its contents since the June meeting. Status: Approved, 3 December 1996, in version J. #013 - Don't preclude plug'n'play Again, there has been much discussion since the June meeting. We have included much of that discussion in the 1 November version of the Working Draft document. A solution incorporating IDL has been provided. Additional solutions involving a dynamic link capability could also be included. Suggestions are solicited. Status: Approved, 3 December 1996, in version J #014 - ASIS must be "tasking-safe" At the June 1996 WG9 meeting, the request was made to identify whether or not ASIS was tasking-safe, and to so indicate in the ASIS Working Draft. The request was NOT to make ASIS a tasking-safe interface, as many believed. Status: Approved, 3 December 1996, version K A statement indicating that ASIS does not require a tasking-safe implementation now appears in the Working Draft. That is, the semantics of ASIS is principally defined as a single thread of control. The specification has also been changed to reflect that the issue of multiple threads of control is out of scope (see Section 1.1.1 of the ASIS document). #015 - Context Clause error in ASIS example This was corrected in version 2.0.J. Status: Approved, 3 December 1996, version J #016 - Place all ASIS interfaces in ASIS or as child of ASIS Status: Approved, 3 December 1996, version J #017 - Remove Id's and Id_Segment's from ASIS The relevant email discussion was distributed to everyone. Dan Ehrenfried uses IDs as unique identifiers for cacheing Elements; he does not use the I/O facilities for IDs, though. The basic requirement is that Asis Ids be unique, persistent (until the next re-compilation of the Context) and highly efficient. A unique Id needs to be generated for each requested Element. Later that Element must be returned when the Id is provided to the ASIS interface. It was noted that one possible way to implement Ids was to use the relative address. However, Id_List, Id_Segment and Id_Segment_List are not necessary. Thus, all the associated subprograms are not necessary and could be easily created by the tool builder if desired (including Is_Identical). The idea for writing IDs out was so that a later tool could read the IDs into it so that it could begin processing where the first tool had left off. Previously, Asis.Ids was an optional package. The value to a tool builder justified making Asis.Ids a required part of the Asis interface. Status: M, 3 December 1996, version K. New Issues #018 - Inconsistent subsets in ASIS 95 Recent email messages were distributed (their subject was "Processing inconsistent unit sets in ASIS 95" -- dated 18 September, 1 October, 9 October -- from Sergey). The issue concerns the definition of "consistency" as this is an Ada-related term. The concern is that the language lawyers could reject ASIS because of some technical terms that don't mean the same thing in Ada -- the notion of "consistency" is in this area. The term "consistency" in ASIS does not mean the same thing that it does in Ada 95 (10.1.4(5)). Maybe we can use the term "coherent" or something similar? ASIS currently doesn't allow "version" of Ada source, either. Some discussion concerning this appears in section 2.5.4.2 (of the draft Working Draft) and as Rationale section D.4.2. Sergey said that section D.4.2 was not a generalization. We will duplicate the commentary from 2.5.4.2 in their respective subprograms' commentary in sections 3 through 23. We will also make some additional changes in 2.5.4.2 ("Semantic queries across compilation unit boundaries may raise ASIS_FAILED if the units are inconsistent with respect to each other."). Status: M, 3 December 1996, version K #019 - Use deferred constant instead of function for Nil_Relationship Instead of a deferred constant as suggested by the submitter, we will use a regular constant (note that it was originally a function call). Status: M, 3 December 1996, version K #020 - Control over Hash functions There is a need for a range for Hash functions. But the user can always define his own Hash function. After deleting two Hash functions from package Asis.Ids, there were two Hash functions, one in Asis.Elements (a generic Hash function), and one in Asis.Ids (a non-generic Hash function). Both Hash functions should be consistent. The non-generic form was selected to facilitate the use of IDL. It was recognized that a user application could easily provide its own mapping for the Hash function between any lower and upper bound. Status: X, 3 December 1996. #021 - Delete Family, Direct_Supporters, Direct_Dependents Change the definition of "Family" to exclude ancestors; this was agreed to. We also agreed to remove Direct_Supporters and Direct_Dependents. The value of these interfaces was minimal and created additional calls for a tool builder. If such a distinction is needed, it can be done as a ("secondary") tool layer. Also the name of Extended_Family was changed to Needed_Units as Needed_Units is more intuitive. Status: M, 3 December 1996, version K #022 - Normalize association list Concerning record components, why is there the An_Others_Choice element? We can do away with this since normalized would return all the possible values. Concerning Sergey's email discussion of normalized associations, additional commentary has been added to some of the interfaces as well as some clean-up. Status M, 3 December 1996, version K Other Issues * There was some discussion about Traverse_Elements concerning traversal of implicit elements. During the preparation of the minutes, we realized that we never came to closure on this issue (and its related Action Items). Thus, we will generate a formal issue addressing implicit elements during Traverse_Elements. The related Action Items have been closed in deference to this new issue. AJPO Input to ASIS Working Draft Ron Price of CACI sent an email message with a set of comments about the 1 November version of the draft Working Draft document. We accepted those that are editorial in nature. After reviewing the more substantial comments, we agreed to accept most of his other changes, too. There was also some discussion about the need for what ASIS is used for. Perhaps a short single statement about the operations that are available -- not necessarily for every package; we can clump some together, e.g., statements and pragmas. Maybe we need a "cloud" picture. Perhaps we should try to add more commentary to answer the questions "what can I use this for right now?" (at the package level) and "how can ASIS help me solve my problem?". Dan Ehrenfried offered an introduction to ASIS that he had written for AdaLetters a couple of years ago. He also gave it to their customers to give them a better understanding of how his tools worked. This description on the use of ASIS for Ada 83 also appeared to satisfy Ron's issue nicely. Dan provided the write-up the next day for conversion to an ASIS 95 write-up. It is included in ASIS 2.0.k. Dan's article appeared in Ada Letters, Volume XIV, Number 4, July/August 1994 (pages 28-35). ASIS Birds-of-a-Feather Session at Tri-Ada'96 An ASIS Birds-of-a-Feather (BoF) was held at Tri-Ada'96 from 7:00 PM to 9:00 PM to provide ASIS information to conference attendees and to provide them an opportunity to ask questions on the use of ASIS from the ASIS experts present. The ASIS BoF was well received. After the presentation portion, Sergey provided a demonstration of ASIS-for-GNAT in his DOS environment. It was noted that ASIS-for-GNAT should work for all GNAT environments. Coordination with Other Groups WG9 At the WG9 meeting held 7 December, Currie gave a short status presentation. Prof. Strohmeier led a discussion concerning ASIS for approximately 30 minutes when WG9 became a Committee of the Whole. WG9 agreed to begin a letter 60-day ballot as soon as possible. We would like to see most votes coming back with "approve with comment" so that we can address the comment and improve ASIS. We would not like to see any NO votes returned. SIGAda SIGAda is pleased in how ASIS is coming along. HRG (Annex H Rapporteur Group of WG9) Currie went to the October meeting in Boston. The HRG had been discussing a possible pragma Annotate but are now focused on producing guidelines for high-integrity systems. They have distributed a document titled "Ada95 Trustworthiness Study: Guidance on the Use of Ada95 in the Development of High Integrity Systems", produced for the Canadian MoD. They plan to use this document as a basis for guidelines for developing systems having safety and security requirements. These guidelines will be produced in the form of an ISO Technical Report. This report is planned to have a section on ASIS. ABWG (Ada Bindings Working Group of SIGAda) They are happy to let ASISWG/ASISRG deal with ASIS on our own. OOWG (Object Oriented Working Group of SIGAda) They are quite pleased that we have an approach for IDL and CORBA. Mr. David Brookman, the chairman of the OOWG, was an active participant at this ASISWG/ASISRG meeting. We were pleased to have the two working groups cooperating. Future Meetings ASISWG/ASISRG at DDC-I in Phoenix, Arizona (USA) from 25-26 March 1997 (Tuesday and Wednesday). Note that this is the week between Palm Sunday and Easter Sunday. An email message will be sent to confirm that this holiday time-period is satisfactory to potential attendees. Ada-Europe'97 in London, England from 2-5 June and WAdaS'97 in McLean, Virginia (USA) were discussed as potential meeting places. It was premature to identify meeting dates after the March meeting until we know the results of the WG9 60-day ballot and the workload. It was felt that a Birds-of-a-Feather session at WAdaS'97 might be appropriate. We should plan for a Tutorial at Tri-Ada'97 in St. Louis in November 1997; also ASISWG/ASISRG might meet then. ASIS in Ada Letters and Other Periodicals Currie generated an article for Ada Letters based on Section 2 of the ASIS Working Draft document. Dan Cooper has generated an article for Ada Letters titled "ASIS-Based Code Analysis Automation". Dan Ehrenfried had written an article for Ada Letters a couple of years ago (Volume XIV, Number 4, July/August 1994, pages 28-35). It was a general article about ASIS, neither being specific about ASIS for Ada 83 or ASIS for Ada 95. We are making sure that the article (which Dan has an electronic form of) is on the Web. Bill Thomas and Currie may work on an article for one of ACM's magazines/journals. All were encouraged to write ASIS related articles for Ada Letters and other publications. Next Meeting The next meeting of ASISWG/ASISRG will be held at DDC-I in Phoenix, Arizona (USA) from 25-26 March 1997 (Tuesday and Wednesday).