Monday, May 23, 2011

Summer DXR work

So, far this summer, I will be mostly putting away Thunderbird work and will instead be focusing my attention on reviving DXR. Sometime this week, I expect to be updating the installation on dxr.mozilla.org (simply so I can match up better on DXR to what I'm doing locally).

What will I be doing on DXR? First and foremost, I will be making it easier to run DXR on anything that is not Mozilla. Or anything that is Mozilla, for that matter. This will be done by cleanly separating the build/instrumentation steps from the rest of DXR. In other words, setting CC/CXX/LD/etc. should be all you need to do build your program.

After that, I will be working on using Clang to get information instead of using gcc+dehydra. If I understand the current Apple development process, supporting clang is essential to supporting Mac OS X builds in the future. I will also work on getting IDL and JS support added.

One other thing I want to do is (time permitting) to get DXR to represent the results of different builds, so that you can get results other than just the current Linux build. I have a list of other ideas to play around with, but I'll leave that for later, since I don't know if I'll time to start them or not.

Don't expect dxr.mozilla.org to see all of the new features immediately. I'll update when I feel like it (i.e., I see enough stability to do it), and it's easier for me to work more locally on my laptop. I also find it easier to do rapid updates on a smaller project than Mozilla which takes quite some time to do clobber rebuilds; I don't know which project(s) I'll be using for all of my work yet, so don't bother asking.

4 comments:

kairo said...

Why is everyone all the rage about LLVM/clang? LLVM/clang is the webkit of compilers, just controlled by Apple instead of Google - and Apple only prefers it because its licensing allows them to heavily build on software patents, while gcc embracing GPL means they's run into clashes with GPLv3 patent-legalese and they don't want us to use "their" patents. That alone is reason enough for me to avoid LLVM and embrace gcc...

James Napolitano said...

I wonder, would it be better to build on top of a project like OpenGrok than for Mozilla to do so much work building/enhancing its own cross reference tool?

Joshua Cranmer said...

@kairo: Clang is necessary to support Apple in the future, and I've also been told that Clang keeps better track of location positions.

@James: From what I can tell, OpenGrok uses exuberant-ctags to get its information, which is pretty much a non-starter for Mozilla's needs: we have to be able to understand what goes on underneath macros. In other words, anything short of a full compiler front-end is insufficient to handle what we need.

jmdesp said...

That's great ! I tried to leave a comment on your previous post (it failed in blogger twice, and I gave up rewritting it) about how I thought dxr has a lot of untapped potential, and what you should really do was to put it on github, and that's just what you've.

It would be good to have a wish-list for dxr, so that people can take on of the item in the list. I'd personally love to use dxr with java. I should check the state of the current code, but there seemed to be quite a few bug in the instance that was on-line last year, so one item could be to enhance it's state.