VOL-0(7) | AFNIX Users Manual | VOL-0(7) |
vol-0 - afnix 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.
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.
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.
2018-07-20 | AFNIX |