The update did not break
goog.object, it only broke "global" access to it. This means that any namespace using
goog.object/get directly without a proper
(:require [goog.object :as ...]) in its
ns form will now break. You can no longer rely on
goog namespaces being globally available. Technically this was never valid but could sort of be relied on since
goog.object and such ensured that it is always loaded.
So to fix this properly all you need is to add a
However there is a more subtle issue that is related to macros. Some libraries may have macros that emit forms directly accessing
goog.object/get or so. This will now also break even if the namespace using that macro is doing everything properly. This is happening because the namespace using the macro likely doesn't have a
goog.object require of its own (and shouldn't need to have it).
Unfortunately due to that changes the macros need to be rewritten to either use their own helper functions which then can use
goog.object properly or switching to using
unchecked-set which are basically equivalent to
As per the announcement a compiler option was added to make the transition a little more smooth.
So if the problem is in your own code you just need to add the ns require. If its in a library it needs to be fixed there. Or you may use the compiler option
:global-goog-object&array until it is fixed.