+ Added to the list of contributors:
Carlos Bacco (carlosbacco gmail.com)
Francesco Perillo (fperillo gmail.com)
Istvan Bisz (istvan.bisz t-online.hu)
Tamas Tevesz (ice extreme.hu)
(I accept recommendation about who else should be added,
it's be a while I updated this list)
* contrib/hbide/ideparseexpr.c
% Using hb_parldef().
* harbour/include/hbcom.ch
+ added new error constant value: HB_COM_ERR_IO
* harbour/src/rtl/hbcom.c
+ added translation for some important OS error code
in *nix builds
+ added translation ERROR_TIMEOUT -> HB_COM_ERR_TIMEOUT
in Windows build.
TODO: check real error codes for it and also for other
operations like opening the same port more then
once and add valid translations
; TODO: add some basic trnaslation for OS2 error codes.
HB_COM_ERR_TIMEOUT seems to be most important for portable
programs.
* harbour/include/hbcom.ch
* updated few comments
* harbour/include/hbapicom.h
* harbour/src/rtl/hbcom.c
+ added new C function:
HB_FHANDLE hb_comGetDeviceHandle( int iPort );
* small cleanup in OS2 flow control setting
* harbour/src/rtl/hbcomhb.c
+ added new PRG function
HB_COMGETDEVICEHANDLE( nPort ) --> nHandle | F_ERROR
* modified HB_COMFLOWCONTROL() to not change existing flow control
when 3-rd parameter is missing:
HB_COMFLOWCONTROL( nPort, @nOldFlow [, nNewFlow] ) --> lSuccess
* harbour/contrib/hbmzip/hbmzip.c
! fixed date setting in HB_ZIPFILECREATE()
* harbour/src/pp/ppcore.c
+ added new PP directive:
#warning <*msg*>
* harbour/include/hbclass.ch
* use #warning instead of #error for class method declaration mismatch
(enabled by -w3 compiler switch)
* harbour/include/hbapicom.h
* harbour/src/rtl/hbcom.c
+ added public C function: void hb_comSetError( int iPort, int iError )
* harbour/src/rtl/hbcomhb.c
+ added PRG function: HB_COMSETERROR( nPort, nError ) --> NIL
* harbour/src/rtl/hbsocket.c
* minor formatting
* harbour/config/doc.mk
* harbour/config/postinst.hbs
* harbour/contrib/make.hbs
* do not install documentation files when HB_INSTALL_DOC=no
* harbour/config/postinst.hbs
! do not install .hbl files for core utils when HB_BUILD_PARTS=lib
+ added support for HB_INSTALL_SCRIPT executed after install step.
It allows to extract some variables set by our GNU make system,
i.e. it's used to retrieve HB_CCPREFIX in win/wince .spec files.
* harbour/package/harbour-win.spec.in
* use HB_INSTALL_DOC=no to disable DOC file installation
* generate hb{w|ce}mk2 scripts as wrappers to hbmk2 with cross
build settings so it can be easy used used by users to create
Windows/WindowsCE binaries.
Temporary solution until we will not have something more general.
* contrib/hbqt/utils/hbqtgen.prg
+ Changed HBQT_TYPE_* constants to be crc32 hashes
derived from component name + type name + "HBQT_TYPE_"
string to guarantee uniqueness (and to make it
possible to generate it dynamically).
[ BTW formerly the base value was derived from
component name with crc16, and the rest was incremented
counter dependent on input file order. ]
Please review hash generation, as it needs to be
constant for a longer time, and hash method should be
possible to extend to other IDs, like QT enums.
* contrib/hbqt/qtgui/g/hbqtgui.h
* contrib/hbqt/qtwebkit/g/hbqtwebkit.h
* contrib/hbqt/qtcore/g/hbqtcore.h
* contrib/hbqt/qtnetwork/g/hbqtnetwork.h
* contrib/hbqt/qscintilla/g/hbqscintilla.h
* contrib/hbqt/qtdesigner/g/hbqtdesigner.h
* Regenerated.
* src/rtl/inkeyapi.c
* src/rtl/inkey.c
! Copyright comments moved/updated.
* harbour/include/hbclass.ch
% small modification to reduce lock time
* harbour/src/common/hbdate.c
! fixed hb_timeUTCOffset() in MS-Windows builds to work in some
countries/windows versions where GetTimeZoneInformation() returns
TIME_ZONE_ID_INVALID but sets correct tzInfo.StandardBias field.
* harbour/package/mpkg_ver.sh
! fixed to set correctly root path after moving build scripts to
./package subdirectory
* harbour/utils/Makefile
! do not build executable files when HB_BUILD_PARTS is set to 'lib'
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/olecore.c
+ implemented WIN_OLEAUTO class overloading
* harbour/contrib/hbwin/legacy.prg
- removed "[]" overloading. It's in the core object now.
* src/rtl/hbjson.c
! fixed long long printf format
* harbour/src/rtl/hbzlib.c
+ added new PRG function:
HB_GZCOMPRESSBOUND( <cData> | <nDataLen> ) -> <nMaxCompressLen>
! fixed compilation with ZLIB versions earlier then 1.2.0 broken by
missing deflateBound() function which I used recently.
* harbour/src/rtl/hbzlib.c
! added our own version of compressBound() function for
ZLIB versions 1.2.0 and earlier. It makes HB_ZCOMPRESSBOUND()
working and fixes code like:
<cResult> := HB_ZCOMPRESS( <cData> )
+ added new PRG function:
HB_GZCOMPRESS( <cData>, [<nDstBufLen>|<@cBuffer>], ;
[<@nResult>], [<nLevel>] )
=> <cCompressedData> or NIL on Error
It works like HB_ZCOMPRESS() but uses GZIP instead of ZLIB
encapsulation for compressed data.
+ added support for GZIP compressed strings to HB_ZUNCOMPRESS() and
HB_ZUNCOMPRESSLEN() functions so they can be used with data compressed
by HB_GZCOMPRESS() function or read from .gz files.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
! save and restore index tag during reindexing when one of tags
with smaller number then the current one is moved to the end of
tag list - Clipper compatibility problem reported by Maurilio.
; Please remember that in Harbour DBFCDX during reindexing adds
new tag at the end of tag list removing the old one. It's CL53
DBFCDX and COMIX compatible behavior but it's different then
CL52 DBFCDX and SIXCDX.
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
! update tag numbers after reindexing
* harbour/src/rtl/filesys.c
* unified hb_fsSeek[Large]() return value when seek operation cannot
be executed for given file handle. Now it's 0 for all platforms.
* harbour/include/hbapicls.h
* harbour/src/vm/classes.c
+ added new public C function
PHB_SYMB hb_clsFuncSym( HB_USHORT uiClass )
It returns class function symbol or NULL.
* harbour/ChangeLog
* harbour/config/os2/gccomf.mk
* harbour/include/hbpcode.h
* harbour/include/hbdebug.ch
* harbour/include/hbmath.ch
* harbour/include/hbgfx.ch
* harbour/src/vm/classes.c
* harbour/utils/hbmk2/hbmk2.prg
* removed dummy trailing spaces at EOLs
+ harbour/src/rtl/hbjson.c
+ added JavaScript Object Notation (JSON) encoder, decoder functions
; C level functions:
char * hb_jsonEncode( PHB_ITEM pValue, HB_SIZE * pnLen );
pValue - value to encode;
pnLen - if pnLen is not NULL, length of returned buffer is
stored to *pnLen;
returns pointer to encoded JSON buffer. buffer must be fried
by the caller.
HB_SIZE hb_jsonDecode( const char * szSource, PHB_ITEM pValue );
szSource - JSON source;
pValue - item to store decoded value. Item value is
undetermined in case of error;
returns number of bytes decoded from the buffer. This allows
to use the remaining part of the buffer for some other
purposes. Returns 0 on error.
Harbour level functions:
hb_jsonDecode( cJSON, @xValue ) --> nLengthDecoded
hb_jsonEncode( xValue ) --> cJSON
Note:
- Harbour types unsupported by JSON (date, timestamp, etc.) are
encoded as null values;
- strings are encoded in UTF-8;
- JSON encode functions are safe for recursive arrays and hashes.
Recursive part of array or hash will be stored as null. JSON
encoder still allows to use same structure in the leaves, in
this case content will be duplicate.
I.e.:
xI := {1, NIL}
xI[2] := xI
? hb_jsonEncode( xI ) // [1,null]
but:
xI := {1, .T.}
xI := {2, xI, xI}
? hb_jsonEncode( xI ) // [2,[1,true],[1,true]]
* harbour/config/c.mk
* harbour/config/rules.mk
* use .sx file extension instead of .S to avoid problems with
non case sensitive filesystems
* harbour/src/rtl/fstemp.c
! fixed DOS version of hb_fsTempDir() - tmpnam() may return pure
file name without path i.e. in OpenWartcom builds
* accept optionally TEMP, TMP and TMPDIR environment variables in
DOS and OS2 build looking for directory with temporary files
* src/compiler/hbcomp.c
! Revisiting non-*nix stdout/stderr usage in compiler.
From now on the Clipper (and old MS-DOS/Windows tool)
compatible behavior is only maintained for MS-DOS Harbour
builds, for the rest error messages are output to stderr,
regular msgs are output to stdout.
* harbour/include/hbatomic.h
* added two new build time macros which can be used to control
using GCC atomic builtin functions changing the default settings.
HB_USE_GCCATOMIC_OFF - disable using atomic builtins
HB_USE_GCCATOMIC - force using atomic builtins
- harbour/src/pp/hbpp.1
+ harbour/examples/pp/pp.1
! moved man files for old harbour preprocessor to correct place
+ harbour/src/pp/hbpp.1
+ added new man file for current hbpp
* harbour/include/hbpp.h
* harbour/src/pp/ppcore.c
+ added new result marker <@> which creates token significant for PP but
invisible for compiler.
This extenssion allows to resolve problem with circular rules in very
easy way, i.e.
#command function <!name!>( [@]<!par1!> [:= <val1>] ;
[, [@]<!parN!> [:= <valN>]] ) => ;
function <name>( <par1> [, <parN> ] ) <@>
* include/hbcomp.h
* src/macro/macro.yyc
* src/macro/macro.y
* src/macro/macrolex.c
* src/compiler/hbmain.c
* src/compiler/complex.c
* src/compiler/harbour.yyc
* src/compiler/harbour.y
* Changed prefix used for bison generated function prefix
(hb_comp -> hb_comp_yy, hb_macro -> hb_macro_yy)
; Pls review.
This avoids collision between hb_macroError/hb_macroerror
for obsolete tools like bcc implib which uses case-insensitive
symbol lookup by default)
* package/winuni/mpkg_win_uni_extra_copy.bat
+ Added trick to generate special implib for core .dlls so
that now bcc can use the regular Harbour one and doesn't
need the special '-bcc' postfixed version to be shipped.
An ugly trick for an obsolete compiler.
(release process now requires bcc implib tool because of this)
* utils/hbmk2/hbmk2.prg
+ Added -c option to implib calls. This fixes implib generation
for certain .dlls, like OpenSSL.
* harbour/include/hbpp.h
! typo in comment
* harbour/src/pp/ppcore.c
! fixed to not include file by #pragma __*streaminclude <file> | ...
used inside code disabled by #if* condition, i.e.
#if 0
#pragma __streaminclude "file.unknown" | ? %s
#endif
! fixed memory leak and unclosed file handle when too long file was
included by #pragma __*streaminclude <file> | ...
! fixed line numbering in code using
#pragma __*streaminclude <file> | ...
! fixed possible wrong preprocessing or even GPF in code using
#pragma __*streaminclude <file> | ...
indirectly (i.e. by some other PP directives) or more then once
in single line (i.e. using ';' as directive separator)
* harbour/src/vm/classes.c
+ extended error messages in __CLSINSTSUPER() function to show the name
of super class which cannot be created
* harbour/src/rtl/tclass.prg
* force RTE for superclasses defined using function declared as DYNAMIC
It should help in locating the problem in wrongly linked code, i.e.
without some superclasses.
* harbour/src/rtl/empty.c
* modified EMPTY() function behavior so now for symbols
created for functions declared as DYNAMIC it does not
return .T. but .F. for functions which are registered
in HVM.
As side effect above modifications should fix some code
in RTL and contrib which used !EMPTY() for DYNAMIC function
symbols.
* contrib/make.hbs
+ Generalized the way dynamic lib dependencies are found
to make it work on *nix systems, too.
* include/harbour.hbx
+ src/rtl/libnamec.c
* src/rtl/libname.prg
* src/rtl/Makefile
+ Added HB_LIBEXT() and HB_LIBPREFIX() functions.
* utils/hbmk2/hbmk2.prg
+ Added "platform", "compiler", "cpu", "buildname", "dynsuffix"
to --hbinfo returned data.
* INSTALL
+ Documented HB_BUILD_CONTRIB_DYN setting. The default is
'no', and if set to 'yes', the build system will create
dynamic lib versions of the contribs.
* src/Makefile
* utils/hbformat/Makefile
* utils/hbi18n/Makefile
* utils/hbtest/Makefile
* config/global.mk
* config/dos/watcom.mk
* config/dos/djgpp.mk
* config/dyn.mk
* config/rules.mk
* INSTALL
* Renamed HB_BUILD_DLL to HB_BUILD_DYN.
* ChangeLog
* include/harbour.hbx
* src/rtl/Makefile
+ src/rtl/libname.prg
+ tests/libname.prg
+ Added HB_LIBNAME( <cDynLibName>[, <cDynLibDir> ] ) -> <cOSDynLibName>
Serves to convert a raw dynlib name, f.e. "hbct" to OS specific
notation, by adding platform specific extension, lib name prefix and
optional directory
* utils/hbmk2/hbmk2.prg
! Fixed dynlib prefix for symbian
* harbour/include/hbcomp.h
! fixed description of HB_VS_CBLOCAL_VAR macro
* harbour/src/compiler/hbmain.c
! fixed wrongly generated E0047 compile time error for
codeblocks with early evaluated macros accessing local
parameters. It should fix problem reported by Itamar.
* harbour/src/vm/hvm.c
* modified one #if condition to pacify ICC warning
reported by Andi
* config/global.mk
! Fixed setting LD_LIBRARY_PATH under pre-3.81 GNU Makes.
+ Will now set HB_SYSLOC=yes when creating .tgz packages which
are meant to be installed to system locations. (didn't test
this one)
+ Will now set HB_INSTALL_DOC to /share/doc/harbour on *nix systems.
! Fixed to set HB_INSTALL_MAN to /share/man (instead of /man) on
*nix systems.
; Please test/review these.
* config/postinst.hbs
+ Create directory for "root documents". They are now stored
in /share/doc/harbour for *nix.
! Fixed to store proper directory in ld.so.conf.d setting by
removing HB_INSTALL_PKG_TOP from the beginning of full dynlib
path.
* debian/rules
* package/harbour.spec
* package/harbour-win.spec.in
* package/harbour-wce.spec.in
! Use HB_INSTALL_PKG_TOP to denote the root of package dir structure.
; TODO: Change the name to HB_INSTALL_PKG_ROOT
; TODO: Optimize variable usage.
; TOFIX: Use HB_INSTALL_DYN instead HB_INSTALL_LIB in context of
dynamic libs in postinst.hbs and package scripts.
* package/harbour.spec
! Fixed to honor HB_BUILD_NAME in local LD_LIBRARY_PATH setting.
(is it needed?)
* INSTALL
- Deleted note about GNU Make 3.81.90
3.82 is out and the bug was fixed.
! Updated mpkg_src.sh location.
* contrib/make.hbs
* Do not create dynlib, .hbd, .hbx if the main build process
returned with non-zero errorlevel.
* utils/hbmk2/hbmk2.prg
+ Return errorlevel when -stop is used in project.
+ Use manifest constants for errorlevels.
* config/hbextern.hbs
* Local function renamed.
* contrib/xhb/xhb.hbx
* contrib/hbxpp/hbxpp.hbx
* Regenerated.
* src/vm/pvaluehb.c
! Typo in comment.
* contrib/hbqt/utils/hbqtgen.prg
+ Will now generate hbqt*_extern.ch with REQUEST for all
classed contained in given lib.
+ contrib/hbqt/qtgui/g/hbqtgui_extern.ch
+ contrib/hbqt/qtwebkit/g/hbqtwebkit_extern.ch
+ contrib/hbqt/qtcore/g/hbqtcore_extern.ch
+ contrib/hbqt/qtnetwork/g/hbqtnetwork_extern.ch
+ contrib/hbqt/qscintilla/g/hbqscintilla_extern.ch
+ contrib/hbqt/qtdesigner/g/hbqtdesigner_extern.ch
* contrib/hbqt/qtgui/hbqtgui.hbp
* contrib/hbqt/qtwebkit/hbqtwebkit.hbp
* contrib/hbqt/qtcore/hbqtcore.hbp
* contrib/hbqt/qtnetwork/hbqtnetwork.hbp
* contrib/hbqt/qscintilla/hbqscintilla.hbp
* contrib/hbqt/qtdesigner/hbqtdesigner.hbp
+ Added hbqt*_extern.ch files.
+ contrib/hbxbp/hbxbp_extern.ch
* contrib/hbxbp/hbxbp.hbp
+ Added REQUEST list for hbxbp.
* contrib/hbide/idemisc.prg
- Deleted usrrdd hack not mentioned in ChangeLog.
+ Changed to use new hbqt*_extern.ch and hbxbp_extern.ch files
instead of rolling a private list of external lib functions.
* src/rdd/usrrdd/usrrdd.c
+ Readded old mistyped function name guarded with HB_LEGACY_LEVEL3.
WARNING: Change UR_SUPER_WRITEBHEADER() to UR_SUPER_WRITEDBHEADER()
in your code.
* include/hbapidbg.h
+ Added HB_EXPORT to the complete hb_dbg*() API set.
This should fix -shared -b builds on win/wce when
using non-mingw compiler.
* src/vm/hvm.c
* Formatting.
* harbour/src/rdd/dbcmd53.c
* removed one redundant casting
* harbour/package/mpkg_rpm.sh
! move source code archive to RPM directory structure to
not leave it after creating RPMs
* harbour/package/mpkg_src.sh
! fixed to work correctly after moving from root directory
- harbour/package/harbour-win.spec
+ harbour/package/harbour-win.spec.in
* harbour/package/mpkg_rpm_win.sh
- harbour/package/harbour-wce.spec
+ harbour/package/harbour-wce.spec.in
* harbour/package/mpkg_rpm_wce.sh
! renamed cross build .spec files to fix -ta option
To keep this functionality working only one file in tar archive
can have .spec extension
* contrib/make.hbs
% Code consolidation.
! Fixed recent regression, whereas now again the root project's
.hbc file will be added to the make process in HB_BUILD_CONTRIB_DYN
mode.
+ Changed the way filter is processed, now dependent packages will
always be built, so there is no need to manually pick all the
dependencies too.
* Internal terminology cleanup.
+ Will now also rebuild the _dependencies_ in HB_BUILD_CONTRIB_DYN mode.
- Deleted forcing English language for hbmk2 output.
; Regressions are possible
; NOTE: This dynamic stuff is a real can of worms. Virtually infinite
combinations of dynamic vs static libs may be supported, plus
there is ST vs MT issue, where we must decide about this at
dynlib build time, and f.e. what happens when trying to load
two .dlls one with was linked against MT Harbour and the other
against ST? It's a combinatorical explosion.
* src/vm/vmmt/Makefile
! Fixed missing procaddr.c causing unresolved externals when creating
MT mode dynlibs.
* config/global.mk
! Attempt to fix LD_LIBRARY_PATH problem, adding dynamic lib build
dir to this envvar while doing the build, pls test it, I didn't.
+ contrib/hbplist
- contrib/pkglist
* Renamed.
* contrib/hbct/ctwin.h
! Added missing HB_EXPORT.
* contrib/xhb/xhb.hbp
* contrib/hbgd/hbgd.hbp
! Added missing project references also to .hbp files.
* utils/hbmk2/hbmk2.prg
! Fixed regression with mingw -hbdyn after adding new stub which
stole the show by explicitly exporting one symbol which (due
to autoexport function in mingw) prevented regular symbols to
be exported. This fix will remove the exception so far applied
to mingw/cygwin compilers where HB_DYNLIB was not used with these,
now it's used equally on all compilers/platforms. For this to
be effective, it should be noted that HB_EXPORT must be used
in all public declarations, even in contrib.
! Fix (?) to not include MAIN proc force code when building with
hbmaindllp.
* contrib/xhb/thtm.prg
% Changed hbct LTOC to simple iif()
; TOFIX: xhb makes reference to (deprecated) hb_symEval symbol:
Info: resolving _hb_symEval by linking to __imp__hb_symEval (auto-import)
* contrib/rddsql/hbrddsql.h
! Added HB_EXTERN_BEGIN/END
! Added HB_EXPORT
! Added extern
* contrib/sddoci/sddoci.hbp
! Restored some flags present in old Makefile to make it
work with mingw and bcc.
* contrib/hbqt/generator/hbqtgen.prg
* contrib/hbqt/hbqt.h
! Fixed to add HB_EXPORT to public declarations.
; TOFIX: hbqt still doesn't link in hbdyn mode.
* contrib/hbqt/hbqt_garbage.h
* contrib/hbqt/doc/en/*.txt
* Regenerated.
* contrib/hbqt/hbqt.hbc
! Fixed to not include QtUiTools in -hbdyn mode. It creates duplicate
symbols at link. Maybe this is not the right fix, go figure.
(HB_STATIC_QT mode still has to be checked)
; TODO: Add ${__HB_DYN__} to all .hbc files.
* include/hbextern.ch
* src/rdd/usrrdd/usrrdd.c
! Fixed typo in function name: WRITEBHEADER() -> WRITEDBHEADER()
Eagle-eye spotted by Marcos Gambeta.
* contrib/make.hbs
! Fixed to include dependent .hbc files instead of referencing
own .hbc file in HB_BUILD_CONTRIB_DYN mode. It was not good
solution as it was referencing itself that way.
+ Will now request dynamic version of dependencies when building
HB_BUILD_CONTRIB_DYN dynlibs. This is required otherwise f.e.
hbxbp lib will contain a static copy of hbqt libs, which is not
very good.
! Fixed to not attempt to build dynamic version of referenced
projects in HB_BUILD_CONTRIB_DYN mode.
* contrib/hbct/hbct.hbc
* contrib/hbqt/hbqt.hbc
* contrib/rddsql/rddsql.hbc
* contrib/hbtip/hbtipssl.hbc
* contrib/hbtip/hbtip.hbc
* contrib/hbwin/hbwin.hbc
* contrib/hbssl/hbssl.hbc
+ Experimental move to support linking dynamic version of the
dependencies when building dynamic lib in HB_BUILD_CONTRIB_DYN
mode. This is starting to get insanely ugly (thanks Microsoft)
so I'll with it some more and probably leave it.
; I hope I didn't miss any contribs which can also be a dependency
(probably I did)
* contrib/pkglist
* contrib/hbtip/hbtip.hbp
* hbtipssl made a separate project instead of being a sub-project
of hbtip. hbtipssl has different dependencies, so this move
was needed for libdyn support.
* INSTALL
* tdragon mingw marked as non-recommended. They due to
incompatible with previous release tool naming, our make
systems cannot currently support it. (it needs CCPOSTFIX
for windres tool when using the dwarf-2 installation)