-
Notifications
You must be signed in to change notification settings - Fork 50
add byte-streams #51
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
base: master
Are you sure you want to change the base?
add byte-streams #51
Conversation
Cool. Now we know |
The tricky thing with this library is the fact it uses the single segment package name which makes it extremely hard to native-compile with GraalVM without |
Will suggest a patch against |
Cool! Thanks for that. Please make sure your changes are minimal, so that we can ensure the backward compatibility for byte-streams :) |
Hi @piotr-yuxuan, thx for the PR. Please remove the template, versions are changing so fast that I don't think there is much values on capturing these. The idea of testing the builds with the different GraalVM versions and building a build matrix already came up in some earlier discussions, if you are keen we are open to a PR for that. If you intend to work on it, please open a separate issue/PR for the related discussions so that we keep this about |
I will exercice code with some more test cases to have more confidence, then I'll mark the PR ready for review. |
@piotr-yuxuan I can see the |
primitive-math is a library that comes up more often! for dtype.next it was inlined for this reason: https://github.com/cnuernber/dtype-next/blob/master/third-party/com/github/ztellman/primitive_math.clj |
Wondering if the library could be donated to |
FYI @ztellman #51 (comment), would you consider donating
|
Zach's not very active in clj these days, but he's been generally amenable to putting his code under clj-commons, so I doubt that would be an issue. My bigger concern is breaking backwards-compatibility in byte-streams and primitive-math. Is there a pointer to the problem with GraalVM? I know single-segment namespaces aren't recommended, but being unable to handle them seems more like a bug in GraalVM, no? |
@KingMob It's not an issue with GraalVM, but with https://github.com/clj-easy/graal-build-time. The way I solved this for https://github.com/clj-commons/digest/blob/master/src/clj_commons/digest.clj is to copy the single segment namespace |
Hmmmm. I'm not a fan of the duplication, but primitive-math and byte-streams are pretty small. Byte-streams isn't especially popular, but primitive-math has 4 million downloads. OTOH, they're both pretty stable, so I doubt people who fail to update their requires will miss much. They each have a single top-level file; I should be able to copy those down a level to something like |
I would also consider |
Btw, yes, it's either duplication or breaking changes. I think it's better to have duplication + backwards compatibility. |
@piotr-yuxuan Did you see my DM on Clojurians Slack? |
I've been able to compile lacinia in these environments:
Also, I suggest to add a PR template. Feel free to amend or remove it.
In addition to this, what would the maintainers think about a GitHub action to test that everything compiles correctly when a PR is open, and periodically tries to update library versions? Parallel jobs and build matrix could come handy here. If there were any interest, happy to think more about it.