Weekly Release - 2022-W39
I've been busy with cleanups for a few weeks now, and that hasn't changed last week either. My priority remains implementing the union operation (#42), but that is currently blocked by #993, which in turn is blocked by #1079, which until recently was blocked by #1021.
I've made enough progress on #1021 to un-block #1079, so I've returned my attention there. As it turns out, finishing up that issue requires more changes all around the kernel code than I initially expected, but in the end this isn't really surprising. The changes to the GlobalCurve
object that are the subject of #1079 have a follow-on effect on all other objects that reference it, so a lot of code needs to be updated.
Going into the details here would be a bit much, but the gist of it is, there's a new way of doing things (comparing objects by identity instead of equality). This new way will make the kernel code more reliable, but right now this can't be implemented, because the current code is cutting a lot of corners.
Un-cutting those corners, as well as implementing the infrastructure required to do that without making the affected code too cumbersome, is what I'm currently working on. If you want to know more about that, I suggest to follow the links to those issues, as I keep those updated with the details of the work I'm doing.
Sponsors
Fornjot is supported by @webtrax-oz, @lthiery, @Yatekii, @martindederer, @hobofan, @ahdinosaur, @thawkins, @bollian, @rozgo, @reivilibre, and my other awesome sponsors. Thank you!
If you want Fornjot to be sustainable long-term, please consider supporting me too.
End-user improvements
Improvements to Fornjot and its documentation that are visible to end-users.
None this week. Busy improving the kernel!
Ecosystem improvements
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
fj-kernel
- Implement centralized object storage (#1108, #1116, #1121)
- Prepare for removing geometry from
GlobalCurve
(#1111, #1114) - Start converting builder API into partial object API (#1113, #1117, #1118, #1119, #1120, #1123, #1124, #1126, #1128, #1130, #1131, #1133, #1134, #1135)
- Simplify
Triangulate
trait (#1122) - Clean up
Face
constructor (#1125) - Remove
HalfEdge::from_curve_and_vertices
(#1127)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1101, #1103, #1104, #1105, #1106, #1107, #1109)
- Remove unused dependencies (#1110)
- Expand release automation (#1115)
- Upgrade to Rust 1.64.0 (#1132)
- Update list of sponsors in README (#1136)
Issue of the Week
The Fornjot UI can display status updates. For example, that the model has been reloaded, or that there has been an error trying to do just that. A nice incremental improvement to that capability, would be to also display a timestamp with each update.
If you're interested in getting into Fornjot, and are looking for something manageable, maybe check out #971 - Print timestamp with each status update
Outlook
Cleanups will continue for the time being. I've been questioning whether I should find some shortcut to get back on track with the union operation (#42) instead, but so far I've decided against that. First, it's not clear to me what that shortcut would be. Second, fixing #1079 and then #993 the proper way has many positive side effects, making the kernel more reliable and preventing whole classes of bugs.
I'll stay the course for now and will keep re-evaluation the situation as I go on.