I am porting LDC/phobos/druntime to NetBSD. Currently my patch is merged into LDC master. I have several questions about phobos/druntime and general workflow. As I can understand I should prepare pull requests for phobos/druntime master branches. LDC team will merge/cherry-pick changes into ldc branch from master later. Is it correct workflow? Because it means that I can’t check my patch: there is no dmd compiler for NetBSD + phobos/druntime master branches.

Also I have a set of issues with real (long double) type. Several functions absent in NetBSD for real type (more specific - they are just aliases for functions with double). Other functions return less accurate values.
I have to disable a couple unit tests for NetBSD.
E.g. std/conv.d:2835 assert(to!string(r) == to!string(real.min_normal)) see related question: http://stackoverflow.com/questions/35090322/netbsd-long-double-trouble But also there are a set of unit tests where I have to reduce accuracy. This problem affects std/internal/math/gammafunction.d, std/math.d, std/numeric.d, std/complex.d
E.g.  std/complex.d:792
assert(sin(complex(2.0L, 0)) == std.math.sin(2.0L));
I replace with:
assert(feqrel(sin(complex(2.0L, 0)).re, std.math.sin(2.0L)) > real.mant_dig-10); My question is: should I wrap such changes with version(NetBSD) statement or it is acceptable reduce accuracy for all platforms?

PS
You can look to my code here (netbsd_patch branch):
https://github.com/nrTQgc/druntime
https://github.com/nrTQgc/phobos


Reply via email to