[erlang-questions] [ANN] Erlang/OTP 17.0-rc1 has been released.

Fred Hebert <>
Sat Feb 1 21:38:44 CET 2014

I'm aware of that, yes.

I tend to do it in one of a few ways:

1. Always add new fields to the end of the record to ensure not
   conflating fields in existence. Use element(#record.field, Record)
   to access existing fields of the old one, and
   list_to_tuple/tuple_to_list to add the new elements at the end.
2. Do it explicitly by opening everything up. It's easy to do with
   something as crappy as a copy/paste, then modifying the entries.
   It sucks, but it's explicit, not risky, and doesn't break DRY
   principles. It's the one you mentioned.
3. Be lucky and make it possible to just restart the process in the
   first place.

Ultimately, I prefer something that crashes loudly on failed updates
than not. I tend to change the internal state of production code rarely
enough to prefer the benefits of records most of the time with the
update weirdness happening once in a long while.

Different developers are of course allowed to feel differently about the


On 02/02, Max Lapshin wrote:
> Fred, your ideas are right, of course, but you forget that right now
> records doesn't have any infrastructure for code upgrade.
> The only way is to make {state,  Field1, Field2, ....} mapping by hands.

More information about the erlang-questions mailing list