Thread overview
[spec, CC Dibyendu Majumdar] Should static foreach be in under "conditional compilation"?
May 18, 2019
Mr. Spec
May 18, 2019
Mr. Spec
May 19, 2019
Max Haughton
May 19, 2019
Dibyendu Majumdar
May 19, 2019
Max Haughton
May 19, 2019
Dibyendu Majumdar
May 18, 2019
As Dibyendu Majumdar has been working on fixing the spec (BTW thank you so much), I wanted to bring this up:

I just realized that static foreach is under the "conditional compilation" section in the spec (https://dlang.org/spec/version.html). It seems like this should be put somewhere else, because static foreach is not related to conditional compilation.

Thoughts?
May 18, 2019
On Saturday, 18 May 2019 at 23:37:28 UTC, Mr. Spec wrote:
> As Dibyendu Majumdar has been working on fixing the spec (BTW thank you so much), I wanted to bring this up:
>
> I just realized that static foreach is under the "conditional compilation" section in the spec (https://dlang.org/spec/version.html). It seems like this should be put somewhere else, because static foreach is not related to conditional compilation.
>
> Thoughts?

Maybe it isn't just that static foreach should be moved, but maybe just change the page title from "Conditional Compilation" to something else that could contain compile time features such as version, debug, static assert, etc?
May 19, 2019
On Saturday, 18 May 2019 at 23:39:55 UTC, Mr. Spec wrote:
> On Saturday, 18 May 2019 at 23:37:28 UTC, Mr. Spec wrote:
>> As Dibyendu Majumdar has been working on fixing the spec (BTW thank you so much), I wanted to bring this up:
>>
>> I just realized that static foreach is under the "conditional compilation" section in the spec (https://dlang.org/spec/version.html). It seems like this should be put somewhere else, because static foreach is not related to conditional compilation.
>>
>> Thoughts?
>
> Maybe it isn't just that static foreach should be moved, but maybe just change the page title from "Conditional Compilation" to something else that could contain compile time features such as version, debug, static assert, etc?

To be rigorous, ideally the spec should abstract the process of execution into discrete steps, one of which would contain the compile time features of D (i.e. Expand all static foreach-s into rigorously defined D, but the actual lowering of this would be handled by a different chapter of the specification.
May 19, 2019
On Saturday, 18 May 2019 at 23:39:55 UTC, Mr. Spec wrote:
>> I just realized that static foreach is under the "conditional compilation" section in the spec (https://dlang.org/spec/version.html). It seems like this should be put somewhere else, because static foreach is not related to conditional compilation.
>>
> Maybe it isn't just that static foreach should be moved, but maybe just change the page title from "Conditional Compilation" to something else that could contain compile time features such as version, debug, static assert, etc?

I haven't progressed beyond introduction yet so it will take me a while to get to that section. Perhaps you are right that the title needs to be changed.

Regards


May 19, 2019
On Sunday, 19 May 2019 at 01:27:12 UTC, Max Haughton wrote:
> On Saturday, 18 May 2019 at 23:39:55 UTC, Mr. Spec wrote:
>> Maybe it isn't just that static foreach should be moved, but maybe just change the page title from "Conditional Compilation" to something else that could contain compile time features such as version, debug, static assert, etc?
>
> To be rigorous, ideally the spec should abstract the process of execution into discrete steps, one of which would contain the compile time features of D (i.e. Expand all static foreach-s into rigorously defined D, but the actual lowering of this would be handled by a different chapter of the specification.

I guess this is a tricky area. Is there any document that covers the steps - i.e. when do the compile time modifications occur in the compilation process? Do they occur repeatedly or only once?

Regards
May 19, 2019
On Sunday, 19 May 2019 at 09:37:17 UTC, Dibyendu Majumdar wrote:
> On Sunday, 19 May 2019 at 01:27:12 UTC, Max Haughton wrote:
>> On Saturday, 18 May 2019 at 23:39:55 UTC, Mr. Spec wrote:
>>> Maybe it isn't just that static foreach should be moved, but maybe just change the page title from "Conditional Compilation" to something else that could contain compile time features such as version, debug, static assert, etc?
>>
>> To be rigorous, ideally the spec should abstract the process of execution into discrete steps, one of which would contain the compile time features of D (i.e. Expand all static foreach-s into rigorously defined D, but the actual lowering of this would be handled by a different chapter of the specification.
>
> I guess this is a tricky area. Is there any document that covers the steps - i.e. when do the compile time modifications occur in the compilation process? Do they occur repeatedly or only once?
>
> Regards

Probably not: The semantic analysis parts of the frontend (conceptually) have to jump backwards and forwards because of the string mixins (at the very least).

The specification should not make any real preference as to how the language is implemented, only specifying the exact semantics while leaving enough room for libraries to actually be implemented. This is probably too much to ask for at this stage, however the current behaviour of certain constructs (e.g. Structs) are underspecified e.g. moving, which need to be fixed more than the specification as a whole.