RELNOTE.txt cint 5.15.116 release note - CINT mailing list Cint mailing list 'cint@root.cern.ch' is started. Send request to 'Majordomo@pcroot.cern.ch' containing following line for subscription. subscribe cint [preferred mail address] * New features ************************************************************* - Qt library Qt-Cint is experimentally supported from 5.15.108. Refer to lib/qt/README.txt and demo/qt/README.txt. Currently, Qt-Cint is supported only on Windows with VC++6.0 compiler. - DLL loading without makecint/rootcint for Intel CPU From 5.15.102, you can load global functions in DLL without makecint/rootcint if you use Intel 32bit CPU with gcc3.2, VC++ or BC++. You need to specify DLL filename and function interface by extern "[dllname]" { ... } Refer to doc/ref.txt for detail. - Cygwin5.1 support From 5.15.101, Cygwin5.1 is supported with full Cint functionality including dynamic loading. Read platform/README.txt and try platform/cygwin51_gcc3_so. - VC++7.1 support Try platform/visualCpp7/setup[XXX].bat for setup. This version uses new templated iostream library. - Command prompt input mode A new command prompt input mode is added from version 5.15.74. The new mode can be activated by setting 'INPUTMODE = C++' in $CINTSYSDIR/MAKEINFO. See doc/ref.txt - INPUTMODE for more detail. - Test suite Cint test suite goes with source code package. The test suite is a collection of test programs reported with bug reports. Read test/README.txt for more detail. - Borland C++ compiler 5.5 support Free version of Borland BCC32.exe comiler is available from http://www.borland.com. BCC32.exe version 5.5 is supported from cint5.15.53. Refer to c:\cint\platform\borlandcc5\README.txt. - New iostream redirection scheme is implemented in lib/*stream/iostrm.h. The code is implementation dependent which needs to be tested on each compiler and computer platform. If you fail to compile src/*strm.cxx, please look into corresponding lib/*stream/iostrm.h, fix the problem and send me appropriate fix. - DLL binary compatibility is discountinued between 5.14.X to 5.15.X. Please re-compile all the CINT DLLs. After 5.15.02, DLL binary compatibility became more robust. - gcc-3.00 support gcc-3.00 is supported from 5.15.14. Use platform/linux_RH6.2_gcc3 to compile Cint with gcc-3.00 on RedHat6.2 Linux. This configuration has many problems still. The author is working to solve them. - Power operator '**' delete option Cint have had power operator '**' as an original extension. However, this causes problem if we look C/C++ syntax strictly. 'a**b' is 'a power b' for Cint and 'a*(*b)' for compiled code. G__NOPOWEROPR compile flag is added to turn off '**' operator. Add -DG__NOPOWEROPR to OTHMACRO in platform dependency file. From 5.15.25, power operator is deleted by default. - WildC++ with Tcl/Tk8.3 WildC++ interpreter, a mixture of Cint and Tcl/Tk, used to require older Tcl/Tk. Now, it supports newer Tcl/Tk8.3. Please find it in lib/wintcldl83. - New API Following API functions are added. Please refer to doc/ref.txt. char* G__load_text(char* namedmacro); loading on memory C++ source code. void G__set_emergencycallback(void (*p2f)()) set behavior of '.save' command for emergency object save - Exception handling example Exception handling has been implemented long time ago. However, it has not been informed enough to the users. A new example is added in demo/exception directory. Refer to demo/exception/README.txt for the details. - Experimental multi-threading libcintX.so Multi-threading libcintX.so capability is provided experimentally. This is a very clude implementation and NOT RECOMMENDEDN FOR ORDINARY USERS. For Linux RedHat6.2, platform dependency file platform/linux_RH6.2_mtso is prepared. Install Cint with 'sh ./setup platform/linux_RH6.2_mtso' and try example in demo/multilibcint directory. For Windows VC++6.0, add G__MULTITHREADLIBCINT macro at the beginning of G__ci.h. This has to be done before Cint compilation. Install Cint and try example in demo/multilibcint directory. - Xlib and openGL support X11R6 and openGL APIs are supported from 5.14.86. include/X11/xlib.dll and include/GL/gl.dll can be built under lib/xlib and lib/gl directory. Simple example for X11 program can be found in demo/xlib directory. OpenGL example is missing right now. Your contribution to add an openGL programming example will be greatly appreciated. Those libraries are verified only on Linux RedHat6.2 at this moment. - Error message callback Error message can be redirected through an user defined callback function. The callback can be set by G__set_errmsgcallback(void (*p2f)(char*)) API. This feature is convenient when a user wants to embed cint into a GUI based host program. See doc/ref.txt for G__set_errmsgcallback. A special care is needed to compile src/disp.c. Some compiler may report an error in variable argument declaration around line 1972-1978. If you find a compile error, please modify the source appropriately. Your report about such change , regarding specific platform , is highly appreciated. This feature is normally turned off. You need to define 'OTHMACRO = -DG__ERRORCALLBACK' in platform dependency file for activation. An example is added in demo/errpipe directory. - Variable argument Variable argument is supported from Cint 5.14.69 for Intel architecture. must be included to use variable argument. Cint accepts both form of declaration. void foo1(char *fmt, ...); void foo2(char *fmt ...); Argument values for Variable arguments are put into function call stack. For each computer platform, specific byte layout must be emulated by Cint. Because byte layout is not publicly informed, this capability may not be portable to all platforms. At this moment, only Linux and Win32 with Intel architecture are verified. It is known that this scheme can not be extended to HP-PA and Sparc architecture. Need more investigation for other platforms. - "ifdef" utility is added to the package. Read doc/ifdef.txt for the detail. "ifdef" selectively resolves #ifdef,#ifndef,#if,#elif, #else and #endif in C/C++ source code. Macros that are explicitly defined/undefined by -D/-U option are resolved and eliminated from the source code. Other #ifdefs remain unchanged. #if statements with multiple conditions and &&,|| operators will be resolved by a symbolic resolver. "ifdef" can be also used as a #ifdef nesting hierarchy analyzer. Although included in CINT package, ifdef is an independent software productivity tool. - New memory allocation method is fully activated in cint5.14.64. This scheme is tested under most of the platforms. + If you find compiling src/Apiif.cxx or other dictionary code due to 'void operator delete(void*,[DLLID]_tag*)', undefine G__EH_DUMMY_DELETE macro in G__ci.h around line 195. + Uncomment '#define G__OLDIMPLEMENTATION1423' in G__ci.h to disable the new scheme. + Alternatively, you can give '-cint -M0x0', '-cint -M0x10' or '-cint -M0x1c' option to makecint in order to use the old memory allocation scheme. + A version of IBM AIX-xlC compiler has a problem compiling explicit destructor calls for implicitly created destructor. This is supposed to be a compiler bug. + MicroSoft Visual C++97 (or VC++5.0) can not compile dictionary with new memory allocation system. With VC++5.0 or older version, cint will use the old method. (Do not include vcstrmold.cxx and Apiifold.cxx to ROOT source tree.) - -Y[0|1] option, controls if std namespace is ignored or not. -Y1 (ignore std namespace) is a default. If you specify -Y0 option, you must explicitly use std:: namespace. For example, $ cint -Y0 string cint> { std::string a="abcdefg"; } Note that CINT header file is reorganized for this purpose. In order to use this feature, you must use new header files. (Under $CINTSYSDIR/include and $CINTSYSDIR/stl directories.) - -Z[0|1] option, loading std header files implicitly with DLL With -Z1, std header files included in making cint dictionary are implicitly loaded with DLL. Consider following example, // myapp.h #include void f(const string& x) { ... } When you make cint dictionary, std header file is implicitly loaded with myapp.dll if -Z1 option is given both to makecint and cint. $ makecint -mk makefile -dl myapp.dll -H myapp.h -cint -Z1 $ make -f makefile $ cint -Z1 myapp.dll -Z1 is a default for pure CINT and -Z0 is a default for ROOT. - True virtual function resolution in mixed interpreted/precompiled-class environment is supported by STUB. Base class and interface of derived class have to be precompiled and derived class member function can be interpreted. Please find example in demo/makecint/Stub2 directory. - Protected member access for compiled class '#pragma link C++ class+protected [classname];' is added to allow protected member access of compiled base class from interpreted derived class. - !!! Special notes about past changes !!! Following changes were deactivated because of bad side-effects. 1289 : Tried to support true pointer to static member function. But because side effect was found, this feature is turned off. * Cint installation ******************************************************** 1) make a new directory for cint 2) Get source code package cint.tar.gz and put it under the new directory 3) Unpack the package $ gunzip -c cint.tar.gz | tar xvf - OR $ gzip -vd cint.tgz $ tar xvf cint.tar OR winzip twice 4) Read README.txt and platform/README.txt for further instruction. Recent changes ************************************************************ (See src/HISTORY for older changes) * 5.15.98, Aug 5 2003 * 1886, f(){char s[99]=a?"b":"c";},t1101.cxx * 1887, VC++6.0, copy ctor problem, * 1888, G__BIT_ISDIRECTINHERIT * 1889, 1885+, a::b::c gets warning with -J5, t1103.cxx * 1890, typedef int A;class B {class A;}; B::A x; t1104.h * test/template3.cxx old style does not work. changed template3.cxx * 1891, hpx->SetBinContent(1,1,hpx->GetBinContent(1,1)); h1dbg.C * - , -1885 caused side-effect * * 5.15.99, Aug 10 2003 * 1892, stub generation bug fix, t1108stub.h * 1893, newlink.c Philippe's fix, *-1894, A, t1111.h, side effect tempalte0.cxx * 1895, type_info const,ref t1111.cxx * * 5.15.100, Aug 28 2003 * - , G__ci.h #elsee fixed * 1896, shl.c strcpy potential bug fix * * 5.15.101, Sep 1 2003 * - , G__CYGWIN_DLL support, cygwin51_gcc3_so * 1897, pair x; t1117.h,t1116.h fix * 1898, break; if(xxx)) , syntax error detection, t1114.cxx * 1899, G__exec_tempfile_core, free breakpoint memory, t1118.h * 1900, SGI64 problem fixed * 1901, allocator >, Key=const A* -> pair * * 5.15.102, Sep 6 2003 * - , posix.dll fixed for Cygwin * 1902, A::create(1)(2,3); handled in G__parenthesisovld, t1124.cxx * 1903, A::create(1)[2]; t1124.cxx * - , f((BIT*)x) bug fix, t1125.cxx * - , gcc3.2 streampos::operator long added, t1126.cxx * - , class G__exception:public exception copy constructor bug fix * - , Cygwin, va_arg support, t1127.h/cxx * 1904, a+=b; constness check, t1128.cxx * 1905, constness bug fix * 1906, explicit template specialization and scope,t1129.cxx * 1907, strcat problem fixed, * 1908, Bare DLL loading of global function, VC++, gcc3.2, BC++(C only) * * 5.15.103, Sep 16 2003 * 1909, G__CallFunc::fpara initialization * 1910, G__GET_VAR &a, avoid uninitialized variable access, t1133.cxx, risk5 *o1911, unused parameter, add dummy statement, optional * 1912, (unsigned long long)1, casting bug fix * 1913, printf("%LG",(long double)ld); * 1914, tmplt.c bug fix, * 1915, #pragma link C++ function A::f; memory leak, fixed, t928.h * * 5.15.104, Sep 27 2003 * - , Borland C++ 5.5 new setup script for Windows2000/XP * - , longif3.cxx G__NEWSTDHEADER defined * 1917, function macro bug fix, t1138.h * * 5.15.105, Sep 28 2003 * 1918, G__tmpnam -> tmpfile() 1 * 1919, G__loadfile_tmpfile() & G__tmpam -> tmpfile() 3 * 1920, G__preprocessor(), tmpfile * 1921, G__TMPFILE in common.h deleted * - , testall.cxx -c [cintoption] -m [mkcintoption] * Enable either of following 2 for fixing rootcint problem with +P +V * Define one of following 2 macro in the beginning of loadfile.c *a1922, keep tmpfile for -cN +V +P, loadfile.c 1579 *a1923, keep opening all header files for -cN +V +P, loadfile.c 2285 * 1924, void f() { __asm eax, a[0x10] } , t1139.h * 1925, vector *p=new vector[3]; t1140.cxx fix * * 5.15.106, Oct 4 2003 * 1926, f(int mode=std::ios::in); with -Y1, t1143.h * 1927, namespace x { static std::string=std::string("abc"); }, t1144.h * May need to come back confirming G__tagnum and G__def_tagnum handling. *-1928, G__Class::GetMethod() overload resolution algorishm change, t1145.cxx * Turned off due to ROOT problem * * 5.15.107, Oct 10 2003 * 1929, #ifdef __cplusplus extern "C" { #endif * - , MAC fix for posix.h and init.c * * 5.15.108, Oct 21 2003 * 1930, fix to 1928 * - , lib/qt and demo/qt added * * 5.15.109, Oct 21 2003 * 1931, 1928 fix * 1932, G__chdir() added, platform/visualCpp6/setup.bat improvement * 1933, 1929 fix, #ifdef __cplusplus extern "C" { } #endif, t1148.cxx * * 5.15.110, Nov 9 2003 * 1934, 1928 fix, * 1935, ptr to memfunc check fixed, * * 5.15.111, Nov 14 2003 * 1936, VC7 compiler bug workaround * - , /MT(multithread) -> /MD(multithread DLL) for VC++ * - , G__add_ipath, buffer length short by 1. * * 5.15.112, Nov 19 2003 * 1937, command history size mods API * 1938, scientific(),dec,hex.oct,etc... added in gcc3strm * 1939, string macro redefinition, bug fix, * A question arises whether or not to allow redefinition of macro * 1940, int i-1234; taken as bug * * 5.15.113, Nov 25 2003 * 1941, G__CallFunc::SetArgs() buffer length problem fixed, *-1942, 1910 in expr.c, -> renumbered as 1942 and disabled, it was a wrong fix * 1943, long string support in quote.c, * 1944, G__type_info restored in G__TypedefInfo * * 5.15.114, Dec 1 2003 * - , testall.cxx remove .obj for Cygwin *-1945, G__fsigXXX, signal function, !! did not work ?? * 1946, -E -E, exit without prompting * 1947, -E -E, exit without prompting for C++ exception * 1948, sizeof(static array); * 1949, sizeof(*static array); * * 5.15.115, Dec 9 2003 * 1950, sizeof(static array); 2 * - , -E -E, bug fix in input.c * 1951, CINT.bat bug fix * * 5.15.116, Dec 17 2003 * - , str.h fix for string.dll compilation for ROOT * - , shl.c TYPE_PROCEDURE not defined for !G__SHAREDLIB, fixed *-1952, integral promotion from long to int when both are 32bit * 1953, overloading ambiguity, t1160, t525-1445 ? * 1954, overloading integral conversion, fix??? * 1955, pragma link nestedtypedef for root * 1956, f(0) -> f(char*) demoted a little * - , G__MAXBASE increased to 50 * 1957, f(char (*p)[4][4]); same as f(char p[][4][4]);, t1157.cxx