Ray,
I looked at Allen's sourceforge site. It is a curious collection of "bits and pieces".
I don't have any specific libraries for doing the equivalent of analogWrite, generally I just set up the timers by hand. Once you've done it a couple of times it's not that hard, and you get better control. I've put all the bits and pieces I've written on sourceforge, at ABAVR download | SourceForge.net
There are many problems with the Arduino software but it's not as bad as you suggest. I admit that I have rewritten some of it for my use.
Allen is just wrong in his analysis of Arduino system.
Allen claims this program takes 10k of flash.
#include "WString.h"
int main(void) {
String bloat = "hello world";
return 0;
}
/opt/avr-gcc/bin/avr-size build/test.elf
text data bss dec hex filename
10194 20 5 10219 27eb build/test.elf
Can that really be right? 10K for a one-line program? Unfortunately it is. Any mention of String pulls in the entirety of the class, as well as all the other avr-libc routines it references. So on a Duemilanove that only has 32k to start with, a third of the available memory is gone before you start.
Most of the "Bloat" is removed by the linker so the real size of the program is 1574 bytes.
Binary sketch size: 1,574 bytes (of a 32,256 byte maximum)
The String class uses dynamic memory so all the C++ creator overhead with malloc, free, and realloc is loaded. This overhead will not be loaded with other C++ classes.
Most of the things Allen claims to be bugs are not.
For example this analysis of HardwareSerial is wrong. The write routine works correctly, you can implement a queue between a producer and consumer without locks on AVR.
Oh dear. head and tail are declared as int, i.e. 16 bits, 2 bytes. They are accessed by both the write routine and the interrupt service routine that actually transmits the data yet there's no locking in the write routine so the accesses aren't atomic.
Arduino is a hobby system and many thousands of users are happy with it. I don't think Alan Burlison has anything to offer to the average Arduino user.