[Prev][Next][Index][Thread]

Download: gbeta 0.81 -- an advanced OO language



We are happy to announce that 

			      gbeta-0.81
			      ----------

is now available!


News
====

Since gbeta-0.8, the source code has been ported to the new release
5.0 of Mjolner BETA, and the MetaProgramming subsystem has been
updated.  Most changes are below the surface and should not affect
you as a user; in particular, steps have been taken towards generating
stand-alone files with byte-code.  At the language level---and as an
experiment---an `eval' command has been added to the language.  The
documentation has been updated, especially the man page.


What Is It?
===========

gbeta is an advanced OO language which supports virtual attributes
(including virtual classes), general block structure, and dynamic
inheritance in context of strict, static typing.  It is a
generalization of the language BETA.  The package includes an
implementation of the language which performs static analysis,
generates byte code, and runs the given program (i.e. it works like an
interpreter as seen from the outside).  It is integrated with GNU
Emacs and programs can be single stepped, declarations can be looked
up by double-clicking etc. in this environment.

The current version of gbeta comes without standard libraries, and the
performance is not good, so it is relevant to use it if you want to
play around with a bleeding edge OO programming language in order to
see what possibilities the basic mechanisms of the language offer you
as a programmer, but it is not yet ready for real-life application
development.  If you want to help getting it there, please speak up!

As an example of the power of the combination of generalized virtual
attributes, see the paper 

  @InProceedings{ernst99:prop_comb,
    author =       {Erik Ernst},
    title =        {Propagating Class and Method Combination},
    booktitle =    {{ECOOP'99} -- Object-Oriented Programming},
    pages =        {67--91},
    year =         1999,
    editor =       {Rachid Guerraoui},
    volume =       {LNCS 1628},
    address =      {Heidelberg},
    publisher =    {Springer-Verlag}  
  }

The idea is that combinations of classes (similar to multiple
inheritance) and combinations af methods (similar to method
combination as with before/after/primary methods in CLOS) is applied
recursively.  The initiation combination may be expressed like this:

  Window & Door       (* combine two classes *)
  open & print        (* combine two methods *)

Now, these combination operations _propagate_, in the following sense: 
If the classes Window and Door have a method M in common, then the
resulting method M of (Window & Door) will be computed by "adding up"
the contributions from Window.M and from Door.M.  Similarly, if the
methods open and print have an argument type T in common, then the
corresponding argument type of (open & print) would be computed as a
combination of open.T and print.T.  

This was an example of a 1-level propagation; if open.T and print.T
have a method N in common, then the N of (open.T & print.T) will be
constructed from the contributions in open.T.N and print.T.N -- that
would be a 2-level propagation.

Excessive treatment of gbeta :-) is available in my Ph.D. thesis; it
will be made available from the web site mentioned below when the
copyright formalities have been sorted out..


Platforms
=========

gbeta-0.81 is available on Linux (2.0.X, 2.2.X) and Solaris 7.  HP/UX
and SGI currently cause some linking problems but may be added later.


Documentation
=============

The gbeta web site at 

             <URL:http://www.daimi.au.dk/~eernst/gbeta/>

contains information about installation, getting started, a tutorial,
references to papers, and several other topics.  My PhD thesis (which
is mainly about gbeta) will be made available from this web site, too.


Download
========

gbeta can be downloaded from the above mentioned web site at 

  <URL:http://www.daimi.au.dk/~eernst/gbeta/index_download.html>

or by ftp at

  <URL:ftp://ftp.daimi.au.dk/pub/empl/eernst/gbeta-0.81/>


Author, Contact person, Etc.
============================

Erik Ernst, 
Email: eernst@cs.auc.dk


  enjoy!

-- 
Erik Ernst                                    eernst@cs.auc.dk
Department of Computer Science, University of Aalborg, Denmark