What to do with Descent?

Ary Borenszweig ary at esperanto.org.ar
Thu May 6 08:10:28 PDT 2010


Jacob Carlborg wrote:
> On 5/5/10 21:29, Arlo White wrote:
>> I just played with dmd 2.045 and Descent yesterday for the first time.
>> Yes Descent is a bit buggy (couldn't get builds or context-assist
>> working), but I still stuck with it because I'm familiar with Eclipse
>> and none of the other D editors looked that mature either (or weren't
>> available for Linux).
> 
> You can build a project (with external tools). Context-assist should work.

Not sure it works with dmd 2.025, though.

> 
>> As someone mentioned, it's much easier for people to learn a new
>> language if they don't have to learn a new IDE at the same time. Eclipse
>> is a pretty solid platform to build on and a lot of people are familiar
>> with it. If D expects to be a popular programming language an Eclipse
>> plugin is almost a necessity.
>>
>> True, not many people use Descent now, but if/when D becomes popular a
>> lot of people will want a good Eclipse plugin, and you'll want to be
>> ready for them, which means having Descent ready when D2 is.
>>
>> I'm surprised that the language updates can't be automated, but I'm not
>> familiar with how Eclipse does language syntax under the hood.
> 
> For Java Eclipse uses the built in incremental java compiler as far as I 
> know. For D the DMD frontend is translated into Java and somewhat 
> modified, adding caches and similar, the DMD frontend is not made for 
> this kind of things. Then the frontend also needs to integrated with the 
> existing Eclipse APIs

Yes, exactly. The tasks when a new D version comes out are:
  - Update the lexer/parser and basically port the diff between the 
version to Java and Descent.
  - Update the public AST (read below...)
  - Check which small features the IDE can provide with these new 
features. For example if there's a new keyword, autocompletion of it 
must be checked. Another example: when alias this was introduced 
autocompleteion offered completions of the aliased symbol.

That's basically it. The problem is, the last ported version is like 2.030

http://www.dsource.org/projects/descent/browser/trunk/descent.core/src/descent/internal/compiler/parser/port.txt

And diffs between each version are huge, it takes a lot of time to do 
it. Frank Benoit started working on a tool to more or less automate this 
process, but I don't knnow what happened with that.

But the real problem is that I don't want to do it. I don't want to 
spend time on it. I'm a little tired of it.

Maybe another problem is that Descent want to do a lot of things, but 
it's very hard to do it (specially if not many people are working on the 
project)

> 
>> If the task is really that menial maybe it could be automatically
>> divided up and farmed out to volunteers?

Yes, the diff can be splitted into several people.

>>
>> Could you add a page to your wiki describing the problem you're having
>> keeping up with the language and some examples of how a D language
>> change translates to a Descent change. Also, show why it's hard to
>> automate. Then post a link here and maybe some people can look at the
>> problem and give you ideas on how to automate it or divide up the task.
> 
> I've answer most of this in the above answer, you can also look at: 
> http://www.dsource.org/projects/descent/wiki/Development

That page is a little outdated, but most of what it says is correct. The 
implementation details defer (for example there's no IModule, that was a 
first approach).

> 
>> I would be willing help you out if you can describe what I need to do
>> and where the code is. I downloaded the descent.core source, but there's
>> a lot in there and I'm not even sure where the D language stuff is.

The port is here:

http://www.dsource.org/projects/descent/browser/trunk/descent.core/src/descent/internal/compiler/parser/

This is the public AST (different from the port in that it contains more 
useful information for the IDE, and in a homogeneous way):

http://www.dsource.org/projects/descent/browser/trunk/descent.core/src/descent/core/dom

Thanks for wanting to help! I can give info on how to modify the project 
and make it grow, coding a little, but I'm not sure I will spend lots of 
time on it from now on.


More information about the Digitalmars-d-ide mailing list