Match the callback boxing of Function::new in TemplateFunction::new #5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Change function tests to pass fn items instead of references.
While working on this change it occurred to me that it isn't safe for the callbacks to be closures. Once these callback functions are exposed to JS they can be referenced and held by JS code indefinitely so the function and any captured environment must live as long as the isolate.
A potential strategy for handling this would be to only allow 'static functions or closures that pass ownership of their environment to V8 through the internal object. Ownership could also be shared through Rc. This should still be convenient to work with in rust while ensuring the callbacks are safe for the duration of the isolate.
The move ownership to V8 or Rc strategy would also be useful when storing rust values in a value::Object's internal fields.