One option to improve readability is to have additional data using the same name as its class, so record -> struct, array as it is, new struct for object to hold both version and UAV format.
I guess that `record` is used instead of `struct` because `struct` is a keyword in C. It could be `struct_`, sure.
The updated comment looks fine to me, but `hlsl_types_are_equal()` still doesn't check `class` before comparing `version`.