xBimTeam / XbimGeometry

XbimGeometry contains the CLR interop libraries and the c++ engine used to compute the 3D geometry of models.
https://xbimteam.github.io/
Other
249 stars 126 forks source link

net6.0 support #461

Open zhouguoqiang opened 5 months ago

zhouguoqiang commented 5 months ago

is there a plan to support net6.0

andyward commented 5 months ago

Yes, coming soon. See the netcore branch

GVladislavG commented 5 months ago

Will this version be crossplatform? Will it be able to work under Linux?

andyward commented 5 months ago

Not initially in GE v6. The problem is that we're using C++/CLI to wrap/interface with OpenCascade native C++ library - C++/CLI creates efficient .NET shims between native and managed code. This approach is pretty widespread across the geometry engine. C++/CLI is only compatible with Windows currently due to limitations of the Visual Studio C++ compiler.

So unless the Microsoft C++ team come out with an improved C++ cross-compiler, in order to provide full cross-platform support (for Linux/MacOS) we'd need to move to P/Invoke, which is both a lot of work and would likely have negative performance implications.

What the v6 branch does is move us along a bit by:

  1. Supporting Geometry under NetCore (.NET6+)
  2. Provide new interfaces to support phased migration of code that uses OpenCascade (and re-writes a lot of the implementation to be more testable)
  3. Extract OpenCascade to dependency via Nuget, so it can be updated more easily

One thing that should be possible in v6 is to natively support ARM64 under Windows. But full cross-platform is going to be something we have to leave for a future major release, and will need significant time investment - and frankly will need to have a compelling commercial driver behind it.

hyazinthh commented 2 months ago

Are there any plans to publish public v6 packages in the near future?