-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP Interface Reform (see: #1829) #1848
Conversation
I've got a local copy of the randomizer changes nearly done so you can leave that to me if you like. |
Currently this is stalled by the CI failing and my lack of a complete enough build environment to reproduce and diagnose the issue (which probably has to do with async). That may be resolved soon, but worst case this is blocked until after async is reworked (which is after copy elision). |
It'll happen. Thanks for being patient with my copy elision stuff. I'm at 327/518 behavioral tests passing in my branch. I'm hoping to conclude the merge within the next week. |
It was async. I'd missed some spots because I wasn't grepping properly. I've built a new VM server and now have a much less constrained environment, so I can run tests locally and work through stuff like this. |
Unless he's changed his mind, I'm going to leave Random to @tiehuis . |
Yeah I have it done although I've had some issues with attempting to get it to work at compile-time as the old method was able to. Will make a PR when this is merged and I can rebase off this. |
Yes, that is exactly the issue. Didn't see that. It isn't a huge deal right now, the only place that was depending on this was AutoHashMap which I'm sure we can perform at runtime until this is figured out. |
@tiehuis Could the signature for |
… must have screwed something up in git at some point.
What should we do with this PR? What can I do to help? |
My plan was to wait on this until after the co-routing rewrite, as currently a pretty ugly hack is used to deal with async's allocator handling. If we want to merge before then and are ok with the hack (or have a better idea) then I can rebase on current master, clean it up, add @tiehuis's changes and it should be ready to go. |
Waiting until after the coroutine rewrite sounds reasonable. I'll keep that in mind. It's planned to happen like this:
These last 2 bullet points are long overdue. I'm planning on giving them laser focus after the release. |
I made a note in #2377 (comment) to revisit this work-in-progress code once the stuff that it is blocking on is complete. Until then I'm going to close this. |
Update the standard library to use a new interface pattern that should be more friendly to the optimizer. Provides abstracted (type-erased) and non-abstracted interfaces.
Note: the way
async<allocator>
is currently implemented appears to be incompatible with the this pattern. Since the async rewrite (#1260) will eliminate allocators forasync
, I have implemented an ugly hack workaround that wraps the new interface pattern with the old one.Current plan:
@tiehuis will take care of these
- [ ] Update Random interface- [ ] Update test cases, self hosted, other non-std codeThis may end up being a separate PR:
We may also decide to move the 'convenience' functions currently implemented in the generated *Interface struct out into the broader namespace as regular functions.