I'm sponsoring this fast-track request on behalf of the
ksh93-integration project.
Please note that this is an *open* case.
Template Version: @(#)sac_nextcase %I% %G% SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
ksh93 update 2
1.2. Name of Document Author/Supplier:
Author: Alan Hargreaves
1.3 Date of This Document:
01 February, 2009
4. Technical Description
The release binding is the same as with the previous ksh93 project: a
patch/micro release of Solaris delivering through OS/Net. Stability
levels are as described below.
Additional materials (man pages and diffs) can be found in the
'materials' subdirectory.
This project is an amendment to the Korn Shell 93 Integration project
(PSARC/2006/550, PSARC/2006/587, PSARC/2007/035 and PSARC/2008/344)
specifying the following additional interfaces:
1) Update of ksh93 interfaces
1.1) New "typeset" variable type qualifier ("-C") to declare compound
variables
1.2) New "typeset" option "-m" to rename/move a variable
1.3) New "read" option "-C" to read a variable as compound variable
1.4) New "print" option "-C" to print compound variables as a
single line
1.5) New ksh93 math functions "log10", "j0", "j1", "jn", "y0",
"y1", "yn"
1.6) Interface stability change of the POSIX shell command language
parts of the ksh93 language
2) An enhanced version of the "cmp" utility and an identical ksh93
built-in command
3) An enhanced version of the "cut" utility and an identical ksh93
built-in command
4) An enhanced version of the "comm" utility and an identical ksh93
built-in command
5) An enhanced version of the "paste" utility and an identical ksh93
built-in command
6) The addition of /usr/bin/print
7) An enhanced version of the "uniq" utility and an identical ksh93
built-in command
8) An enhanced version of the "wc" utility and an identical ksh93
built-in command
9) Addition of /usr/share/doc/ksh/ for ksh93 documentation.
10) Enable "globstar" mode for interactive shells via /etc/ksh.kshrc
Bug/RFE Number(s):
6793744 RFE: Add /usr/share/doc/ksh/ for ksh93 documentation
6793763 RFE: Update /usr/bin/ksh93 to ast-ksh.2009-01-14
6793722 RFE: Update /usr/bin/cmp to AT&T AST "cmp"
6793714 RFE: Update /usr/bin/comm to AT&T AST "comm"
6793719 RFE: Update /usr/bin/cut to AT&T AST "cut"
6793721 RFE: Update /usr/bin/paste to AT&T AST "paste"
6793747 RFE: Provide "print" builtin as /usr/bin/print for external applications
6793726 RFE: Update /usr/bin/uniq to AT&T AST "uniq"
6793735 RFE: Update /usr/bin/wc to AT&T AST "wc"
6794952 RFE: Enable "globstar" option in /etc/ksh.kshrc
Interface Stability Description
--------- --------- -----------
<POSIX Shell Command Language Commited <IEEE Std 1003.1-2008
part of the ksh93 language> Shell Command
Language>
/usr/bin/cmp Commited cmp command
/usr/bin/comm Commited comm command
/usr/bin/cut Commited cut command
/usr/bin/paste Commited paste command
/usr/bin/print Uncommited print command
/usr/bin/uniq Commited uniq command
/usr/bin/wc Commited wc command
<new C99 math function "log10"> Commited C99 math functions
<new C99 math function "j0"> Commited C99 math functions
<new C99 math function "j1"> Commited C99 math functions
<new C99 math function "jn"> Commited C99 math functions
<new C99 math function "y0"> Commited C99 math functions
<new C99 math function "y1"> Commited C99 math functions
<new C99 math function "yn"> Commited C99 math functions
Detail
======
1. Update of ksh93 interfaces
-----------------------------
1.1 New "typeset" variable type qualifier ("-C") to declare compound
variables
The "typeset" builtin has a new option "-C" (previously declared as
"reserved for future usage") to declare a variable as a compound
variable. If value names a compound variable it will be copied to name.
Otherwise if the variable already exists, it will first be unset. This
replaces the previous implicit declaration on assignment (e.g.
$ typeset -C foo # instead of $ foo=() #).
1.2 New "typeset" option "-m" to rename/move a variable
The "typeset" builtin has a new option "-m" to rename/move a variable.
This is useful to split/merge variable trees or move parts of variable
trees around.
1.3 New "read" option "-C" to read a variable as compound variable
The "read" builtin has a new option "-C" to read the input into a
compound variable (this can be used to construct "record-oriented"
pipes).
1.4 New "print" option "-C" to print compound variables as a single line
The "print" builtin has a new option "-C" to print compound variables
as a single line (the existing $ print -v varname # and
$ printf '%B\n' varname # prints a multiline, human-friendly output),
equivalent to $ printf "%#B\n" varname #.
The idea is to allow compound variables to be filtered in pipelines, e.g.
$ ... ; while ... ; do print -C myvar done | \
egrep -v '.*=hasfish.*' | \
while read -C filtered_vars ; do \
...
done
1.5 New ksh93 math functions "log10", "j0", "j1", "jn", "y0", "y1", "yn"
Function name | Prototype | see manual page
---------------+--------------------------------------+-----------------
log10 | float log10(float) | log10(3m)
j0 | float j0(float) | j0(3m)
j1 | float j1(float) | j1(3m)
jn | float jn(float) | jn(3m)
y0 | float y0(float) | y0(3m)
y1 | float y1(float) | y1(3m)
yn | float yn(float) | yn(3m)
(note: the datatypes "integer" and "float" refer to the "integer" and
"float" datatypes in ksh93 scripts, not those in the "C" language)
1.6 Interface stability change of the POSIX shell command language parts
of the ksh93 language
The interface stabilty of POSIX shell command language parts of the
ksh93 language are updated from "Uncommited" to "Commited" (the
ksh93-specific language parts not defined in "IEEE Std 1003.1-2008
Shell Command Language" remain "Uncommited").
The POSIX shell command language is described in
http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
2. Enhancement of /usr/bin/cmp
------------------------------
The second part of this project specifies an enhancement to
/usr/bin/cmp and based on the AT&T AST "cmp" command.
The AT&T AST version of the "cmp" utility provides support for the
following additional options found commonly in other implementations
such as GNU and BSD:
-c, --print-chars
-i, --ignore-initial=skip
--verbose (same as existing -l)
-s, --quiet|silent
--man, --html, --nroff, --help, --version
The stability of the "/usr/bin/cmp" command and built-in command-line
interface (including the new options) is "Committed".
For further information/specifications see the materials directory.
3. Enhancement of /usr/bin/cut
------------------------------
The third part of this project specifies an enhancement to /usr/bin/cut
and based on the AT&T AST "cut" command.
The AT&T AST version of the "cut" utility provides support for the
following additional options found commonly in other implementations
such as GNU and BSD:
--bytes=list (same as existing -b)
--characters=list (same as existing -c)
--delimiter=delim (same as existing -d)
--fields=list (same as existing -f)
--nosplit (same as existing -n)
-R|r, --reclen=reclen
-D, --line-delimeter|output-delimiter=ldelim
-N, --nonewline
--suppress|only-delimited (same as existing -s)
--man, --html, --nroff, --help, --version
The stability of the "/usr/bin/cut" command and built-in command-line
interface (including the new options) is "Committed".
For further information/specifications see the materials directory.
4. Enhancement of /usr/bin/comm
-------------------------------
The fourth part of this project specifies an enhancement to
/usr/bin/comm and based on the AT&T AST "comm" command.
The AT&T AST version of the "comm" utility provides support for the
following additional options found commonly in other implementations
such as GNU and BSD:
--man, --html, --nroff, --help, --version
The stability of the "/usr/bin/comm" command and built-in command-line
interface (including the new options) is "Committed".
For further information/specifications see the materials directory.
5. Enhancement of /usr/bin/paste
--------------------------------
The fifth part of this project specifies an enhancement to
/usr/bin/paste and based on the AT&T AST "paste" command.
The AT&T AST version of the "paste" utility provides support for the
following additional options found commonly in other implementations
such as GNU and BSD:
--serial (same as existing -s)
--delimiters=list (same as existing -d)
--man, --html, --nroff, --help, --version
The stability of the "/usr/bin/paste" command and built-in command-line
interface (including the new options) is "Committed".
For further information/specifications see the materials directory.
6. The addition of /usr/bin/print
---------------------------------
The sixth part of this project specifies a new utility called
"/usr/bin/print" which exposes the ksh93 builtin command "print" as
interface for other scripts/utilities.
Unlike other built-in commands named in PSARC/2006/550, the "print"
built-in in ksh93 will _not_ be bound to the /usr/bin/ pathname to
ensure backwards-compatiblity to existing ksh93 scripts (for example
scripts running in "restricted" shell mode expect that some shell
builtins are available independently from the value of ${PATH}).
The stability of the "/usr/bin/print" command and built-in command-line
interface and the system variables documented in print(1) is
"Uncommitted".
For further information/specifications see the materials directory.
7. Enhancement of /usr/bin/uniq
-------------------------------
The seventh part of this project specifies an enhancement to
/usr/bin/uniq and based on the AT&T AST "uniq" command.
The AT&T AST version of the "uniq" utility provides support for the
following additional options found commonly in other implementations
such as GNU and BSD:
--count (same as existing -c)
--repeated|duplicates (same as existing -d)
-D, --all-repeated[=delimit]
--skip-fields=fields (same as existing -f)
-i, --ignore-case
--skip-chars=chars (same as existing -s)
--unique (same as existing -u)
-w, --check-chars=chars
--man, --html, --nroff, --help, --version
The stability of the "/usr/bin/uniq" command and built-in command-line
interface (including the new options) is "Committed".
For further information/specifications see the materials directory.
8. Enhancement of /usr/bin/wc
-----------------------------
The eighth part of this project specifies an enhancement to /usr/bin/wc
and based on the AT&T AST "wc" command.
The AT&T AST version of the "wc" utility provides support for the
following additional options found commonly in other implementations
such as GNU and BSD:
--lines (same as existing -l)
--words (same as existing -w)
--bytes|chars (same as existing -c)
--multibyte-chars (same as existing -m/-C)
-L, --longest-line|max-line-length
--man, --html, --nroff, --help, --version
The stability of the "/usr/bin/wc" command and built-in command-line
interface (including the new options) is "Committed".
For further information/specifications see the materials directory.
9. Addition of /usr/share/doc/ksh/
----------------------------------
The ninth part of this project specifies a new directory to store ksh's
documentation.
10. Enable "globstar" mode for interactive shells
-------------------------------------------------
The tenth portion of this project specifies to enable the
"globstar"([1]) mode in "/etc/ksh.kshrc" for interactive ksh93 shell
sessions to improve end-user usabilty, similar to the default
configuration found on SuSE Linux and the default of bash version 3.x.
[1]=The "globstar" mode (enabled via $ set -o globstar #) causes ** by
itself to also match all sub-directories during pathname expansion.
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
ON
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open