/* * $Id: whatsnew.txt,v 1.46 2007/01/09 14:22:17 druzus Exp $ */ ---------------------------------------------------------------------- Version 0.47 Alpha Build 47 (2007-01-09) tag: build47 The compiler ============================== syntax: ------- - Added support for variable number of parameters functions. - reimplemented xbase++ multi-value macro support. - Added support for WITH OBJECT. - Changed HB_INLINE() syntax. - Added support for macro compiled messages. - Added support for passing array items and object variables by reference. internals: ---------- - Preprocessor, compiler and macrocompiler code are fully MT safe. - New lexer which translate preprocessor tokens to grammar parser terminal symbols - FLEX is not longer used by Harbour. - Added prebuild grammar parser source code to CVS - BISON is no longer needed to build Harbour from source code - only developers which want to change Harbour grammar rules need BISON. - Cleaned grammar rules with many small fixes - Added PCODE version information to compiled files - it's checked at runtime by HVM to detect problems when files with old unsupported PCODE are linked with current HVM. - Fixes in memvar core code (memory leaks, GPF, Clipper compatibility, etc.) - Added POINTER items which inspected by GC. - Added SYMBOL items with support for :exec() and :name() messages. - Changed function references to use SYMBOL item instead of POINTER item. - Added support for loading and unloading dynamic libraries with PCODE and HRB files. - Many new different optimizations. preprocessor: ------------- - New written from scratch preprocessor code. - Added std.ch file with standard preprocessor definitions. The runtime modules ============================= - Modifications to make HVM code reentrant safe. - Class code extensively changed with many extensions like nonvirtual methods and members, scopes, friend classes and functions, destructors, etc. - Added support for PROCFILE() - Profiler code disabled in default build. GT: --- - Added GTGUI. - Added support for: REQUEST HB_GT__DEFAULT RDD ============================= - New USRRDD library. It allows to create new RDD from scratch or by inheriting from any other RDDs (except USRRDDs) and overloading any of their methods at PRG level. - Added missing undocumented Clipper RDD functions. General ============================= - New non GNU make files with common dependencies list. - Many speed improvements and fixes. ---------------------------------------------------------------------- Version 0.46 Alpha Build 46 (2006-05-29) tag: build46 The compiler ============================= syntax: ------- - Added support for DATE type constants in the format 0dYYYYMMDD (FLEX version only). - Added support for SWITCH command (see tests/switch.prg) (FLEX version only). - Added support for FOR EACH loop (see tests/foreach.prg) (FLEX version only). - Added new compiler switch -gc3 to generate real C code output (instead of PCODE array called by a C wrapper). - Added new command line switch -r= - Added -undef: compiler switch (borrowed from xHarbour). - Added support for @filelst[.clp] - partially borrowed from xHarbour. It's not exactly the same as in Clipper because Clipper creates one final file when [x]Harbour series of files. - Emit warning and error messages to stderr instead of stdout on *nix platforms. - Added warnings in cases of duplicated loop variables. - Fixed compilation of included files in cases when the file ends with ';' (with no LF or CR). internals: ---------- - Fixed bug in divide by 0 substitution. - Fixed bug in ASC() optimization (when character code > 127) - Fixed path delimiters in included file names. - Removed strong typing in the compiler. Reactivate it by compiling with -DHB_COMP_STRONG_TYPES. - Fixed to release the memory if macro compiled code contains a variable or a function reference. - Rewritten jump optimization. - Added optimization for: IF .T. IF .F. WHILE .T. WHILE .F. - Added dead code eliminator. It works only when Jump Optimization is not disabled. As a result, we have smaller and faster PCODE. - Do not strip redundant line information when compiled for debug (-b). - Fixed many more memory leaks in the compiler. Now, the Harbour code compiles itself with no memory leaks. - Added optimalization of '+=' '-=' '*=' '/=' operators using new PCODS: HB_[PLUS|MINUS|MULT|DIV]EQ HB_[PLUS|MINUS|MULT|DIV]EQPOP - Added more optimization for localvar+=integer using HB_P_LOCALNEARADDINT pcode (borrowed from xHarbour). - Enabled FM statistic by default when compiled without -DHB_FM_STATISTICS_OFF. - Added new errors (memory corruption and memory overflow) for compiler level FM statistic. - Fixed double value presented in verbose genc mode for HB_P_PUSHDOUBLE. - Fixed stripping non identifier characters from symbol table name. - Added escaping of '?' character in generated strings to avoid possible conflicts with trigraph sequences which are part of ANSI C standard. - Force .0 at the end of double numbers to avoid possible range conflicts in generated .c files. - Upper the default .prg function name created from .prg file name when compiled without -n switch. - Fixed registering of startup procedure name. - Changed code generated for double values to avoid limitation in some C compilers like MSC and possible differ conversion inside C RTL then the one which uses Harbour RTL. preprocessor: ------------- - Fixed to release memory allocated with the preprocessor. - Fixed bug in processing the list of optional repeatable code. - Fixed handling of optional clauses in command/translate. - Fixed <-x-> match marker. - Fixed compilation of \[ and \] in command/translate. - Fixed to preserve spaces the same way (almost) as Clipper. - Fixed translation of nested command/translate. - Fixed translation of TEXT/ENDTEXT to be more Clipper compatible. - Added new hidden preprocessor directive __text|ParseBlockCode|EndBlockCode|StartBlockCode - Modified TEXT/ENDTEXT to use '#pragma __text'. - Added #pragma __stream and #pragma __cstream (see doc/pragma.txt) The runtime modules ============================= API --- - Separated internal and external API. Now the definitions for internal HVM structures and functions are excluded by default they could be enabled if user include hbvmopt.h before other header files. Such operation should be done ONLY by core code! If 3rd party developers use something like that then it's for their own risk and such code may stop to work with next Harbour versions. Without hbvmopt.h the internal structures like HB_ITEM, HB_DYNS, ... are mapped to 'void' so there is no way to access their members so we can modify them in the future without afford for 3-rd party code. - Remove default API and stack macros. Now API/stack macros can be enabled by including hb_vmopt.h file. This file should be included ONLY by core code because binary object/libraries generated after can work only with EXACTLY the same HVM compiled the same C alignment switches. 3-rd party code should include hbvmpub.h only. - Added support to passing function references as HB_IT_SYMBOL. - hb_itemType() return "S" for HB_IT_SYMBOL. - Message symbols are not function symbols, cleaned the HB_FS_MESSAGE usage and fix the problem with registering static function in global symbol table. - Added HB_TYPE to as HB_ITEM type marker (UINT32 currently). - Cleaned some ~HB_IT_BYREF which has no effect in current VM. - Added new functions: hb_extIsObject(), hb_codeblockId(), hb_idleSleep(), hb_fsGetOsHandle(), hb_dynsymFindSymbol(), hb_dynsymGetSymbol(), hb_dynsymSymbol(), hb_dynsymName(), hb_dynsymMemvarHandle(), hb_dynsymAreaHandle(), hb_dynsymSetAreaHandle(). - Changed definition of HB_SYMB structure. - Cleaned some HB_EXTERN_C declaration. - Changed hb_arrayClone() declaration to: PHB_ITEM hb_arrayClone( PHB_ITEM pArray ) - Changed hb_arrayFromParams() declaration to: PHB_ITEM hb_arrayFromParams( int iLevel ) The previous version needed a pointer to stack relocatable area so any stack resizing could cause GPF. - Allow hb_param() to return parameters accessed by HB_IT_BYREF. - Cleaned the code which created HB_ITEMs on C stack. - Changed main VM loop to eliminate one comparision done on each loop. Now HB_P_ENDBLOCK and HB_P_ENDPROC pcodes set HB_ENDPROC_REQUESTED and the main loop can be exited only from one place. It gives some small but noticeable speed improvement. - Possible problem fixed in __CLSADDMSG() where message parameter was required to be uppercase when overloading operators .NOT. .AND. .OR. - Fixed GPF when unshareing string item buffer with embedded 0 by using hb_itemUnShare(). - Make HB_SET_TYPEAHEAD Clipper compatible. - Set DOSERROR() to oError:OSCODE when RT error is generated. - Fixed some small incompatibilities with Clipper in number to string conversions. - Added HB_STR_DATE_BASE for conversion to string, Clipper compatibility though we are not 100% Clipper compatible in STOD() because we will have to reduce functionality (supported date range) to reach it. In Clipper STOD(DTOS()) is not revertible, it is revertible in [x]Harbour for the whole supported in string conversion range: 0000/01/01 : 9999/01/01. - Fixed possible GPF in CTOD when badly formated date is given. - Optimized hb_dateEncode(). - Fixed RT error number in hb_vmAddInt() for negative values to be Clipper compatible. - Optimized __CLSADDMSG() to call hb_parc() only once instead of 25 times for most cases. - Synced file IO with xHarbour, it fixed some problems, added some missing functionality and long (64bit) file support for Windows. - hb_DiskSpace() changed to not give a runtime error in case of any error, but set the FError() value instead. - Added C -> OS file error translations - not perfect but better then the used hacks (borrowed from xHarbour). - Use hb_fileNameConv() instead of hb_filecase(), hb_fileNameConv() is the only one function to make file name conversions dependent on some SETs. - HB_MATHERRMODE() input validation logic moved to the lower level function. This is a step to make this a simple Set(). - Added STRPEEK and STRPOKE FS functions covered by HB_COMPAT_FLAGSHIP macro. - Added hb_fsSetDevMode() Unix branch added. - hb_secondsCPU() move inside FlagShip guard instead of HB_EXTENSION. - Fixed invalid handle error in Windows when file() fails (borrowed from xHarbour). - SetUnhandledExceptionFilter() is called if HB_INCLUDE_WINEXCHANDLER define is used. - UnhandledExceptionFilter renamed as hb_UnhandledExceptionFilter, and WINBASEAPI removed. - Added new functions HBDLLENTRY1() and HBDLLENTRY2(). These function allow to call a Harbour (self contained) DLL and provide it one or two Harbour items as parameters. - Fixed GPF in HB_LIBDO called with wrong parameter. - Fixed optimization of 'EVAL' in macro compiler. GT: --- - New GTAPI. - Multi GT support with an option to link many GT drivers in a single binary and switch between GTs at application startup based on its environment. - Added GTI_* defintions for hb_gtInfo() function. This function works in similar way to dbInfo() in RDD. - New driver GTCRS based on xHarbour and Flagship curses code. - New driver GTWVT for Win32 using GUI window instead of console. - New driver GTXWC for XWindow Console. - New driver GTALLEG for Allegro cross platform graphic libraries. - Respect pure REQUEST HB_GT_NUL as user GT choice if only GTNUL is linked. - Fixed displaying of boxes under the xterm, use @ TO instead of @ BOX. Multilangual: ------------- - Cleaned startup initialization code for lang and codepages. at least one lang module defined at startup. - Codepage: Updated UNICODE values for characters in range 1-31 to keep DOS compatibility. - Codepage: Renamed files (cdp*.c -> cd*.c). - Codepage: Added UTF8 related functions: hb_cdpUTF8StringLength(), hb_cdpStringInUTF8Length(), hb_cdpUTF8ToStrn(). - Moved EN lang definitions to core lang code so we always have - HU sorting order fixed to be more compatible with Clipper. - Added BG language support. RDD ============================= - DBT, FPT, SMT memos are fully support and automatically detected in USE command. For newly created tables the memo type can be set with rddInfo(RDDI_MEMOTYPE, [,]) It's possible to use any combinations of memo and index files. - Added RDDINFO() to set global RDD parameters. See dbinfo.ch for possible actions. - Rewritten DBFNTX, now it supports in practice all CDX features with multi tags and many others. With RDDINFO() some important new features in DBFNTX can be enabled like increased maximum NTX file size up to 4TB, support structural/autoopen indexes, bounding record number with index key (like in CDX format what resaolves the performance problem with indexes which have a lot of non unique keys, etc.) - User setable locking DBF mode. - Added SIXCDX which is modified version of DBFCDX without trailing spaces compresion for SIX3 compatibility. - Added ordKeyRelPos([nNewPos])->nOldPos which works with all RDDs and returns relative (from 0.0 to 1.0) position in index file but much faster then ordKeyPos()/ordKeyCount() combination. It works like AdsGetRelKeyPos()/AdsSetRelKeyPos() and the results for CDX are the same. For NTX ADS implementation is broken, just simply Extended System uses the same algorithm as for CDX what is wrong. - Fixed ordKeyPos() for records out of scope. - Implemented RDD level transforms (COPY TO/APPEND FROM). - Long file support for all native RDDs. Now the maximum file size is reduced only by its structure if OS/file system supports 64bit file IO, f.e. for DBF it's 2^32 records. For memos it's: 2^32 * MemoBlockSize, etc. - Synhronize RDD code with xHarbour. - New HSX RDD. - New HBSIX RDD. - Fixed possible GPF when "/an/existing/path/" was used as file name. - Enable 'Y' (currency) fields, translated to HB_IT_DOUBLE. - Fixed some wrong behavior in SORT parameters setting in __dbArrange() - Removed hack with COPY TO when lastrec() == 1. - Fixed GPF in DBF2TEXT when work are is not in use. - __dbDelim() generate 2001 RT error when work area is not in USED() before export file is created. - Added DBI_SCOPEDRELATION action. It alow to test if given relation on current work area sets scope on child index. - Set Operation in error object to field name in field{put,get} methods. - Added DBI_LOCKOFFSET. - Added support for NULL value set in memo fields by ACCESS. - Added all Clipper 5.3 BLOB*() functions support. - Added new RDD DBFBLOB compatible with Clipper 5.3 DBFBLOB. It operates on memo files only (.dbv) without tables (.dbf). - Do not report error when empty structure table is passed to DBCREATE(). - Added support for NIL value in SIX3 FPT files. - Changed definition of SUPERTABLE for optional dynamic overloading. - Added default SYSNAME method. - Fixed possible memory leak when APPEND failed in TRANSREC method. Contrib ============================= - ADS: Added ADSCDX, ADSNTX and ADT RDDs. ADS RDD should not be longer used, it's only for backward compatibility. - ADS: Call AdsFlushFileBuffers() only when _SET_HARDCOMMIT is set. - ADS: Added possibility to save memo fields > 64K. - ADS: Added support for relations in ADS* RDDs which are not supported directly by ADS or are for other non ADS* tables. - ADS: Synced base RDD with xHarbour. - Added conversion from tiny int MySQL type into numeric DBF. - Added MYSQL_DECIMAL_TYPE for MySQL versions 5.0 and above. - libct: Added CT3 like Window System, it's a GT driver which inherits from the existing one and adds CTW functionality. - libct: Updated for GTAPI modifications. - libnf: Use hb_fs*() API functions instead of calling DOS interrupts. Now NF dir functions works on all platforms. Utilities ============================= - HbExtern: Heavily modified to produce more accurate output. General ============================= - Fixed for popper compilation with GNU C++ and OpenWatcom on Linux. - Added support for cross compilation (Windows binaries at Linux) with MinGW (borrowed from xHarbour). - Added functions for machine independent double and long long conversions. - Enable HB_COMPAT_FLAGSHIP by default. - Include ADSRDD by default in RPMs. - Updated for new RPM which does not accept some old tags. - Some modification in xhb* scripts building, adding passing predefined compiler and linker switches. - hb-func.sh: Support for detecting startup function in C++ mode. - hb-func.sh: Added support -go[0-3] and other -g* switches to xhb* scripts. ---------------------------------------------------------------------- Version 0.45 Alpha Build 45 (2005-05-25) tag: build45 The compiler ------------ - Fixed problem with dates. - Some Out of bound buffer access fixed. - Support for Clipper undocumented match marker. Notice that this fixes support for: SET FILTER TO ¯o / SET FILTER TO ¯o. .AND. expr - Support for static functions used in macro compiled expressions - Added new .prg #defines: __PLATFORM__, __ARCH{16|32|64}BIT__, __LITTLE_ENDIAN__|__BIG_ENDIAN__|__PDP_ENDIAN__ - Several internal changes in the way Harbour handle numbers. Better Clipper compatibility in operations with numbers. - Fixed accessing to uninitialized memory - Fixed memvars and detached locals handling related to reallocation of memvar's buffer and detaching of locals in a loop - Changed algorithm for recycling of unused memvar values - Improved memory handling. - Removed hack for GCC and old Bison versions - Modified creation of symbols table: Symbol of function name never share a symbol of variable Symbol for INIT/EXIT procedure has now '$' suffix - this means that such procedures cannot be called from user code (Clipper compatible) - Harbour now Run on 64 bits ! - Some small optimizations in harbour/source/vm/itemapi.c The runtime modules ------------------- - Enabled creation of classes from C level using functions: hb_clsCreate(), hb_clsAdd() and hb_clsAssociate(). - Implementation of several Classes as in Class(y) lib: ScalarObject, Character, Array, Block, Date, Logical,Nil, Numeric - GetNew() no longer evaluates passed set/get codeblock - A new function 'hb_dynsymScope' was added to check if the passed symbol has requested scope - Added many functions to the extend system: hb_parnll, hb_stornll, hb_retnll, hbretnlllen, hb_itemPutNLL, hb_itemPutNLLLen, hb_itemGetNLL which operates on LONGLONG Added hb_parnint, hb_stornint, hb_retnint, hb_retnintlen, hb_itemPutNInt, hb_itemPutNIntLen, hb_itemGetNInt which operates on HB_LONG Added HB_PUSHLONGLONG pcode - Cleaned all endian dependend code found - now Harbour can be compiled on LITLE and BIG endian machines - for some other like PDP ENDIAN it's enough to define proper macros in hbdefs.h - Added macros for to get/put values in chosen byte order: HB_GET_LE_[U]INT{16,24,32,64}( pPtr ) HB_GET_BE_[U]INT{16,24,32,64}( pPtr ) HB_PUT_LE_[U]INT{16,24,32,64}( pPtr, nVal ) HB_PUT_BE_[U]INT{16,24,32,64}( pPtr, nVal ) - Added macro HB_CAST_BYTE_NUMBERS_OFF which disables casting in HB_{GET|PUT}_{LE|BE}_* macros - it's necessary for some platforms like ALPHA DEC. - Many macros added for easier manipulation of different APIs and platforms. - Clean the code (no more warning messages under Linux and GCC and DOS OpenWatcom) - some of them were real bugs - Replaced code which made pointer casting without respecting machine alignment with proper macros and fixed some problems with byte alignment - Added function hb_stackIncrease() and modifications for new stack macros - Improved Clipper compatibility in AFILL() - Replace of malloc()/free() that still remains by hb_xgrab()/hb_xfree() - Added new functions: HB_IDLESLEEP() and hb_idleSleep() - Add the missing Greek language and codepage files. - Added Spanish Modern codepage - Synced HB CDP API with xHarbour - added basic Unicode support - Added functions hb_fsLockLarge() and hb_fsSeekLarge() which uses 64bit offsets in filesys.c for files larger than 2Gb RDD --- - Fixed a bug, causing random GPFs while seeking in NTX. - Added some sets for RDD synchronization with xHarbour - Improved indexing speed of DBFs with very big number of records (more than 1 million records). Contrib ------- - New functions has been added to ODBC: sqlSetStmtOption() and sqlColumns() - Changes in contrib MySQL module: sqlUseRes() added, sqlListTbl() is modified, and other changes in tmysql.prg, tsqlbrw.prg General ------- - Updated build process for Debian Linux distribution (.DEB) packages. Now hb* scripts and shared libs are created by standard make install - Added support for Solaris (SunOS) and Darwin (Mac OS-X). - Added support for Hewlett Packard Unix (HP_UX) and ALPHA DEC. - Many adds and fix in compilation scripts on all platforms. - Fixed some error messages - Some speed improvements - Many errors fixed ---------------------------------------------------------------------- Version 0.44 Alpha Build 44 (2004-07-19) tag: build44 The compiler ------------ - Fixed support for late/early evaluation of macro exressions in a codeblock (Flex version). Harbour(flex) is now full Clipper compatible here. - Fixed support for stringify match markers <""> and <()> in Flex version. - New compiler flag -ks was added to enable support for strings as array of bytes. (Notice that support for strings as array of bytes is disabled by default both in the Harbour compiler and in harbour's runtime modules) - Added a new compiler switch -kJ to disable jump optimalization and NOOP pcode removal (optimalization is enabled by default). - When xbase mode is not used (-kc or -kch) then compiler doesn't generate the pcode for these xbase extended features. - Added support for DO WITH @variable - Fixed optimalization of literal strings that contain macro operator. - Enabled support for break[]. - Fixed optimalization of far jumps (this fixes generation of pcode for abnormally large (DO CASE/IF/ELSEIF statements) - Added support to OpenWatcom DOS/Win32. - Fixed compilation of &(exp) in normal stringify markers (this fixes INDEX ON bug). - Added missing support for @¯o and @M->memvar (aAdded a new pcode HB_MACROPUSHREF) - Fixed generation of pcode for &(macro)->() syntax. - Fixed #define parsing of pseudofunctions in cases where passed argument has the same name as declared parameter. - Fixed parsing of nested #defines in command/translate - Macro - Added HB_SM_ARRSTR support. - Clipper preproceses '**' into '^' - harbour too - Added HB_COUNTER and HB_PTRDIFF types - first for reference counters and second for any pointer differences and pointer to integer conversions. - HB_EXPORT is added to ITEM API, FILE API and some other function definitions to make it possible to call them when they are in the dll. - Removed all pointer/long castings (except runner.c). - Fixed optimalization of AT,ASC,LEN,CHR functions - Added posibility to specify the output PPO filename with -p flag e.g. -pppo/myfile.ppo - harbour.l modified to compile correctly with flex version 2.5.31. - Fixed to compile FOR var[index] The runtime modules ------------------- - Enhanced Debugger. - Added missing code to use HB_IT_POINTER just like other value's type. For example: p = GET_SOME_POINTER() ? VALTYPE(p) //prints: 'P' ? p //prints: 0x12345678 - The support for runtime definition of keycodes mapping was added (translation from terminal key sequences into INKEY() codes) eterm.map and linux.map are example files with keycode mapping HB_GT_KEYMAP() function was added (ncurses GT only) - Added possibility to load a character mapping using HB_GT_CHARMAP() (ncurses GT only) - Improved recognition of xterm compatible terminals (ncurses GT only) - New internal command line arguments were added to control application at runtime: //FLAGS:switches this flag controls compatibility issues of the virtual machine Available switches: c - Clipper compatibility h - Harbour extensions (enabled by default) s - enable support for strings as array of bytes (disabled by default) For example: myapp //FLAGS:ch will disable support for strings as array of bytes //CANCEL:key //CANCELEX:keyex this flag allows change the keycode of application cancel request (usually Alt-C) - using normal INKEY() keycodes or extended keycodes (CANCELEX) For example: myapp //CANCEL:304 will change Alt-c into Alt-b for cancelling (Alt-c is used to insert polish diactric letter) - Fixed to release PUBLIC variables correctly - Fixed bug in Directory( "c:\*.*" ) that returned 0 when hidden files were present. - Alert() Fixed bug with messages longer then 60 bytes. - TGet:display() fixed to always evaluate the get block before displaying like in C52. - TBColumn - Added PreBlock and PostBlock instance variables for Clipper 5.3x compatibility. - Fixed TYPE() function to return correct value when an assigment to undeclared variable is checked (Clipper creates the memvar variable). - TGet - Fixed to correctly display buffer when negative value and '0' was pressed in the position next to decimal point. - TGet - Fixed support for '9999.' picture. - TRANSFORM(1.23,"999.") correctly returns " 1." now instead of empty string. - Fixed to correctly check for infinity on Unix STR(LOG(-1)) no longer core dumps. - Fixed infinite support for WatcomC. - Fixed to release memory in cases where invalid syntax was macro compiled. - Added DATA CapRow and DATA CapCol values to TGET class (for Clipper 5.3x compatibility). - Fixed to correctly return the procedure name where the codeblock was created. - Greek and Serbian language codepage files added. - fixed to use 'mkstemp' on Unix (no more GCC linker warnings) - Fixed file find API to be compatible with CA-Cl*pper on the lower level. - Fixes in TBColumn class RDD --- - Latest RDD changes synced with xHarbour. - Fixed dbCreate() bug that closed an open dbf with same name as newly created dbf in a different folder. - FIELDPUT() Fixed to accept and ignore field NIL values without runtime error. C52 compatible. - Added scopped relations. Now OrdSetRelation() works with DBFCDX like it does with Clipper 5.3b. - Changes to ADSCOPYTABLE. - Changes to ADSCOPYTABLECONTENTS. - Fixed rddMoveRecords() so that copied records, which are deleted, maintain their deleted status. Utilities --------- - HBVer - A utility to automatically update include/hbver.h. - BLDTEST : simple C program to check if Harbour can be compiled on used machine / system / C compiler. - Some updates for the Spanish documents. ---------------------------------------------------------------------- Version 0.43 Alpha Build 43 (2003-10-01) tag: build43 (tag date: 2003-09-26) - RDD DBFCDX is highly improved, it is very close to be stable now. - New national codepages has been added. - .NET support has been started. - OLE support library has been added to contributions section. - Many bug fixes and enhancements in all subsystems. ---------------------------------------------------------------------- Version 0.42 Alpha Build 42 (2003-04-08) tag: build42 - Further speed improvements - Codepage subsystem added - strings as (C-alike) bytes arrays management - Classes "[]" operator overloading support - Classes ":=" operator overloading support for locals and statics variables - Extend system Clipper more complete compatibility - RDDADS enhancements: SET PATH, DEFAULT, DELETED, EXACT, DATEFORMAT and EPOCH and their Set() function equivalents are now automatically synchronized with the server instead of using the preprocessor - Added support for some ADS version 6 features - Many bug fixes and enhancements ---------------------------------------------------------------------- Version 0.41 Alpha Build 41 (2002-12-31) tag: build41 ** was not officially released ** ---------------------------------------------------------------------- Version 0.40 Alpha Build 40 (2002-06-16) tag: build40 - Great speed improvements - ADS RDD: added support of extended data types, fixed seeking and scoping on date type indexes - HbMake enhanced : Now support MuniGUI. Internationalization (Portuguese/English/Spanish) + HbMake with Windows user interface - AltD() debugger invoke function fixed behavior - DBFNTX functionality is significantly extended over standard Clipper's. Few bugs fixed, internal algorithms improved, what gives much better performance and index quality. Now DBFNTX is fully ready to Beta 1.0 stage - DBFCDX more ready - New enhancements and bug fixes in the debugger - Many bug fixes and enhancements ---------------------------------------------------------------------- Version 0.39 Alpha Build 39 (2002-04-08) tag: build39 - Delphi integration started - Dbfntx basic functionality is ready - Added new possibilities in hrb handling - __dbSdf() is ready - Enhacements to hbmake,hbzlib - Great speed improvement - New enhancements and bug fixes in the debugger - Many bug fixes and enhancements - Strings sharing and statics strings implementation (thanks to Ron Pinkas) - RTL strings management functions optimization thanks to new function hb_retclen_buffer() and optimized use for hb_retc( NULL ) - Optimized objects messages sending (thanks to Ron Pinkas) - Harbour persistence (Class HBPersistent) optimized and impresively more faster ---------------------------------------------------------------------- Version 0.38 Alpha Build 38 (2001-12-15) tag: build38 - Added new function __VMVARSLEN() --> nStatics It returns the total amount of used statics variables - include/hbapi.h Enhanced HB_IS_OBJECT( PHB_ITEM ) - __ClsAddMsg() case HB_OO_MSG_ONERROR modifed to use hb_parnl( 3 ) - __ClsAddMsg() call, for ON ERROR clause, modified suplied parameters - ::Super(::oneVar) is now correctly interpreted - Freezed Scooping because it was not anymore working after the previous fix. Waiting after Alpha build 38 to fix and re-enable it - HGF (Harbour GUI multiplatform Framework) started - Class HBPersistent added to RTL to provide Harbour objects persistence - New PROPERTY | PERSISTENT clause added as a DATA feature - New function __ClsGetProperties() added. Syntax: __ClsGetProperties( ) --> - Harbour Profiler foundation functions added - New Apollo.lib for SIXNSX database connection via SDE60.DLL - RDD Scope handling was changed to handle non-character scopes correctly. Numeric scopes now work in RDDADS, but scopes are not yet supported in DBFCDX. - HB_FM_STATISTICS can be turned off by defining HB_FM_STATISTICS_OFF in your make or bat files. Rebuilding Harbour this way yields a faster program, but it loses the ability to report on memory usage and leaks - adssetServerType now returns any error numbers - Added AdsRefreshRecord, AdsIsTableLocked, AdsIsRecordLocked - Dave Pearson's bitflags.c, which I ported to Harbour. Has functions to use a Harbour string for storing On/Off bit flags - Added HB_TRACESTRING() which lets prg code trace a string into same trace file/window as C traces - Added __TRACEPRGCALLS( ) --> Turns on | off tracing of PRG-level function and method calls. Dumps symbol name just before it's called. This is very useful when debugging GPFs as it will trace all PRG-level calls up until the crash. Uses HB_TRACE so traces are in line with any C-level traces - Martin and Walter added a bunch of functions to libct - David added the Path stuff so file() and other functions can work right - Platform support for FreeBSD 4.4, which requires installation of the gmake (GNU make) port (instead of using FreeBSD's make) - Hbzlib enhacements - Some debugger fixes - it is now really usable. - Hbmake enhacements - On Win32 platforms, Harbour now supports the ability to create and use .DLL files. These .DLL files can be used as pcode storage, Harbour Runtime storage, or both, and if both, can be made callable from other languages that use .DLL's as fully functional standalone modules - Extended run-time preprocessing possibilities ---------------------------------------------------------------------- Version 0.37 Alpha Build 37 (2001-06-26) tag: build37 - Fixed and improved NTX support - Improved and fixed OOP - More enhanced DOT prompt with scripting engine - Enhanced HBMake utility - New HBZLib library for ZIP support in Harbour - COPY TO DELIMITED and COPY TO SDF implemented - Added support for HB_TR_FLUSH environment variable - New Harbour License based on the license used for Guile 1.4 - New HB_INKEY_EXTENDED keyboard input mode - More complete ADS support - Extended run-time preprocessing possibilities (TPreprocessor class) - Debugger fixes. It is really usable now. - Access OLEDB & COM objects with the TOleAuto() class ---------------------------------------------------------------------- Version 0.36 Alpha Build 36 (2001-02-22) - NTX read and write support - Support for Inline C code - Dot prompt and limited Harbour Interpreter - More support and fixes for ADS databases - Improved and fixed stack handling - Improved OOP - Better Class(y) and TopClass compatibility - MemoEdit() for 95% complete - More improved and enhanced TBrowse class - Lots of improvements on the Harbour Debugger - APPEND FROM & COPY TO started - New hbMake utility ---------------------------------------------------------------------- Version 0.35 Alpha Build 35 (2000-08-15) - Added HB_IDLE*() idle state handling functions. - Watcom C++ fixes. - SET RELATION support for RDDADS - New language modules: IT, DE, PL - Slang support enhanced - MemoEdit()/TEditor enhancements - .NTX support started (creation now works) - HBDOC .CHM output - Garbage collector added - Compiler -u, -m support, support for automatically compiled files for DO, SET FORMAT TO, etc., memory usage optimizations - Added HB_DISKSPACE(), __DBLIST(), __DBAPPEND() - Fixes: Line numbering, PP, macro compiler, RTL (Extend API, Item API, TRANSFORM(), DISKSPACE(), CURDIR(), __GET()), HBDOC, HBTEST (for Xbase++ and Linux), Documentation, Class engine - HBZLIB enhancements - MySQL database access contribution started - ADS RDD encryption/decryption functions added - New GTCGI driver - Improved command line parsing - Alternate Lexer (SimpLex), utilizes less memory, smaller Harbour.exe as well as smaller compiled applications (due to smaller macro compiler) ---------------------------------------------------------------------- Version 0.34 Alpha Build 34 (2000-06-02) - OO engine enhanced (multiple inheritance, scoping, forwarding and delegating) - Linux/Unix ncurses screen output and xterm mouse input support - MEMOEDIT support started - CONTRIBs better separated from core Harbour (TOOLS moved there) - Simplified and enhanced base for multiplatform coding - Language API (link/compile time language module selection) - Several small optimizations, enhancements and fixes (compiler, macro, GT, inkey, make and build systems, more strict compiler warnings) - Compiler pcode size optimizations (new compact pcode versions added and other tricks) - Far jump pcode support - Double number size support in pcode - Pcode finalized in the compiler, instead of the output generation modules - OS/2 support improved (DISKSPACE(), MEMORY(), locks, etc...) - Linux/Unix support for file locks and commit - DBFCDX index creation support (started) - Strong Typing support - OBJ generation support for BCC5x + Blinker5 - Several new CONTRIBs (Nanfor LIB, ZLIB, MSQL, CA-Tools LIB, GT LIB) - Clipper 5.3 compatible MENUITEM, POPUP, TOPBAR classes - HBDOC further enhanced - RSX32 and RSXNT compiler support - SETKEY functions, ASORT(), SAVESCREEN/RESTSCREEN rewritten in C - Extensions (XPP, C53, Harbour) are easier to switch of and better separated from Harbour - Some fixes for 10 chars support - New most compact and fast -gc0 (C language) output method added - -gf switch renamed to -go - Compiler /BUILD switch added - Crew list added to /CREDIT compiler switch - CURDIR(), CURDRIVE() fixed - Updated national language modules - More documented functions - Documented all db* related functions - New Item and Extend API functions - New tests - HBTEST made compatible with Xbase++ - DBU sources can be compiled with Harbour without changes - Added more ADS RDD functions ---------------------------------------------------------------------- Version 0.33 Alpha Build 33 (2000-04-07) - Final cleanups on global macro and symbol names (date*(), console*(), HB_FUNC()) - DISKSPACE() enhancements - Microsoft C++ 8.x compiler support started - 10 character symbol support finalized - VAL() made fully compatible - New functions HB_COMPILER(), HB_FSIZE(), HB_FTEMPNAME(), HB_FTEMPCREATE() - PP bug fixes - More functions documented - Fixed to compile with Borland C++ in C++ mode - Handling of double/long number widths and decimals made completely CA-Cl*pper compatible - Some new CA-Tools compatible functions added - MEMO type support - OS/2 DispBegin()/DispEnd() support - #pragma fixes and enhancements. (better XPP compatibility) - Source files split to several smaller files - GT API selection is now at link time instead of compile time - Make and build files further cleaned up, enhanced, optimized, synchronized etc... - Compiler and platform detection enhanced, some hacks removed, multiplatform cleanups and fixes. - Warning levels upped, warnings fixed, code quality raised - Version numbering standardized - Multiple source file support in Harbour command line - HBCLIP and RUNJAVA contribution dirs added - HBDOC Enhacements: New subtags for better output: , for paragraph for bold, for italic, for bold italic font for color for fixed text
for tables to insert the content of another file ---------------------------------------------------------------------- Version 0.32 Alpha Build 32 (2000-03-07) - New Borland make files - Many make and build processes fixes, enhancements, warning fixes - Borland, MSVC and GNU-make processes don't collide anymore - PP now supports code in header files - Docs separated from the source - Docs enhanced - Compiler and macro fixes - FRM and LBL support - TBrowse fixes - HBDOC improvments - Some mouse support added - New C include file names - Many other small fixes and changes - PP __DATE__ and __TIME__ support - __TYPEFILE() added ---------------------------------------------------------------------- Version 0.31a Alpha Build 31a (2000-02-02) tag: build31a - Bugs fixed ---------------------------------------------------------------------- Version 0.31 Alpha Build 31 (2000-01-27) tag: build31 - Added macro support - Many changes, fixes, and enhancements to compiler internals - Many changes, fixes, and enhancements to RDD system - Many changes, fixes, and enhancements to the GT API system - Improved SETCURSOR() and SET( _SET_CURSOR ) - Added FIELDBLOCK() and FIELDWBLOCK() - The Harbour '-w' command line option can set the maximal level of reported warnings. The following levels are supported currently: '-w0' - no warnings '-w' or '-w1' - Clipper compatible warnings '-w2' - some useful warnings missed in Clipper '-w3' - warnings generated for Harbour language extensions - The 'libs' directory is now named 'lib' - The 'runner' program is now named 'hbrun' - Some include files now have an 'hb' prefix in the name - db_brows significantly enhanced - Regression testing enhanced and expanded, replacing several standalone test modules. Now in tests/regress directory - Added FSETDEVMOD() - Added READINSERT() - Added MEMOLINE() - Added undocumented DISPOUTAT() - Added DEFPATH() and __DEFPATH() - Enhanced VERSION() to optionally include the compiler version used to create Harbour - Enhanced OS() to include more Windows version details - Added __INPUT(), __WAIT(), and SETTYPEAHEAD() - Added several undocumented __BOX*() functions - Added HB_VALTOSTR() - Improved Windows INKEY() support - Added missing Clipper 5.3 SETs: _SET_VIDEOMODE _SET_MBLOCKSIZE _SET_MFILEEXT _SET_STRICTREAD _SET_OPTIMIZE _SET_AUTOPEN _SET_AUTORDER - Added undocumented GETE() - Compatibility functions added: __CLASSNEW() __CLASSINSTANCE() __CLASSADD() __CLASSNAME() __CLASSSEL() __CLEAR() __ATCLEAR() - Added ANNOUNCE CLIPPER520 and ANNOUNCE CLIPPER530 - Added PROCFILE() - Added national message related functions: ISAFFIRM(), ISNEGATIVE(), NATIONMSG(), _NATSORTVER(), _NATMSGVER() - Added Harbour compiler tracing (i.e., debug output) - Many changes, fixes, and enhancements to documentation - Program added to extract documentation from source code and create NG, HLP, OS2, IPF and TROFF output files - Compile time expression optimizer - Some preprocessor fixes - Added ADS RDD - Added TYPE() function - MlCount() and MlPos() functions - Get system completely finished - Added HARBOURCMD/CLIPPERCMD environment variables - Added support for #pragma directives - Enhanced Getenv() function - Added //BUILD app command line option ---------------------------------------------------------------------- Version 0.30 Alpha Build 30 (1999-09-30) - RDD support - Support for MEM files - The debugger - Support for BEGIN/END/RECOVER/BREAK statements - The preprocessor supports changed order of keywords in xcommand/xtranslate - Error handler supports retry/substitute operations - Support for aliased expressions - Support for FIELD variables - Support for canceling the application by pressing Alt-C - Enhanced ITEM API - Support for internal command line options '//' - Severe speed improvement - Better Directory() compatibility - Redirected output works now - Even more Preprocessor compatibility - Set HARBOUR= in environment to override Set CLIPPER= settings - Rudimentary Unix keyboard support added - Tone support added - SET KEY support was added - Extensive regression test suite added (RTL_TEST) - Array handling fixed and made Clipper compatible - Ragged array declaration and initialization support added - FileSys API extensions, more C5.3 compatible functions added - Compiler command line compatibility enhanced - Internal errors made uniform - Source code cleanup and formatting - Many new functions, samples and bug fixes ---------------------------------------------------------------------- Version 0.29 Alpha Build 29 (1999-07-27) - Support for these compilers: C++ Builder DJGPP for Dos/Windows MacIntosh BC 3.1, 4.0, 4.5, 5.2 GCC OS/2 GCC Win32 MS VC GCC Linux / Unix IBM C Watcom C/C++ 10 - New INI file support - Enhanced support for MEMVAR's - Added support for PUBLIC, PRIVATE and PARAMETERS - Added support for empty arguments in functions. - Added colors support - Added support for concatenation operator "-" - Added support to generate runtime errors in functions ---------------------------------------------------------------------- Version 0.28 Alpha Build 28 (1999-07-18) - Added support for MS Visual C++ - First support for Apple Macintosh - Almost complete preprocessor - Error handling improved - Extend Library complete - First version of OOPS syntax added - MEMVAR support started - Pre processor available as a run-time function - Rich Text Format Class added - Many Terminal functions created - Many national modules added - Many new functions - Many bug fixes ---------------------------------------------------------------------- Version 0.27a Alpha Build 27a (1999-06-19) - Corrected build numbers in Harbour.exe - Corrected a little bug in HScript.prg ---------------------------------------------------------------------- Version 0.27 Alpha Build 27 (1999-06-18) - Added new directory with GNU MAKE files for GCC on Linux - Added support for Watcom C/C++ compiler - Harbour compiles fine on Linux now - Optional Strong Typed Variables - New DosShell function for DOS, OS/2 & Windows - First release of hScript added. Internet Scripting Samples! - Integrated preprocessor into compiler - Check on non used variables in codeblocks - Extended syntax for AllTrim and RTrim - Many resolved bugs - Many new functions ---------------------------------------------------------------------- Version 0.26 Alpha Build 26 (1999-06-12) - Check for non used declared variable - Better support for different platforms and compilers. - New Inifiles class - Support for IBM C++ compiler for OS/2 - Harb26.Zip includes Runner.exe now So NO NEED for any external software to run Harbour PRG's! - Many resolved Bugs - Many new functions - New National language message files - New TestBank. It compiles ALL Harbour samples - : := can now be used inside expressions (codeblocks) ---------------------------------------------------------------------- Version 0.25 Alpha Build 25 (1999-06-05) - Almost complete Clipper syntax - Better makefiles - gtApi included - Preprocessor included - Files* functions working - Many fixes, enhancements and new functions - HTML and CGI examples included - Inheritance - Even more test PRG's! ---------------------------------------------------------------------- Version 0.24 Alpha Build 24 (1999-06-03) ---------------------------------------------------------------------- Version 0.23 Alpha Build 23 (1999-05-19) - Harbour.exe for DOS/Windows is included now - The Windows libs are also included (HBW.BAT to build Windows EXE's) - HRB files! These files can be run with the Runner.exe (Source included) - No need for a C compiler anymore to run Harbour source! - New MAKE and BUILD files for IBM C++ 3.0 for OS/2 - Many fixes, Many enhancements (See ChangeLog in the Harbour directory) - Added support for '-i' option (#include file search path) - Even more test PRG's ---------------------------------------------------------------------- Version 0.21-2 Alpha Build 21-2 (1999-05-13) - 32 bits OBJ's generation - More Clipper language compatibility - New object oriented features ---------------------------------------------------------------------- Version 0.20-2 Alpha Build 20-2 (1999-05-01) - It is not required to name Main() as the starting function. You may use any function name there - Logical AND shortcutting - New compiler /z to suppress shortcutting (see tests\working\and_or.prg) - Memory unreleased blocks improved - Many latest diffs implemented ---------------------------------------------------------------------- Version 0.18 Alpha Build 18 (1999-04-23) - Statics support - Classes creation: just a very very brief - Most important changes are related to the Harbour object oriented capabilities - Dynamic symbol table implementation ---------------------------------------------------------------------- Version 0.17 Alpha Build 17 (1999-04-20) - Multidimensional arrays support!!! - Spitted files - We have started the runtime library implementation (source\rtl) - The harbour.lib gets built from the make file - Dates support - Dynamic stack is properly working - Much improved extend system - More tests for dates, strings - Dates support including adding and subtracting! - Variables by reference support - Labeled C pcode output - Many diffs implemented ---------------------------------------------------------------------- Version 0.16 Alpha Build 16 (1999-04-17) - New project directories structure - Added support for command line parameters - Compiler /o options changed to /g - /gc added (default option) - Changes on types.h - Extend system functions enhanced - Do case support - _POWER support on hvm - _MODULUS support on hvm - Latest proposed diffs implemented ---------------------------------------------------------------------- Version 0.15 Alpha Build 15 (1999-04-14) ---------------------------------------------------------------------- Version 0.14 Alpha Build 14 (1999-04-13) ---------------------------------------------------------------------- Version 0.13 Alpha Build 13 (1999-04-10) ---------------------------------------------------------------------- Version 0.12 Alpha Build 12 (1999-08-08) ---------------------------------------------------------------------- Version 0.11 Alpha Build 11 (1999-04-07) ---------------------------------------------------------------------- Version 0.10 Alpha Build 10 (1999-04-03) ---------------------------------------------------------------------- OpenClipper #9 Alpha build 9 (1999-04-01) - PARAMETERS support - BEGIN SEQUENCE support - #include support (it opens the include files and parse them) - #define support for both identifiers and expressions (though expressions are not translated yet) - #ifdef and #ifndef support - while loops without statements support - Bison 1.24 is used now instead of byacc as byacc were returning a 'Out of space' error (parser execution is faster now!) - We are linking using huge memory model now cause DGROUP was already over 64Kb ---------------------------------------------------------------------- OpenClipper #8 Alpha build 8 (1999-03-29) ---------------------------------------------------------------------- OpenClipper #7 Alpha build 7 (1999-03-26) ---------------------------------------------------------------------- OpenClipper #6 Alpha build 6 (1999-03-25) ----------------------------------------------------------------------