erlang: phash2 гарантированно будет стабильным хэшем термина Erlang.
Я не думаю, что OTP дает гарантию, что term_to_binary(T)
в vX =: = term_to_binary(T)
в vY.Многие вещи могут измениться, если они введут новые термины-коды для оптимизированного представления вещей.Или если нам нужно добавить строки Unicode в ETF или что-то еще.Или в неожиданно маловероятном будущем, в котором мы представляем новый фундаментальный тип данных.Пример изменения, произошедшего только во внешнем представлении (сохраненные термины сравниваются равными, но не равны байту), см. float_ext
против new_float_ext
.
На практике, если вы придерживаетесь атомов,списки, кортежи, целые числа, числа с плавающей запятой и двоичные файлы, тогда вы, вероятно, в безопасности с term_to_binary
в течение достаточно долгого времени.Если придет время, когда их представление ETF изменится, вы всегда можете написать свою собственную версию term_to_binary
, которая не меняется вместе с ETF.