News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

HLA Stdlib v2.3 is now available

Started by Randall Hyde, October 01, 2007, 11:51:26 PM

Previous topic - Next topic

Randall Hyde

Hi All,

The HLA Standard Library, v2.2 is now available on Webster.
You can download a copy from the stdlib v2.x support page:

http://webster.cs.ucr.edu/AsmTools/HLA/stdlib2/index.html


v2.3of the HLA stdlib includes rewritten code (from HLA stdlib v1.x)
and a complete test suite for all the functions.

This release fully supports Windows and Linux and is "code complete" with respect to the functionality found the in original HLA stdlib v1.x (obviously, there are lots of new functions coming down the pike, including a bunch of user-contributed functions by Sevag). Indeed, only the documentation needs to be brought up to date (that will be v2.4) before the port to FreeBSD begins (which will be v3.0).

One of the principal benefits of the v2.x standard library over the older 1.x library is the new automated regression test suite. This code automatically checks the operation of just about every function in the standard library using a wide range of input values (some functions only a few checks, some functions get as many as a billion checks -- it all depends on the semantics of the function).

The HLA stdlib v2.x has been completely refactored/rewritten from v1.x over the past year. This refactoring has resulted in more efficient (faster) code as well as code that is much more stable.  100s of defects have been eradicated from the old code. Furthermore, the semantics of the functions across multiple OSes has been *greatly* enhanced. With this release, about the only difference you'll find between applications written for Linux versus Windows is the end-of-line character that is written to files.  The HLA stdlib version 2.3 eliminates many of the nagging inconsistencies that created problems for some HLA programmers doing cross-platform work in the past.

The HLA stdlib v2.x also includes an automated build generator that will automatically generate a set of make files for the library code (including any new functions the user might want to add). This "mkmake" program recursively determines all the dependencies in the HLA and HHF files and creates appropriate make files for Windows or Linux/*NIX. This eliminates a lot of maintenance headaches for someone who is working on the library, especially for newcomers to the project who might otherwise feel overwhelmed by the magnitude of the project.

Another advantage to the new code is that it is almost completely written in "pure" assembly language, so it can serve as an advanced assembly language educational tool (the code is not suitable for beginners as much of it is a bit too advanced for them, but it's great code for someone to look at as they begin to gain some experience with assembly language).


The HLA standard library includes over 1,000 functions and macros
callable from assembly language programs.  Combined with the test suite, the entire library represents nearly 400,000 lines of assembly code.  Compressed, the library module consumes 4.6 MB, it expands to over 23 MB of source code and test data (not including object and library files).

The library itself is currently organized into the following modules:


args -- command-line argument manipulation.
arrays -- array manipulation
bits -- bit manipulation
chars  -- character routines and predicates
conv  -- conversion functions
cset -- character set operations
datetime -- date and time calculations
fileclass -- object-oriented file operations
fileio -- file operations.
lists -- object-oriented list operations
math -- extended precision integer operations and floating-point
functions
memory -- memory allocation and deallocation.
os_console -- console app display manipulation
os_coroutines -- coroutine support
os_dependent  -- miscellaneous OS dependent functions.
os_env -- environment variable support
os_excepts -- exception handling support
os_fileio -- file I/O functions (platform-dependent code)
os_filesys -- file system operations (platform-dependent code)
os_linux -- Linux support functions
os_memmap -- Memory-mapped file support code.
os_timer -- code timing support
os_windows -- Windows support functions
patterns -- pattern matching library
random -- random number generators
stderr -- output to the standard error device
stdin  -- input from the standard input device
stdout  -- output to the standard output device
strings -- character string functions
zstrings -- zstring functions.

Over the years, the HLA standard library has been, without question, the favorite component of the HLA system by HLA users. This new library will certainly carry on that tradition.

Ultimately, the goal is to get this project completely supported on SourceForge (there's actually a page there already, but it only contains the compressed files; eventually the plan is to use the source-code control facilities of Source Forge for world-wide developer access to individual functions).  The HLA standard library is current maintained on the Subversion source code control system, which will mesh quite well with SourceForge.

Enjoy!
Randy Hyde