This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-06-02
Channels
- # ai (1)
- # aleph (16)
- # announcements (1)
- # architecture (51)
- # babashka (32)
- # beginners (27)
- # calva (3)
- # clerk (1)
- # clojure (49)
- # clojure-art (1)
- # clojure-denver (6)
- # clojure-europe (70)
- # clojure-nl (1)
- # clojure-norway (56)
- # clojure-uk (2)
- # clojuredesign-podcast (4)
- # clojurescript (57)
- # clr (15)
- # community-development (3)
- # conjure (1)
- # core-async (10)
- # data-science (1)
- # datalog (2)
- # datomic (3)
- # emacs (12)
- # events (1)
- # gratitude (4)
- # honeysql (9)
- # hyperfiddle (86)
- # jobs (4)
- # off-topic (10)
- # pedestal (5)
- # portal (11)
- # practicalli (2)
- # reitit (7)
- # releases (3)
- # remote-jobs (1)
- # sql (15)
- # tools-build (8)
- # xtdb (4)
Are there any plans for improving clojure's persistent collections with a CHAMP implementation? It seems to perform better than the current all around https://michael.steindorfer.name/publications/phd-thesis-efficient-immutable-collections.pdf https://github.com/usethesource/capsule
This comes up from time to time, you can search the slack for champ to see some earlier discussions like https://clojurians.slack.com/archives/C06E3HYPR/p1565871246269100
It'd be lovely if clojure had some hefty goals wrt performance improvements, like ruby had with 3x3 (and some people are even mentioning 4x4)
keep in mind that HAMT in the papers != HAMT in Clojure. it'd be lovely if you could wave magic wands around, but doing a serious review of the differences, analyzing which are important in Clojure's impl, and rigorously performance and validity testing any changes is a LOT of work for an uncertain amount of gain. there are rarely unambiguous results from stuff like this - usually it makes some things faster and some things might be slower and then you need to evaluate those tradeoffs. and also keep in mind that this is both the oldest and in some ways most critical code in the language.
wanting "Clojure to be 3x faster" is a) totally ambiguous (vs in Ruby where at least the perf of a Rails app is a common context), b) it's probably unrealistic - Clojure's bytecode is not that much different than Java's for the majority of your code, and c) this is not what anyone says is a priority on the Clojure surveys (where it typically comes in around 7th)
there are definitely problem areas, some that we have identified to work on (map merge comes to mind), and would be happy to see specific things like that show up in Ask Clojure to get prioritized
https://github.com/cnuernber/ham-fisted is an interesting related library that had a talk at the last conj (and the readme has an interesting caveats section)
> wanting "Clojure to be 3x faster" is a) totally ambiguous ruby pulled 3-4 major benchmarks to work against iirc. i'm not saying that you should make clojure 3x faster. i'm just saying that it'd be nice if there was a major goal like that wrt the language that could mobilize the community/researchers/core team alike
in general, I don't get the sense that this is a high priority issue for us atm
what are high priority issues? i tried looking at jira but i can't seem to find a way to sort by priority. i'd be happy to contribute
we are currently working on a set of java interop related issues (functional interfaces, streams, varargs, etc)
https://ask.clojure.org/index.php/questions/clojure?sort=votes is one way to see top voted issues in Ask Clojure
I'm trying to find the talk that introduced Cognitect Anomalies - anyone know which it was?
Hmm.... I dimly remember that it was given by Stuart Halloway. And would have been at either Clojure Conj or Clojure/West.
Yes! I remember it being Stu too. Chat GPT told me it was Rich's maybe not but I knew that wasn't it
Probably you have this legendary slide in mind? https://youtu.be/oOON--g1PyU?t=1181
Ahaha yes you read my mind
Oh, I was curious so went to look up the source. Apparently it was never published except in the jar. Since it's only a few lines of code, here it is:
;; Copyright (c) Cognitect, Inc.
;; All rights reserved.
;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License.
;; You may obtain a copy of the License at
;;
;;
;;
;; Unless required by applicable law or agreed to in writing, software
;; distributed under the License is distributed on an "AS-IS" BASIS,
;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;; See the License for the specific language governing permissions and
;; limitations under the License.
(ns cognitect.anomalies
(:require [clojure.spec.alpha :as s]))
(s/def ::category #{::unavailable
::interrupted
::incorrect
::forbidden
::unsupported
::not-found
::conflict
::fault
::busy})
(s/def ::message string?)
(s/def ::anomaly (s/keys :req [::category]
:opt [::message]))
@U01D37REZHP You mean this OSS repo? https://github.com/cognitect-labs/anomalies/
(I've always relied on it as a git dep whenever I've needed it -- I didn't even know there was a JAR!)
Oh, strange! I only looked under the https://github.com/cognitect/ org. Didn't realize there were two of them.
I didn't actually know about the cognitect(.com) repo -- I've been using https://github.com/cognitect-labs/test-runner for years (we started using the CLI in 2018) so that's where I generally look for Cognitect OSS...
(ah, I've never used Transit so I've never looked at any of those repos)
I like(d) transit and have used it in the past, but it's not getting basic releases to retain compatibility as ecosystem languages inevitably break interfaces, unfortunately.
I suspect Cognitect hoped the various communities work fork those variants and maintain them within their communities...
(it's not like Cognitect has much incentive to maintain a whole bunch of language variants themselves, given their focus -- and I don't see any Pull Requests, so it's not like those communities are contributing back either)
Not to be smug, but writing software once should be plenty. Isn't it a riot that there must be a lot of stuff in Python that soon rots if it's not constantly attended!
☝️:skin-tone-2: Indeed... this is why breaking changes are bad in so many ways...
I think if they want something like that they should be explicit. Typically I for instance don't go ahead and release a fork of someone's project because of a minor fix.
The python one in fact has already been fixed. The fix is sitting in the master branch but no one has bothered to deploy it, and they don't reply to tickets.
@U064X3EF3 is this something you can expedite?
Why release a library, announce it in a talk at your major conference, and then not bother to even release a trivial update?
(sorry if I'm a bit abrasive about this, but it's frustrating to me. I know you shouldn't ask too much of open source maintainers, and being one myself I understand that very well, but given that Cognitect is the defacto steward of the Clojure language and ecosystem, I think there should be more clarity and at least some responsiveness from them, at least on anything they officially release)
Given there's a workaround in that issue for installing via pip direct from GitHub, I suspect that contributes to the apparent lack of urgency...?
Maybe at least offer that in a reply to the ticket?
It's right there in that ticket...
@U01D37REZHP hey Darrick, I think I can safely say that no is watching that repo. I'm probably the closest person to being aware of it, and I have never looked at it, and have no idea how to "release" it
there are probably notes on how to do so .... somewhere
I would be happy for you to adopt it by forking it, releasing it with whatever name makes sense for you, and pointing the existing repo to that
Perhaps contact the person who released a fork already to make them the official person? I don't have any real involvement in the python community, I just wanted to use this library in a project, but the lack of release made me do something different. https://github.com/cognitect/transit-python/issues/37#issuecomment-1046328513
Anyway, it may be worth a look through the various projects to see if there are people waiting on similar minor issues or answers or clarity on what's happening with them, whether they are alive, etc.
I've updated the readme to point to the fork and archived it
same for transit-ruby
the others are still being maintained by me (java and clj) and David Nolen (js and cljs) when time allows
Thanks, Alex. That's sort of what I expected (and what I said early on in the thread about Cognitect hoping others would fork and maintain the "non-core" language versions).
Thanks Alex, sorry to be a pest about it!
does anybody know how to use sort and pull pattern in datomic.? Something like this
(d/q '[:find (sort ?open-time) (pull ?e [*])
...Sorry I cannot help, but do you know there is a #C03RZMDSH channel? I bet they will have an answer. hth!