Harbour, há fazer do Przmek!
Enviado: 16 Set 2010 17:32
Muita coisa boa para nós, usuários do Harbour.
Pode servir como um "road map", ou uma pequena amostra do que nos reserva o futuro do Harbour.
it's below.
It's not complete (I have 2 additional lists in my office) and probably
some items looks very cryptic. The order is unimportant and priorities
depends on my personal preferences.
Please don't ask me when I'll implement it. I do not know it and
I do not even know I'll find spare time for all of them.
It's also possible that I'll implement some of them as external
commercial add-on products.
best regards,
Przemek
Itamar M. Lins Jr.
Pode servir como um "road map", ou uma pequena amostra do que nos reserva o futuro do Harbour.
it's below.
It's not complete (I have 2 additional lists in my office) and probably
some items looks very cryptic. The order is unimportant and priorities
depends on my personal preferences.
Please don't ask me when I'll implement it. I do not know it and
I do not even know I'll find spare time for all of them.
It's also possible that I'll implement some of them as external
commercial add-on products.
best regards,
Przemek
Saudações,% dynamic MSPACE switching when HB_FM_DLMT_ALLOC is used and current one
is locked by other thread.
% support for multiple GC item pools in MT mode and dynamic GC pool
switcghing if current one is locked by other thread.
+ add RPC back streams with flow control to HBNETIO
+ XML<->HASH translations and extend hash arrays with node attributes
+ GTWVT - generic support for GUI GTs inheriting from GTWVT.
+ add optional support for message polling and screen updating by non
HVM thread in GTWVT
* HBQT - redesign internals
+ add better API for creating HVM stack in non HVM threads
+ Support for pure PCODE functions without machine code preamble in
compiler in some new -gc<N> output.
+ GT: extended keyboard support with hb_gtModalRead()
+ _SET_INKEYPOLL
+ SCREEN BUFFER: 0-VGA, 1-VGA+BOX/PICT, 2-UNICODE
hb_gt_SetCompatBuffer( BOOL ) - change to set:
HB_SCRBUF_DOS=0, HB_SCRBUF_BOX=1, HB_SCRBUF_UNICODE=2
and full support for screen buffer in UNICODE. With new CDP API which
has fast UNICODE->CDP translations it can be implemented quite easy
with noticeable performance reduction.
+ common CDP/UNICODE translations in core GT code which can be inherited
by all GTs.
+ UNICODE support in HVM
+ add error translation for getaddrinfo() and set socket/os error in
hb_socketGetHosts(), hb_socketResolveAddr(), hb_socketResolveInetAddr()
+ add support for user settable regular expressions using some type of
REQUEST/ANNOUNCE mechanism, i.e. POSIX REGEX vs PCRE (default).
+ add support for unregistering RDDs at runtime.
! add EINTR protection in core code using CRTL functions
(i.e. hb_fs*() API)
+ add support for multiple static functions with the same name
in .HRB files - it's necessary to change used format so I'll
probably do that with .HRL support. Now when -gh switch is used
and such functions exists then harbour compiler generates:
Error E0002 Redefinition of procedure or function ...
+ add support for HRL files (libraries created from HRB files)
which can be loaded dynamically just like HBR files.
! add support for valid column calculation in multibyte character sets
or UTF8 output in GTCGI and GTSTD
+ add support for dynamically loaded functions (functions marked to load
from HRB files or shared libraries when they are executed 1-st time)
% optimize GTCGI to use hb_cdpnDup3() instead of hb_cdpnDup()
% unblock GT inside internal error and give exclusive access to it
* hb_threadQuitRequest() can be ignored by thread in some cases
due to race condition. It may happen if thread will overwrite
request send by caller simultaneously, f.e. by its own BREAK.
I can resolve it but we can also leave it as is and document
such behavior as expected or even remove this function. Killing
other threads in such way is dangerous and can be used only
for some simple situation. It's much safer when user uses his
own mechanism to terminate treads in some safe for his code places.
+ add real class object support like in Class(y).
+ add support for object like pointer variables
+ add asynchronous events.
+ Extended COPY TO / JOIN which will respect aliased fields.
! Rewrite DBF SORT code
% Rewrite FPT code
! add compile time protections against maximum number of some structures:
- locals (in signle function / codeblock): 32767
- statics (in whole module): 64535
- memvar, field, function/procedure and method symbols
(in whole module): 64534
Now when some of them are exceed wrong PCODE can be generated without
any warning.
* posible TODO: Clipper compatible local variable initialization:
local l1:=1, l2:=2, l3:=3
push 1,2,3
pop l3,l2,l1
but code like this will stop to work in such case:
local x:=0, y:=x+1
+ possible TODO: add support for CRITICAL FUNCTION / PROCEDURE
+ possible TODO: add GLOBAL / GLOBAL_EXTERN support
* cleanup: add _LARGEFILE_SOURCE and move
_LARGEFILE64_SOURCE/HB_USE_LARGEFILE64 definition
into separate header file.
+ My own new index format
+ MMAP-ed database area in single file using 64bit address space in
new 64bit OS-es for very efficient local table and indexes which
can be used also as base for remote RDD server.
% caching for DBF* RDDs
+ GTNET
+ NETRDD
% Clean used PCODE list and add some new PCODE to speed up some comonly
used operarions.
* Rewrite some parts of Harbour compiler code which are under pure
GPL licence with new licence which allow to use embedded compiler
in non GPL programs.
% rewrite compiler internal logic to not generate PCODE online
but use some meta code (expression list) and introduce new multiline
optimizations using above meta code.
+ add to compiler support for class prototyping and generating header
files with class definition based on compiled class declarations
+ add compile time message verification using class prototypes
+ add compile time strong type support
+ add compile time optimization using strong type information
+ add compile time optimization for compiler linked with HVM
(i.e. HBMK2) for functions which calculate returning result
using passed parametes only so for constant parameters they
can be executed to calculate the result, i.e.:
QOUT( HB_CRC32( "TEXT" ) )
The compiler host (i.e. HBMK2) will only have to attach to
compiler list of such functions.
+ HBRUN with Active Script support so it can be used with
any Active Script Host like WSH, IE, IIS, ...
* simple and light MS-Windows GUI library well portable to WinCE
+ alternative MT HVM with HB_ITEM write protection like in xBase++.
It will need extended C API too.
+ common OOP interface for different SQL RDBMS
+ SQL support for DBF tables
+ support to save/restore execution context.
+ serial port support in DOS builds
+ support for user defined operators and operators' precedence in PP
so user can easy define some more complex language extensions only
in their own .ch files without touching compiler code, i.e.
introduce bit operators like <<, >> in xHarbour which will respect
operator (math) precedence.
+ extend replaceable RDD IO API to work with all file handles, i.e.
with FOPEN()/FREAD()/FWRITE()/..., MEMOREAD()/MEMOWRIT(), etc.
Itamar M. Lins Jr.