Here's a question for the group. I'm writing unit tests for the c++ version of varopt sampling. (Finally, the main code is feature complete! But until it's tested I assume there are bugs to be found.)
Anyway, in java we have a few 32-bit sizes we use that are actually constrained to <2^31 since java has no unsigned types -- we'd need to represent them with the lower 32 bits of a 64-bit value to allow going larger, which we have not done. It's not clear why you'd be creating a sample of >2 billion items, but this is more about the concept of how we define binary compatibility. In c++, we do have native unsigned types, meaning it'd actually be possible to create larger sketches that would be valid in c++ but not in java. That seems to break the idea of language portability of binary images. Do we want to allow users the option to create non-portable sketches? Or should we explicitly limit ourselves in such cases? jon
