A personal journey into LLVM

Fixed the BBEdit problem. Grab the latest one from the from the repo and you’ll be all set.

Thank you Greg, you’re the best!

Thanks Greg… replace with your latest one.. work great

Forgive my ignorance, but what are you referring to? Clearly not this:

… as that’s a C-like language, not a Basic-like language. There’s XBasic from a million years ago. I’m just wondering what the heritage exactly is and is X a dead project or what?

Or is X just a euphemism for Xojo?

Yeah that other language that starts with X that shall not be named :stuck_out_tongue:

Well I guess with Objo and Buoy we have the choice of opinionated frameworks: non-native but visually identical controls on all targets, or native controls with lots of # conditionals peppered throughout the code. Hand crafted or AI-assisted, etc.

I like many aspects of Buoy, don’t get me wrong. It’s an impressive effort. I will probably look at it when it’s more mature. Choice is a Good Thing.

I think we’ll have to see how much #IF Target type code is needed since, as far as I understand it, the UI toolkit will have something like auto layout enabled x-platform

So you’ll get “the same layout” with spacing between controls etc but using native controls at their correct sizes
In “auto layout terms” you might have

      Button1.left = std gap from left of window
      Button1.width = std button width per platform

      Button2.left =  button1.right + std gap
      Button2.width = std button width per platform

     etc so the switch of the button could be different at runtime and they'll still be placed "properly" even using native controls

Same for heights

That is assuming I understood greg’s post correctly

That is the plan. Now to be clear, the Linux and Windows UI guides suggest a different safe area and different control spacing than macOS does so the only way to truly take advantage will be to use the constraint / anchor system. There’s a window layout tool that’s under construction and you can see its current state in the samples folder today. But it’s very crude right now. Just enough to place controls. There’s no way to even specify tab order.

Locks do work if you want X-ish control positioning.

This is a super interesting project.

I love that it is plain text file based 1st, already has an LSP, and there’s an IDE planned.

I’ll be sure to give it a spin once the Linux releases start to roll out.

I do have a question though, does the “Freeware Software License Agreement” license added to the buoy-issues repo mean you have some plan for how to make this a financially viable project?

There really isn’t. I’m targeting VSCode at the moment and I have a minimal layout tool in the samples.

Buoy is a hobby project at the moment. It’s a creative outlet for a guy that has too many chore-like tasks at work.

I’m going to add a donation box here sometime soon so if people want to financially encourage it to evolve they can, but at the moment I don’t have time to put a full business behind it.

That’s in the works. It’s one of the areas where the donations will help because I can’t afford to keep spinning up GitHub runners to rebuild LLVM. It takes 8 minutes on my M5 but on the included GitHub runners it takes 3+ hours so I really need to pay for my own infrastructure. Luckily I deal with AWS at work so I don’t need to figure that out too.

That said, Linux will probably be next. It’s the easiest transition from Mac. Please note that I don’t plan to have 32-bit compilers, ever.

Oops, sorry I got the wrong impression.

Gotcha, totally understand, I and I suspect many people here are in a similar situation.

Cool, but take your time dude, you should only add support for other platforms when you’re personally wanting it, and feeling the pain of not having it. It’s your hobby project, should be fun!

As for no 32-bit, absolutely, these days none of the major Linux distros support 32bit for anything but backwards compat for older games, really not worth trying to support 32bit.

Do have another question though. Apologise if I missed this if mentioned before, but does “Buoy” stand for something? (I should note that I know what a buoy is, but wandered whether was some non-obvious hidden meaning)

Heh. I figured this would come up at some point…

so when I was playing around with LLVM and just started language design and architecture, the working title was CrossApp… because I didn’t feel like taking the time to make something better. At the point where I realized that I could actually make something workable, that could have a cross-platform UI presence, I changed the name to BasicUI. That lasted for about a week when someone close to me reminded me that people tend not to trust languages that have Basic in the name. Since I’d already settled on .bui for the file extension, the language became the English word that sounds like what one would say when referring to a file… “dot buoy”.

A bonus is that Buoy and words that sound like it don’t really have any negative connotations in any language that I could find. So unlike the Chevy Nova, Buoy shouldn’t end up being known as a “Chevy No-Go” in Spanish-speaking countries.