Comments (6)
Are you referring to the bullet that defines the type of the instruction? Sorry, there actually was a typo there, the immediate should have been $t', the resulting function type. With that fixed, the instruction takes a ref to a function of type $t and its first n arguments and returns another reference to a function of type $t' with the respectively shortened parameter type list.
There is no restriction on the life time of the closure.
from function-references.
from function-references.
The motivation here was that functions in Wasm are closures already (over their module instance). And since all current production engines allow dynamic module instantiation they already have to deal with the same life time issues for the resulting closures. This may be via a GC or via reference counting. In a way, func.bind would just piggyback on the existing mechanism (which hopefully is efficient enough for this use case).
from function-references.
That 'closing over the machine' that is currently done would tie the lifetime of a closure to the lifetime of the instance. What is needed is to be able to relate the lifetime of a closure to other elements within an instance -- i.e., GC of closures.
from function-references.
The life times of a module instance and that of one of its functions are not necessarily the same, even now, although one typically keeps the other alive (which theoretically can happen either direction). At least in principle, individual functions can already be dead while their module is still in use.
In general, we'll have a number of objects in Wasm that require dynamic life time management by the engine. Exception packages are another such example.
I didn't understand what you mean by closing over the "machine".
from function-references.
Func.bind never had consensus and has been dropped from the proposal.
from function-references.
Related Issues (20)
- Issues with the JavaScript spec tests HOT 4
- `Illegal macro parameter reference` in the spec HOT 1
- Binary encoding out of sync with GC proposal
- Merge in latest spec repo HOT 2
- Function reference from JavaScript functions? HOT 4
- Validation rule for call_ref with polymorphic stack HOT 5
- Fix table-elem desugaring
- `func.bind` and iso-recursion HOT 2
- Validating local.get in nested blocks with unreachable HOT 5
- br_on_non_null.wast needs unreachable test HOT 1
- slowness of test/core/skip-stack-guard-page.wast HOT 3
- Drop null casts? HOT 4
- Tweak binary format for table declarations HOT 2
- JS-API is missing value conversions HOT 3
- Extend `TableType` to support non-nullable references in JS-API HOT 1
- Progress toward phase 4 HOT 2
- Malformed br_on_null and br_on_non_null in tests HOT 1
- Default/init values in JS-API for globals and table. HOT 3
- Clarification request: initializers for tables with non-nullable type and initial_size == 0 HOT 3
- Should non-nullable locals be initialized by unreachable code? HOT 13
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from function-references.