I'm unable to use Virgil with Whidbey (or Ultra, which depends on Whidbey). I think the problem is that Virgil reloads Clojure namespaces in arbitrary order. It seems to break Whidbey:
First it [Virgil] reloads clojure.tools.nrepl.middleware.render-values which uses the old definition of Transport [protocol] and then it reloads clojure.tools.nrepl.transport, which creates a new definition for Transport.
I think this could be solved by making Virgil reload the namespaces in the dependency order. I quickly tried replacing Virgil's namespace reloading code with clojure.tools.namespace.repl/refresh-all and it fixed the problem. However, refresh-all is quite invasive: it unloads the namespaces before reloading them and loads all the Clojure files it can find, even if they weren't loaded in the first place. Would you be open to accepting such a patch?
I'm unable to use Virgil with Whidbey (or Ultra, which depends on Whidbey). I think the problem is that Virgil reloads Clojure namespaces in arbitrary order. It seems to break Whidbey:
I think this could be solved by making Virgil reload the namespaces in the dependency order. I quickly tried replacing Virgil's namespace reloading code with
clojure.tools.namespace.repl/refresh-all
and it fixed the problem. However,refresh-all
is quite invasive: it unloads the namespaces before reloading them and loads all the Clojure files it can find, even if they weren't loaded in the first place. Would you be open to accepting such a patch?