IGLib.NET
This page provides some
information about the IGLib.NET
(Investigative Generic Library), a base library
for efficient development of technical and other
applications on .NET framework or its alternatives.
Currently, IGLib is used by the author and his partner
institutions for their projects, but there is an
intention to release it as free open source library when
it reaches sufficient maturity level.
|
|
About the library
IGLib
(Investigative Generic Library) is a base utility library for
efficient development of cross-platform technical and other
applications. It is developed for the .NET
framework and its alternatives (such as Mono).
The library has been designed and developed
by Igor
Grešovnik. It contains various general utilities
such as those for parsing of strings, auxiliary utilities for
building GUI, a numerical library, I/O utilities, 2D and 3D graphics modules,
parallel computing module, command-line and fully object-oriented
interpreters, application framework, etc. It aims at
providing a well designed base library for development of
complex numerical and other technical applications. Parts of the
library have also been used in other areas such as a system for
managing a histological laboratory or large scale invoicing
support system.
Historically, the initial
motivation for development of the library arose from the needs to
have a good base library for development of complex optimization
software. One of the goals
was to take utilities and standards from the IOptLib
C library and transfer them to an expressively object object
oriented C# library, in order to elaborate, extend and implement
ideas about how an environment for efficient development of
industrial scale optimization software can be established.
However, the library has been developed in a much broader sense
since the very beginning of its development.
The library depends on several external libraries, of which
majority are open source (see the Readme
file for more details). It is structured in hierarchic layers that
are arranged according to the dependence on different types of
libraries with respect to permissiveness of their licenses and
according to cross-platform transferability. The extensive base
layer is allowed to depend only on free open source libraries whose
licenses does not impose any restrictions neither on commercial nor
on research use of the libraries or distribution of the derived
products. The IGLib itself
has not yet been publicly released under free license. Prior to
doing so, its author would like to establish stable enough
development conditions with enough interested parties to enable
sustainable development. However, the author welcomes initiatives
for development partnership based on technical or research projects,
especially those with ambitious and exciting goals.
System Requirements
IGLib is developed in C# and it targets the 64 bit .NET framework and its
alternative implementations such as Mono. It is intended as
higher level utility library for development of cross-platform
applications.
Currently, the target platform is .NET 4.0, which is
commonly available across the main computing platforms (e.g. in form
of the open source Mono
implementation). The source code of substantial portions of
code can be compiled for lower versions of the framework, however
the official recommendation is to stick with .NET 4 or higher.
It is straight forward to port the library to any modern
computing platform. The only requirement is that a .NET 4 or
compatible framework is installed on the computer. Many operating
systems already include the framework, but if not then you will have
to download and install the .NET
framework (for Widows operating systems) or Mono (cross-platform)
before using the library.
It might not be completely straight forward to install the
framework on older operating systems. For example, on
Windows XP, you will need to install the Service pack 3 before
installing the .NET 4 or later. We have not checked whether the
service pack is also required when using the Mono framework instead
of .NET.
There are some specialized portions of the library that are
difficult to use on some older operating systems. This is true e.g.
on 32 bit Windows XP for the 3D graphics modules that are based on
the ActiViz,
C# wrappers for the VTK library
(used e.g. in NeurApp,
AnnApp, IGShell, and some
other applications). In these applications, all functionality that
does not use the problamatic libraries should still work correctly.
For example, with some applications for ANN modelling, one can do
everything except showing 3D plots of 2-parametric studies. When
launching such a plot, an error message is launched, but one can
continue to use the application for other tasks.
In the case of VTK-based 3D plots, the problem is because 64
bit native libraries are linked with the code, and these can not be
loaded on a 32 bit system. Due to just in time compiler (JIT), this
is not an issue with managed libraries, but linking with native
libraries is different. In order to use 3D modules on 32 bit Windows
XP, one must use the code that is specifically compiled for 32 bit
windows. Such code would also work on all 64 bit windows systems,
but it would the applications would be limited to use up to 2 GB
RAM. Therefore, downloadable applications are usually prepared for
64 bit windows. If you would like to use full functionality of such
applications on 32 bit Windows, check the web site if there is also
a 32 bit version.
Availability
The library source code is currently available only upon
special agreement with the author. Author's interest is that the
library is used and/or developed under a limited number of partner
agreements until it reaches a sufficient maturity level. Te
intention is that the library is released under a free open source
license when it reaches sufficient maturity level and a solid user
base.
A number of applications base on the IGLib have been
developed by the author of the library or under partner agreement.
Library binaries are currently available with a simple application
that very briefly demonstrates a possible use of the library for
developing an interpreter-based application. You can check it out
here and download
the demo. The demo contains a Visual Studio project for building
the application. It is basically just a framework of a
command-line interpreter based application whose architecture
follows the simple application framework rules that are used for
some development projects, student projects, small research
projects and alike.
The IGLib binaries are currently available as part
of several applications,
some of which are available on the internet and can be downloaded
together with the library dll-s. Some of these applications are
listed below.
IGShell - A command-line
shell aplication built on IGLib
This is a simple shell application created to demonstrate the
use of the IGLib libraries in the shell applications. A Visual
Studio (or MonoDevelop) project is attached that demonstrates how a
simple shell application is created according to the IGLib
Standards.
The project also includes two hosted applications, the HashForm
and HashShell. HaskForm is a simple but
useful application for calculation and verification of hash values,
and can thus be used as file verification software. HashShell
includes utilities for performing common cryptographic tasks such as
calculation and verification of cryptographic hash functions,
symmetric encryption and decryption, asymmetric encryption,
generation and manipulation of keys, digital signatures, and others.
NeurApp - Exploring
Approximation by Artificial Neural Networks
A simple application for learning and exploring some features
of approximation by artificial neural networks. NeurApp is a
free software that can be downloaded from the links below.
A GUI-based application for creating ANN-based models
by training neural networks on provided data, compatible with the NeuralShell.
The software contains modules for graphical representation of model
results, which enable to extract, with minimal effort, as much
useful information as possible from complex models. It will also be
useful for modeling professionals in order to quickly grasp model
features and doing some simple analytics.
A small application for modeling various kinds of
linear and nonlinear driven oscillators. It vas created by Marko
Petek in the scope of his graduate thesis (under my
supervision) and will soon be available on the internet.
NeuralShell -
Development of Complex Models Based on Artificial Neural
Networks
This is a professional application for industrial-scale
modelling of and for conducting research on artificial neural
networks. It is being developed in the scope of COBIK projects by Igor Grešovnik
and Tadej Kodelja (who is also preparing his Ph.D. thesis on basis
of the software). This versatile software is driven by a two level
interpreter system, which enables high flexibility and extensibility
through C# scripting engine. Demonstrative examples will be prepared
for download in the future.
A GUI-based application for exploring results of ANN
modeling, compatible with the NeuralShell. It is primarily intended
for use by the people who are not skilled in using computers, in
order to interactively extract as much useful information as
possible from complex models in a short time and with minimal
effort. It will also be useful for modeling professionals in order
to quickly grasp model features and doing some simple analytics.
Documentation
IGLib Code Documentation (base index,
classes,
members).
Code documentation for the library, automatically generated from
documentation comments by Doxygen, a
remarkable documentation generation tool. Only a part of the library
is currently documented, since the majority of code is scattered
between various projects and in testing areas.
- Extended
documention - with additional libraries and applications (base
index, classes,
members)
- Older versions: IGLib
1.6 (base
index, classes,
members),
IGLib
1.5 (base
index, classes,
members),
IGLib
1.4 (base
index, classes,
members).
See also:
Examples
To be added...
Archive
Archive of documentation and downloads for older version of
IGLib and related software is maintained here.
In this way, you can find and download older versions of software in
order to investigate and resolve compatibility issues, or use
discontinued features. This is a central location for searching for
older versions, but some software pages may maintain their own
archives of older versions, such as IGShell,
for example (which also includes distributions of HashForm
and HashShell).
Archive
home. Contains links to archived documentation and
downloads.
IGShell
archive. Contains older versions of IGShell,
which include HashForm
and HashShell.
See Also
A How-to
Guide on Creating Bootable Media (=>,
PDF).
Details procedures and tools for creating bootable media for various
scenarios. These procedures were used for testing and the IGLib-based
software,
although the described procedures are general and useful in many
situations. Document is composed in form of a how-to guide with
additional explanations to make things clearer and more
understandable. By Igor Grešovnik, April 2016.
This site was partially sponsored by ITAIA electronics.
Search within this
site: