[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: [Suggestion] Passing upvalues to load()
- From: Coda Highland <chighland@...>
- Date: Tue, 6 Oct 2015 11:50:17 -0700
On Tue, Oct 6, 2015 at 11:01 AM, Tim Hill <firstname.lastname@example.org> wrote:
>> On Oct 5, 2015, at 3:55 PM, Soni L. <email@example.com> wrote:
>> I think load() should, in addition to _ENV, also take a list of upvalues, which are only used when loading bytecode.
>> When loading bytecode _ENV is assumed to be the first upvalue, upvalue 0, so we just need to make it varargs for the other upvalues.
>> This reduces the need for debug.upvaluejoin() (or w/e, setupvalue?) when loading bytecode.
>> Disclaimer: these emails may be made public at any given time, with or without reason. If you don't agree with this, DO NOT REPLY.
> Why only when loading bytecode? Post-compilation, there is no difference between bytecode and source code.
Source code can't (easily) refer to upvalues positionally. Source code
uses names. Varargs passed to load() don't have names.
So sure, there's no reason why the function should throw an error if
you DO pass them, but uncompiled code inside will have a hard time
interoperating with them.