Module Startup and Shutdown (Constructors, Destructors?)

In Rebol 1.0, there's something called SHIELD:

shield before-block main-block after-block

Shield a block from catch and other types of exception handling, allowing it to take the necessary steps to initialize and finalize its state.

print catch 'throw [
    shield [
        print "entering"
    ][
        repeat n 10 [if n > 5 [throw "thrown out"]]
    ][
        print "exiting"
    ]
]

This will output:

entering
exiting
thrown out

It might seem unclear as to why you would need to have a "before-block" instead of just writing your code before the call to SHIELD. But Rebol 1.0 is very function-driven. So:

(before-code shield main-block after-block)

...would be a GROUP! instead of a single function call, and I believe the thinking was more that if it was a function that it would "fit in more slots" where a GROUP! would complicate things. (?)

Anyway...this category of things is still a functionality gap in Ren-C, because all you can do is trap and rescue and catch things...and you have to care about whether you're catching or trapping, and you have to rethrow or re-fail. Things like SHIELD and DEFER are all trivial to implement, but it's just not certain what the right way to get constructor/destructor type behaviors is in this language.