Provided by: afnix_2.9.2-2build1_amd64 bug

NAME

       vol-0 - 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
       FreeBSD    X86-32, X86-64   FreeBSD 8.x, 9.x, 10.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 GNU GCC 4, 5,
       6. The clangcompiler has also  been  succesfully  tested.  You  will  also  need  the  GNU
       Makepackage.  With  some  distributions  the  command  is  called  gmake.  Note  that  the
       Makefilehierarchy is designed to operate safely with the -jGNU Makeoption.

       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 worldcommand 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  makecommand  should be replaced by the gmakecommand. The make
       statuscommand 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-setupcommand 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  -ooption
       configures  the  compilation  in optimized mode. Use the -goption can be used to configure
       the build process in debug mode. The --prefixoption sets the installation directory.  Note
       that  the compilation process is done in the distribution tree and that the --prefixoption
       affects only the installation operations.  The  -voption  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
       --sdkdir     Set the system kit directory             platform dependent
       --compiler   Set the default compiler                 platform dependent
       --proctype   Set the processor type                   generic
       --dynamic    Compile and link dynamically             yes
       --static     Compile and link statically              no
       --openmp     Enable the optional openmp compilation   no

       The  prefixoption set the root installation directory. The binary and library installation
       directories are derived from it. The shrdirset the shared installation directory which  is
       normally  used  for  the  installation  of  the  manual pages on most popular systems. the
       altdirsets the alternate installation directory. Normally this path should be empty as  it
       affects  the  path  for  the etcdirectory. This flag should be used when using a prefix to
       unusual destination. the sdkdiroption sets the path of  the  platform  system  development
       kit.  This  option is only used with the Darwinplatform. The compileroption can be used to
       force a  particular  compiler  with  the  help  of  a  compiler  configuration  file.  The
       proctypeoption  can  be  used  to  force  a  particular  processor  architecture. The -sor
       --staticoption can be used to build a static executable. Normally, this option should  not
       be used since it restrict the use of extension modules. The dynamiccontrols 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
       --package   Set the type of package to support                 none
       --pkgbin    Set the optional package bin directory             none
       --pkglib    Set the optional package lib directory             none
       --pkgprj    Set the optional package project directory         none
       --pkghdr    Set the optional package header directory          none
       --pkgetc    Set the optional package etc directory             none
       --pkgman    Set the optional package manual directory          none
       --pkgdoc    Set the optional package documentation directory   none
       --pkgwww    Set the optional package www directory             none

       Compiling the distribution
       The  compilation  process  is  straightforward.  With  some platforms, the makeaccepts the
       -jthat 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 reportmail 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/localdirectory. This can be overwritten with
       the --prefixoption during the configuration process.

       zsh> make install

       There are several variables that controls the behavior of the installrule.  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  docrule  builds  the
       documentation  and  the  publishrule  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 cleanrule.

       zsh> make clean

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

       zsh> make reset

       Running AFNIX
       The   axicommand   invokes   the   interpreter.   In   order   to  operate  properly,  the
       LD_LIBRARY_PATHenvironment 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 example
       The directory expcontains various examples which can  be  run.  Each  example  is  labeled
       according  to  their  use in the volume 1 of the documentation set. Example 0101.alsprints
       the message hello world. Example  0501.alsprints  various  information  about  the  system
       configuration.

       zsh> axi 0501
       major version number   : 2
       minor version number   : 8
       patch version number   : 0
       interpreter version    : 2.8.0
       operating system name  : linux
       operating system type  : unix
       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.

       Target customization
       The distribution can be configured to operate on a specific machine target. For example, a
       typical Linux box will be compiled with the default compiler  target,  which  is  the  386
       processor.  You can force the compilation to be optimized for a particular processor. This
       is done with the --proctypeoption of the afnix-setupcommand.  Currently  the  distribution
       supports  the  586and  686architectures  for  the Intel platform. The ultraarchitecture is
       valid for the SPARC platform.

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

       This command will configure the distribution to be compiled specifically for  the  Pentium
       architecture.

       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/extdirectory. Simply going into the
       appropriate  directory  and  running  the  makecommand  will  build  the  extension.   The
       asiextension 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/bindirectory.

       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
       etcdirectory  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 Makefilewhich
       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-setupcommand located in the
       cnf/bindirectory. This command is used to configure the distribution. Package  maintainers
       are encouraged to use it with specific options.

       Platform detection
       The  afnix-guesscommand  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 platform patch number
       -t       Print the processor type

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

       zsh> ./cnf/bin/afnix-guess
       linux-4.7-x64-generic

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

       compiler: gcc
       lktype  : dynamic
       lkmode  : dylib

       Such  options instructs the configuration utility, that the default compiler is gccand the
       linking mode should operates in dynamic mode by using the dylibrule. These default  values
       can  be  overwritten  with  the equivalent option of the afnix-setupcommand. Note that the
       compiler version is automatically detected by  the  system.  The  afnix-vcompcommand  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 .cxxand 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/pltdirectory. The .cxxextension indicates that the file might use system  specific
       include files. The .cpp-- and the associated .hpp-- files are the normal C++ source files.
       The .cppextension 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/makdirectory. Normally they should be left
       untouched.  The  most  important  one  is  the afnix-rule.makfile that defines most of the
       compilation and linking rules.  Additionally,  during  the  setup  operation,  the  afnix-
       setupcommand creates several files in the bld/cnfdirectory. The bldis the build directory.
       The afnix-plat.makfile is the platform configuration file and the afnix-comp.makis a  link
       to the appropriate compiler configuration file.

       Compilation
       Normally,  the compilation process is immediate. Just invoking the makecommand 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 .cppfiles.

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

              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 .cxxfiles.

       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 blddirectory. This
       directory contains the bld/binfor binaries, bld/libfor libraries and bld/hdrfor the header
       files.

       Building the package
       The package can be built by accessing the blddirectory or by invoking the installrule. The
       second method is not recommended for package construction, since  it  might  trigger  some
       file  installation without any control.  The etcdirectory 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 Makefilecontains  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 differents releases. Release notes are
       given  in  descending  order  for  a  particular  version.  The   standard   notation   is
       major.minor.patchwhich 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 2.9

       Release features

              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  completly  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 cloud 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

       Release features

              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 Collectableobject is now beeing deployed inside the engine. A colletable object
              provides a releasemethod 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

       Release features

              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

       Release features

              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

       Release features

              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 Styleobject 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 formatmethod that operates with a Styleargument. The PrintTableobject has
              been enhanced to support column extension and column style.

              Core modules: mth module
              The  lnmethod  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 Uriclass has been enhanced to support partial uri path extraction.

              Core modules: sps module
              The spreadsheet module has been considerably overhauled.  A  new  object  Lstackhas
              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  Styleobject
              has well as the printable transformation.

              Core modules: sys module
              The Meterobject 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 Workspaceobject has been enhanced to support output stream.

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

       Release 2.4

       Release features

              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 Trieobject has been enhanced to support a reference
              index. The trie name mapping is now obtained with the to-namesmethod.

              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 Xaasobject, and more specifically with the Saasobject.
              The Workspaceobject has been enhanced with a public zone.

              Core modules: sio module
              The  Intercomobject 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  QmrKrylov  solver  has  been added as part as the iterative solver family. The
              krylov convergence test has also been improved. The Qrsolver 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

       Release features

              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 Plistobject 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 UriPathobject 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

       Release features

              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

       Release features

              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 Numberor 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 managementmodule has been renamed into the crowd session
              managementor afnix-csmmodule.

              Core modules: mth module
              The mathmodule has been dramatically enhanced. The Rsamplesobject  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 Graphicservice 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 Physicsservice 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 history

              08/24/2011: release 2.1.1
              AFNIX 2.1.1 has been released. This is an emergency release that corrects  a  small
              problem in the clean rule with the static directory.

       Release 2.0

       Release features

              Core engine: standard objects
              The  BlockBufferobject  has been added to the standard object library. Furthermore,
              the Bufferhas been adapted to operate as a base class for the block buffer and  the
              shlmethod  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  BYTEmode.  When
              operating  with  strings, the UTF8mode might be more suitable. The BitSetobject has
              been renamed to Bitsetand the  interface  has  been  cleaned.  The  Vectorhas  been
              cleaned. The object-ppredicate 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-ppredicate has been added  to  the  thread  object  to  indicate  a
              succesful thread completion.

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

              Core engine: default librarian module
              The  Librarianobject  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 HttpProtodefault version has been move to 1.1 for both the request and response
              objects.

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

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

              Core modules: itu module
              The itumodule 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  axsclient  has  been  removed  from  the  core distribution. All of the client
              functionalities are now available in the spreadsheet module.

       Release 1.9

       Release features

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

              Core engine: object predicate
              The  object-ppredicate has been added as a standard predicate. The predicate is the
              negation of the nil-pstandard predicate. The method-ppredicate 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  aboutsymbol  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  Strvecstring  vector  class  has  been added to the core library. The class is
              similar to the Vectorclass except  that  it  operates  with  strings  and  provides
              additional strings related methods.

              Core engine: counter object
              The  Counterobject  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 Pathnameobject has been enhanced to detect the type of path associated with the
              object. Additionally, a normalizemethod has been added.

              Core module: sio module
              The FileInfoobject 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  NamedFifoobject  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 HttpResponseclass 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 RC2block 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

       Release features

              Build process: reset rule
              The distcleantop 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
              InputStreamand OutputStreamacts as the foundation of this new design.

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

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

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

       Release 1.7

       Release features

              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  Numberobject  serves  the
              Integer,  Real,  and Relatifobjects. 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 Pathlisthas 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-mthhas 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-sechas 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
              Md2object implements the MD2 message digest algorithm as described in RFC 1319. The
              Md4object 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 Keyobject has been updated to reflect this.

       Release history

              09/01/2008: release 1.7.1
              AFNIX  1.7.1,  the  «  An  Armor  release » has been released. This is an emergency
              release that corrects a major problem within the evaluation process. Although,  the
              problem has been fixed, it involves a large piece of code, with a major redesign of
              the  evaluation  engine.  It  is  therefore  recommended  to  upgrade  the   engine
              immediately.

              08/08/2008: release 1.7.0
              AFNIX  1.7.0,  the  « An Armor release » has been released. This is a major release
              that incorporates numerous new features in the field of cryptography.  The  release
              also incorporates the latest 5.1.0 Unicode database.

       Release 1.6

       Release features

              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 history

              01/01/2008: release 1.6.0
              AFNIX  1.6.0  has been released. This release provides is an intermediate candidate
              toward another  major  release.  The  most  important  thing  is  that  the  object
              collection engine has been redesigned and that MACOS X Leopard is now supported.

       Release 1.5

       Release features

              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 Loggerbase 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 deferobject has been added to the Classobject. The defermode
              is the opposite of the infermode and provides a mechanism for base class creation.

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

              Core engine: exception re-throwing
              The exception object whatcan 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 returnreserved
              keyword in a tryblock 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 Pathnamehas been added to support the  manipulation  of  system
              path.  In addition, two new functions mkdirand mhdirhave been also added to support
              the directory creation, both normally and hierarchically.

              Core modules: nwg module
              The Urihas 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-wamservice  has  been  renamed  as  afnix-wax. The service has also been
              updated with two new objects, namely the XmlMimeand XhtmlMimewhich permits to build
              a mime representation of an xml tree. Several xhtml objects have also been added to
              complete the collection. This include the XhtmlScriptfor example.

              Core service: xpe service
              The  afnix-xpeservice  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   apxwhich  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  amdproject  is  a  complete  application designed to
              illustrate the design of an application. The application permits  to  dump  an  uri
              content into a file.

       Release history

              06/08/2007: release 1.5.2
              AFNIX 1.5.2 has been released. This is a minor release that fixes the build process
              with GCC 4.2.

              04/21/2007: release 1.5.1
              AFNIX 1.5.1 has been released. This is a minor release that fixes the documentation
              targets during the build process.

              04/18/2007: release 1.5.0
              AFNIX 1.5.0 has been released. This release provides a xml processor in the form of
              a new service  module  called  'xml  processing  environment'  or  xpe.  The  whole
              documentation  generation  is now fully automated, thanks to the new xml processor.
              This release also provides a better support for the 'web application extension'  or
              wax  service.  The support for the GNU/FreeBSD platform has also been added in this
              release. As usual, this release comes with its wagon of  bug  fixes,  notably  this
              time in the network field especially with IPV6 on the FreeBSD platform.

       Release 1.4

       Release features

              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   PrintTableobject   has  been  enhanced  with  a  dumpmethod  similar  to  the
              formatmethod.

              Core language: property list object
              The Propertyand the Plistobjects  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-xmlhas 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-nwghas been added. The module provides the support for
              the network working groupobjects such like Uriobject. The module also provides  the
              foundation for the mime support.

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

              Core service: wam service
              The   afnix-wamservice   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 managementservice 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 history

              01/28/2007: release 1.4.3
              This release is a minor release that fixes the "install" rule in the etc directory.

              01/01/2007: release 1.4.2
              This  release  is  a  minor  release  that  fixes  the  tcp socket read method that
              incorrectly handles a connection reset by the peer. The Timeclass also incorporates
              a small fix for the to-rfcmethod.

              11/09/2006: release 1.4.1
              This release is a minor release that fixes the lexer for not parsing correctly some
              floating point numbers. The standard i/o documentation is also fixed. A print media
              support is now available in the documentation.

              11/06/2006: release 1.4.0
              This  release  incorporates  the  Unicode  5.0  standard as well as a brand new xml
              module. This release also introduces the concept of service module, which  provides
              additional  functionalities  on top of regular modules. A new service module called
              web application managementor wamis also introduced with this release. This  service
              module  is  based  on  the newly created xml module and replaces the old web module
              which has been obsoleted immediately.

       Release 1.3

       Release features

              Core language: ISO-8859 transcoding support
              The core engine has been modified to integrate a character transcoder that  permits
              the support all ISO-8859codesets 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 -ehas 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 Timeclass has been completely changed and a new Dateclass 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 axsclient has been  modified  to  support  the  axs:insert-marker,  axs:insert-
              headerand insert-footercontrol commands.

              Core modules: speadsheet module
              The  Folioand  Sheetclasses  have  been substantially updated to support additional
              information. The Sheetalso 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 Tableclass has been modified to support the concept of table data  header.  The
              associated methods have been added to the class and a new HtmlThhas 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 classtag that is now part
              of the class constructor. The HtmlPageclass has been put in strict conformance with
              xhtml 1.1 and the XHtmlpageclass has been removed.

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

              Core modules: gfx module
              A  new  module  called the afnix-gfxmodule 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

       Release features

              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  Stringand
              Characterclasses are now operating with a Unicode representation. The design of  an
              Unicode  based engine also impacts several classes like the Regex, Bufferand stream
              classes. A new class called Byteis also designed to handle byte  character.  A  new
              stream  model  with  a  base Streamclass 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 instancewhich 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 Addressclass has been updated to reflect the access to address aliases.

              Core modules: text processing module
              The  Literateclass  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

       Release features

              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 history

              10/04/2005: release 1.1.2
              This release incorporates a fix for a terminal capability error.

              08/25/2005: release 1.1.1
              This  release  incorporates  fixes  for  several  build  problems  with the FreeBSD
              platform.

              08/19/2005: release 1.1.0
              The 1.1 release is yet another milestone that incorporates a full redesign  of  the
              documentation  tree  as  well  as  the  inclusion of the cryptographic library that
              features some original implementations. The full documentation is now available  in
              XML format and can be accessed online.

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

       Release history

              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
              languageand which has been discontinued. A complete  history  of  the  language  is
              provided in the description page.