This is actually a somewhat compelling use case:
(module
(global $g1 (import "foo" "bar") (mut i32))
(global $g2 i32 (get_global $g1)))
My understanding from Luke is that previously, we did not allow global initializers to reference mutable globals in order to avoid circularities in initialization (not the only way to avoid that but an obvious way). With importable mutable globals there would not have been a circularity problem in referencing them from initializers, but we did not have importable mutable globals. Now we do. So should we lift the restriction to allow the above example to work?
This is actually a somewhat compelling use case:
My understanding from Luke is that previously, we did not allow global initializers to reference mutable globals in order to avoid circularities in initialization (not the only way to avoid that but an obvious way). With importable mutable globals there would not have been a circularity problem in referencing them from initializers, but we did not have importable mutable globals. Now we do. So should we lift the restriction to allow the above example to work?