September 08, 2016
compiling parts of phobos does no longer crash the new engine.
However it still produces incorrect byte-code :)

September 08, 2016
On Thursday, 8 September 2016 at 10:44:55 UTC, Stefan Koch wrote:
> compiling parts of phobos does no longer crash the new engine.
> However it still produces incorrect byte-code :)

I think I have taken care of the incorrect bytecode.
It was not an issue with the engine itself but rather with the way I plugged it in.
The new engine is not supposed being called if the old one has already started to interpret the function, because the two do not and should not share state.

September 08, 2016
On Thu, Sep 8, 2016 at 3:11 PM, Stefan Koch via Digitalmars-d-announce < digitalmars-d-announce@puremagic.com> wrote:

> On Thursday, 8 September 2016 at 10:44:55 UTC, Stefan Koch wrote:
>
>> compiling parts of phobos does no longer crash the new engine. However it still produces incorrect byte-code :)
>>
>
> I think I have taken care of the incorrect bytecode.
> It was not an issue with the engine itself but rather with the way I
> plugged it in.
> The new engine is not supposed being called if the old one has already
> started to interpret the function, because the two do not and should not
> share state.
>
>
!! Does this mean I can start testing new ctfe and only some of my CT will be faster?


September 08, 2016
On Thursday, 8 September 2016 at 14:48:25 UTC, Rory McGuire wrote:
> On Thu, Sep 8, 2016 at 3:11 PM, Stefan Koch via Digitalmars-d-announce < digitalmars-d-announce@puremagic.com> wrote:
>
>> On Thursday, 8 September 2016 at 10:44:55 UTC, Stefan Koch wrote:
>>
>>> compiling parts of phobos does no longer crash the new engine. However it still produces incorrect byte-code :)
>>>
>>
>> I think I have taken care of the incorrect bytecode.
>> It was not an issue with the engine itself but rather with the way I
>> plugged it in.
>> The new engine is not supposed being called if the old one has already
>> started to interpret the function, because the two do not and should not
>> share state.
>>
>>
> !! Does this mean I can start testing new ctfe and only some of my CT will be faster?

You can start yes.
However it is very limited right now I would expect it to slow you down by a little bit.

September 08, 2016
On Thursday, 8 September 2016 at 13:11:23 UTC, Stefan Koch wrote:
> On Thursday, 8 September 2016 at 10:44:55 UTC, Stefan Koch wrote:
>> compiling parts of phobos does no longer crash the new engine.
>> However it still produces incorrect byte-code :)
>
> I think I have taken care of the incorrect bytecode.
> It was not an issue with the engine itself but rather with the way I plugged it in.
> The new engine is not supposed being called if the old one has already started to interpret the function, because the two do not and should not share state.

I found more incorrect code.
this time it's located more deeply in the engine.
I am investigating the cause.
It seems to be related closures somehow.

September 19, 2016
On Thursday, 8 September 2016 at 18:54:52 UTC, Stefan Koch wrote:
> On Thursday, 8 September 2016 at 13:11:23 UTC, Stefan Koch wrote:
>> On Thursday, 8 September 2016 at 10:44:55 UTC, Stefan Koch wrote:
>>> compiling parts of phobos does no longer crash the new engine.
>>> However it still produces incorrect byte-code :)
>>
>> I think I have taken care of the incorrect bytecode.
>> It was not an issue with the engine itself but rather with the way I plugged it in.
>> The new engine is not supposed being called if the old one has already started to interpret the function, because the two do not and should not share state.
>
> I found more incorrect code.
> this time it's located more deeply in the engine.
> I am investigating the cause.
> It seems to be related closures somehow.

Compiling all of phobos does not crash my engine anymore!
However running the unittests does show incorrect results :(
This is concerning since I am mostly bailing out.

I think this too seems to be related to closures produced in templates.
Really nasty stuff.
September 19, 2016
On Monday, 19 September 2016 at 10:07:06 UTC, Stefan Koch wrote:
> Compiling all of phobos does not crash my engine anymore!
> However running the unittests does show incorrect results :(
> This is concerning since I am mostly bailing out.
>
> I think this too seems to be related to closures produced in templates.
> Really nasty stuff.

Good news anyway! Do you have any preliminary results or goals and expectations that you are going to achieve with your rework? Is it mostly perf/memory improvements, are there any new features that this rework will unlock?

Thanks for your hard work!
September 19, 2016
On Monday, 19 September 2016 at 18:05:34 UTC, Lurker wrote:
>
> Good news anyway! Do you have any preliminary results or goals and expectations that you are going to achieve with your rework? Is it mostly perf/memory improvements, are there any new features that this rework will unlock?
>
> Thanks for your hard work!

I stated my expectations earlier I think there will be a 2-6x performance increase in the non-jited version and around 10-14x for the jit.
My preliminary results do support that claim.

As for new features I do not plan on doing language-changes as I do not have the ability to anticipate the outcome of doing so.

My work will probably have side-effects on the rest of dmd, for example the AST is hard to work with in some cases. I would to add like some support for frontend-optimisations as well.

I will also improve documentation in some areas and hope to lower the entry-barrier for dmd-development.
September 20, 2016
On Monday, 19 September 2016 at 10:07:06 UTC, Stefan Koch wrote:
> Compiling all of phobos does not crash my engine anymore!

Great work! Keep up still!
September 25, 2016
On Tuesday, 20 September 2016 at 05:06:57 UTC, Nordlöw wrote:
> On Monday, 19 September 2016 at 10:07:06 UTC, Stefan Koch wrote:
>> Compiling all of phobos does not crash my engine anymore!
>
> Great work! Keep up still!

I am proud to announce,
(and slightly embarssed because it took to long)

that the following code can now be executed using the new CTFE engine :

string fn(bool b)
{
    return b ? "true" : "false";
}
static assert(fn(true) == "true");
static assert(fn(false) == "false");

although this seems trivial it took me about 3 months to get to this point.
I believe from here on the road will be less steep.