The core Icon language is defined by The Icon Programming Language, Third Edition (Griswold and Griswold, 1996). This section documents differences with respect to that book and to the reference implementation, Version 9 of Icon. Differences related to graphics are described in the Graphics section.
Like Version 9 of Icon, Jcon uses an 8-bit superset of ASCII. Jcon does not use Java's Unicode character set.
Conversion of real numbers to strings produces more digits than Version 9.
Standard error output (&errout) is always unbuffered.
The standard files &input, &output,
and &errout cannot be accessed randomly using
seek() and where().
Processes run by system(s) or open(s,"p")
do not inherit &input, &output,
and &errout.
Except for the case of open(s,"wp"), where it is provided
by the program, &input is always empty.
The two output files, &output and &errout,
are copied from the process after it terminates.
Random selection from sets and tables differs from Version 9, even with the same random seed.
Jcon is not always consistent with Version 9 when it encounters large integers in unsupported contexts such as subscripting.
&features includes "Java".
A corresponding preprocessor symbol _JAVA is predefined.
&time produces elapsed wall-clock time, not CPU time,
due to Java limitations.
&allocated, &collections,
&storage, and ®ions
produce only zero values.
The functions chdir(), getch(),
getche(), and kbhit() are not implemented.
The functions getenv() requires the presence of the utility
env in the shell search path.
The implementation of loadfunc() is described
in the Dynamic Loading section.
link directives must give a simple name, not a path.
Under Jcon, any reference to a procedure renders it invocable
(callable by string invocation).
In version 9, only procedures reachable from main()
are made invocable by default.
Most debugging features require compilation with the
-f d switch.
Programs compiled with default options cannot be traced, cannot use error
conversion (&error), and produce an abridged traceback
if an error occurs.
Only global variables are available to
variable(), display(), and &dump.