Can Rack module compiled on rack 2.2.3 be incompatible with Rack 2.0.6?

I have a user that reports my Venom Rhythm Explorer demo patch will not load for him on Win 10 running rack 2.0.6.

The patch works perfectly fine for me on Win 10 with Rack 2.2.3 - The plugin was compiled on Rack 2.2.3.

Is it possible that there may have been Rack bug fixes and/or API changes that could cause the plugin and/or patch to fail on Rack 2.0.6?

Really this is a general question about Rack versions. Certainly a later version of Rack v2 should be able to run any plugin compiled on an earlier version of Rack V2. And I imagine the reverse is intended to be true (barring any critical API bug fixes). But is it necessarily true? Are there known examples where an earlier version of Rack v2 fails to run a plugin compiled on a later version of Rack v2.

I’m not sure this is related, but when I downloaded the demo patch, Rack cannot start without crashing. I’m on Win 11, Rack 2.2.3 . I did not capture a log file.

1 Like

Here is a log file from the patch crashing Rack:

log.txt (112.8 KB)

Edit: I had to reupload the log file since I accidently overwrote it in my steps.

I see some json lines in the stack trace, so perhaps there is a json data parsing error.

The log does point out a Venom patch and Rack mismatch in fromJson() . Not sure if this is important.

Note: RPJ Visualizer is the last mentioned module before the crash.

1 Like

Ouch! This is not good! Thanks for the report.

So there must be a serious bug in either my Venom plugin, or else one of the other plugins in my patch.

Can you tell me what line number shows you the Venom patch and Rack mismatch? I can’t find it.

Also, my patch uses the Low Fat Milk module, and I have had crash issues with Low Fat Milk in the past. I thought the bug(s) had been fixed, but maybe not. Since this appears to be a plugin specific problem and not a general Rack issue, I will start a new thread with a version of my patch without LFM.

If you could answer my log file question, that would be great. Then we can continue in the new thread (I’ll post a link here)

Thanks

Line 1024

1 Like

Ah - yes. I must have created that version of the patch while my development version of Venom was installed. Not ideal, but I don’t think that should cause a problem.

Also, I noted you still have the old VenomModules plugin installed from the beta release days. You probably should delete that plugin folder from your plugins directory - the plugin has been renamed to Venom, and VenomModules is a dead end.

The thread with the patch without LFM is at Venom Rhythm Explorer demo without Low Fat Milk test. It would be great if you can test it out.

If that works, then I will post the working version to Patch Storage, probably with the Venom version fixed to v2.0.1

Thanks!

Done, but the crash still persists. You are welcome. I should have reported the crash a couple of days ago but figured it was just me as no one else had mentioned any such.

That is to be expected. The presence of VenomModules shouldn’t cause a problem, but there is no point in keeping a dead plugin around.

1 Like

Last thing, but I do not think this is important. I had created a test patch earlier this morning to play with your Harmonic Quantizer. After deleting the VenomModules folder, the patch could not find HQ until I added it from the correct plugin. So, it is good for everyone to delete that plugin, most likely, but I will leave that to you to suggest.

I did just that within my Beta release announcement.

2 Likes

Yes. And this is something I have pondered myself.

Within a Rack major version (2.x) Andrew guarantees that plugins are backwards compatible. So a plugin built with SDK version 2.0.x will run just fine on Rack 2.2.x

But because Andrew keeps tweaking the API during a major version, including adding new functions, I believe that the reverse is not necessarily true. So plugins are not necessarily forward compatible, and I think it’s something developers should be mindful of.

If you build a plugin with SDK version 2.2.x, then as long as you don’t use anything that was not present in SDK version 2.0.x the plugin should run just fine on Rack 2.0.x. But if you do use something new then I believe it will not work in an older version of Rack.

If I’m right it means that when developing a plugin, you should occasionally build it against the 2.0.0 SDK, to make sure that it will run on all Rack 2.x versions. But when testing the module you can build it against the latest 2.x SDK to pick up the fixes etc.

The lazy / simple fix is just never update the version of rack you are building against :slight_smile:

Well that’s true :slight_smile: You can just build and develop against the v2.0.0 SDK, test against the latest version of Rack and be done with it. That’s probably what I’d do to be honest.