FreeCAD 0.20 Release Notes
I noticed in the Assembly3 section that it uses SolveSpace as its solver. FreeCAD uses OpenCASCADE as its main CAD kernel, and this supports mating and constraints between parts (at least, CadQuery supports it, and it's essentially just wrapping OpenCASCADE) so I'd be interested to know why they chose to bundle and use a different kernel there.