11.4.2 (February 2017)
* Replaced EvalString by Int to convert a string to an integer

11.4.1 (February 2017)
* Added xmlns and version to OMOBJ tag

11.4.0 (February 2017)
* New release after switching to GitHub and GitHub pages
* Replace obsolete Tuple by DirectProductElement
* Switched from READ_COMMAND to READ_COMMAND_REAL (available from GAP 4.8.2)

11.3.1 (February 2016)
* Removed old compatibility code for MACFLOATs

11.3.0 (January 2016)
* Upgraded to work with GAP 4.8
* Fixed the output of integer2.class to work in GAP 4.8

11.2.0 (November 2013)
* Added function EvalOMString which is an analog of EvalString to evaluate
  a string containing an OpenMath object

11.11.5 (October 2013)
* Test output updated to match GAP 4.7.1

11.11.4 (March 2013)
* Cleaned up usage of some obsoletes

11.11.3 (February 2013)
* Updated tests to automate failure detection

11.11.2 (May 2012)
* Improved testing facilities

11.11.1 (April 2012)
* Updated example of OMsymRecord.nums1.

11.11.0 (March 2012)
* Added .ocd files for private content dictonaries, already implemented in
  the package, to the 'ocd' directory.
* Extended usage of floats from GAP 4.5  
* As a result, this version requires at least GAP 4.5 to work.

11.0.0 (October 2011)
* Included bidirectional support for binary OpenMath encoding implemented 
  by Max Nicosia during his internship in St Andrews in Summer 2010, as 
  a result of which Max joined the authors of the package.
* Introduced OpenMathXMLWriter and OpenMathBinaryWriter objects, which
  encapsulate streams and may be viewed as transducers accepting GAP 
  objects and writing them to a stream in the XML or binary OpenMath.
* Changed the first argument of OMPutObject from stream to 
  OpenMathXMLWriter or OpenMathBinaryWriter.
* Removed no longer needed INRIA OpenMath library which was formerly used
  to work with binary OpenMath encoding.
  
10.1.0 (March 2010)
* Switched dev/random -> dev/urandom to prevent the server from blocking
  and waiting for additional entropy to be collected.
* Added permutation1.{action, are_distinct, cycle, cycle_type, domain, 
  endomap, endomap_left_compose, endomap_right_compose, inverse, is_bijective, 
  is_endomap, is_list_perm, is_permutation, length, list_perm, listendomap, 
  order, permutation, permutationsn, sign, support}.
* OpenMath to GAP support for finfield1.{conway_polynomial, discrete_log, 
  field_by_conway, is_primitive, primitive_element} and 
  setname2.{Boolean, GFp, GFpn, Zm}.
* Method to print finite field element as a power of a primitive element 
  of a given field, and adjustment of output for polynomials over finite 
  fields.
* Introduced OpenMathDefaultPolynomialRing to output collections of 
  polynomials.
* OMPrint may accept 1 or 2 arguments to be compatible with 3-argument 
  version of OMPut.
* OMPut for a finite field element using finfield1 CD.
* OMPut for a finite field using setname2.{GFp,GFpn}.

10.0.4 (May 2009):
* Added official symbols semigroup4.automorphism_group and 
  semigroup4.homomorphism_by_generators, and and private 
  monoid1.monoid_by_generators, semigroup1.semigroup_by_generators,
  transform1.transformation to support two-sided conversion of
  transformations, transformation semigroups and their automorphism groups; 
  private symbols record1.record for records and pcgroup1.pcgroup_by_pcgscode 
  for PcGroups.
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
Since 2007 Olexandr Konovalov made several further changes in this package
and after an agreement with Andrew Solomon became its maintainer. The list 
of major updates is below:

* Fixes of names of symbols and their distribution across CDs following recent
  changes in OpenMath CDs. * Multiple additions and updates to support various
  symbols from CDs alg1, algnums, arith1, arith2, arith3, calculus1, 
  comnbinat1, fieldname1, group1, group2, group, groupname1, integer1, 
  integer2, list1, logic1, permgp1, set1. 
  
* Extended support of polynomial CDs.

* Fixed and extended support of OpenMath references.

* Fixed error messages for unexpected_symbol, unhandled_symbol, unsupported_CD
  as required by the 'error' OM CD.
    
* Changes in conversion from GAP to OpenMath:
- introduced OMINT_LIMIT and fixed OMput for integers too large to be printed.
- commented out method for OMPut( <stream>,  <vector> ) to have the default 
  output as list1.list.
  
* OMsymTable turned from the list of nested lists into a record and renamed it 
  to OMsymRecord.

* Removed OMnullarySymbolToGAP, now all lookup is performed by OMsymLookup 
  with no distinction between nullary and n-ary OpenMath symbols.
  
* New functionality:
  - New function OMPutObjectNoOMOBJtags, a variation of the function 
    OMPutObject to write to the stream the OpenMath object without enclosing 
    <OMOBJ> .. </OMOBJ> tags, which may be useful for combining complex 
    objects.
  - New objects OMPlainString which are strings of OpenMath code that are 
    plainly substituted into the output while printing/writing into stream 
    instead of converting to OMSTR, which may be useful for composing OpenMath
    code from GAP.
  - New function OMString to return a string with the OpenMath representation 
    of a GAP object.     
    
* Better organising of handling private CDs/symbols:
  - created directory 'openmath/private' to store implementations of our 
    private CDs and private/experimental symbols (this is also the place where
    users may put their code if they will need to addsupport for their own 
    private CDs)
  - moved to 'openmath/private/private.{g,gi}' code for algnums and cas CDs 
    and for private symbols groups1.group_by_generators, 
    groups1.character_table and groups1.character_table_of_group
  - transformed OM_append into two functions OM_append_new and 
    OM_append_private.

* multiple rearrangements of declaring and assigning global variables and 
  moving of reading *.g files from read.g to init.g to fix errors when 
  OpenMath is loaded as required package from other package.
  
* Converted the manual into GAPDoc format and extended it.

* Various technical changes:
  - updated PackageInfo.g file
  - removed the non-standard banner 
  - removed INSTALL file containig duplicated information
  - added openmatj/gap/buildman.g with utility functions to build the manual
  - rewrote the README file which is also the changelog
  - changed the system of version numbers
  - removed printutil.g since now GAPDoc has printutil.{gd,gi} and replaced in 
    private.g ViewString by StringView as it was renamed in printutil.*
  
Olexandr Konovalov                                               April 2009  

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

The first release of the package was produced in March 2000 by Andrew Solomon 
when he worked at the School of Computer Science, University of St Andrews. 

After agreement with Andrew Solomon, Marco Costantini became the maintainer 
of this package. In June 2004 Marco Costantini made some modifications in 
this package in order to make it usable again:
* provided a PackageInfo.g file as needed by GAP 4.4;
* changed "share package" to "package" as the term "share" became obsolete;
* made slight modifications in the file doc/make_doc;
* added the warning about non-standard compilation.

Later Marco Costantini made the following modifications listed below, which 
were necessary in order to extend the functionality and to fix the bugs, 
and because both OpenMath and the package mechanism of GAP have evolved 
in the meantime:

* file pkg/openmath/gap/gap.g
  - Updated function ``OMnullarySymbolToGAP'' according to the
    current OpenMath CDs.

* added file pkg/openmath/gap/new.g that contains
  - Update to function OMsymTable, according to the current
    OpenMath CDs (for converting from OpenMath to GAP).

* file pkg/openmath/gap/lex.g
  - Added support for XML escaped characters.

* file pkg/openmath/gap/parse.gi
  - Added support for the new OpenMath 2.0 objects that contain
    information inside the OMOBJ tag.
  - Now ``gpipe'' is called using Process instead of Exec 
    (this increases both the performance and the portability).

* added files xmltree.gd and xmltree.gi that contain
  - A function that converts the OpenMath XML into a tree and
    parses it.

* file pkg/openmath/gap/pipeobj.g
  - Added support for conversion of OpenMath objects with binary
    encoding, from OpenMath to GAP.
  - Added support for comment along the streams, between
    OpenMath objects.

* file pkg/openmath/gap/omget.g
  - Now OMGetObject doesn't hang any more when OpenMath object is
    not retrieved.
  - Now OMGetObject closes the files that is has opened.
  - Modified also to avoid using a new temporary directory for
    each call of OMGetObject.

* file pkg/openmath/gap/omput.gi 
  - Updated and fixed functions ``OMPut'' and related, according
    to the current OpenMath CDs.
  - Simplified the code for the OMPutby methods, by introducing
    OMPutApplication and using OMPutSymbol.
  - Added OMPut methods for infinity, a range, a float, Rationals,
    Integers, NonnegativeIntegers (for converting from GAP to OpenMath).
  - Fixed OMPut method for cyclotomics. Now it is correct for
    GaussianRationals and infinity.
  - Added a SetPrintFormattingStatus in OMWriteLine, to fix
    conversion of long objects.
  - Fixed some typos.

* Added file pkg/openmath/hasse/config.g
  - Removed unnecessay INSTALLATION_PATH 
  - Warning about SERVLET

* file pkg/openmath/PackageInfo.g
  - Provided an up-to-date, informative, complete and working 
    PackageInfo.g file.

* file pkg/openmath/init.g
  - Moved here reading of \*.gd files from read.g
  - Removed the outdated stuff

* file pkg/openmath/read.g
  - Now the is clearly indiceted which is the interdependence 
    of the files in the package.
  - Reads the file pkg/openmath/gap/new.g above.
  - Moved reading of \*.gd files to file init.g
  - Converted ReadPkg to ReadPackage
  - Removed banner (moved to PackageInfo.g file)

* added files pkg/openmath/tst/test_new, pkg/openmath/tst/test_new.src, 
  pkg/openmath/tst/test_new.omt
  - Provided a test file.

* file pkg/openmath/doc/openmath.msk
  - Fixed the examples, to make them to look exactly like in GAP.

* file pkg/openmath/README (this file)
  - Updated, added more information and the list of
    modifications.

* files pkg/openmath/examples and pkg/openmath/hasse/example
  - Converted RequirePackage to LoadPackage
  - Added some notes

* in various files
  - Refactored the code, so that the code is splitted into
    several independent modules (see file read.g).
  - Added commands to close all the streams.
  - Modified to fit with the file structure prescribed in the
    ``ext'' manual.
  - various minor changes.

* Now the package loads, and provides conversion from GAP to
  OpenMath, even if the external binary has not been compiled. 
  In this case, if the conversion from OpenMath to GAP is 
  attempted, an informative error message is issued.

Marco Costantini

December 2005, January and July 2006

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  
