Cling Website - Get Involved
Description: Official website of Cling
Keywords: cling, interactive compiler interface, interpreter, clang, LLVM

# Cling Website

## Interactive Compiler Interface

- Home
- Download
- News
- Docs
  Documentation
  Developer
  - Doxygen
  - Extensions
  - Error Recovery
  - Late Binding
  End User
  - User Manual
  - Status of ObjectiveC[++]
- Get Involved

# Get Involved

## Where are we

You can find us at: rootdev [at] root.cern.ch

## File a bug

If there is something wrong please check our bug database here and submit the bug description if it doesn't exist

## Open tasks

We have lots of ideas how to make cling better, but we don't have enough time for realizing them all. Here are tasks that are on our todo lists since a while, but we still cannot manage to get them done. They are not difficult to implement and excellent for getting to know cling. If you find something interesting, please go ahead and get your hands dirty!

The list is prioritized in descending order:
- Windows support - By design cling needs __cxa_atexit and __dso_handle to be present. In Linux for example they are defined in libc. However, Windows doesn't fully support Itanium C++ ABI and there is no definition for it.
- Extending and improving the multiline input mode - The multiline mode has to figure out automatically whether the user's input is still incomplete. For example "if (a < 0) {" is not fully completed input. Cling should'n try to process the line but to be smart enough to understand that it should wait for continuation. Currently cling switches multiline mode only when there is trailing "{". It has to be extended to detect trailing +, unbalanced '," and so on.
- Implementing auto completion - Clang has good interface for autocompletion which proposes possible completion options considering the current input.
- Implementing error recovery verifier - One of the most important parts in cling is the error recovery. The error recovery takes care of reverting clang's internal structures on error in the user input. For instance, user types int i; error_here;. int i should be reverted and the entire input should be invalidated. This is very complex because many implicit template instantiations could be triggered and so on. The idea of the future verifier is to serialize the AST with all the lookup structures (probably in pch or pcm), trigger an error causing a lot of things to happen in clang internally and serialize the new AST. The comparison with the old one must return perfect match.
- Enabling clang's static analyzer - coming soon
- Enabling ObjectiveC/ObjectiveC++ support - coming soon