• 0 Posts
  • 2 Comments
Joined 1 year ago
cake
Cake day: September 20th, 2023

help-circle
  • I agree that we shouldn’t worry (at least for the moment), but I think the main reason is the lack of locks, both when it comes to hardware (no locked bootloader) and software (getting root access is trivial, so you can uninstall whatever components you might not like and with updates not being mandatory you can keep it under your control).

    With SteamOS, you already have an ecosystem, which is Steam. There is (at least for now) a clear distinction between Hardware manufacturer and software provider.

    Currently, the only officially sanctioned version of SteamOS is the one that is shipped with Steam Deck (even though that might change soon), which is hardware sold by Valve (ie, the same company making the software). Meanwhile, most people using Android don’t use Pixel / Nexus devices and thus their hardware is not being sold by Google.

    So I’d say this depends entirely on how do the new manufacturers wanna go about it when it comes to offering their own custom versions of SteamOS. At the moment this is ok because Valve has been acting as a “benevolent dictator” and they have essentially had a monopoly on SteamOS 3 devices until now. Once that monopoly breaks (and if Valve actually allows third parties to ship their own customizations) we’ll have to see what kind of control will their partners want to assert over it.


  • What C does depends on the platform, the CPU, etc.

    If the result actually differs due to compilers deviating in different architectures, then what we can say is that the language/code is not as portable. But I don’t think this implies there’s no denotational semantics.

    And if the end result doesn’t really differ (despite actually executing different instructions in different architectures) then… well, aren’t all compilers for all languages (including Rust) meant to use different instructions in different architectures as appropriate to give the same result?

    who’s to say what are the denotational semantics? Right? What is a ‘function’ in C? Well most C compilers translate it to an Assembly subroutine, but what if our target does not support labels, or subroutines?

    Maybe I’m misunderstanding here, but my impression was that attempting to interpret the meaning of “what a function is in C” by looking at what instructions the compiler translates that to is more in line with an operational interpretation (you’d end up looking at sequential steps the machine executes one after the other), not a denotational one.

    For a denotational interpretation of the meaning of that expression, shouldn’t you look at the inputs/outputs of the “factorial” operation to understand its mathematical meaning? The denotational semantics should be the same in all cases if they are all denotationally equivalent (ie. referentially transparent), even if they might not be operationally equivalent.