Skip to content

Releases: hannobraun/fornjot

v0.39.0

06 Mar 13:08
0705cb5
Compare
Choose a tag to compare

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.

  • Update installation instructions for macOS (#1631; thank you, @Jzow!)

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

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.38.0

27 Feb 12:40
043ce34
Compare
Choose a tag to compare

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 to Curve (#1617)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.37.0

20 Feb 12:19
6a2278e
Compare
Choose a tag to compare

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

fj-math

  • Make various minor improvements (#1590)
  • Clean up and simplify Arc (#1591, #1592)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.36.0

13 Feb 11:59
ac220e0
Compare
Choose a tag to compare

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).

a mangled model that should actually be a nice, cylindrical sweep

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.

  • Don't abort application, if model code panics (#1534; thank you, @mxdamien!)

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

06 Feb 11:46
cee5e30
Compare
Choose a tag to compare

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

30 Jan 12:05
89d59a4
Compare
Choose a tag to compare

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

23 Jan 17:06
7b296ca
Compare
Choose a tag to compare

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

fj-math

  • Fix Plane::project_vector (#1523)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.32.0

16 Jan 12:02
ef571cb
Compare
Choose a tag to compare

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

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.31.0

09 Jan 16:22
6ba0567
Compare
Choose a tag to compare

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!

Screenshot of a star-like 3D model with rounded edges

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.

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

02 Jan 10:33
1768358
Compare
Choose a tag to compare

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 and FaceBuilder (#1467)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.