Hello Guix,

after a pull, seeing the news, and subsequent rollback I went on
exploring how the new feature of the record system works.  It seems to
work just for some fields (e.g., I can use it with inputs, but not with
version), which is quite confusing.  Additionally, it does not seem to
allow cross-references (e.g., I cannot use inputs in propagated-inputs).

However the reason I am writing this email is this part from the news:

> the newly introduced bindings could shadow same-named bindings

which sounds quite annoying to deal with.  Does this basically mean that
adding new field to any record in Guix can break arbitrary user code?

For now, I will spend the weekend checking that all my code does not
have any naming conflict, but I am not sure what to do next.  Especially
given the fact that there is no warning when the shadowing occurs.

I assume committers will ensure that no record will have fields that are
named the same way as any built-in procedure (and possibly some
hand-picked SRFIs and ICE-9s?), but in what matter shall I write my own
code?  Is there some reserved prefix, I can be sure no record will ever
used for its fields?  How should I future-proof my code?

Could someone please provide some guidance here?

Have a nice day,
Tomas

-- 
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.

Reply via email to