On 01/08/2013 10:06 PM, Philippe Sigaud wrote:
...

Isn't SDC also in D? (Bernard Helyer and friends)
https://github.com/bhelyer/SDC


Also, Timon Gehr spoke of his own front-end (assumed to be in D) in the
past, but did not provide any link to it.


Yes, it is in D. Nothing is released yet. It needs to be polished a little so that there are no known embarrassing shortcomings anymore. (eg. the parser cannot parse extern(...) declarations in alias declarations yet, and I need to finish making a minor tweak to how template instances are analyzed in order to get circular dependency detection to work reliably. Furthermore, examples like the following are currently rejected, while I want it to work:

enum x = "enum xx = q{int y = 0;};";

struct S{
    mixin(xx);
    mixin(x);
}

<[email protected]:5>:1:6: error: declaration of 'xx' smells suspiciously fishy
enum xx = q{int y = 0;};
     ^~
mxin.d:4:11: note: this lookup should have succeeded if it was valid
    mixin(xx);
          ^~


It shouldn't be a too large change, as eg. this already works:

struct S{
    enum z = y;
    enum x = "enum xx = q{immutable y = 123;};";
    mixin(xx);
    mixin(x);
    static assert(z == 123);
}

(DMD chokes on both.)

Furthermore, I need to implement exceptions, modules, and some parts of compile time reflection + tons of really small features. (Where all ambiguities and contradictions are detected according to well-defined rules instead of resolved or choked on randomly as DMD likes to do.)

Also, it obviously needs a repl. :-)

CTFE is basically done (as a portable byte code interpreter, but other strategies, such as JIT, could be easily plugged). This is a snippet of my regression test suite:

auto dynRangePrimes(){
    DynRange!int impl(int start)=>

dynRange(cons(start,delay(()=>filter!(a=>a%start)(impl(start+1)))));
    return impl(2);
}

static assert(array(take(dynRangePrimes(), 20)) == [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71]);

)

I also need to decide on a licence. I assume that the alpha will be out in late spring. (I am busy until early spring.)


But, to answer the OP question: no, there are no plan to switch to D for
the reference compiler in the near future, as far as I can tell.



Reply via email to