GNU EDMA Beta 0.15
CORIE Module

http://www.gnu.org/software/edma
David Martnez Oliveira [dmartin <at> gnu <dot> org]
-------------------------------------------------------------------------

Warnning
--------
A lot of changes to internal structures were done for release 0.11 and 0.13 so this versions may be specially buggy, in the sense that it has been less proved than releases based on previous structures.

About 0.15 Release
------------------
Version 0.15 is a transitory version to release a final full stable version. It is a mostly stable version but requires heavy beta testing before a stable release can be done.
Hotswap feature is in alpha state and do not fully works
Please report any bug you find.

About 0.13 Relase
-----------------
The dynamic inheritance code currently lacks some checks which can make an application crash if they are not used correctly. 

CORIE
------------------------
This is the main core (aka CORIE) of the GNU/EDMA project. This is a mostly working alpha development release, so you can find bugs and features not completely implemented. It's also possible that some code was broken due to the heavy API changes from v 0.7.2 to 0.9.x. If you found some of these errors, please report iti to me.

Note too, that this is a development version and, its features are still being tested.

For any question, suggestion, comment or whatever, you can use the mailing list in the savannah's GNU/EDMA page:

http://savannah.gnu.org/edma

or contact me directly at: dmartin <at> tsc.uvigo.es or dmartin <at> gnu <dot> org

Note that this is the CORIE release and the classes included here can change at any time. Foundation Classes will be defined when GNU/EDMA API get frozen in a later version, for now only a basic set (mostly for testing) of classes is provided.

Bellow you can find some extra comments about the most important GNU/EDMA's features available in this release. For a detailed list look at the Changelog and NEWS files.

What's new?
-----------
The main new features in this release are listed in the NEWS file.
Detailed information is included in the ChangeLog file.

What's broken?
--------------
In this release some features of previous versions are broken.

* Virtual object features was removed
* SIU integration with inheritance primitives. Just level 1 SIU proxies allowed. 
* Multimethod, method invocation with signature. Not fully tested 

What's safe?
------------
In this release nothing is safe :). We need Beta Testers for full test the whole system.

If you are probing this release and you find some bug or you have any comment or suggestion, please report it directly to me or use the mailing lists at savannah.

Simple unit test are provided for the following features. They should work fine in most of the cases

- Object Creation and Destruction
- Method invokation and Property access (method/properties locators)
- Clonning features
- Dynamic super-like inheritance
- Anchor Point management (overwrite, remove)
- Virtual Methods
- Static methods

What's included?
----------------
This is what you can find in this release

* classes: This directory contains the minimal classes distributed with GNU/EDMA CORIE
* examples: Some simple examples about how to use GNU/EDMA
* include: the .h files you'll need to build your own GNU/EDMA classes and apps
* src: the GNU/EDMA core itself
* tests: some simple test about how to use GNU/EDMA features. 
	Someones can be broken in this development release!!!!!!
* tools: simple console based tools to manage GNU/EDMA, including
	- ClassInstaller: Allows you to add new classes to GNU EDMA registry
		from a .ines file
	- cleanup: Allows you to clean up shared memory struct when any GNU EDMA
		applications crashes in an unexpected way. This is a development release
	- EFileGen: console based code generator. Uses EDMA_BUILDER classes to make
		code skeletons for classes and applications, from .idf files.
    They may be broken.

What's GNU/EDMA?
----------------
GNU/EDMA is an Object Oriented and Component Based environment for application development. What makes GNU/EDMA different from other systems is that GNU EDMA does most of the processing dynamically, that is, at run-time. We call this, generically, Loosely Coupled Object Oriented Systems (LOOCOS). Other people names this systems: delegation based, object inheritance based,...

So, you can establish inheritance relationships among objects or even, you can dynamically override virtual methods, while the applications is running. Working this way you can build more real_life-like models and simplify a lot of common operations which, in most cases, needs complex patterns. Design patterns like Factories, Facades, Proxies, etc... are implicit in the GNU/EDMA programming model (in general in any delegation based system).

In addition to all this, the programming interface provided by GNU/EDMA is mostly based on strings so, concepts like automation or interactive managing are directly supported by the system in a very easy way.

GNU/EDMA provides some features normally found in programming language, but it is not a programming language. It's a system midway from OO programming language to a component-based environment. So GNU/EDMA allows you to use OOP even on non-OO programming language or at least that is its aim.

Additionally, GNU/EDMA provides facilities to build evolvable software. Plug-in based application becomes trivial when using GNU/EDMA. Applications can be directly updated in a modular way (just install the new components required by the new version), even at run-time.

Current version supports instalation of new versions of given components while applications are running. Currently available object continue using the old version, but new instances of the just installed component/class will automatically use the new version.

Heavy hot-swapping features will be provided in future versions.

What's CORIE?
-------------
CORIE is the GNU EDMA core, that is, the library that provides the main functionalities of the system, as well as, a minimum basic set of classes/components to begin working with GNU EDMA.

The classes library is still barely populated, but we are working to add the basic components needed by most applications. 

Installing GNU EDMA
-------------------
Installation process has been dramatically changed from old versions. Now, GNU EDMA uses autotools so compilation and instalation can be done in the usual way:
	
	# ./configure
	# make
	# make install

GNU EDMA Classes get installed at /usr/local/lib/edma. 

To install the system in other location use the --prefix option on running configure

The installation process still is been revised so, this release installs and registers all the classes included with the distribution. 

If you want to register new classes just compile and install it in the usual way (configure, make, make install) and then use ines_class_register against '.ines' files for each class you want available for your GNU EDMA apps.

You must be root to run "make install" and ines_class_register.

If you have any problem installing GNU EDMA, be free to contact me directly or through the savannah mailing lists.

Additional Note: PERL_INTERPRETER and ANNA_PYTHON_INTERP classes are not automatically installed due to some problems to statically linking interpreters in shared libraries using libtool. You must build the classes using the makefile provided and use ines_class_register and make -f XXXX install to install then.

Finally, test programs are not compiled automatically neither integrated in the autotools compiling process. They must be compiled manually using the provided makefiles. In general you need to run a commond like this:

make -f application.mk


Enjoy!

