Core
TString
-
Reimplementation of the internals of TString to not use reference counting and
copy on write, but to use a more modern and thread safe Short String
Optimization (SSO) technique. Using SSO short strings (<15 on 64-bit and
<11 on 32-bit) are contained in the TString internal data structure
without the need for mallocing the required space.
TObject
-
In TObject::ls, add support for the option 'noaddr' which
prevents the printing of the address of the object. This
is useful in particular in roottest. Use this in hadd
and TFileMerger
TROOT
- New routine CloseFiles used automatically shortly before termination to
insure closing of files and sockets before the unload of any library.
- New collection 'ClosedObjects' holding pointers to TFile or TSocket that
have been closed but not deleted it. In the case of TSocket, they are added only
if they are closed by the CloseFiles.
- Add a Close member function to TProofMgr since it is added to the list of socket.
- Migrate the closing of files from various to a single place (T*System::Exit).
- Fill in the implementation of TROOT::FindObjectAnyFile.
- Mark TROOT as TObject::kInvalidObject as soon as its destructor starts,
in order to be able to veto some action later on (like autoloading).
TSystem
- Better handle the cases where the information in the rootmap file is (almost) empty.
Avoid infinite loop if one of the dependent library is missing.
Meta
- Add new fast accessors to Merge routines (See the I/O package for more details.
- Improve error message in case a schema evolution rule can not be loaded when the library is loaded
(from the generic 'it conflicts with one of the other rules' to 'the target member ... is unknown'.
- Add the ability to explicitly forbid (or allow) the splitting of a class
(TClass::SetSplit ) so that user can inforce the use of a custom streamer in all possible split cases.
- Improve the performance of TProcessUUID::AddUUID by reintroducing the THashList.
This significanly improve the performance of reading file with very large number of
directories (A file with 100,000 directories was traversed in more than 8 minutes
and is now traversed in 15s) without noticeable affecting small files.
TFolder
- Several enhancement and clarification to TFolder::FindFullPathName.
TStyle
ACLiC
- ACLiC now passes the macro __ACLIC__ to both the rootcint and compiler phases.
TWinNTSystem
- Fix 64-bit compatibility issues (__asm keyword is not allowed).
- Try (as much as possible) to avoid the disturbing "There is no disk in the drive. Please insert a disk into drive \Device\..." popup message box when calling AccessPathName() on removable disk drives with no media installed. This should fix the problem reported on the forum.
- Prevent short timers (e.g. 10ms) to keep looping in the DispatchOneEvent() infinite loop.
- Better stdout/stderr redirection (it was impossible to restore stdout using freopen on Windows 7, leaving the console as a zombie...)
- Make sure the stdout/stderr redirection works also in the case there is no console (i.e. in stand-alone applications).
- Make sure the file descriptors are valid before using them.
- The shortcuts are now working on Windows.
Building with CMake
- ROOT can now be build using the CMake build system (version 2.8).
The initial supported platforms are Linux(gcc), Windows (vc9), MacOSX(gcc). The installed libraries and executables should be compatible to the standard build of ROOT. CMake generates native makefiles and workspaces (i.e. Xcode, Eclipse, Visual Studio) that can be used in the
compiler environment of your choice. The main difference with respect
the Module.mk build is that the build is done out of the source tree,
which allows several build configurations in parallel (debug,
non-debug, optional components, etc.). The main advantage
with respect the standard build system is that for the Windows platform
it does not require the installaton of CygWin.
- Here are the basic instructions:
mkdir <builddir> # create a empty directory in which CMake will put temporary and binary files
cd <builddir>
cmake [options] <rootsources> # by default it will generate a Makefile (or NMake file on Windows)
make [options] # you can use any standard make options (e.g. -jN)
make install # installation to the source tree by default, use CMAKE_INSTALL_PREFIX to change it
- The CMake options and parameters can be viewed using the ccmake utility (cmake-gui for Windows). Here is a quick summary of them:
-DCMAKE_INSTALL_PREFIX=<installdir> # installation prefix
-Dxxxx=ON -Dyyyy=OFF # Optional ROOT components (e.g. tmva, mathcode, gdml, etc.)
-DGIF_INCLUDE_DIR=/usr/include # Specify locations for external libraries and packages
-DGIF_LIBRARY=/usr/lib64/libgif.so
-G <generator name> # E.g. "XCode", "Eclipse CDT4 - Unix Makefiles", "Visual Studio 9 2008 "
-DCMAKE_BUILD_TYPE=Debug # Other build types: Release, RelWithDebInfo, MinSizeRel
TextInput library
Replace getline / editline libraries by a single, new, platform
independent TextInput library. Previously, ROOT used separate readline
implementations for Windows (clib/Getline) and a ll other platforms
(editline/[n]curses based). The Windows prompt was limited to one line
(with '$' as continuation character), no colors, etc. The new
TextInput library works on all platforms the same way, with history
and color highlighting, multiple inputs and outputs (prompt, GUI), and
without the need to link [n]curses, i.e. it's much smaller than
before. It implements all bash-like editor shortcuts and it
enables us to add e.g. context sensitive help in the future.
The only known backward incompatibility is the constness of the
return type of Getlinem() and Getlinem(): they now return const
char*.