Jens, To add a little more detail:
I could easily provide a series of patches:
(1) fix plugin.thirft and the code in compiler/cpp so that it uses unions
correctly.
(2) then for each language, provide a fix that enforces in __set_<field>
and TProtocol::{write,read} that unions obey the "exactly one field"
contract.
I have #1 already written (just finished it and it passes unit-tests).
--chet--
