120 likes | 131 Views
Rene Brun 2 May 2005. Introduction to the CINT/Reflex workshop. History. 1991: Masa starts development of CINT 1995: Masa presents CINT at CERN 1996: ROOT chooses CINT 1997 Development of rootcint , an extension of makecint , generating the I/O functions and Streamers.
E N D
Rene Brun 2 May 2005 Introduction to theCINT/Reflex workshop
History • 1991: Masa starts development of CINT • 1995: Masa presents CINT at CERN • 1996: ROOT chooses CINT • 1997 Development of rootcint, an extension of makecint, generating the I/O functions and Streamers. • 2002: LCG chooses to start from scratch with gccxml and lcgdict, SEAL and POOL. • 2003: LCG review recommends convergence between dictionaries. • 2004: Development of Reflex starts. Masa starts a major upgrade of CINT version 6. Pyroot by Wim & Pere • 2005: April: New LCG review supports merge of SEAL and ROOT. • 2005: May workshop
Makecint (since CINT early days) Generates stub functions such that compiled code can be called from interpreted code. CINT DS CINT API X.h makecint CINT XDictcint.cxx
Rootcint (1996) rootcint extends makecint to generate the I/O functions and ShowMembers ROOT meta classes get information from CINT. They contain additional info useful for the I/O and schema evolution. Root meta C++ CINT DS ROOT CINT API X.h rootcint CINT XDictcint.cxx
ROOT and CINT development model • Masa develops CINT as a standalone system with his own code management system. • Every week, cint.tar.gz is sent to CERN and untared in $ROOTSYS/cint • ROOT is a major customer for CINT • But many people using CINT outside ROOT. • We want to preserve this in the future
Why lcgdict ? • In 2002 lcgdict & POOL started • because rootcint/makecint considered to be not powerful enough to parse LHC classes. • because multiple backends are considered, ROOT being only one. • gccxml considered as a robust parser • lcgdict : a python script converting xml code to c++
lcgdict: before Reflex lcgdict API lcgdict XDictlcg.cxx lcgdict DS X.xml Root meta C++ POOL gccxml pylcgdict ROOT CINT API X.h CINT DS POOL uses lcgdict and fills ROOT/CINT structures only when the ROOT storage service is used pylcgdict is developed: python used to call LHC classes. CINT cannot be used for LHC classes.
lcgdict: with Reflex Reflex API lcgdict XDictlcg.cxx Reflex DS X.xml Root meta C++ POOL gccxml pyreflex ROOT CINT API X.h CINT DS POOL uses lcgdict and fills ROOT/CINT structures only when the ROOT storage service is used pyreflex is developed: python used to call LHC classes. CINT cannot be used for LHC classes.
Reflex and Cintex REFLEX API lcgdict XDictlcg.cxx REFLEX DS X.xml Root meta C++ cintex gccxml pyreflex CINT DS ROOT CINT API X.h CINT
Dictionaries : situation today REFLEX API lcgdict XDictlcg.cxx REFLEX DS X.xml Root meta C++ cintex gccxml pyreflex CINT DS ROOT CINT API X.h pyroot rootcint XDictcint.cxx CINT
Proposal • We are proposing to cooperate with Masa for the development of a new API and data structure supporting all the features of the current C++. • This package could be based on a merge of the existing Reflex system with the new version of CINT developed by Masa. • This new package will be distributed with CINT and usable with non-ROOT applications. • This new system will be discussed with the C++ standardization committee, such that the proposed new C++ features will be part of CINT as soon as they are agreed.
Dictionaries : where we would like to go Python CINT Root meta C++ Reflex/Cint DS ROOT CINT/Reflex API new rootcint X.h XDictcint.cxx Gccxml2reflex/cint