Last year I released https://github.com/quoll/tiara as a library for ordered maps and sets. At the time, it was faster than both https://github.com/frankiesardo/linked and https://github.com/clj-commons/ordered. I just re-ran those benchmarks today, and was surprised to discover that Ordered has improved a lot for random access. It also doesn't run into the heap exhaustion that I used to encounter while benchmarking. This surprised me, because there has been no change to the relevant code in any of these libraries. Instead, I'm running on JDK 21, while last year I think it was run on JDK 11. Anyway, this prompted me to tweak Tiara again, since it had fallen behind (by 15%) on random access. But https://github.com/quoll/tiara 🙂 This reminded me that there had been a comment last year wondering if I might take on the "Ordered" project. I think @nbtheduke manages it now.
I guess my question is… if I took it on, would we want the existing Ordered project, or is Tiara appropriate to use instead?
i don't but i am in the clj-commons org on github and can help as you might need
Sean thought it might be you, but I just saw that you have a PR on it right now, so I figured it might not be!
i think additive non breaking changes are welcome
There's a code owners convention for clj-commons projects: https://github.com/clj-commons/ordered/blob/master/.github/CODEOWNERS
Ah, thank you!
You are most welcome!
Well, if Daniel were to see this right now, I would tell him to go to bed. So I guess I will catch up with him at some point in the coming days
As for ordered vs Tiara... I know that clj-yaml currently uses ordered. And https://clojars.org/org.flatland/ordered/dependents. So we'd keep it around, I'm sure. But if Tiara is a better alternative, some folks are sure to move to it.
(if that's what you were asking?)
I think someone suggested updating Ordered to use Tiara's mechanism instead.
I haven't benchmarked removals (since that hasn't been an interesting use-case for me), but on insertion and reading, it's generally faster
Oh! I see!
It uses less memory than Ordered does, but as I pointed out in the main thread, JDK 21 seems to have removed that as an issue 🙂
Babashka also has support for ordered. So that would probably be a consideration. Changes to ordered in the past have affected it (for examplehttps://github.com/clj-commons/ordered/issues/71)
I do recall @borkdude being in the conversation last year
Here we are… https://clojurians.slack.com/archives/C06MAR553/p1685188680322709?thread_ts=1685143200.375959&cid=C06MAR553
Sweet!
At the time I thought that maybe I should, but then life got in the way. However, I'm doing Clojure full-time again, so it has my head back in the space.
Very nice to have your head (and the rest of you that makes you you) back with us @quoll!
Well, I never fully left. But my role had not been as a developer, and then when I got into AI, I had to do more Python. That was both good for me, and a good reminder of why I prefer Clojure
But I work for @slipset now. He’s been making me learn Liberator 🙂
(not true: I've been learning the company's system, and in the process I've had to start learning Liberator)
Cue the Blake's 7 theme
Yes, ordered perf improvements are welcome! :)
And glad you're more back into Clojure now!
Well, it depends on what you’re doing as to how much of an improvement you’re likely to experience 🙂
I guess so, trade-offs