Hi,
Thanks for the supportive comments everyone!
What i didnt understand fully though is that do we need to call Flushmem any more or is it fully automatic
It will be fully automatic by default, but you'll be able to 'tune' it, turn it off and perform manual flushmems etc.
I still feel that manual flushmem is a good thing in your main game loop, as it keeps memory management nice and deterministic, and if you're 'pushing the 60hz' barrier or whatever this is important.
However, auto flushmem is really useful for non-realtime stuff, such as setup/initialization and apps like BMK.
Question which came up my mind was how realistic it is to hope for the 3d-engine beeing released this year
Unfortunately, it's not gonna happen. I will however do a worklog on 3D progress very soon - I had some cool occlusion stuff happening when I last played with it that people may want to plan for. I also plan to release many 'beta demo' releases of the 3D engine as I go.
Your comments that the GC may be invoked while object state is questionable in case of CStrings seems to me that you implmented a Threaded GC, similar to .net?
The CString issue is really to do with the fact that cstrings are not 'objects' as such, so really lie outside of the control of the garbage collector, eg stuff like:
wndClass.lpszClassName="Hello world".ToCString()
After this executes, who 'owns' the cstring? Not the Max app, as it doesn't have a handle on it. The WNDCLASS struct can't because it's just a plain c struct. etc...
To date, FlushMem would clean up these temporary cstrings. However, with auto flushmem there is the danger that a flushmem can kick in and destroy your cstrings without your knowledge. In fact, that possiblity really exists today - if you create a cstring then call a function that flushmem's you're stuffed if you still need the cstring 'alive'.
I'm currently leaning towards a 'mempool stack' system for dealing with problematic, non-Max mem allocations like this, but fortunately ToCString is pretty rarely used.
Will there be GUI limitations or missing features if for example, one platform does not support feature X even though the other 2 do?
Not initially but I think it's inevitable this will have to happen sooner or later.