Finally, he asked what everyone thought about including Phobos in the dmd/druntime mono repository. He said he'd seen no good reason not to [in the forum thread he'd started](https://forum.dlang.org/thread/[email protected]). Iain said that from his perspective, DRuntime and Phobos are the same thing anyway. Mathias voiced support for it. Robert said that if it happened, the first thing he'd do is replace some instances of `filter` with the Phobos version, as he thinks we should be using Phobos in DMD anyway. (Note that no final decision was made here.)

When I type dmd into my browsers search bar this is what it suggests:

dmd/druntime at master · dlang/dmd · GitHub

Not very compiler related now is it ;)

__Template lowerings in CTFE__

One problem he'd discovered was that the semantic routines take several constructs and lower them to templates. They do that even when running in CTFE. Those templates can generate a lot of bloat. In CTFE, it should not do the lowering. CTFE finds it much easier to interpret the higher-level code. Upon investigation, he found that CTFE reverses some of the lowerings so that it can interpret them. If you're doing certain things in CTFE like array concatenation, you're suffering from a lot of invisible template bloat. That needs to be fixed. He was about halfway through it. He was looking at all the lowerings and rewriting them so that the lowering isn't done in CTFE. He hopes that this is another step in reducing the problems with memory consumption and slow CTFE speeds. He also hoped to be able to remove the "lowering unwinding" that goes on in the interpreter.

Iain noted that in [the PR rewriting the  `_d_newclass` runtime hook to a template](https://forum.dlang.org/post/[email protected]), he'd noticed the same thing Walter had just described. He got the author to change things such that rather than doing this lowering->unlowering->relowering thing, the rewrite is put into a field called `lowering`, leaving the original node intact. When you go through CTFE, you just work on that node specifically. Then once you're in codegen, you hit that node and go into the `lowering` field. Walter said that wasn't done with the other rewrites, but Teodor Dutu and Razvan plan to go back and change them (here's [an example of work done toward that end](https://github.com/dlang/dmd/pull/14985)). Walter said this will also be a big win for allowing more expansive use of CTFE in BetterC.

Good to see my priority two for the year is getting some work done towards it by happenstance.

Now, if only we could get a compiler adjacent library to contain the hooks so nobody writing custom runtimes has to write them moving forward... That and getting them all in the same place has other benefits like faster compiles!
  • D Language Fo... Mike Parker via Digitalmars-d-announce
    • Re: D La... Richard (Rikki) Andrew Cattermole via Digitalmars-d-announce
    • Re: D La... bachmeier via Digitalmars-d-announce
      • Re: ... Walter Bright via Digitalmars-d-announce
        • ... Atila Neves via Digitalmars-d-announce
    • Re: D La... Dukc via Digitalmars-d-announce
    • Re: D La... Dukc via Digitalmars-d-announce
    • Re: D La... Dukc via Digitalmars-d-announce
    • Re: D La... Nicholas Wilson via Digitalmars-d-announce

Reply via email to