2006-05-23 14:21 UTC+0300 Chen Kedem <niki@actcom.co.il>

This commit is contained in:
Chen Kedem
2006-05-23 11:21:29 +00:00
parent d495e5ad00
commit 658d94b056
4 changed files with 366 additions and 54 deletions

View File

@@ -9,6 +9,17 @@
*/
2006-05-29 14:10 UTC+0100 Ryszard Glab <rglab//imid.med.pl>
+ Add information about the upcoming alpha build 45.
*fixed invalid memory access
*fixed to generate error in cases when variable name is duplicated
in PARAMETERS and PRIVATE statements (NOTICE: this error is
generated when automatic memvar declaration was requested only
using -a command line switch)
2006-05-23 14:21 UTC+0300 Chen Kedem <niki@actcom.co.il>
* doc/whatsnew.txt
+ Add information about the upcoming alpha build 46.
@@ -81,7 +92,7 @@
* harbour/source/vm/hvm.c
! fixed hb_rddGetFieldValue() to not operate on unallocated stack area
2006-05-14 09:36 UTC+0200 Chen Kedem <niki@actcom.co.il>
it could cause unpredictable results when RDD had to access HVM, f.e.
for evaluation some pending relations. The whole code should be
carefully checked and to not operate on hb_stackTopItem() if other
functions are called to make the HVM fully reentrant.

View File

@@ -21,7 +21,7 @@
* harbour [options] <file[.prg]> [options] </par>
*
* The command line options have to be separated by at least one space.
* The option can start with either '/' character or '-' character.
* The option can start with either '/' character or '-' character.
*
* <b>The Harbour command line options: </b> </par>
* ================================= </par>
@@ -30,12 +30,12 @@
* ================= </par>
* This causes all variables declared by PARAMETER, PRIVATE or PUBLIC
* statements to be automatically declared as MEMVAR variables.
* statements to be automatically declared as MEMVAR variables.
*
* /b debug info </par>
* ================= </par>
* The compiler generates all information required for debugging
* The compiler generates all information required for debugging
*
* /d<id>[=<val>] #define <id> </par>
* ================= </par>
@@ -46,20 +46,22 @@
* /es or /es0 - all warnings are ignored and exit code returned by
* the compiler (accessed by DOS ERRORLEVEL command)
* is equal to 0 if there are no errors in compiled
* source file.
* source file.
*
* /es1 - any warnings generate a non-zero exit code, but
* output is still created.
* output is still created.
*
* /es2 - all warnings are treated as errors and no output
* file is created. The exit code is set to a non-zero
* value.
* value.
* /g<type> output type generated is <type> </par>
* ================= </par>
*
* /gc[<type>] output type: C source (.c) (default)
* <type>: 0=compact 1=normal 2=verbose (default)
* 3=generate real C code instead of PCODE
* array called by a C wrapper.
*
* /go output type: Platform dependant object module
*
@@ -72,28 +74,28 @@
* /k<mode> enable <mode> compatibility mode </par>
* ================= </par>
*
* /kc clear all flags (strict Clipper compatibility)
* /kc clear all flags (strict Clipper compatibility)
*
* /kh Harbour extensions (default)
* /kh Harbour extensions (default)
*
* /ki HB_INLINE support enabled (default)
*
* /kr use runtime settings for the macro compiler
* /kr use runtime settings for the macro compiler
*
* /ks enable support for strings as array of bytes (default)
* /ks enable support for strings as array of bytes (default)
*
* /kx other xbase dialects extensions (default)
* /kx other xbase dialects extensions (default)
*
* /kJ disable optimalization of jump and noop pcodes
* /kJ disable optimalization of jump and noop pcodes
*
* /k? invoke help information
* /k? invoke help information
*
* /l suppress line number information </par>
* ================= </par>
*
* The compiler does not generate the source code line numbers in
* the output file. The PROCLINE() function will return 0 for
* modules compiled using this option.
* The compiler does not generate the source code line numbers in
* the output file. The PROCLINE() function will return 0 for
* modules compiled using this option.
*
* /m compile current module only </par>
* ================= </par>
@@ -107,7 +109,7 @@
* wide scope and can be accessed/used in all functions/procedures
* defined in the compiled source file. All executable statements
* placed at the beginning of the file and before the first
* PROCEDURE/FUNCTION statement are ignored.
* PROCEDURE/FUNCTION statement are ignored.
*
* /o<path> output file drive and/or path </par>
* ================= </par>
@@ -116,26 +118,26 @@
* ================= </par>
*
* The compiler only creates the file that contains the result of
* pre-processing the source file.
* pre-processing the source file.
*
* /q quiet </par>
* ================= </par>
*
* The compiler does not print any messages during compiling
* (except the copyright info).
* (except the copyright info).
*
* /q0 be really quiet and don't display even the copyright info
* /q0 be really quiet and don't display even the copyright info
*
* /r[<lib>] request linker to search <lib> (or none) </par>
* ================= </par>
*
* Currently not supported in Harbour.
* Currently not supported in Harbour.
*
* /r=<max> sets maximum number of preprocessor iterations </par>
* ================= </par>
*
* This set the maximum number of preprocessor iterations
* during processing the source code. If this switch is not
* during processing the source code. If this switch is not
* used then the preprocessor stops after 1024 iterations.
* This value is used to stop processing of infinite loops,
* for example:
@@ -144,13 +146,13 @@
* /s syntax check only </par>
* ================= </par>
*
* The compiler checks the syntax only. No output file is generated.
* The compiler checks the syntax only. No output file is generated.
*
* /t<path> path for temp file creation </par>
* ================= </par>
*
* Currently not used in Harbour (the Harbour compiler does not
* create any temporary files).
* create any temporary files).
*
* /u[<file>] use command definition set in <file> (or none) </par>
* ================= </par>
@@ -160,7 +162,7 @@
*
* All undeclared or unaliased variables are assumed MEMVAR
* variables (private or public variables). If this switch is not
* used then the scope of such variables is checked at runtime.
* used then the scope of such variables is checked at runtime.
*
* /w[<level>] set warning level number (0..4, default 1) </par>
* ================= </par>
@@ -179,7 +181,7 @@
* /w4 - Enables warning about suspicious operations, which
* means if you mix undeclared types, or types which
* can not be calculated at compile time,together with
* declared types, a warning will be generated.
* declared types, a warning will be generated.
*
* /x[<prefix>] set symbol init function name prefix (for .c only) </par>
* ================= </par>
@@ -188,14 +190,14 @@
* (in C output currently). This function is generated
* automatically for every PRG module compiled. This additional
* prefix can be used to suppress problems with duplicated symbols
* during linking an application with some third party libraries.
* during linking an application with some third party libraries.
*
* /y trace lex & yacc activity </par>
* ================= </par>
*
* The Harbour compiler uses the FLEX and YACC utilities to parse
* the source code and to generate the required output file. This
* option traces the activity of these utilities.
* option traces the activity of these utilities.
*
* /z suppress logical shortcutting (.and. & .or.) </par>
* ================= </par>
@@ -206,7 +208,7 @@
* @<file> compile list of modules in <file> </par>
* ================= </par>
*
* Not supported yet.
* Not supported yet.
*
* <b>Known incompatibilities between harbour and clipper compilers </b> </par>
* ============================================================= </par>
@@ -218,7 +220,7 @@
* option should be defined in the file include/hbsetup.h (in fact this
* option is placed in a comment by default - you need to remove the
* /* */ characters only). This change has to be done before invoking
* the make utility.
* the make utility.
*
*
* <b>Handling of undeclared variables </b> </par>
@@ -227,23 +229,23 @@
* When a value is assigned to an undeclared variable and the '-v'
* command line option is not used, then the Clipper compiler assumes
* that the variable is a PRIVATE or a PUBLIC variable and generates
* POPM (pop memvar) opcode.
* POPM (pop memvar) opcode.
*
* When the value of an undeclared variable is accessed and the '-v'
* command line option is not used, the Clipper compiler generates PUSHV
* (push variable) opcode that determines the type of variable at runtime.
* If a field with the requested name exists in the current workarea then
* its value is used. If there is no field then a PRIVATE or a PUBLIC
* variable is used (if exists).
* variable is used (if exists).
*
* The Harbour compiler generates an opcode to determine the type of
* variable at runtime (POPVARIABLE or PUSHVARIABLE) in both cases
* (assignment and access).
* (assignment and access).
*
* The difference can be checked by the following code:
* The difference can be checked by the following code:
*
* <fixed>
* PROCEDURE MAIN()
* PROCEDURE MAIN()
* PRIVATE myname
*
* DBCREATE( "TEST", { { "MYNAME", "C", 10, 0} } )
@@ -266,7 +268,7 @@
*
* RETURN
* </fixed>
*
*
* <b>Passing an undeclared variable by the reference </b> </par>
* =============================================== </par>
*
@@ -278,46 +280,46 @@
* This is the reason why the Harbour compiler uses the usual
* PUSHMEMVARREF opcode in such cases. Notice that the runtime behavior
* is the same in Clipper and in Harbour - only the generated opcodes
* are different.
* are different.
*
*
* Handling of object messages </par>
* =========================== </par>
*
* The HARBOUR_STRICT_CLIPPER_COMPATIBILITY setting determines
* the way chained send messages are handled.
* the way chained send messages are handled.
*
* For example, the following code:
* For example, the following code:
*
* a:b( COUNT() ):c += 1
* a:b( COUNT() ):c += 1
*
* will be handled as:
* will be handled as:
*
* a:b( COUNT() ):c := a:b( COUNT() ):c + 1
* a:b( COUNT() ):c := a:b( COUNT() ):c + 1
*
* in strict Clipper compatibility mode and
* in strict Clipper compatibility mode and
*
* temp := a:b( COUNT() ), temp:c += 1
* temp := a:b( COUNT() ), temp:c += 1
*
* in non-strict mode.
* in non-strict mode.
*
* In practice, Clipper will call the COUNT() function two times:
* the first time before addition and the second one after addition.
* In Harbour, COUNT() will be called only once, before addition.
* In Harbour, COUNT() will be called only once, before addition.
*
* The Harbour (non-strict) method is: </par>
* 1) faster </par>
* 2) it guarantees that the same instance variable of the same object
* will be changed
* will be changed
*
* (See also: source/compiler/expropt.c)
* (See also: source/compiler/expropt.c)
*
* <b>Initialization of static variables </b></par>
* ================================== </par>
*
* There is a difference in the initialization of static
* variables that are initialized with a codeblock that refers to
* a local variable. For example:
* a local variable. For example:
* <fixed>
* PROCEDURE TEST()
@@ -332,10 +334,10 @@
* The above code compiles fine in Clipper, but it generates a
* runtime error Error/BASE 1132 Bound error: array access
* Called form (b)STATICS$(0)
* Called form (b)STATICS$(0)
*
* In Harbour this code generates a compile time error:
* Error E0009 Illegal variable (b) initializer: 'MyLocalVar'
* Error E0009 Illegal variable (b) initializer: 'MyLocalVar'
*
* Both Clipper and Harbour are handling all local variables used in a
* codeblock in a special way: they are detached from the local stack
@@ -345,7 +347,7 @@
* ('STATICS$' in Clipper and '(_INITSTATICS)' in Harbour) before the
* main procedure and before all INIT procedures. The local variables
* don't exist on the eval stack when static variables are initialized,
* so they cannot be detached.
* so they cannot be detached.
*
* $END$
*/

View File

@@ -2,6 +2,304 @@
* $Id$
*/
----------------------------------------------------------------------
Version 0.46 Alpha Build 46 (2006-05-??)
The compiler
------------
- Added new compiler switch -gc3 to generate real C code output
(instead of PCODE array called by a C wrapper).
- Fixed bug in divide by 0 substitution.
- Fixed bug in ASC() optimization (when character code > 127)
- 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.
- Added HB_TYPE to as HB_ITEM type marker.
- Set HB_TYPE as UINT32.
- Cleaned some ~HB_IT_BYREF which has no effect in current VM.
- Added -undef: compiler switch (borrowed from xHarbour).
- Fixed path delimiters in included file names.
- Added support for FOR EACH loop.
- Added warnings in cases of duplicated loop variables.
- Removed strong typing in the compiler. Reactivate it by compiling
with -DHB_COMP_STRONG_TYPES.
- New pcodes were added.
- 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.
- Emit warning and error messages to stderr instead of stdout on *nix
platforms.
- FLEX: Added support for DATE type constants in the format 0dYYYYMMDD
- FLEX: Added support for SWITCH command (see tests/switch.prg).
- Fixed to release the memory if macro compiled code contains a
variable or a function reference.
- Rewritten jump optimization.
- Do not optimize jumps and local variable access by shorter PCODE
version and HB_P_NOOP when jump optimization is disabled.
- Added support for multi passes in jump/dead code elimination.
- Added dummy jumps elimination.
- Added unconditional and conditional jump joining optimization.
- Added optimization for: IF .T.
IF .F.
WHILE .T.
WHILE .F.
- Restored empty BEGIN/RECOVER sequence block elimination if Jump
Optimization is enabled then it marks the block with HB_P_NOOPS else
it cut the generated PCODE.
- Added dead code eliminator. It works only when Jump Optimization is
not disabled. As a result, we have smaller and faster PCODE.
- Fixed to release memory allocated with the proeprocessor.
- PP: Fixed bug in processing the list of optional repeatable code.
- PP: Added tracing code.
- PP: Fixed handling of optional clauses in command/translate.
- PP: Fixed <-x-> match marker.
- PP: Fixed bug in ParseOptional <"var"> were not recognized
correctly.
- PP: Fixed compilation of \[ and \] in command/translate.
- PP: Fixed to preserve spaces the same way (almost) as Clipper.
- 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.
- 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.
- All compiler structures are deallocated on exit now.
- Added to new errors (memory corruption and memory overflow) for
compiler level FM statistic.
- Fixed compilation of included files in cases when the file ends
with ';' (with no LF or CR).
- 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
- Added new command line switch -r=<max_recursive_preprocessor_passes>
- Modified TEXT/ENDTEXT to use '#pragma __text'.
- Added #pragma __stream and #pragma __cstream.
- Fixed hb_p_functionshort pcode size returned by genc function.
- Fixed double value presented in verbose genc mode for
HB_P_PUSHDOUBLE.
- Fixed number of cases presented in verbose genc mode for HB_P_SWITCH.
- Fixed stripping non identifier characters from symbol table name.
- Added support for dead code elimination in functions which uses
SWITCH ...; CASE ...; ...; END syntax.
- Cleaned the code which created HB_ITEMs on C stack.
- Added memory duplication for macro text (&a._m).
- 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.
- Fixed optimization of 'EVAL' in macro compiler.
- 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.
- Message symbols are not function symbols, cleaned the HB_FS_MESSAGE
usage and fix the problem with registering static function in global
symbol table.
- Classed: Added support to passing function references as
HB_IT_SYMBOL.
The runtime modules
-------------------
- GT: 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.
- GT: New GTAPI.
- GT: Added GTI_* defintions for hb_gtInfo() function. This function
works in similar way to dbInfo() in RDD.
- GT: New driver GTCRS based on xHarbour and Flagship curses code.
- GT: New driver GTWVT for Win32 using GUI window instead of console.
- GT: New driver GTXWC for XWindow Console.
- GT: New driver GTALLEG for Allegro cross platform graphic libraries.
- GT: Respect pure REQUEST HB_GT_NUL as user GT choice if only GTNUL
is linked.
- 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.
- 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 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.
- Codepage: Updated UNICODE values for characters in rabge 1-31 to
keep DOS compatibility.
- Codepage: Renamed files (cdp*.c -> cd*.c).
- Codepage: Added UTF8 related functions: hb_cdpUTF8StringLength(),
hb_cdpStringInUTF8Length(), hb_cdpUTF8ToStrn().
- 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.
- Fixed possible GPF in CTOD when badly formated date is given.
- Fixed invalid handle error in Windows when file() fails (borrowed
from xHarbour).
at least one lang module defined at sartup.
- 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.
- Possible problem fixed in __CLSADDMSG() where message parameter was
required to be uppercase when overloading operators .NOT. .AND. .OR.
- Fixed GPF in HB_LIBDO called with wrong parameter.
- hb_itemType() return "S" for HB_IT_SYMBOL.
- Lang: Moved EN lang definitions to core lang code so we always have
- Lang: HU sorting order fixed to be more compatible with Clipper.
- Lang: Added BG language support.
- hb_DiskSpace() changed to not give a runtime error in case of any
error, but set the FError() value instead.
- Fixed displaying of boxes under the xterm, use @ TO instead of @ BOX.
- Cleaned some HB_EXTERN_C declaration.
- Cleaned startup initialization code for lang and codepages.
- Synced file IO with xHarbour, it fixed some problems, added some
missing functionality and long (64bit) file support for Windows.
- Added C -> OS file error trnalsations - 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.
- SetUnhandledExceptionFilter() is called if HB_INCLUDE_WINEXCHANDLER
define is used.
- UnhandledExceptionFilter renamed as hb_UnhandledExceptionFilter, and
WINBASEAPI removed.
- Allow hb_param() to return parameters accessed by HB_IT_BYREF.
- Optimized hb_dateEncode().
- 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.
- Changed definition of HB_SYMB structure.
- 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.
- Fixed GPF when unshareing string item buffer with embedded 0 by
using hb_itemUnShare().
- Added hb_fsSetDevMode() Unix branch added.
- hb_secondsCPU() move inside FlagShip guard instead of HB_EXTENSION.
- 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.
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,<DB_MEMO_DBT|DB_MEMO_FPT|DB_MEMO_SMT> [,<cRdd>])
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)

View File

@@ -68,6 +68,7 @@ void hb_compPrintUsage( char * szSelf )
"\n %cg<type> output type generated is <type> (see below)",
"\n %cgc[<type>] output type: C source (.c) (default)",
"\n <type>: 0=compact 1=normal 2=verbose (default)",
"\n 3=generate real C code",
"\n %cgo output type: Platform dependant object module",
"\n %cgw output type: Windows/DOS OBJ32 (.obj)",
"\n %cgh output type: Harbour Portable Object (.hrb)",
@@ -188,5 +189,5 @@ void hb_compPrintLogo( void )
{
printf( "Harbour Compiler Alpha build %d.%d (%s)\n",
HB_VER_MINOR, HB_VER_REVISION, HB_VER_LEX );
printf( "Copyright 1999-2005, http://www.harbour-project.org/\n" );
printf( "Copyright 1999-2006, http://www.harbour-project.org/\n" );
}