I've been through an emotional rollercoaster lately... pleased when I got my Raspberry Pi working (using the recommended Raspian distro); happy when I saw how nicely it boots up and has all the basics, including a nice clean X environment; absolutely thrilled when it appeared to be so easy to apt-get install mono-complete and start hacking in C#; concerned when I learned about the hard-float problem; and despondent when, after digging more deeply, I found that there appears to be no good solution to it.
I'm stuck in despondent, and hoping for a lifeline.
My belief is that C# (via Mono) is a great language for everyone, from kids to part-time hackers to professional developers, to learn. It runs on a huge variety of devices, including all major platforms, consoles, and handhelds. It's also the primary language of Unity, which has become probably the most popular and powerful game development environment in the world.
I also believe that Raspberry Pi is a great computer, especially for kids, but also for hackers in general. I assume I don't need to explain why in this forum.
But, alas, the two do not go together, because of the hard-float ABI problem
. Mono for ARM assumes the soft-float ABI that's used by iPhone
and Android, and does not work properly on Raspbian or most other RPi distros. (This problem also affects Java
, though I've heard Oracle has a new build of Java in testing that might fix this).
Now, you can certainly make a sensible argument that this is Mono's problem, and it should be fixed in Mono (much as Oracle is fixing it in Java). And if there are other JIT compilers out there, they should be fixed too (dunno if there are, but it seems likely).
On the other hand, we want to make the RPi easy to use, and in particular, easy to program for. Yes, I know it has Python, but there will certainly be some people who, like me, would prefer to use and teach C#. And that is NOT currently easy. If we can get fixed Mono and Java runtimes, and there are no other tools out there suffering from the same problem, then great. But in the meantime, I propose the following:
Change Raspbian to use the softfloat ABI (that is, pass floating point parameters just like integers), but still use hardware floating-point operations. This would be, as I understand it, just like iOS and Android, which are certainly the 900-pound gorillas in the embedded Linux/Unix space. We gain the benefits of following the big guys who set de facto convention, and don't have to fight tool vendors to provide special support for our little corner of the universe. Yet we still get the performance advantage of doing most floating-point operations in hardware.
I propose doing this in Raspbian, rather than just telling people to use Arch or Squeeze or whatever, because new Raspberry Pi users are going to overwhelmingly be running Raspbian. It's got "Raspb" in the name.
No other distro will ever get the adoption that Raspbian does.
So. What do y'all think?