This has been the subject of several recent feedback e-mails we’ve received. Moreover, a few recent correspondents were kind enough to point out that not only did we remove it, but we didn’t say anything about it. I apologize for that. We weren’t trying to be sneaky about it. When I made my introductory post there were several comments about BigInteger and I’d mentioned that it would not be included in the release in a reply to one of them. It was also brought up in a comment on Inbar’s post about the .NET 3.5 Beta release. With all of the comment activity about it on the blog, I forgot that it hadn’t made it up to a regular post.
So why was BigInteger cut? The basic rationale behind making BigInteger internal was that it just wasn’t ready to ship. We thought our implementation met the needs for a BigInteger type. But then we had some other teams take a look at it and they pointed out some performance and compatibility issues that we just didn’t have time to fix before we shipped.
It was a really tough call, but we decided that rather than have people write a bunch of code dependent on a BigInteger class that we wanted to revamp or replace, we would pull it from 3.5 and make sure we resolved the issues before we made it available.
There’s not too much I can say about the current status of BigInteger. We do know that you want it. Since we didn’t get it into 3.5, we’re looking into how we can get it out there but we don’t yet know when we’ll be able to. We’re also looking into other possible investments in numerics.
That’s the story. If you have some scenarios or applications you definitely need a BigInteger for, I’d appreciate getting that feedback. If you’ve already posted comments to this effect on another entry or given me feedback in some other way, there’s no need to repost here. I’ve looked at what you said. But I want to make sure the type does what it needs to when we release it, so if you’ve got something new, feel free to share.