Rebol's Mission w.r.t. "not wasting RAM or CPU cycles"

Rebol was an attempt at grappling with the problems of overly complex and bloated software. Part of that means not wasting RAM or CPU cycles.

Optimizing is just a normal part of software development. It's not done to please the programmer, but to build something of quality that respects the user who is running other pieces of software that are also using resources. Think of it as being a good computational neighbor.

There needs to be some thread here about "computing horror stories". A month ago there was an article on Hacker News about NixOS and it's packaging system. As some Nix user had just contacted me about packaging xu4, I thought I'd give it a spin. After downloading the ISO and installing it on a virtual machine I went to get a package listing...
and was greeted with some vague error message.

It turns out that the package manager was using well over 1GB of RAM and simply crapped out because my VM didn't have enough. Some NixOS user told me:

"Listing all packages is a bit of a weak spot. The entire package set is described in a lazy, functional language and listing or searching it requires evaluating the entire thing."

This is an entire OS custom built around a package manager, and it couldn't even give me a listing of my packages. The Nix developers want to geek out about their language, but I just want tools that work.

Thankfully, data-oriented design is now a thing, so I know at least someone is paying attention.

1 Like

I can't speak for anyone but myself here, but for the past 18+ months, there's been an enormous amount of experimental language design taking place in this project.

My $.02 is that the focus has been on solving some of the critical language design flaws of Redbol languages and letting those building-blocks settle/harden before devoting limited time/energy in the optimization space right now.

That's not to say that zero attention is allocated to optimization, but I think it's lower on the list of priorities until the fundamental design pieces can snap into place.

Horses for courses then.
Thanks for the discussion, your project sounds interesting.

Rebol was kind of a grab-bag of agendas, IMO, and I think people were able to "see what they wanted to see" in that. This consensus became difficult when an artifact like Rebol2 was seen as a start... but a start, to what? The ensuing fragmentation is not that suprising.

Tons of languages try to minimize CPU use or memory. Where I saw Rebol as being different was dialecting...to let you pare back the source (or more generally, "right-size" it) by bending words to mean something appropriate to your task.

So looking at the kind of thing you'd probably not do, here's a TLS transition dialect in Ren-C:

Prettier TLS State Tables (and Assessing the Cost)

Small things like that do make the TLS extension load more slowly (substantially so with the parsing being usermode). Multiply that by a lot--because I'm willing to do similar experiments all over the codebase.

But at this stage of the game I feel such explorations are valuable. They're educational, much like people being able to build something like DESTRUCTURE in minutes:

DESTRUCTURE Dialect

As I like to say, I don't throw softballs. And because I'm liberal in my use and test of such things--including during the boot process--I don't find your comparison table surprising or worrying in and of itself (though it needs to be done right if it's to be done). I'm just not seeking to optimize that statistic for a default test distribution at this time. And I even keep around things I never would have written myself (like the Atronix "locale" extension) because it now and again exercises a case that gives me food for thought.

There's nothing particularly endemic to Ren-C's design prohibiting it from having a build configuration within striking distance of Boron's or R3-Alpha's if it wanted to. There's simply no reason to pursue that. Certainly not to try and get you (or Kaj, or Oldes) to use it...I like to focus on puzzles that might have a solution. :slight_smile:

I'm more about letting people express themselves elegantly in small character counts--and have that expression pull of miracles. In terms of the artifact that does it, I do accounting in the large in terms of dependencies.

But maybe when the time comes, pressures would be such that things like stylizing the TLS transitions is wasteful in the scheme of things. I don't know. It still feels pretty far away to be concerned, especially since the web build doesn't use the TLS extension at all.

3 Likes