[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: The removal of function environments: An opportunity	for	optimization?
 
- From: GrayFace <sergroj@...>
 
- Date: Mon, 24 May 2010 23:58:36 +0700
 
I would definitely prefer setfenv over this optimization. Also don't 
forget that the function itself may potentially change _ENV, as far as I 
understand.
In fact I don't quite understand what _ENV is.
function f1()
  return f2()
    _ENV = {}
  end
end
Would execution of f2 lead to a change in _ENV of f1? If _ENV is a 
regular upvalue that may be shared, then it would. If it's not a regular 
upvalue or an upvalue that's always unique, than what's the difference 
between it and function environment?
In case it's a regular upvalue, a 'uniqueupvalue' function would be 
needed to implement setfenv. It should make an upvalue of a function 
unique, not shared with other functions. As far as I understand, it may 
be problematic to implement.
On 24.05.2010 21:31, Mark Hamburg wrote:
Yes, this optimization would pretty much make it impossible to emulate 
the old setfenv since the existence of setfenv is what forces the 
creation of new functions even when they would otherwise be 
equivalent. My feeling on this is that if setfenv is going away, then 
it goes away and there shouldn't be a constraint to keep an emulation 
working.
--
___________________________________________
Best regards,
Sergey Rozhenko                 mailto:sergroj@mail.ru