You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, vessel is passed a --main-class and AOT compiles that namespace and every namespace that is transitively reachable from it.
We are experimenting with improving component startup time. One of our initiatives is to replace a ns :require with a kind of placeholder component that uses requiring-resolve and a fully qualified symbol at runtime to load a namespace and execute a builder function (rather than directly execute the builder function). Combined with other changes, this will allow multiple threads to instantiate and start components in parallel.
Because of this, the component's namespace is not transitively reachable from the main namespace, as there is no longer a hard require on the namespace. Unfortunately, this means that the component's namespace is not AOT compiled.
The lack of compilation undermines the other parallelizing improvements, because the requiring-resolve has to load Clojure source and compile it, rather than load compiled code and execute it.
We would like vessel to scan the classpath for all Clojure source files, identify those that have not yet been AOT compiled, and compile each.
The text was updated successfully, but these errors were encountered:
hlship
changed the title
Req: AOT compile more than just the main class
Req: AOT compile more than just the main namespace
May 2, 2023
Currently, vessel is passed a --main-class and AOT compiles that namespace and every namespace that is transitively reachable from it.
We are experimenting with improving component startup time. One of our initiatives is to replace a ns :require with a kind of placeholder component that uses
requiring-resolve
and a fully qualified symbol at runtime to load a namespace and execute a builder function (rather than directly execute the builder function). Combined with other changes, this will allow multiple threads to instantiate and start components in parallel.Because of this, the component's namespace is not transitively reachable from the main namespace, as there is no longer a hard require on the namespace. Unfortunately, this means that the component's namespace is not AOT compiled.
The lack of compilation undermines the other parallelizing improvements, because the
requiring-resolve
has to load Clojure source and compile it, rather than load compiled code and execute it.We would like vessel to scan the classpath for all Clojure source files, identify those that have not yet been AOT compiled, and compile each.
The text was updated successfully, but these errors were encountered: