Saturday, December 08, 2007

Break Changes in VC9

I've been using VC9 (Orcas, or 2008) for a couple of weeks. Well, let's just say maybe newer is better. Here lists some break changes in VC CRT. The list is not complete, at least in my experience of building a number of open source packages. VC CRT misses a bundle of POSIX headers (e.g. stdint.h) and functions (too many!), and it's likely sticking to this tradition. Er, I'd rather say it's also improving. Some packages using libxml may fail to compile on VC9 due to one of the improvements: libxml defines a macro vsnprintf to _vsnprintf for VC (why adding the underscore!), but VC9 provides both functions while previous versions only provide the latter. So the macro redefinition would cause trouble on VC9.

It's said that the next VC release will start using Phoenix as the backend engine. That's good news. But I don't really feel good about the Phoenix IR. Why is it so complicated as most other Microsoft products are? It's ugly. It's hard to analyze and understand. It's even not complete; much important information remains missing in current release. Though it might be a better choice to evaluate analysis algorithms on Java code, I'd rather take C/C++ code as the first choice because most systems are still written in C/C++. I just wish next release of Phoenix SDK targeting on VC9 backend would come up soon, though I could build it from scratch myself.

No comments: