Provided by: afnix_3.8.0-1_amd64 bug

NAME

       std-us-notes - afnix installation guide

INSTALLATION GUIDE

       This  chapter  describes  the  installation  procedures for the  AFNIX  writing system distribution. This
       chapter explains how to set and compile this distribution.

       Software distribution
       The complete distribution can be downloaded from the AFNIX home page. The result  is  a  complete  source
       tree that is ready for compilation. The distribution contains also the documentation as well as examples.
       The distribution is supported on a variety of platforms as indicated below that can be either 32 bits  or
       64 bits machines. The distribution is also available at the FreeBSD port collection.

       Platform   Processor        Operating system
       Linux      X86-32, X86-64   Linux 3.x, 4.x, 5.x
       FreeBSD    X86-32, X86-64   FreeBSD 8.x, 9.x, 10.x.x, 11.x.x, 12.x.x
       Gnu        X86-32, X86-64   GNU KBSD, GNU Hurd

       Specific  processors  like  the  Alpha,  M68K,  ARM, MIPS, RISCV and SUPERH are also supported on certain
       distributions. The PowerPC (PPC) processor has been discontinued. The Solaris  SPARC  platform  has  been
       discontinued. Do not hesitate to contact the development team for specific processor or platform support.

       Installation procedure
       The core software is written in C++. It has been successfully built with the latest GNU GCC 10. The clang
       compiler has also been  succesfully  tested.  You  will  also  need  the  GNU  Make  package.  With  some
       distributions the command is called gmake. Note that the Makefile hierarchy is designed to operate safely
       with the -jGNU Make option.

       Unpacking the distribution
       The distribution is available as a compressed tar file. Note that the documentation is distributed  in  a
       separate file. The following command unpacks the distribution.

       zsh> gzip -d afnix-src-[version].tar.gz
       zsh> tar  xf afnix-src-[version].tar

       Quick command reference
       The list of commands to execute is given in the example below. A detailed description for each command is
       given hereafter. The make world command is the default command  that  builds  the  whole  tree  with  the
       default compiler.

       zsh> ./cnf/bin/afnix-setup -o --prefix=/usr/local/afnix
       zsh> make status
       zsh> make [-j]
       zsh> make test
       zsh> make install
       zsh> make clean

       With some platforms, the make command should be replaced by the gmake command. The make status command is
       optional and can be used to report the internal value  contents.  In  particular,  the  version  and  the
       installation parameters are reported.

       Configuration
       The afnix-setup command can be invoked to setup a particular configuration. You should have your compiler
       on your search path. Normally, the command given below is enough.

       zsh> ./cnf/bin/afnix-setup -o --prefix=/usr/local/afnix

       This command checks that the target platform can be detected and configured. The -o option configures the
       compilation  in  optimized  mode.  Use  the -g option can be used to configure the build process in debug
       mode. The --prefix option sets the installation directory. Note that the compilation process is  done  in
       the  distribution  tree  and  that  the  --prefix option affects only the installation operations. The -v
       option is the verbose option. Other options are available for fine tuning.

       Option     Description                              Default
       -h         Print a help message                     n/a
       -v         Set the verbose mode                     n/a
       -g         Set the debug mode                       yes
       -o         Set the optimized mode                   no
       --help     Same as -h                               n/a
       --prefix   Set the target install directory         /usr/local
       --shrdir   Set the shared install directory         /usr/local/share
       --altdir   Set the alternate install directory      /usr/local
       --sdknam   Set the target sdk by name               platform dependent
       --sdkdir   Set the target sdk directory             platform dependent
       --ccname   Set the default compiler                 platform dependent
       --shared   Compile and link dynamically             yes
       --static   Compile and link statically              no
       --openmp   Enable the optional openmp compilation   no

       The prefix option set the root installation directory. The binary and  library  installation  directories
       are  derived  from  it.  The  shrdir set the shared installation directory which is normally used for the
       installation of the manual pages on most popular systems. the  altdir  sets  the  alternate  installation
       directory.  Normally  this  path  should be empty as it affects the path for the etc directory. This flag
       should be used when using a prefix to unusual destination. The ccname option  can  be  used  to  force  a
       particular compiler with the help of a compiler configuration file. The -s or --static option can be used
       to build a static executable. Normally, this option should not be used  since  it  restrict  the  use  of
       extension  modules. The shared controls whether or not the dynamic libraries should be built. This option
       is detected automatically for a particular platform and should be used only by package maintainer.  There
       exists  also  specific  options which are mostly for package maintainers. At this time, the build process
       integrates the Debian, Ubuntu and Fedora specific packaging mechanism.

       Option     Description                              Default
       --pkgnam   Set the distribution package             none
       --pkgbin   Set the optional package bin directory   none
       --pkglib   Set the optional package lib directory   none
       --pkgprj   Set the optional package prj directory   none
       --pkghdr   Set the optional package hdr directory   none
       --pkgetc   Set the optional package etc directory   none
       --pkgman   Set the optional package man directory   none
       --pkgdoc   Set the optional package doc directory   none
       --pkgwww   Set the optional package www directory   none
       --pkgsrv   Set the optional package srv directory   none

       Compiling the distribution
       The compilation process is straightforward. With some platforms, the make accepts  the  -j  that  enables
       concurrent operations.

       zsh> make [-j]

       This  will  build  the  complete distribution locally. If an error occurs, it is best to report it at the
       (bugs@afnix.org) AFNIX bug report mail address.

       Testing the distribution
       The distribution contains all test suites. The test suites are compiled and executed with  the  following
       command.

       zsh> make test

       This command run the test suites for each library as well as the test suites for each application client.
       Most of the base library test suites are written in C++ with the application test suites written  in  the
       core writing system.

       Installing the distribution
       Once  the  system  has  been  built and tested, it can be installed. By default, the distribution tree is
       installed into the /usr/local directory. This can be overwritten with  the  --prefix  option  during  the
       configuration process.

       zsh> make install

       There are several variables that controls the behavior of the install rule. Each variable has its default
       value sets during the setup configuration.  However,  this  variable  can  also  be  altered  during  the
       installation process

       Variable   Description                          Default
       PREFIX     The root install directory           /usr/local
       SHRDIR     The shared install directory         /usr/local/share
       ALTDIR     The shared alternate directory       /usr/local/etc
       SDKDIR     The system  kit directory            platform dependent
       BINDIR     The binary install directory         prefix/bin
       LIBDIR     The library install directory        prefix/lib
       HDRDIR     The header files install directory   prefix/include/afnix
       ETCDIR     The extra files install directory    altdir/etc/afnix

       Installing the documentation
       The  documentation  is installed independently of the software. The doc rule builds the documentation and
       the  publish  rule  installs  the  documentation.  Several  variables  also  control  the   documentation
       installation path.

       Variable   Description                           Default
       DOCDIR     The documentation install directory   shrdir/doc/afnix
       MANDIR     The manual pages install directory    shrdir/man

       Cleaning the distribution
       The distribution is cleaned with the clean rule.

       zsh> make clean

       This rule does not clean the configuration. For a complete cleaning the reset rule is more appropriate.

       zsh> make reset

       Running AFNIX
       The  axi  command  invokes the interpreter. In order to operate properly, the LD_LIBRARY_PATH environment
       variable must be configured with the directory containing the shared libraries.  If  the  libraries  have
       been installed in a standard location like /usr/local/lib, there is nothing to do.

       Running some examples
       The  directory exp contains various examples which can be run. Each example is labeled according to their
       use in the volume 1 of the documentation set. Example 0101.als prints the message  hello  world.  Example
       0501.als prints various information about the system configuration.

       zsh> axi EXP0501
       major version number   : 3
       minor version number   : 8
       patch version number   : 0
       interpreter version    : 3.8.0
       program name           : axi
       operating system name  : linux
       operating system type  : unix
       machine size           : 64
       afnix official uri     : http://www.afnix.org

       Special features
       The  build process provides several features that permits to customize the compilation process as well as
       the nature of the final executable. Most of  the  time,  these  options  are  reserved  for  the  package
       maintainer and are given below for illustration purpose.

       Special target extensions
       Extensions  are  specific  libraries  or  executables  which are not build automatically during the build
       process. The user is responsible to decide which extension is needed for the system  All  extensions  are
       located  under  the  src/ext  directory. Simply going into the appropriate directory and running the make
       command will build the extension.  The asi extension creates a  static  interpreter  with  all  libraries
       automatically included in the final executable. The extension is simply build with the following command.
       Note that this extension overwrite the previous executable in the bld/bin directory.

       zsh> make -C src/ext/asi

       Extra files
       The distribution comes with some extra files. The most  important  is  the  Emacs  mode  afnix-mode.  The
       original  source file is written in Emacs Lisp and is available in the etc directory of the distribution.
       This file should be installed according to the current Emacs installation.

MAINTAINER NOTES

       This chapter contains additional notes for the package maintainer. They are also useful for  anybody  who
       is  in  charge of integrating the distribution in a build process. The chapter describes the distribution
       tree with more details.

       The distribution tree
       The distribution tree is composed of various directories. Each of them has a Makefile which can be called
       locally or from the top level.

              cnf
              This  directory contains the configuration distribution and various utilities. Normally you should
              not touch it, unless you are using a compiler different than gcc.

              src
              This directory contains the complete source tree. The source code is written in C++. Normally this
              directory  is  left  untouched.  If  there  are  good  reasons  to  modify  it, please contact the
              development team.

              tst
              This directory contains the complete test suites. The test suites are  used  by  various  programs
              including  the main interpreter, the compiler and the debugger. It shall be noted that the library
              distribution also includes specific test suites.

              doc
              This directory contains the complete documentation written in in XML with a special DTD. It should
              be left untouched.

              etc
              This  directory  contains various files associated with the distribution. Some files are useful to
              be copied.

              exp
              This directory contains various examples. They are included for illustration purpose.

       The process of building a package solely depends on the distribution  type.  Most  likely,  the  standard
       distribution  should  contain  the  binary  executables as well as some configuration file and the manual
       pages. The documentation and the development header files can put in separate packages.

       Configuration and setup
       The configuration process involves the use of the afnix-setup command located in the  cnf/bin  directory.
       This  command  is  used  to configure the distribution. Package maintainers are encouraged to use it with
       specific options.

       Platform detection
       The afnix-guess command is used during the configuration process to detect  a  supported  platform.  This
       command  can  be  run  in  stand-alone  mode. Various options can be used to tune the type of information
       requested.

       Option   Description
       -h       Print a help message

       -n       Print the platform name
       -v       Print the platform version
       -M       Print the platform major number
       -m       Print the platform minor number
       -p       Print the processor name

       Without option, the utility prints a platform and processor description string.

       zsh> ./cnf/bin/afnix-guess
       linux-5.4-x64

       Platform defaults
       The directory cnf/def contains a platform specific default file. The file determines what is the  default
       compiler  and  linking  mode.  This  file  is  used  by  the afnix-setup command. For example, the afnix-
       darwin.def file contains:

       compiler: gcc
       lktype  : dynamic
       lkmode  : dylib

       Such options instructs the configuration utility, that the default compiler is gcc and the  linking  mode
       should operates in dynamic mode by using the dylib rule. These default values can be overwritten with the
       equivalent option of the afnix-setup command. Note that the compiler version is automatically detected by
       the  system.  The  afnix-vcomp command will return the appropriate compiler version running on the target
       system.

       C++ source file conventions
       THe source tree has two types of C++ files. The first type has the extension .cxx and the second type has
       the  extension  .cpp.  The  .cxx  --  and the associated .hxx -- files are only used to indicate a system
       dependency. These files are found only in the src/lib/plt directory. The .cxx  extension  indicates  that
       the  file  might  use system specific include files. The .cpp -- and the associated .hpp -- files are the
       normal C++ source files. The .cpp extension is used to indicate that these files will not  use  a  system
       specific  file.  By  default  this rule is enforced in the compiler configuration file by specifying some
       compiler flags which do not authorize such access.

       Configuration files
       The configurations files are located in the cnf/mak directory. Normally they should  be  left  untouched.
       The most important one is the afnix-rule.mak file that defines most of the compilation and linking rules.
       Additionally, during the setup operation, the afnix-setup command creates several files  in  the  bld/cnf
       directory. The bld is the build directory. The afnix-plat.mak file is the platform configuration file and
       the afnix-comp.mak is a link to the appropriate compiler configuration file.

       Compilation
       Normally, the compilation process is immediate. Just invoking the make command will do the job.  However,
       some  package maintainer have the desire to overwrite some flags. Some options are provided to facilitate
       this task.

              EXTCPPFLAGS
              This flag can be used to add some compilation flags for all .cpp files.

              EXTCXXFLAGS
              This flag can be used to add some compilation flags for all .cxx files.

              EXTCCDEFINE
              This flag can be used to add some compilation definitions for all source files.

              EXTINCLUDES
              This flag can be used to add some compilation paths for the .cxx files.

       For example, it is common to have some maintainer to compile with both the debug and optimize flags. This
       can be done with the following command (assuming an optimized configuration):

       make EXTCPPFLAGS=-g EXTCXXFLAGS=-g

       All  include  files,  compiled  libraries and executables are placed in the bld directory. This directory
       contains the bld/bin for binaries, bld/lib for libraries and bld/hdr for the header files.

       Building the package
       The package can be built by accessing the bld directory or by  invoking  the  install  rule.  The  second
       method is not recommended for package construction, since it might trigger some file installation without
       any control.  The etc/unx directory contains some special files  that  might  be  used  for  the  package
       construction. A sample list of them is given hereafter.

              afnix-mode.el
              This file is the Emacs mode.

              afnix-gud.el
              This file is the debugger Emacs gud mode.

       Specific makefile rules
       The top level Makefile contains several rules that might be useful for the package maintainer.

              status
              This rule show the configuration status for each parameters with the version.

              debug
              This rule invokes the default configuration in debug mode.

              optimized
              This rule invokes the default configuration in optimized mode.

              build
              This  rule invokes the default configuration in debug mode and compile the whole distribution. The
              default install directory is /usr/local.

              world
              This rule invokes the default configuration in optimized mode and compile the whole  distribution.
              The default install directory is /usr/local.

              test
              This rule runs all test suites.

              doc
              This rule builds the documentation.

              distri
              This rule builds the distribution.

              install
              This rule installs the distribution.

              publish
              This rule installs the documentation.

              clean
              This rule cleans the distribution but keep the configuration.

              reset
              This rule resets the distribution including the configuration.

RELEASE NOTES

       This chapter contains the release notes for the different releases. Release notes are given in descending
       order for a particular version. The standard notation is major.minor.patch which represents respectively,
       the  major,  minor and patch number. A major version number changes indicates a substantial change in the
       distribution, including new tools, application interface and  license.  A  minor  version  number  change
       indicates  noticeable  change,  with  or  without  new tools but without application interface change nor
       license change. Finally, a patch number change indicates a simple change to  fix  problem.  There  is  no
       additional features in a patch nor an application interface change.

       Release 3.8

              Core engine: release 3.8.0
              This  is  a  medium  release  in line with the previous release which integrates some funcdamental
              restructuring of the core interpreter in preparation for distributed execution. The module  object
              has been refactored as well as the debugger.

              Core engine: hyper threaded interpreter
              A  new object called an hyper-threaded interpreter which operates with a grid provides a mechanism
              to executes module inside an executing interpreter. This is still an experimental technology.

              Core modules: tcz service
              The csm service has been refactored as a transmutable content zone service.

       Release 3.7

              Core engine: release 3.7.0
              This is a medium release in line with the previous release which integrates various extension  and
              cleanup before major release 3.8 scheduled for the end of the year.

              Core engine: new special forms and continue
              Two new special forms, break and continue, have been added to control loops.

              Core modules: gfx module
              The  graph  module  has  been  revisted  with  numerous cleanup. A new state machine object called
              Automaton has been added.

              Core modules: sys module
              An absolute wait time call has been added to act as a timer.

              Core modules: nwg module
              A new class called Iso has been added. In particular, support for ISO 3166 has been added.

       Release 3.6

              Core engine: release 3.6.0
              This is a medium release which integrates a lot of  cleanup  as  well  as  the  beginning  of  the
              integration  of  the  tls  service.  The  unicode  database  has been updated to the latest 14.0.0
              release. Some objects have been completely refactored, including base string vector.

              Core modules: mth module
              Algebra with complex number has been added including computation algorithm with Hilbert space.

              Core modules: nwg module
              The json reader/writer has been enhanced to support plist.

              Core modules: sec module
              The pkcs signature algorithm has been added. It is designed for the support of ephemeral  Diiffie-
              Hellman in the tls service.

              Core services: tls service
              The tls service has been enhanced to support ephemeral Diiffie-Hellman. The integration of the tls
              inside applications will be able to start.

       Release 3.5

              Core engine: release 3.5.0
              This is a important release which integrates numerous objects that were  long  overdue,  including
              the  support for complex numbers and numerous code cleanup. An undetected (until now) interlocking
              bug in the string split method has been discovered and fixed. Various encoding bug have also  been
              fixed including one in the readline method.

              Core modules: mth module
              Prime  number  generation  has been improved for speed, especially with safe prime. The quaternion
              object has been added.

              Core modules: nwg module
              Form encoding and decoding has been enhanced. A json reader/writer has also been integrated.

              Core modules: sec module
              The dsa pki has been added with support for dsa parameters. The dh key support has been added. The
              concept of key configuration and renewal has been added.

              Core modules: xml module
              The  module  has  been cleaned for simplex reader/writer design. The node formating generation has
              bee enhanced with indentation support.

              Core services: tls service
              Pkcs8 support has been added with a better integration of key generation. Server name in extension
              is now supported.

              Core services: csm service
              Datum  and  magma parts have been added along a general service cleanup. The concept of transmuter
              has been developped as a mixture interface. The blob view construction has been revisited.

       Release 3.4

              Core engine: release 3.4.0
              This is a a minor release which integrates more support for the tls  service.  Safe  prime  number
              generation  has  been  added.  The  assert  special  form has been enhanced to better support real
              testing.

              Core modules: mth module
              Real vector, point and matrix of size 1,2,2 and 4 has been added.

              Core modules: sec module
              The gcm mode has been added. The elliptic curve objects and its  associated  arithmetic  has  been
              integrated. Tests with the standard curves have been incorporated.

              Core modules: sys module
              The date and time object have been enhanced to support extended time with real precision below the
              second. A now constant is also available for setting the current date and time.

              Core services: tls service
              The aes-gcm mode has been added as a cipher.

              Core services: phy service
              Direct access to physical constants has been  added.  The  unit  string  representation  has  been
              enhanced to support the scaling factor.

       Release 3.3

              Core engine: release 3.3.0
              This  is  a  major  release  with a complete re-factoring of the interpreter evaluation hierarchy.
              Internally, some objects are being rewritten with a c++/17 semantic. Many objects have  also  been
              optimized  to  support  very  long  strings.  The  serialization coding has also been revisited. A
              serious bug with negative proleptic date has been fixed. Another bug with the object iterator  has
              also been fixed.

              Core engine: Unicode 13.0.0
              The Unicode standard, revision 13.0.0, has been incorporated in the core engine.

              Core engine: asynchronous evaluation
              The  special  form  future  creates  a special object called a future which is used to evaluate an
              object asynchronously. The evaluation starts with the help of the force  special  form.  The  sync
              special form can be used to synchronize with the future.

              Core modules: mth module
              The  numeral  block  has  been enhanced to support row/column order and line/block padding and the
              interface has been considerably enhanced.

              Core services: phy service
              The Unit object has been added to support the definition of physical unit.  The  physic  constants
              and the periodic table has been re-factored.

              Core services: dip service
              The  geo  service  has  been removed and the image objects have been moved to a new service called
              dip.

       Release 3.2

              Core engine: release 3.2.0
              This is a minor release issued for synchronization with other projects.

              Core engine: Numeral object
              The numeral object has been completely re-factored including the api at the math module level.

              Core modules: nwg module
              A generic json writer has been implemented  and  the  corresponding  json  mime  object  has  been
              updated.

       Release 3.1

              Core engine: release 3.1.0
              This  is  a major release which new standard objects as well as the first distribution of the tls.
              Release 3.0 was an internal release  which  is  will  not  be  publicly  distributed.  The  debian
              distribution  has  been  fully  integrated  and  the  build  system  revisited  to account for new
              platforms.

              Core engine: Unicode 12.1.0
              The Unicode revision 11.2.0 has been incorporated in the core engine.

              Core engine: Task and structure
              The core engine has been enhanced to support the concept of task. A Task is similar  to  a  thread
              object,  but  can  be  used  directly  at  the api level. A new Structure object has been added to
              support object aggregation. engine.

              Core modules: net module
              The buffer read and socket sapf (socket address protocol family)  have  been  fixed.  The  Autocom
              object has bee added to support socket re-connection.

              Core modules: nwg module
              The IPV6 address representation in uri has been fixed. The Hyperlink object has been added.

              Core modules: geo module
              The Netpbm object has been fixed for inconsistent block delete. The Pixmap stride has been fixed.

              Core modules: sec module
              The  Sha-3  family  of hashers has been added. The Kdf2 function has bee refactored to support the
              Pbkdf2 standard. Support for Galois field has been added. The Gcm cipher has been added.

              Core modules: sps module
              The csv split and validation process has been added. The Transit has been revisited.

              Core modules: mth module
              The integer vector object Ivector has been added. The float vector Fvector has been added.  Random
              vector generation has been added.

              Core modules: sys module
              System wait on kill has been added.

              Core services: csm service
              The csm objects have been considerably re-factored. Notably the Part and Blob objects.

              Core projects: adp project
              The  standard  documentation  processor has been enhanced with more option for better distribution
              support.

       Release 2.9

              Core engine: release 2.9.3
              Immediate release which fixes a potential deadlock in the output stream object.

              Core engine: release 2.9.2
              Small revision release with small allocator fixes, doc improvements and  32  bits  inconsistencies
              removal.  The  support for 'clang' compiler has been updated as well. A patch with support for the
              RISCV processor has also been incorporated.

              Core engine: release 2.9.1
              Small revision release with minor improvements for IPV6 address support.

              Core modules: nwg module
              The Uri object has been enhanced to support numerical ip address notation with brackets.

              Core modules: net module
              The Address object has been enhanced to support numerical ip address detection.

              Core engine: Unicode 11.0.0
              The Unicode revision 11.0.0 has been incorporated in the core engine.

              Core engine: serialization revisited
              The core engine serialization has been revisited to account for a larger  number  of  modules  and
              services.

              Core engine: default hash revisited
              The core engine hash function is now based on the Fowler-Noll-Vo algorithm.

              Core engine: logger object revisited
              The core engine logger object has been completely redesigned with a simpler interface.

              Core modules: nwg module
              The base 64/32/16 codec have been added as a single object Basexx.

              Core modules: sec module
              The security module has been enhanced with a new signature base class.

              Core modules: wgt module
              The  widget  module  has  been  added  to the core distribution. At this time, the module contains
              expressable and conditional objects.

              Core services: csm service
              The content session management service has been largely refactored.

              Core services: geo service
              The geometry service has been enhanced to support image and pixmap.  A  netpbm  reader/writer  has
              been added as well.

       Release 2.8

              Core engine: release 2.8.3
              Release with GCC 8 support.

              Core engine: release 2.8.2
              Intermediate release with GCC 8 support.

              Core engine: release 2.8.1
              Incorporated patches for GCC 7.

              Core engine: Unicode 9.0.0
              The Unicode revision 9.0.0 has been incorporated in the core engine.

              Core engine: Collectable objects
              The  Collectable  object  is  now being deployed inside the engine. A colletable object provides a
              release method which can be used to remove links between object.

              Core engine: full dupleix stream
              A full dupleix object has been added as a generic object. A full dupleix stream  is  provided  for
              certain  class of object like the network socket. The default mode of operations remains the half-
              dupleix stream since stream access are protected by mutexes.

              Core modules: mth module
              The math module incorporates an infix notation parser module. This is a preliminray work suppoosed
              to  grow  over the next releases. The mean, covariance and univariate regression has been added as
              objects.

              Core modules: sps module
              The bundle object literal index has been updated to follow the bundle length.

       Release 2.7

              Core engine: release 2.7.0
              Minor platform updates. This is an internal release in preparation for the 2.8.0 release.

              Core modules: net module
              Revisit socket options and parameters

              Core services: csm service
              Minor fixes with the agent accessor.

       Release 2.6

              Core engine: release 2.6.3
              Incorporated patches for GCC 6.

              Core engine: release 2.6.2
              Incorporated patches for Debian issued by maintainer.

              Core engine: release 2.6.1
              Fixed the FreBSD build.

              Core engine: release 2.6.0
              This is the relase 2.6.0. The code has been updated to better support  c++/11  for  both  gcc  and
              clang.

              Core modules: xml module
              The  processing  of character entity reference has been substantially changed to adhere fully with
              the xml specification.

              Core modules: sps module
              The spreadsheet importer has been updated and a csv reader has been added. The importation process
              has also been revisited.

              Core modules: sec module
              The security module has been updated to support the tls. This include moving to a 6 bits mersenne-
              twister and adding a certificate block.

              Core modules: mth module
              The normal deviate has been added.

              Core services: geo service
              A new geometry service has been adedd to the distribution.  This  provides  support  for  modeling
              various shapes and solids.

              Core services: cda service
              The streamable objects has been added to the crowd data analytics service.

       Release 2.5

              Core engine: release 2.5.2
              This  is  the  relase 2.5.2. The release includes support for the GCC 5 / CLANG 5 compilers suite.
              Thank's to Martin Michlmayr for pointing this out.

              Core engine: release 2.5.1
              This is the relase 2.5.1. This is an emergency release  that  fixes  a  bug  in  the  uri  percent
              encoding which can be downloaded from here . It's amazing that it was not found before.

              Core engine: clang compiler with C++11 support
              The  system  infrastructure has been cleaned to support the clang compiler. The code has also been
              cleaned to support the C++11 standard which is now the compilation default.

              Core engine: standard library
              A Style object to support ina generic  way  the  formating  operation  for  the  literal  objects.
              Consequently,  most  of the literal objects have been cleaned and now support a format method that
              operates with a Style argument.  The  PrintTable  object  has  been  enhanced  to  support  column
              extension and column style.

              Core modules: mth module
              The  ln method is now the standard prefered name for the natural logarithm. Several bugs have been
              fixed in the real matrix implementation with respect to the openmp implementation.  A  new  solver
              based  on  the  Modified  Gram-Schmidt algorithm. has been added. Note also that the direct solver
              interface has been updated.

              Core modules: nwg module
              The Uri class has been enhanced to support partial uri path extraction.

              Core modules: sps module
              The spreadsheet module has been considerably overhauled. A new object Lstack has been added  as  a
              literal stack which can be bound to the cell as a literal array. The sheet formating has been also
              revisited to make profit of the new Style object has well as the printable transformation.

              Core modules: sys module
              The Meter object has been added as a mean to help for the performance measurements.

              Core module: xml module
              The unicode conversion with reference has been updated to adapt itself to  the  stream  or  buffer
              encoding during a write process.

              Core services: phy service
              A preliminary set of nuclear physics constants have been added.

              Core services: csm service
              The Workspace object has been enhanced to support output stream.

              Core services: web service
              A  JsonMime  object  has  been added. It is designed to translate various object into a Javascript
              object notation format. At this time, only the real data samples Rsamples object is supported.

       Release 2.4

              Core engine: unicode 6.3.0
              The Unicode 6.3.0 database is now supported in this release.

              Core engine: containers
              The standard object incorporates an alias table which enables the mapping of property  name  in  a
              plist.  The  Trie  object has been enhanced to support a reference index. The trie name mapping is
              now obtained with the to-names method.

              Core engine: parallel support
              This release incorporates an experimental support for OpenMP. The OpenMP  threads  are  compatible
              with  the afnix threads and support is initially available in the math module. This option must be
              enabled explicitelly in the build setup to be effective.

              Core engine: crowd service
              The session user registration id has been enhanced. The concept  of  crowd  service  is  available
              throuh  the  generic Xaas object, and more specifically with the Saas object. The Workspace object
              has been enhanced with a public zone.

              Core modules: sio module
              The Intercom object has been enhanced to  support  a  buffered  serialization  which  was  somehow
              mandatory when operating in udp mode.

              Core modules: net module
              Numerous deadlocks in the socket class have been fixed as well as udp inconsistencies.

              Core modules: mth module
              The  Qmr  Krylov  solver  has  been  added  as  part  as  the  iterative solver family. The krylov
              convergence test has also been improved. The Qr solver has been added as part as the direct solver
              family.  The  sparse  matrix  has  been  enhanced  to support a generic iterator. The whole solver
              architecture has been revisited and is now a class based architecture with a type driven  factory.
              Numerous bugs have been fixed. Vector and matrix now support row permutations.

       Release 2.3

              Core engine: release 2.3.2
              This is the relase 2.3.2. The release fixes the real samples array serialization.

              Core engine: release 2.3.1
              This is the release 2.3.1. Release 2.3.0 was an internal work which has not been distributed.

              Core engine: interpreter line read
              The interpreter object can read a line or a passphrase from the attached terminal.

              Core engine: interpreter daemon and librarian
              The interpreter can be put in daemon mode. This mean that a new detached processed is spawned with
              the interpreter attached to it. The librarian has been simplified and the loader integrated inside
              the interpreter.

              Core engine: input stream
              The input steam nom implements a stream consumption method designed to accumulate a stream content
              into the stream buffer. Subsequently, the buffer can be converted into a string. The serialization
              of eos has been fixed.

              Core engine: string resolver
              The  resolver has been enhanced to map a file into a string. This methodology also applies to file
              present in a librarian.

              Core engine: property list
              The Plist object has been enhanced to better support the merging operation.

              Core engine: unicode 6.2.0
              The Unicode 6.2.0 database is now supported in this release.

              Core modules: mth module
              The real matrix and  vector  implementation  has  been  redesigned  to  support  a  unique  sparse
              representation. The serialization has also been added to these objects.

              Core services: csm module
              The crowd object set has enhanced with an intercom crowd object which simplify the transmission of
              registered crowd object. A cart and a cart set object have been added as a  mean  to  store  crowd
              object.  The  session object and sessions set objects have been added. The session object has been
              enhanced to produce the associated session cookie, with an augmented session closing mechanism.

              Core modules: nwg module
              The UriPath object has been added as a uri path manipulator for http server.

              Core services: phy service
              The silicon energy gap has been fixed to the standard value. The periodic table structure has been
              revisited.

              Core services: wax service
              The  xhtml  form elements have been added to the service. A base element class has been also added
              to almost all elements. The base class provides support for setting the common element attributes.

       Release 2.2

              Core engine: hurd platform
              The Hurd platform is now supported in this release. Thanks to our contributor for delivering  this
              new platform.

              Core engine: unicode 6.0.0
              The Unicode 6.0.0 database is now supported in this release.

              Core engine: object updates
              The  lexical analyzer is now an object in its own. It can be used to construct other object from a
              string description.

              Core modules: mth module
              An  automatic  linear  system  verification  has  been  added  to  the   linear   solver.   Jacobi
              preconditionner have been added to the Krylov solvers and Newton solvers have been improved.

              Core services: phy service
              The  periodic  table of the elements is under construction and should be completed soon. The table
              will provides the information for  each  elements,  including  name,  symbol  and  other  physical
              constants.  The  suport  for  intrinsic  carrier concentration is now available. This is a cryptic
              feature for people working on semiconductors.

       Release 2.1

              Core engine: superh processor
              The SuperH processor is now supported in this release. The SuperH is a 32 bits processor.

              Core engine: nan real number
              The implementation now supports the concepts of Not a Number or NAN as a whole. A real object  can
              set and tested for NAN.

              Core engine: indirect librarian resolver
              The resolver has been enhanced to support indirect librarian reference.

              Core modules: csm module
              The  personnal information management module has been renamed into the crowd session management or
              afnix-csm module.

              Core modules: mth module
              The math module has been dramatically enhanced. The Rsamples object has  been  added  for  storing
              data  samples. Function and polynomial objects have added to support generic function computation.
              The non-linear Newton system solver has been added as an object.

              Core services: svg service
              The Scalable Vector Graphic service has been added. The service provides the support for  the  SVG
              1.1 standard and allows the automatic generation of SVG compliant code.

              Core services: phy service
              The  Physics  service  has  been  added.  The  service  provides  the support for standard physics
              operations. In particular, the most common physical constants are defined in this service.

       Release 2.0

              Core engine: standard objects
              The BlockBuffer object has been added to the standard object library. Furthermore, the Buffer  has
              been  adapted to operate as a base class for the block buffer and the shl method has been added to
              the buffer object as a mean to shift the buffer. As consequence, the default operating mode for  a
              buffer  is  the  BYTE mode. When operating with strings, the UTF8 mode might be more suitable. The
              BitSet object has been renamed to Bitset and the interface has been cleaned. The Vector  has  been
              cleaned. The object-p predicate has been fixed.

              Core engine: thread engine
              The  thread  engine  has  been  completly  redesigned  and  extensivelly  tested on 32 and 64 bits
              platforms. It is no longer a problem  to  operate  with  more  than  32K  threads  simultanesouly.
              Furthermore, the concept of thread pool has been added to the engine. The end-p predicate has been
              added to the thread object to indicate a succesful thread completion.

              Core engine: form reader
              The Reader object has been added as a form reader. The reader parses an input stream and  produces
              a form until the end-of-stream. The Reader provides the support for string based execution.

              Core engine: default librarian module
              The  Librarian  object  has  been enhanced to support the concept of default exeution module. When
              such module and when the interpreter is requested to do so, the  module  is  automatically  loaded
              during the execution.

              Core modules: nwg module
              The HttpProto default version has been move to 1.1 for both the request and response objects.

              Core modules: sio module
              The  InputMapped  class  has  been  enhanced to provide the facility for mapping buffer as well as
              acting as a null character generator. The OuputBuffer object has been added  as  a  buffer  output
              stream.  With the addition of a form reader, the interpreter communication class Intercom has been
              added to the standard i/o module.

              Core modules: xml module
              The XneCond object has been enhanced to support various xml object. The XmlPi has been enhanced to
              support attributes derivation from the string value.

              Core modules: itu module
              The  itu module is a new module. It has been added with a complete support for the ASN.1 standard.
              ASN.1 is essential for the support of certificates.

              Core clients: axs client
              The axs client has been removed from the core distribution. All of the client functionalities  are
              now available in the spreadsheet module.

       Release 1.9

              Core engine: object unreference
              The long awaited unref reserved keyword has been added as a mechanism to unreference a symbol.

              Core engine: object predicate
              The  object-p  predicate  has been added as a standard predicate. The predicate is the negation of
              the nil-p standard predicate. The method-p predicate has also been added as a standard predicate.

              Core engine: stop/resume parsing
              The file stream parsing has been enhanced with the help of the stop ◀  and  resume  ▶  characters.
              When  the  stop characters is found, all parsing operations are suspended until a resume character
              is found.

              Core engine: extended exception attribute
              The about symbol has been added to the exception object as extended exception reason. For a  given
              reason, the file name and line number is added to the exception reason.

              Core engine: string objects
              The  Strvec  string  vector  class has been added to the core library. The class is similar to the
              Vector class except that it operates with strings and provides additional strings related methods.

              Core engine: counter object
              The Counter object has been added as a reserved  object.  The  counter  is  designed  to  be  used
              directly in loop.

              Core engine: library cleaning
              The  core  library  has  been  extensively  cleaned  in preparation for the next major release. In
              particular, numerous memory leaks have been removed and some classes derivations have been  fixed.
              A  major  bug  in  the  closure  argument  counting has also been discovered and fixed during this
              process.

              Core module: sio module
              The Pathname object has been enhanced to detect the type  of  path  associated  with  the  object.
              Additionally, a normalize method has been added.

              Core module: sio module
              The  FileInfo  object  has been added to the module. The class provides an immediate access to the
              principal file parameters such like it size or its modification time.

              Core module: sio module
              The NamedFifo object has been added to the module. The class provides  the  support  for  a  large
              string based fifo with file saving capabilities.

              Core modules: nwg module
              Several  predicates  and functions related to media type conversion have been added to the module.
              In particular, a media type extension conversion has been implemented. The HttpResponse class  has
              been enhanced with several methods for status code checking.

              Core modules: sec module
              Support  for  the  Digital  Standard  Algorithm, (aka DSA) as specified by FIPS-PUB 186-3 has been
              added  to  the  library.  The  implementation  incorporates  several  new  objects  to  manipulate
              signatures.

              Core modules: sec module
              The RC2 block cipher algorithm has been added to the module.

              Distribution: documentation
              The documentation distribution rules have been rewritten and the "publish" rule has been added.

       Release 1.8

              Build process: reset rule
              The distclean top level makefile rule has been renamed as reset.

              Core engine: stream object
              The  stream  engine  has  been  cleaned  with  a new architecture. Two new objects InputStream and
              OutputStream acts as the foundation of this new design.

              Core modules: nwg module
              The HttpProto, HttpRequest and HttpResponse objects have been completely  rewritten.  In  the  new
              model,  both  objects  can  operate  on  the server and client side. The HttpReply object has been
              removed.

              Core modules: sec module
              The Sha224 hash function has been added. This class concludes the implementation of all SHA family
              hash functions. The Des class that supports the DES stream cipher has been added to the library.

              Core modules: xml module
              The  XmlRoot  class has been enhanced in order to ease the declaration node existence verification
              as well as the encoding mode extraction.

       Release 1.7

              Core clients: random engine seeding
              A new option controls the seeding of the random engine. By default,  in  debug  mode,  the  random
              engine  is  not  seeded unless requested by the user. In optimized mode, which is the normal mode,
              the random engine is seeded at initialization.

              Core engine: base number object
              The long awaited base number object has been added. The Number object serves  the  Integer,  Real,
              and Relatif objects. The base number object is designed to ease the task of formatting numbers.

              Core engine: relatif number enhancements
              The  relatif  number  object  has  been  enhanced to support extra methods that are used for large
              number computation. This include the power and gcd computation which are used by the cryptographic
              engine.  In  addition,  the base arithmetic relatif methods have been optimized and certain corner
              bugs in the division fixed.

              Core engine: unicode database
              The core engine has been updated with the new Unicode 5.1.0 database.

              Core engine: serious bugs
              A serious bug in the form synchronize engine that would cause an engine crash when a form  is  nil
              has been fixed.

              Core modules: sio module
              A  new  object called Pathlist has been added to support the manipulation of path list. The object
              is designed to ease the file name resolution in the presence of search path. The module  has  also
              been extensively cleaned.

              Core modules: mth module
              A  new module called afnix-mth has been added to the standard distribution. The module is designed
              to integrate the base mathematical functions and  objects  available  in  the  engine.  With  such
              introduction,  the  random  number  generation  has been moved into this module. Additionally, the
              functions needed to generate prime numbers have been added to this module.

              Core modules: sec module
              A new module called afnix-sec has been added to the standard distribution. The module is  designed
              to  integrate  the  security functions and cryptographic objects. Two new hasher objects have been
              added to the security module. The Md2 object  implements  the  MD2  message  digest  algorithm  as
              described  in RFC 1319. The Md4 object implements the MD4 message digest algorithm as described in
              RFC 1320. The standard key derivation functions KDF1 and KDF2 have  been  added  to  the  security
              module.  The  asymmetric  cipher RSA has also been added to the security module and the Key object
              has been updated to reflect this.

       Release 1.6

              Core engine: object collection redesign
              The core engine has been seriously modified to accommodate for a new object collection system (aka
              garbage  collection). The new system is more robust and provides new mechanism that will permit to
              reclaim cyclic structure as well as destroying global object on demand.

              Core engine: macos x support
              The core engine has been adapted to support the new MACOS X Leopard operating system.

       Release 1.5

              Core engine: unicode 5.0 support
              The core engine continues to be updated in order to better support the Unicode 5.0 standard.  With
              this release, the string normalization scheme is now in place and used by default internally. This
              implies among other things, a better support for multiple diacritics as well as the  beginning  of
              the standard collation algorithm.

              Core engine: log file support
              The  Logger base class has been enhanced to support the generation of a log file. An output stream
              can now be bound to the object.

              Core engine: class defer support
              The concept of class defer object has been added to the  Class  object.  The  defer  mode  is  the
              opposite of the infer mode and provides a mechanism for base class creation.

              Core engine: print table header
              The PrintTable object has been enhanced to support the concept of table header.

              Core engine: exception re-throwing
              The exception object what can be thrown with the reserved keyword throw. This provides a mechanism
              to re-throw an exception.

              Core engine: critical bug with return form
              A critical bug in the core engine affecting the behavior of the return reserved keyword in  a  try
              block  has  been  fixed.  A return form inside a try block was incorrectly generating an exception
              which was subsequently caught by the try block.

              Core modules: net module
              The base network module has been enhanced to better operate with IPV6. In  particular,  when  both
              IPV4  and IPV6 stacks are present and a host name (typically localhost) have an address entry, the
              socket constructor make sure it can build an object. The IPV6 address display has been rewritten.

              Core modules: sio module
              A new object called Pathname has been added  to  support  the  manipulation  of  system  path.  In
              addition,  two  new  functions  mkdir  and  mhdir  have  been  also added to support the directory
              creation, both normally and hierarchically.

              Core modules: nwg module
              The Uri has been dramatically enhanced to conform  to  the  RFC  3986.  In  particular,  the  path
              representation for urn is now working properly. The cookie object has been massaged to support the
              cookie version 1, although it does not seem to be supported (yet!) by the browsers.

              Core modules: xml module
              The xml module has been enhanced with a new parsing system called the simple model. In the  simple
              model, nodes are parsed in a linear fashion. The node content is available in the form of a string
              and its interpretation is at the user discretion.

              Core service: wax service
              The afnix-wam service has been renamed as afnix-wax. The service has also been  updated  with  two
              new  objects,  namely the XmlMime and XhtmlMime which permits to build a mime representation of an
              xml tree. Several xhtml objects have also been added to complete the collection. This include  the
              XhtmlScript for example.

              Core service: xpe service
              The  afnix-xpe  service  has  been  added  as  a new service. The xml processing environment (xpe)
              provides a xml processor that permits manipulate the whole xml tree with the help of  various  xml
              processor features. In particular, the service provides the support for the xml include extension.

              Core projects: apx project
              This  release  incorporates  for  the  first time, the concept of core project, which represents a
              librarian or an application. The first project is the AFNIX protocol extension or apx which  is  a
              message  based  protocol  designed  to  transport  request/reply  messages  within a client/server
              environment.  The  message  is  built  with  the  xml  library  and  the  librarian  provides  the
              encapsulation layer.

              Core projects: amd project
              The  AFNIX media dumper or amd project is a complete application designed to illustrate the design
              of an application. The application permits to dump an uri content into a file.

       Release 1.4

              Core engine: unicode 5.0 support
              The core engine has been substantially changed to support the new Unicode 5.0 standard. As of now,
              the  engine  is  in  place  internally,  but  not  fully  activated.  In  particular,  the  string
              normalization is implemented but not activated. The  next  release  should  incorporate  the  full
              system with a change that should be transparent to the user.

              Core language: instance inference
              An  instance  inference  mechanism -- which is equivalent to the concept of virtual constructor --
              has been added to the core engine. Such system permits to derive top instance from a base instance
              construction.

              Core language: print table object
              The PrintTable object has been enhanced with a dump method similar to the format method.

              Core language: property list object
              The  Property  and  the  Plist  objects  have  been  added  to the standard library. a property is
              name/value pair. The property list object is an iterable object that stores property objects.

              Core modules: xml module
              A new module called afnix-xml has been added. The module provides the foundation for  a  full  xml
              1.0/1.1  support.  The  module  also  includes a parser that permits to build xml tree. A xml tree
              writer is also part of the module functionality. A xml processor  is  not  yet  available  and  is
              expected in the next release.

              Core modules: nwg module
              A  new  module  called  afnix-nwg  has been added. The module provides the support for the network
              working group objects such like Uri object. The module also provides the foundation for  the  mime
              support.

              Core modules: web module
              The afnix-web module has been removed and replaced by the afnix-wam service.

              Core service: wam service
              The  afnix-wam  service  has been added as the first service into the core distribution. A service
              differs from a module in the sense that  it  is  a  combination  of  different  modules.  The  web
              application  management  service  depends on the xml and nwg modules. The service provides all the
              functionality to support a http session, including xhtml page generation and cgi request reply.

       Release 1.3

              Core language: ISO-8859 transcoding support
              The core engine has been modified to integrate a character transcoder that permits the support all
              ISO-8859  codesets  which  are  mostly  used  for  the encoding of european and arabic characters.
              Depending on the locale settings, the transcoder automatically remaps the 8 bits  characters  into
              their  respective  unicode  character.  All  clients  have been updated to detect their associated
              locale and to set automatically the appropriate transcoder. A new option  -e  has  been  added  to
              force a particular encoding.

              Core language: Logger base class
              A logging base class has been added. The logging facility provides the interface to store messages
              by time and level. This class is further extended in the modules.

              Core language: Heap class
              A heap class has been added. The heap can operate in ascending or descending mode. This class  can
              be used to support priority queue.

              Core language: Option class
              An  option class has been added in order to ease the option capture when designing an application.
              The class permits to define the valid options and offer a powerful retrieval mechanism.

              Core language: Date class
              The Time class has been completely changed and a new Date class has been added. The new  mechanism
              provides a better separation between the time and the date, increase the date range and authorizes
              the support for multiple calendar.

              Client: cross spreadsheet client
              The axs client has been modified to support the axs:insert-marker, axs:insert-header  and  insert-
              footer control commands.

              Core modules: speadsheet module
              The Folio and Sheet classes have been substantially updated to support additional information. The
              Sheet also supports the concept of markers that marks the sheet columns by literals.  The  concept
              of  column  tagging has been added with the associated search methods. All classes also contain an
              information field. The importation mechanism now supports a cons cell that defines both  the  cell
              name and the cell value.

              Core modules: web module
              The  Table  class  has  been  modified to support the concept of table data header. The associated
              methods have been added to the class and  a  new  HtmlTh  has  been  added.  The  concept  of  tag
              propagation  has  also been added. If a tag element already exists, this one is not added. This is
              particularly true for the class tag that is now part of the class constructor. The HtmlPage  class
              has been put in strict conformance with xhtml 1.1 and the XHtmlpage class has been removed.

              Core modules: pim module
              A  new  module  called  the afnix-pim module has been added to the base distribution. The personal
              information management or pim module is designed to ease the management  of  personal  information
              and agenda.

              Core modules: gfx module
              A  new  module  called  the  afnix-gfx  module has been added to the base distribution. The module
              contains the base class that supports the graph data structure which was previously  part  of  the
              standard library.

       Release 1.2

              Core language: Unicode support
              The  core  engine has been substantially modified to integrate the support for Unicode characters.
              Depending on the system settings the reader automatically adjust itself to operate in byte mode or
              in  UTF-8  mode. The String and Character classes are now operating with a Unicode representation.
              The design of an Unicode based engine also impacts several classes  like  the  Regex,  Buffer  and
              stream  classes.  A  new class called Byte is also designed to handle byte character. A new stream
              model with a base Stream class has also been added. The full support with Unicode character is not
              yet completed. In particular, certain codesets are not supported at all. This is particularly true
              with case-conversion functions.

              Core language: orphan instance and reparenting
              The object model now supports the creation of orphan instance which is an instance without a class
              attached  to  it.  The  instance  can be later bound to a class and such class can even be changed
              during the course of the program execution.

              Core modules: network module
              The Address class has been updated to reflect the access to address aliases.

              Core modules: text processing module
              The Literate class has been updated to reflect the support of Unicode characters.  The  class  can
              operate both in byte mode or in Unicode character mode.

       Release 1.1

              Core language: Large file support
              Support  for  the  large  file  system  has  been added in the base distribution. All input/output
              operations as long as they are supported by the operating system are now done in 64 bits mode.

              Core libraries: Secure hash algorithm
              The cryptographic library incorporates the support for the SHA-1,  SHA-256,  SHA-384  and  SHA-512
              hash algorithms.

              Core libraries: Standard symmetric cipher
              The cryptographic library incorporates the support for the Advanced Encryption Standard (AES) as a
              symmetric cipher.

              Core libraries: ODC library renamed
              The ODC library has been renamed to SPS which stands for spreadsheet library.  This  new  name  is
              considered more appropriate for the function the library achieves.

              Core libraries: xhtml 1.1 support
              The XhtmlPara class is now configured to support XHTML 1.1 with utf-8 encoding.

              Documentation: XML based documentation
              The  documentation has been rewritten completely in XML. A DTD as well as the necessary XSLT style
              sheets have also been designed to produce a professional  documentation  which  can  be  used  for
              printing or for online browsing.

       Release 1.0
       The  1.0  release  is the initial release. This release replaces the old ALEPH programming language which
       has been discontinued.

              04/19/2005: release 1.0.3
              This release incorporates the necessary files that support GCC 4.  It  also  provides  some  minor
              fixes that were preventing the compilation on some 64 bits platforms.

              03/02/2005: release 1.0.2
              This release incorporates a minor fix that could cause the build process to fail.

              02/16/2005: release 1.0.1
              This release incorporates a minor fix that could cause the build process to fail.

              01/16/2005: release 1.0.0
              This  is  the primary release 1.0.0 which originated from the ALEPH programming language and which
              has been discontinued. A complete history of the language is provided in the description page.