New feature: Distributions

About Distributions

Prior to v0.9 of the package server, each new .yak package uploaded represented a new version. Now, for a single version it’s possible to upload multiple “distributions” to target different Rhino versions and platforms. This information is encoded in a “distribution tag” that is appended to the filename of the package, e.g. example-1.0.0-rh7-win.yak .

The distribution tag consists of an “app” identifier and version, and a platform. Currently the only supported apps are rh and any – Grasshopper ships with Rhino so it doesn’t need its own identifier. Unless the app is any , an app version must be included in the form <major>_<minor> . The minor version is optional and is useful if a plug-in relies on an SDK change made in a service release. The platform can be win , mac or any (i.e. cross-platform).

A few examples…

  • rh7-win - Rhino 7 for Windows >= 7.0
  • rh6_14-mac - Rhino 6 for Mac >= 6.14
  • rh6_9-any - Rhino 6 (both platforms) >= 6.9
  • any-any - anything goes! (existing behaviour)

When installing packages, the server will check the version of Rhino and determine whether a compatible distribution exists for the requested version.

Creating Distributions

To test this out, please download the latest Rhino 7 WIP and try creating a Grasshopper or Rhino plug-in package. The distribution tag will be inferred from the version of Rhinocommon.dll, Grasshopper.dll or Rhino C++ SDK that you reference in your plug-in project, as well as the platform on which you perform the packaging process. You can always manually rename the .yak package file if you wish – for example, if you know that your package should be cross-platform, change the platform toany. If you think the minimum Rhino version is wrong, please let me know! This functionality is available in Yak v0.9.1 and above (check with yak version).

A note on backwards-compatibility

The updated server works seamlessly with existing packages and old versions of Rhino. Pre-existing versions on the server (without distributions) will be treated as any-any when installing. New package versions that do not include a distribution tag, e.g. those created by previous versions of the CLI, will also be treated as any-any when publishing.

For more info, see the developer docs for Rhino 7 WIP.

1 Like