Monday, January 21, 2013

DXR's future potential

The original purpose of DXR, back when the "D" in its name wasn't a historical artifact, was to provide a replacement for MXR that grokked Mozilla's source code a lot better. In the intervening years, DXR has become a lot better at being an MXR replacement, so I think that perhaps it is worth thinking about ways that DXR can start going above and beyond MXR—beyond just letting you searched for things like "derived" and "calls" relationships.

The #ifdef problem

In discussing DXR at the 2011 LLVM Developers' Conference, perhaps the most common question I had was asking what it did about the #ifdef problem: how does it handle code present in the source files but excluded via conditional compilation constructs? The answer then, as it is now, was "nothing:" at present, it pretends that code not compiled doesn't really exist beyond some weak attempts to lex it for the purposes of syntax highlighting. One item that has been very low priority for several years was an idea to fix this issue by essentially building the code in all of its variations and merging the resulting database to produce a more complete picture of the code. I don't think it's a hard problem at all, but rather just an engineering concern that needs a lot of little details to be worked out, which makes it impractical to implement while the codebase is undergoing flux.

Documentation

Documentation is an intractable unsolved problem that makes me wonder why I bring it up here…oh wait, it's not. Still, from the poor quality of most documentation tools out there when it comes to grokking very large codebases (Doxygen, I'm looking at you), it's a wonder that no one has built a better one. Clang added a feature that lets it associate comments to AST elements, which means that DXR has all the information it needs to be able to build documentation from our in-tree documentation. With complete knowledge of the codebase and a C++ parser that won't get confused by macros, we have all the information we need to be able to make good documentation, and we also have a very good place to list all of this documentation.

Indexing dynamic languages

Here is where things get really hard. A language like Java or C# is very easy to index: every variable is statically typed and named, and fully-qualified names are generally sufficient for global uniqueness. C-based languages lose the last bit, since nothing enforces global uniqueness of type names. C++ templates are effectively another programming language that relies on duck-typing. However, that typing is still static and can probably be solved with some clever naming and UI; dynamic languages like JavaScript or Python make accurately finding the types of variables difficult to impossible.

Assigning static types to dynamic typing is a task I've given some thought to. The advantage in a tool like DXR is that we can afford to be marginally less accurate in typing in trade for precision. An example of such an inaccuracy would be ignoring what happens with JavaScript's eval function. Inaccuracies here could be thought of as inaccuracies resulting from a type-unsafe language (much like any C-based callgraph information is almost necessarily inaccurate due to problems inherent to pointer alias analysis). The actual underlying algorithms for recovering types appear known and documented in academic literature, so I don't think that actually doing this is theoretically hard. On the other hand, those are very famous last words…

28 comments:

Verona said...

This is cool!

Jim Rhodes said...

What can you say about this potential now? And what's your opinion on this career goals essay service? Have you tried it?

Online Assignment Help said...

We have a solid group of Arts experts who strict follow the questions and afterward present a completely explored Arts Assignment Help. With Arts Assignment Help Students don't just present their essays on time, but are likewise ready to score astounding imprints from the teachers. We comprehend that sometimes it gets difficult to finish assignments because of absence of time and the weight of finishing different assignments also. Dealing with each subject simultaneously isn't a simple errand and that is the reason Assignment Help offers the best Arts Assignment Help to each student.

singapore assignment help said...

I really enjoyed reading your blog, you have lots of great content: do my assignment

UAE Assignment Help said...

If you want to get higher grades in your university. It's only when possible then you complete your assignment within the deadline and with good writing skills, if you don't do all that, then you can't get a good score in your exam. So in this circumstance, you should hire an assignment helper to write your assignment within the deadline. You can hire a top-quality helper from UAE assignment help. UAE assignment help agency maintain their privacy.

Ekta said...

Thanks for sharing awesome blog post, I read the whole stuff. To get more info about pharma consulting services, visit below.

dietary supplements FDA
FDA ANDA US
510k medical device expert
Pharmacovigilance Consulting services

kristianroger said...

Building a gun that excites you and shows who you are. customize your ar 15to be a part of yourself. At first, Choose your upper receiver .Get to know your lower receiver. Customize your grip as per your need. Select the texture of your gun for the style and grip. Choose the optics and sights and lights. Pick your hand guard and your barrel side by side. Choose your trigger. Upgrade your stocks and charging handle.

Rachel Bilson said...

It’s always my passion to write creative articles. Have worked on a lot of innovative and interesting topics. Read it and it’s informative. Recommend you to provide your feedback & suggestions to work on more titles. Contact me or reach me if you would like to know more about my profile on Peacock TV on Roku | Peacock TV App

RokuPrivateChannel said...
This comment has been removed by the author.
streaming service phone number said...

thanks for sharing the excellent informative blog foxsportsgo com activate

Peter Hector said...

Activate Xfinity service using the portal, xfinity.com/activate to start streaming. The process is easy, you can collect the code. Then enter the code by navigating to the URL, xfinity.com/activate. To understand the process in detail, let me suggest an article titled xfinity.com/activate process.

Randy said...


I became a big admirer after reading the latest blog post on your portal. I could learn how to activate Roku, create Roku account, add Roku channels, troubleshoot errors, Roku software update process, Network setup and much more. The guidelines are short and easy to understand It will be useful if you can provide the Roku Error code

Peter Hector said...

If you are a Sports lover, activate Fox Sports channel to pick the top shows such as NASCAR on Fox, Skip and Shannon, Speak for Yourself, NASCAR race hub, Fox College football, The Ultimate Fighter, WWE Smack Down and much more. To begin Fox Sports channel activation, collect the code for activation. Enter the code by visiting the page, activate.foxsports.com . For help and support, please contact our Printer support right away.

Epsonprintersupport said...

Are you ready to start 123.hp.com/setup? Let me suggest an article to read. Read the post a few days back. I could find 123.hp.com/setup steps, software installation procedure, troubleshooting guide to fix setup issues. It will be useful if you can suggest the latest Printer models available in the market today.

David williams said...

Read your blog post titled, How to activate Roku using Roku.com/link. I could find the steps to activate Roku, create a Roku account, collect the Roku activation code and update Roku device software. Also, I felt easy to complete Roku.com/link activation. Let me mark the best review rating for your blog post
It will be useful if you can post Roku channel activation blogs.

Viola Davis said...

It's easy to stream the blockbuster movies and shows on HBO max. Do you need to know how to watch hbo max on roku? Follow these simple steps: Navigate to the Channel Store on your Roku device. To find HBO Max, use the search option and choose it from the list of resultant app. Hit Add Channel. Launch the HBO Max Channel app after installing it on your Roku device, and then select Start Free Trial or Subscribe Now. After entering the necessary details, click Create Account. Fill in your payment information and choose your subscription on a monthly or annually basis. Click Subscribe or Start My Free Trial when you're finished. You may now start watching everything HBO Max has to offer.

Elisa Doris said...

I’m impressed after reading your article titled, How to execute 123 HP Setup . I could easily understand how to begin 123 HP Setup . The setup steps are clear. I like the creative writing style as well. Keep up the good work.

Anonymous said...

https://shahrwp.com/rond-rep/
There are three main things to look for when searching for a low-cost mobile phone:

Elisa Doris said...

Are you unaware of setting up your printers, install the drivers or software? Here are the easy steps to set up, install the drivers or software, or update your HP printers' software. Power on your printer and PC, then connect them to the internet. And, visit
123.hp.com/setup and choose the printer model. Click the following button. Then, install the HP smart app on your PC or smartphone. Follow the on-screen instruction and create an HP account. Register your printer and add the printer to your PC or smartphone and install the drivers and software. Now, you can print, fax, scan, copy a file. To know more about setting up the printer, install the drivers or software to your HP printers using 123.hp.com/setup . Please contact our customer support.

adamparker said...

Wonderful blog post titled, how to scan on hp DeskJet 3752
I’m impressed after reading your post. I could learn 123.hp.com/setup printer. Your style of writing is excellent. Let me mark the best review score for your blog post
Great job. Keep posting more blogs

adamparker said...

Let us help you to execute hp dj 2300 setup and resolve the setup errors that pop up. You can read the blog post titled how to troubleshoot 123.hp.com/setup. If the guidelines are clear; begin the Printer setup right away. Also, provide your feedback after reading the blog

adamparker said...

How to execute 123.hp.com/setup?

To learn How to execute 123.hp.com/setup, follow the instructions below
1. Unpack the device from the package
2. Locate the port on your Printer to connect the necessary cables
3. Then turn the Printer ON
4. Access the Printer control panel
5. Choose the compatible connection methods such as WPS or Wireless setup wizard
6. Then run the onscreen commands to activate the network
7. Finally, add Windows or Mac computer to start operating the printer
8. Fix 123.hpcom/setup issues if you come across any
Please reach out to our network support for http://www.123hp-com.com assistance

adamparker said...

How to execute 123.hp.com/setup?
Let us explain how to execute 123.hp.com/setup. To start the setup, connect the necessary cables. Then turn the printer ON. Now execute the first-time setup. You can load the paper into the input tray. Also, position the Cartridge. Now to activate the network, we suggest the connection modes such as WPS or Wireless setup wizard. After choosing the settings, run the onscreen commands that appear. Finally, add the devices such as Windows or Mac. 123.hp.com/setup is complete. Contact our Printer support for assistance

meysammmm said...

 به طور کلی، برای جلوگیری ریزش مو ابتدا لازم است به یک دکتر متخصص پوست و مو مراجعه کنید، تا با انجام آزمایش علت ریزش موی شما مشخص شود تا بهترین روش برای درمان ریزش موی شما مشخص شود.  https://namnak.com/hair-loss.p77746

Leo Oliver said...

Our Geography Assignment Help Service is available at all times. To provide you with Geography online assignment assistance, Our Geography Assignment Experts always available Our Geography professionals can help academic students get a higher level of training by assisting them with Geography and other topics assignments.

David williams said...

Thank you for sharing the blog post titled, How to activate Roku using the page, Roku.com/link. I like your style of writing. Now I'm interested to explore the field of business blogging. It will be useful if you can provide me some ideas to write creative blogs
I’m happy to mark the best review rating for your blog post
Keep posting more interesting blogs and keep up the good work

Unknown said...

The best time machine for organizations with more than 100 employees, face or fingerprint time machine? Nanotime provides a variety of traffic control devices and dedicated software. Website address www.nanotime.ir

Assignment Writing Service said...

Great Post.

Art Assignment help, can deliver well-researched and well-written assignments that meet high academic standards.