-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Standalone executable #432
Comments
Hi, thanks for the ♡! Neither Lein startup time or JVM startup time are the bottleneck here - it's by and large tools.analyzer. These days I'm fostering Eastwood, most of all, as a CI oriented solution, where startup time isn't perceived (people rarely stare at builds) and linting typically runs in parallel, relative to tests. It tends to be a good idea to run clj-kondo before Eastwood, possibly fail-fasting it. As hopefully you know, both linters don't fully overlap, so running both is worth it. One might further cut the run time by only running git-touched files, by comparing a PR against Finally, it's also possible to run Eastwood from your REPL, integrated with a Reloaded workflow e.g. only I hope this give you a good overview. |
The only issue with being CI-oriented is that it's the last possible moment to catch certain classes of errors. For example, Eastwood reports that Being able to use the repl for instant feedback is nice, but it's not always possible sadly (some codebases aren't built for repl-driven development 😭), so I like to do periodic |
Hi again, sorry for the delay!
repl means here more broadly "use your existing JVM to invoke Eastwood". So if you already have a JVM for your server app, and invoke Eastwood programatically, checking a single ns will take < 0.5s - not 26s. There are some caveats related to re-evaluation. Perhaps you are familiar with them: evaluating code in an unlucky order can mean opaque issues, particularly related to defprotocol<->defrecord relationships (not if you use metadata-based protocol extension). By carefully checking out the README you can get a full idea of these tradeoffs. If going the programmatic route, But honestly, as of 2022 I'm not very interested in fostering these ways. They can work, but they also can be a rabbit hole if hacking with Clojure tooling isn't already your bread and butter. So as a pragmatic recommendation, I'd say:
Cheers - V |
First off, love Eastwood, has saved my butt many times.
I'd love to use this from the command line.
lein eastwood
works butlein
incurs a heavy start-up cost. Is there any chance of a GraalVM-style standalone executable of Eastwood?The text was updated successfully, but these errors were encountered: