home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / std_unix / volume.20 / text0035.txt < prev    next >
Encoding:
Internet Message Format  |  1990-08-02  |  12.7 KB

  1. From:  <jsh@usenix.org>
  2.  
  3.            An Update on UNIX*-Related Standards Activities
  4.  
  5.                               June 1990
  6.  
  7.                  USENIX Standards Watchdog Committee
  8.  
  9.                    Jeffrey S. Haemer, Report Editor
  10.  
  11. IEEE 1003.2: Shell and tools
  12.  
  13. Randall Howard <rand@mks.com> reports on the April 23-27 meeting in
  14. Salt Lake City, UT:
  15.  
  16. Background on POSIX.2
  17.  
  18. The POSIX.2 standard deals with the shell programming language and
  19. utilities.  Currently, it is divided into two pieces:
  20.  
  21.    + POSIX.2, the base standard, deals with the basic shell
  22.      programming language and a set of utilities required for
  23.      application portability.  Application portability essentially
  24.      means portability of shell scripts and thus excludes most
  25.      features that might be considered interactive.  In an analogy to
  26.      the ANSI C standard, the POSIX.2 shell command language is the
  27.      counterpart to the C programming language, while the utilities
  28.      play, roughly, the role of the C library.  POSIX.2 also
  29.      standardizes command-line and function interfaces related to
  30.      certain POSIX.2 utilities (e.g., popen, regular expressions,
  31.      etc.) This document is also known as ``Dot 2 Classic.''
  32.  
  33.    + POSIX.2a, the User Portability Extension or UPE, is a supplement
  34.      to the base POSIX.2 standard; it will eventually be an optional
  35.      chapter of a future draft of the base document.  The UPE
  36.      standardizes commands, such as screen editors, that might not
  37.      appear in shell scripts but are important enough that users must
  38.      learn them on any real system.  It is essentially an interactive
  39.      standard that attempts to reduce retraining costs incurred by
  40.      system-to-system variation.
  41.  
  42.      Some utilities, have interactive as well as non-interactive
  43.      features.  In such cases, the UPE defines extensions from the
  44.      base POSIX.2 utility.  An example is the shell, for which the UPE
  45.      defines job control, history, and aliases.  Features used both
  46.      interactively and in scripts tend to be defined in the base
  47.      standard.
  48.  
  49. __________
  50.  
  51.   * UNIX is a registered trademark of AT&T in the U.S. and other
  52.     countries.
  53.  
  54. June 1990 Standards Update                IEEE 1003.2: Shell and tools
  55.  
  56.  
  57.                 - 2 -
  58.  
  59. Together Dot 2 Classic and the UPE will make up the International
  60. Standards Organization's IS 9945/2 - the second volume of the proposed
  61. ISO four-volume standard related to POSIX.
  62.  
  63. In addition to providing current information about the activities of
  64. the Working and Balloting Groups for POSIX.2, a special topic of focus
  65. will be chosen for each report.  Therefore, the reader is referred to
  66. earlier reports for information on such topics as the history of the
  67. Shell Wars and the controversial scope of the UPE.  The next section
  68. talks about the functions, rather than utilities, that are found with
  69. POSIX.2.
  70.  
  71. The POSIX.2 API Functions
  72.  
  73. Perhaps it will come as a surprise to many readers that the POSIX
  74. Shell and Utilities standard also contains specifications for about
  75. fourteen new or extended C function bindings -- in effect, its own API
  76. extending the POSIX.1 bindings -- as follows:
  77.  
  78.   confstr(), sysconf() The first function was created to provide
  79.             string-valued, configuration-specific values such as the
  80.             default setting of the PATH environment variable.  The
  81.             second extends the POSIX.1 function of the same name with
  82.             numeric-valued configuration information such as the
  83.             largest scale value in the bc utility and the
  84.             implementation's line length restriction.
  85.  
  86.   fnmatch() This functional interface implements the form of pattern
  87.             matching used by file-name generation (glob) in the shell,
  88.             case statements in the shell, and the -name option of the
  89.             find utility.
  90.  
  91.   getopt()  This functional interface provides a standard utility
  92.             argument parser that enforces the ``standard utility
  93.             syntax'' guidelines and might be used to implement the
  94.             getopts utility from POSIX.2.
  95.  
  96.   glob(), globfree() This set of functions does shell-style file-name
  97.             generation and presumably calls the fnmatch() function.
  98.  
  99.   popen(), pclose() This pair of functions, which is a part of the
  100.             standard I/O package on conventional UNIX systems,
  101.             provides the ability to communicate through pipes to
  102.             another process by executing a string in the POSIX.2 shell
  103.             language.
  104.  
  105.   regexec(), regcomp() This set of routines provides support for both
  106.             the Basic and Extended Regular Expressions defined in
  107.             POSIX.2, including full internationalization support.
  108.  
  109. June 1990 Standards Update                IEEE 1003.2: Shell and tools
  110.  
  111.  
  112.                 - 3 -
  113.  
  114.   wordexp(), wordfree() This set of routines provides a mechanism for
  115.             an application to use word expansion (parameter expansion)
  116.             that is compatible with the POSIX.2 shell language.
  117.             Although most implementations of this routine will
  118.             normally call the shell, it is (at least conceptually)
  119.             possible that the shell be implemented to call these
  120.             routines for word expansion.
  121.  
  122.   system()  This ``classical'' function executes a command written in
  123.             shell language.
  124.  
  125. All of these functions form part of an optional C binding to POSIX.2
  126. and it is expected that the soon-to-be-released, draft version of the
  127. NIST FIPS will make this ``optional'' functional interface mandatory
  128. for US government procurements.  Other language-binding working
  129. groups, such as those exploring Ada and FORTRAN, are presumably
  130. encouraged to add their own optional bindings if they so wish.
  131.  
  132. Although the inclusion of these functions seems to be a little out of
  133. place in a shell-and-tools standard, there is some rationale for this.
  134. In fact, when POSIX consisted only of POSIX.1, the early attempts to
  135. define system() and popen() made apparent the need to completely
  136. specify the shell language in which the argument string to these
  137. functions was written.  That, in turn, along with the desire to
  138. standardize the classical UNIX utility set, led to the creation of
  139. POSIX.2 as the first offshoot group in the POSIX family of standards.
  140. From this beginning, the POSIX.1 sysconf() function was extended and
  141. the confstr() function was created to provide an underlying
  142. implementation for the getconf utility, which allowed shell-level
  143. applications to query configuration-specific values such as maximum
  144. line length of text files.  Once the beachhead of having functional
  145. interfaces in POSIX.2 was established, the temptation to continually
  146. add to this list has led to the current list as of Draft 9.
  147.  
  148. On the other hand, there are some very strong arguments against the
  149. inclusion of these functions.  First, although the regular expression
  150. functions will almost certainly be required to implement many POSIX.2
  151. utilities such as ed, grep, awk, sed, etc., these functions stop short
  152. of the complete support needed to implement some utilities.  For
  153. example, the handling of error messages (as in a syntactically
  154. incorrect regular expression) and the mechanisms of doing
  155. substitutions (including & and \n support) are not addressed.  Because
  156. of this most implementors will be required to have ``non-portable,''
  157. proprietary extensions to their regular expression support to make a
  158. ``commercially-viable'' implementation.  The issue of where to ``draw
  159. the line'' between inclusion and exclusion is a difficult one indeed.
  160. Second, vendors and application writers may find it difficult, both
  161. procedurally and from a licensing perspective, to have part of the
  162. subroutine library come from a POSIX.1 developer and the other part
  163. implemented by the POSIX.2 implementor.  For example, the implementor
  164. of sysconf(), popen(), or system() might do a much better job if
  165.  
  166. June 1990 Standards Update                IEEE 1003.2: Shell and tools
  167.  
  168.  
  169.                 - 4 -
  170.  
  171. common source code and assumptions were possible between the POSIX.1
  172. and POSIX.2 APIs.
  173.  
  174. Status of POSIX.2 Balloting
  175.  
  176. ``Dot 2 Classic'' remains in its second round of balloting on Draft 9
  177. with a new draft going to ballot in the June-to-July time frame,
  178. according to Hal Jespersen the POSIX.2 Technical Editor.
  179.  
  180. During the Snowbird meeting, much of Monday was devoted to a
  181. presentation on the status of the Dot 2 Classic Balloting resolution.
  182. It is possible, and indeed likely, that Hal Jespersen will limit
  183. balloting on Draft 10 to unresolved objections and new material.  If
  184. this is the case, it most likely indicates (although he didn't
  185. specifically say) that Hal has confidence that Draft 10 has a high
  186. probability of achieving the requisite 75% affirmative vote.
  187. Personally, I am not convinced that this is a likely event.  While
  188. some decisions will be reversed (perhaps several times) before Draft
  189. 10, the following is a summary of issues and/or changes appearing in
  190. Draft 10:
  191.  
  192.    + The internationalization utilities locale and particularly
  193.      localedef are still controversial, particularly within AT&T.
  194.      Because of the strong rationale for their existence it appears
  195.      that they will remain in Draft 10, certainly with considerable
  196.      amendment as the UniForum Technical Committee on
  197.      Internationalization refines these newly developed utilities.
  198.      This is just one case where the conflict between the role of
  199.      standards to codify existing practice and the obvious holes in
  200.      existing practice creates controversy.  Perhaps this issue will
  201.      be resolved by a balloting referendum such as was used for uucp.
  202.  
  203.    + The Draft 10 shell will almost certainly strongly resemble that
  204.      of Draft 9.  Most of the important controversies appear to be
  205.      largely settled and most changes appear to be corrections and
  206.      clarifications.
  207.  
  208.    + Most complex utilities, such as awk, shell, lex, yacc, etc., have
  209.      undergone extensive reworking in response to ballot objections.
  210.      Often a seemingly simple objection will cause large parts of the
  211.      description to be rewritten in order to tighten it up with
  212.      respect to completeness and clarity.  I believe that Hal
  213.      Jespersen believes that most of these changes are uncontroversial
  214.      and he has ensured this by circulating draft sections via E-mail
  215.      to various ``experts.'' Certainly, many of these utilities
  216.      desperately needed this clarification.
  217.  
  218.    + It appears that the newly-engineered hexdump utility is to be
  219.      replaced by a (much simpler) reversion to od.  While od is the
  220.      existing practice, the POSIX od will be a superset of the
  221.      original one with most useful functionality in the new parts.  It
  222.  
  223. June 1990 Standards Update                IEEE 1003.2: Shell and tools
  224.  
  225.  
  226.                 - 5 -
  227.  
  228.      is not clear that hiding new invention under the same name is any
  229.      less controversial than advertising its existence.
  230.  
  231.    + Of course, there will be innumerable other changes, obviously
  232.      important to many, that cannot for reasons of space be covered
  233.      here.
  234.  
  235. A mock ballot on Draft 4 of the UPE was sent to the working group
  236. during February 1990 to allow ballot resolution to be the main focus
  237. of the Salt Lake meeting this April.
  238.  
  239. Status of the New Orleans Meeting
  240.  
  241. Monday, the working group reviewed the current status of the balloting
  242. on ``Dot 2 Classic''.  This has already been discussed in earlier in
  243. this report.
  244.  
  245. The other four days were spent reviewing the 600 to 700 objections
  246. produced by the mock balloting process for the UPE.  While the number
  247. of objections seems low compared to the rate of objections for the
  248. corresponding number of pages in Dot 2 Classic, this may simply be a
  249. symptom of a general shortage of time and the lower number of people
  250. (generally 15 to 20) in the UPE working group.  This lower number and
  251. general lack of time, is a reflection of the fragmentation of the
  252. entire POSIX process caused by a proliferation of working groups.
  253.  
  254. Most of the work during mock balloting was of the nature of cleaning
  255. up incomplete or poorly worded textual descriptions.  Particularly
  256. controversial issues were often left in the rationale for Draft 5.
  257. Some controversial utilities were moved to an appendix based upon the
  258. belief that they should be removed while still allowing the balloting
  259. group one last chance to save them.  The lint89 was one such utility
  260. whose raison d'etre was meager.  At best, the functionality probably
  261. should be an option to c89 in the ``Dot 2 Classic'' document.  The
  262. sdiff utility which was inadvertently omitted from Draft 4, is to be
  263. included in Draft 5.
  264.  
  265. Altogether, it appears that Draft 5 is in a relatively healthy state
  266. to survive the rigors of the balloting process.  None the less, I
  267. expect that there will be a greater number of objections in the
  268. balloting this summer than there were in the mock ballot.
  269.  
  270. June 1990 Standards Update                IEEE 1003.2: Shell and tools
  271.  
  272.  
  273. Volume-Number: Volume 20, Number 35
  274.  
  275.