bionic (7) afnix-notes.7.gz

Provided by: afnix_2.8.1-1_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, IA64, SPARC-32, SPARC-64    Linux 3.x, 4.x
       FreeBSD    X86-32, X86-64, IA-64, SPARC-32, SPARC-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  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.8

       Release features

              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 cloud 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: cloud service
              The session user registration id has been enhanced. The concept  of  cloud  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 cloud object set has enhanced with an intercom cloud object which simplify the transmission of
              registered cloud object. A cart and a cart set object have been added as a  mean  to  store  cloud
              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 cloud 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.