Am 25.01.2012 23:44, schrieb Manu:
On 26 January 2012 00:37, Adam Wilson <flybo...@gmail.com
<mailto:flybo...@gmail.com>> wrote:

    On Wed, 25 Jan 2012 14:28:46 -0800, Manu <turkey...@gmail.com
    <mailto:turkey...@gmail.com>> wrote:

        On 25 January 2012 23:59, Adam Wilson <flybo...@gmail.com
        <mailto:flybo...@gmail.com>> wrote:

            On Wed, 25 Jan 2012 13:35:38 -0800, Manu
            <turkey...@gmail.com <mailto:turkey...@gmail.com>> wrote:

              On 25 January 2012 21:47, bls <bizp...@orange.fr
            <mailto:bizp...@orange.fr>> wrote:


                  On 01/25/2012 07:03 AM, Manu wrote:


                      This is fairly interesting. MS have extended their
                    C++ compiler

                        significantly for Windows8 with a bunch of
                        non-standard stuff.
                        FINALLY implement garbage collection, ref
                        counting, properties,
                        delegates, events, generics, etc...
                        If other compilers adopt this tech, D loses some
                        advantages.


                    But you still have to fight with ifndef ,forward
                    declaration, and a
                    template syntax against common sense.  Even if you
                    paint shit yellow it's
                    not necessarily gold.


                True, but I think this will mitigate a lot of the
                motivation Windows devs
                have to seek another language if they're not developing
                cross platform
                apps.

                Sadly, since WinRT requires using these language
                extensions to interface
                with the new windows runtime, you won't be able to write
                a Windows8 app in
                D.
                Interestingly though, D supports almost everything
                they've added to C++. I
                wonder if it would be possible to do extern(Windows8) to
                produce a
                compatible ABI for linking with MS C++ apps?

                The most interesting features are 'ref new' and 'gcnew',
                which makes me
                wonder, since Windows8 has an OS garbage collector,
                would it be at all
                possible to have D use the Windows8 GC? I'd prefer this
                to using D's own
                GC
                if it would be supported, and obviously this would be a
                requirement if D
                was going to interact with WinRT properly.
                Also, WinRT uses 'ref new' to allocate ref counted
                (effectively COM to my
                understanding) objects. I think I read somewhere that D
                already has
                extern(COM) no? I wonder if Windows8 ref type linkage is
                already
                technically supported in D?


            There is no Win8GC, it's all ref counted. WinRT is COM with
            extras and as
            such should be accessible to D. It would need some extra
            glue code over
            what we have now ... like the IInspectable interface.


        Really? So what's 'gcnew' for?


    That's for targeting the CLR (.NET) so it doesn't conflict with
    new/delete in regular C++. It goes all the way back to the first
    C++/CLI in Visual Studio 2005.
    http://msdn.microsoft.com/en-__us/library/te3ecsc8.aspx
    <http://msdn.microsoft.com/en-us/library/te3ecsc8.aspx>


So there is a GC... It just happens to be the .net GC. Is that a
problem? Obviously it's accessible in C++ code. Can you use it to
allocate C++ objects, or is it exclusively for some sort of interaction
with .net?
If the rest of the platform is using it...

You are mixing it.

Managed C++ was the first set of C++ extensions that target .NET. This was only part of .NET 1.x.

Experience showed that the extensions were not well thought out, and with the release of .NET 2.0, Microsoft introduced C++/CLI, while dropping support for Managed C++.

Both generate CLR bytecodes and make use of the .NET GC as well.

C++/CX is the new set of extensions and they target native code. Besides
the standard C++ code, there is support for a COM based object model, which is referenced counted. This is done via a new type, handles, which
call COM AddRef()/Release() under the hood.

--
Paulo

Reply via email to