DMD 1.038 and 2.022 releases

Yigal Chripun yigal100 at gmail.com
Sat Dec 20 12:16:31 PST 2008


Ary Borenszweig wrote:
> Lars Ivar Igesund escribió:
>> Yigal Chripun wrote:
>>
>>> Denis Koroskin wrote:
>>>> On Sat, 20 Dec 2008 20:41:23 +0300, Yigal Chripun <yigal100 at gmail.com>
>>>> wrote:
>>>>
>>>>> Denis Koroskin wrote:
>>>>>> On Mon, 15 Dec 2008 10:58:23 +0300, Bill Baxter <wbaxter at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> For me, V1.038 compiles my code but takes a really really really
>>>>>>> long
>>>>>>> time to do so.
>>>>>>>
>>>>>>> It now takes 1 min 20 secs for a full build, when it used to compile
>>>>>>> in 13 seconds.
>>>>>>> Forget the 60% slowdown from LDC -- this is 515% slower!
>>>>>>>
>>>>>>> (building with DSSS and tango)
>>>>>>>
>>>>>>> --bb
>>>>>>>
>>>>>> I generally make all my imports private and run a command line tool
>>>>>> that strips unnecessary imports once in a while to minimize
>>>>>> intermodular dependencies. Maybe it could help in your case, too?
>>>>> When programming in Java, Eclipse knows to handle all of this for you.
>>>>> it will suggest adding missing imports, it can remove unused imports
>>>>> and it can convert a foo.bar.* into a list of the specific modules you
>>>>> actually used in the code.
>>>>> I wish that kind of tool would be available for D. Is this
>>>>> functionality implemented in descent? if not, is it planned?
>>>>>
>>>>> I do realize that it's more difficult to do this for D than it is for
>>>>> Java, because of Conditional compilation and other issues already
>>>>> mentioned in this thread. But it would be awesome if I could just
>>>>> write:
>>>>>
>>>>> Stdout("whatever").newline;
>>>>>
>>>>> and get a quick-fix action (Ctrl+1) to add tango.io.Stdout to the list
>>>>> of imports.
>>>>>
>>>>> --Yigal
>>>> You should watch Descent videos on youtube, it is *much* smarter that
>>>> that!
>>>>
>>>> http://www.youtube.com/user/asterite
>>> I watched the video.
>>> the functionality is that if you write: new Foo; it added automatically
>>> an import for Foo. that's very cool and all but I was asking for
>>> something more than that.
>>>
>>> for Java, Eclipse can add and manage imports for you not only when you
>>> do new Somthing() but also for functions - like recognizing that
>>> Stdout("string") needs to import tango.io.Stdout. More over, if you
>>> wrote some of the imports yourself, or edited some code and removed the
>>> only call to some function, you can ask eclipse to orginize your imports
>>> and it'll remove unneeded imports and expand Java's Foo.* kind of import
>>> to a list of the actual modules the code needs.
>>>
>>> Descent is a great project and I want to thank all the developers
>>> involved in this great undertaking. All I'm saying is that it would be
>>> nice to also have an "organize imports" function in Descent.
>>
>> And you know for certain that it doesn't have this?
>>
>
> Yigal is right, Descent doesn't have that kind of functionality.
>
> As I mentioned before, you'd need to try every possible
> conditional-compilation setup combination to see which are the unused
> imports.
>
> Also, when I first implemented it, I thought about adding selective
> imports in autocompletion, so that:
>
> ---
> void foo() {
> writefln| <-- autocomplete!
> }
> ---
>
> results in:
>
> ---
> import std.stdio : writefln;
>
> void foo() {
> writefln(...)
> }
> ---
>
> and successive uses of symbols in std.stdio would add to the selective
> import, but many people told me that selective imports have some
> problems (I can't remember which were them right now).

Sounds awesome. if those problems (DMD bugs?) can be overcome, this 
would be one of my favorite features in descent.
what about a compromise? for the sake of unused import elimination 
assume that all possible versions are used. it's not that far off..
suppose I have:

import Foo;
import Bar;

version (foo) {
  // use symbols from Foo here
}

version (bar) {
  // use symbols from Bar here
}

removing either of the imports will be bad.
more advanced functionality would be to move the imports to inside of 
the version blocks.
I haven' t thought this through yet, but even some of this would be 
extremely useful. even if you just implement adding missing imports (and 
requiring me to remove redundant imports myself manually).

Keep on the good work, and thanks for an awsome and very useful project!

-- Yigal



More information about the Digitalmars-d-announce mailing list