afnix-notes(7)
std-us-notes - afnix installation guide
Description
STD-US-NOTES
NAME
std-us-notes - afnix installation guide
INSTALLATION GUIDE
This chapter describes the installation procedures for the AFNIX writing system distribution. This chapter explains how to set and compile this distribution.
Software distribution
|
The complete distribution can be downloaded from the AFNIX home page. The result is a complete source tree that is ready for compilation. The distribution contains also the documentation as well as examples. The distribution is supported on a variety of platforms as indicated below that can be either 32 bits or 64 bits machines. The distribution is also available at the FreeBSD port collection. |

Specific processors like the Alpha, M68K, ARM, MIPS, RISCV and SUPERH are also supported on certain distributions. The PowerPC (PPC) processor has been discontinued. The Solaris SPARC platform has been discontinued. Do not hesitate to contact the development team for specific processor or platform support.
Installation
procedure
The core software is written in C++. It has been
successfully built with the latest GNU GCC 10. The clang
compiler has also been succesfully tested. You will also
need the GNU Make package. With some distributions the
command is called gmake. Note that the Makefile hierarchy is
designed to operate safely with the -jGNU Make option.
Unpacking the
distribution
The distribution is available as a compressed tar file. Note
that the documentation is distributed in a separate file.
The following command unpacks the distribution.
zsh> gzip -d
afnix-src-[version].tar.gz
zsh> tar xf afnix-src-[version].tar
Quick command
reference
The list of commands to execute is given in the example
below. A detailed description for each command is given
hereafter. The make world command is the default command
that builds the whole tree with the default compiler.
zsh>
./cnf/bin/afnix-setup -o --prefix=/usr/local/afnix
zsh> make status
zsh> make [-j]
zsh> make test
zsh> make install
zsh> make clean
With some platforms, the make command should be replaced by the gmake command. The make status command is optional and can be used to report the internal value contents. In particular, the version and the installation parameters are reported.
Configuration
The afnix-setup command can be invoked to setup a particular
configuration. You should have your compiler on your search
path. Normally, the command given below is enough.
zsh> ./cnf/bin/afnix-setup -o --prefix=/usr/local/afnix
|
This command checks that the target platform can be detected and configured. The -o option configures the compilation in optimized mode. Use the -g option can be used to configure the build process in debug mode. The --prefix option sets the installation directory. Note that the compilation process is done in the distribution tree and that the --prefix option affects only the installation operations. The -v option is the verbose option. Other options are available for fine tuning. |


Compiling the
distribution
The compilation process is straightforward. With some
platforms, the make accepts the -j that enables concurrent
operations.
zsh> make [-j]
This will build the complete distribution locally. If an error occurs, it is best to report it at the (bugs@afnix.org) AFNIX bug report mail address.
Testing the
distribution
The distribution contains all test suites. The test suites
are compiled and executed with the following command.
zsh> make test
This command run the test suites for each library as well as the test suites for each application client. Most of the base library test suites are written in C++ with the application test suites written in the core writing system.
Installing
the distribution
Once the system has been built and tested, it can be
installed. By default, the distribution tree is installed
into the /usr/local directory. This can be overwritten with
the --prefix option during the configuration process.
zsh> make install

Installing the documentation

Cleaning the
distribution
The distribution is cleaned with the clean rule.
zsh> make clean
This rule does not clean the configuration. For a complete cleaning the reset rule is more appropriate.
zsh> make reset
Running
AFNIX
The axi command invokes the interpreter. In order to operate
properly, the LD_LIBRARY_PATH environment variable must be
configured with the directory containing the shared
libraries. If the libraries have been installed in a
standard location like /usr/local/lib, there is nothing to
do.
Running some
examples
The directory exp contains various examples which can be
run. Each example is labeled according to their use in the
volume 1 of the documentation set. Example 0101.als prints
the message hello world. Example 0501.als prints various
information about the system configuration.
zsh> axi
EXP0501
major version number : 3
minor version number : 7
patch version number : 0
interpreter version : 3.7.0
program name : axi
operating system name : linux
operating system type : unix
machine size : 64
afnix official uri : http://www.afnix.org
Special
features
The build process provides several features that permits to
customize the compilation process as well as the nature of
the final executable. Most of the time, these options are
reserved for the package maintainer and are given below for
illustration purpose.
Special
target extensions
Extensions are specific libraries or executables which are
not build automatically during the build process. The user
is responsible to decide which extension is needed for the
system All extensions are located under the src/ext
directory. Simply going into the appropriate directory and
running the make command will build the extension. The asi
extension creates a static interpreter with all libraries
automatically included in the final executable. The
extension is simply build with the following command. Note
that this extension overwrite the previous executable in the
bld/bin directory.
zsh> make -C src/ext/asi
Extra
files
The distribution comes with some extra files. The most
important is the Emacs mode afnix-mode. The original source
file is written in Emacs Lisp and is available in the etc
directory of the distribution. This file should be installed
according to the current Emacs installation.
MAINTAINER NOTES
This chapter contains additional notes for the package maintainer. They are also useful for anybody who is in charge of integrating the distribution in a build process. The chapter describes the distribution tree with more details.
The
distribution tree
The distribution tree is composed of various directories.
Each of them has a Makefile which can be called locally or
from the top level.
cnf
This directory contains the configuration distribution and
various utilities. Normally you should not touch it, unless
you are using a compiler different than gcc.
src
This directory contains the complete source tree. The source
code is written in C++. Normally this directory is left
untouched. If there are good reasons to modify it, please
contact the development team.
tst
This directory contains the complete test suites. The test
suites are used by various programs including the main
interpreter, the compiler and the debugger. It shall be
noted that the library distribution also includes specific
test suites.
doc
This directory contains the complete documentation written
in in XML with a special DTD. It should be left
untouched.
etc
This directory contains various files associated with the
distribution. Some files are useful to be copied.
exp
This directory contains various examples. They are included
for illustration purpose.
The process of building a package solely depends on the distribution type. Most likely, the standard distribution should contain the binary executables as well as some configuration file and the manual pages. The documentation and the development header files can put in separate packages.
Configuration
and setup
The configuration process involves the use of the
afnix-setup command located in the cnf/bin directory. This
command is used to configure the distribution. Package
maintainers are encouraged to use it with specific
options.
Platform detection
|
The afnix-guess command is used during the configuration process to detect a supported platform. This command can be run in stand-alone mode. Various options can be used to tune the type of information requested. |

Without option, the utility prints a platform and processor description string.
zsh>
./cnf/bin/afnix-guess
linux-5.4-x64
Platform
defaults
The directory cnf/def contains a platform specific default
file. The file determines what is the default compiler and
linking mode. This file is used by the afnix-setup command.
For example, the afnix-darwin.def file contains:
compiler: gcc
lktype : dynamic
lkmode : dylib
Such options instructs the configuration utility, that the default compiler is gcc and the linking mode should operates in dynamic mode by using the dylib rule. These default values can be overwritten with the equivalent option of the afnix-setup command. Note that the compiler version is automatically detected by the system. The afnix-vcomp command will return the appropriate compiler version running on the target system.
C++ source
file conventions
THe source tree has two types of C++ files. The first type
has the extension .cxx and the second type has the extension
.cpp. The .cxx -- and the associated .hxx -- files are only
used to indicate a system dependency. These files are found
only in the src/lib/plt directory. The .cxx extension
indicates that the file might use system specific include
files. The .cpp -- and the associated .hpp -- files are the
normal C++ source files. The .cpp extension is used to
indicate that these files will not use a system specific
file. By default this rule is enforced in the compiler
configuration file by specifying some compiler flags which
do not authorize such access.
Configuration
files
The configurations files are located in the cnf/mak
directory. Normally they should be left untouched. The most
important one is the afnix-rule.mak file that defines most
of the compilation and linking rules. Additionally, during
the setup operation, the afnix-setup command creates several
files in the bld/cnf directory. The bld is the build
directory. The afnix-plat.mak file is the platform
configuration file and the afnix-comp.mak is a link to the
appropriate compiler configuration file.
Compilation
Normally, the compilation process is immediate. Just
invoking the make command will do the job. However, some
package maintainer have the desire to overwrite some flags.
Some options are provided to facilitate this task.
EXTCPPFLAGS
This flag can be used to add some compilation flags for all
.cpp files.
EXTCXXFLAGS
This flag can be used to add some compilation flags for all
.cxx files.
EXTCCDEFINE
This flag can be used to add some compilation definitions
for all source files.
EXTINCLUDES
This flag can be used to add some compilation paths for the
.cxx files.
For example, it is common to have some maintainer to compile with both the debug and optimize flags. This can be done with the following command (assuming an optimized configuration):
make EXTCPPFLAGS=-g EXTCXXFLAGS=-g
All include files, compiled libraries and executables are placed in the bld directory. This directory contains the bld/bin for binaries, bld/lib for libraries and bld/hdr for the header files.
Building the
package
The package can be built by accessing the bld directory or
by invoking the install rule. The second method is not
recommended for package construction, since it might trigger
some file installation without any control. The etc/unx
directory contains some special files that might be used for
the package construction. A sample list of them is given
hereafter.
afnix-mode.el
This file is the Emacs mode.
afnix-gud.el
This file is the debugger Emacs gud mode.
Specific
makefile rules
The top level Makefile contains several rules that might be
useful for the package maintainer.
status
This rule show the configuration status for each parameters
with the version.
debug
This rule invokes the default configuration in debug
mode.
optimized
This rule invokes the default configuration in optimized
mode.
build
This rule invokes the default configuration in debug mode
and compile the whole distribution. The default install
directory is /usr/local.
world
This rule invokes the default configuration in optimized
mode and compile the whole distribution. The default install
directory is /usr/local.
test
This rule runs all test suites.
doc
This rule builds the documentation.
distri
This rule builds the distribution.
install
This rule installs the distribution.
publish
This rule installs the documentation.
clean
This rule cleans the distribution but keep the
configuration.
reset
This rule resets the distribution including the
configuration.
RELEASE NOTES
This chapter contains the release notes for the different releases. Release notes are given in descending order for a particular version. The standard notation is major.minor.patch which represents respectively, the major, minor and patch number. A major version number changes indicates a substantial change in the distribution, including new tools, application interface and license. A minor version number change indicates noticeable change, with or without new tools but without application interface change nor license change. Finally, a patch number change indicates a simple change to fix problem. There is no additional features in a patch nor an application interface change.
Release 3.7
Core engine:
release 3.7.0
This is a medium release in line with the previous release
which integrates various extension and cleanup before major
release 3.8 scheduled for the end of the year.
Core engine:
new special forms and continue
Two new special forms, break and continue, have been added
to control loops.
Core
modules: gfx module
The graph module has been revisted with numerous cleanup. A
new state machine object called Automaton has been
added.
Core
modules: sys module
An absolute wait time call has been added to act as a
timer.
Core
modules: nwg module
A new class called Iso has been added. In particular,
support for ISO 3166 has been added.
Release 3.6
Core engine:
release 3.6.0
This is a medium release which integrates a lot of cleanup
as well as the beginning of the integration of the tls
service. The unicode database has been updated to the latest
14.0.0 release. Some objects have been completely
refactored, including base string vector.
Core
modules: mth module
Algebra with complex number has been added including
computation algorithm with Hilbert space.
Core
modules: nwg module
The json reader/writer has been enhanced to support
plist.
Core
modules: sec module
The pkcs signature algorithm has been added. It is designed
for the support of ephemeral Diiffie-Hellman in the tls
service.
Core
services: tls service
The tls service has been enhanced to support ephemeral
Diiffie-Hellman. The integration of the tls inside
applications will be able to start.
Release 3.5
Core engine:
release 3.5.0
This is a important release which integrates numerous
objects that were long overdue, including the support for
complex numbers and numerous code cleanup. An undetected
(until now) interlocking bug in the string split method has
been discovered and fixed. Various encoding bug have also
been fixed including one in the readline method.
Core
modules: mth module
Prime number generation has been improved for speed,
especially with safe prime. The quaternion object has been
added.
Core
modules: nwg module
Form encoding and decoding has been enhanced. A json
reader/writer has also been integrated.
Core
modules: sec module
The dsa pki has been added with support for dsa parameters.
The dh key support has been added. The concept of key
configuration and renewal has been added.
Core
modules: xml module
The module has been cleaned for simplex reader/writer
design. The node formating generation has bee enhanced with
indentation support.
Core
services: tls service
Pkcs8 support has been added with a better integration of
key generation. Server name in extension is now
supported.
Core
services: csm service
Datum and magma parts have been added along a general
service cleanup. The concept of transmuter has been
developped as a mixture interface. The blob view
construction has been revisited.
Release 3.4
Core engine:
release 3.4.0
This is a a minor release which integrates more support for
the tls service. Safe prime number generation has been
added. The assert special form has been enhanced to better
support real testing.
Core
modules: mth module
Real vector, point and matrix of size 1,2,2 and 4 has been
added.
Core
modules: sec module
The gcm mode has been added. The elliptic curve objects and
its associated arithmetic has been integrated. Tests with
the standard curves have been incorporated.
Core
modules: sys module
The date and time object have been enhanced to support
extended time with real precision below the second. A now
constant is also available for setting the current date and
time.
Core
services: tls service
The aes-gcm mode has been added as a cipher.
Core
services: phy service
Direct access to physical constants has been added. The unit
string representation has been enhanced to support the
scaling factor.
Release 3.3
Core engine:
release 3.3.0
This is a major release with a complete re-factoring of the
interpreter evaluation hierarchy. Internally, some objects
are being rewritten with a c++/17 semantic. Many objects
have also been optimized to support very long strings. The
serialization coding has also been revisited. A serious bug
with negative proleptic date has been fixed. Another bug
with the object iterator has also been fixed.
Core engine:
Unicode 13.0.0
The Unicode standard, revision 13.0.0, has been incorporated
in the core engine.
Core engine:
asynchronous evaluation
The special form future creates a special object called a
future which is used to evaluate an object asynchronously.
The evaluation starts with the help of the force special
form. The sync special form can be used to synchronize with
the future.
Core
modules: mth module
The numeral block has been enhanced to support row/column
order and line/block padding and the interface has been
considerably enhanced.
Core
services: phy service
The Unit object has been added to support the definition of
physical unit. The physic constants and the periodic table
has been re-factored.
Core
services: dip service
The geo service has been removed and the image objects have
been moved to a new service called dip.
Release 3.2
Core engine:
release 3.2.0
This is a minor release issued for synchronization with
other projects.
Core engine:
Numeral object
The numeral object has been completely re-factored including
the api at the math module level.
Core
modules: nwg module
A generic json writer has been implemented and the
corresponding json mime object has been updated.
Release 3.1
Core engine:
release 3.1.0
This is a major release which new standard objects as well
as the first distribution of the tls. Release 3.0 was an
internal release which is will not be publicly distributed.
The debian distribution has been fully integrated and the
build system revisited to account for new platforms.
Core engine:
Unicode 12.1.0
The Unicode revision 11.2.0 has been incorporated in the
core engine.
Core engine:
Task and structure
The core engine has been enhanced to support the concept of
task. A Task is similar to a thread object, but can be used
directly at the api level. A new Structure object has been
added to support object aggregation. engine.
Core
modules: net module
The buffer read and socket sapf (socket address protocol
family) have been fixed. The Autocom object has bee added to
support socket re-connection.
Core
modules: nwg module
The IPV6 address representation in uri has been fixed. The
Hyperlink object has been added.
Core
modules: geo module
The Netpbm object has been fixed for inconsistent block
delete. The Pixmap stride has been fixed.
Core
modules: sec module
The Sha-3 family of hashers has been added. The Kdf2
function has bee refactored to support the Pbkdf2 standard.
Support for Galois field has been added. The Gcm cipher has
been added.
Core
modules: sps module
The csv split and validation process has been added. The
Transit has been revisited.
Core
modules: mth module
The integer vector object Ivector has been added. The float
vector Fvector has been added. Random vector generation has
been added.
Core
modules: sys module
System wait on kill has been added.
Core
services: csm service
The csm objects have been considerably re-factored. Notably
the Part and Blob objects.
Core
projects: adp project
The standard documentation processor has been enhanced with
more option for better distribution support.
Release 2.9
Core engine:
release 2.9.3
Immediate release which fixes a potential deadlock in the
output stream object.
Core engine:
release 2.9.2
Small revision release with small allocator fixes, doc
improvements and 32 bits inconsistencies removal. The
support for ’clang’ compiler has been updated as
well. A patch with support for the RISCV processor has also
been incorporated.
Core engine:
release 2.9.1
Small revision release with minor improvements for IPV6
address support.
Core
modules: nwg module
The Uri object has been enhanced to support numerical ip
address notation with brackets.
Core
modules: net module
The Address object has been enhanced to support numerical ip
address detection.
Core engine:
Unicode 11.0.0
The Unicode revision 11.0.0 has been incorporated in the
core engine.
Core engine:
serialization revisited
The core engine serialization has been revisited to account
for a larger number of modules and services.
Core engine:
default hash revisited
The core engine hash function is now based on the
Fowler-Noll-Vo algorithm.
Core engine:
logger object revisited
The core engine logger object has been completely redesigned
with a simpler interface.
Core
modules: nwg module
The base 64/32/16 codec have been added as a single object
Basexx.
Core
modules: sec module
The security module has been enhanced with a new signature
base class.
Core
modules: wgt module
The widget module has been added to the core distribution.
At this time, the module contains expressable and
conditional objects.
Core
services: csm service
The content session management service has been largely
refactored.
Core
services: geo service
The geometry service has been enhanced to support image and
pixmap. A netpbm reader/writer has been added as well.
Release 2.8
Core engine:
release 2.8.3
Release with GCC 8 support.
Core engine:
release 2.8.2
Intermediate release with GCC 8 support.
Core engine:
release 2.8.1
Incorporated patches for GCC 7.
Core engine:
Unicode 9.0.0
The Unicode revision 9.0.0 has been incorporated in the core
engine.
Core engine:
Collectable objects
The Collectable object is now being deployed inside the
engine. A colletable object provides a release method which
can be used to remove links between object.
Core engine:
full dupleix stream
A full dupleix object has been added as a generic object. A
full dupleix stream is provided for certain class of object
like the network socket. The default mode of operations
remains the half-dupleix stream since stream access are
protected by mutexes.
Core
modules: mth module
The math module incorporates an infix notation parser
module. This is a preliminray work suppoosed to grow over
the next releases. The mean, covariance and univariate
regression has been added as objects.
Core
modules: sps module
The bundle object literal index has been updated to follow
the bundle length.
Release 2.7
Core engine:
release 2.7.0
Minor platform updates. This is an internal release in
preparation for the 2.8.0 release.
Core
modules: net module
Revisit socket options and parameters
Core
services: csm service
Minor fixes with the agent accessor.
Release 2.6
Core engine:
release 2.6.3
Incorporated patches for GCC 6.
Core engine:
release 2.6.2
Incorporated patches for Debian issued by maintainer.
Core engine:
release 2.6.1
Fixed the FreBSD build.
Core engine:
release 2.6.0
This is the relase 2.6.0. The code has been updated to
better support c++/11 for both gcc and clang.
Core
modules: xml module
The processing of character entity reference has been
substantially changed to adhere fully with the xml
specification.
Core
modules: sps module
The spreadsheet importer has been updated and a csv reader
has been added. The importation process has also been
revisited.
Core
modules: sec module
The security module has been updated to support the tls.
This include moving to a 6 bits mersenne-twister and adding
a certificate block.
Core
modules: mth module
The normal deviate has been added.
Core
services: geo service
A new geometry service has been adedd to the distribution.
This provides support for modeling various shapes and
solids.
Core
services: cda service
The streamable objects has been added to the crowd data
analytics service.
Release 2.5
Core engine:
release 2.5.2
This is the relase 2.5.2. The release includes support for
the GCC 5 / CLANG 5 compilers suite. Thank’s to Martin
Michlmayr for pointing this out.
Core engine:
release 2.5.1
This is the relase 2.5.1. This is an emergency release that
fixes a bug in the uri percent encoding which can be
downloaded from here . It’s amazing that it was not
found before.
Core engine:
clang compiler with C++11 support
The system infrastructure has been cleaned to support the
clang compiler. The code has also been cleaned to support
the C++11 standard which is now the compilation default.
Core engine:
standard library
A Style object to support ina generic way the formating
operation for the literal objects. Consequently, most of the
literal objects have been cleaned and now support a format
method that operates with a Style argument. The PrintTable
object has been enhanced to support column extension and
column style.
Core
modules: mth module
The ln method is now the standard prefered name for the
natural logarithm. Several bugs have been fixed in the real
matrix implementation with respect to the openmp
implementation. A new solver based on the Modified
Gram-Schmidt algorithm. has been added. Note also that the
direct solver interface has been updated.
Core
modules: nwg module
The Uri class has been enhanced to support partial uri path
extraction.
Core
modules: sps module
The spreadsheet module has been considerably overhauled. A
new object Lstack has been added as a literal stack which
can be bound to the cell as a literal array. The sheet
formating has been also revisited to make profit of the new
Style object has well as the printable transformation.
Core
modules: sys module
The Meter object has been added as a mean to help for the
performance measurements.
Core module:
xml module
The unicode conversion with reference has been updated to
adapt itself to the stream or buffer encoding during a write
process.
Core
services: phy service
A preliminary set of nuclear physics constants have been
added.
Core
services: csm service
The Workspace object has been enhanced to support output
stream.
Core
services: web service
A JsonMime object has been added. It is designed to
translate various object into a Javascript object notation
format. At this time, only the real data samples Rsamples
object is supported.
Release 2.4
Core engine:
unicode 6.3.0
The Unicode 6.3.0 database is now supported in this
release.
Core engine:
containers
The standard object incorporates an alias table which
enables the mapping of property name in a plist. The Trie
object has been enhanced to support a reference index. The
trie name mapping is now obtained with the to-names
method.
Core engine:
parallel support
This release incorporates an experimental support for
OpenMP. The OpenMP threads are compatible with the afnix
threads and support is initially available in the math
module. This option must be enabled explicitelly in the
build setup to be effective.
Core engine:
crowd service
The session user registration id has been enhanced. The
concept of crowd service is available throuh the generic
Xaas object, and more specifically with the Saas object. The
Workspace object has been enhanced with a public zone.
Core
modules: sio module
The Intercom object has been enhanced to support a buffered
serialization which was somehow mandatory when operating in
udp mode.
Core
modules: net module
Numerous deadlocks in the socket class have been fixed as
well as udp inconsistencies.
Core
modules: mth module
The Qmr Krylov solver has been added as part as the
iterative solver family. The krylov convergence test has
also been improved. The Qr solver has been added as part as
the direct solver family. The sparse matrix has been
enhanced to support a generic iterator. The whole solver
architecture has been revisited and is now a class based
architecture with a type driven factory. Numerous bugs have
been fixed. Vector and matrix now support row
permutations.
Release 2.3
Core engine:
release 2.3.2
This is the relase 2.3.2. The release fixes the real samples
array serialization.
Core engine:
release 2.3.1
This is the release 2.3.1. Release 2.3.0 was an internal
work which has not been distributed.
Core engine:
interpreter line read
The interpreter object can read a line or a passphrase from
the attached terminal.
Core engine:
interpreter daemon and librarian
The interpreter can be put in daemon mode. This mean that a
new detached processed is spawned with the interpreter
attached to it. The librarian has been simplified and the
loader integrated inside the interpreter.
Core engine:
input stream
The input steam nom implements a stream consumption method
designed to accumulate a stream content into the stream
buffer. Subsequently, the buffer can be converted into a
string. The serialization of eos has been fixed.
Core engine:
string resolver
The resolver has been enhanced to map a file into a string.
This methodology also applies to file present in a
librarian.
Core engine:
property list
The Plist object has been enhanced to better support the
merging operation.
Core engine:
unicode 6.2.0
The Unicode 6.2.0 database is now supported in this
release.
Core
modules: mth module
The real matrix and vector implementation has been
redesigned to support a unique sparse representation. The
serialization has also been added to these objects.
Core
services: csm module
The crowd object set has enhanced with an intercom crowd
object which simplify the transmission of registered crowd
object. A cart and a cart set object have been added as a
mean to store crowd object. The session object and sessions
set objects have been added. The session object has been
enhanced to produce the associated session cookie, with an
augmented session closing mechanism.
Core
modules: nwg module
The UriPath object has been added as a uri path manipulator
for http server.
Core
services: phy service
The silicon energy gap has been fixed to the standard value.
The periodic table structure has been revisited.
Core
services: wax service
The xhtml form elements have been added to the service. A
base element class has been also added to almost all
elements. The base class provides support for setting the
common element attributes.
Release 2.2
Core engine:
hurd platform
The Hurd platform is now supported in this release. Thanks
to our contributor for delivering this new platform.
Core engine:
unicode 6.0.0
The Unicode 6.0.0 database is now supported in this
release.
Core engine:
object updates
The lexical analyzer is now an object in its own. It can be
used to construct other object from a string
description.
Core
modules: mth module
An automatic linear system verification has been added to
the linear solver. Jacobi preconditionner have been added to
the Krylov solvers and Newton solvers have been
improved.
Core
services: phy service
The periodic table of the elements is under construction and
should be completed soon. The table will provides the
information for each elements, including name, symbol and
other physical constants. The suport for intrinsic carrier
concentration is now available. This is a cryptic feature
for people working on semiconductors.
Release 2.1
Core engine:
superh processor
The SuperH processor is now supported in this release. The
SuperH is a 32 bits processor.
Core engine:
nan real number
The implementation now supports the concepts of Not a Number
or NAN as a whole. A real object can set and tested for
NAN.
Core engine:
indirect librarian resolver
The resolver has been enhanced to support indirect librarian
reference.
Core
modules: csm module
The personnal information management module has been renamed
into the crowd session management or afnix-csm module.
Core
modules: mth module
The math module has been dramatically enhanced. The Rsamples
object has been added for storing data samples. Function and
polynomial objects have added to support generic function
computation. The non-linear Newton system solver has been
added as an object.
Core
services: svg service
The Scalable Vector Graphic service has been added. The
service provides the support for the SVG 1.1 standard and
allows the automatic generation of SVG compliant code.
Core
services: phy service
The Physics service has been added. The service provides the
support for standard physics operations. In particular, the
most common physical constants are defined in this
service.
Release 2.0
Core engine:
standard objects
The BlockBuffer object has been added to the standard object
library. Furthermore, the Buffer has been adapted to operate
as a base class for the block buffer and the shl method has
been added to the buffer object as a mean to shift the
buffer. As consequence, the default operating mode for a
buffer is the BYTE mode. When operating with strings, the
UTF8 mode might be more suitable. The BitSet object has been
renamed to Bitset and the interface has been cleaned. The
Vector has been cleaned. The object-p predicate has been
fixed.
Core engine:
thread engine
The thread engine has been completly redesigned and
extensivelly tested on 32 and 64 bits platforms. It is no
longer a problem to operate with more than 32K threads
simultanesouly. Furthermore, the concept of thread pool has
been added to the engine. The end-p predicate has been added
to the thread object to indicate a succesful thread
completion.
Core engine:
form reader
The Reader object has been added as a form reader. The
reader parses an input stream and produces a form until the
end-of-stream. The Reader provides the support for string
based execution.
Core engine:
default librarian module
The Librarian object has been enhanced to support the
concept of default exeution module. When such module and
when the interpreter is requested to do so, the module is
automatically loaded during the execution.
Core
modules: nwg module
The HttpProto default version has been move to 1.1 for both
the request and response objects.
Core
modules: sio module
The InputMapped class has been enhanced to provide the
facility for mapping buffer as well as acting as a null
character generator. The OuputBuffer object has been added
as a buffer output stream. With the addition of a form
reader, the interpreter communication class Intercom has
been added to the standard i/o module.
Core
modules: xml module
The XneCond object has been enhanced to support various xml
object. The XmlPi has been enhanced to support attributes
derivation from the string value.
Core
modules: itu module
The itu module is a new module. It has been added with a
complete support for the ASN.1 standard. ASN.1 is essential
for the support of certificates.
Core
clients: axs client
The axs client has been removed from the core distribution.
All of the client functionalities are now available in the
spreadsheet module.
Release 1.9
Core engine:
object unreference
The long awaited unref reserved keyword has been added as a
mechanism to unreference a symbol.
Core engine:
object predicate
The object-p predicate has been added as a standard
predicate. The predicate is the negation of the nil-p
standard predicate. The method-p predicate has also been
added as a standard predicate.
Core engine:
stop/resume parsing
The file stream parsing has been enhanced with the help of
the stop â and resume â¶ characters. When
the stop characters is found, all parsing operations are
suspended until a resume character is found.
Core engine:
extended exception attribute
The about symbol has been added to the exception object as
extended exception reason. For a given reason, the file name
and line number is added to the exception reason.
Core engine:
string objects
The Strvec string vector class has been added to the core
library. The class is similar to the Vector class except
that it operates with strings and provides additional
strings related methods.
Core engine:
counter object
The Counter object has been added as a reserved object. The
counter is designed to be used directly in loop.
Core engine:
library cleaning
The core library has been extensively cleaned in preparation
for the next major release. In particular, numerous memory
leaks have been removed and some classes derivations have
been fixed. A major bug in the closure argument counting has
also been discovered and fixed during this process.
Core module:
sio module
The Pathname object has been enhanced to detect the type of
path associated with the object. Additionally, a normalize
method has been added.
Core module:
sio module
The FileInfo object has been added to the module. The class
provides an immediate access to the principal file
parameters such like it size or its modification time.
Core module:
sio module
The NamedFifo object has been added to the module. The class
provides the support for a large string based fifo with file
saving capabilities.
Core
modules: nwg module
Several predicates and functions related to media type
conversion have been added to the module. In particular, a
media type extension conversion has been implemented. The
HttpResponse class has been enhanced with several methods
for status code checking.
Core
modules: sec module
Support for the Digital Standard Algorithm, (aka DSA) as
specified by FIPS-PUB 186-3 has been added to the library.
The implementation incorporates several new objects to
manipulate signatures.
Core
modules: sec module
The RC2 block cipher algorithm has been added to the
module.
Distribution:
documentation
The documentation distribution rules have been rewritten and
the "publish" rule has been added.
Release 1.8
Build
process: reset rule
The distclean top level makefile rule has been renamed as
reset.
Core engine:
stream object
The stream engine has been cleaned with a new architecture.
Two new objects InputStream and OutputStream acts as the
foundation of this new design.
Core
modules: nwg module
The HttpProto, HttpRequest and HttpResponse objects have
been completely rewritten. In the new model, both objects
can operate on the server and client side. The HttpReply
object has been removed.
Core
modules: sec module
The Sha224 hash function has been added. This class
concludes the implementation of all SHA family hash
functions. The Des class that supports the DES stream cipher
has been added to the library.
Core
modules: xml module
The XmlRoot class has been enhanced in order to ease the
declaration node existence verification as well as the
encoding mode extraction.
Release 1.7
Core
clients: random engine seeding
A new option controls the seeding of the random engine. By
default, in debug mode, the random engine is not seeded
unless requested by the user. In optimized mode, which is
the normal mode, the random engine is seeded at
initialization.
Core engine:
base number object
The long awaited base number object has been added. The
Number object serves the Integer, Real, and Relatif objects.
The base number object is designed to ease the task of
formatting numbers.
Core engine:
relatif number enhancements
The relatif number object has been enhanced to support extra
methods that are used for large number computation. This
include the power and gcd computation which are used by the
cryptographic engine. In addition, the base arithmetic
relatif methods have been optimized and certain corner bugs
in the division fixed.
Core engine:
unicode database
The core engine has been updated with the new Unicode 5.1.0
database.
Core engine:
serious bugs
A serious bug in the form synchronize engine that would
cause an engine crash when a form is nil has been fixed.
Core
modules: sio module
A new object called Pathlist has been added to support the
manipulation of path list. The object is designed to ease
the file name resolution in the presence of search path. The
module has also been extensively cleaned.
Core
modules: mth module
A new module called afnix-mth has been added to the standard
distribution. The module is designed to integrate the base
mathematical functions and objects available in the engine.
With such introduction, the random number generation has
been moved into this module. Additionally, the functions
needed to generate prime numbers have been added to this
module.
Core
modules: sec module
A new module called afnix-sec has been added to the standard
distribution. The module is designed to integrate the
security functions and cryptographic objects. Two new hasher
objects have been added to the security module. The Md2
object implements the MD2 message digest algorithm as
described in RFC 1319. The Md4 object implements the MD4
message digest algorithm as described in RFC 1320. The
standard key derivation functions KDF1 and KDF2 have been
added to the security module. The asymmetric cipher RSA has
also been added to the security module and the Key object
has been updated to reflect this.
Release 1.6
Core engine:
object collection redesign
The core engine has been seriously modified to accommodate
for a new object collection system (aka garbage collection).
The new system is more robust and provides new mechanism
that will permit to reclaim cyclic structure as well as
destroying global object on demand.
Core engine:
macos x support
The core engine has been adapted to support the new MACOS X
Leopard operating system.
Release 1.5
Core engine:
unicode 5.0 support
The core engine continues to be updated in order to better
support the Unicode 5.0 standard. With this release, the
string normalization scheme is now in place and used by
default internally. This implies among other things, a
better support for multiple diacritics as well as the
beginning of the standard collation algorithm.
Core engine:
log file support
The Logger base class has been enhanced to support the
generation of a log file. An output stream can now be bound
to the object.
Core engine:
class defer support
The concept of class defer object has been added to the
Class object. The defer mode is the opposite of the infer
mode and provides a mechanism for base class creation.
Core engine:
print table header
The PrintTable object has been enhanced to support the
concept of table header.
Core engine:
exception re-throwing
The exception object what can be thrown with the reserved
keyword throw. This provides a mechanism to re-throw an
exception.
Core engine:
critical bug with return form
A critical bug in the core engine affecting the behavior of
the return reserved keyword in a try block has been fixed. A
return form inside a try block was incorrectly generating an
exception which was subsequently caught by the try
block.
Core
modules: net module
The base network module has been enhanced to better operate
with IPV6. In particular, when both IPV4 and IPV6 stacks are
present and a host name (typically localhost) have an
address entry, the socket constructor make sure it can build
an object. The IPV6 address display has been rewritten.
Core
modules: sio module
A new object called Pathname has been added to support the
manipulation of system path. In addition, two new functions
mkdir and mhdir have been also added to support the
directory creation, both normally and hierarchically.
Core
modules: nwg module
The Uri has been dramatically enhanced to conform to the RFC
3986. In particular, the path representation for urn is now
working properly. The cookie object has been massaged to
support the cookie version 1, although it does not seem to
be supported (yet!) by the browsers.
Core
modules: xml module
The xml module has been enhanced with a new parsing system
called the simple model. In the simple model, nodes are
parsed in a linear fashion. The node content is available in
the form of a string and its interpretation is at the user
discretion.
Core
service: wax service
The afnix-wam service has been renamed as afnix-wax. The
service has also been updated with two new objects, namely
the XmlMime and XhtmlMime which permits to build a mime
representation of an xml tree. Several xhtml objects have
also been added to complete the collection. This include the
XhtmlScript for example.
Core
service: xpe service
The afnix-xpe service has been added as a new service. The
xml processing environment (xpe) provides a xml processor
that permits manipulate the whole xml tree with the help of
various xml processor features. In particular, the service
provides the support for the xml include extension.
Core
projects: apx project
This release incorporates for the first time, the concept of
core project, which represents a librarian or an
application. The first project is the AFNIX protocol
extension or apx which is a message based protocol designed
to transport request/reply messages within a client/server
environment. The message is built with the xml library and
the librarian provides the encapsulation layer.
Core
projects: amd project
The AFNIX media dumper or amd project is a complete
application designed to illustrate the design of an
application. The application permits to dump an uri content
into a file.
Release 1.4
Core engine:
unicode 5.0 support
The core engine has been substantially changed to support
the new Unicode 5.0 standard. As of now, the engine is in
place internally, but not fully activated. In particular,
the string normalization is implemented but not activated.
The next release should incorporate the full system with a
change that should be transparent to the user.
Core
language: instance inference
An instance inference mechanism -- which is equivalent to
the concept of virtual constructor -- has been added to the
core engine. Such system permits to derive top instance from
a base instance construction.
Core
language: print table object
The PrintTable object has been enhanced with a dump method
similar to the format method.
Core
language: property list object
The Property and the Plist objects have been added to the
standard library. a property is name/value pair. The
property list object is an iterable object that stores
property objects.
Core
modules: xml module
A new module called afnix-xml has been added. The module
provides the foundation for a full xml 1.0/1.1 support. The
module also includes a parser that permits to build xml
tree. A xml tree writer is also part of the module
functionality. A xml processor is not yet available and is
expected in the next release.
Core
modules: nwg module
A new module called afnix-nwg has been added. The module
provides the support for the network working group objects
such like Uri object. The module also provides the
foundation for the mime support.
Core
modules: web module
The afnix-web module has been removed and replaced by the
afnix-wam service.
Core
service: wam service
The afnix-wam service has been added as the first service
into the core distribution. A service differs from a module
in the sense that it is a combination of different modules.
The web application management service depends on the xml
and nwg modules. The service provides all the functionality
to support a http session, including xhtml page generation
and cgi request reply.
Release 1.3
Core
language: ISO-8859 transcoding support
The core engine has been modified to integrate a character
transcoder that permits the support all ISO-8859 codesets
which are mostly used for the encoding of european and
arabic characters. Depending on the locale settings, the
transcoder automatically remaps the 8 bits characters into
their respective unicode character. All clients have been
updated to detect their associated locale and to set
automatically the appropriate transcoder. A new option -e
has been added to force a particular encoding.
Core
language: Logger base class
A logging base class has been added. The logging facility
provides the interface to store messages by time and level.
This class is further extended in the modules.
Core
language: Heap class
A heap class has been added. The heap can operate in
ascending or descending mode. This class can be used to
support priority queue.
Core
language: Option class
An option class has been added in order to ease the option
capture when designing an application. The class permits to
define the valid options and offer a powerful retrieval
mechanism.
Core
language: Date class
The Time class has been completely changed and a new Date
class has been added. The new mechanism provides a better
separation between the time and the date, increase the date
range and authorizes the support for multiple calendar.
Client:
cross spreadsheet client
The axs client has been modified to support the
axs:insert-marker, axs:insert-header and insert-footer
control commands.
Core
modules: speadsheet module
The Folio and Sheet classes have been substantially updated
to support additional information. The Sheet also supports
the concept of markers that marks the sheet columns by
literals. The concept of column tagging has been added with
the associated search methods. All classes also contain an
information field. The importation mechanism now supports a
cons cell that defines both the cell name and the cell
value.
Core
modules: web module
The Table class has been modified to support the concept of
table data header. The associated methods have been added to
the class and a new HtmlTh has been added. The concept of
tag propagation has also been added. If a tag element
already exists, this one is not added. This is particularly
true for the class tag that is now part of the class
constructor. The HtmlPage class has been put in strict
conformance with xhtml 1.1 and the XHtmlpage class has been
removed.
Core
modules: pim module
A new module called the afnix-pim module has been added to
the base distribution. The personal information management
or pim module is designed to ease the management of personal
information and agenda.
Core
modules: gfx module
A new module called the afnix-gfx module has been added to
the base distribution. The module contains the base class
that supports the graph data structure which was previously
part of the standard library.
Release 1.2
Core
language: Unicode support
The core engine has been substantially modified to integrate
the support for Unicode characters. Depending on the system
settings the reader automatically adjust itself to operate
in byte mode or in UTF-8 mode. The String and Character
classes are now operating with a Unicode representation. The
design of an Unicode based engine also impacts several
classes like the Regex, Buffer and stream classes. A new
class called Byte is also designed to handle byte character.
A new stream model with a base Stream class has also been
added. The full support with Unicode character is not yet
completed. In particular, certain codesets are not supported
at all. This is particularly true with case-conversion
functions.
Core
language: orphan instance and reparenting
The object model now supports the creation of orphan
instance which is an instance without a class attached to
it. The instance can be later bound to a class and such
class can even be changed during the course of the program
execution.
Core
modules: network module
The Address class has been updated to reflect the access to
address aliases.
Core
modules: text processing module
The Literate class has been updated to reflect the support
of Unicode characters. The class can operate both in byte
mode or in Unicode character mode.
Release 1.1
Core
language: Large file support
Support for the large file system has been added in the base
distribution. All input/output operations as long as they
are supported by the operating system are now done in 64
bits mode.
Core
libraries: Secure hash algorithm
The cryptographic library incorporates the support for the
SHA-1, SHA-256, SHA-384 and SHA-512 hash algorithms.
Core
libraries: Standard symmetric cipher
The cryptographic library incorporates the support for the
Advanced Encryption Standard (AES) as a symmetric
cipher.
Core
libraries: ODC library renamed
The ODC library has been renamed to SPS which stands for
spreadsheet library. This new name is considered more
appropriate for the function the library achieves.
Core
libraries: xhtml 1.1 support
The XhtmlPara class is now configured to support XHTML 1.1
with utf-8 encoding.
Documentation:
XML based documentation
The documentation has been rewritten completely in XML. A
DTD as well as the necessary XSLT style sheets have also
been designed to produce a professional documentation which
can be used for printing or for online browsing.
Release
1.0
The 1.0 release is the initial release. This release
replaces the old ALEPH programming language which has been
discontinued.
04/19/2005:
release 1.0.3
This release incorporates the necessary files that support
GCC 4. It also provides some minor fixes that were
preventing the compilation on some 64 bits platforms.
03/02/2005:
release 1.0.2
This release incorporates a minor fix that could cause the
build process to fail.
02/16/2005:
release 1.0.1
This release incorporates a minor fix that could cause the
build process to fail.
01/16/2005:
release 1.0.0
This is the primary release 1.0.0 which originated from the
ALEPH programming language and which has been discontinued.
A complete history of the language is provided in the
description page.