Hacker Newsnew | past | comments | ask | show | jobs | submit | CopperWing's commentslogin


For sure all the mobile gaming based on microtransactions, collectibles, the Skinner box principle and other dark patterns leading to addition.



It's [suːzə]


The DMA subsystem maintainer has some reasons: at this time you can disable all rust drivers when building the Linux kernel but you cannot disable rust wrappers to C language APIs. So if you need to change for example the DMA APIs, you also need to fix the rust wrapper before submitting the C patches otherwise you cannot even build a C only kernel.


A C only kernel build without CONFIG_RUST will not build a single line of Rust code nor will it touch anything in the rust subdirectory. If you don’t want to deal with rust, you don’t have to at all.


It’s a little bit more nuanced than this. Your parent commenter is wrong, by the way.

Suppose you want Rust, just not a single Rust driver using PCI. But CONFIG_PCI and CONFIG_RUST both selected will cause the PCI abstractions to get built anyway, even if not a single driver using them is selected. Then if the PCI subsystem introduces a change but the Rust counterpart fails to follow it fast enough, the build will break for the kernel as a whole.

This was illustrated with an example in that email thread.

I have some sad experience with polyglot projects. Unless you enjoy pain and drudgery, it’s an extremely unrewarding thing requiring very careful treading.


I don't think that's true. I have seen R4L folks reiterate time and again that C changes are allowed to break Rust code, and they will be the ones to fix it.


Nintendo chose Nvidia Tegra X1 when its previous design based on another custom ARM-based SoC failed: https://www.youtube.com/watch?v=MZzXidHVvJU


Suse/openSuse comes with Ruby pre-installed because Yast, their distinctive system manager tool, is written in Ruby.


> The question may be silly, but how does GOG handle multiplayer ?

It depends: some games implement multiplayer through their publisher's private servers (e.g. Paradox games) so users can play together regardless of the shop they bought the game from. Some others (e.g. Dying Light) reimplement multiplayer replacing Steam facilities with GOG Galaxy. In that case interoperability is not possible maily because GOG Galaxy doesn't implement the same anticheat system. Finally some other games whose multiplayer is based on Steam, had the multiplayer removed in the version sold on GOG (e.g. modern XCOM games).

> Also, their list is sadly quite limited it seems, for the games many play.

Nowadays the game market offers more than just AAA games and for people like me who stopped buying DRM-protected games and are not interested in multiplayer there are still many good games to enjoy. Some AA and AAA games are also published on GOG after a while, so it's just matter to wait and support GOG's business model if you don't like DRM.


I'm not saying the model is bad or there are no AAA games, only that this currently limits the games that could be played.

I have bought games from GOG, just not multiplayer ones (or ones that don't have DRMs anyway such as Factorio)

I also don't play much AAA games. But I'll have a hard time convincing anyone when the game they want isn't there. Not that it is GOG's fault but stil...


In C++, nullptr.


And in C?


In C, always use 0 and check for 0, it's the only safe way. For C++, it depends on the standard you're using.


Except when calling a varargs function, when you need to cast to the correct pointer type


But 0 isn't always null right?


Literal zero in a pointer context is interpreted by the compiler to mean "the null pointer." The compiler then compiles the null pointer into the code.


But then how do you get a pointer to zero (not null) in those systems?


First, that's inherently non-portable. That aside...

On most systems, the null pointer happens to be a pointer to address zero. For other systems, e.g. 8086 16-bit mode, you can create a intptr_t (which is the same size as a pointer) and set it to zero. Then cast it to a pointer. Such casting is always done bitwise, so it will work.

The compiler knows to turn the following into the null pointer

  void *p = (void *) 0;
but the compiler will NOT turn the following into a null pointer

  void *p = (void *) (uintptr_t) 0;
because the literal 0 is now in an integer context, not a pointer context.


BTW 0 is a valid literal value of a pointer type (so you do not need a cast).


Thank you!


Signatures were introduced in git as part of the response to the kernel.org hack in 2011.


Well, LibreOffice is not "copyleft" licensed. It is distributed under a joint of licenses: GNU Lesser GPL v3+ and Mozilla Public License v2. The latter is not "copyleft".


I could be wrong, but from what I remember, the MPL has generally been considered a "weak copyleft" license.


As far as the Wikipedia definition of it goes, yes it is a "weak copyleft", but that basically means that the license on code and patents is liberal, while license on trademarks is not. That is to prevent bottom feeders to take for example Firefox and LibreOffice, rebuild them with adware and malware and redistribute new installers as "Super Firefox", "LibreOffice Improved" or other misleading trademarks.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: