cling s context status and plans
play

Clings Context, Status and Plans Prototype of ROOTs new Interpreter - PowerPoint PPT Presentation

Clings Context, Status and Plans Prototype of ROOTs new Interpreter and Reflection Database Axel Naumann, 2011-03-14 Timetable 9:05 Motivation for cling 9:10 Context for a new interpreter 9:20 Status 9:25 Plans 2 Motivation 3


  1. Cling’s Context, Status and Plans Prototype of ROOT’s new Interpreter and Reflection Database Axel Naumann, 2011-03-14

  2. Timetable 9:05 Motivation for cling 9:10 Context for a new interpreter 9:20 Status 9:25 Plans 2

  3. Motivation 3

  4. Motivation Deficiencies of CINT now relevant: Correctness C++ support, also C++ 1x Speed Maintenance 4

  5. Why cling cling based on open source compiler llvm / clang Correctness C++ support, also c++ 1x Speed Maintenance 5

  6. Why cling cling based on open source compiler llvm / clang Correctness C++ support, also c++ 1x Speed Maintenance 5

  7. Why cling cling based on open source compiler llvm / clang Correctness C++ support, also c++ 1x Speed Maintenance 5

  8. Why cling cling based on open source compiler llvm / clang Correctness C++ support, also c++ 1x Speed Maintenance 5

  9. Why cling cling based on open source compiler llvm / clang Correctness C++ support, also c++ 1x Speed Maintenance 5

  10. Context 6

  11. Context BACKWARD COMPATIBILITY! CINT features, C++ extensions ROOT Reflection & I/O: TCint, TClass Dictionaries: selection.xml, Linkdef.h Reflex 7

  12. CINT features, ++C++ Dynamic scope: new ¡TFile(“h.root”); hist-­‑>Draw(); .x mycode.C Un- / Reloading: //edit .x mycode.C #includes, library loading, variable declaration: all implicit 8

  13. ROOT Reflection Interface to CINT is TCint; re-implement using cling/clang/llvm Proper overload resolution (signal/ slot etc) Will allow full access to C++ through ROOT (enum, ...) Simplifies dictionaries (shadow,...) 9

  14. ROOT Reflection (2) Reflection database: clang abstract syntax tree (AST) authoritative covers full language built-in persistence: precompiled headers (PCH) 10

  15. PCH / Dictionary Depend on platform not compiler! No wrappers needed if LLVM-JIT available (e.g. all LCG platforms) Less disk size, less RAM: partial loads on demand FAST lookup: used by clang itself

  16. ROOT I/O type names change // CINT: // clang: vector<string> std::vector<std::string> A::B<C> A::B<A::C> ROOT with CINT ROOT with Cling using namespace std Old TFile A::B<C> new lookup 1) change type names OR Future TFile 2) Backport to old ROOT 12

  17. Type Names and ROOT Very different from CINT7! CINT7 cling Functionally Type Names CINT-compatible equivalent Reflection DB Reflex clang Type Lookup CINT, Reflex clang Dict Format CINT, Reflex clang* Handling A<B=alloc> CINT vs Reflex clang vs A 13

  18. Dictionaries selection.xml, Linkdef.h will map to same selection algorithm (already implemented) Selection on clang AST (to be done) Backward compatible invocation and output (happy Makefiles) 14

  19. Reflex Becomes 2nd-tier reflection interface Reflex exposes underlying collection types through typedefs. Two options: Copy clang AST to Reflex Change underlying iterator types Up to the experiments to decide 15

  20. Status 16

  21. Status Interpreter: ROOT with execution in cling, reflection in CINT Some CINT extensions implemented .x hsimple.C just works! No changes in clang + llvm needed! 17

  22. Status (2) Reflection: Linkdef / selection.xml parser 70%: Reflex dict from clang AST 50%: dictionary in PCH, to do: >1 PCHs, AST node selection 10%: TCint ➠ TCling 18

  23. Plans 19

  24. Plans PCH dictionary Independent: validate type name chain header ➠ rootcling dict ➠ Reflex ➠ Cintex ➠ CINT (Reflex because of similarity GCC / clang type names) Verify compatibility of type names in reco file 20

  25. Plans (2) Offer interpreter to clang by summer: visibility, show good manners Embed in ROOT, --enable-cling Implement missing + functionally required (cf. backward compatibility) CINT features Study cling + multi-threading 21

  26. Outlook 22

  27. Outlook Long list of crazy items: who would’ve thought a compiler can...! Working down the list until we’re done Now that basics are there: regular cling progress report @ ROOT.cern.ch (search for cling) 23

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend