MS extend C++ significantly for Windows8... and Andrei got name drop

Paulo Pinto pjmlp at progtools.org
Wed Jan 25 14:55:52 PST 2012


Am 25.01.2012 23:44, schrieb Manu:
> On 26 January 2012 00:37, Adam Wilson <flyboynw at gmail.com
> <mailto:flyboynw at gmail.com>> wrote:
>
>     On Wed, 25 Jan 2012 14:28:46 -0800, Manu <turkeyman at gmail.com
>     <mailto:turkeyman at gmail.com>> wrote:
>
>         On 25 January 2012 23:59, Adam Wilson <flyboynw at gmail.com
>         <mailto:flyboynw at gmail.com>> wrote:
>
>             On Wed, 25 Jan 2012 13:35:38 -0800, Manu
>             <turkeyman at gmail.com <mailto:turkeyman at gmail.com>> wrote:
>
>               On 25 January 2012 21:47, bls <bizprac at orange.fr
>             <mailto:bizprac at 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



More information about the Digitalmars-d mailing list