2006-05-23 14:21 UTC+0300 Chen Kedem <niki@actcom.co.il>
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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$
|
||||
*/
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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" );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user