www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - D on other platforms than Win,Lin,Mac?

reply lurker57 <no.email example.com> writes:
Hi!

I've heard that our company is considering the T20 from Toradex.com for a new
project with remote hardware. The platform runs on Nvidia Tegra and Linux.

Since I have been very impressed by the D programming language, for some years
now, could it be possible to use D in such projects?
Sep 06 2011
next sibling parent Jacob Carlborg <doob me.com> writes:
On 2011-09-06 16:21, lurker57 wrote:
 Hi!

 I've heard that our company is considering the T20 from Toradex.com for a new
project with remote hardware. The platform runs on Nvidia Tegra and Linux.

 Since I have been very impressed by the D programming language, for some years
now, could it be possible to use D in such projects?
DMD currently only supports X86 and X86-64 platforms. I don't know about ldc or gdc (the DMD front end on the LLVM and GCC backend). The backends support ARM but the runtime needs to support ARM as well. -- /Jacob Carlborg
Sep 06 2011
prev sibling parent reply Trass3r <un known.com> writes:
 I've heard that our company is considering the T20 from Toradex.com for  
 a new project with remote hardware. The platform runs on Nvidia Tegra  
 and Linux.

 Since I have been very impressed by the D programming language, for some  
 years now, could it be possible to use D in such projects?
You'd have to use gdc or ldc and patch at least druntime. Some people already managed to get stuff running on ARM but it's tricky. I think the GC is problematic, thus you also have to avoid most of phobos.
Sep 06 2011
next sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Trass3r" <un known.com> wrote in message news:op.v1edf3bj3ncmek enigma...
 I've heard that our company is considering the T20 from Toradex.com for 
 a new project with remote hardware. The platform runs on Nvidia Tegra 
 and Linux.

 Since I have been very impressed by the D programming language, for some 
 years now, could it be possible to use D in such projects?
You'd have to use gdc or ldc and patch at least druntime. Some people already managed to get stuff running on ARM but it's tricky. I think the GC is problematic, thus you also have to avoid most of phobos.
For a language that aims at C/C++'s domain, it's extremely depressing that this is still the case. I *really* think this needs to be one of D's top ATM (Honestly, I've always cared about embedded/non-x86 processors *far* more than the native 64-bit support that got enormous attention awhile back). 'Course I'm kinda just blowing smoke out my ass since I unfortunately have neither the time nor ability to help tackle this goal :(
Sep 06 2011
next sibling parent Trass3r <un known.com> writes:
 For a language that aims at C/C++'s domain, it's extremely depressing  
 that this is still the case. I *really* think this needs to be one of  
 D's top

 hole
We have much bigger problems that need attention. And there's nothing preventing the few people demanding ARM support from patching druntime etc. and creating a pull request to add it. The thing is that simply nobody wants to do the dirty base work.
Sep 06 2011
prev sibling next sibling parent bearophile <bearophileHUGS lycos.com> writes:
Nick Sabalausky:

 I *really* think this needs to be one of D's top 
 priorities at this point.
In my opinion at the moment one of the highest priorities of D (maybe _the_ top one) is to find a ways to improve and speed up the process of reviewing, fixing and applying pull requests for DMD/Phobos. Bye, bearophile
Sep 06 2011
prev sibling parent Andrew Wiley <wiley.andrew.j gmail.com> writes:
On Tue, Sep 6, 2011 at 1:51 PM, Nick Sabalausky <a a.a> wrote:

 "Trass3r" <un known.com> wrote in message news:op.v1edf3bj3ncmek enigma...
 I've heard that our company is considering the T20 from Toradex.com for
 a new project with remote hardware. The platform runs on Nvidia Tegra
 and Linux.

 Since I have been very impressed by the D programming language, for some
 years now, could it be possible to use D in such projects?
You'd have to use gdc or ldc and patch at least druntime. Some people already managed to get stuff running on ARM but it's tricky. I think the GC is problematic, thus you also have to avoid most of
phobos. For a language that aims at C/C++'s domain, it's extremely depressing that this is still the case. I *really* think this needs to be one of D's top ATM (Honestly, I've always cared about embedded/non-x86 processors *far* more than the native 64-bit support that got enormous attention awhile back). 'Course I'm kinda just blowing smoke out my ass since I unfortunately have neither the time nor ability to help tackle this goal :(
The problem is that the most direct way to do this is to use a compiler backend that isn't Digital Mars, and there's far fewer people working on other backends. This is why I asked whether anything had happened with GCC inclusion a while back. If that could happen, D would get a large leap forward in this area. I agree that a systems language that only works on x86/x86_64 is a depressing concept, and I think it's about to become unacceptable in the next few years.
Sep 06 2011
prev sibling parent reply Johannes Pfau <spam example.com> writes:
Trass3r wrote:
 I've heard that our company is considering the T20 from Toradex.com
 for a new project with remote hardware. The platform runs on Nvidia
 Tegra and Linux.

 Since I have been very impressed by the D programming language, for
 some years now, could it be possible to use D in such projects?
You'd have to use gdc or ldc and patch at least druntime. Some people already managed to get stuff running on ARM but it's tricky.
At least for gdc only hello-world like code works. Real code hits this issue: https://bitbucket.org/goshawk/gdc/issue/215/alignment-of-struct-members-wrong-on-arm This also applies to all platforms which aren't supported by dmd.
 I think the GC is problematic, thus you also have to avoid
most of phobos.
The GC seems to work if druntime is compiled with -fno-section-anchors , but no real testing was done. https://bitbucket.org/goshawk/gdc/issue/120/fsection-anchors-broken-on-arm might also be caused by bug 215. -- Johannes Pfau
Sep 06 2011
next sibling parent reply Trass3r <un known.com> writes:
 At least for gdc only hello-world like code works. Real code hits this
 issue:
 https://bitbucket.org/goshawk/gdc/issue/215/alignment-of-struct-members-wrong-on-arm
Did you ever try with LDC?
Sep 06 2011
parent Johannes Pfau <spam example.com> writes:
Trass3r wrote:
 At least for gdc only hello-world like code works. Real code hits
 this issue:
 https://bitbucket.org/goshawk/gdc/issue/215/alignment-of-struct-members-wrong-on-arm
Did you ever try with LDC?
Not yet, but I'll try it as soon as possible. -- Johannes Pfau
Sep 07 2011
prev sibling parent reply Andrew Wiley <wiley.andrew.j gmail.com> writes:
On Tue, Sep 6, 2011 at 2:25 PM, Johannes Pfau <spam example.com> wrote:

 Trass3r wrote:
 I've heard that our company is considering the T20 from Toradex.com
 for a new project with remote hardware. The platform runs on Nvidia
 Tegra and Linux.

 Since I have been very impressed by the D programming language, for
 some years now, could it be possible to use D in such projects?
You'd have to use gdc or ldc and patch at least druntime. Some people already managed to get stuff running on ARM but it's tricky.
At least for gdc only hello-world like code works. Real code hits this issue: https://bitbucket.org/goshawk/gdc/issue/215/alignment-of-struct-members-wrong-on-arm This also applies to all platforms which aren't supported by dmd.
 I think the GC is problematic, thus you also have to avoid
most of phobos.
The GC seems to work if druntime is compiled with -fno-section-anchors , but no real testing was done. https://bitbucket.org/goshawk/gdc/issue/120/fsection-anchors-broken-on-arm might also be caused by bug 215.
+1 If you're looking at an ARMv7 platform (my Tegra is ARMv7, dunno if they all are), I believe you can set the Linux kernel to handle faults caused by unaligned memory accesses, which *should* make D run with a performance hit until this bug gets fixed. Keep in mind that the library situation is largely untested, although Iain seems to have quietly done a lot of work in Druntime at some point to make it all build. Once I've got my Tegra up and running (need a serial cable - it's in the mail), I'll be able to say more.
Sep 06 2011
parent reply Johannes Pfau <spam example.com> writes:
Andrew Wiley wrote:
On Tue, Sep 6, 2011 at 2:25 PM, Johannes Pfau <spam example.com> wrote:

 Trass3r wrote:
 I've heard that our company is considering the T20 from
 Toradex.com for a new project with remote hardware. The platform
 runs on Nvidia Tegra and Linux.

 Since I have been very impressed by the D programming language,
 for some years now, could it be possible to use D in such
 projects?
You'd have to use gdc or ldc and patch at least druntime. Some people already managed to get stuff running on ARM but it's tricky.
At least for gdc only hello-world like code works. Real code hits this issue: https://bitbucket.org/goshawk/gdc/issue/215/alignment-of-struct-members-wrong-on-arm This also applies to all platforms which aren't supported by dmd.
 I think the GC is problematic, thus you also have to avoid
most of phobos.
The GC seems to work if druntime is compiled with -fno-section-anchors , but no real testing was done. https://bitbucket.org/goshawk/gdc/issue/120/fsection-anchors-broken-on-arm might also be caused by bug 215.
+1 If you're looking at an ARMv7 platform (my Tegra is ARMv7, dunno if they all are), I believe you can set the Linux kernel to handle faults caused by unaligned memory accesses, which *should* make D run with a performance hit until this bug gets fixed. Keep in mind that the library situation is largely untested, although Iain seems to have quietly done a lot of work in Druntime at some point to make it all build. Once I've got my Tegra up and running (need a serial cable - it's in the mail), I'll be able to say more.
I only had a cheap ARM5TE till now, but yesterday my PandaBoard arrived (OMAP4 / Dual Core Cortex A9 / ARM7). But the SD Card I ordered is broken, I'm waiting for a replacement now. Anyway: Are you referring to this? http://www.mjmwired.net/kernel/Documentation/arm/mem_alignment -- Johannes Pfau
Sep 07 2011
parent Andrew Wiley <wiley.andrew.j gmail.com> writes:
On Wed, Sep 7, 2011 at 2:46 AM, Johannes Pfau <spam example.com> wrote:

 Andrew Wiley wrote:
On Tue, Sep 6, 2011 at 2:25 PM, Johannes Pfau <spam example.com> wrote:

 Trass3r wrote:
 I've heard that our company is considering the T20 from
 Toradex.com for a new project with remote hardware. The platform
 runs on Nvidia Tegra and Linux.

 Since I have been very impressed by the D programming language,
 for some years now, could it be possible to use D in such
 projects?
You'd have to use gdc or ldc and patch at least druntime. Some people already managed to get stuff running on ARM but it's tricky.
At least for gdc only hello-world like code works. Real code hits this issue:
https://bitbucket.org/goshawk/gdc/issue/215/alignment-of-struct-members-wrong-on-arm
 This also applies to all platforms which aren't supported by dmd.

 I think the GC is problematic, thus you also have to avoid
most of phobos.
The GC seems to work if druntime is compiled with -fno-section-anchors , but no real testing was done.
https://bitbucket.org/goshawk/gdc/issue/120/fsection-anchors-broken-on-arm
 might also be caused by bug 215.
+1 If you're looking at an ARMv7 platform (my Tegra is ARMv7, dunno if they all are), I believe you can set the Linux kernel to handle faults caused by unaligned memory accesses, which *should* make D run with a performance hit until this bug gets fixed. Keep in mind that the library situation is largely untested, although Iain seems to have quietly done a lot of work in Druntime at some point to make it all build. Once I've got my Tegra up and running (need a serial cable - it's in the mail), I'll be able to say more.
I only had a cheap ARM5TE till now, but yesterday my PandaBoard arrived (OMAP4 / Dual Core Cortex A9 / ARM7). But the SD Card I ordered is broken, I'm waiting for a replacement now. Anyway: Are you referring to this? http://www.mjmwired.net/kernel/Documentation/arm/mem_alignment
Yes. That won't make our OS structs match up, but it should keep alignment problems from crashing the program otherwise. Also, my experience with LDC was that it doesn't have the Druntime patches it needs, but I seem to recall adding enough to get it building, then watching LDC segfault. I think they're already fixing the alignments (though I'm not familiar enough with their source to be certain that's what I was seeing), but there seems to be some other issue.
Sep 07 2011