Reviving the Rebmu Dialect

Rebmu was conceived as something of a puzzle, but not entirely a joke. My futurist mindset is that code golf will be a growing recreational domain with time...played by humans and AI alike. And I've identified code golf as one of the key target domains for the Ren-C project, in its "Minecraft of Programming" objectives.

My intuition is that a truly good code golf language would wind up being useful in other ways; as some sort of compressed bytecode platform.

But I wouldn't be all that bothered if it didn't have great utility...and it was just truly fun, generating a corpus of work comparable to the circuitry that people have been putting together on the Game of Life Wiki.

Rebmu Needs To Be Brought Up To Date

I haven't run any of the samples in quite a long time. So they're in a broken state. I've said that if Rebmu and its puzzles were added as Travis CI tests, they would probably provide particularly good checks of pathological codebases. (As much of a headache as it is to debug such things, it's worth it in the end.)

  • I'm looking forward to taking better advantage of the function deriving mechanisms to make the definition of Rebmu itself easier. apd: :append/dup to specialize append is a lot easier than what had to happen before.

  • Need to take advantage of ISSUE! replacing CHAR!...not only do character literals shorten from #"a" to #a for those not needing delimiters, but the non-spacing character of #abc in print gives a way to tighten up formatted output.

  • The landscape of names needs a rethink, as things like E could mean ELSE now, which is generic and powerful.

  • Mushing has to be rethought for new constructs like predicates, as things like until .not [...] will be very useful.

  • IO always presented a problem, simply because we didn't know how functions like PRINT should actually work. (I've lamented that we're still trying to figure out how to write "Hello World"). These things are better understood now, and we're a tiny bit farther on things like the ASK dialect

What has historically happened when I've gone and tried to poke at Rebmu is that it just draws my attention to some issue or feature in the interpreter, so I wander off and lose momentum. But it's probably time to bite the bullet and get it knocked into enough shape...and then add puzzles to it on Travis gradually.

1 Like

I just recently learned about Rebol and ReMU, and I'd be glad to help with development(if you are accepting contributors).

3 Likes

It would be fantastic if someone else besides me wanted to work on it.

One prerequisite to start is getting a Ren-C built on your system--because that's what Rebmu will target to run in. I'm sorry that we don't provide prebuilt packages, but the plus side is that anyone who works with it has the means to fix things:

https://github.com/metaeducation/ren-c

Learning Rebol lore with a stable Rebol2 is a good starting place for general ideas (especially while I attack a bit of an update to get Rebmu working against the current interpreter.) But there's a universe of difference in Ren-C...especially in the areas which would be applied to code golf. So bear that in mind.

I'll try and slot some time to get a baseline Rebmu working this week.

One small step for a fork, one giant leap for a Rebmu...

The roman numeral example (roman.rebmu) is now running on GitHub CI against the current Ren-C.

Minus getting the input string into S, right now the converter looks like:

J K 0 feCs[Nse[I01V05X10L50C100D500M1000]twCinzJ[a+KeiL?jN[sbNjEL N00]j]Jn]adKj

The input routine hit a snag, because what used to be rS would translate to readin-mu s, where it would quote the argument and read based on its type. And S started out as a string.

For reasons maybe good or bad, I dropped all the preloaded single-character values (like S starting as an empty string and B as empty block) because I thought that was a cheap trick. It was only chopping off a tiny constant factor...and wasn't really teaching anything about the language. Will have to rethink that.

In any case, I created the Rebmu forum category to discuss points as they come up.

Priorities?

Making the roman numeral converter work was the first order of business. And I think I'd like to kind of keep going on getting the example programs working and tested before getting too involved in trying to rewrite any of the "engine".

Rebmu introduces some new challenges to the fledgling module system, with "sea of words" and "isolation" all being usermode concepts. As well as how much might the interpreter recognize alternative headers? Should a Rebmu file end in .reb or .rebmu or .rebmu.reb... and whether the header should say Rebol [Type: Rebmu] or Rebmu [...] and have that registered somewhere.

So there's no small amount of work here. As usual, I'm not throwing softballs. I'll post issues as they come up.

5 Likes