Breaking Change: Transitioning from BinaryFormatter to SHA256 for Enhanced Compatibility and Speed

Dear Community and @insiders,

We’ve decided to implement a significant update in Speckle 2.19 regarding the serializer within Speckle’s core. This change introduces a unified strategy for generating object IDs across specklepy and speckle-sharp, eliminating the dependency on .NET 5.0’s BinaryFormatter—a necessity with the adoption of .NET 8 and future versions.

This issue was first highlighted by @fmeijer in 2021. Despite the inherent stability of Speckle Core, the need for action has become pressing. We appreciate @sanchez and @vwb for their persistent reporting on this matter.

Thanks to @Jedd’s diligent efforts, we’ve successfully replaced the old system, ensuring compatibility across our primary SDKs and the upcoming TypeScript SDK.

What are the implications of this update?

Pros:

  • Consistent object IDs across Python and C#
  • Full support for .NET 8
  • Doubling of processing speed

Cons:

  • Viewer diffing will perceive all objects as changed from previous versions.
  • Connectors will treat received objects as needing updates.
  • Blender users will need to remap materials post-receive.

Please note, these disadvantages will only impact the initial transition to version 2.19. Particularly for those using diffing, plan your update schedule carefully to manage these changes effectively.

11 Likes