Releases: hannobraun/fornjot
v0.39.0
This release announcement is also available on the Fornjot website
Last week has been awesome! No spending days or weeks tracking down some complicated bug. No fumbling around, trying to come up with the solution to a design limitation. Just cleaning up code, making it much better than it was before. And lots of that!
Work on the ongoing kernel cleanup has progressed extremely well (#1589). I've removed redundant data from the object graph, instead computing it on-demand and caching it where that's necessary to guarantee correctness (#1586, #1634). And I've simplified the object graph a lot, consolidating all the redundant references that I'm aware of (#1525, #1643).
We shouldn't get used to weeks like this, of course. Sooner or later a really hard problem will crop up again. And even though bashing my head against that won't feel as productive, it will be just as necessary to make progress.
The last big item that's left in the cleanup (as of now; I might be thinking of more ideas!) is the unification of full and partial objects (#1570). It's not fully clear to me how that's going to work yet, but I'm optimistic that I can come up with something.
While I was busy dealing with technical debt that an earlier, less seasoned version of me introduced in the first place, @Jzow has updated the installation instructions for macOS, which will hopefully help interested users in the future!
Sponsors
Fornjot is supported by @webtrax-oz, @reivilibre, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @bollian, @rozgo, 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.
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Make some tweaks in service code (#1629)
- Simplify object graph around
HalfEdge
(#1630, #1632, #1638, #1642, #1644) - Remove unused builder methods (#1633)
- Remove redundant data from object graph, compute it on-demand instead (#1635, #1636, #1640, #1641, #1647)
- Make validation unit tests more explicit (#1637)
- Remove unused validation error (#1639)
- Start unifying full and partial objects (#1645, #1646, #1648)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
v0.38.0
This release announcement is also available on the Fornjot website
The simplification of the kernel code is going well. I managed to pick off two issues last week (#1588, #1605). Still more to do though! The current state of the work is tracked in #1589.
In other news, @Jzow made a small but welcome contribution, fixing a broken link in a README file.
Sponsors
Fornjot is supported by @webtrax-oz, @reivilibre, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @bollian, @rozgo, 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.
- Fix
cargo install fj-app
(#1606)
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Consolidate redundant references to
Surface
(#1604) - Simplify object graph by removing
Curve
/GlobalCurve
(#1607, #1610, #1614, #1615, #1616) - Update documentation on edges (#1609)
- Rename
SurfacePath
toCurve
(#1617)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
v0.37.0
This release announcement is also available on the Fornjot website
I finally managed to finish the partial rewrite of the sweep code that had been kicking my ass for the last few weeks! This took longer than it had any right taking, but it really hammered home how important the ongoing work to simplify the kernel is (#1589). This rewrite also had an accidental side-effect: it fixed a long-standing bug (#494, #1162), that had been blocking further work on the union operation (#42).
My previous attempt to fix that bug had sucked up a lot of time and was unsuccessful, which is part of what started that current focus on simplification. So it's kind of surprising that the work I did after I no longer worked on this bug is what ended up then fixing it. Programming works in mysterious ways, sometimes.
Even though work on the union operation, which had been my main priority before I went down this recursive rabbit hole of fixing foundational problems, is unblocked now, I am not going to return to it immediately. I am convinced that the ongoing simplification work is the best thing I can do to ensure forward progress mid- to long-term. Prioritizing short-term progress here would only lead into a dead-end.
Meanwhile, we've had more awesome contributions last week! @erenoku added the navigation cube, an UI element that shows how the model is currently oriented. @tmayoff implemented a workaround for a crash in the Fornjot kernel, when a model creates an empty sketch.
Sponsors
Fornjot is supported by @webtrax-oz, @reivilibre, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @hobofan, @thawkins, @bollian, @rozgo, 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.
- Add UI element that shows model orientation (#1573, #1584; thank you, @erenoku!)
- Don't panic, if model code creates empty sketch (#1585; thank you, @tmayoff!)
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Rewrite parts of sweep code (#1593)
- Start consolidating redundant references to
Surface
(#1596, #1597, #1598, #1599)
fj-math
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
v0.36.0
This release announcement is also available on the Fornjot website
I've really been struggling with the ongoing object graph simplification work (#1525) this week. I'm still stuck on the rewrite of parts of the sweep algorithm, which I was already working on the week before. I'm down to what should be one last problem (at least I hope).
This should be a cylindrical model, but instead it is totally mangled. I think I understand the problem (the coordinate systems of coincident curves don't match), but there are some subtleties to the solution. In my first few attempts, any fix I tried broke something else.
This is frustrating, because this really shouldn't be that hard. But it is hard, because of the unnecessary complexity of the object graph. The very thing I'm working on fixing. This shows how important that simplification work is.
Meanwhile, @mxdamien had made a very important improvement: Panics in the model code no longer crash the app!
Sponsors
Fornjot is supported by @webtrax-oz, @reivilibre, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @hobofan, @thawkins, @bollian, @rozgo, 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.
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Make various fixes and small updates in builder API (#1572)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
v0.35.0
This release announcement is also available on the Fornjot website
Ostensibly, this has been a quiet week. Not many pull request, not many commits. But behind the scenes, the object graph simplification work (#1525) has been ongoing. Some improvements related to that have made it into the repository this week, but most of it is still blocked by unsolved problems.
I wrote a short update about that. The short version is, my work simplifying the object graph has been hampered by the complexity of the object graph. Technical debt protecting itself, in a way. At the moment, I'm still looking into ways to solve the specific problems, but it might become necessary to pause this, and try to approach the object graph simplification from another angle.
Meanwhile, @tmayoff has made some very welcome improvements in the GUI, while @Philipp-M has updated Fornjot's Nix flake.
Sponsors
Fornjot is supported by @webtrax-oz, @reivilibre, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @hobofan, @thawkins, @bollian, @rozgo, 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.
- Fixed status messages taking up too much space (#1551; thank you, @tmayoff!)
- Display version mismatch warning in GUI (#1554; thank you, @tmayoff!)
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Improve validation error message (#1553)
- Lift limitation when inferring surface as plane (#1556)
- Reuse cached curve approximation, if range is reversed (#1557)
fj-math
- Improve projections into plane (#1555)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
v0.34.0
This release announcement is also available on the Fornjot website
The simplification of the core data structures, currently focused on HalfEdge
and its neighbors in the object graph, continues (#1525). I fell down the usual rabbit hole of finding more work that needs to be done, before I can do the work that I need to do.
This hasn't resulted in any big moves on #1525 itself last week, but there were a bunch of cleanups, improved error messages, and so on. I have some more substantial work in local branches that weren't ready to be merged yet, and I expect more movement there this week.
Sponsors
Fornjot is supported by @webtrax-oz, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @hobofan, @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 working on the kernel!
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Continue simplifying object graph around
HalfEdge
(#1535, #1536) - Add more debug information to approximation (#1537)
- Improve validation error messages (#1540)
- Respect existing boundary when updating
HalfEdge
as line segment (#1541)
fj-window
- Box event loop error variants (#1539)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
v0.33.0
This release announcement is also available on the Fornjot website
Over the last week, I have started to shift my focus away from the work that directly contributes to advancing the roadmap, towards more foundational work. Right now, that mostly means simplifying the core data structures (#1525), which should pretty much make every aspect of kernel development easier.
Honestly, I think I just need a break from staring at the builder code (#1162), like I've been doing for the last few weeks. In addition, improving the foundational infrastructure will benefit all future development. I don't know when I'll get back to #1162, but I think it's most important for me to stay productive and move things in the right direction in general, rather than advance along one specific path, even when that path could be considered the most important one.
Sponsors
Fornjot is supported by @webtrax-oz, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @hobofan, @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 working on the kernel!
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Improve validation error message (#1518)
- Add
FaceBuilder::infer_curves
(#1520) - Simplify object graph around
HalfEdge
(#1521, #1522, #1524, #1526, #1527)
fj-math
- Fix
Plane::project_vector
(#1523)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
v0.32.0
This release announcement is also available on the Fornjot website
Work on fixing the known object duplication issues continues (#1162). I'm still focused an expanding the builder API (short update here), which provides some foundational building blocks that will be useful beyond addressing this issue. Expanding the builder API mostly involves design work, which is hard, and therefore quite slow. I'm making progress though.
I've also been experimenting with some ideas I have on improving the kernel architecture. This hasn't gotten anywhere yet, so nothing to report at this time.
Meanwhile, @zthompson47 has continued helping out by addressing some Clippy warnings that were previously silenced.
Sponsors
Fornjot is supported by @webtrax-oz, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @hobofan, @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.
- Fix app crashing, if it is minimized too long (#1504)
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Improve builder API (#1495, #1501, #1502, #1509, #1510)
- Don't stop on first validation error (#1505)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
v0.31.0
This release announcement is also available on the Fornjot website
After my end-of-year vacation, we're back to normal this week, and things are progressing nicely! I've declared victory on #1249 and refocused my attention on #1162. This requires extensions to the builder API, and I've already written a bit about how all of that fits together.
These hand-on programming activities are mixed in with lots of thinking going on in the background, about how the kernel needs to be structured in the future. I want to build a CAD system that makes changes to geometry easy to understand and reason about, and this will need to be supported in the kernel on an architectural level. A complete picture is still forming in my mind, and I'll let you know how that progresses!
In perhaps more interesting news, we've had some awesome contributions this week! @zthompson47 has fixed an annoying issue, that (re-)loading the model would freeze the GUI, and @antonok-edm has implemented support for arcs in sketches, allowing for more interesting shapes to be created!
Sponsors
Fornjot is supported by @webtrax-oz, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @hobofan, @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.
- Fix model updates freezing GUI; improve loading messages (#1476; thank you, @zthompson47!)
- Don't wrap
Angle
by default (#1478; thank you, @antonok-edm!) - Support arcs in sketches (#1484; thank you, @antonok-edm!)
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Expand and clean up builder API (#1479, #1483, #1485, #1489)
- Remove
fj_kernel::iter
(#1480) - Remove
Vertex::global_form
(#1481) - Improve some validation error messages and validation test output (#1486)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
v0.30.0
This release announcement is also available on the Fornjot website
This one's going to be quick and painless: Last week I was on vacation and I lost part of the week before due to getting sick. As a result, not a whole lot happened. I'll have more to say next week!
Sponsors
Fornjot is supported by @webtrax-oz, @lthiery, @ahdinosaur, @Yatekii, @martindederer, @hobofan, @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 time!
Ecosystem improvements
Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.
fj-kernel
- Simplify
CycleBuilder
andFaceBuilder
(#1467)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.