Wednesday, July 6, 2011

DXR alpha 2 release

I am pleased to announce a second alpha release of DXR. Several improvements have been made, including changes to the UI as well as better cooperation with macros. A complete list of changes can be found at the end. As this is the second release, I have expanded the live demo to include not one but two separate indexing trees: clang and mozilla-central, both of which are current as of last night.

The advantage of DXR is that it sees the source code by instrumenting the compiler at build time, so it is able to understand classes most of whose methods are defined by macros, like Clang's RecursiveASTVisitor. Like any source code browser, it is possible to click on an identifier and then go see information about the identifier, such as its points of declaration, or its definition. Unlike LXR and MXR, however, it knows what type of identifier it's working with, so you won't be offered the definition of BuiltinType::getKind if you look up the getKind method of an Expr object.

Another new feature is support for plugins, to allow people to use different compilers, add in support for more languages, or even augment the UI with new features like capturing line-coverage information. The current support is rudimentary, but there is already active work on a dehydra-based indexer.

A list of new features:

  • Improved search speed at runtime, and dropped glimpse as a prerequisite
  • The web UI works in newer versions of Firefox
  • Support for plugins has been added
  • Disk space requirements have been radically reduced
  • Setup configuration is easier
  • Link extents have been fixed in many cases
  • Declarations can now be seen along with definitions
  • Macros can now be browsed like source code

3 comments:

James Napolitano said...

Would it be possible/useful for DXR to export ctags information?

Joshua Cranmer said...

It is possible in theory, but I haven't tried it. You can download an sqlite of the database (like mozilla-central), so you can use that in a python script to emit the ctags information.

skierpage said...

Move the cursor slowly upwards between two source code lines and at one pixel the highlight endlessly bounces between them. When highlighted the lower line is vertically squished slightly, maybe that makes it move out of the highlight area, and somehow it flickers back and forth. It's cool, but distracting ;-). Happens in Firefox nightly and SeaMonkey 2.2 - "Mozilla/5.0 (X11; Linux x86_64; rv:8.0a1) Gecko/20110711 Firefox/8.0a1" and "Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20110619 Firefox/5.0 SeaMonkey/2.2"