Ichoran
Ichoran
@keean - The cognitive overhead in Rust of avoiding Arc cycles is not entirely negligible--data structures where you used to not have to care end up being a mix of...
There isn't anything I'm aware of that matches the simplicity of the parallel collections, so I think it's worth including for that reason.
This is probably a good idea. Does the mechanism work if you can have nested `either:`, though?
I think the solution is to provide a fork depth implicit at every unbreakable boundary (incrementing the depth by one if you already are in an unbreakable boundary), then have...
@lbialy - The same solution could be reused to avoid nested eithers: you look for _any_ instance of the opaque type wrapping a label that has the depth that you...
@lbialy - I have a fully working nearly-zero-overhead prototype solution at https://github.com/Ichoran/kse3/blob/v0.3.3/basics/src/Abstractions.scala#L133-L166 (The `Int & Singleton` thing ended up being a drag because `compiletime.ops.int` doesn't respect the `Singleton` property, so...
@lbialy - Fair enough; you would need a corral that you can get through in that case. If `fork` increases the corral depth, but `supervised` memoizes the current corral depth...
That's what I mean by "difficult to effectively remove things from scope". It's not precisely the same as having a set of contexts and removing one context from the set,...
@lbialy - The bytecode is a lot worse with corrals as I've implemented them. Two boundaries and two jumps add about 150 bytes of bytecode, plus primitives box when they...
This won't really work without any overhead until `erased` is in and non-experimental (and works with context functions), but I got it down to about 70-80 bytes extra and no...