August 04, 2014
On Saturday, 2 August 2014 at 22:48:35 UTC, Shammah Chancellor wrote:
> Also, it looks by using your fiber based scheduler that you can naturally parallize compiling.  Have you investigated that at all?

Obviously, yes. But that is quite tricky to get a deterministic result due to compile time features.
August 04, 2014
On Sunday, 3 August 2014 at 11:37:26 UTC, John Colvin wrote:
> Any idea what the significant bottlenecks are / what dmd is much faster at?

No idea. I'd like to know, but ultimately, supporting more of D is more important than being fast right now.
August 05, 2014
On 2014-08-04 04:19:01 +0000, deadalnix said:

> On Saturday, 2 August 2014 at 22:48:35 UTC, Shammah Chancellor wrote:
>> Also, it looks by using your fiber based scheduler that you can naturally parallize compiling.  Have you investigated that at all?
> 
> Obviously, yes. But that is quite tricky to get a deterministic result due to compile time features.

I'm not sure what you mean.   Are you referring to things like pragma msg?

August 05, 2014
On Tuesday, 5 August 2014 at 11:56:28 UTC, Shammah Chancellor wrote:
> On 2014-08-04 04:19:01 +0000, deadalnix said:
>
>> On Saturday, 2 August 2014 at 22:48:35 UTC, Shammah Chancellor wrote:
>>> Also, it looks by using your fiber based scheduler that you can naturally parallize compiling.  Have you investigated that at all?
>> 
>> Obviously, yes. But that is quite tricky to get a deterministic result due to compile time features.
>
> I'm not sure what you mean.   Are you referring to things like pragma msg?

to things like mixin("mixin(`writeln ("Hello World");`");
August 05, 2014
On Tuesday, 5 August 2014 at 16:54:47 UTC, Stefan Koch wrote:
>> I'm not sure what you mean.   Are you referring to things like pragma msg?
>
> to things like mixin("mixin(`writeln ("Hello World");`");

```
bool foo() { ... }

template bar(bool cond)
{
    static if (cond)
        enum bar = "int a;";
    else
        enum bar = "int b;";
}

mixin(bar!(foo()));

pragma(msg, is(typeof(a)));
```

Good luck doing parallel semantic analysis :D I am sure deadalnix can give example much worse than that though.
August 05, 2014
On 2014-08-05 17:02:27 +0000, Dicebot said:

> On Tuesday, 5 August 2014 at 16:54:47 UTC, Stefan Koch wrote:
>>> I'm not sure what you mean.   Are you referring to things like pragma msg?
>> 
>> to things like mixin("mixin(`writeln ("Hello World");`");
> 
> ```
> bool foo() { ... }
> 
> template bar(bool cond)
> {
>      static if (cond)
>          enum bar = "int a;";
>      else
>          enum bar = "int b;";
> }
> 
> mixin(bar!(foo()));
> 
> pragma(msg, is(typeof(a)));
> ```
> 
> Good luck doing parallel semantic analysis :D I am sure deadalnix can give example much worse than that though.

They'd still work right.  The only thing I can think of that'd be annoying would be that independent functions would compile in a non-deterministic order.  So your errors and whatnot may display non-deterministically.

August 06, 2014
On Friday, 1 August 2014 at 23:16:45 UTC, Stefan Koch wrote:

> jsonRunner really runs fast ... io overhead really makes a diffrence

Correction I just checked the old runner and I found out the following:
sdc runs 7.5 times faster if all sourceFiles are compiled together.
(as dub does)
the slowdown is only visible if one compiles each file into an objectfile and then links it together.
(as the makefile does)
August 09, 2014
On Tuesday, 5 August 2014 at 17:02:28 UTC, Dicebot wrote:
> On Tuesday, 5 August 2014 at 16:54:47 UTC, Stefan Koch wrote:
>>> I'm not sure what you mean.   Are you referring to things like pragma msg?
>>
>> to things like mixin("mixin(`writeln ("Hello World");`");
>
> ```
> bool foo() { ... }
>
> template bar(bool cond)
> {
>     static if (cond)
>         enum bar = "int a;";
>     else
>         enum bar = "int b;";
> }
>
> mixin(bar!(foo()));
>
> pragma(msg, is(typeof(a)));
> ```
>
> Good luck doing parallel semantic analysis :D I am sure deadalnix can give example much worse than that though.

Yes, this kind of thing, and it can get much more nasty if you scatter the declaration in various scopes, or better in various modules.
October 05, 2014
I just updated my fork.

  https://github.com/UplinkCoder/sdc32-experimental

* test0037 passes now
  meaning that alias works in more cases

* I implemented foreach for Arrays
  though since ArrayLiterals are currently not supported this is not too helpful.

October 06, 2014
Updated fork again.
-m32 and -m64 switches work properly now.
sdc32 uses a the same default outputFile as dmd does.
Soon to come :
- ArrayLiterals
In planning :
- a new backend ;D
- Source-to-Source transformations