Let's say I use Semantic Versioning for a my project. I'm developing it under FooOS, but the language uses virtual machine(either interpreted language or bytecode based) so any operation system can run it. The thing is, the project interacts heavily with OS-managed things(e.g. pipes, processes, the file system) so if you try running it under a different operation system - BarOS - it gets so buggy and so many things don't work that the project is practically useless.
Now, at some point I want to make my project work for BarOS, and I want to release a version just to add that support. The question is - does that count as a minor version or as a patch?
It seems like it's a patch:
All I do is fixing all the bugs that appear when running the project under BarOS.
Users of my project shouldn't notice any change in functionality, since they are using FooOS in the first place.
For BarOS users my whole project is new - but getting new users is not something that should result in a version increment.
But even with all that reasoning, it just doesn't seem right to label a release as big as new OS support as a patch...
If you already officially supported BarOS, but there were so many issues with it that nobody would use it, then providing proper support for BarOS would be a set of bug fixes and thus a patch release.
On the other hand, if you never officially supported BarOS, then adding official support for BarOS (regardless of how well it worked previously) is a new (backwards compatible) feature and therefor a minor release.
So, the answer to your question is that it depends on the official status of BarOS within your project so far.
External links referenced by this document: