This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-12-13
Channels
- # adventofcode (84)
- # aleph (1)
- # announcements (2)
- # aws (27)
- # beginners (52)
- # braveandtrue (2)
- # calva (440)
- # cider (7)
- # clara (2)
- # cljdoc (26)
- # cljs-dev (70)
- # clojure (131)
- # clojure-berlin (4)
- # clojure-brasil (1)
- # clojure-europe (2)
- # clojure-greece (4)
- # clojure-hamburg (1)
- # clojure-italy (4)
- # clojure-losangeles (6)
- # clojure-nl (14)
- # clojure-spec (7)
- # clojure-uk (25)
- # clojurescript (26)
- # component (2)
- # cursive (13)
- # datomic (60)
- # dirac (59)
- # docker (1)
- # figwheel (1)
- # figwheel-main (2)
- # fulcro (12)
- # graphql (5)
- # juxt (33)
- # leiningen (19)
- # nrepl (1)
- # off-topic (37)
- # protorepl (2)
- # re-frame (18)
- # reagent (46)
- # remote-jobs (1)
- # ring-swagger (1)
- # shadow-cljs (88)
- # sql (10)
- # tools-deps (64)
- # vim (24)
when using clj 1.10.x, what sort of expectation should you have concerning what version of cljs to use? should you only expect/assume it to work with 1.10.x cljs?
I believe a pattern I’ve seen is that cljs 1.10 stuff seems to begin to embrace clj 1.10 additions, but cljs 1.9 wouldn’t do that
but it is also the case that I can use the latest clj 1.10 (RC) release with lower cljs versions at least back into the 1.9's. So I just am not sure what sort of upgrade flow is expected to be followed
Side note: not sure if I should have thi son #cljs-dev or #clojurescript - it may be the latter - if so, sorry
eg. I jumped a project to Clojure 1.10.0-RC5 to try it out, had an old ClojureScript v1.7.x - and it failed with spec issues (not super surprised)
That partially addresses it in one direction for me. Just was trying to have a better feel for the relationship. Perhaps there isn’t a really direct one. I tend to just dig around in cljs changes.md to see if something seems to depend on something of a more recent clj or have been fixed to be compatible with some newer clj
@mikerod I think expecting alpha features to work across releases is unlikely to ever lead to good results
and you'll get Clojure 1.10 features (some of which may be under development, so proceed with some caution)
> we don’t believe in semantic versioning Yeah, I’ve heard the Rich talk on it. I’m in agreement with the points presented there.
So I guess the thing that is weird is the breaking newer clj that happened due to specs
Clojure may close thing that were underspecified which people knowingly or unknowingly abused
in other cases, ClojureScript may have a few additional patterns that don't exist in Clojure etc.
just a heads up on http://clojurescript.org … the cloud CI product we use for site builds is being turned off this weekend and so the auto-builds will not exist anymore. I am working on a replacement, but it will probably not be ready immediately. I am able to build and deploy either site locally so I can do it on demand, but you will need to poke me to do so. Sorry for the inconvenience! I’ve known about this for a while but of course it’s never urgent until it’s actually urgent… :)
digging more into datafy. I think this line is supposed to check if we can add meta data to the value from datafy, but it seems to not work as I expect:
https://github.com/clojure/clojurescript/blob/master/src/main/cljs/clojure/datafy.cljs#L24
ex from Clojure:
user=> (def x (with-meta [1 2 3] {`clojure.core.protocols/datafy (fn [_] [2 3 4])}))
#'user/x
user=> (d/datafy x)
[2 3 4]
user=> (meta (d/datafy x))
#:clojure.datafy{:obj [1 2 3], :class clojure.lang.PersistentVector}
(def x (with-meta [1 2 3] {:clojure.datafy/datafy (fn [_] [2 3 4])}))
(d/datafy x)
;; => nil
(meta (d/datafy x))
;; => nil
there’s also the case where the datafied value is a JS object and it throws:
(def x (with-meta [1 2 3] {:clojure.datafy/datafy (fn [_] #js {})}))
(d/datafy x)
;; => Error: No protocol method IWithMeta.-with-meta defined for type object: [object Object]
I’ll create an issue for this. I think if I create patch for it I could probably also try my hand at addressing CLJS-2999
@lilactown first question, is what does the Clojure implementation do
before opening issues around this probably useful to have a few back and forths here first
the Clojure implementation seems to work fine with arbitrary Java objects AFAICT:
user=> (def x (with-meta [1 2 3] {`clojure.core.protocols/datafy (fn [_] (Object.))}))
#'user/x
user=> (d/datafy x)
#object[java.lang.Object 0x3381b4fc "java.lang.Object@3381b4fc"]
user=> (meta (d/datafy x))
nil
the current Clojure impl uses this to check whether to add meta to the datafied value: (instance? clojure.lang.IObj v)
@lilactown link to the relevant source?
@lilactown proceed!
@lilactown it's really not so bad, did you submit your CA already?
@dnolen can confirm CA receipt
@lilactown there are scripts in script
if I remember correctly, or you bootstrap a REPL
folks, can I do something else in order to have the breaking change release note addition merged in? https://github.com/clojure/clojurescript-site/pull/279