2 Jul 2000 »
Mozilla M16 is a little dodgy, and prefers seg faulting on CNN’s space page (argh!) but it’s better than what Helix Gnome did to my Suse-provided Netscrape: bus faults as soon as I launch the sucker. oh well. There’s always IE on my laptop 🙂
Mozilla is getting usuable at last. Still way too slow compared to native implementations (IE on the same hardware with only one of the processors churning rather than two is substantially faster than Mozilla under Linux).
Reinventing the wheel
rconover discusses how he “discovered” a way to do RTTI, but in C. That’s been standard fare for a while, I’m afraid, and it’s how many C stackguard checkers like electric fence work, but using hardware assistance rather than just a simple “canary” value alone (which can be overwritten with possibly the “correct” value ID for another type you’re happy to deal with.
As a person involved in XFree86, I don’t want to descend into “C++ is better than C” but it aggravates me to see things like vtables, subclassing and RTTI reinvented to make up for clear deficiencies with a language like C. If you look at XAA and the new metro loader, XFree86 is extending C to places it can barely go (I dare new C programmers to make significant additions to either technology without breaking ABI compatibility).
XAA in particular could probably be sped up for both compiling, running and speed of writing new modules if it were re-written in C++. Good C++ compilers get the gist of what you’re trying to do when you subclass and fill in non- overloaded methods, and can optimize it out so there’s little or (in most cases) no speed penalty if not a little speed boost due to the lack of a vtable lookup compared to a function pointer lookup. C doesn’t get a chance to do that and you lose type protection when you cast to void * and do all the funky stuff required to provide oblique data references and function pointers.
If you want to see my C++ is faster than C example, see BeOS. It’s the fastest booting OS I’ve ever used that’s not ROM based (such as N64 or BBC Basic). A Linux kernel with just enough drivers to run my machine takes a good 1.15 to boot into gdm (compared to BeOS’s 10-15 seconds), and Windows 2000 takes over 2 minutes.
that’s my rant for the day. Right tool – right job.
2 Jul 2000 »
The hassles of PCMCIA desktop adapters. The one that Dan C bought to host our gateway’s Wavelan is a PC Card -> ISA device and is PNP. I’ve spent most of this weekend trying to get Linux’s PC Card drivers (pcmcia-cs-3.1.17) to work with it. The problem is that pcmcia-cs requires the cards to be at IRQ 10,11 or else it can’t find it, plus much additional magic to detect my card. Due to IRQ sharing and my PCI bios, I have two devices at IRQ 10 (matrox, tulip) after interrupt sharing and one device (eepro100) at irq 11. Intel Standard Architecture is just so braindead at times.
The reason for stuffing around is that the host box has 6 gig of disk space, and I want it to be the gateway and server for my home network rather than Dan’s alpha. It was running NetBSD-current boot floppy (!) and working as a gateway, but I wanted nfs, dhcp, dns, router, and ip filter on that box.
I tried for two days to get Suse 6.4 + latest pcmcia working and it just doesn’t work, even after extensive tweaking. I download the latest NetBSD 1.5 snapshot, and the boot floppies make wi0 just turn up. I configured the interface and it works! ARRRGH this is a case why separate userland utilities and externally delivered pcmcia modules will never beat an integrated approach. I wondered why Linus doesn’t like these big updates, and now I understand completely.
In addition, the bus stuff on NetBSD is a delight to use and configure. If only Linux had this sort of forethought put into it.