--- !ditz.rubyforge.org,2008-03-06/issue title: free internal enumerator entries as soon as they've been enumerated desc: |- Currently the internal enumerator holds the entire enumaration sequence until the internal enumerator is freed. Because there is no way to enumerate a particular sequence twice, the enumerated entries could be overwritten with e.g. "undefined" values as the enumeration proceeds, generating string free operations steadily instead of as on massive chunk as the enumeration finishes. type: :task component: duk release: reporter: sva status: :unstarted disposition: creation_time: 2013-12-17 11:18:51.672163 Z references: [] id: 149481dcf4856c1108d2ef4e17feb2b448fa3dbe log_events: - - 2013-12-17 11:18:51.864087 Z - sva - created - "" - - 2013-12-17 11:19:12.792144 Z - sva - commented - Update hobject-design.txt too. - - 2013-12-17 12:45:28.370024 Z - sva - commented - |- Actually enumeration goes through the *keys* (not values) of the internal enumerator. The keys cannot be replaced with "undefined". They could be replaced with NULL, but this would lead to the risk of the keys being compacted and the "_next" internal property being incorrect. A practical approach would be to replace each key with the empty string as soon as it was enumerated. This would create duplicate keys in the entry part, however, something that is not normally allowed so it would need careful consideration. - - 2013-12-19 00:58:14.586414 Z - sva - assigned to release v0.10 from v0.9 - "" - - 2014-02-18 13:22:36.989355 Z - sva - unassigned from release v0.10 - ""