system also depends on the latest released version of monger, which has an invalid defn in it (:or [ ] instead of :or { }) in monger.core. afaict, this problem has been fixed in master of monger, but no new version is available yet.
On Saturday, August 20, 2016 at 12:15:08 AM UTC-5, Alex Miller wrote: > > Those are bugs in system. When you see "(system.repl (require > [com.stuartsierra.component :as component] ..." those are the arguments to > the ns form, so the "system.repl" is the namespace name. You cut out the > stack trace, but I'd expect the top frame to be in that ns. > > PRs filed at https://github.com/danielsz/system/pull/93 and > https://github.com/danielsz/system/pull/94 (found two problems) > > All Clojure code is compiled. Some is compiled early (during AOT) but most > is compiled late (during load). At the point where you loaded these > namespaces, they were compiled to be invoked and you triggered the errors. > > Alex > > On Saturday, August 20, 2016 at 12:01:55 AM UTC-5, Alan Moore wrote: >> >> All, >> >> Is anyone else experiencing problems using danielz/system and/or >> stuartsierra/component? I'm getting the following: >> >> Caused by: java.lang.IllegalArgumentException: Call to clojure.core/ns >> did not conform to spec: >> In: [1] val: ((require [com.stuartsierra.component :as component] >> [clojure.tools.namespace.track :as track] [system.reload :as reload] >> [clojure.stacktrace :as st] [io.aviso.ansi :refer [bold-red bold-yellow]])) >> fails at: [:args] predicate: (cat :docstring (? string?) :attr-map (? map?) >> :clauses :clojure.core.specs/ns-clauses), Extra input >> :clojure.spec/args (system.repl (require [com.stuartsierra.component :as >> component] [clojure.tools.namespace.track :as track] [system.reload :as >> reload] [clojure.stacktrace :as st] [io.aviso.ansi :refer [bold-red >> bold-yellow]])) >> >> I noticed Alex's PR for aviso but I'm not using it explicitly - it must >> be coming in transiently but I don't think that is the problem: >> >> I can see the use of (require ...) in the implicated ns-form, here: >> >> (system.repl (require [com.stuartsierra.component :as component] ... >> >> but I searched my project for any "(require" and didn't find any. >> >> There must be some macro or namespace magic happening in either of those >> two libraries. I've been searching them for any use of (require ...) vs >> (:require ...) and only found a couple in danielz/system, here: >> >> src/system/reload.clj >> src/system/repl.clj >> >> but I'm not exactly sure how those would cause my error. The second one >> looks like it is related. >> >> Alex - does a previously compiled library, like system, pulled from >> clojars uses "(require" be subject to the spec conformance? How much of the >> ns-form is resolved at compile time and how much happens at runtime? >> >> Clearly I've not done my deep-dive homework on that form (yet) and how it >> works... I know those two libraries do a bit of namespace manipulation to >> deal with reloading repls and whatnot so it very well could be something >> they are doing that is beyond my current understanding and pay grade. >> >> Alan >> >> >> On Friday, August 19, 2016 at 11:35:31 AM UTC-7, Alex Miller wrote: >>> >>> One thing to note is that the new specs for clojure.core means that >>> there is a reasonable amount of (broken) code in the wild that now does not >>> compile. >>> >>> I have filed PRs in a number of commonly used projects and while those >>> were all merged, most have not yet been released into new versions yet. Any >>> project that uses any of those projects via dependencies will also have >>> issues. So, expect to see some breakage if using the latest alpha. In >>> particular, ClojureScript itself had a bad ns declaration through version >>> 1.9.93 so anything not on a fresh CLJS will likely see that. >>> >>> The three most common things I saw were: >>> >>> 1. (ns ... (require ...) (import ...) ) instead of (ns ... (:require >>> ...) (:import ...) ) >>> >>> 2. (fn a.b [] ...) - fully-qualified symbol names in fn (these are >>> pretty much always the result of a sloppy macro that expands to fn) >>> >>> 3. (let [{ ... :or {:a 1}} {}] ... ) - :or keys that are not simple >>> symbols. There were some accidental cases where this did something for >>> fully-qualified keyword keys in the past, but those were not intended and >>> are no longer accepted as of Clojure 1.9.0-alpha8. All of the cases I found >>> were actually typos though where the keyword was used instead of the symbol. >>> >>> >>> >>> >>> On Friday, August 19, 2016 at 1:15:06 PM UTC-5, Alex Miller wrote: >>>> >>>> Clojure 1.9.0-alpha11 is now available. >>>> >>>> Try it via >>>> >>>> - Download: >>>> https://repo1.maven.org/maven2/org/clojure/clojure/1.9.0-alpha11 >>>> - Leiningen: [org.clojure/clojure "1.9.0-alpha11"] >>>> >>>> 1.9.0-alpha11 includes the following changes since 1.9.0-alpha10: >>>> >>>> Clojure now has specs for the following clojure.core macros: let, >>>> if-let, when-let, defn, defn-, fn, and ns. Because macro specs are checked >>>> during macroexpansion invalid syntax in these macros will now fail at >>>> compile time whereas some errors were caught at runtime and some were not >>>> caught at all. >>>> >>>> - CLJ-1914 - Fixed race condition in concurrent range realization >>>> - CLJ-1870 - Fixed reloading a defmulti removes metadata on the var >>>> - CLJ-1744 - Clear unused locals, which can prevent memory leaks in >>>> some cases >>>> - CLJ-1423 - Allow vars to be invoked with infinite arglists (also, >>>> faster) >>>> - CLJ-1993 - Added *print-namespace-maps* dynamic var that controls >>>> whether to use namespace map syntax for maps with keys from the same >>>> namespace. The default is false, but standard REPL bindings set this to >>>> true. >>>> - CLJ-1985 - Fixed with-gen of conformer losing unform fn >>>> - Fixed clojure.spec.test/check to skip spec'ed macros >>>> - Fixed regression from 1.9.0-alpha8 where type hints within >>>> destructuring were lost >>>> - Fixed clojure.spec/merge docstring to note merge doesn't flow >>>> conformed values >>>> - Fixed regex ops to use gen overrides if they are used >>>> >>> -- 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.