Version 5.0
-----------
* Animation curves and support of animation in all display devices.
* Many new flags to the display device (as well as new display devices).
* New constants for DEPTH (for trivariates), TRIMSRF_TYPE, TRIVAR_TYPE.
* Format of OFFSET and AOFFSET is slightly modified.
* LOGFILE can change files during IRIT session allowing for writing data
  files on the fly.
* ECHOSRC/DUMPLVL variables were replaced with EchoSource and DumpLevel
  IRITSTATE options.
* PAUSE was renamed into a macro.
* Figures in user manual!
* Programmer's manual (actually more like a reference programmer's manual).
* Periodic curves/surfaces are supported.
* any object with prefix of VIEW_MAT/PRSP_MAT is recognized as these
  important matrices. A complete match used to be required in the past.
* COPLANAR, INTERCRV, and POLYSORT are retired as variables and are now
  set via IRITSTATE.
* New filter dat2bin to convert between text and binary data files.
* New filter irit2iv - irit to SGI's Inventor ascii format.
* The config package prints the command line flags on all tools. New
  config file to illustrt.
* Created a symbolic lib out of cagd lib to hold all symbolic computation.
* Add adaptive routines to subdivide a surface into polygons. The whole
  scheme of srf->polygons was changed accordingly.
* Fix a bug in printing of data in +/-xxx+/-Eyyy format.
* Add "IllustrtNoProcess", "SpeedWave, and "HeatWave" attributes to
  objects in input stream of illustrt.
* Fix a minor bug in irit help document generator in math formulas.
* Fix a minor bug that introduces a return variable from user defined
  functions. Also add debug of user defined functions via IRITSTATE.
* Fix a loop in the list structure when one does "obj = list(obj, obj2);"
* New IRIT commands
  + C/SREPARAM - affine reparametrization of curves and surfaces.
  + PCIRCLE - A polynomial curve approximation of circle.
  + SCRVTR - curvature bounds for surfaces.
  + COERCE - has added semantics for E1/P1 coercetion to E2/P2 for curves and
    to E3/P3 for surfaces.
  + SURFPREV - a polynomial approximation of surface of revolution.
  + IRITSTATE - a unified state modification routine.
  + GPOLYLINE/GPOLYGON are slightly modified with more options.
  + CEVOLUTE - exact computation and rep. of an evolute of a curve.
  + GETLINE - read stdin and construct proper objects from it.
  + LOFFSET - another offset variation.
  + FFEXTREME - Comutes extreme values of curves and surfaces.
  + ERROR function - Error abort functions to be used from user defined funcs.
  + MSLEEP function - millisconed sleep function.
  + CMULTIRES function - Least squares multiresolution decomposition of curves.
  + CMORPH function - curve morphing.
  + RANDOM function - random values function.
  + New format to OFFSET and AOFFSET.
  + PDOMAIN supports trimmed surfaces and trivariates.
  + TRIMSRF constructs a trimmed surface.
  + CTRIMSRF extracts trimming curves from trimmed surfaces.
  + STRIMSRF extracts the surface of a trimmed surface.
  + STRIVAR extracts a surface from a trivariate function.
  + TBEZIER constructs a trivariate Bezier function.
  + TBSPLINE constructs a trivariate Bspline function.
  + TDERIVE differentiates a trivariate function.
  + TEVAL evaluates a trivariate function.
  + TREFINE refines a trivariate function.
  + TREGION extracts a region out of a trivariate function.
  + TDIVIDE subdivides a trivariate function.
  + C/S/TINTERP - a new Bspline interpolation/least squares approximation for
    curves, surfaces, and trivariates.
  + CLNTEXEC/CLNTREAD/CLNTWRITE/CLNTCLOSE - set of routines to communicate
    with several clients. See clients.irt.
  + MOMENT - compute moments of curves.
* Fix a minor bug of profiling an E2 curve with E3 point.
* LISTSIZE was renamed into SIZEOF and supports lists/polys/curves ctlpolys.
  Surface ctl mesh is supported via MESHSIZE.
* SWEEPSRF is split into SWEEPSRF and SWPSCLSRF with more functionality
  and the elimination of the torus bug.
* More overloaded operators:
  CtlPt * Matrix -> CtlPt
  Overloaded unary '-' on a list object reverses the list object.
* Transformations of CtlPt works as it should.
* Surfaces/Curves/Profiling can have different ctl points or even regular
  points.
* rmattr can now remove attributes created by attrib. Objects can be
  attributes as well.
* Objects are read in the proper order - same order as input stream.

Version 4.0
-----------

* New -H flag to poly3d-h to allow dumping the HIDDEN data (with different
  color/attributes...), -q to run quietly, -o for output file.

* If clause was made much more reasonable by defining comparison and
  Logical operators (<, >=, &&, ||, etc.).

* Function definition is available (ALIAS is retired). See function/procedure
  in docs and function.irt. See plotter.irt for a nontrivial example.

* Assignments need not be within parenthesis any more. Preceding is
  properly set now.

* New variables are allowed in loops now.

* MSDOS is not really supported (I left DJGCC ifdefs intact although it is
  not tested any more.). EDIT command retired, SYSTEM command modified.
  The main reason is that IRIT can no longer be built in the BC Large model
  and the Huge model will consume pretty much the entire 640k...
  If you have the ability (I do not) to build MSDOS applications with dos
  extenders, and willing to dive in, please let me know.

* The good news is that both OS2 2.x and Window NT 3.1 are fully supported.

* A whole new scheme of display drivers was developed. The display driver is
  a different process. As a result NORMAL, VIEW & INTERACT, BEEP, CLOSED
  functions are retired, and VIEWOBJ controls the display via VIEWxxxx user
  defined functions (in iritinit.irt).
	BEEP, VIEW and INTERACT functions are emulated in iritinit using a
  user defined function. NORMALs as well as other view states can be set via
  user defined function VIEWSTATE.
	poly3d was retired and is replaced by the display drivers which 
  accepts command lines. In other words, the graphics device driver serves as
  display program as well.

* Sweep has a new fourth parameter to allow setting normal of orientation
  (pseudo frenet) frame.

* New line illustration tool - illustrt.

* Lists can now be in any length and are updated dynamically.

* Attributes now can handle spaces by quoting the data:
  attrib( obj, "rgbcolor", "255 0 255" );
  see attrib command for more.

* New filter irit2xfg - IRIT to xfig.
* New filter irit2plg - IRIT to REND386 polygonal format
* New filter irit2scn - IRIT to scn (close to nff format).
* New filter irit2dxf - filters to/from DXF. Not fully functional.
* New filter dxf2irit
* New filter irit2ps  - more versatile filter to PostScript.
* New IRIT commands
  + THISOBJ - returns the type of the object.
  + PRINTF - a formatted printing routine, C printf style.
  + BOOLONE - using a single closed curve subdivided into four segments
							as bool sum input.
  + BSP2BZR - convertion from Bspline to Bezier curves/surfaces.
  + BZR2BSP - convertion from Bezier to Bspline curves/surfaces.
  + FFCOMPAT - making two curves/surfaces compatible (required for
							SMORPH morphing code)
  + HOMOMAT - low level homogeneous matrix constructor.
  + SDERIVE/CDERIVE - compute derivatives.
  + SMERGE - merge two surfaces into one.
  + SMORPH - A convex blend between two compatible surfaces (3d morphing).
  + SNRMLSRF - surface normal.
  + SYMBPROD/SYMBDPROD/SYMBCPROD/SYMBSUM/SYMBDIFF - a whole set of
					         symbolic computation tools.
  + CZEROS - find the zero set of a curve.
  + CEXTREMES - find the extreme set of a curve.
  + NIL - returns an empty list.
  + LISTSIZE - returns the size of a list/poly list/vertex list.
  + COORD - extract a single coordinate from an object.
  + AOFFSET - adaptive, error bounded, offset (slow!).
  + COERCE - coercion of objects.
  + COMPOSE - curve curve and surface curve symbolic composition.
  + PRISA - planar layout of surfaces.
  + CINFLECT - find the inflection points of a curve.
  + CCRVTR - curvature properties of curves.
  + CCINTER - curve curve intersection function.
  + POLY - can accept point and ctlpt types. Has a new second polyline/gon
							       parameter.
  + ADAPISO - adaptive isocurve extraction.
  + CRVPTDST - nearest point on a curve to a point solution (min dist param).
  + CRVLNDST - nearest point on a curve to a line solution (min dist param).
  + PDOMAIN - returns the parametric domain of a curve or a surface.

* Ability to dump UV values of vertices of polygons created from freeform
  surfaces (mainly for 2D texture mapping). See CagdSrf2Polygons and skeleton
  example in iritfltr directory.

* ATTRIButes can be set to any object, not just geometry. attributes names
  are case insensetive. 

* POINTs and PLANEs are now supported objects as well. VECTORs, POINTs,
  CTLPTs are also displayable objects.

* color() and attrib() now can work on lists, in which all elements
  in list will be appropriately updated.

* More overloaded operators:
  String + String -> String
  String ^ Real -> String
  String + Real -> String
  Point  + Vector -> Vector
  Point  * Real -> Point (Scale)
  Point  * Mat -> Point (Transform)
  -Point -> Point (scale by -1)
  -Plane -> Plane (scale by -1)

* New irit configuration variable - FloatFrmt.

* New prsp_mat variable.

* Coplanar polygons are now handled. See coplanar variable and solid2.irt
  for example.

* Boolean opeartions are almost three times faster using bbox and sorting
  optimizations! See polysort variable.

* All utilities now support '-' for stdin read. Under unix, compressed data
  is properly handled (via fork of compress and zcat). For example
  poly3d-h example.dat.Z | irit2ps - > example.ps

* Spline degree raising is implemented using the new symbolic tools.

Here is what is new in version 3.0:
-----------------------------------
1. Normals are fully supported now. Although this increases memory requirements
   (mainly a problem on IBM PC) all files dumped from IRIT now support normals
   as well.
2. A new cut Boolean operation (overloading '/', i.e. C = A / B assigns to C
   the regions in A out B).
   A new merge Boolean operation (overloading '^', i.e. C = A ^ B assigns to
   C all polygons of A and B merged (with no intersection tests.).
3. Support for freeform curves and surfaces (Bezier/NURBS).
   All Boolean are still done using polygonal data the surfaces are converted
   into (No intention to change that in the near future - direct Booleans on
   surfaces requires support of trimmed surfaces and believe me - it is HARD).
   However, quite a few tools to manipulate and maintain the curves and surfaces
   are provided and include:
   a. direct creation of curves and surfaces by specifying control mesh/poly.
   b. evaluation of surface/curve, tangents, normals.
   c. subdivision/refinement.
   d. degree raising (only Bezier).
   e. high level surface creation: ruled srf/extrude/srf of revolution/sweep.
   f. curve constructor out of curve/point pieces.
   g. conversion to polygons of surfaces including normals.
4. Support for SGI 4D systems using gl has been added.
5. lists are much more enhanced now and more functions can now get a list
   of objects where before they could get a single object only (for example
   ability to dump to file/read from file list of objects instead of one).
   This enable merging the *.ply and *.mat into single data files *.dat which
   also include the freeform data (curves and surfaces).
6. Ability to handle closed and open loops within the same polygon (see
   cubes.irt).
7. Much improved documentation.
8. Significant improvement in time of polygonal Boolean operations.
9. Two new variables COPLANAR and POLYSORT.
10. B&W X11 support added ( petern@bion.kth.se  (Peter Nordlund) ).

Version 2.1
-----------
1. Fix problem with Extrude (used to update wrong plane normal), which
   cuased problems in boolean operations.
2. Fix boolean operations causing INTERNAL edges been visible.
3. Fix major memory leak problem (upto %50 less memory usage).

Version 2.0
-----------
1. Program has been ported to unix environment using X11 window system.
   Has been compiled using:
   a. BSD 4.3 using gcc (gnu cc) compiler.
   b. SGI 4d, Irix3.2, using cc.
2. Minor fix in VGA mode.
3. Ability to dump intersection curves instead of the model in geometry
   boolean operation, has been added and is controled via a new variable
   named INTERCRV.
4. Fix severe bug in the convex decomposition (wheel.irt used to be severely
   wrong, o.k. now).

Version 1.1
-----------
1. Full line editing for input line (see irit.doc), including last command
   retrieve.
2. EGA/VGA display device is finally supported.
3. Faster and smaller allocator makes more space and run faster.
