Provided by:
afnix_2.1.1-3_i386 
NAME
vol-0 - afnix installation guide
INSTALLATION GUIDE
This chapter describes the installation procedures for the AFNIX
writing system distribution. This chapter explains how to set and
compile this distribution.
Software distribution
The complete distribution can be downloaded from the AFNIX home page.
The result is a complete source tree that is ready for compilation. The
distribution contains also the documentation as well as examples. The
distribution is supported on a variety of platforms as indicated below
that can be either 32 bits or 64 bits machines. The distribution is
also available at the FreeBSD port collection.
Platform Processor Operating system
Linux X86-32, X86-64, IA64, SPARC-32, SPARC-64 Linux 2.4 and 2.6
FreeBSD X86-32, X86-64, IA-64, SPARC-32, SPARC-64 FreeBSD 5.x, 6.x, 7.x
Darwin PPC-32, PPC-64, X86-32, X86-64 MacOS X 10.4 Tiger, 10.5 Leopard, 10.6 S
Specific processors like the Alpha, M68K, ARM and MIPS are also
supported on certain distribution like Debian. The PowerPC (PPC)
processor is primarily supported with the Darwin platform (MACOS) and
is also working with the Linux platform. 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 3 and GCC 4. No other compiler have been tested. You
will also need the GNU Make package. With some distributions the
command is called gmake. Note that the Makefile hierarchy is designed
to operate safely with the -jGNU Make option.
Unpacking the distribution
The distribution is available as a compressed tar file. Note that the
documentation is distributed in a separate file. The following command
unpacks the distribution.
zsh> gzip -d afnix-src-[version].tar.gz
zsh> tar xf afnix-src-[version].tar
Quick command reference
The list of commands to execute is given in the example below. A
detailed description for each command is given hereafter. The make
world command is the default command that builds the whole tree with
the default compiler.
zsh> ./cnf/bin/afnix-setup -o --prefix=/usr/local/afnix
zsh> make status
zsh> make [-j]
zsh> make test
zsh> make install
zsh> make clean
With some platforms, the make command should be replaced by the gmake
command. The make status command is optional and can be used to report
the internal value contents. In particular, the version and the
installation parameters are reported.
Configuration
The afnix-setup command can be invoked to setup a particular
configuration. You should have your compiler on your search path.
Normally, the command given below is enough.
zsh> ./cnf/bin/afnix-setup -o --prefix=/usr/local/afnix
This command checks that the target platform can be detected and
configured. The -o option configures the compilation in optimized mode.
Use the -g option can be used to configure the build process in debug
mode. The --prefix option sets the installation directory. Note that
the compilation process is done in the distribution tree and that the
--prefix option affects only the installation operations. The -v option
is the verbose option. Other options are available for fine tuning.
Option Description Default
-h Print a help message n/a
-v Set the verbose mode n/a
-g Set the debug mode yes
-o Set the optimized mode no
--help Same as -h n/a
--prefix Set the target install directory /usr/local
--shrdir Set the shared install directory /usr/local/share
--altdir Set the alternate install directory /usr/local
--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
The prefix option set the root installation directory. The binary and
library installation directories are derived from it. The shrdir set
the shared installation directory which is normally used for the
installation of the manual pages on most popular systems. the altdir
sets the alternate installation directory. Normally this path should be
empty as it affects the path for the etc directory. This flag should be
used when using a prefix to unusual destination. the sdkdir option sets
the path of the platform system development kit. This option is only
used with the Darwin platform. The compiler option can be used to force
a particular compiler with the help of a compiler configuration file.
The proctype option can be used to force a particular processor
architecture. The -s or --static option can be used to build a static
executable. Normally, this option should not be used since it restrict
the use of extension modules. The dynamic controls whether or not the
dynamic libraries should be built. This option is detected
automatically for a particular platform and should be used only by
package maintainer.
Compiling the distribution
The compilation process is straightforward. With some platforms, the
make accepts the -j that enables concurrent operations.
zsh> make [-j]
This will build the complete distribution locally. If an error occurs,
it is best to report it at the (bugs@afnix.org) AFNIX bug report mail
address.
Testing the distribution
The distribution contains all test suites. The test suites are compiled
and executed with the following command.
zsh> make test
This command run the test suites for each library as well as the test
suites for each application client. Most of the base library test
suites are written in C++ with the application test suites written in
the core writing system.
Installing the distribution
Once the system has been built and tested, it can be installed. By
default, the distribution tree is installed into the /usr/local
directory. This can be overwritten with the --prefix option during the
configuration process.
zsh> make install
There are several variables that controls the behavior of the install
rule. Each variable has its default value sets during the setup
configuration. However, this variable can also be altered during the
installation process
Variable Description Default
PREFIX The root install directory /usr/local
SHRDIR The shared install directory /usr/local/share
ALTDIR The shared alternate directory /usr/local/etc
SDKDIR The system kit directory platform dependent
BINDIR The binary install directory prefix/bin
LIBDIR The library install directory prefix/lib
HDRDIR The header files install directory prefix/include/afnix
ETCDIR The extra files install directory altdir/etc/afnix
Installing the documentation
The documentation is installed independently of the software. The doc
rule builds the documentation and the publish rule installs the
documentation. Several variables also control the documentation
installation path.
Variable Description Default
DOCDIR The documentation install directory shrdir/doc/afnix
MANDIR The manual pages install directory shrdir/man
Cleaning the distribution
The distribution is cleaned with the clean rule.
zsh> make clean
This rule does not clean the configuration. For a complete cleaning the
reset rule is more appropriate.
zsh> make reset
Running AFNIX
The axi command invokes the interpreter. In order to operate properly,
the LD_LIBRARY_PATH environment variable must be configured with the
directory containing the shared libraries. If the libraries have been
installed in a standard location like /usr/local/lib, there is nothing
to do.
Running some example
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 0501
major version number : 2
minor version number : 1
patch version number : 1
interpreter version : 2.1.1
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 --proctype option of the afnix-setup command. Currently the
distribution supports the 586 and 686 architectures for the Intel
platform. The ultra architecture 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/ext directory. Simply going into the appropriate
directory and running the make command will build the extension. The
asi extension creates a static interpreter with all libraries
automatically included in the final executable. The extension is simply
build with the following command. Note that this extension overwrite
the previous executable in the bld/bin directory.
zsh> make -C src/ext/asi
Extra files
The distribution comes with some extra files. The most important is the
Emacs mode afnix-mode. The original source file is written in Emacs
Lisp and is available in the etc directory of the distribution. This
file should be installed according to the current Emacs installation.
MAINTAINER NOTES
This chapter contains additional notes for the package maintainer. They
are also useful for anybody who is in charge of integrating the
distribution in a build process. The chapter describes the distribution
tree with more details.
The distribution tree
The distribution tree is composed of various directories. Each of them
has a Makefile which can be called locally or from the top level.
cnf
This directory contains the configuration distribution and
various utilities. Normally you should not touch it, unless you
are using a compiler different than gcc.
src
This directory contains the complete source tree. The source
code is written in C++. Normally this directory is left
untouched. If there are good reasons to modify it, please
contact the development team.
tst
This directory contains the complete test suites. The test
suites are used by various programs including the main
interpreter, the compiler and the debugger. It shall be noted
that the library distribution also includes specific test
suites.
doc
This directory contains the complete documentation written in in
XML with a special DTD. It should be left untouched.
etc
This directory contains various files associated with the
distribution. Some files are useful to be copied.
exp
This directory contains various examples. They are included for
illustration purpose.
The process of building a package solely depends on the distribution
type. Most likely, the standard distribution should contain the binary
executables as well as some configuration file and the manual pages.
The documentation and the development header files can put in separate
packages.
Configuration and setup
The configuration process involves the use of the afnix-setup command
located in the cnf/bin directory. This command is used to configure the
distribution. Package maintainers are encouraged to use it with
specific options.
Platform detection
The afnix-guess command is used during the configuration process to
detect a supported platform. This command can be run in stand-alone
mode. Various options can be used to tune the type of information
requested.
Option Description
-h Print a help message
-n Print the platform name
-v Print the platform version
-M Print the platform major number
-m Print the platform minor number
-p Print the 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-2.6-ia32-generic
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 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 differents 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 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 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 cloud 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 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 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
Release features
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
Release features
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
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 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 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 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 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 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 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 Time class also incorporates a small fix for the to-rfc
method.
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 management or wam is 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-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
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 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
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 language which 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 language and which has been discontinued. A
complete history of the language is provided in the description
page.