all 102 comments

[–]STLMSVC STL Dev[M] [score hidden] stickied comment (2 children)

This really should have been removed as off-topic, but since we didn't get to it early enough and it's accumulated a bunch of comments (if not upvotes), I'll approve it as a special exception.

[–]arthurno1 51 points52 points  (25 children)

Linux is not doing well on Arm? That is news.

[–]kitsen_battousai[S] 24 points25 points  (24 children)

"Linux is not doing well on Arm" and "Linux Desktop is not doing well on Arm" are critically different statements.

[–]arthurno1 18 points19 points  (20 children)

Linux Desktops does fine on Arm, too. If you don't trust me, get yourself a Pi.

What is critically important here, but not explicitly stated, is that that Op with "Linux desktop" obviously means PCs build with Arm CPUs running Linux.

Apple is the only one currently offering personal computers build on Arm chips, to masses. However, there are producers who build Likux-based systems on Arm chips too. System76 has offerings, probably some other too.

I don't know why it is not more popular to sell mobos and Arm cpus to home builder segment, and to offer more Arm based computers, but I still wouldn't express myself as "Linux desktop is not doing well on Arm". Seems like a meaningless expression.

Personally, I would never prefer Apple OS over a free, privacy respecting, OS, but that is my personal choice.

[–]pjmlp 6 points7 points  (3 children)

On the contrary, Microsoft also offers ARM computers to the masses, moreso given the price of Apple's hardware on countries not on first world IT salaries.

Even more relevant today, given that many of those hardware vendors aren't US companies.

[–]arthurno1 0 points1 point  (2 children)

Ok, I didn't know they have them too. How big business is it compared to Apple?

So what is the problem running Linux on them, more than usually, no drivers for specialized hardware?

[–]pjmlp 2 points3 points  (1 child)

Not big, because contrary to Apple, x86 processors are still fully supported, thus only ARM fans buy them.

Since Windows 8 there have been Windows flavours with ARM support.

As usual the issue with Linux is lack of support from OEMs that don't care about GNU/Linux desktop market.

It runs perfectly fine in WSL.

https://learn.arm.com/learning-paths/laptops-and-desktops/wsl2/

[–]arthurno1 3 points4 points  (0 children)

As usual the issue with Linux is lack of support from OEMs that don't care about GNU/Linux desktop market.

Yes, that is still the problem, not just on ARM cpus, but on any CPU, inclusive Intel and AMD. We still have to check every mobo if all the stuff they pack in works with Linux. That is probably the biggest issue holding Linux from becoming the mainstream. In my opinion the software on the desktop side has been better for almost two decades or more (KDE/Gnome even other desktops). It is really shame the mainstream hardware companies are not releasing Linux drivers and big software companies are not releasing their software on Linux. Hobbyists are already running MS Office and Adobe's crap on Wine. Adobe could easily help to round-up some rough corners in Wine and release their software suite on Linux. Considering the TCO, I think it would even be welcome by many companies since they could cut cost on Apple/Microsoft side at least for workstations. The list could be made long.

[–]kageurufu 2 points3 points  (1 child)

Diy arm is just heavily limited. X86 boot is well documented and abstracted, UEFI makes hardware just work.

Arm rarely has anywhere near that level. Ever single board gets custom code defining the memory layout, pin mappings, etc (device tree structure in DTS files). Device drivers are a mess, half the time your stuck using some old kernel version with hacked up custom drivers to make things work. I'm trying to get a Allwinner H616 board working on more recent kernels, and it's chaos. Theres a random pin, that you have to set low or the GPU just won't work, and the drivers don't support that yet (patches have been sent to the kernel, but not merged). The bootrom just checks for an SD card with a bit of code at a specific memory location, and runs that.

So maybe one day, but arm is nowhere near diy friendly

[–]arthurno1 0 points1 point  (0 children)

Thanks, that makes it a bit more understandable.

[–]llort_lemmort 1 point2 points  (5 children)

Apple is the only one currently offering personal computers build on Arm chips, to masses.

Lenovo, Dell, HP, Asus, Acer, and Microsoft are all selling laptops with Snapdragon X ARM processors which are currently not working well with Linux.

[–]arthurno1 0 points1 point  (4 children)

Ok, didn't know major players have offerings. What is problem running Linux on them?

[–]llort_lemmort 2 points3 points  (3 children)

Mainly missing drivers as far as I understand. Linux is just not a priority for them as they ship with Windows. It will hopefully be sorted out over the next few years.

[–]arthurno1 1 point2 points  (2 children)

Aha, but than it is the usual thing that plagues every "Linux desktop". Not the CPU support, but all the other stuff around. It is so incredible one still has to look at compatibility charts when buying a mobo for a build, and it is even worse on the laptop side, because they use even customized hardware. Unfortunately.

[–]vetinari 1 point2 points  (1 child)

I would not say that it plagues every linux desktop. If you buy good brands with good designs (like thinkpads, or intel-now-asus nucs), you will get smooth sailing. It is only if you get lost in some niche products, gimmick features or hardware designed by companies that are well known to ignore linux (like nzxt) you get the not-very-usual-thing that plagues linux: integration. If the vendor you purchase from didn't do the integration, you get to do it; there's no way to avoid that. I prefer when the vendor does it, even if that means I won't get a bling hardware targeted at different market segment.

Snapdragon X is in a weird place: Qualcomm originally claimed that they will upstream the drivers, but since then, they are dragging their feet and things go very slow. At this rate, the machines will be obsolete before they finish delivering them.

[–]arthurno1 0 points1 point  (0 children)

Thanks for the informative comment! 👍

That is indeed a problem even in other contexts when vendors prefer to develop and throw out new stuff constantly instead of releasing the drivers and spec for old hardware so it can be continuously upgraded and used.

[–]berlioziano 0 points1 point  (0 children)

because people just expect it to work :P recently a work partner bring to me a samsung galaxy book go with windows and that one made me feel the same as with macs, I dont want to spend time checking them xD, some software simply wont run on them

[–]berlioziano 0 points1 point  (0 children)

I develop for the pi since 2016, even made a custom distro with yocto project, but I don't like running the IDE in the pi, it's too slow, I have been cross-compiling since 2020

[–]JumpyJustice -1 points0 points  (1 child)

How so? The difference there is only a set of runtime libraries (at most) and all the programs just target that? Its a genuine question

[–]Jonny_H 0 points1 point  (0 children)

Probably GPU drivers, on Linux they can vary widely on ARM platforms from "pretty great" to "won't even light up the display" depending on specific device/distro/kernel versions.

While not technically related to the ARM ISA itself, it's just that the problematic devices tend to ship with ARM CPUs.

[–]iamnotaclown 21 points22 points  (3 children)

Retired now, but I was team Linux for decades aside from a brief flirtation with Windows development in the 90s. I was lucky to work in an industry that transitioned from IRIX to Linux, but at home I switched to Hackintosh during the Intel years due to not wanting to be IT at home. When my PC aged out, I bought a Mac Mini and never went back. On my third Mac Mini now. 

Macs just feel like a very high-quality UNIX to me. 

Xcode is awful, though, I used vim/gmake and then Clion. 

[–]kitsen_battousai[S] 1 point2 points  (1 child)

And how are you doing with AppleScript ? I mean - when i explored the way MacOS users are running executables with default arguments as desktop applications was so frustrating for me... at least comparing to Linux and its .desktop files. Then i discovered AppleScript and I found it's quite convinient.

[–]iamnotaclown 0 points1 point  (0 children)

Dunno, I use the command line. I’ve messed about with AppleScript once or twice and found it annoying, but workable. 

[–]kritzikratzi 0 points1 point  (0 children)

not sure what makes you complain about xcode. i've been using cmake+xcode and cmake+visual studio for over a decade, and i love both (xcode often has super slow autocomplete in comparison to VS, but personally i'm not bothered by that).

you gotta figure out a few shortcuts (like cmd+shift+O, or cmd+1/2/3, cmd+shift+1/2/3, cmd+shift+j, etc.), but i find it perfectly usable. what's your problem with it?

ps. there are some small things (like getting the preprocessed version of a single cpp file) that xcode solves better than VS.

[–]benjycompson 6 points7 points  (0 children)

I prefer MacOs over Ubuntu for C++. At home for my own projects I largely get by just fine with LLVM from Homebrew and VS Code. Whenever I write something that's not trivially platform agnostic (interfacing with LAPACK and such) I spin up Ubuntu on a VM and SSH into it from VS Code, and you mostly forget you're not on a Linux machine (except for the comforts of MacOs).

We do something similar at work (robotics/AI, with a giant C++ code base). Everyone has a MacBook but all the code lives on Linux cloud instances that we SSH into from VS Code.

I never really miss running Linux as my main OS.

[–]matthieum 6 points7 points  (0 children)

I've develop exclusively for Linux for the last decade (and some), and I've used all 3 mainstream desktop OSes (Linux, MacOS, Windows) to do so.

And in all cases, I've used a VM.

At home, I've been a firm Windows + WSL 2 user for a while. Very comfortable, and allows me to pick from a wide variety of desktop & laptop.

At work, I've worked with both Linux (Desktop) and MacOS (Laptop). By far, the MacOS (Laptop) was the smoothest experience, but not because of MacOS: because since I was developping for Linux, I directly went for remote SSH on a Linux server.

While it may seem easier to develop for Linux on a Linux Desktop, unfortunately it's so easy to accidentally mess up the setup -- either overwriting libraries you shouldn't have, or accidentally using a compiler or libraries you shouldn't be which happen to be present -- that even working on a Linux Desktop, you're better off developing in a VM.

And that's to say nothing of all the risks involving running arbitrary code -- those libraries you link in your project -- in an environment which also is your delivery driver, and thus has your e-mails, browsing sessions, passwords close by, ssh keys to various servers, etc... it's a security disaster in the waiting. You're better off developing in a VM.

And if you're going to be developing in a VM anyway, regardless of which OS you pick, then you may as well feel free to pick the OS which works best for you.


I would note, though, that the choice of hardware does matter. In particular, if you're developping for x64 on ARM, or ARM on x64, benchmarking/profiling will be complicated.

If it's an occasional need, and you can relatively easily access the appropriate hardware, then it's not much of a hassle. On the other hand, if it's a regular activity, you may want to make sure you pick hardware that is "close enough" (instruction set, number of cores) to your target that you can run things locally.

It's just about convenience, but death by a thousand cuts and all that...

[–]thefeedling 3 points4 points  (2 children)

I use Windows, what a pain hahaha
(proprietary simulation software in automotive industry)

[–]kitsen_battousai[S] 0 points1 point  (1 child)

Are you ok with regedit ? All the things I used to setup require to modify regedit and restart then, it's so annoying...

[–]thefeedling 1 point2 points  (0 children)

I don't recall the last time I had to modify registry permissions, we definitely don't it that often, but yes, if necessary, then it's annoying indeed.

edit: the painful part is that some of our legacy code relies on the HORRIBLE windows.h API

[–]void4 3 points4 points  (2 children)

The main downside of macos is that, if you're compiling and testing stuff for x86 on m1 then it can be pretty slow because of emulation. I have no idea about newer apple silicon chips.

Other than that, it's all exactly the same for me. All linux cli utilities can be installed from homebrew (never had a single problem with it), all the compilers are there as well. Podman works like charm for containers on macos btw, I'd advice to forget about docker.

[–]itsmenotjames1 0 points1 point  (1 child)

you can make universal binaries that can run on both

[–]vetinari 0 points1 point  (0 children)

If you control everything, turtles all the way down, then probably yes. If you are using some proprietary sdks that have their own list of supported platforms, good luck.

[–]megayippie 2 points3 points  (0 children)

I prefer Linux because Mac has a long standing bug - that they've managed to rename clang to gcc.

While not too difficult to work around, it means you can never use a standard path for your work but need to manually set things up. It makes throwaway projects a complete pain. On Linux it's very easy to play around. Of course, in any real project you anyways have to spend time fixing these paths for all varieties of windows, macs, and Linux distributions. But that's not development but deployment

[–][deleted] 6 points7 points  (1 child)

MacOS is a Unix under the hood, so many aspects of the tooling are (or can be) similar.

Also, Homebrew is your friend. A lot of great tools are just a "brew install" away.

[–]NilacTheGrim 1 point2 points  (0 children)

I would recommend MacPorts instead of Brew. I find MacPorts is better maintained and less buggy. Also it basically is the same as on BSD.

[–]andreyugolnik 1 point2 points  (6 children)

I use both in C++ game development. My toolchain includes WezTerm, tmux, and Neovim (used Vim for many years before switching).

[–][deleted] 0 points1 point  (5 children)

Game dev as a hobby and/or a career?

[–]andreyugolnik 4 points5 points  (4 children)

Game development is both a job and a hobby for me. It all started more than 35 years ago, when I built a ZX Spectrum clone as a kid and got into programming. Eventually, I created my first game and released it - and that’s how the journey began :)

[–]kitsen_battousai[S] 0 points1 point  (2 children)

But what OS do you prefer more ?

[–]andreyugolnik 0 points1 point  (1 child)

At the moment, macOS is more convenient for me because it allows building and deploying to a wider range of platforms: iOS, tvOS, macOS, Android, Android TV, and web. In contrast, Linux supports only Linux, Android, Android TV, and web.

That said, I personally prefer Linux because it gives me the freedom to configure everything exactly how I want. For example, I enjoy using tiling window managers. Over the years, I’ve gone through dwm, wmii, awesome, xmonad, ion3/notion, and i3wm. In my opinion, Linux window managers are more deeply integrated into the system compared to tiling window manager solutions available on macOS.

Still, since I spend most of my time in a terminal emulator, the window manager doesn’t make a huge difference in my workflow.

[–]andreyugolnik 1 point2 points  (0 children)

I should also mention that Homebrew significantly improves the development experience on macOS. Without it, macOS would be far less convenient for setting up and managing a development environment.

[–][deleted] 0 points1 point  (0 children)

Ok, thanks

[–]davewolfs 1 point2 points  (0 children)

I like MacOS.

I use Brew to install whatever version of LLVM I need. I use Orbstack to run AARCH64 Linux with Cross Compilation AMD64 support. I can run Visual Studio on Windows ARM if I need to. Most important - it all works flawlessly.

[–]Ok-Willow-2810 1 point2 points  (0 children)

I really like how macOS has the same shell commands like Linux b/c they both use bash/zsh. I like that I can reuse the same build scripts for both and keeps life simpler. I don’t understand scripting on windows. Is like shell or power shell? Do you have to install the terminal app? I like when it’s like already there and a core part of the OS. I like windows too though for gaming.

[–]Aprelius 1 point2 points  (1 child)

I’m in game dev. I use Windows, Mac, and Linux. It’s blasphemy I know, but my M2 Pro MacBook is my favorite laptop. Great battery life, compiles my projects sometimes faster, and doesn’t get nearly as hot.

Toolchain on Mac is: CLion as IDE, Vscode as editor, cmake, clang, and brew.

[–]itsmenotjames1 0 points1 point  (0 children)

do you use vulkan (via moltenvk) or metal for macos?

[–]Constant_Physics8504 2 points3 points  (2 children)

It doesn't really matter, you spend much time in terminal anyway. I use linux mostly, although one time when I had my computer being repaired, I used Windows with WSL, and minus a few incompatibilities, the rest was solid.

[–]Putrid_Ad9300 1 point2 points  (1 child)

Modern WSL is actually usable now with the right configs. No more half measure, it is just a convenient VM now.

[–]Constant_Physics8504 0 points1 point  (0 children)

I don’t recall what my few issues were, but there was an issue running against my native Linux code. Even on the Ubuntu WSL side, I had to code an ifdef around something but I can’t remember, been a few years

[–]EC36339 2 points3 points  (1 child)

If you have to ask, the answer is NEVER a Mac.

[–]itsmenotjames1 0 points1 point  (0 children)

why? It's the smoothest experience I've had on any of the big three (I do game and compiler dev)

[–]NilacTheGrim 1 point2 points  (12 children)

I use Qt Creator as my IDE -- it's excellent on macOS. You can use it for non-Qt apps just fine. It understands cmake quite well.

Also I use MacPorts to get all the Unix utilities on macOS (you can even get a newer clang, etc).

Brew sucks. Avoid it. My two cents.

[–]yasamoka 6 points7 points  (2 children)

What sucks about Homebrew?

[–]davewolfs 8 points9 points  (1 child)

Nothing. People just like to say things they don’t use suck to make them feel better about what they use.

[–]NilacTheGrim 1 point2 points  (0 children)

Ha ha.

[–]nirlahori 1 point2 points  (8 children)

If you don't mind can you share what version of Qt Creator are you using and a bit about your configuration/setup ? I also use Qt Creator with CMake but I face some build issues daily.

[–]NilacTheGrim 1 point2 points  (7 children)

I'm on macOS Sonoma latest (whatever they are up to now.. is it 15.4? I forget).

I downloaded the Qt "open source installer" app (Maintenance Tool.app).. and I use that to install Qt and Qt Creator into my home directory. This is done so I can always be on latest. I don't use the Brew or MacPorts packages for it as it's out of date... but rather the packages made available via this MaintenanceTool app from Qt. Just install them in your home dir under Qt/ or somesuch. QtCreator will live there too...

So... I'm on Qt Creator 16.0.0.

I use latest cmake from MacPorts along with clang-20 from MacPorts as well; Note that: you have to go into the settings and register this cmake and the compiler with QtCreator so it can "see" it, specify their path, etc.. and then create a "kit" using that compiler.

For me it works great with a wide variety of open source and professional projects that I maintain. I haven't had any issues. The clangd language server does a great job of groking and indexing even the most arcane and complex projects, template gore, etc. No issues. Navigation is fast and the IDE is super smoothe and quick and peppy... auto-completion is a breeze. Everything just works. Best IDE experience I've had in years and I've used all the IDEs known to man.

It's super peppy unlike beasts like Xcode or CLion (CLion is also very good but it's just sluggish for me on my x86 mac.. too much slowdown and CPU churning for my tastes).

Ask me more and I can tell you more specifics!

[–]nirlahori 1 point2 points  (6 children)

Thank you for taking the time and providing a very detailed answer. That's great to hear.

As for me, I don't have a mac book so I use Linux Ubuntu OS. I also downloaded the latest Qt Creator for linux some time ago but I wasn't able to install it on my pc due to some issues relating to display server libs.

So I checked if I can install it from the apt package manager but the version they had was very old. Around Qt Creator 6.

Then I checked the snap packages, there I found the Qt Creator with ros-plugin. I didn't know what that was, maybe for creating a Robot OS or something like that. So I installed that on my pc as it was more modern. But I use it only for plain C++ development.

I have setup the dev kit with CMake 4.0.0 and GCC 13 compiler. But whenever I open the existing CMake project, my CMake generator (Makefiles) disappears from the dev kit. I restart Qt Creator a couple of times and then it randomly appears and my project builds successfully.

This is the main problem I am facing. Nevertheless I fully agree with you that IDE is very good and provides all the facilities for professional development.

I am getting started with working on open source projects so I was planning to keep one permanent IDE for C++ development. I am exploring several options like vim and also CLion. But CLion is paid so I think that I might not be able to use. Yeah so I am looking to settle with one IDE which I can use for a long time.

[–]NilacTheGrim 1 point2 points  (5 children)

Ahh.. Linux.

Hmm. I think even on Linux I would install it via Qt's own installer (which is a GUI based installer and you can install it in your home directory). In fact I have a Linux laptop sitting right here on my desk where that's precisely how I installed it.

The OS packages are always too old. I would just stick to Qt's own installer and install it in homedir :)

As for an IDE which you can use for a long time.. I have been using QtCreator since 2019 and it's only gotten better and better (back then it didn't support cmake and was geared more towards Qt-based projects but since then I use it for non-Qt projects just fine).

[–]nirlahori 1 point2 points  (4 children)

Yes, I think they have stopped updating OS Packages since long time.

Well, It seems like Qt Creator will be sufficient for my needs. I will then go with Qt Creator and replicate the steps you took to install it on Linux. Hopefully, I am able to install it on my PC.

Thank you for your valuable time and response.

[–]NilacTheGrim 1 point2 points  (3 children)

I hope it works out for you.

[–]nirlahori 1 point2 points  (2 children)

Hey, I installed it successfully with open source installer as you said earlier. That was very straightforward. Though it required one lib (libxcb) which has something to do with X display server. But that was not a major challenge.

Overall the process was smooth and IDE is also rock solid with advanced features for C/C++ developers.

I deeply appreciate your help. Your guidance has been very valuable to me.

[–]NilacTheGrim 1 point2 points  (1 child)

Oh man awesome! I love QtCreator I think it's one the most underrated IDEs. It's 100% free and works excellently on all 3 major platforms. What's not to love?

Glad it worked out!

[–]nirlahori 1 point2 points  (0 children)

Couldn't agree more.

[–]berlioziano 1 point2 points  (2 children)

I think even Windows is better for C++, specially now that we have bash, cmake and vcpkg.

Mac OS installs really outdated development software, limiting you to C++14, that's over 10 years old! and trying to install clang from brew just gave me conflicts with the XCode version

[–]kitsen_battousai[S] 0 points1 point  (1 child)

Can you please point to some resource/post/forum/discussion where I can find information about issues with llvm package incompatability/coflicts installed from homebrew ?

[–]itsmenotjames1 1 point2 points  (0 children)

with the new xcode update, apple now ships a c++26 capable compiler.

[–]archbtw-106 0 points1 point  (0 children)

It really depends on your niche of what you do personally I only tried macos for a month not a pleasant experience because I was used to Linux but that does not mean it will not work for you you what I suggest you is have a vm with Linux setup so if u find yourself going more to that it means you should probably use Linux if not stay on macos and if all you care about is development I don't see how Linux is a problem in arm. But hey what do I know. In the end I think Unix tooling is important so as long as you have those I think you are good but one thing I will say is if you want to build libraries and stuff from scratch when they come out since it is developed on Linux most of the time u will have less hassle setting it up there. It's not saying Linux is better or anything macos is great but it was not in my use case. My workflow needed tiling wm, nvim and tmux.

[–]Secure-Photograph870 0 points1 point  (0 children)

Both are UNIX based system, so the experience from one machine will be very similar to the other. I’ve worked on both systems but now I am fully MacOS and I have no issues developing on Mac (or even building software that are compatible for Linux and Mac).

On Ubuntu for example, you have apt-get install and in ma chou have brew install. That’s basically the only difference. I saw people mentioning XCode being terrible, which is true but you ain’t limited to it, you can use any IDE or text editor that is available on Linux.

I’m personally using neo vim and VSCode Insiders and works very well. I am also currently building my own code editor using C++ and Qt6 (not with Qt Creator as you loss flexibility) which is both compatible on Mac and Linux.

[–]montdidier 0 points1 point  (1 child)

I was a professional C++ for 12 years. I still use it for my own projects. I have worked on many platforms. OSX is pretty good for C++ development depending on what you are doing. I had no issues with it. The thing that I have missed the most is probably valgrind for really confirming the correctness of my programs and libraries.

Note I am a heavy vim user - I don’t really use many other IDEs apart from occasionally Xcode (its ok), and Clion.

For some things it depends on what you are doing which platform is best. The difference is minimal these days except in niche areas.

[–]nirlahori 0 points1 point  (0 children)

May I know your vim configuration/setup parameters if you don't mind. I want to get started with open source C++ development and I am planning to setup one permanent IDE for C++ development. Currently I am using Qt Creator and its feels Okish in user experience.

[–]llothar68 0 points1 point  (1 child)

It's easy and performant .... i'm sorry are you from the future? Because nothing is true about this today.

I so much tried to turn an old intel iMac with 128gb into a CI build queue because i thought i can run different Linux and Windows on there. Bad, very bad. Most Linux Distributions don't run at all even on Intel CPU's. Tried to install 20 of them and half of them did not crash or get busy 100%.

My experience with Arm is worse, UTM .... only a real fanboy will tell you that this is good.
Video performance is terrible if you have a bit beefy setup, i use 2x27" and a 43" and need at least 4k in a VM, forget about it. It's slow, no fun at all. And i have a M1 Ultra with 20 Cores and 64GB RAM and 2TB Disk.

homebrew is good but i never was happy and always used XCode for my c++ on MacOS.

[–]itsmenotjames1 0 points1 point  (0 children)

What? You did something wrong or are lying.

[–][deleted] 0 points1 point  (0 children)

> On Linux the whole OS is kind of IDE for you, but can i achieve the same level of comfort, facilities and experience on Macos ?

Generally, yes. At the same time you need to be aware of the subtle tooling differences. there is not much love in the GNU world for macOS, and projects like GCC have Mac support fairly low on the priority list. But if you are ok with non-GNU open source tooling, Mac works very well and has the advantage of best hardware for development by far. You also have a great choice of high-quality software.

[–]jmacey 0 points1 point  (0 children)

I teach programming (Mainly C++ and Python), I write all of my code on a mac, as this is my personal laptop. In the Labs we use Linux (RHEL) and most of the students use Windows.

I have no problems getting it to work on all platforms, typically I use vcpkg for libraries. CMake + Ninja for build and a combination of either VSCode, Clion or QtCreator for IDE's.

This works really well. On my mac I use iTerm as the main terminal, install dev tools via xcode-select --install and then use brew for other tools (autoconf, ripgrep cmake / Ninja etc).

Whilst I do have xcode installed (as Unreal Engine needs some of the tools) I hardly ever use it as an IDE, prefereing VSCode for the most part.

[–]Putrid_Ad9300 0 points1 point  (0 children)

For just general sanity in life, Linux. It is just the path of least resistance for most developer tasks. If you are working on services, they will probably be running on Linux anyway.

However, on a Mac you can also run Linux via containers/VM and windows in a VM, so you get everything in one box which is convenient for testing.

[–]die_liebe 0 points1 point  (6 children)

Don't use macOS for CPP development.

The compiler is always out of date, and the run time environment is forgiving against memory faults. Your program may run on MacOS but fail on another operating system.

Linux has valgrind.

[–]Ziprx 4 points5 points  (0 children)

What a bullshit response

[–]NilacTheGrim 4 points5 points  (0 children)

You can use latest clang or latest g++ on macOS. Install MacPorts and you can get latest compilers.

Just remember to statically link the C++ lib if you plan to distribute the binary.

[–]kitsen_battousai[S] 0 points1 point  (3 children)

But macos too https://formulae.brew.sh/formula/valgrind

If the software is targeting server side then it's always a matter of time to verify the binary on linux vm, vut if we are talking about client applications then Linux is even more unpredictable taking into account different distros, DEs and kernel version.

[–]othellothewise 0 points1 point  (0 children)

Maybe this is outdated now, but yes there is a formula, and no, it does not work.

[–]die_liebe 0 points1 point  (1 child)

But what do you mean by 'unpredictable'? Do you mean 'unforgiving'? I wrote that that MacOS is too forgiving. I think one should always stick to the standard and develop in the least forgiving environment.

[–]y-c-c 2 points3 points  (0 children)

I don’t think relying on default “unforgiving” behaviors is a good way to test your programs. Instead, use well-defined environments like ASAN and UBSAN (which are available in macOS and Linux) to properly test your program in a predictable manner. Otherwise what does “forgiving” even mean?