Yeah but Windows is a more stable api to develop against than Linux (at least when it comes to stuff that games need to do) - it doesn't feel "pure", but pragmatically it's much better as a game developer to just make sure the Windows version works with proton than it is to develop a native Linux version that's liable to break the second you stop maintaining it.
Yes, they are easy to port a lot of the time. Especially now because you can use DXVK to translate DirectX calls into Vulkan, so you don't need to write a Vulkan renderer. Input is sometimes a trickier one to deal with but a lot of the time games are using cross-platform libraries for that already!
Despite all this the Unity engine has spotty Linux support. Some games run better under Wine vs. Unity's native Linux builds. It's Vulkan renderer has had a memory leak for a while now. Input has randomly decided to double keypresses on some distros.
The hard part of Linux ports isn't the first 90% (Using the Linux APIs). It's the second 90%.
Platform bugs, build issues, distro differences, implicitly relying on behavior of Windows. It's not just "use Linux API", there's a lot of effort to ship properly. Lots of effort for a tiny user base. There's more users now, but proton is probably a better target than native Linux for games.
It’s not really about OS differences - as the GP said, games don’t typically use a lot of OS features.
What they do tend to really put a strain on is GPU drivers. Many games and engines have workarounds and optimizations for specific vendors, and even driver versions.
If the GPU driver on Linux differs in behavior from the Windows version (and it is very, very difficult to port a driver in a way that doesn’t), those workarounds can become sources of bugs.
Meanwhile I had to pirate Dark Souls 1 because Microsoft's own DRM prevented the legitimately purchased game from saving on Windows, and download official no-cd patches for two other games because their DRM stopped working.
GraalVM is terrible. Eats gigabytes of memory to compile super simple application. Spends minutes doing that. If you need compiled native app, just use Golang.
I used to be really excited about GraalVM but this, together with limitations in what Java code can run (reflection must be whitelisted - i.e. pain) made me run away from it. I do use Go, but my favourite substitute for Java is actually Dart. It can run as a script, compile to a binary or to a multiplatform "fast" format (a bit like a jar), and performance wise it's par on par with Java! It's faster on some things, a bit slower on other... but in general, compiling to exe makes it extremely fast to start, like Go. I think it even shares some Go binary creation tooling since both are made by Google and I remember when they were implementing the native compiler, they mentioned something about that.
Why should compiler optimize obviously dumb code? If developer wants to create billions of heap objects, compiler should respect him. Optimizing dumb code is what made C++ unbearable. When you write one code and compilers generates completely different code.
No, in the example they provided, programmer wrote obviously stupid code. It has nothing to do with necessity:
Long sum = 0L;
for (Long value : values) {
sum += value;
}
I also want to highlight that there are plenty of collections utilizing primitive types. They're not generic but they do the job, so if you have a bottleneck, you can solve it.
That said, TBH I think that adding autoboxing to the language was an error. It makes bad code look too innocent. Without autoboxing, this code would look like a mess and probably would have been caught earlier.
It makes sense, if manufacturer provides support for Linux on the same laptop SKU. But that's very rarely the case. So selling laptop without OS seems like selling half-working product. When you're buying a car, it comes with a lot of software. ECU software, multimedia software (sometimes it's Windows CE) and so on.
I saw laptops selling with FreeDOS but realistically speaking I think that majority of these laptops end up with pirated Windows, so all it provides is increasing level of piracy.
Ideally laptop should provide a choice between Linux and Windows on the first boot. And easy way to buy Windows license if user chooses it.
The C# world also has quite a few paid libraries, especially for UI stuff.
Quite a few years ago I worked at a company using Delphi, and judging by their homepage they are still using it. A company making industrial machinery, with a tiny internal software department for the software for provisioning and maintaining the machines, as well as the control room software. Usability and development velocity is more important than looking hip, and easy access to hardware interfaces is paramount. And compared to developer salaries those license costs really aren't that bad
On Microsoft, Apple, and game consoles, it is still pretty common to pay for development tools.
Also pretty common in enterprise tooling, which is the market of tools like Delphi.
The alternative is everyone getting surprised that their favourite free software development tools (only free thanks to VC money), eventually goes away.
(Technically it is optional if you don't need to ship signed apps or submit to the app store and you don't care about the rest of Apple's developer program.)
They have free community edition. Main restriction seems to be: "If you're an individual, you may use Delphi CE to create apps for your own use and apps that you can sell until your revenue reaches US$5,000 per year."
How does it track time? Is it possible that user will just change current time to the future to instantly process the request? Is it possible to track time "safely"?
It's incredibly bloated. I don't want AI engine in my OS. I don't want Spotlight in my OS. I don't want my OS to load CPU for 10 minutes after boot for who knows what. I don't want my OS to ship with Chess app and lots of other irrelevant software. I don't want my OS to ship with Music app and bother me with subscription offers. I don't want my OS to ship with iCloud app.
They also do strange choices regarding shipped software. For example they ship ancient bash 3, apparently because they hate GPLv3 or something like that. I like GPLv3 and this choice makes macos user-hostile.
reply