Who can make Phobos faster to import?

RazvanN razvan.nitu1305 at gmail.com
Wed Dec 27 10:40:38 UTC 2017


On Tuesday, 26 December 2017 at 15:38:14 UTC, Joakim wrote:
> On Tuesday, 26 December 2017 at 13:27:38 UTC, RazvanN wrote:
>> On Thursday, 21 December 2017 at 03:31:16 UTC, Joakim wrote:
>>> On Wednesday, 20 December 2017 at 18:21:33 UTC, Andrei 
>>> Alexandrescu wrote:
>>>> A tool (call it depend - heh) to automate that would be 
>>>> awesome. For example, this run would make all imported names 
>>>> explicit:
>>>>
>>>> depend --explicit *.d
>>>>
>>>> This run would push all imports down to the innermost scope 
>>>> of usage:
>>>>
>>>> depend --pushdown *.d
>>>>
>>>>
>>>> Andrei
>>>
>>> I'm on it.  I tried using a version of Seb's frontend library 
>>> yesterday but with the standard dmd main and tried running it 
>>> on std.stdio, but it asserted in asmSemantic because of an 
>>> asm block somewhere in druntime, so I'm back to using a 
>>> tweaked full dmd with the backend simply disabled again:
>>
>> I ran into the same issue. The problem was that currently the 
>> frontend
>> doesn't set the version identifiers. There's a PR which tries 
>> to fix it [1],
>> but if you want to go back at using the compiler library via 
>> Seb's interface
>> you just have to call this method [2] in the initialization 
>> step.
>
> I doubt that's it, as I noted I was running the standard dmd 
> main from mars.d.  More likely it tries to run asmSemantic on 
> an asm block in core.atomic and asserts because that function's 
> stubbed out when there's no backend.
>
>> Anyway I am working on this sort of tool also, so maybe we can 
>> unite our efforts.
>
> As in the `depend` import-scoping tool that Andrei wanted 
> above?  If so, that'd be great, as you know the frontend much 
> better than me.  I've been meaning to investigate how to 
> extract a scope tree from the frontend, as I've never done much 
> with dmd.
>
> Let me know how far you've gotten and what you want it to do 
> initially, and maybe I can pitch in with your effort.

Yes, that was the tool I was talking about. I was thinking that 
the first
version of the tool just outputs for each import what the used 
symbols are;
for example : if you import std.stdio and use 3 symbols from it, 
the tool will output "std.stdio: sym1, sym2, sym2" and then the 
programmer can update the code accordingly. After developing this 
initial version we can think on how to improve it.

For now, my tool only identifies imported non-templated 
functions, but I plan on adding support variables, types etc.

We can chat on slack more about this if you are interested.


More information about the Digitalmars-d mailing list