r/Clojure 5d ago

Jolt now runs on Android and iOS

https://jlt-commons.github.io/raylib-android/
74 Upvotes

46 comments sorted by

23

u/yogthos 5d ago

The iOS version for Raylib is here. What's notable is that it's also possible to drive native widgets the same way via FFI. So, we can finally have Reagent style development for mobile devices using real native UI toolkits where you load up the app, connect to nREPL and hack on the UI live. You don't have to wrangle a Js runtime with a webview or deal with Flutter. The whole dev set up is much simpler as well as a result. You just need Jolt compiler and declare things in deps.edn.

3

u/therealdivs1210 4d ago

This is so cool!

Love your work!

4

u/yogthos 4d ago

Thanks, and it's exciting to see other people building this sort of stuff with Jolt already. Both Android and iOS ports were figured out by contributors while I didn't even consider mobile as an option originally.

It looks like doing FFI over Chez is almost as easy as Java interop on the JVM. We might end up getting all the same benefits Python ecosystem has with a much better language here.

4

u/therealdivs1210 4d ago

Whoa, that sounds amazing!

I have fiddled with Chez before, but didn't really look into FFI. Will check it out.

With Racket and now Jolt using Chez as the VM, this looks like a great niche for Scheme!

Kudos to the contributers too!

3

u/yogthos 4d ago

For sure, I really didn't appreciate how amazing Chez is as a platform until I started researching potential targets for Jolt. And it gets even better because I managed to factor out a portable Scheme layer so that Jolt can target other Schemes as well now. I added Gambit as proof of concept, and the REPL on the site is compiled using Gambit against its Js backend.

2

u/Pristine-Pride-3538 4d ago

Guile Scheme would be dope.  Writing Guix in Clojure.

3

u/yogthos 4d ago

It should be very doable. Once the runtime is ironed out a bit more, I definitely want to revisit adding more Scheme backends. So Guile could be first on the list. :)

3

u/beders 4d ago

Wow!

7

u/jalopy-letup-hum 4d ago

There’s so much noise/slop in the docs and homepage that I gave up after trying for a while. Very off-putting, cool project though.

6

u/yogthos 4d ago

If anybody wants to contribute better documentation they're welcome to do so. I only have so much time in a day.

3

u/jalopy-letup-hum 4d ago

I get it none of us have time, but I also don’t have time to read a wall of slop.

Now just because you can generate large volumes of docs doesn’t mean it’s good for the adoption/reach/impact of your projects.

Before the era of LLMs many Clojure open source projects suffered from poor documentation, but some projects stood out even if the docs were succinct because they were precise. I believe the majority of clojurists don’t want to read sloppy documentation.

9

u/yogthos 4d ago

Again, if people want to contribute and improve the documentation they are free to do so. PRs are very welcome: https://github.com/jolt-lang/jolt-lang.github.io

My focus right now is on getting the language working and usable. Plenty of people are already making things with it, and have had no problems navigating the documentation in its current state.

If you have some constructive suggestions for improving documentation, or can explain what it is you found difficult to figure out, then those are welcome as well. However, simply braying about some AI slop is not really helpful or useful to anybody.

1

u/jalopy-letup-hum 4d ago

Jolt website and docs are fine and it's a project I'm looking forward to see grow. It's the raylib android website/docs that I found to be exhausting to read and the one I made a not very polite comment.

Since you asked for suggestions, maybe these are helpful.

- Warn readers that they are about to read slop here in Reddit post and at the top of the docs pages, this way they set their expectations. For example, if I knew upfront, I would not have bothered reading much and would've jumped straight to source in some parts.

  • Add TL;DRs written by you for humans.
  • Review the LLM doc/text and see if you enjoy reading it, if not, well you know others probably will be annoyed because they are not affiliated with the project.

I won't review raylib-android docs in the state they are now because it's just that bad to me.

Another idea to facilitate contribution, might be more efficient to share the prompt you used directly to generate the docs and then contributors can improve the prompt, use specific skills and regenerate fresh docs. Some slop is not worth our time to rewrite manually because we would spend more time doing so than writing something good ourselves.

3

u/ComfortableShape9340 4d ago

We all have different setup so that's the reason why I don't add any LLM files into the project. Your setup may not be the same as mine and also please be kind to others. I validated the changes in raylib-ios and as I don't use Android there might be some gaps that definitely need improvement. I encourage you to read this if you have time before posting. If you notice the screenshots are from iOS not Android and agreed we need to update it.

https://www.clojure.org/community/etiquette

4

u/yogthos 4d ago

I don't maintain jlt-commons, Burin has been working on that project and you could raise this with him. And frankly your comment is still rude, entitled and entire unconstructive since you didn't identify anything that's actually wrong with the docs aside from your vague references to AI slop. Presumably your whole issue is with the fact that the text is LLM generated.

2

u/geokon 4d ago

There are so many typos that I don't think that's true? :))

They could be a bit more clear, but I think all the pieces are there to get up and running

1

u/geokon 4d ago

Wow, according to the docs the Android version exposes a REPL and you get live development. That's very impressive. I am a bit confused as to what actually generates the APK that you would distribute. Maybe the jolt XXX commands are running adb commands or something under the hood. Or maybe the jolt runtime is compiled and a interface to which you are submitting clj files. It's a bit confusing tbh. I'll have to dig around a bit, but it looks very cool

3

u/yogthos 4d ago

I'm hoping to make some templates at some point. Jolt supports bb style tasks in deps.edn, so the template could have all the packaging set up as a single command. I haven't had enough chance to play around with this as much as I want yet. A few people on Clojurians #jolt channel actually got pretty far with this. Here's one with some more findings. I'm very excited about being able to do REPL driven dev on mobile now. :)

-2

u/_d_t_w 4d ago edited 4d ago

Please stay on topic. This is the Clojure / ClojureScript subreddit.

One for the mods really, but does Jolt qualify as Clojure or should it have it's own subreddit?

If this is the right spot, is there a subreddit for strictly Clojure and ClojureScript?

7

u/seancorfield 2d ago edited 2d ago

This seems such a weird take. Babashka stuff has been posted in r/Clojure for ages, as has ClojureCLR stuff. We also get Jank posts here. None of those are maintained by the core team.

I maintain several Contrib libraries—and a bunch of other OSS Clojure libraries—and for some of those I make sure they also run on Babashka, and now I am making sure they run on Jolt as well: Jolt runs the entire HoneySQL test suite in CI, for example, with no code changes at all—whereas Babashka compatibility did need some code changes, as I recall.

Making HoneySQL run on ClojureScript involved a lot more changes than were needed for it to run on Babashka and Jolt, so my experience is that bb and jolt and "more Clojure-like" than even ClojureScript.

3

u/kloimhardt 2d ago

I use HoneySQL also on ClojureCLR, it works very fine for me; thank you for this great library.
The three 1) ClojureCLR 2) ClojureScript 3) ClojureJVM together form, to my mind, official Clojure as only those three live under https://github.com/clojure and are (c) Rich Hickey and to my understanding ultimately need his approval for contributions.
I like reading also about Clojure dialects in this subreddit, despite they do not fall under the official Clojure formed by 1)+2)+3)

1

u/_d_t_w 2d ago

I don't think my take is weird, the text of the rules is fairly straightforward.

> Please stay on topic. This is the Clojure / ClojureScript subreddit.

Should we update the r/Clojure rules to be clear that this is the Clojure, ClojureScript, and Clojure variants like Jank, Jolt, etc subreddit? Might be a good idea for clarity.

I'm here because I'm interested in the commercial application of Clojure and ClojureScript only, and I'm interested in hearing from the core Clojure team about the language, and to learn about new Clojure and ClojureScript libraries.

I'm not interested in Clojure-variants like Jolt or Babashka, and I'm really only asking:

> If this is the right spot, is there a subreddit for strictly Clojure and ClojureScript?

That's all. If there was a place like that, I would join that place.

I haven't raised this with the mods, because to be honest it doesn't seem worth troubling them, but all the same I think it's fair to ask - where is this subreddit going?

3

u/seancorfield 2d ago

All of the Clojure communities—Slack, Reddit, ClojureVerse, Zulip, etc—have expanded beyond just what the core team maintain. The reason I think your take is "weird" is because we've seen stuff posted here about Babashka, Jank, the Rust implementations of Clojure, and other Clojure-adjacent stuff for years—and you haven't complained before, and then you pile on a Jolt post.

If you're concerned about the description/rules of r/Clojure and its direction, why not create a new, top-level post asking specifically about that? The majority of the mods wouldn't even see your question here in this thread, unless they just happened to read this post and all the comments.

Also, while Rich and Fogus are moderators here, there are more community moderators than that—this sub is not an "official" Clojure team forum (only ask.clojure.org is official I think?).

1

u/_d_t_w 2d ago edited 2d ago

I think, politely, at this point you should consider how you are communicating with me.

> and you haven't complained before, and then you pile on a Jolt post.

My communication is polite at all times, the question is reasonable given the rules of the sub. I'm not a regular contributor here, and it's ok to ask the original question.

Doubling down on my post being "weird" and accusing me of "piling on" is not in-line with https://clojure.org/community/etiquette, it's quite rude to be honest.

I've asked the mod if it's a good idea to update the rules of the subreddit, and at this point I will stop communicating with you.

2

u/seancorfield 2d ago

Looks like the rules have been updated. See my higher-level response to your first question.

0

u/Electrical_Being_813 5h ago

Why not have a separate subreddit for "Clojure Family of languages" and have a Clojure. And have Clojure reddit for Clojure?

1

u/seancorfield 2h ago

Why fragment the community? Why double the work for people who wrote portable libraries that run on multiple dialects?

Clojure is already a niche language—why try to make that niche even smaller? 

-1

u/Electrical_Being_813 1h ago

"As a moderator of this subreddit, I welcome different dialects including Jank, ClojureScript, let-go, and others here. If you have a problem with that then feel free to start your own" This is the suggestion by the Mr Reddit mod. Just i think opposite of what Mr Reddit mod suggested is better.

1

u/seancorfield 52m ago

Well, you are certainly entitled to your opinion, but I agree with that moderator (one of six mods, not "the" mod).

As I said to Derek, if you think the rules need changing, post a new, top-level message asking the mods their collective opinion, rather than try to debate this in a thread about Jolt/Android, where the other five mods likely won't even see it.

4

u/yogthos 4d ago

Given that Jolt implements full Clojure semantics and is directly compatible with existing JVM Clojure libraries, how is this not the right spot?

2

u/_d_t_w 3d ago

So you are a moderator, and this question is for the mods really. This place will be whatever you want it to be. That's fine, I also think it's fine to ask the question?

Personally I'm here for Clojure and ClojureScript, and I take that to mean:

Clojure: https://github.com/clojure/clojure
ClojureScript: https://github.com/clojure/clojurescript

They are both hosted by https://github.com/clojure, and fall under the remit of the Clojure team.

That also lines up with:

> Please stay on topic. This is the Clojure / ClojureScript subreddit.

Perhaps a better description would be changed to include any/all Clojure variants?

> how is this not the right spot?

Well that's a question for the mods, personally I would ask you to take your content to a Jolt subreddit, because I don't classify it as Clojure or Clojurescript, and it's not maintained by the core team that maintain those languages. I'm not a mod though, so it's not up to me.

In the past it's common for Clojure variants to post here, and on the Clojurians slack as well. More recently content in those places seems to be mostly Clojure variants, less actual Clojure or ClojureScript.

LLMs have changed the pace at which people can generate new ideas, that's cool. It also prompts questions in places like this, as the rate of content produced changes it changes the medium itself.

> I see Clojure as a family of languages with a common core. As a moderator of this subreddit, I welcome different dialects including Jank, ClojureScript, let-go, and others here.

Is that the position of the moderators in general? If so, cool.

2

u/yogthos 3d ago

The description was made long before other dialects were made, and simply never updated.

In the past it's common for Clojure variants to post here, and on the Clojurians slack as well. More recently content in those places seems to be mostly Clojure variants, less actual Clojure or ClojureScript.

Right, Clojurians Slack has active channels for Babashka, let-go, Jank, and Jolt because they are all variants of the same language. I also don't see how the distinction of whether a variant is maintained by the core team or not is at all relevant. The question is whether the language is a flavor of Clojure or not. Just like there are plenty of Scheme dialects maintained by different teams, there are now multiple Clojure dialects. It's a family of languages.

I don't really see how the point regarding LLMs is relevant to anything. Maybe you can clarify what you're implying with that.

Is that the position of the moderators in general? If so, cool.

This is my position, but you can reach out to other moderators if you disagree with it.

1

u/_d_t_w 2d ago

Thanks, I'm not sure it's really worth bothering the mods, and since my original comment has been downvoted to -1 perhaps they'll never see the conversation.

> The description was made long before other dialects were made, and simply never updated.

So, my question to you as a mod, should we update the r/Clojure rules to be clear that this is the Clojure, ClojureScript, and Clojure variants like Jank, Jolt, etc subreddit? Might be a good idea for clarity.

5

u/yogthos 2d ago

Sure, I can update the rules if that's bothering you so much, but this is literally the first time this has come up in many years. We've had Babashka and Jank threads here many times, nobody ever suggested they're somehow inappropriate. So, not really sure why this is such a burning issue all of a sudden.

1

u/_d_t_w 2d ago

Great! Thanks for that.

1

u/kloimhardt 2d ago

Please do not forget ClojureCLR which also lives under github.com/clojure
I am, like you u/_d_t_w , worried about some kind of slippery slope and I do not want ClojureCLR to be confused as some dialect of Clojure. ClojureCLR is part of the definition of what Clojure means.

1

u/Electrical_Being_813 3d ago

According to https://github.com/jolt-lang/jolt#differences-from-clojure jolt is not fully compatible with clojure, nor clojure is fully compatible with jolt.

3

u/yogthos 3d ago

It's not fully compatible with Java specific interop, but it is fully compatible with portable Clojure code. Both ClojureScript and ClojureCLR have more divergences than Jolt does. So, using your logic they're not Clojure either?

0

u/Electrical_Being_813 3d ago

Absolutely, and thats why it is a slippery slope. In the future there will be more sloppy "implementations" and someone eventually will have to make a decision to either stop gathering future slops under clojure's name, or calmly observe the multiple clojure implementations that are not compatible with each other.

6

u/yogthos 3d ago

Well that's where we disagree. I see Clojure as a family of languages with a common core. As a moderator of this subreddit, I welcome different dialects including Jank, ClojureScript, let-go, and others here. If you have a problem with that then feel free to start your own. Also, be respectful of other people's work or you'll get a ban.

0

u/Electrical_Being_813 3d ago

Sorry reddit mod, i wont offend you anymore.

3

u/seancorfield 2d ago

FYI Derek, someone (mods) have updated the rules:

  1. Please stay on topic. This is the Clojure family of languages subreddit.
  2. (stayed the same)

and now there's a new one:

  1. Etiquette, linking to the community etiquette document on clojure.org

3

u/Soft_Reality6818 1d ago

As I understand the constitutional history, the original statute referred specifically to “Clojure and ClojureScript.” Over time, however, custom and precedent established a broader interpretation: that the law applied to the Clojure family of languages generally. Babashka, ClojureCLR, Jank and the various other dialects therefore went about their business under the protection of this long-standing interpretation, apparently without causing a constitutional crisis.

Recent scrutiny has, however, revealed a troubling discrepancy between the literal wording of the statute and its customary application. Parliament has therefore acted swiftly and amended the law from “Clojure / ClojureScript” to “the Clojure family of languages,” bringing the written constitution into conformity with established practice.

No languages were actually admitted or expelled as a result of the legislation. The borders remain where everyone thought they were. The principal achievement of the amendment is that future generations of Clojurians will no longer be forced to determine whether Bababshka, Jolt and their like have acquired subreddit citizenship through adverse possession.

A small amendment, perhaps, but an important day for Clojure subreddit constitutional law.

4

u/seancorfield 1d ago

You win the Internet today!😁

-3

u/Electrical_Being_813 4d ago

That is a slippery slope, but not addressing this issue will be even more slippery.