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