> is based on a new b-rep CAD kernel, written in Rust

Shouldn't this be a separate project?

Hey, creator of Fornjot here.

> Shouldn't this be a separate project?

Maybe. Not right now, I think. Not much of a point, as long as I'm the one doing most of the work.

The kernel is available now as a separate library though, that can be used independently. If it attracts its own set of users and contributors, it might make sense to have a separate website and repository.

Ok, thanks. One more question: how does your library deal with robustness of geometric predicates (as better explained in [1])?

[1] https://en.wikipedia.org/wiki/Robust_geometric_computation

I have a concept in mind, but have no idea yet whether it's going to work out: My idea is to require relationships between geometric objects to always be explicit.

For example, you're not allowed to define a point that happens to lie on a surface. You must instead explicitly define the point in terms of the surface. By extruding from a sketch that lies in the surface, or by saying "extrude until the shape hits the surface", or by specifying some kind of constraint.

I hope that it is practical to design CAD models in a way, such that these relationships are always explicit, and I hope that this will enable the CAD kernel to not have to rely on messy floating point stuff comparisons. But as I said, not no idea if it's going to work out like that.

I have no idea whether that will work, but it sounds like you might paint yourself into a corner, so I'd suggest to read about how others maintain geometric robustness. I know this is a tough problem, that's why I asked if this could be done in a separate library, so others can benefit from the work.

Another direction you could take is to define just the API, and use the opencascade kernel (like FreeCAD) until the rest of your code is ready.

I will definitely keep reading and learning, as well as gaining practical implementation experience. We'll have to see how that goes, and what the solution will end up being.

> Another direction you could take is to define just the API, and use the opencascade kernel (like FreeCAD) until the rest of your code is ready.

A CAD kernel is the central dependency for any CAD program, and I feel that it would be wrong to just use one and accept its limitations. I need to be able to take ownership, to work on it directly. OpenCASCADE is a huge pile of C++ code, which is the opposite of all that. (Not saying it's wrong to use in general, just that I'm the wrong guy to work on a huge pile of C++ code.)

I've considered using Truck[1], but decided not to do that for now. I really want to see what I can come up with. If that doesn't work out, at least I'll be in a much better decision to decide what other option would be best.

[1] https://github.com/ricosjp/truck