Cling Todo Items

This page contains a list of items to be done to replace CINT by Cling/LLVM.

This document will be frequently updated. New task will be added and completed tasks will be marked as such.

The list of items to be done for Cling (libCling, will ideally be part of LLVM once finished):

  • Distribution, Makefile
  • Precompiled header (pch) generation
    • AST unloading
    • consistency check
  • Interactive prompt (.x, .L, ...)
    • Editline + tab completion
    • .class, .function, .file, etc.
  • String/file interpreter access (ProcessLine())
  • "Eval" prompt
  • Breakpoint, debugging tools
    • Instrumentation
  • Produce standalone shared library file
  • Escape from interpreter on unknown symbol
    • Automatic library loading
  • Auto dependency tracking of scripts
  • Recursive interpreter
    • Dynamic scope: new TFile(...); hist->Draw();[VASSIL]
  • Thread safe interpreter (multiple instances)

The list of items to be done on the ROOT side (libRCling):

  • Reflection
    • Bridge Reflex to AST [PAUL]
  • TCling deriving from TInterpreter (currently called TCint to reduce ROOT build system changes)
  • ShowMembers()
  • ClassDef implementation
  • Dictionary/reflection bootstrap
    • GenerateInitInstance
    • CollectionProxy
    • pch loading [ZDENEK/AXEL]
  • C++ function stubs
  • List of members, methods, bases, etc [PAUL]
  • Pass along the ROOT I/O attributes [PAUL]
    • LinkDef attributes
    • Header file comments //!
  • What to do with #ifdef __CINT__, __MAKECINT__, __CLING__: we do not #define __CINT__ (because clang will be able to parse everything), we do define __CLING__

Development timeline:

  • rootcint --clang (rootcling) and pch generation + special I/O code [ZDENEK][VELISLAVA]
  • Investigate AST/TCling's dict access [PAUL]
  • Hook to ROOT prompt (ProcessLine())
  • Merge with "CCONS"
  • Build ROOT with Clang.