# 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.0

### Release features

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.
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.
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.
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.
The `HttpProto` default version has been move to 1.1 for both the request and response objects.
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.
The `XneCond` object has been enhanced to support various xml object. The `XmlPi` has been enhanced to support attributes derivation from the string value.
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.
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

The long awaited `unref` reserved keyword has been added as a mechanism to unreference a symbol.
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.
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.
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.
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.
The `Counter` object has been added as a reserved object. The counter is designed to be used directly in loop.
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.
The `Pathname` object has been enhanced to detect the type of path associated with the object. Additionally, a `normalize` method has been added.
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.
The `NamedFifo` object has been added to the module. The class provides the support for a large string based fifo with file saving capabilities.
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.
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.
The `RC2` block cipher algorithm has been added to the module.
The documentation distribution rules have been rewritten and the "publish" rule has been added.

## Release 1.8

### Release features

The `distclean` top level makefile rule has been renamed as `reset`.
The stream engine has been cleaned with a new architecture. Two new objects `InputStream` and `OutputStream` acts as the foundation of this new design.
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.
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.
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

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.
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.
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.
The core engine has been updated with the new Unicode 5.1.0 database.
A serious bug in the form synchronize engine that would cause an engine crash when a form is nil has been fixed.
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.
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.
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

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

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.
The core engine has been adapted to support the new MACOS X Leopard operating system.

### Release history

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

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.
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.
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.
The `PrintTable` object has been enhanced to support the concept of table header.
The exception object `what` can be thrown with the reserved keyword `throw`. This provides a mechanism to re-throw an exception.
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.
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.
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.
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.
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.
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.
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.
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.
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

AFNIX 1.5.2 has been released. This is a minor release that fixes the build process with GCC 4.2.
AFNIX 1.5.1 has been released. This is a minor release that fixes the documentation targets during the build process.
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

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.
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.
The `PrintTable` object has been enhanced with a `dump` method similar to the `format` method.
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.
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.
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.
The `afnix-web` module has been removed and replaced by the `afnix-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

This release is a minor release that fixes the "install" rule in the etc directory.
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.
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.
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

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.
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.
A heap class has been added. The heap can operate in ascending or descending mode. This class can be used to support priority queue.
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.
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.
The `axs` client has been modified to support the `axs:insert-marker`, `axs:insert-header` and `insert-footer` control commands.
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.
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.
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.
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

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.
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.
The `Address` class has been updated to reflect the access to address aliases.
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

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.
The cryptographic library incorporates the support for the SHA-1, SHA-256, SHA-384 and SHA-512 hash algorithms.
The cryptographic library incorporates the support for the Advanced Encryption Standard (AES) as a symmetric cipher.
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.
The XhtmlPara class is now configured to support XHTML 1.1 with utf-8 encoding.
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

This release incorporates a fix for a terminal capability error.
This release incorporates fixes for several build problems with the FreeBSD platform.
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

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.
This release incorporates a minor fix that could cause the build process to fail.
This release incorporates a minor fix that could cause the build process to fail.
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.