{"push_id":3145948487,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"56b5e123213e6bf10381bedf0a28ca6964825102","before":"2e37802376aa86680c0d532840258fd8b5a1d766","commits":[{"sha":"56b5e123213e6bf10381bedf0a28ca6964825102","author":{"name":"Brian Dickens","email":"6d130cd305f16d962de33d3d87602b04cea76901@gmail.com"},"message":"Run extension module initialization through LOAD-MODULE\n\nPreviously loading an extension went through a usermode helper called\nLOAD-EXTENSION-HELPER which was a distinct code path from the general\nmechanics which happen when a module is loaded.  So it was repeating\nissues of binding and execution, and lacked support for options like\n[isolate].\n\nIn order to prevent changes to a critical routine like PRINT from\naffecting the console--as well as when any libRebol API functions might\nwrite stray words or redefine things for a particular extension's\npurposes, an isolation-type feature is necessary.  The seemingly best\npath forward to doing that properly is to run it through the same\ncode that implements module isolation.\n\nHence this changes LOAD-MODULE to be able to take in a pre-made module\nwith some natives loaded into it, instead of creating its own.  The\nnatives have to reference the module as part of their definition,\nbecause if they are to be run they need to be able to tell from the\nstack what context to bind libRebol API calls in.  (e.g. if you say\nrebRun(\"append\") inside one module, it might not mean the same thing\nas if you say it inside another one).\n\nThe chicken-and-egg problem of needing to call those natives during the\nstartup in modules is solved for the moment by loading modules \"/INTO\"\na pre-made module, which LOAD-EXTENSION creates.\n\nWhile updating the headers to use `Type: Module`, `Options: [isolate]`\nthis also standardizes the headers somewhat, to use proper casing for\nthe option names...and standardizes references to the Apache 2.0\nlicense and current copyright to Rebol Open Source contributors.","distinct":true,"url":"https://api.github.com/repos/metaeducation/ren-c/commits/56b5e123213e6bf10381bedf0a28ca6964825102"}]}
{"actor":{"display_login":"hostilefork"}}