MS extend C++ significantly for Windows8... and Andrei got name drop
Adam Wilson
flyboynw at gmail.com
Wed Jan 25 17:15:46 PST 2012
On Wed, 25 Jan 2012 15:05:43 -0800, Manu <turkeyman at gmail.com> wrote:
> On 26 January 2012 00:55, Adam Wilson <flyboynw at gmail.com> wrote:
>
>> On Wed, 25 Jan 2012 14:44:09 -0800, Manu <turkeyman at gmail.com> wrote:
>>
>> On 26 January 2012 00:37, Adam Wilson <flyboynw at gmail.com> wrote:
>>>
>>> On Wed, 25 Jan 2012 14:28:46 -0800, Manu <turkeyman at gmail.com> wrote:
>>>>
>>>> On 25 January 2012 23:59, Adam Wilson <flyboynw at gmail.com> wrote:
>>>>
>>>>>
>>>>> On Wed, 25 Jan 2012 13:35:38 -0800, Manu <turkeyman at gmail.com>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>> On 25 January 2012 21:47, bls <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>
>>>> <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...
>>>
>>
>> It's exclusively for the .NET Framework and requires the .NET Framework
>> to
>> be installed and loaded to run. It's the .NET Runtime, and as such, it
>> would be VERY unwise to base anything D on it.
>
>
> .NET will be a requirement on all Win8 machines. You didn't answer
> though,
> can you use the .NET GC to allocate C++ objects to use throughout your
> native program? Or is gcnew strictly for interfacing C++ with .NET, like
> C++/CLI?
It is strictly for allocating .NET objects. You CANNOT allocate C++
objects with the .NET GC, that was implied by the statement on the use of
the .NET GC.
--
Adam Wilson
Project Coordinator
The Horizon Project
http://www.thehorizonproject.org/
More information about the Digitalmars-d
mailing list