iOS progress

Dan Olson via digitalmars-d-ldc digitalmars-d-ldc at puremagic.com
Sun Feb 15 11:19:09 PST 2015


"Joakim" <dlang at joakim.fea.st> writes:

> On Sunday, 15 February 2015 at 03:40:41 UTC, Dan Olson wrote:
>>
>> https://github.com/smolt/ldc-iphone-dev
>>
>> This pulls all the pieces together as submodules.  I still need to
>> cleanup and add my sample Xcode apps and add some docs, but this
>> should be enough to build LDC iPhoneOS cross compiler and Phobos.
>> Someone with OS X should see if my build works for them.
>
> Nice work.  Skimming your commits, it looks like you have a bunch of
> code to disable TLS altogether.  I guess that is just older work and
> you got TLS working now?  If so, how many tests are failing for you on
> druntime and phobos now?

Hi Joakim!

I added a -disable-tls option to help with bringing up D on other
targets that don't have TLS.  My thought is if you don't have threads,
say a bare-bones target, then you don't need TLS and should be
allowed to use existing D code without changing all TLS vars to
__gshared.

For iOS, TLS is working fine with the modification I made to LLVM last
spring.  Newer arm64 devices are supposed to natively support TLS, but I
don't have an arm64 device yet.  The iphonesim ironically does not
support TLS because of a check in ld to make sure TLS doesn't slip in.
Obviously it could support it.  I have ideas of how to get around the
check.

Unittests failures are not too bad.  All except one are math related.

std.csv - a couple double off-by-one LSB differences
std.internal.math.gammafunction - needs update for 64-bit reals
std.math - a real off-by-one LSB error in a few cases

Failures only with optimization on (-O1 or higher):

std.internal.math.errorfunction - erfc() NaN payload fails
std.math - acosh() not producing NaN in a couple cases
core.thread - a Fiber unittest crashes on multicore devices

I have all the failures marked in the druntime and phobos source with
versions that begin with "WIP_" to workaround the failure so rest of
test can run. Grep for "WIP_" to see all the details. It really is a
bummer that unittests use assert because it makes it difficult get
results for the rest of the unittest.


More information about the digitalmars-d-ldc mailing list