V6 Goal: Compatible Plug-in Loading

A WIP has just been released with our first round of plug-in compatibility loading.

NOTE
This feature is limited to plug-ins built on top of the RhinoCommon SDK (including compiled scripts). Rhino does not have the capability to do what I am describing with C++ plug-ins (sorry).

The Goal
Allow plug-ins to load and run in Rhino even though they were compiled against an older (or future) version of Rhino.

What is compatibility loading?
Traditionally, Rhino uses a versioning system to figure out which .NET based plug-ins could load into a given version of Rhino. This was done by looking at the version of RhinoCommon a plug-in was compiled against and seeing if the currently executing version of RhinoCommon is compatible based on version comparisons. For example, a plug-in compiled against the RhinoCommon in V5 SR7 (version 5.1.30000.11) will run in SR7 and above, but not in SR6. The major version number also defined the major version of the product which meant that this plug-in would not load in V6.

This traditional version number checking still exists in the current WIP, but if the version checking says that the plug-in should not load we perform a compatibility test on the plug-in. @will helped us develop the compat executable which looks at a RhinoCommon based plug-in and figures out which functions in RhinoCommon are called by the plug-in and if these functions exist in the executing version of RhinoCommon then the plug-in is considered “compatible” and will load. My internal geek thinks this is really cool.

What does this mean?
Many RhinoCommon based plug-ins that were written for V5 and most compiled scripts will load into the V6 WIP.

How you can help
This is definitely an early work-in-progress feature that I expect will need fine tuning over time.

  • Try loading a V5 RhinoCommon based plug-in (or compiled script) into V6. If things aren’t working as you would expect, please let us know. There may be plug-ins that don’t load that should be loading.
  • If you have any questions about this feature, please post a comment here so we can figure out how to clarify this feature.

Thanks!

3 Likes

Super. Works here so far!

-Pascal

Hi,
How do we identify V5 RhinoCommon based plug-in so we can load them?
All of my Rhino plugins are for windows 32 bit, Rhino 32 bit v5, can I load 32 bit plugins into V6?
In sonar cakewalk my music software one can seamlessly mix 32 bit and 64 bit plugins I was wondering if we can do this in Rhino V6?
RM

Good questions

Select a plug-in Rhino’s plug-in manager (V5) and click on the “Properties” button.

  • If the type shows “.NET plug-in” then this is a good candidate for loading the plug-in into V6
  • If the type shows “C++ MFC plug-in” then this will not load into V6

Typically “.NET plug-ins” are built in a way that allows them to load into both 32 and 64 bit applications. I’m using the word typically because the opposite is possible where the plug-in will target only 32 or 64 bit. If the .NET plug-in is built in so it can load in either type of application, then yes you can load the plug-in in both 32 and 64 bit Rhino.

Thanks Steve