Thread overview
Windows Universal/Store apps support
May 28, 2015
Olivier Prince
May 29, 2015
Rikki Cattermole
May 29, 2015
Paulo Pinto
May 29, 2015
Rikki Cattermole
May 29, 2015
Paulo Pinto
May 29, 2015
Rikki Cattermole
May 29, 2015
Paulo Pinto
May 29, 2015
Olivier Prince
May 29, 2015
Jesse Phillips
May 30, 2015
ZombineDev
May 28, 2015
I searched the forum to find if there is some support for new Windows development technologies and I didn't find anything related (except some rants about WinRT 3 years ago).

- Is there any support in D or phobos for developping this kind of applications?
- Does D support ARM as Windows target?
- Are there any plans to support the specific libraries in this respect (something like C++/CX extensions or COM metadata files)?
- At least, is there a skeleton Store app written in D?

Thanks.
May 29, 2015
On 29/05/2015 3:57 a.m., Olivier Prince wrote:
> I searched the forum to find if there is some support for new Windows
> development technologies and I didn't find anything related (except some
> rants about WinRT 3 years ago).
>
> - Is there any support in D or phobos for developping this kind of
> applications?

No.

> - Does D support ARM as Windows target?

Yes/No. ldc/gdc guys probably are a good place to start.

> - Are there any plans to support the specific libraries in this respect
> (something like C++/CX extensions or COM metadata files)?

What exactly do you need?

> - At least, is there a skeleton Store app written in D?

No.

May 29, 2015
On Friday, 29 May 2015 at 03:23:39 UTC, Rikki Cattermole wrote:
> On 29/05/2015 3:57 a.m., Olivier Prince wrote:
>> I searched the forum to find if there is some support for new Windows
>> development technologies and I didn't find anything related (except some
>> rants about WinRT 3 years ago).
>>
>> - Is there any support in D or phobos for developping this kind of
>> applications?
>
> No.
>
>> - Does D support ARM as Windows target?
>
> Yes/No. ldc/gdc guys probably are a good place to start.
>
>> - Are there any plans to support the specific libraries in this respect
>> (something like C++/CX extensions or COM metadata files)?
>
> What exactly do you need?

WinRT is an evolution of COM with a .NET feel to the API.

Basically it is COM where objects also need to implement a new interface, IInspectable, and .NET metadata stored in .winmd files is used instead of COM type libraries.

In a way WinRT is the return of Ext-VOS, the original idea behind .NET. Most likely caused by the Longhorn failure to write everything in .NET, as most new Windows APIs have been introduced as COM components since Vista.

So any language targeting WinRT, or Universal Apps as they are now known, needs to to support COM alongside the required interfaces for interoperability between languages and be able to consume/produce .NET metadata files.

--
Paulo
May 29, 2015
On 29/05/2015 7:03 p.m., Paulo Pinto wrote:
> On Friday, 29 May 2015 at 03:23:39 UTC, Rikki Cattermole wrote:
>> On 29/05/2015 3:57 a.m., Olivier Prince wrote:
>>> I searched the forum to find if there is some support for new Windows
>>> development technologies and I didn't find anything related (except some
>>> rants about WinRT 3 years ago).
>>>
>>> - Is there any support in D or phobos for developping this kind of
>>> applications?
>>
>> No.
>>
>>> - Does D support ARM as Windows target?
>>
>> Yes/No. ldc/gdc guys probably are a good place to start.
>>
>>> - Are there any plans to support the specific libraries in this respect
>>> (something like C++/CX extensions or COM metadata files)?
>>
>> What exactly do you need?
>
> WinRT is an evolution of COM with a .NET feel to the API.
>
> Basically it is COM where objects also need to implement a new
> interface, IInspectable, and .NET metadata stored in .winmd files is
> used instead of COM type libraries.
>
> In a way WinRT is the return of Ext-VOS, the original idea behind .NET.
> Most likely caused by the Longhorn failure to write everything in .NET,
> as most new Windows APIs have been introduced as COM components since
> Vista.
>
> So any language targeting WinRT, or Universal Apps as they are now
> known, needs to to support COM alongside the required interfaces for
> interoperability between languages and be able to consume/produce .NET
> metadata files.
>
> --
> Paulo

D already supports COM.
For .winmd, you should be good to go for -m32mscoff and -m64! Just add LFLAGS="/winmd"

Although this really really needs to be tested.
May 29, 2015
On Friday, 29 May 2015 at 07:41:14 UTC, Rikki Cattermole wrote:
> On 29/05/2015 7:03 p.m., Paulo Pinto wrote:
>> On Friday, 29 May 2015 at 03:23:39 UTC, Rikki Cattermole wrote:
>>> On 29/05/2015 3:57 a.m., Olivier Prince wrote:
>>>> I searched the forum to find if there is some support for new Windows
>>>> development technologies and I didn't find anything related (except some
>>>> rants about WinRT 3 years ago).
>>>>
>>>> - Is there any support in D or phobos for developping this kind of
>>>> applications?
>>>
>>> No.
>>>
>>>> - Does D support ARM as Windows target?
>>>
>>> Yes/No. ldc/gdc guys probably are a good place to start.
>>>
>>>> - Are there any plans to support the specific libraries in this respect
>>>> (something like C++/CX extensions or COM metadata files)?
>>>
>>> What exactly do you need?
>>
>> WinRT is an evolution of COM with a .NET feel to the API.
>>
>> Basically it is COM where objects also need to implement a new
>> interface, IInspectable, and .NET metadata stored in .winmd files is
>> used instead of COM type libraries.
>>
>> In a way WinRT is the return of Ext-VOS, the original idea behind .NET.
>> Most likely caused by the Longhorn failure to write everything in .NET,
>> as most new Windows APIs have been introduced as COM components since
>> Vista.
>>
>> So any language targeting WinRT, or Universal Apps as they are now
>> known, needs to to support COM alongside the required interfaces for
>> interoperability between languages and be able to consume/produce .NET
>> metadata files.
>>
>> --
>> Paulo
>
> D already supports COM.
> For .winmd, you should be good to go for -m32mscoff and -m64! Just add LFLAGS="/winmd"
>
> Although this really really needs to be tested.

As far as I am aware D supports old style COM, not COM with WinRT improvements.

I don't get your hint with LFLAGS.

Are you aware what are .NET metadata files?

..
Paulo
May 29, 2015
On 29/05/2015 9:55 p.m., Paulo Pinto wrote:
> On Friday, 29 May 2015 at 07:41:14 UTC, Rikki Cattermole wrote:
>> On 29/05/2015 7:03 p.m., Paulo Pinto wrote:
>>> On Friday, 29 May 2015 at 03:23:39 UTC, Rikki Cattermole wrote:
>>>> On 29/05/2015 3:57 a.m., Olivier Prince wrote:
>>>>> I searched the forum to find if there is some support for new Windows
>>>>> development technologies and I didn't find anything related (except
>>>>> some
>>>>> rants about WinRT 3 years ago).
>>>>>
>>>>> - Is there any support in D or phobos for developping this kind of
>>>>> applications?
>>>>
>>>> No.
>>>>
>>>>> - Does D support ARM as Windows target?
>>>>
>>>> Yes/No. ldc/gdc guys probably are a good place to start.
>>>>
>>>>> - Are there any plans to support the specific libraries in this
>>>>> respect
>>>>> (something like C++/CX extensions or COM metadata files)?
>>>>
>>>> What exactly do you need?
>>>
>>> WinRT is an evolution of COM with a .NET feel to the API.
>>>
>>> Basically it is COM where objects also need to implement a new
>>> interface, IInspectable, and .NET metadata stored in .winmd files is
>>> used instead of COM type libraries.
>>>
>>> In a way WinRT is the return of Ext-VOS, the original idea behind .NET.
>>> Most likely caused by the Longhorn failure to write everything in .NET,
>>> as most new Windows APIs have been introduced as COM components since
>>> Vista.
>>>
>>> So any language targeting WinRT, or Universal Apps as they are now
>>> known, needs to to support COM alongside the required interfaces for
>>> interoperability between languages and be able to consume/produce .NET
>>> metadata files.
>>>
>>> --
>>> Paulo
>>
>> D already supports COM.
>> For .winmd, you should be good to go for -m32mscoff and -m64! Just add
>> LFLAGS="/winmd"
>>
>> Although this really really needs to be tested.
>
> As far as I am aware D supports old style COM, not COM with WinRT
> improvements.
>
> I don't get your hint with LFLAGS.

https://msdn.microsoft.com/en-us/library/jj157268.aspx
So unless this isn't doing what I think it is doing, then yes it is relevant.
No guarantees about what it requires for input info regarding e.g. symbols however.

> Are you aware what are .NET metadata files?

I can't say anything about that. Again try the flag. If it doesn't do what I'm expecting it does, no harm. It's just a feature that definitely isn't implemented or supported by the toolchain.

Of course, just because it generates the file, doesn't mean that there will be anything of use within it.
May 29, 2015
On Friday, 29 May 2015 at 03:23:39 UTC, Rikki Cattermole wrote:
> On 29/05/2015 3:57 a.m., Olivier Prince wrote:
>> I searched the forum to find if there is some support for new Windows
>> development technologies and I didn't find anything related (except some
>> rants about WinRT 3 years ago).
>>
>> - Is there any support in D or phobos for developping this kind of
>> applications?
>
> No.
>
>> - Does D support ARM as Windows target?
>
> Yes/No. ldc/gdc guys probably are a good place to start.
>
>> - Are there any plans to support the specific libraries in this respect
>> (something like C++/CX extensions or COM metadata files)?
>
> What exactly do you need?

Language integrated reference counting, runtime templates, partial COM classes, strings, arrays, collections, exceptions, events, delegates, attributes. I know that D has these features but I doubt that thay are mapped to COM counterparts.

>
>> - At least, is there a skeleton Store app written in D?
>
> No.

May 29, 2015
On Friday, 29 May 2015 at 10:01:53 UTC, Rikki Cattermole wrote:
> On 29/05/2015 9:55 p.m., Paulo Pinto wrote:
>> On Friday, 29 May 2015 at 07:41:14 UTC, Rikki Cattermole wrote:
>>> On 29/05/2015 7:03 p.m., Paulo Pinto wrote:
>>>> On Friday, 29 May 2015 at 03:23:39 UTC, Rikki Cattermole wrote:
>>>>> On 29/05/2015 3:57 a.m., Olivier Prince wrote:
>>>>>> I searched the forum to find if there is some support for new Windows
>>>>>> development technologies and I didn't find anything related (except
>>>>>> some
>>>>>> rants about WinRT 3 years ago).
>>>>>>
>>>>>> - Is there any support in D or phobos for developping this kind of
>>>>>> applications?
>>>>>
>>>>> No.
>>>>>
>>>>>> - Does D support ARM as Windows target?
>>>>>
>>>>> Yes/No. ldc/gdc guys probably are a good place to start.
>>>>>
>>>>>> - Are there any plans to support the specific libraries in this
>>>>>> respect
>>>>>> (something like C++/CX extensions or COM metadata files)?
>>>>>
>>>>> What exactly do you need?
>>>>
>>>> WinRT is an evolution of COM with a .NET feel to the API.
>>>>
>>>> Basically it is COM where objects also need to implement a new
>>>> interface, IInspectable, and .NET metadata stored in .winmd files is
>>>> used instead of COM type libraries.
>>>>
>>>> In a way WinRT is the return of Ext-VOS, the original idea behind .NET.
>>>> Most likely caused by the Longhorn failure to write everything in .NET,
>>>> as most new Windows APIs have been introduced as COM components since
>>>> Vista.
>>>>
>>>> So any language targeting WinRT, or Universal Apps as they are now
>>>> known, needs to to support COM alongside the required interfaces for
>>>> interoperability between languages and be able to consume/produce .NET
>>>> metadata files.
>>>>
>>>> --
>>>> Paulo
>>>
>>> D already supports COM.
>>> For .winmd, you should be good to go for -m32mscoff and -m64! Just add
>>> LFLAGS="/winmd"
>>>
>>> Although this really really needs to be tested.
>>
>> As far as I am aware D supports old style COM, not COM with WinRT
>> improvements.
>>
>> I don't get your hint with LFLAGS.
>
> https://msdn.microsoft.com/en-us/library/jj157268.aspx
> So unless this isn't doing what I think it is doing, then yes it is relevant.
> No guarantees about what it requires for input info regarding e.g. symbols however.
>
>> Are you aware what are .NET metadata files?
>
> I can't say anything about that. Again try the flag. If it doesn't do what I'm expecting it does, no harm. It's just a feature that definitely isn't implemented or supported by the toolchain.
>
> Of course, just because it generates the file, doesn't mean that there will be anything of use within it.

The compiler provides the required information in C++/CX mode.

When using pure C++ with the Windows Runtime C++ Template Library instead[0], it requires an idl file to be given to the MIDL compiler, that is then fed to the linker, like old style COM type libraries.

[0] - https://msdn.microsoft.com/en-us/library/windows/apps/hh438466.aspx

[1] - https://msdn.microsoft.com/en-us/library/windows/apps/hh973463.aspx




May 29, 2015
On Thursday, 28 May 2015 at 15:57:42 UTC, Olivier Prince wrote:
> I searched the forum to find if there is some support for new Windows development technologies and I didn't find anything related (except some rants about WinRT 3 years ago).
>
> - Is there any support in D or phobos for developping this kind of applications?
> - Does D support ARM as Windows target?
> - Are there any plans to support the specific libraries in this respect (something like C++/CX extensions or COM metadata files)?
> - At least, is there a skeleton Store app written in D?
>
> Thanks.

I don't know of any work outside of the old Microsoft slides, so likely someone who is familiar with writing a C++ app will need to try it out and request improvements where things are missing.

Juno may be a good place to go for COM.

https://github.com/JesseKPhillips/Juno-Windows-Class-Library
May 30, 2015
On Thursday, 28 May 2015 at 15:57:42 UTC, Olivier Prince wrote:
> [snip]

There isn't yet a polished alternative to MS VS Windows Store toolchain, but probably you don't need most of it (e.g. you can have a C++/XAML app that calls you D code).
I noticed that Vibe.d has some WinRT support. Here's their WinRT driver, which uses calls some parts of WinRT API:

https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/core/drivers/winrt.d