Fornjot

early-stage b-rep CAD kernel, written in Rust

Weekly Release - 2022-W35

Last week was eventful! Initially I made some progress on the intersection tests (see #42, specifically the list I keep updated). Then, I hit a hurdle (#993). That issue has more details, but the gist of it is, that the kernel data structures are not robust enough to handle certain tasks required for the next batch of intersection tests.

Solving this required some cleanups, and while planning those out, inspiration struck and I recognized an opportunity for a big simplification of the kernel code, which in turn required some more cleanups... and down the rabbit hole I went. Check out the pull requests below for the progress I made so far.

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 stable and 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 the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-host

fj-kernel

fj-math

fj-viewer/fj-window

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

Issue of the Week

Fornjot is still very much an early-stage project, and I'm pretty sure that most of its usage still happens as part of developing it. Being run mostly from within its own repository has allowed some problems to creep in, that become really obvious once you start using it in the real world.

One such problem is #980 - Version mismatch between fj and fj-app can cause problems. If you like fiddling with Rust and aren't deterred by the presence of an FFI boundary, this might be the issue for you!

Outlook

As I explained above, I fell into a rabbit hole of kernel cleanups. My priority this week will be to figure out, which of those cleanups are going to be required to solve the problem at hand (#993); which of them aren't, but are still worth the investment (because they will soon start saving more work than implementing them costs me now); and which of them are currently a distraction.

Implementing the union operation (#42) remains my top priority and I don't want to get stuck in a cleanup cycle that won't be conducive to that.