* harbour/TODO
+ added simpler example for memory leak in macro compiler:
? type("user input")
* harbour/source/macro/macro.y
* replaced TABs with SPACEs
* harbour/source/vm/classes.c
* added some TRACE() messages
+ added support for executing functions with <symItem>:EXEC()
registered dynamically after creating <symItem>
* harbour/source/vm/hvm.c
* minor modification
275 lines
6.9 KiB
Plaintext
275 lines
6.9 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
=======================================================================
|
|
|
|
Harbour Project To-Do list
|
|
|
|
=======================================================================
|
|
Tasks for v.1 beta:
|
|
-------------------
|
|
|
|
Assign to: Jean-Francois Lefebvre (JFL)
|
|
Detail...: The following need to be added to the OO system:
|
|
Class Method, Multiple Constructor, Class init Support.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: 'SAVE TO' statement doesn't work like Clipper.
|
|
Status...: Is it still true?
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Is memofile support complete?
|
|
Status...: Is it still true?
|
|
|
|
***
|
|
|
|
Assign to: Ryszard, Przemek
|
|
Detail...: Debugger with basic interface written in C - it's enough to
|
|
borrow Phil's work from xHarbour.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Add missing preprocessor directives from CL5.3:
|
|
REINDEX: missing [NOOPTIMIZE]
|
|
SEEK: missing [LAST]
|
|
SET DESCENDING OFF
|
|
SET DESCENDING ON
|
|
SET SCOPE TO
|
|
SET SCOPETOP TO
|
|
SET SCOPEBOTTOM TO
|
|
SET VIDEOMODE TO
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Add missing Clipper virtual memory functions.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: TBrowse() implementation still has bugs.
|
|
Status...: Open.
|
|
|
|
|
|
=======================================================================
|
|
Tasks for v.1 release:
|
|
----------------------
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Rewrite filesys.c to use native platform specific file I/O
|
|
with unlimited number of file handles, while maintaining
|
|
compatibility with the CA-Cl*pper legacy handle numbering
|
|
system. This either involves adding a linked list for the
|
|
translation table, or we should state that only handles 0-4
|
|
are number compatible.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: Ryszard
|
|
Detail...: Optimize out the need for the PUSHNIL opcode before each
|
|
function call.
|
|
Status...: Open.
|
|
|
|
|
|
=======================================================================
|
|
Tasks for after v.1 release:
|
|
----------------------------
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Dynamic multi-language compiler/runtime support.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: UNICODE support.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Multithreading support.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Add support for INET sockets.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Add support for virtual file handles and registering some
|
|
meta handles so it will be possible to make:
|
|
h := fopen( "gzip:/tmp/myarchive.gz", FO_WRITE )
|
|
fwrite( h, cData )
|
|
fclose( h )
|
|
or:
|
|
h := fopen( "tcp:some.host:port", FO_WRITE )
|
|
...
|
|
or:
|
|
h := fopen( "|lpr -PLaserJet", FO_WRITE )
|
|
...
|
|
or:
|
|
h := fopen( "gunzip /tmp/myarchive.gz|", FO_READ )
|
|
...
|
|
etc.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: Przemek
|
|
Detail...: Define multi platform platform API for GTs which can mix
|
|
graphics objects with standard text output. Now it's
|
|
possible in GTXWC, GTWVT and GTALLEG. This I will discuss
|
|
yet also with xHarbour developers.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Add GTNET driver which will allow to run Harbour application
|
|
remotely. GTNET will be used on server side and on client
|
|
side any native GT driver.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Add support for remotely controlled GUI objects so we will
|
|
be able to create GUI programs with GTNET.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: Add NETRDD - meta RDD which will allow transport layer
|
|
between client application and server application with any
|
|
other chosen RDD driver. Idea similar to GTNET but for RDD
|
|
drivers - it's sth like ADS does.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: Przemek
|
|
Detail...: Extended HB_IT_POINTER. In practice we can give them the
|
|
same functionality as for objects and use them for fast
|
|
creation objects at C level. We can also add HB_VALTYPE()
|
|
function which will return the extended type name, f.e.
|
|
"WINDOW", "FONT", "SOCKET" or anything what 3-rd party
|
|
programmers may want to use. It will greatly simplify
|
|
writing some libraries.
|
|
Status...: Open.
|
|
|
|
|
|
=======================================================================
|
|
|
|
Harbour Project To-Fix list
|
|
|
|
=======================================================================
|
|
|
|
Assign to: Przemek
|
|
Detail...: Fix setting private base for code blocks created by macro
|
|
compiler. Maybe it should be bound with making CLEAR MEMORY
|
|
safe.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: Ryszard
|
|
Detail...: SQLRDD.
|
|
Status...: Working on it.
|
|
|
|
***
|
|
|
|
Assign to: Ryszard
|
|
Detail...: Hash.
|
|
Status...: Working on it.
|
|
|
|
***
|
|
|
|
Assign to: Ryszard
|
|
Detail...: Real strong typing in the compiler.
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: Przemek
|
|
Detail...: Clean RDD code to be safe for return from RT errors
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: When compiling PRG with a very long line (12300 characters)
|
|
gives the following CodeGuard warning:
|
|
|
|
,- ( changlog 2006-08-23 23:12 UTC+0200 Przemyslaw Czerpak )
|
|
| Access overrun: Attempt to access 1 byte(s) at NNN+12288,
|
|
| that is at offset 0+12288 in block NNN which is only 12288
|
|
| bytes long. Call Tree:
|
|
| source\pp\PPCORE.C#3899
|
|
| source\pp\PPCOMP.C#147
|
|
| source\\compiler\\harbour.l#1792
|
|
| obj\\b32\\harbourl.c#4546
|
|
| obj\\b32\\harbourl.c#4380
|
|
| obj\b32\harboury.c#3667
|
|
`-
|
|
Status...: Open.
|
|
|
|
***
|
|
|
|
Assign to: <nobody>
|
|
Detail...: An error in the evaluated macro cause memory leak.
|
|
|
|
--tt2.prg--
|
|
func test
|
|
local x := "user input" // this is junk
|
|
local y
|
|
errorblock({|e|break(e)})
|
|
begin sequence
|
|
y := &x
|
|
end
|
|
return nil
|
|
-----------
|
|
|
|
bld_b32 tt2 /w/a/n
|
|
tt2
|
|
|
|
the program runs, and on exit it gives following CodeGuard
|
|
warning:
|
|
|
|
,- ( changlog 2006-08-23 23:12 UTC+0200 Przemyslaw Czerpak )
|
|
| Resource leak: The memory block was never freed
|
|
| The memory block [size: 10 bytes] was allocated with malloc
|
|
| Call Tree:
|
|
| source\vm\FM.C#233
|
|
| source\common\HBSTR.C#122
|
|
| source\\macro\\macro.l#321
|
|
| obj\b32\macroy.c#1790
|
|
| obj\b32\macroy.c#3799
|
|
| source\vm\MACRO.C#153
|
|
`-
|
|
This is simpler example of the same problem:
|
|
|
|
--tt2b.prg--
|
|
proc test
|
|
? type("user input")
|
|
return
|
|
|
|
Status...: Open.
|
|
|
|
=======================================================================
|