On Saturday, 13 June 2015 at 21:51:43 UTC, bitwise wrote:
On Sat, 13 Jun 2015 17:29:17 -0400, Xiaoxi <[email protected]> wrote:

On Saturday, 13 June 2015 at 21:19:28 UTC, bitwise wrote:
On Sat, 13 Jun 2015 17:16:04 -0400, weaselcat <[email protected]> wrote:>
iirc this falls under the "walter dislikes it so we won't have it" category.

As Andrei said at DConf though, consensus requires at least 3 people ;)

 Bit

The current design encourages using more finegrained features instead of the more blunt Os level versions.

version(iOS) { version = pthread;}
version(Android) { version = pthread;}

In the rest of the file simply check for pthread instead of OS.


That _sounds_ nice, but consider this:

version (linux) {
    import core.sys.linux.dlfcn;

version = use_dlopen;

}
else version (FreeBSD) {
    import core.sys.freebsd.dlfcn;

version = use_dlopen;

}

version(linux || FreeBSD) {

  //version(linux || FreeBSD) {
    version(use_dlopen) {

    dlopen(...)
}

I shouldn't have to add another version just for that last dlopen block. It's not "finegrained" control, it's cruft.

It does require more definitions, but it's worth it. A simple example like yours may seem excusable, but there's no way to limit such logic to just simple instances. Walter is coming from long experience with this, and even with my limited experience with such logic, I'm grateful for it, as dealing with more complex versions of such logic is a royal PITA.

Reply via email to