ROOT version 2.23/04 is now available

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Oct 14 1999 - 11:10:32 MEST


Dear Rooters,

  the first stable development version of Root 2.23/04 is now available.
Please read very carefully the following points. This new version
has an important internal restructuring of the Root libraries.
There are also many new features introduced with this version.
We are asking your contribution to test this new version and give us
feedback.

Binaries are available under AFS. New platforms are supported.
See the list at http://root.cern.ch/root/Availability.html


Rene & Fons 



  NEW LIBRARY STRUCTURE
  =====================

  We have minimized libraries dependencies by:
    - moving classes to other categories (i.e. shared libraries)
    - introducing new abstract interfaces
    - removing unnecessary includes in the implementation files
    - calling classes via the interpreter when performance is not an
issue
    - some minimal changes in several classes

  With the new structure, for example:
    - a program referencing only TObject will need to link the following
      libraries only (the Root kernel): libCore and libCint.
      This "kernel" includes the Root I/O. There are no references
      to graphics, GUI, etc.
    - a batch program creating/filling/saving histograms and a Tree will
only 
      need the kernel above (libCore, libCint) + the libHist and libTree 
      libraries. 

  The following picture shows all the Root libraries and their
dependencies.
  All non-Core libs reference the Core library.
  Libs shown in green are dynamically loaded by the system when needed.

           http://root.cern.ch/root/html/gif/Root_Libs.gif


  Some new abstract interfaces have been introduced and some changes
(renaming)
  have been made in the existing abstract interfaces.

           http://root.cern.ch/root/html/gif/Root_Virtual.gif

  -TVirtualPad: abstract interface to graphics in a pad,
                real implementation is TPad.
                The new TVirtualPad does not derive anymore from TWbox
but
                directly from TObject.
  -TVirtualX:   abstract interface to the basic windowing system (was
TGXW)
                real implementations are TGX11 (Unix) or TGWin32
(Windows/NT)
  -TVirtualPS:  abstract interface to Postscript,
                real implementation is TPostScript.
  -TVirtualGL:  abstract interface to Open GL,
                real implementation is TGLKernel.
  -TVirtualFitter: abstract interface to a minimisation package,
                real implementation is TFitter calling TMinuit.
  -TVirtualHistPainter: abstract interface to histogram graphics,
                real implementation is THistPainter.
  -TVirtualTreePlayer: abstract interface to the TTree analyzer,
                real implementation is TTreePlayer.
  -TInterpreter: abstract interface to a C++ interpreter,
                real implementation is TCint.
  -TSystem:     abstract interface to the operating system,
                real implementations are TUnixSystem, TWinNTSystem,
TVMSSystem.

  The abstract classes are in the Core library.

  These new abstract interfaces increase dramatically the overall
modularity
  of the Root system. For example:
   - One can now easily implement an alternative to the standard Root
classes,
     by deriving from one of the abstract interfaces.
   - The linker knows only about the abstract base classes. For example,
     TObject::Draw references only the TVirtualPad. There is no need 
     to link with the graphics libraries if graphics is not used.

  Due to these changes the interactive Root module (root.exe) is now
  only explicitely linked against a few libraries (to see this do on
  linux: ldd $ROOTSYS/bin/root.exe). There is even no need anymore to 
  explicitely link against X11 libraries (even for you own apps).
  During the execution only the needed libs will be loaded, e.g. if you
  don't fit during your Root session you will never load the Minuit
  library or if you run in batch mode (-b option) you will not load any
  graphics libs.


  IMPORTANT NEW FEATURES
  ======================

  - New version of CINT with new features.
  - Important changes in class TClassTree.
    See TClassTree header for a complete documentation.
    The new version of this class is more poweful and simple to use.
    All kinds of class dependencies can be drawn.
  - Integrate changes in the THREAD package by Joern Adamczewski, Hans
Essel,
    Marc Hemberger. See their report in the notes.
  - Important improvements in the TLatex class. 
  - Classes TPaveLabel and TPaveText use TLatex instead of TText.
  - The graphics editor option Text uses TLatex instead of TText.
  - Histogram titles and axis titles accept a TLatex expression.
  - InitGui() graphics initialization function not needed anymore.
  - CVS repository created. The latest sources can now be retrieved from
    our anonymous CVS repository. However, it is still needed that you
    start with a valid binary distribution, to where $ROOTSYS must point
    (the binary version only has to be installed once). 


  BACKWARD INCOMPATIBILITIES
  ==========================
 
  - Users having classes referencing the old TGXW class must replace
TGXW
    by TVirtualX and the corresponding global pointer gGXW by gVirtualX.
  - The global pointer gCurrentPS has been renamed gVirtualPS.
  - The global pointer gGLKernel has been renamed gVirtualGL.
  - The methods TObject::Is3D and TObject::Sizeof3D have been removed.
  - New class TAtt3D: use this class via multiple inheritance
    to get 3D capability (like the other TAttxxx classes and like
    Java's interface mechanism). The virtual function, Sizeof3D(),
    provided by this class should be overridden. See release notes
    for more info about TAtt3D.
  - The libraries libBase, libCont, libMeta, libClib, libUnix/libWinNT
    and libZip are merged into one single library libCore.
  - To be insulated in the future against any library changes try to use
    as much as possible the provided script $ROOTSYS/bin/root-config.
For
    its use see $ROOTSYS/test/Makefile.


  LINKING parameters
  ==================

  - To be insulated against any library changes and to get the proper
    list of Root libraries to link with use the provided script
    $ROOTSYS/bin/root-config. For its use see $ROOTSYS/test/Makefile.
  - X11 dependence is now completely contained in libGX11. No need to
link
    anymore an application explicitely with -lXpm and -lX11. Dynamically
    loading of libGX11 will also force the loading of libXpm and libX11.


  IBM AIX
  =======

  Thanks to this restructuring, we are now able to provide the same 
  structure on AIX as on the other Unix platforms.
  The old and big library libRoot.a has been split into several libs.
  See above remark about root-config to list the libs under AIX.

  A complete list of all changes and improvements, bug fixes, etc. can
  be found in the Release notes for version 2.23/04 at URL:
         http://root.cern.ch/root/Version223.html



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:40 MET