-
-
Notifications
You must be signed in to change notification settings - Fork 119
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
Try to abolish Shape
#697
Comments
#696 is finished. I'm now exploring more ways to detach |
I just merged #723, a complete rewrite of the sweep algorithm. This has kept me busy for a few days, and is a huge step towards removing |
This is mostly done. Very little code still uses Really close to wrapping this up, but unfortunately I've run out of time for today. |
Shape
is the central data structure thatfj-kernel
uses to store the objects that make up a shape. It was initially introduced for the following reasons:Shape
though (see Decouple validation infrastructure fromShape
#696).Shape
immutable. This was later changed to support use cases of various algorithms (namely transform and sweep).So as it turns out,
Shape
didn't end up achieving its core goals. But it does bring with it a lot of complexity. So far, I've considered this just a cost of doing business, but I recently realized that it should be possible to removeShape
completely, which would be a radical simplification of the kernel data structures.I'm thinking about the following measures:
Shape
#696.Shape
made its implementation really complicated, and introducing mutability was a simplification. For sweep, I have various vague ideas that I still need to explore.My idea for the
Shape
-less future is to simply keep the object types as they are right now, roughly, with two important differences:Handle
s, just have each objects own a copy of the referred to object.Shape
. I don't think things will get any worse, performance-wise.So that's basically it. Many details are yet to be figured out, but this is the rough direction that I'd like to go in.
This issue isn't blocked right now, as all of the areas it covers can be worked on or experimented with immediately, but its completion is blocked on #696.
The text was updated successfully, but these errors were encountered: