Range Coder is worth mentioning here, as a modification of arithmetic coder which doesn't require bignums but costs you a little bit of entropy. It would be interesting to compare its effectiveness to simpler solutions mentioned in the post.