matthewmueller / matthewmueller/joy
Improve Channels & Goroutines implementation
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 1.3k
- Forks
- 34
- PR merge metrics
- No merged PRs in 30d
Description
Originally we were planning on converting async/await into generators. However, as explained by @FlorianUekermann in #56, there's a good chance the async/await or generator implementation won't be enough:
If you are wondering why someone may want to use non-async event listeners in the first place, consider that JS has a well defined event flow (https://www.w3.org/TR/DOM-Level-3-Events/#event-flow), which gives you a lot of useful guarantees to work with (serial execution of event listeners, ordering of event listeners, bubbling, cancellation, etc.). All of that goes out the window once you are start using async.
Next steps:
- Create a test case where async/await event handlers produce out of order events
UPDATE Alrighty yep, as suggested by @FlorianUekermann, the problem can be illustrated here: http://jsbin.com/ximexelepa/1/edit?html,js,output
- Learn more about how gopherjs does it's scheduling
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the event-ordering discussion in #56 and the linked JSBin example showing async/await handlers producing out-of-order events. Then investigate how GopherJS handles scheduling; the issue does not identify source files or define a concrete completion condition.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, javascript
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100