The Fate of Redbol Emulation In A Mostly Unbound World

100% Emulation of historical Rebol was always going to be impossible. But if we go forward with the model that most code is unbound, that's going to break even code that didn't do anything sophisticated with binding. Not only will any values you PICK out of a block or iterate over be unbound, but even basic quoting won't be bound:

e.g. this won't work:

rebol2>> thing: 10

rebol2>> foo: func [w [word!]] [return get w]

rebol2>> foo 'thing
== 10

I had a problem with this in emulating my very, very old whitespace interpreter. It quoted ADD and then put it in a block, expecting a DO of that block to run the ADD it meant.

Simulating Waves of Binding (Probably?) Impractical

You might think that so long as every word can still hold a binding, then historical behavior could be simulated by manually binding everything.

When a module loads, you could walk through it binding every word. Then when a function runs, you could copy its body and walk through it...overwriting those module bindings for functions and arguments.

But it would really mean rewriting everything. You'd have to redo MAKE OBJECT!, otherwise the indiscriminate binding would break its expectations--as it doesn't override explicit binding anymore.

Hooked Evaluator May Fix (Some) Cases

We already are going to need a hooked evaluator to handle things like PATH! looking up in objects (done presently with a hack to the main evaluator).

Another hook could just say that quoted things wound up bound under the same rules that non-quoted things use.

That would make this one whitespace example work, and maybe it would be able to run some more simple historical example scripts. But anything that mixes COMPOSE and DO is likely doomed.

This may just be the price of progress. Rebol2 emulation remains a good experiment of changing your baseline library, and it still would be a good example of that... for all the changes to primitives like FUNC and APPEND etc. It just may not be able to accommodate the different expectations of binding.