Better watch out! D runs on watchOS!
Joakim via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Wed Dec 30 15:11:06 PST 2015
On Wednesday, 30 December 2015 at 21:56:46 UTC, Dan Olson wrote:
> Dan Olson <gorox at comcast.net> writes:
>
>> A little progress report. More to come later when I get
>> something pushed to github.
>>
>> I bought a returned Apple Watch yesterday at discount for
>> $223.99 US and tried to see how much of D would work on it
>> using my iOS fork of LDC. There were a few bumps, like dealing
>> with embedded bitcode (a watchOS requirement). After 4-hours
>> of baby steps, little D programs with incremental druntime
>> support, I was able to download a huge watch app extension
>> with all druntime and phobos unittests and run most of them
>> alphabetically. Everything zipped along fine, only a std.math
>> error, then mysteriously a exit after running std.parallelism
>> test a long time. It was late for me so decided that was
>> enough progress.
>>
>> This means all of druntime worked and probably most of phobos.
>
> Played with this a little more and learned a bit about watchOS
> memory. A little test that allocated memory in 5 MB chucks was
> terminated at 30 MB data RAM. The combined unittests in phobos
> suck up much more than that, std.uri itself uses over 50 MB.
> By tailoring memory usage and running phobos unittests in
> smaller block, they all work. The std.math failure was my own
> coding error missing a version block for WatchOS.
>
> In end, good news: druntime and phobos fully work on watchOS
> with LLVM optimizations disabled. With optimzations on, there
> are alignment problems. For example, compact unwind data
> generated by LLVM isn't aligned but some of our eh unwinding
> code casts these to uint. Not so good when the optimizer
> selects instructions requiring special alignment. I'll track
> these down gradually.
That sounds like this issue I ran into with ARM EH:
https://github.com/ldc-developers/ldc/issues/489#issuecomment-143560075
I was able to work around it by disabling the mentioned llvm
optimization pass:
https://gist.github.com/joakim-noah/1fb23fba1ba5b7e87e1a#file-android_tls-L42
https://gist.github.com/joakim-noah/63693ead3aa62216e1d9#file-ldc_android_arm-L3133
More information about the Digitalmars-d-announce
mailing list