[ Home | Contents | Search | Post | Reply | Next | Previous | Up ]
From: r36@nikhef.nl
Date: 10/18/99
Time: 7:21:29 PM
Remote Name: 137.138.115.156
Hi, A new version of ROOT is released. It seems a lot of effort has been put in making the various parts more modulair, i.e. less dependencies between libraries etc.. (e.g. not needed to 'load/link' graphics if not needed..) The none-modularity of ROOT was always an important argument/reason to avoid incorporating ROOT within the OO developments around the Gaudi project. As ROOT is claimed to be more modulair I would find it worth while to discuss and reconsider the use of parts of ROOT. I included the release announcement for those intrested. with regards, Rutger van der Eijk. > Subject: > ROOT version 2.23/04 is now available > Date: > 14 Oct 1999 11:12:41 +0200 > From: > Rene Brun <Rene.Brun@cern.ch> > Organization: > CERN > Newsgroups: > cern.root > > > > > 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