From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,INVALID_DATE autolearn=no autolearn_force=no version=3.4.4 Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site ucbvax.BERKELEY.EDU Path: utzoo!watmath!clyde!burl!ulysses!ucbvax!AEROSPACE.ARPA!hogan From: hogan@AEROSPACE.ARPA Newsgroups: net.lang.ada Subject: Production Quality Ada Compiler Criteria Message-ID: <8604151812.AA02928@aerospace.arpa> Date: Tue, 15-Apr-86 13:09:09 EST Article-I.D.: aerospac.8604151812.AA02928 Posted: Tue Apr 15 13:09:09 1986 Date-Received: Thu, 17-Apr-86 01:32:40 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet List-Id: I am writing a standard for procuring an Ada compiler and would like to check some numbers against the Ada community. I would appreciate hearing most from Ada implementor but also knowledgeable systems programmer types who have used Ada to build some moderately sized (~5000 lines) Ada programs. I got the numbers from examining what a few of the validated Ada compilers provide and using my own judgement, but I need your input so we don't publish a standard that no compiler can or will ever meet. The following requirements are indended as minimal requirements that any Ada compiler must meet to be judged as production quality. (note the (M) means mandatory and the (A) means the requirement may be mandatory depending on the user's application). It may be that a very good compiler will meet most of these requirements and only fail on a few. We have not yet attached a weighting factor to the requirements. 2.1.1 (M) A compiler shall compile the ACVC and ACEC test suites with at an average rate of at least 250 Ada source statements per minute (elapsed time), for each 1 MIPS of rated processing speed of the specified host computer. 2.1.2 (M) A compiler shall compile the ACVC and ACEC test suites with at an average rate of 100 Ada source statements per minute (elapsed time), for each 1 MIPS of rated processing speed of the specified host computer, while meeting the object code requirements. 2.2.1 (M) The compiler shall produce an object code program that requires no more than 15% additional target computer memory space than an equivalent program written in assembly language. 2.2.2 (M) The compiler shall produce an object code program that requires no more than 5% additional execution time than an equivalent program written in assembly language. Capacity The following are minimal capacity values, i.e. a compiler can allow more than 1000 compilation units in a program but it must allow at least that number. Item allowed size compilation units 1000 source lines/ compilation unit 10,000 characters/ source line 80 identifiers/compilation unit source lines = 10,000 library units in a context clause compilation units = 1000 Levels of nesting in a program unit 16 Declarations in a compilation unit number of identifiers=10000 Formal parameters in an entry or subprogram 64 Frames an exception may be propagated through 256 Exceptions & handlers in a program unit/frame 256 Number of bits in any object MAX_INT Number of characters in a STRING object 50,000 Enumeration literals in a type 256 Dimensions in an array 16 Elements in an array (all dimensions) MAX_INT Discriminants in a record 64 Ada-Related The following requirements are specifically related to implementation of certain Ada constructs. I would appreciate comments about their appropriateness and content. 5.1.1 (M) The compiler shall eliminate statements or subprograms that will never be executed (dead code) because their execution depends on a condition known to be false at compilation time. 5.2.1 (M) In addition to the basic 60-character set, a compiler shall allow any of the 26 lower case letters in identifiers and both the 26 lower case letters and 13 other special characters in specified in LRM paragraph 2.1 in character strings and comments to the extent that the underlying host computer supports them. 5.2.2 (A) A compiler that provides the predefined package TEXT_IO shall permit input and output data to contain any of the 95 graphic characters or 5 form effectors of the ISO seven-bit character set (ISO Standard 646) to the extent supported by the target 5.3.1 (M) The compiler shall provide predefined types for all the integer and floating-point types provided by the target computer. 5.3.2 (M) The attribute 'MACHINE_OVERFLOWS shall be TRUE for all floating-point and fixed-point types. 5.3.3 (M) The compiler shall implement enumeration types using an underlying type that requires the least amount of memory to represent that type. 5.3.4 (M) The range of enumeration code values allowed in an enumeration representation clause shall be MIN_INT to MAX_INT. 5.3.5 (A) The compiler shall support length clauses, enumeration representation clauses, and record representation clauses, and address clauses. 5.3.7 (M) The attributes T'SIZE for discrete types and T'SMALL for fixed-point types shall be implemented. 5.3.8 (M) The components of records types and array types named in a pragma PACK shall be stored in contiguous memory bits. 5.5.1 (A) The compiler shall provide at least 8 priority levels for specifying tasking priorities via the pragma PRIORITY. 5.5.2 (A) The pragma SHARED or an equivalent capability shall be provided. 5.5.3 (M) A mechanism for termination of tasks that depend on library packages shall be provided. 5.5.4 (M) The compiler shall provide a capability for handling target computer hardware or operating system interrupts as calls to Ada task entries. 5.5.5 (A) The resources to create, interrupt, terminate, fail and abort a task shall be no more than those required to call and return from a subprogram. 5.5.6 (M) The ordering of select alternatives in a selective wait statement shall not impact overall execution speed of the program. 5.5.7 (M) The compiler shall dispatch the execution of ready tasks in a manner that will give each task an equal share of the processing resources. 5.5.8 (M) Tasks that are blocked, completed, terminated, or not activated shall not impact the performance of the remaining code. 5.5.9 (A) The value of DURATION'DELTA shall not be greater than 1 millisecond. 5.5.10 (M) The basic clock period, TICK, as defined in package SYSTEM shall be the smallest time increment supported by the target computer hardware. 5.6.1 (M) An exception shall not impact execution speed unless it raised. 5.6.2 (M) The compiler shall provide the pragma SUPPRESS or an equivalent capability to permit suppression of the execution of the pre-defined run-time checks for a designated compilation unit. 5.6.3 (M) The compiler shall issue a warning message for violation of a constraint exception which is always raised at run-time. 5.7.1 (A) The compiler shall maximize code sharing between multiple instantiations of generic units. 5.8.1 (M) The compiler shall provide the pragma INTERFACE to allow importing programs written in the assembly language of the target computer. 5.8.2 (A) The compiler shall provide the pragma INTERFACE, or an equivalent mechanism, to allow incorporation of object modules compiled from other languages. 5.9.1 (M) The generic library subprograms UNCHECKED_DEALLOCATION and UNCHECKED_CONVERSION shall be implemented with no restrictions except that the target type of UNCHECKED_CONVERSION may exclude unconstrained types. 5.10.1 (A) An implementation shall provide support for format directed input/output for each target computer that supports text input/output. --------- Responses via electronic or conventional mail are OK. I would like to have them as soon as possible. Michael Hogan Aerospace Corp. M1/106 POB 92957 Los Angeles, CA 90009 (213) 615-4346