Just my thoughts, I should explain them, there’s a reason for doing the poll.
I’m currently using Windows since a few years, sometimes I install a Linux-PC or once or twice a Hackintosh. Couldn’t really afford a real mac. But I like Swift. It’s 25 years newer than C++ and this would be visible in a Swift-only code base very much. Xcode is pleasant, too. Today I’ve thought about - at first - how much I would dislike Swift not having an ordered map or in general a red-black binary tree for storing piano-roll-notes or tracker-cells. looks very right for this at first, complexity is on (almost?) every operation something like log n, and hey, C++ is cool for offering this. Swift provides more like libraries from users, nothing that I’d immediately install.
Then my mind kind of turned around and I thought, wtf, actually I’d like to do everything that I do on notes (cells) also on samples. And what would I use for sample buffers? Plain arrays. So, arrays are just enough. I need them to be operated on fast enough anyway. Computers are so fast today, I’d need tens of thousands of notes to notice slow code on notes, so, it’s still no point for C++.
Another thing is mult-ithreading. I liked Windows for providing WaitForMultipleObjects. But it’s a bit hard to re-implement fully on other platforms because it can wait on file operations or whatever, too, but that’s no the best reason, I don’t need to wait for files or network. The other tools you can find seem just to be not tested enough (I guess channels in Golang and Rust are the best.) I’ve tried several re-implementations of this Windows-design which would rely on pthreads or , they added race conditions to a test project. I’m not sure I could ever port that thing to macOS without rethinking a big part of the software, though, not that big.
On the other hand, Apple has GCD, Grand Central Dispatch. It seemingly has two Windows-based implementations, I’d really trust them, GCD looks like a fresh concept, probably nothing missing, and porting (using a ported libdispatch/GDC) that to Windows should be easier.
When you look at Rust, the tooling isn’t that matured, IDE etc, it has no native environment, when testing to use it for something I hit a barrier of foreign function interfaces (windowing,opengl,portaudio,midi) very fast. With Disk IO it’s more like that it’s platform indenpendend, but their use of builder pattern looks ugly as can be.
Golang, slow due to “non-zero-overhead” bounds checking, no SIMD. Ponylang? A bit too new, no SIMD either, though promising. Java? Uh. How got Bitwig around the GC that is said to sometimes pause the world like 100ms? They do Java & C++. I’m one guy with limited knowledge, won’t try that combination. What’s really left? The “native” standards C++ on Windows, Swift on macOS. Swift isn’t perfect, even that UnsafePointer thing, missing ordered , NextStep stuff, all looks bad. But it’s 25 years newer! You can use nested functions, named arguments (ok, Intellisense can help you on C++ too) and what not.
Swift rocks. Porting from Apple to Windows seems even more doable than the way around. At all, I’m just about to try to write my own personal, xrns-compatible song tool, whatever it is, it may be usable in 2025. Actually my idea has always been a black box that would convert from piano roll notes in one view to tracker cells in another view. I don’t believe in a mixture of both views (mixed = piano roll + tracker in only one view). Even if a mixture is possible, it could be added to a “black box converter” solution.
Anyways, it’s the “right” time in operating systems history to be stuck on the idea. Windows 10 keeps on nagging me with Edge and weird new stuff. I’ll go on reading on Swift and Hackintosh topics the next days. Thanks for the poll answers! (so far)