                                   Chapter 17

                                    HISTORY


      Requests for some information to include in the J 'book'
      Differences between J versions?


*========================================
# Re: Requests for some information

[[NB. apd. This is reply to a message I sent to Roger during the
           preparation of this book
]]

+------------------
| Roger Hui
| <9206161659.AA17904@yrloc.ipsa.reuter.COM>

[[NB. apd. part deleted and moved to other chapters]]

"status.doc" is as good a history as any, I guess.  There is also
a brief note in _An Implementation of J_, Appendix A. Incunabulum:

  One summer weekend in 1989, Arthur Whitney visited Ken Iverson at
  Kiln Farm and produced -- on one page and in one afternoon -- an
  interpreter fragment on the AT&T 3B1 computer.  I studied this
  interpreter for about a week for its organization and programming
  style; and on Sunday, August 27, 1989, at about four o'clock in
  the afternoon, wrote the first line of code that became the
  implementation described in this book.

More such stuff can be found in Ken's paper "A personal view of
APL" in the IBM System Journal.


[[NB. apd. here is the Status.doc for J version 5]]


Copyright (c) 1989 1990, Roger K.W. Hui & K.E. Iverson
Copyright (c) 1990-1992, Iverson Software Inc.
All Rights Reserved.


J Implementation Status (Version 5)

Roger Hui
1992 6 18



System Limits:

  Array rank             <: 127
  Comparison tolerance   <: 2^_34
  Object size            <  65536 bytes  [PC AT only]
  Workspace size         <  640 Kbytes   [PC AT only]


Command Line Parameter:

  [PC AT only]  The command line parameter /s specifies standard input and
  standard output, without the session manager supplied with J.  i.e.
    DOS command          Effect
      j               has session manager
      j /s            standard i/o, no session manager


Machines:

  Acorn Archimedes
  AT&T 3B1
  Apple Macintosh
  Atari ST
  DECstation (MIPS based)
  DEC VAX (Ultrix and BSD UNIX)
  Interactive 386/ix
  IBM PC family: PC, XT, AT
  IBM PC 386, 486
  IBM RISC/6000
  MIPS R3000
  NeXT
  Silicon Graphics SGI Irix
  Sun 3
  Sun 386i
  Sun 4 (SPARC)


Not Yet Available:

  _
  __
  _.
  v;.3   v;._3
  c.
  E.
  p.
  1!:0
  2!:3
  5!:5


Changes between Version 2,   1990  8  9 (APL90 Version)
            and Version 2.7, 1990 10 22

  J             code size reduced slightly
                alternatives for national use characters
  =             faster monad
  -.            faster dyad
  ~.            faster
  ~:            faster monad
  ,.            faster
  ;:            rhematic rules re . and : changed
  e.            faster
  i.            faster dyad
  .             cum (gerund from verb)
  :             con (verb from gerund)
  ::            faster
  u"v           rank (like u, but has ranks of v)
  u&.v          under
  =.            indirect local  assignment
  =:            indirect global assignment
  3!:2          convert from internal representation
  5!:0          fix
  5!:1          atomic representation
  8!:0  8!:1    query/set CGA mode
  9!:0  9!:1    query/set random link
  9!:4  9!:5    query/set prompt
  9!:6  9!:7    query/set box drawing chars
  9!:8  9!:9    query/set error msgs
  9!:10 9!:11   query/set ) system command names
  )box          removed
  )prompt       removed
  )reset        renamed )sic
  )rl           removed
  )script       profile facility added
  ATARI ST      ported to
  tutorial      faster


Changes in Version 2.8, 1990 11 15

  ":            faster on boxed arrays
  display       faster on boxed arrays
  5!:0          string representation inverse
  5!:3          string representation
  8!:2 8!:3     removed (replaced by DOS facility)
  8!:4 8!:5     set screen attributes
  8!:7          refresh screen
  )clear        removed (equivalent to  4!:55 (4!:1) 2 3 4 5 )
  PC AT         simplified session manager
  PC AT         added command line parameter /s


Changes in Version 2.9, 1991 2 15

  +:            monad added
  *:            monad added
  -:            monad added
  ":            dyad added
  0:            added
  1:            added
  m&g f&n       faster
  ::            labels
  adverbs       n c, v c, c n, c v derive adverbs
  2!:0          WS name class
  2!:1          WS name list
  2!:2          WS save
  2!:4          WS copy
  2!:55         WS erase
  8!:9          (PC AT) Edit
  8!:16  8!:17  (Mac) query/set font attributes
  8!:19         (Mac) print screen
  Macintosh     improved user interface
  PC AT         improved user interface
  386ix         ported to
  SGI           ported to


Changes in Version 3, 1991 3 17

  [             previously spelt }:
  ]             previously spelt {:
  .             previously spelt ..
  `             previously spelt .
  `:            previously spelt :
  :             previously spelt ::
  +/\           invertible
  -/\           invertible
  */\           invertible
  %/\           invertible
  =/\           invertible
  ~:/\          invertible
  +/\.          invertible
  -/\.          invertible
  */\.          invertible
  %/\.          invertible
  =/\.          invertible
  ~:/\.         invertible
  ^~            invertible
  ,~            invertible
  ;~            invertible
  ,:~           invertible
  ].&:k         shift
  b.            boolean
  m.            mean
  n.            normalize
  s.            standard deviation
  xyz:          given names
  tab           treated like space on input
  Mac           resizeable Language Summary


Changes in Version 3.1, 1991 5 17

  LinkJ
  m : 1         replaces  1 : m
  m : 2         replaces  2 : m
  m : 11        translate to tacit
  1!:11         indexed file read
  1!:12         indexed file write
  m.            redefined
  n.            redefined
  s.            redefined
  u . v         determinant


Changes in Version 3.2, 1991 6 2

  A.            previously spelt @:
  C.            previously spelt @.
  !.            previously spelt &:
  ,.            ravel items / append lists
  ;             raze / link
  @.            agenda
  @:            at
  &:            appose
  f.            fix
  [.            lev
  ].            dex
  m.            removed
  n.            removed
  s.            removed
  proverbs      dynamic reference
  0!:1          documentation updated


Changes in Version 3.3, 1991 6 25

  ,.            ravel items / append items
  0-frames      corrected
  a-trains      implemented
  c-trains      implemented


Changes in Version 3.4, 1991 7 15 (APL91 Version)

  NB.           implemented
  National Use
    Chars       implemented (Appendix A of dictionary)


Changes in Version 4, 1991 11 23

  _:            implemented
  +.y           implemented
  *.y           implemented
  x-.y          faster
  u^:_          implemented
  u^:_1         linear approximation
  u^:n          dyad changed
  u^:v          changed
  $:            changed
  ]:            faster on matrices
  u .. v        implemented
  u .: v        implemented
  m : 11        string m only
  m : 12        implemented
  atom1,:atom2  produces 2 1$atom1,atom2
  u/.           dyad faster
  0{atom        returns atom
  u}            changed; old defn is u@i.@}.@$} : (u@i.@$})
  u"_           implemented
  `:1           replaced by u^:v
  `:4           replaced by m~
  `:5           replaced by @.
  j.            implemented
  r.            implemented
  4!:0          returns _1 on invalid arguments
  5!:4          implemented
  9!:10         removed
  9!:11         removed
  )script       replaced by 0!:2
  )sscript      replaced by 0!:3
  )off          replaced by 0!:55 and Ctrl D
  Archimedes    ported to
  DECstation    ported to
  MAC           removed online dictionary


Changes in Version 4.1, 1992 2 2
  u . v         faster
  m&,           invertible
  ,&m           invertible
  m&}.          invertible
  1!:2          (Mac) file type set to TEXT
  1!:3          (Mac) file type set to TEXT
  1!:12         (Mac) file type set to TEXT
  ^!.p          implemented
  J             source made available


Changes in Version 4.2, 1992 3 19
  input         fixed bug in jgets()
  input         numeric input (in w.c) more robust
  vz.c          enhanced portability in zacosh()
  J PC386       available
  test scripts  available


Changes in Version 5, 1992 6 18
  <!.k          implemented
  <.            faster
  >             faster
  >!._          implemented
  >.            faster
  +             faster dyad
  *             faster dyad
  -             faster
  %.            faster
  ^             special case in dyad for integer y
  $             faster dyad
  ~:            faster dyad
  f/ .g         faster dyad
  +/ .*         faster dyad
  ,             faster dyad
  ,.            faster dyad
  #             faster dyad
  #.            faster
  #:            faster; fixed bug (#:!.t)
  f/            faster
  f/\           faster monad
  f/\.          faster monad
  {.            faster dyad
  {.!.f         implemented
  }.            faster
  "             faster; prefix agreement
  ?             faster monad
  5!:4          faster
  x 6!:2 y      implemented



*========================================
# Differences between J versions?

+------------------
| Peter S. Shenkin
| <1991Apr22.022402.6381@cunixf.cc.columbia.edu>

Could someone (Roger?) post something about what the differences are between
successive J versions?  For example, I believe 3.0 is now available for
the PC, but only 2.9 is available for the Iris.

In general, is it one of the following possible kinds of differences?

A.  The language design is frozen and fully implemented; new versions improve
    the quality of the implementation.

B.  The language design is frozen, but not all parts of the design are
    implemented in earlier versions;  newer versions implement more of the
    language.

C.  The language design is still evolving;  new versions contain newly
    conceived features.  There are two possible subsets of this:

    1.  The language is growing by accretion;  new versions add to the
        facilities provided by older versions.

    2.  Even earlier features are continually being re-thought, and may change.

Some general comments along these lines, and perhaps extrapolating to "where
J is going," would be most welcome.

Thanks,


+------------------
| Roger Hui
| <1991Apr24.025407.5190@yrloc.ipsa.reuter.COM>

0. The latest version is not available all machines, because
we have ready access only to some machines (and the Iris, being rather
expensive, is not one of them); because our resources are limited; and
because there are only 24 hours in a day.

1. If you don't have the latest version, then it is a bit difficult
to find out what the differences are between the latest version and
the version you have on hand.  But then, the differences would not
affect you.  If you do have the latest version x, then the file
"status.doc" included with the package describes briefly the changes
from one version to the next, up to version x.

status.doc also has items marked "NYA", not yet available.
These tend to be items already in the dictionary, but not yet
implemented.  Current NYA items of note include:  E. (interval search),
p. (poly roots), c. (characteristic vectors and roots).

2. The most visible and inconvenient differences between versions tend
to be the spelling changes.  We don't make spelling changes lightly,
but such changes do happen.

3. I should hope the language design is still evolving.  (Only dead
languages aren't.)  Certain core ideas have remain constant for a long
time (since APL\360 and before).


 