How to exclude compile-time dependencies from uberjar?
I'm trying to get the smallest uberjar as possible. Currently I have a bunch of dependencies for compiling server resources (clojurescript, garden...) that are required at compile-time, but don't have to be in the uberjar. How can I create an uberjar without bundling these resources? Thanks! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [ANN] bidi 1.20.0 - with Schema suppport
Hi Dylan, Yes, that's right. This is validation for the bidi route structure itself. For now, I've left it open to the bidi user whether and when to use route validation (although I may add it to modular in due course as you point out) Libraries that use ring-swagger, https://github.com/metosin/ring-swagger, including yada, provide path parameter validation. Therefore I don't think it's necessary to add path parameter validation to bidi. Regards, Malcolm On Tuesday, 30 June 2015 04:50:06 UTC+1, Dylan Butman wrote: Hey Malcolm, Just confirming my understand, the schema addition is to validate the bidi routes themselves, not path parameters matched within the routes, right? Is this something you're thinking one might do at component start, say https://github.com/juxt/modular/blob/master/modules/bidi/src/modular/bidi.clj#L88 . Best Dylan On Monday, June 29, 2015 at 11:47:00 AM UTC-4, Malcolm Sparks wrote: bidi is a routing library that lets you define the URI routes for your website as data. Until now, there has been no way to validate whether that data conforms to the expected structure. Not doing so can often lead to problems. I've just released a new version that defines a Prismatic Schema for letting you check and validate your bidi routes in your code. Schema validation works for both Clojure and ClojureScript, now that ClojureScript has Var instances (see https://groups.google.com/forum/#!topic/prismatic-plumbing/jqOkv_r8QZk) See http://github.com/juxt/bidi for further details. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Clojars Private/Commercial Repos
The past few teams I've been on have used variously S3, Nexus, and Artifactory, and I wasn't especially happy with any of them. I think there is a sweet spot of usability (for small/medium teams) and technical capability that hasn't really been achieved by anything available. Of what's available today, Artifactory's SaaS (Cloud version) looks most palatable but I haven't used it enough to recommend it. To hit the sweet spot for myself, and for others with similar tastes, I've been working with Micha Niskin on a commercial product called Projars that maybe be of interest: http://projars.com/. Incidentally, the previous owner of the projars.com domain had a different and interesting idea for it, as a kind of marketplace for commercial libraries: https://web.archive.org/web/20140309074426/http://projars.com/ Maybe this could still be a thing? I am very grateful to Alex Osborne's stewardship of Clojars and the efforts of all its contributors over the years. It is an important community asset. If finances ever became a problem, I would be happy to contribute, as I'm sure many others in the community would also. Alan On Tuesday, June 30, 2015 at 5:13:31 PM UTC-4, Toby Crawley wrote: Clojars is pretty much a one man show right now, but it currently requires little time to maintain, and works fairly well. If it supported private repos, the maintenance and support time would go up considerably, and it would require some sort of business entity around it. Doing that has been considered in the past, but isn't something I'm comfortable doing right now, due to other obligations. The hosting costs are relatively small, and still being sponsored by Alex Osborne (clojars' original author). I've considered selling corporate sponsorships or having a fundraising campaign to establish a fund that could take that burden off of Alex, and to have on hand to cover contracting someone to help with recovering from potential compromises (like the linode breach[1]), patching vulnerabilities (heartbleed, etc), or rebuilding the server in case of failure, if such help is needed. I have no idea if I'll need some sort of legal entity to hold that money, but if one is needed, that might be something the recently proposed Clojure community organization[2] could handle. I know that it's often easier to give money over time, but if folks are interested in helping clojars now, we have quite a few open issues[3] that are ready for discussion/patches. - Toby [1]: https://groups.google.com/forum/#!topic/clojars-maintainers/uAVJVwRAnSU [2]: https://groups.google.com/d/msg/clojure/i2YqnCkeemM/0nOJaK8U91EJ [3]: https://groups.google.com/d/msg/clojars-maintainers/AKLPSVY5Qcw/w63eLy7pU58J On Tue, Jun 30, 2015 at 3:34 PM, Christopher Small metas...@gmail.com javascript: wrote: This is being done now with npm: https://www.npmjs.com/. Cost is $7/mo, which seems reasonable. On Tuesday, June 30, 2015 at 12:00:55 PM UTC-7, Jason Lewis wrote: I think my company would be willing to pay a reasonable fee for private Clojars repos, on something like the Github model? Not sure what the lein overhead would be, I know grabbing Datomic Pro from non-Clojars with creds is a motherf@#@#ing pain in the ass at times (but only in comparison to the conveninece of Clojars. Maybe a private-Clojars solution could be a good way to support the project and encourage a standardized lein/project.clj method of grabbing non-free artifacts? On Tue, Jun 30, 2015 at 2:17 PM Dave Dixon dave.d...@gmail.com wrote: +1. Neither S3 or Archiva have worked out well for us long term. On Monday, June 29, 2015 at 6:50:44 PM UTC-7, Daniel Compton wrote: Hi folks I wondered if one possible solution for ensuring Clojars long-term viability and maintenance would be to use it to host private repositories for paying users as well? For many people, the thought of setting up and maintaining Nexus or Archiva isn't an appealing one. I'm aware of the S3 wagon, and perhaps that's what people use if they don't want Nexus. I'd be interested to hear what other people are doing, and whether Clojars would be a good middle ground between simplicity and functionality. Many Clojure users already have Clojars accounts and will have setup Lein to deploy here already. Additionally, many people would support Clojars for the goodwill factor. On the other hand I'm aware this would require more development effort, there may not be much demand for this, and the infrastructure costs may not be large enough that it's worth going down this route. Just a thought, Daniel. -- -- Daniel -- 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
Re: Quoting Confusion
On Tuesday, June 30, 2015 at 8:05:32 AM UTC-4, Karan Toor wrote: I was having some trouble understanding the difference syntax quoting and regular quoting. I thought syntax quoting was like regular quoting except for the unquoting, splicing, and resolving symbols in the namespace. When I apply either the regular quote or the syntax quote twice I get exactly what I expected. But when I apply the the syntax quote more than 2 times I get some unexpected results. https://gist.github.com/currentoor/d7f9a5fb02bec14d3886 My advice on nesting syntax quoting: Don't. Whether it's actually malfunctioning or just confusing you, I'd recommend separating each layer of syntax quoting into a layer of helper functions. For instance, say you want to make a macro that emits macros. Write the emitted macros first, as a parametrized helper function that emits a defmacro form, then write a macro that will call this with parameters derived from its arguments and emit the results. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Running test.check and cljs.test tests under Clojurescript
http://annapawlicka.com/travis-ci-and-clojurescript-tests/ is probably a more relevant basic guide. On Tuesday, June 30, 2015, Nathan Marz nat...@nathanmarz.com wrote: I'm trying to get Specter's tests running under ClojureScript. I can run the tests manually in a REPL just fine, but I cannot figure out a straightforward way to run all the tests like you can in Clojure with lein test. Here are the tests I'm trying to run, which are a mix of tests defined using test.check and cljs.test: https://github.com/nathanmarz/specter/blob/cljs/test/com/rpl/specter/core_test.cljc I've tried the instructions in http://abratukhin.blogspot.com/2015/03/how-to-set-up-unit-tests-in.html but the cemerick.cljs.test package does not seem to run test.check tests defined with defspec. How can I set up a runner to run my tests with a one line command at the terminal? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com javascript:_e(%7B%7D,'cvml','clojure@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+unsubscr...@googlegroups.com javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@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+unsubscr...@googlegroups.com javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@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 clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Running test.check and cljs.test tests under Clojurescript
Dunno if this can help you: https://github.com/lprefontaine/clara-rules/blob/master/project.clj I run tests with : lein cljsbuild test-cljs If I my memory is not fooling me. There might be a better way but this is what I had time to tweak this weekend. You need to setup phantomjs, etc...look at the phantomjs folder in the project. Luc P. Sent from my iPhone On Jul 1, 2015, at 00:03, Nathan Marz nathan.m...@gmail.com wrote: I figured out a way to do it by manually launching a ClojureScript REPL, writing a test runner script, and then invoking that script at the REPL, like so: https://github.com/nathanmarz/specter/blob/cljs/DEVELOPER.md Still wondering if there's a more straightforward way to do this. On Tuesday, June 30, 2015 at 7:20:58 PM UTC-4, Nathan Marz wrote: I'm trying to get Specter's tests running under ClojureScript. I can run the tests manually in a REPL just fine, but I cannot figure out a straightforward way to run all the tests like you can in Clojure with lein test. Here are the tests I'm trying to run, which are a mix of tests defined using test.check and cljs.test: https://github.com/nathanmarz/specter/blob/cljs/test/com/rpl/specter/core_test.cljc I've tried the instructions in http://abratukhin.blogspot.com/2015/03/how-to-set-up-unit-tests-in.html but the cemerick.cljs.test package does not seem to run test.check tests defined with defspec. How can I set up a runner to run my tests with a one line command at the terminal? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@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 clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Running test.check and cljs.test tests under Clojurescript
I figured out a way to do it by manually launching a ClojureScript REPL, writing a test runner script, and then invoking that script at the REPL, like so: https://github.com/nathanmarz/specter/blob/cljs/DEVELOPER.md Still wondering if there's a more straightforward way to do this. On Tuesday, June 30, 2015 at 7:20:58 PM UTC-4, Nathan Marz wrote: I'm trying to get Specter's tests running under ClojureScript. I can run the tests manually in a REPL just fine, but I cannot figure out a straightforward way to run all the tests like you can in Clojure with lein test. Here are the tests I'm trying to run, which are a mix of tests defined using test.check and cljs.test: https://github.com/nathanmarz/specter/blob/cljs/test/com/rpl/specter/core_test.cljc I've tried the instructions in http://abratukhin.blogspot.com/2015/03/how-to-set-up-unit-tests-in.html but the cemerick.cljs.test package does not seem to run test.check tests defined with defspec. How can I set up a runner to run my tests with a one line command at the terminal? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Quoting Confusion
I was having some trouble understanding the difference syntax quoting and regular quoting. I thought syntax quoting was like regular quoting except for the unquoting, splicing, and resolving symbols in the namespace. When I apply either the regular quote or the syntax quote twice I get exactly what I expected. But when I apply the the syntax quote more than 2 times I get some unexpected results. https://gist.github.com/currentoor/d7f9a5fb02bec14d3886 -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [ANN] Introducing Yagni, a Leiningen plugin for finding unused code
Yagni ignore `cljs` files. I have opened an issue here: https://github.com/venantius/yagni/issues/26 On Thu, Jun 25, 2015 at 1:53 AM, W. David Jarvis venant...@gmail.com wrote: Indeed. I'd argue it's better not to have unused code in the codebase in the first place, regardless of what the Closure compiler does to help when it comes to compiling assets. I haven't tested this with cljs projects, but on the face of it I don't see why Yagni's methodology wouldn't work. If you get a chance to give it a try I'd love the feedback :) On Wednesday, June 24, 2015 at 2:58:14 PM UTC-7, juan.facorro wrote: That's a good point. On Wednesday, June 24, 2015 at 6:53:43 PM UTC-3, Fluid Dynamics wrote: FMIIW, but I think they serve orthogonal purposes. Google Closure finds code (mostly library parts your program doesn't use) that your particular program doesn't need and omits it from the build to save disk and bandwidth. Yagni finds obsolete code that is no longer reached in your program or from *any* public entry point to your library (whether a particular program uses that entry point or not) and issues warnings, so you know that either something is maintenance deadweight or you have a bug because you *meant* to call it somewhere but forgot, or it's become accidentally shadowed or something. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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 a topic in the Google Groups Clojure group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/fGhjG70w0_U/unsubscribe. To unsubscribe from this group and all its topics, send an email to clojure+unsubscr...@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 clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: How to exclude compile-time dependencies from uberjar?
You could try setting the :scope for the dependencies - I'm not sure if uberjar does the right thing there or not but seems like it should. On Tuesday, June 30, 2015 at 3:56:31 AM UTC-5, Robin Heggelund Hansen wrote: I'm trying to get the smallest uberjar as possible. Currently I have a bunch of dependencies for compiling server resources (clojurescript, garden...) that are required at compile-time, but don't have to be in the uberjar. How can I create an uberjar without bundling these resources? Thanks! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: How to exclude compile-time dependencies from uberjar?
If you are using Leiningen, try putting those dependencies in a :provided profile - see https://github.com/technomancy/leiningen/blob/master/doc/PROFILES.md#default-profiles. I interpret that to mean they won't be included in the uberjar, but haven't tested to confirm. - Toby On Tue, Jun 30, 2015 at 10:09 AM, Robin Heggelund Hansen skinney...@gmail.com wrote: I tried the following, but didn't seem to have any effect: [org.clojure/clojurescript 0.0-3211 :scope provided] tirsdag 30. juni 2015 16.02.50 UTC+2 skrev Alex Miller følgende: You could try setting the :scope for the dependencies - I'm not sure if uberjar does the right thing there or not but seems like it should. On Tuesday, June 30, 2015 at 3:56:31 AM UTC-5, Robin Heggelund Hansen wrote: I'm trying to get the smallest uberjar as possible. Currently I have a bunch of dependencies for compiling server resources (clojurescript, garden...) that are required at compile-time, but don't have to be in the uberjar. How can I create an uberjar without bundling these resources? Thanks! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@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 clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: How to exclude compile-time dependencies from uberjar?
My understanding is that those dependencies should go into the dev profile, which won't be included in the uberjar. On Tue, Jun 30, 2015 at 4:56 AM, Robin Heggelund Hansen skinney...@gmail.com wrote: I'm trying to get the smallest uberjar as possible. Currently I have a bunch of dependencies for compiling server resources (clojurescript, garden...) that are required at compile-time, but don't have to be in the uberjar. How can I create an uberjar without bundling these resources? Thanks! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@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 clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: How to exclude compile-time dependencies from uberjar?
I tried the following, but didn't seem to have any effect: [org.clojure/clojurescript 0.0-3211 :scope provided] tirsdag 30. juni 2015 16.02.50 UTC+2 skrev Alex Miller følgende: You could try setting the :scope for the dependencies - I'm not sure if uberjar does the right thing there or not but seems like it should. On Tuesday, June 30, 2015 at 3:56:31 AM UTC-5, Robin Heggelund Hansen wrote: I'm trying to get the smallest uberjar as possible. Currently I have a bunch of dependencies for compiling server resources (clojurescript, garden...) that are required at compile-time, but don't have to be in the uberjar. How can I create an uberjar without bundling these resources? Thanks! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[ANN] Clojure 1.7.0 is now available
We are pleased to announce the release of Clojure 1.7. - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0/ - Leiningen: [org.clojure/clojure 1.7.0] The two headline features for 1.7 are transducers and reader conditionals. Also see the complete list ( https://github.com/clojure/clojure/blob/master/changes.md) of all changes since Clojure 1.6 for more details. ## Transducers Transducers (http://clojure.org/transducers) are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, they can be used in many different processes - collections, streams, channels, observables, etc. Transducers compose directly, without awareness of input or creation of intermediate aggregates. Many existing sequence functions now have a new arity (one fewer argument than before). This arity will return a transducer that represents the same logic but is independent of lazy sequence processing. Functions included are: map, mapcat, filter, remove, take, take-while, drop, drop-while, take-nth, replace, partition-by, partition-all, keep, keep-indexed, map-indexed, distinct, and interpose. Additionally some new transducer functions have been added: cat, dedupe, and random-sample. Transducers can be used in several new or existing contexts: * into - to collect the results of applying a transducer * sequence - to incrementally compute the result of a transducer * transduce - to immediately compute the result of a transducer * eduction - to delay computation and recompute each time * core.async - to apply a transducer while values traverse a channel ## Portable Clojure and Reader Conditionals It is now common to see a library or application targeting multiple Clojure platforms with a single codebase. Clojure 1.7 introduces a new extension (.cljc) for files that can be loaded by Clojure and ClojureScript (and other Clojure platforms). There will often be some parts of the code that vary between platforms. The primary mechanism for dealing with platform-specific code is to isolate that code into a minimal set of namespaces and then provide platform-specific versions (.clj/.class or .cljs) of those namespaces. To support cases where is not feasible to isolate the varying parts of the code, or where the code is mostly portable with only small platform-specific parts, 1.7 provides Reader Conditionals ( http://clojure.org/reader#The%20Reader--Reader%20Conditionals). Reader conditionals are a new reader form that is only allowed in portable cljc files. A reader conditional expression is similar to a cond in that it specifies alternating platform identifiers and expressions. Each platform is checked in turn until a match is found and the expression is read. All expressions not selected are read but skipped. A final :default fallthrough can be provided. If no expressions are matched, the reader conditional will read nothing. The reader conditional splicing form takes a sequential expression and splices the result into the surrounding code. ## Contributors Thanks to all of those who contributed patches to Clojure 1.7: Timothy Baldridge Bozhidar Batsov Brandon Bloom Michael Blume Ambrose Bonnaire-Sergeant Aaron Cohen Pepijn de Vos Andy Fingerhut Gary Fredricks Daniel Solano Gómez Stuart Halloway Immo Heikkinen Andrei Kleschinsky Howard Lewis Ship Alex Miller Steve Miner Nicola Mometto Tomasz Nurkiewicz Ghadi Shayban Paul Stadig Zach Tellman Luke VanderHart Jozef Wagner Devin Walters Jason Wolfe Steven Yi Also, continued thanks to the total list of contributors from all releases: http://clojure.org/contributing#patches Thanks! Alex Miller -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [ANN] Introducing Yagni, a Leiningen plugin for finding unused code
Nice. It would be really cool if run-yagni was a pure function of source-paths and mains. This would make the dependency on lein optional and allow adoption on e.g. mainland Java projects. Stu On Tue, Jun 30, 2015 at 5:44 AM, Yehonathan Sharvit vie...@gmail.com wrote: Yagni ignore `cljs` files. I have opened an issue here: https://github.com/venantius/yagni/issues/26 On Thu, Jun 25, 2015 at 1:53 AM, W. David Jarvis venant...@gmail.com wrote: Indeed. I'd argue it's better not to have unused code in the codebase in the first place, regardless of what the Closure compiler does to help when it comes to compiling assets. I haven't tested this with cljs projects, but on the face of it I don't see why Yagni's methodology wouldn't work. If you get a chance to give it a try I'd love the feedback :) On Wednesday, June 24, 2015 at 2:58:14 PM UTC-7, juan.facorro wrote: That's a good point. On Wednesday, June 24, 2015 at 6:53:43 PM UTC-3, Fluid Dynamics wrote: FMIIW, but I think they serve orthogonal purposes. Google Closure finds code (mostly library parts your program doesn't use) that your particular program doesn't need and omits it from the build to save disk and bandwidth. Yagni finds obsolete code that is no longer reached in your program or from *any* public entry point to your library (whether a particular program uses that entry point or not) and issues warnings, so you know that either something is maintenance deadweight or you have a bug because you *meant* to call it somewhere but forgot, or it's become accidentally shadowed or something. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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 a topic in the Google Groups Clojure group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/fGhjG70w0_U/unsubscribe. To unsubscribe from this group and all its topics, send an email to clojure+unsubscr...@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 clojure@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+unsubscr...@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+unsubscr...@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 clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [ANN] Clojure 1.7.0 is now available
You'll have to bump instaparse versions: https://github.com/clojure-emacs/refactor-nrepl/issues/53 On Tue, Jun 30, 2015 at 12:57 PM Robert Beaupre codewise.rob...@gmail.com wrote: Is anyone else getting the following error with 1.7.0 when running lein repl? All I did was change from 1.6.0 to 1.7.0. #error { :cause Wrong number of args (2) passed to: StringReader :via [{:type clojure.lang.Compiler$CompilerException :message clojure.lang.ArityException: Wrong number of args (2) passed to: StringReader, compiling:(abnf.clj:189:28) :at [clojure.lang.Compiler$InvokeExpr eval Compiler.java 3628]} {:type clojure.lang.ArityException :message Wrong number of args (2) passed to: StringReader :at [clojure.lang.AFn throwArity AFn.java 429]}] Thanks, Robert On Tuesday, 30 June 2015 07:35:34 UTC-7, Alex Miller wrote: We are pleased to announce the release of Clojure 1.7. - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0/ - Leiningen: [org.clojure/clojure 1.7.0] The two headline features for 1.7 are transducers and reader conditionals. Also see the complete list ( https://github.com/clojure/clojure/blob/master/changes.md) of all changes since Clojure 1.6 for more details. ## Transducers Transducers (http://clojure.org/transducers) are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, they can be used in many different processes - collections, streams, channels, observables, etc. Transducers compose directly, without awareness of input or creation of intermediate aggregates. Many existing sequence functions now have a new arity (one fewer argument than before). This arity will return a transducer that represents the same logic but is independent of lazy sequence processing. Functions included are: map, mapcat, filter, remove, take, take-while, drop, drop-while, take-nth, replace, partition-by, partition-all, keep, keep-indexed, map-indexed, distinct, and interpose. Additionally some new transducer functions have been added: cat, dedupe, and random-sample. Transducers can be used in several new or existing contexts: * into - to collect the results of applying a transducer * sequence - to incrementally compute the result of a transducer * transduce - to immediately compute the result of a transducer * eduction - to delay computation and recompute each time * core.async - to apply a transducer while values traverse a channel ## Portable Clojure and Reader Conditionals It is now common to see a library or application targeting multiple Clojure platforms with a single codebase. Clojure 1.7 introduces a new extension (.cljc) for files that can be loaded by Clojure and ClojureScript (and other Clojure platforms). There will often be some parts of the code that vary between platforms. The primary mechanism for dealing with platform-specific code is to isolate that code into a minimal set of namespaces and then provide platform-specific versions (.clj/.class or .cljs) of those namespaces. To support cases where is not feasible to isolate the varying parts of the code, or where the code is mostly portable with only small platform-specific parts, 1.7 provides Reader Conditionals ( http://clojure.org/reader#The%20Reader--Reader%20Conditionals). Reader conditionals are a new reader form that is only allowed in portable cljc files. A reader conditional expression is similar to a cond in that it specifies alternating platform identifiers and expressions. Each platform is checked in turn until a match is found and the expression is read. All expressions not selected are read but skipped. A final :default fallthrough can be provided. If no expressions are matched, the reader conditional will read nothing. The reader conditional splicing form takes a sequential expression and splices the result into the surrounding code. ## Contributors Thanks to all of those who contributed patches to Clojure 1.7: Timothy Baldridge Bozhidar Batsov Brandon Bloom Michael Blume Ambrose Bonnaire-Sergeant Aaron Cohen Pepijn de Vos Andy Fingerhut Gary Fredricks Daniel Solano Gómez Stuart Halloway Immo Heikkinen Andrei Kleschinsky Howard Lewis Ship Alex Miller Steve Miner Nicola Mometto Tomasz Nurkiewicz Ghadi Shayban Paul Stadig Zach Tellman Luke VanderHart Jozef Wagner Devin Walters Jason Wolfe Steven Yi Also, continued thanks to the total list of contributors from all releases: http://clojure.org/contributing#patches Thanks! Alex Miller -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To
Re: [ANN] Clojure 1.7.0 is now available
Is anyone else getting the following error with 1.7.0 when running lein repl? All I did was change from 1.6.0 to 1.7.0. #error { :cause Wrong number of args (2) passed to: StringReader :via [{:type clojure.lang.Compiler$CompilerException :message clojure.lang.ArityException: Wrong number of args (2) passed to: StringReader, compiling:(abnf.clj:189:28) :at [clojure.lang.Compiler$InvokeExpr eval Compiler.java 3628]} {:type clojure.lang.ArityException :message Wrong number of args (2) passed to: StringReader :at [clojure.lang.AFn throwArity AFn.java 429]}] Thanks, Robert On Tuesday, 30 June 2015 07:35:34 UTC-7, Alex Miller wrote: We are pleased to announce the release of Clojure 1.7. - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0/ - Leiningen: [org.clojure/clojure 1.7.0] The two headline features for 1.7 are transducers and reader conditionals. Also see the complete list ( https://github.com/clojure/clojure/blob/master/changes.md) of all changes since Clojure 1.6 for more details. ## Transducers Transducers (http://clojure.org/transducers) are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, they can be used in many different processes - collections, streams, channels, observables, etc. Transducers compose directly, without awareness of input or creation of intermediate aggregates. Many existing sequence functions now have a new arity (one fewer argument than before). This arity will return a transducer that represents the same logic but is independent of lazy sequence processing. Functions included are: map, mapcat, filter, remove, take, take-while, drop, drop-while, take-nth, replace, partition-by, partition-all, keep, keep-indexed, map-indexed, distinct, and interpose. Additionally some new transducer functions have been added: cat, dedupe, and random-sample. Transducers can be used in several new or existing contexts: * into - to collect the results of applying a transducer * sequence - to incrementally compute the result of a transducer * transduce - to immediately compute the result of a transducer * eduction - to delay computation and recompute each time * core.async - to apply a transducer while values traverse a channel ## Portable Clojure and Reader Conditionals It is now common to see a library or application targeting multiple Clojure platforms with a single codebase. Clojure 1.7 introduces a new extension (.cljc) for files that can be loaded by Clojure and ClojureScript (and other Clojure platforms). There will often be some parts of the code that vary between platforms. The primary mechanism for dealing with platform-specific code is to isolate that code into a minimal set of namespaces and then provide platform-specific versions (.clj/.class or .cljs) of those namespaces. To support cases where is not feasible to isolate the varying parts of the code, or where the code is mostly portable with only small platform-specific parts, 1.7 provides Reader Conditionals ( http://clojure.org/reader#The%20Reader--Reader%20Conditionals). Reader conditionals are a new reader form that is only allowed in portable cljc files. A reader conditional expression is similar to a cond in that it specifies alternating platform identifiers and expressions. Each platform is checked in turn until a match is found and the expression is read. All expressions not selected are read but skipped. A final :default fallthrough can be provided. If no expressions are matched, the reader conditional will read nothing. The reader conditional splicing form takes a sequential expression and splices the result into the surrounding code. ## Contributors Thanks to all of those who contributed patches to Clojure 1.7: Timothy Baldridge Bozhidar Batsov Brandon Bloom Michael Blume Ambrose Bonnaire-Sergeant Aaron Cohen Pepijn de Vos Andy Fingerhut Gary Fredricks Daniel Solano Gómez Stuart Halloway Immo Heikkinen Andrei Kleschinsky Howard Lewis Ship Alex Miller Steve Miner Nicola Mometto Tomasz Nurkiewicz Ghadi Shayban Paul Stadig Zach Tellman Luke VanderHart Jozef Wagner Devin Walters Jason Wolfe Steven Yi Also, continued thanks to the total list of contributors from all releases: http://clojure.org/contributing#patches Thanks! Alex Miller -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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
Transducers/Eduction problem
As Clojure 1.7 is finally released, I tried to wet my feet with transducers. I tried eduction example from official site http://clojure.org/transducers but it's not working: user= (def xf (comp (filter odd?) (map inc))) #'user/xf user= (def iter (eduction xf (range 5))) #'user/iter user= (reduce + iter) ClassCastException clojure.core.Eduction cannot be cast to clojure.lang.IReduce clojure.core.protocols/fn--6502 (protocols.clj:75) ;; 6 expected But user= (reduce + 0 iter) 6 So is example wrong or this is a bug? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Transducers/Eduction problem
The example is wrong. There are now two flavors of support for reduce through interfaces, IReduce and IReduceInit. The first one allows you to call reduce without an initial value. Eduction doesn't support that interface, but only IReduceInit. Reduce without an initial value is now discouraged. On Tuesday, June 30, 2015 at 1:04:20 PM UTC-4, Вук Мировић wrote: As Clojure 1.7 is finally released, I tried to wet my feet with transducers. I tried eduction example from official site http://clojure.org/transducers http://www.google.com/url?q=http%3A%2F%2Fclojure.org%2Ftransducerssa=Dsntz=1usg=AFQjCNGAIDS1RcAkD0WaPpJg2sgEoA4Suw but it's not working: user= (def xf (comp (filter odd?) (map inc))) #'user/xf user= (def iter (eduction xf (range 5))) #'user/iter user= (reduce + iter) ClassCastException clojure.core.Eduction cannot be cast to clojure.lang.IReduce clojure.core.protocols/fn--6502 (protocols.clj:75) ;; 6 expected But user= (reduce + 0 iter) 6 So is example wrong or this is a bug? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Transducers/Eduction problem
Yep, that's my bug in the example. Will fix, sorry. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [ANN] Clojure 1.7.0 is now available
Thanks. Looks like it was in Compojure - linked to at the bottom of the page you sent over: https://github.com/bhauman/lein-figwheel/issues/161 On Tuesday, 30 June 2015 10:01:01 UTC-7, Gary Trakhman wrote: You'll have to bump instaparse versions: https://github.com/clojure-emacs/refactor-nrepl/issues/53 On Tue, Jun 30, 2015 at 12:57 PM Robert Beaupre codewis...@gmail.com javascript: wrote: Is anyone else getting the following error with 1.7.0 when running lein repl? All I did was change from 1.6.0 to 1.7.0. #error { :cause Wrong number of args (2) passed to: StringReader :via [{:type clojure.lang.Compiler$CompilerException :message clojure.lang.ArityException: Wrong number of args (2) passed to: StringReader, compiling:(abnf.clj:189:28) :at [clojure.lang.Compiler$InvokeExpr eval Compiler.java 3628]} {:type clojure.lang.ArityException :message Wrong number of args (2) passed to: StringReader :at [clojure.lang.AFn throwArity AFn.java 429]}] Thanks, Robert On Tuesday, 30 June 2015 07:35:34 UTC-7, Alex Miller wrote: We are pleased to announce the release of Clojure 1.7. - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0/ - Leiningen: [org.clojure/clojure 1.7.0] The two headline features for 1.7 are transducers and reader conditionals. Also see the complete list ( https://github.com/clojure/clojure/blob/master/changes.md) of all changes since Clojure 1.6 for more details. ## Transducers Transducers (http://clojure.org/transducers) are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, they can be used in many different processes - collections, streams, channels, observables, etc. Transducers compose directly, without awareness of input or creation of intermediate aggregates. Many existing sequence functions now have a new arity (one fewer argument than before). This arity will return a transducer that represents the same logic but is independent of lazy sequence processing. Functions included are: map, mapcat, filter, remove, take, take-while, drop, drop-while, take-nth, replace, partition-by, partition-all, keep, keep-indexed, map-indexed, distinct, and interpose. Additionally some new transducer functions have been added: cat, dedupe, and random-sample. Transducers can be used in several new or existing contexts: * into - to collect the results of applying a transducer * sequence - to incrementally compute the result of a transducer * transduce - to immediately compute the result of a transducer * eduction - to delay computation and recompute each time * core.async - to apply a transducer while values traverse a channel ## Portable Clojure and Reader Conditionals It is now common to see a library or application targeting multiple Clojure platforms with a single codebase. Clojure 1.7 introduces a new extension (.cljc) for files that can be loaded by Clojure and ClojureScript (and other Clojure platforms). There will often be some parts of the code that vary between platforms. The primary mechanism for dealing with platform-specific code is to isolate that code into a minimal set of namespaces and then provide platform-specific versions (.clj/.class or .cljs) of those namespaces. To support cases where is not feasible to isolate the varying parts of the code, or where the code is mostly portable with only small platform-specific parts, 1.7 provides Reader Conditionals ( http://clojure.org/reader#The%20Reader--Reader%20Conditionals). Reader conditionals are a new reader form that is only allowed in portable cljc files. A reader conditional expression is similar to a cond in that it specifies alternating platform identifiers and expressions. Each platform is checked in turn until a match is found and the expression is read. All expressions not selected are read but skipped. A final :default fallthrough can be provided. If no expressions are matched, the reader conditional will read nothing. The reader conditional splicing form takes a sequential expression and splices the result into the surrounding code. ## Contributors Thanks to all of those who contributed patches to Clojure 1.7: Timothy Baldridge Bozhidar Batsov Brandon Bloom Michael Blume Ambrose Bonnaire-Sergeant Aaron Cohen Pepijn de Vos Andy Fingerhut Gary Fredricks Daniel Solano Gómez Stuart Halloway Immo Heikkinen Andrei Kleschinsky Howard Lewis Ship Alex Miller Steve Miner Nicola Mometto Tomasz Nurkiewicz Ghadi Shayban Paul Stadig Zach Tellman Luke VanderHart Jozef Wagner Devin Walters Jason Wolfe Steven Yi Also, continued thanks to the total list
Re: [ANN] Clojure 1.7.0 is now available
Yep. Got the same error, found the same fix. Was impressed at how easy it was to fix. (Seriously, compared to most upgrades I've had to do in my life...) On Tue, Jun 30, 2015 at 10:13 AM, Robert Beaupre codewise.rob...@gmail.com wrote: Thanks. Looks like it was in Compojure - linked to at the bottom of the page you sent over: https://github.com/bhauman/lein-figwheel/issues/161 On Tuesday, 30 June 2015 10:01:01 UTC-7, Gary Trakhman wrote: You'll have to bump instaparse versions: https://github.com/clojure-emacs/refactor-nrepl/issues/53 On Tue, Jun 30, 2015 at 12:57 PM Robert Beaupre codewis...@gmail.com wrote: Is anyone else getting the following error with 1.7.0 when running lein repl? All I did was change from 1.6.0 to 1.7.0. #error { :cause Wrong number of args (2) passed to: StringReader :via [{:type clojure.lang.Compiler$CompilerException :message clojure.lang.ArityException: Wrong number of args (2) passed to: StringReader, compiling:(abnf.clj:189:28) :at [clojure.lang.Compiler$InvokeExpr eval Compiler.java 3628]} {:type clojure.lang.ArityException :message Wrong number of args (2) passed to: StringReader :at [clojure.lang.AFn throwArity AFn.java 429]}] Thanks, Robert On Tuesday, 30 June 2015 07:35:34 UTC-7, Alex Miller wrote: We are pleased to announce the release of Clojure 1.7. - Download: https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0/ - Leiningen: [org.clojure/clojure 1.7.0] The two headline features for 1.7 are transducers and reader conditionals. Also see the complete list ( https://github.com/clojure/clojure/blob/master/changes.md) of all changes since Clojure 1.6 for more details. ## Transducers Transducers (http://clojure.org/transducers) are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, they can be used in many different processes - collections, streams, channels, observables, etc. Transducers compose directly, without awareness of input or creation of intermediate aggregates. Many existing sequence functions now have a new arity (one fewer argument than before). This arity will return a transducer that represents the same logic but is independent of lazy sequence processing. Functions included are: map, mapcat, filter, remove, take, take-while, drop, drop-while, take-nth, replace, partition-by, partition-all, keep, keep-indexed, map-indexed, distinct, and interpose. Additionally some new transducer functions have been added: cat, dedupe, and random-sample. Transducers can be used in several new or existing contexts: * into - to collect the results of applying a transducer * sequence - to incrementally compute the result of a transducer * transduce - to immediately compute the result of a transducer * eduction - to delay computation and recompute each time * core.async - to apply a transducer while values traverse a channel ## Portable Clojure and Reader Conditionals It is now common to see a library or application targeting multiple Clojure platforms with a single codebase. Clojure 1.7 introduces a new extension (.cljc) for files that can be loaded by Clojure and ClojureScript (and other Clojure platforms). There will often be some parts of the code that vary between platforms. The primary mechanism for dealing with platform-specific code is to isolate that code into a minimal set of namespaces and then provide platform-specific versions (.clj/.class or .cljs) of those namespaces. To support cases where is not feasible to isolate the varying parts of the code, or where the code is mostly portable with only small platform-specific parts, 1.7 provides Reader Conditionals ( http://clojure.org/reader#The%20Reader--Reader%20Conditionals). Reader conditionals are a new reader form that is only allowed in portable cljc files. A reader conditional expression is similar to a cond in that it specifies alternating platform identifiers and expressions. Each platform is checked in turn until a match is found and the expression is read. All expressions not selected are read but skipped. A final :default fallthrough can be provided. If no expressions are matched, the reader conditional will read nothing. The reader conditional splicing form takes a sequential expression and splices the result into the surrounding code. ## Contributors Thanks to all of those who contributed patches to Clojure 1.7: Timothy Baldridge Bozhidar Batsov Brandon Bloom Michael Blume Ambrose Bonnaire-Sergeant Aaron Cohen Pepijn de Vos Andy Fingerhut Gary Fredricks Daniel Solano Gómez Stuart Halloway Immo Heikkinen Andrei Kleschinsky Howard Lewis Ship Alex Miller Steve Miner Nicola Mometto Tomasz Nurkiewicz Ghadi Shayban Paul Stadig Zach Tellman Luke VanderHart Jozef
Re: Clojars Private/Commercial Repos
+1. Neither S3 or Archiva have worked out well for us long term. On Monday, June 29, 2015 at 6:50:44 PM UTC-7, Daniel Compton wrote: Hi folks I wondered if one possible solution for ensuring Clojars long-term viability and maintenance would be to use it to host private repositories for paying users as well? For many people, the thought of setting up and maintaining Nexus or Archiva isn't an appealing one. I'm aware of the S3 wagon, and perhaps that's what people use if they don't want Nexus. I'd be interested to hear what other people are doing, and whether Clojars would be a good middle ground between simplicity and functionality. Many Clojure users already have Clojars accounts and will have setup Lein to deploy here already. Additionally, many people would support Clojars for the goodwill factor. On the other hand I'm aware this would require more development effort, there may not be much demand for this, and the infrastructure costs may not be large enough that it's worth going down this route. Just a thought, Daniel. -- -- Daniel -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Clojars Private/Commercial Repos
I think my company would be willing to pay a reasonable fee for private Clojars repos, on something like the Github model? Not sure what the lein overhead would be, I know grabbing Datomic Pro from non-Clojars with creds is a motherf@#@#ing pain in the ass at times (but only in comparison to the conveninece of Clojars. Maybe a private-Clojars solution could be a good way to support the project and encourage a standardized lein/project.clj method of grabbing non-free artifacts? On Tue, Jun 30, 2015 at 2:17 PM Dave Dixon dave.d.di...@gmail.com wrote: +1. Neither S3 or Archiva have worked out well for us long term. On Monday, June 29, 2015 at 6:50:44 PM UTC-7, Daniel Compton wrote: Hi folks I wondered if one possible solution for ensuring Clojars long-term viability and maintenance would be to use it to host private repositories for paying users as well? For many people, the thought of setting up and maintaining Nexus or Archiva isn't an appealing one. I'm aware of the S3 wagon, and perhaps that's what people use if they don't want Nexus. I'd be interested to hear what other people are doing, and whether Clojars would be a good middle ground between simplicity and functionality. Many Clojure users already have Clojars accounts and will have setup Lein to deploy here already. Additionally, many people would support Clojars for the goodwill factor. On the other hand I'm aware this would require more development effort, there may not be much demand for this, and the infrastructure costs may not be large enough that it's worth going down this route. Just a thought, Daniel. -- -- Daniel -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@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 clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Clojars Private/Commercial Repos
This is being done now with npm: https://www.npmjs.com/. Cost is $7/mo, which seems reasonable. On Tuesday, June 30, 2015 at 12:00:55 PM UTC-7, Jason Lewis wrote: I think my company would be willing to pay a reasonable fee for private Clojars repos, on something like the Github model? Not sure what the lein overhead would be, I know grabbing Datomic Pro from non-Clojars with creds is a motherf@#@#ing pain in the ass at times (but only in comparison to the conveninece of Clojars. Maybe a private-Clojars solution could be a good way to support the project and encourage a standardized lein/project.clj method of grabbing non-free artifacts? On Tue, Jun 30, 2015 at 2:17 PM Dave Dixon dave.d...@gmail.com javascript: wrote: +1. Neither S3 or Archiva have worked out well for us long term. On Monday, June 29, 2015 at 6:50:44 PM UTC-7, Daniel Compton wrote: Hi folks I wondered if one possible solution for ensuring Clojars long-term viability and maintenance would be to use it to host private repositories for paying users as well? For many people, the thought of setting up and maintaining Nexus or Archiva isn't an appealing one. I'm aware of the S3 wagon, and perhaps that's what people use if they don't want Nexus. I'd be interested to hear what other people are doing, and whether Clojars would be a good middle ground between simplicity and functionality. Many Clojure users already have Clojars accounts and will have setup Lein to deploy here already. Additionally, many people would support Clojars for the goodwill factor. On the other hand I'm aware this would require more development effort, there may not be much demand for this, and the infrastructure costs may not be large enough that it's worth going down this route. Just a thought, Daniel. -- -- Daniel -- 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 javascript: 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 javascript: 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 javascript:. 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 clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Confusion about cljs.build.api/build
Update: thanks to a comment at the bottom of one of the files in the clojurescript project https://github.com/clojure/clojurescript/blob/master/src/main/clojure/cljs/closure.clj#L1828, I think I know how to fix this. Instead of a list, I should have used a vector. I don't know why this works, I imagine there is a seq? somewhere it shouldn't be but I really don't know. -Zack On Monday, June 29, 2015 at 9:29:42 PM UTC-4, Zack Maril wrote: Hello, I'm trying to use cljs.build.api/build to compile dynamically generated clojurescript into one javascript string. I've been running into many weird errors and I'm quite certain I'm doing something wrong. The simplest test case I've found is the following: (cljs.build.api/build '((ns test.test)) {:optimizations :advanced}) The above prints a parse error from closure I think and then returns a string that contains generic javascript about Math but nothing else: ERROR: JSC_PARSE_ERROR. Parse error. primary expression expected at test.test line 3 : 1 Are there other options I am supposed to be passing in? Do I have the nesting wrong on the structures? I've tried a list like '(+ 1 1) instead but the string output doesn't look to be doing any work and that level of nesting doesn't seem to be what is implied by cljs.closurei/compile-for-seq with it's forms argument. Any what is going on? -Zack -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Joda Time version conflict? Initializing JollyDayHoliday for SUTime
Also, your last error (about in-ns) is from an incompatible version of clj-time, not joda-time. By the way, this has nothing to do with interop, it's straight dependency management on the jvm. Concerning FD's solution of classloaders, you'll also jave to figure out a way to package the different versions into your JAR, which will not be trivial if both versions use the same package names (which seem to be the case). I think your best bet at this point is to carefully read the lein deps :tree output to note all of the required versions of clj-time and jodatime, and then try to play with either excludes or version ponning in your project.clj until you find a combination that works. Also remember that your code is the most flexible: are you absolutely stuck using clj-time 0.6.0 for your own code ? On Tuesday, 30 June 2015, Sean Corfield s...@corfield.org wrote: Have you actually tried any of the exclusions that Leiningen suggests? For example: [clj-time 0.6.0] overrides [ring 1.4.0-RC1] - [ring/ring-jetty-adapter 1.4.0-RC1] - [ring/ring-core 1.4.0-RC1] - [clj-time 0.9.0] and [ring 1.4.0-RC1] - [ring/ring-devel 1.4.0-RC1] - [ring/ring-core 1.4.0-RC1] - [clj-time 0.9.0] and [ring 1.4.0-RC1] - [ring/ring-core 1.4.0-RC1] - [clj-time 0.9.0] Consider using these exclusions: [ring 1.4.0-RC1 :exclusions [clj-time]] [ring 1.4.0-RC1 :exclusions [clj-time]] [ring 1.4.0-RC1 :exclusions [clj-time]] This tells you to that Ring is pulling in the later version of clj-time (and, hence, the Joda Time 2.6) but clj-time 0.6.0 is pulling in 2.2 (next set of suggested exclusions). The suggestion is to add the exclusions to your Ring dependency: [ring 1.4.0-RC1 :exclusions [clj-time joda-time]] See if that helps. Sean On Jun 29, 2015, at 5:17 PM, gingersafflo...@gmail.com javascript:_e(%7B%7D,'cvml','gingersafflo...@gmail.com'); wrote: If the worst comes to the worst, you may need to run the NLP module and the Clojure code in separate JVMs using some form of IPC to exchange data. That is what I'm looking at right now, though I've also been told that I absolutely must have this working by tomorrow morning, so I'm a little frustrated with the amount of work I face tonight. Also, a month ago we were doing IPC and then we gave up on that redesigned the NLP to work as a library we could embed inside of the Clojure app, but now it looks like we need to reverse that decision. For me, it's been a good reminder that easy Java interop is true up to a point, but then very not true for certain kinds of ambitions. On Monday, June 29, 2015 at 7:18:07 PM UTC-4, Fluid Dynamics wrote: On Monday, June 29, 2015 at 6:38:40 PM UTC-4, Gary Verhaegen wrote: Assuming there is a version that works for both dependencies, you can manually fix it in your own project.clj. Your own direct dependencies will override transitive ones. Otherwise, as far as I can tell, you're stuck. Maybe you can try using an older clj-time? In theory, JodaTime 2.6 should not have any API-breaking changes since 2.1, or they should have called it 3.something. So, if you can force the NLP module to use JodaTime 2.6 it *should* work. If that fails, it may still be possible if you can force the two versions of JodaTime to load in separate classloaders. I haven't the foggiest how that might actually be achieved. Actually I'm somewhat surprised that the Java NLP component and clj-time are not *already* loading in different classloaders, the former in the standard Java classloader and the latter in Clojure's DynamicClassLoader. Two different versions of the same Java package or Clojure namespace can *usually* coexist peacefully in different classloaders, though, modulo native dependencies or centralized filesystem stuff (e.g. a single .foo file in the user directory that they both modify, stepping on each others' toes, and they can't be overridden to look for separate files to each keep their own version). If the worst comes to the worst, you may need to run the NLP module and the Clojure code in separate JVMs using some form of IPC to exchange data. Then deployment, startup, and shutdown become more complicated and annoying, and communication across the divide much less efficient (like kernel mode switching, IPC means carting data across address space boundaries), so ideally there'd be a clean internal boundary between the NLP-parts and the rest that has relatively little traffic crossing it. You'd then end up with a kind of NLP daemon and an application that had a dependency on it. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com javascript:_e(%7B%7D,'cvml','clojure@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+unsubscr...@googlegroups.com
Running test.check and cljs.test tests under Clojurescript
I'm trying to get Specter's tests running under ClojureScript. I can run the tests manually in a REPL just fine, but I cannot figure out a straightforward way to run all the tests like you can in Clojure with lein test. Here are the tests I'm trying to run, which are a mix of tests defined using test.check and cljs.test: https://github.com/nathanmarz/specter/blob/cljs/test/com/rpl/specter/core_test.cljc I've tried the instructions in http://abratukhin.blogspot.com/2015/03/how-to-set-up-unit-tests-in.html but the cemerick.cljs.test package does not seem to run test.check tests defined with defspec. How can I set up a runner to run my tests with a one line command at the terminal? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Clojars Private/Commercial Repos
Clojars is pretty much a one man show right now, but it currently requires little time to maintain, and works fairly well. If it supported private repos, the maintenance and support time would go up considerably, and it would require some sort of business entity around it. Doing that has been considered in the past, but isn't something I'm comfortable doing right now, due to other obligations. The hosting costs are relatively small, and still being sponsored by Alex Osborne (clojars' original author). I've considered selling corporate sponsorships or having a fundraising campaign to establish a fund that could take that burden off of Alex, and to have on hand to cover contracting someone to help with recovering from potential compromises (like the linode breach[1]), patching vulnerabilities (heartbleed, etc), or rebuilding the server in case of failure, if such help is needed. I have no idea if I'll need some sort of legal entity to hold that money, but if one is needed, that might be something the recently proposed Clojure community organization[2] could handle. I know that it's often easier to give money over time, but if folks are interested in helping clojars now, we have quite a few open issues[3] that are ready for discussion/patches. - Toby [1]: https://groups.google.com/forum/#!topic/clojars-maintainers/uAVJVwRAnSU [2]: https://groups.google.com/d/msg/clojure/i2YqnCkeemM/0nOJaK8U91EJ [3]: https://groups.google.com/d/msg/clojars-maintainers/AKLPSVY5Qcw/w63eLy7pU58J On Tue, Jun 30, 2015 at 3:34 PM, Christopher Small metasoar...@gmail.com wrote: This is being done now with npm: https://www.npmjs.com/. Cost is $7/mo, which seems reasonable. On Tuesday, June 30, 2015 at 12:00:55 PM UTC-7, Jason Lewis wrote: I think my company would be willing to pay a reasonable fee for private Clojars repos, on something like the Github model? Not sure what the lein overhead would be, I know grabbing Datomic Pro from non-Clojars with creds is a motherf@#@#ing pain in the ass at times (but only in comparison to the conveninece of Clojars. Maybe a private-Clojars solution could be a good way to support the project and encourage a standardized lein/project.clj method of grabbing non-free artifacts? On Tue, Jun 30, 2015 at 2:17 PM Dave Dixon dave.d...@gmail.com wrote: +1. Neither S3 or Archiva have worked out well for us long term. On Monday, June 29, 2015 at 6:50:44 PM UTC-7, Daniel Compton wrote: Hi folks I wondered if one possible solution for ensuring Clojars long-term viability and maintenance would be to use it to host private repositories for paying users as well? For many people, the thought of setting up and maintaining Nexus or Archiva isn't an appealing one. I'm aware of the S3 wagon, and perhaps that's what people use if they don't want Nexus. I'd be interested to hear what other people are doing, and whether Clojars would be a good middle ground between simplicity and functionality. Many Clojure users already have Clojars accounts and will have setup Lein to deploy here already. Additionally, many people would support Clojars for the goodwill factor. On the other hand I'm aware this would require more development effort, there may not be much demand for this, and the infrastructure costs may not be large enough that it's worth going down this route. Just a thought, Daniel. -- -- Daniel -- 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. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@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 clojure@googlegroups.com Note that posts from new members are moderated - please
Re: [ClojureScript] [ANN] Clojure 1.7.0-beta3
Is anyone interested in filing a bug against IBM JDK 1.8.0 where it appears that its JIT compiler fails about half of the time when doing 'mvn clean test' in a Clojure 1.7.0 source tree? You can find some attachments in an earlier message of this thread that can get you started, but producing your own error logs with specific versions of OS, JDK, and Clojure source code would probably be best. Let me know if you can't reproduce it for some reason. I don't use IBM JDK very much, other than to see if anything goes wrong when you try to build and test Clojure using it. I'm hoping someone more motivated in seeing this fixed for the IBM JDK will take up the torch. Andy On Sun, May 17, 2015 at 12:53 AM, Herwig Hochleitner hhochleit...@gmail.com wrote: Given that the JVM shouldn't segfault in any case, that's cleary looks to me like an ibm jdk bug, that could hit other JVM languages aswell. Maybe IBM is interested in fixing it? In my case, the VM most likely has the excuse of not expecting classpath-jar files to be swapped out, but the JIT? -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups ClojureScript group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescr...@googlegroups.com. Visit this group at http://groups.google.com/group/clojurescript. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.