If I understand correctly, the way to silence the warning would be to
change the require to use only-in or except-in?

So in a sense, the new behavior is a sort of implicit transformation
of (require x) => (require (except-in x (all-defined-here))) [where
"(all-defined-here)" is something I just made up. :)] And the way to
silence the warning is to replace the "all-defined-here" by the
specific unwanted new identifier.  Or, change the require to use
only-in. Which reminds me:

In discussions about the package system, and major version changes,
and what it means to be backward compatible, I recall we've observed
that new versions of a package shouldn't provide any new things.
Strictly speaking. But in practice, systems _that_ strict, like COM
interfaces, end up with a lot of ISomeInterface2 gunk. So probably
that's too strict.  The alternative is to handle it on the import end,
which means you should always use "only-in" if you want to be sure a
package update won't break you by providing something new. That's
probably the least-worst of the two.

TL;DR Always use only-in and brush thrice daily. But if you're not
100% diligent, at least you'll get some protection plus a warning from
this latest change.

Is that about right?

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/CAGspUn2KsjUxvF4Z_YrRREaoO_dhO9K8L4F-g35eD7FbmVRkDw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to