--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi Kiril,I think you’d need to set your expectations. Faster builds are unlikely to be one of the benefits. A unified build tool is one.I’ve seen a few similar attempts with Buck which was inspired by Bazel. They either generate lein projects on the fly or call into the Clojure compiler directly.I think Clojure’s build model works against these tools in part because it’s a dynamic language, in part because it doesn’t implicitly forward declare functions, in part because (I believe) it does breadth first traversal if dependencies, and in part it’s non-trivial/inefficient to create a clean Clojure VM per dependency in the build graph.Typical usage of these build tools is to have a build file per directory with one or more targets in each file. In order to get the speed that the build tool promises you need the ability to efficiently parse the ABI of each file and only build its dependents when the ABI has changed.I’m not certain you can do that with Clojures compiler but someone else might be able to chime in with a way that you could.Cheers,Nathan
On Mon, 29 Jan 2018 at 13:16, Kiril Videlov <kiri...@runbox.no> wrote:
Hello,--I have been looking at the Bazel build tool for a multi-language mono-repo and I was wondering if anybody has tried it in the context of Clojure projects. I have only found the lein-monolith plugin which appears to address a similar use case sans the polyglot requirement. Do you think there is any value in attempting to build a rule set similar to the bazel rules for Scala?Regards,Kiril Videlov
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--- sent from my mobile
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
In order to get the speed that the build tool promises you need the ability to efficiently parse the ABI of each file and only build its dependents when the ABI has changed.
I’m not certain you can do that with Clojures compiler but someone else might be able to chime in with a way that you could.
Another tool that works well for polyglot JVM projects is Gradle. I use it to build Cursive, which has Java, Kotlin and AOT'ed Clojure. I released a mostly-unsupported plugin for it, and Andrew Oberstar and others have taken it over and done a lot of work on it - it now lives at https://github.com/gradle-clojure. It's pretty new but is under active development.
Gradle works very well for Cursive, I'm very happy with it.
On 29 January 2018 at 20:07, Nathan Fisher <nfi...@junctionbox.ca> wrote:
Hi Kiril,I think you’d need to set your expectations. Faster builds are unlikely to be one of the benefits. A unified build tool is one.I’ve seen a few similar attempts with Buck which was inspired by Bazel. They either generate lein projects on the fly or call into the Clojure compiler directly.I think Clojure’s build model works against these tools in part because it’s a dynamic language, in part because it doesn’t implicitly forward declare functions, in part because (I believe) it does breadth first traversal if dependencies, and in part it’s non-trivial/inefficient to create a clean Clojure VM per dependency in the build graph.Typical usage of these build tools is to have a build file per directory with one or more targets in each file. In order to get the speed that the build tool promises you need the ability to efficiently parse the ABI of each file and only build its dependents when the ABI has changed.I’m not certain you can do that with Clojures compiler but someone else might be able to chime in with a way that you could.Cheers,Nathan
On Mon, 29 Jan 2018 at 13:16, Kiril Videlov <kiri...@runbox.no> wrote:
Hello,--I have been looking at the Bazel build tool for a multi-language mono-repo and I was wondering if anybody has tried it in the context of Clojure projects. I have only found the lein-monolith plugin which appears to address a similar use case sans the polyglot requirement. Do you think there is any value in attempting to build a rule set similar to the bazel rules for Scala?Regards,Kiril Videlov
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--- sent from my mobile
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
On 16 Apr 2018, at 8:08, Gregg Reynolds wrote:
Can you please elaborate on this a bit? I've been using Bazel for a project that involve C and Java, with cross-compiles, and ABI parsing has never come up. It just works.
That's because Bazel already handles that for you, I've not followed it lately but originally you had ijars - which were interface jars that the tool would extract for your modules/dependencies which tracked the public interface, which is essentially the ABI here.
This is generated from compiled class files etc. this would work in the Clojure space -IF- you were generating AOT compiled .class files from clojure namespaces, but most people don't do that.
Bazel does favour small build units, so you could just jar up lots of smaller namespaces, and only rebuild if the jar is older than any .clj* file in your globs, which would still garner some improvements depending on the size of the namespaces, or the amount of tests in them.
Mark
"The ease with which a change can be implemented has no relevance at all to whether it is the right change for the (Java) Platform for all time." — Mark Reinhold.
Mark Derricutt
http://www.theoryinpractice.net
http://www.chaliceofblood.net
http://plus.google.com/+MarkDerricutt
http://twitter.com/talios
http://facebook.com/mderricutt
Don't wanna start a religious war, but I've worked with Gradle (and about 150 other build tools). If Gradle makes you happy Bazel will make you rapturous.
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--- sent from my mobile
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
We're starting to lean towards gradle
Believe it or not, I actually like groovy a lot. I used to use it to write unit tests for java code. It's very easy to learn.
Hello,I have been looking at the Bazel build tool for a multi-language mono-repo and I was wondering if anybody has tried it in the context of Clojure projects.
Next time you have to write unit tests for java, give groovy a try.
Totally off topic, but I once worked on a Java project where some of the tests were written in groovy and they were a huge PITA:1) The refactoring tools never found, nor refactored the groovy code2) The compilation errors introduced by 1) never showed up in my IDE3) Having to relate to tests I didn’t know about in a language I don’t care about when I thought I was done was not great for my general mood at the time
I used to think that sneaking in another language by using it in the test-code was a stellar idea. Now I’m quite certain it isn’t.
Hello,I have been looking at the Bazel build tool for a multi-language mono-repo and I was wondering if anybody has tried it in the context of Clojure projects. I have only found the lein-monolith plugin which appears to address a similar use case sans the polyglot requirement. Do you think there is any value in attempting to build a rule set similar to the bazel rules for Scala?