Things I’ve Learned
Wednesday, May 27th, 2009Things I’ve learned recently:
- Using hg log on a file that was removed will not list the revision in which the file was removed. You want hg log --removed.
- Waist Watcher sodas are sweetened with Splenda, but don’t have the metallic taste that some other diet sodas do. I especially like the Citrus Frost (grapefruit) flavor. It’s like Fresca without the hidden Aspartame. (I have bad digestive reactions to Apartame.)
- Linking libxul on my Linux machine takes between 3 and 10 seconds, but apparently this is unusual. Several other people have reported link times that can range into the minutes. I recommend buying as much RAM as you can: if your entire object directory fits in the filesystem memory cache, build speed is much faster.
- When Microsoft Visual C++ mangles function symbols, the return type is encoded in the mangled name. When GCC mangles names, the return type is not encoded:
GCC MSVC int testfunc(int) _Z8testfunci ?testfunc@@YAHH@Z void testfunc(int) _Z8testfunci ?testfunc@@YAXH@Z
This means that separate functions in different translation units may not differ only by return type. We found this trying to combine the Chromium IPC code with Mozilla:
const std::string& EmptyString()
andconst nsAFlatString& EmptyString()
differ only by return type. On Windows this links correctly, but on Linux this causes multiple-definition errors.