CINT is an interpreter for C and C++ code. It is useful e.g. for situations where rapid development is more important than execution time. Using an interpreter the compile and link cycle is dramatically reduced facilitating rapid development. CINT makes C/C++ programming enjoyable even for part-time programmers.
CINT is written in C++ itself, with slightly less than 400,000 lines of code. It is used in production by several companies in the banking, integrated devices, and even gaming environment, and of course by ROOT, making it the default interpreter for a large number of high energy physicists all over the world.
CINT covers most of ANSI C (mostly before C99) and ISO C++ 2003. A CINT script can call compiled classes/functions and compiled code can make callbacks to CINT interpreted functions. Utilities like makecint and rootcint automate the process of embedding compiled C/C++ library code as shared objects (as Dynamic Link Library, DLL, or shared library, .so). Source files and shared objects can be dynamically loaded/unloaded without stopping the CINT process. CINT offers a gdb like debugging environment for interpreted programs.
CINT is free software in terms of charge and freedom of utilization: it is licensed under the X11/MIT license. See the included COPYING for details.
CINT 5.16.19 from 2007-03-19 is available via anonymous ftp:
- Source package for all platforms (2MB) (with bash configure script for most of the platforms)
- Binary package for Windows (2MB).
To build the source package do:
$ tar xfz cint-5.16.19-source.tar.gz $ cd cint-5.16.19 $ ./configure $ gmake
The current sources of CINT can be downloaded via git. From a bash shell (the
$ is meant to denote the shell prompt), run
$ svn co http://root.cern.ch/svn/root/branches/v5-34-00-patches/cint cint $ cd cint
You can also download a certain version of CINT using subversion:
$ svn co http://root.cern.ch/svn/cint/tags/v5-16-19 cint-v5.16.19 $ cd cint-v5.16.19
You can build CINT from these sources by running
$ ./configure $ make -j2
CINT works on number of operating systems. Linux, HP-UX, SunOS, Solaris, AIX, Alpha-OSF, IRIX, FreeBSD, NetBSD, NEC EWS4800, NewsOS, BeBox, HI-UX, Windows-NT/95/98/Me, MS-DOS, MacOS, VMS, NextStep, Convex have all been reported as working at some point in time; Linux, Windows, MacOS and Solaris are actively developed. A number of compilers is supported, i.e. GCC, Microsoft Visual C++, Intel's ICC, HP-CC/aCC, Sun-CC/CC5, IBM-xlC, Compac-cxx, SGI-CC, Borland-C++, Symantec-C++, DJGPP, cygwin-GCC.
The ROOT system embeds CINT to be able to execute C++ scripts and C++ command line input. CINT also provides extensive RTTI capabilities to ROOT.
CINT implements a very large subset of C++, but has also some differences and limitations.
firstname.lastname@example.org is the CINT mailing list. To join the mailing list do the following:
- If you don't have a CERN account, create a light weight CERN account.
- Add yourself to the root-cint mailing list, by clicking on the "Members" tab and then on the "Add me" button.
- To remove yourself from the mailing list click on the "Remove me" button on the same above "Members" page.
- README: features, license condition, installation, etc...
- Releases Notes: current revision, recent changes
- ChangeLog: Subversion changes
- Cint man page: command line options, debugger commands
- Reference: reference manual in alphabetical order
- Bytecode compiler
- CINT API
- Error messages
- Limitations (concepts, ISO compatibility)
- Limitations (sizes, lengths)
- Makecint: utility for embedding C/C++ library - reference manual
- Adding External Libraries: embedding C/C++ library - user guide
A few random pointers concerning CINT:
- Louis Höfler has compiled a summary on how to build CINT on Windows.
- Chris Brody implemented a CINT interface to libevent: http://code.google.com/p/event-hpp
- CINT is used in a computer game's AI engine: Emergency4
- There is a nice how-to on building an error-checking C++ editor with Scintilla and CINT.