* harbour/src/vm/classes.c
% small speed optimization for inline methods
+ added internal list of super classes bound with each class
% use super class list for scope checking
% use list of super classes for instance area casting
% use super class list in super destructor code - it should cause
noticeable speed improvement for releasing objects with destructors.
! few security fixes like possible GPF on wrong paramas.
* harbour/src/vm/macro.c
% use HB_P_DUPLICATE instrad of HB_P_PUSHUNREF in Field[W]Block()
functions
* harbour/src/rtl/gtwvt/gtwvt.c
! do not generate HB_K_RESIZE after SetMode() if there is no active
console window.
* harbour/include/hbstack.h
* cleaned declarations of some hb_stack*() functions - moved to internal
functions: hb_stackFree(), hb_stackInit(), hb_stackIncrease() and
hb_stackRemove()
exported: hb_stackPush(), hb_stackTopOffset() and hb_stackTotalItems()
* harbour/include/hbwmain.c
! fixed typo in argv list declaration
* harbour/utils/hbtest/rt_class.prg
+ added code to test non virtual hidden messages and super casting.
* harbour/contrib/hbmzip/mzip.c
* minor modifications in casting and parameter checking to make them
compatible with other similar core operations, i.e. FWRITE()
* src/rtl/hbfilehi.prg
! hb_PathRelativize() with a lForceRelative == .T. option
might have return wrong result if the base directory had symlinks.
As a workaround/hack, now the relative path will only be returned
if it actually exists. Otherwise the non-relative variant will
be returned.
; It should fix hbmk2 on OS X when f.e. building a plain .c source
in (default) non-incremental mode.
* utils/hbmk2/hbmk2.prg
! fixed to list missing symbols once even reported multiple
times in the linker output.
! fixed to not list symbols as missing if reported in certain
different error situations (f.e. as doubly defined symbol).
Extend exceptions as needed for other errors/compilers/language translations.
* src/rtl/tget.prg
! fixed RTE in ::OverStrike()/::Insert() when a non-string
parameter was passed
! fixed Clipper incompatibility when passing certain
multichar strings to ::OverStrike()/::Insert(). (f.e. "12", "23")
Clipper always uses the first char only.
! fixed ::unTransform() missing the leading decimal
point in number picture masks (f.e. ".9", "-.9", ".-9")
* tests/rto_get.prg
+ added regression tests for cases fixed above
* tests/rto_get.prg
* tests/rto_tb.prg
* minor modification to make them work as hbrun scripts
* contrib/hbmzip/3rd/minizip/minizip.dif
* contrib/hbmzip/3rd/minizip/zip.c
* contrib/hbmzip/mzip.c
% eliminated part of local minizip patch by using
newer API flavor and passing version_made_by value
in interface code.
* contrib/hbmzip/mzip.c
% use sizeof() instead of repeating HB_PATH_MAX
+ use larger than HB_PATH_MAX buffer to read out
filenames stored in zip file entries. (useful when
using unicode filenames which are stored in UTF-8)
+ added support for .zip unicode filename and comment
support introduced in PKZIP 6.3.2 [dated 2007] standard:
[http://www.pkware.com/documents/casestudies/APPNOTE.TXT]
hb_zipFileCreate()/hb_zipStoreFile()/hb_zipStoreFileHandle()
will now accept a new last parameter <lUnicode>,
which when .T. will force to store the filename/comment
in UTF8 in the .zip file.
hb_unzipFileInfo()/hb_unzipExtractCurrentFile()
will now honor filenames/comments stored in unicode
mode and make any necessary conversions.
; Notice that not every .zip tool support this relatively
new PKZIP format extension. Also notice that before that
extension the only officially supported codepage was
CP437 [See D.1 in Appendix D], which means no accented
chars. Whatever else CP used, the behavior becomes
application dependent and may or may not work as expected.
; Test/review/whatever
* contrib/hbmzip/tests/myunzip.prg
+ standardized date format
+ switched internally to unicode to be able to handle
unicode code to work best with unicode zips.
* contrib/hbmzip/tests/myzip.prg
+ new '--unicode' switch to enable storing filenames
in unicode by using PKZIP 6.3 .zip format and
unicode mode internally.
* src/rtl/gtwin/gtwin.c
! fixed to handle Alt+numpad keyboard entry in case the scan codes
were received in a single ReadConsoleInput() call. Such behavior
was observed when using keypad/alt mode with multiple brands of
barcode scanners, but most probably it might have happened anytime.
! fixed warnings in trace printf() masks
+ printf() trace will now log all scan codes read by ReadConsoleInput(),
more scan code information in more readable way and alt+numpad handling
more comprehensibly logged.
* cleaned a few numeric types
; Review me.
* utils/hbmk2/hbmk2.prg
+ display option source file/line in some output messages
! '-nooptim' option was not recognized after 2009-05-13 08:10 UTC+0200
(recommended format '-optim-' was working all along)
* utils/hbmk2/hbmk2.prg
+ show warning if user -I/-L parameters explicitly
specify the core header/lib dirs of Harbour. This
is wrong/unnecessary depending on context, and for
sure never does any good.
* harbour/include/hbapicls.h
* harbour/src/vm/classes.c
+ added new internal C function:
void hb_objCloneTo( PHB_ITEM pDest, PHB_ITEM pSource,
PHB_NESTED_CLONED pClonedList );
it copies object or clone it if class overloaded clone operation.
; TODO: add support for user defined class clone operation
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
* changed returned type of hb_itemCloneTo() to void
* harbour/src/vm/itemapi.c
* use hb_objCloneTo() in hb_itemClone*() functions.
* harbour/src/vm/arrays.c
* use hb_objCloneTo() in array/hash clone code.
* harbour/src/vm/arrayshb.c
! fixed return values in AEVAL() and ACOPY() when array
is passed by reference.
* harbour/src/rtl/tclass.prg
* harbour/src/vm/classes.c
* declare :SUPER and :__SUPER messages as non virtual ones.
Now ::SUPER and ::__SUPER messages executed in object method
returns casting to 1-st super object of the class in which
executed method was defined.
* harbour/include/hbclass.ch
* removed xtranslations for SUPER(): - this workaround for
missing non virtual messages in some Clipper OOP implementations
was breaking valid code which tried to use real :SUPER message
and made SUPER reserved word, i.e. it was not possible to create
code like:
LOCAL super := ::parent2
? super:v1, super:v2
Now this hack is not longer necessary and :SUPER is non virtual
massage in Harbour.
INCOMPATIBLE: If someone has some code like:
SUPER():MSG()
SUPER( PARENT ):MSG()
then please change it to:
::SUPER:MSG()
::PARENT:MSG()
* harbour/contrib/hbmysql/tmysql.prg
* harbour/contrib/hbmysql/tsqlbrw.prg
! fixed to use ::super() instead of super()
* harbour/src/rdd/usrrdd/rdds/arrayrdd.prg
+ added GOCOLD() method - this method is necessary for WAs
passed to HB_DBDETACH()
* harbour/doc/xhb-diff.txt
* small update
* harbour/contrib/*/*.hbx
* regenerated
* harbour/src/rtl/hbcom.c
+ added translation for some OS error codes
* harbour/src/rdd/dbdetach.c
! minor correction in comment
* harbour/doc/xhb-diff.txt
+ added new section:
THREAD LOCAL WORK AREAS AND CONCURRENT WORK AREA ACCESS
* src/rtl/teditor.prg
! fixed a regression from 2012-11-14 04:49 UTC+0100, caused
by an odd coding case that doesn't occure anywhere else
in codebase (verified). Thanks to Vlado for noticing.
* harbour/src/vm/classes.c
! fixed unexpected item clearing in object item assignment when
variable is passed by reference - problem reported by Quique.
Here are code examples which could exploit the problem:
o:_var( @x )
or:
o:var := { @x }[ 1 ]
or:
o:var := iif( .t., @x, )
* harbour/src/rtl/hbcom.c
* enable RTS and DTR registers by default in MS-Windows builds.
I hope it will reduce number of pseudo "error" messages sent
by people who cannot read basic flow control documentation.
% unlock HVM when break signal is sent
* harbour/src/rtl/hbcom.c
* harbour/src/rtl/hbsocket.c
* harbour/src/rtl/filesys.c
! fixed timeval usage in repeated select() calls in systems like Linux
* harbour/contrib/hbwin/win_rpc.c
! fixed WINCE builds
* harbour/src/rtl/hbinet.c
* repeat accept operation if other thread concurently accpeted
new connection or some asynchronous network error appeared.
; TOFIX: basic hbrun functionality is broken and now it is not possible
to create scripts starting with line:
#!/usr/bin/hbrun
which do not have .hb or .prg file name extension
- doc/en/hb_api.txt
- doc/en/hb_apier.txt
- doc/en/hb_apifs.txt
- doc/en/hb_apigt.txt
- doc/en/hb_apiit.txt
- doc/en/hb_apiln.txt
- doc/en/hb_apird.txt
- doc/en/hb_compa.txt
- doc/en/hb_date.txt
- doc/en/hb_macro.txt
- doc/en/hb_vm.txt
* doc/en/hb_set.txt
- deleted 0.5MB worth of collection of very outdated 1:1 copies
of C declarations and their comments from .h headers, as they
were 12 years ago.
* include/hbapi.h
* include/hbvmpub.h
* src/vm/codebloc.c
* HB_CODEBLOCK_PTR type renamed to PHB_CODEBLOCK. Old type
remains for a while for compatibility.
; TODO: Remaining list of similar ones:
public:
HB_MACRO_PTR PHB_MACRO
HB_ERROR_HANDLER_PTR PHB_ERROR_HANDLER
HB_ERROR_INFO_PTR PHB_ERROR_INFO
HB_HASH_ITEM_PTR PHB_HASH_ITEM
HB_HASH_TABLE_PTR PHB_HASH_TABLE
internal:
HB_VOID_PTR PHB_VOID
HB_CBVAR_PTR PHB_CBVAR
HB_EXPR_PTR PHB_EXPR
HB_ENUMERATOR_PTR PHB_ENUMERATOR
HB_ELSEIF_PTR PHB_ELSEIF
HB_LOOPEXIT_PTR PHB_LOOPEXIT
HB_SWITCHCASE_PTR PHB_SWITCHCASE
HB_SWITCHCMD_PTR PHB_SWITCHCMD
HB_RTVAR_PTR PHB_RTVAR
HB_COMMON_PTR PHB_COMMON
HB_PCODE_INFO_PTR PHB_PCODE_INFO
HB_COMP_PTR PHB_COMP
* utils/hbmk2/hbmk2.prg
! hbshell_DirBase()/hbshell_ProgName() fixed to
return proper non-ASCII chars (= if hbrun/hbmk2 resides
in a directory with non-ASCII chars) even if the .hb
script or a shell command had changed the default codepage.
* include/hbdefs.h
- deleted redundant type: 'HB_FUNC_PTR'
INCOMPATIBLE. If you used this, swap it for 'PHB_FUNC'
* ws formatting
* ChangeLog.txt
! typos
* tests/testdyn.prg
! fixed -w3 warnings on non-win
! fixed possible type in text output
* config/postinst.hb
* utils/hbmk2/hbmk2.prg
+ use hb_StrFormat() in few more places
+ added minor exception after .hbx 'do no edit'
* website/index.html
! unclosed tag
* config/darwin/clang.mk
+ use 'clang++' in C++ mode
* include/hbcomp.h
* include/hbmacro.h
* include/hbsetup.h
% deleted redundant and/or unnecessary C RTL headers
+ config/win/clang.mk
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.*.po
* README.txt
+ added very experimental clang support to the build
systems. Very lightly tested.
! fixed entry function detection not being enabled with clang
! fixed .res files not being added on os2/gcc[omf] from .hbc/sources= directive
+ added recently added new filter 'allbcc' to help text
! synced compiler list per platform in help/readme to reality
* ChangeLog.txt
+ updated 2012-12-16 00:17 UTC+0100 with the first DONE item.
* src/3rd/pcre/*
- reverted to 8.31 until all the breakage in configurability
is fixed either in pcre or by redesigning our way of
configuring it. Command-line configuration -DHAVE_*=0
doesn't seem to work anymore.
+ config/win/bcc64.mk
* config/global.mk
* config/postinst.hb
* config/win/bcc.mk
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
* README.txt
* utils/hbmk2/hbmk2.prg
+ added rough cut support for bcc64 to the two make systems.
Untested. Autodetection and some 32-bit specific tricks
not implemented.
bcc64 is based on clang and it's only a bcc "emulation"
layer on top of it. At least it will be a good compiler
now, but it's important to see that it's internally
a clang compiler, so its behavior and raw options are
gcc-like.
Changes are based on xhb patches and bcc64 online docs:
http://docwiki.embarcadero.com/RADStudio/XE3/en/Command_Line_Utilities_Index
* include/hbcomp.h
* include/hbcompdf.h
* src/compiler/genc.c
* src/compiler/genhrb.c
* src/compiler/harbour.y
* src/compiler/harbour.yyc
* src/compiler/hbmain.c
* few more type renames to have std Harbour prefix
* utils/hbmk2/hbmk2.prg
+ use implibs (if available) as source of information
for updating .hbx files in -hbdyn mode. See in-code
comment for more.
* utils/hbmk2/pkg_dynl.hbm
+ enabled to rebuild .hbx files even in -hbdyn mode
(after above hbmk2 fix/improvement)
* extras/template/hbtpl.hbc
* extras/template/hbtpl.hbp
* minor tidying
* utils/hbmk2/pkg_dynl.hbm
* deleted no longer true reference to GNU Make
* contrib/rddads/adsfunc.c
* contrib/rddads/rddads.hbx
+ added AdsDDCreateRefIntegrity() and AdsDDRemoveRefIntegrity()
(former looks similar to xhb version, but incompatible due
to the several necessary fixes.)
+ extras/template
+ extras/template/core.prg
+ extras/template/corec.c
+ extras/template/hbtpl.ch
+ extras/template/hbtpl.hbc
+ extras/template/hbtpl.hbp
+ extras/template/hbtpl.hbx
+ extras/template/readme.txt
+ extras/template/tests
+ extras/template/tests/hbmk.hbm
+ extras/template/tests/sample.prg
+ extras/template/tests/test.prg
+ added Harbour library project template
it supports static and dynamic lib build mode,
features user defined macro, command, PRG
level function and C level function, sample
code, regression tests, .hbc file and automatic
installation to /addons and readme describing
the commands to build and use the library.
* contrib/hbrun/hbrun.hbp
! load dynamically loaded hbunix/hbwin default extensions
only on their native platforms. This avoid load warning
if the packages is completely missing on a system, so
the .hbc file isn't there, so the filter based detection
cannot work.
* contrib/xhb/regexrpl.prg
* contrib/xhb/xhb.hbx
! minor casing fix
+ contrib/xhb/tests/regexrpl.prg
+ added test from xhb (the function doesn't
seem to work)
+ tests/regex.prg
+ tests/regextst.prg
+ added regex tests from xhb
* contrib/hblzf/tests/test.prg
! typos
* package/winuni/RELNOTES.txt
* minor
* contrib/hbpost.hbm
* utils/hbmk2/pkg_dynl.hbm
* hack to avoid contrib/addon dynamic libs being used
automatically on *nix system when building executables.
Now they will be put in bin dir, just like on win.
* utils/hbmk2/hbmk2.prg
+ hbshell_include_list() API to list loaded core headers.
+ allow loading dynamic extensions on *nix even if built
against static HVM.
* display statically linked extensions in uppercase in
dot prompt UI and dynamic ones with original (lower) case.
(was normal case and postfixed with '*' respectively)
+ do not load dynamic extension if the .hbc file is not found
+ attempt to detect if dynamic extension loads fine on
a given platform and only try loading the dynamic lib
if it does.
+ added protection to not add duplicate compiler options
when compiling dot prompt entry.
* contrib/hbrun/hbrun.hbp
+ load default contrib libs dynamically on *nix, even if
hbrun is built against static HVM.
; these make work dynamic extensions on *nix systems.
* contrib/hbtip/sessid.prg
* extras/httpsrv/cgifunc.prg
* updated HTTP date format to use preferred format:
http://tools.ietf.org/html/rfc2616#section-3.3.1
% optimized code and eliminated unnecessary _SET_DATEFORMATs
; tip_DateToGMT() and its uhttpd_DateToGMT() derivative
* src/compiler/hbusage.c
* updated contributor list
* contrib/sddoci/tests/test1.prg
* contrib/sddodbc/tests/test1.prg
* contrib/sddodbc/tests/test2.prg
* contrib/sddsqlt3/tests/test1.prg
* use std way to configure date format
* contrib/hbrun/hbrun.hbp
* utils/hbmk2/hbmk2.prg
+ loading packages using ext.load, hbshell_ext_load(),
'hb_ext.ini'/'hb_extension' config files and HB_EXTENSION
envvar will now automatically load the packages'
standard headers and will properly set HBMK_HAS_* macros,
just like when running scripts or using .hbc files.
+ do not statically link contribs to hbrun when hbrun
is built dynamically. Instead, load default contribs
dynamically on startup (yes, performance will be worse.
If you don't like this, see 2012-12-03 15:17 UTC+0100).
This way these loaded packages will behave exactly the
same as any other dynamically loaded packages, f.e.
standard headers will be loaded and usable.
+ hbshell_include()/hbshell_uninclude() will now
load/unload core headers available in dot prompt.
+ 'hb.ch' core header is now loaded for scripts and dot
prompt by default. It means that K_ESC will now
return 27 and hb_gtInfo( HB_GTI_VERSION ) will work
as well, just like many other commonly used constants.
For a precise list, see the content of include/hb.ch.
If you don't like it, unload it from hbstart.hb using
hbshell_uninclude( "hb.ch" )
% use embedded headers when using the dot prompt.
* contrib/hbsms/sms.prg
* commented code cleanup