Hey all.
I've started working on a C# mining library. I've seen the idea tossed around a few times, and as a newer Bitcoin user with a strong background in programming (it's my job after all) I figured I'd dive in.
Three git commits later and I have a working, purely managed implementation optimized a tiny bit by using unsafe code. It's getting ~200khash/sec on a mostly-idle 2.66Ghz core. So not great, but not terrible for a JITed language either. It's mostly an exercise for me, but hopefully the community will have some use for it...
The miner and data source are hidden behind interfaces; I'm trying to make it easy for someone to come along with an OpenTK-based GPU miner, for example, and allow it to be used with my miner with no modifications to the core library. Or even write a mining routine in C and p/invoke it. Likewise, it'll be easy for someone to come along and write a data source that doesn't use JSON-RPC if they wanted to, for whatever reason, and have it work with any of the miner libraries installed on the system. Since the large majority of the expense in terms of computing power isn't getting into the mining routine, but actually running the mining routine, a native or GPU-based miner should see close to zero overhead, even running in a managed environment (.NET or Mono).
Further, since it's a library and managed, it can be easily consumed by other software and should run ~everywhere. (The managed miner only supports little-endian architectures at this point, but that doesn't mean addin miners won't work on big-endian.)
The source isn't yet released. I'm hoping to release the git repo in the next week or so, under the MIT license.
Thoughts on this idea are welcome. Note that, as someone interested in this kind of thing, I'll probably keep writing it even if you all think it's a horribly stupid idea.