Inflation can exist because of a lot of things: natural loss of value, resource scarcity, monetary policy, greed, etc. And it's even harder to make sense of with fiat currency. > Seemed like a vicious cycle. The issue…
Yes, the laws of thermodynamics and laws of economics are empirical laws. But, the laws of economics are derived from human values, which are inherently subjective. You state the choices as “illogical”, but those…
I don’t see how it’s an improvement over C# structs. C# structs are value types so they are copied when assigned to a variable like primitives. There is no ambiguity because it’s a struct. To avoid copying you have to…
Even closer would be a C# ‘readonly record struct’. Though, it would be allocated on the stack unless you box it.
Imo #4 is why it’s not that useful. If the data is larger than an atomic read/write op the data isn’t flattened and it’s a regular object with value equality and immutability. You have to opt into force flattening, and…
The C# equivalent to Java ‘value class’ would be a class with a struct encapsulated for data. The data is flattened and allocated on the heap like Java. Similarly, escape analysis could stack allocate the class at…
I hate to say it. But thats user error. The struct paradigm is different from classes. Structs are meant to be plain-old data types; simply a typed span of memory. Structs are values, classes are entities with…
Yeah, that’s a different issue. Statically-typed languages, including type-erased languages, are fine on the CLR. Dynamically-typed languages are a different beast. I suppose DLR would be comparable to GraalVM/Truffle.…
C# stackalloc returns a ‘ref struct’ which has certain restrictions and would be a Q-world type. Java chose to go with an L-world implementation where everything is still a reference type on the heap, but memory…
All that to be bytecode backwards compatible, although behaviorally there are some breaking changes. See https://news.ycombinator.com/item?id=48597943
There's also https://github.com/ikvmnet/ikvm that converts Java bytecode to CIL; essentially Java on CLR.
I made a comment on my understanding of the difference in implementation here: https://news.ycombinator.com/item?id=48606173 The ramifications for backwards compatibility is that the JVM won't have CLR features such as…
> Now, one can argue that this is just smoke and mirrors with type erasure and it is but you can already put a Date into a List<Point> if you're so inclined because the JVM doesn't know the difference, hence type…
Not necessarily. You can ignore the reified generic system in the CLR and monomorphize it in the CIL output for your language. Debugging for users is usually a nightmare though due to the monomorphization. The benefit…
I mean, the language is what it is. But, it definitely constrains the language developers. Especially when considering interop with other JVM languages. That being said, it is easier to write a language on top of the…
I don’t think that’s the case. You can absolutely implement a type-erased language on top of the CLR. Your language will just have the same constraints of a type-erased language like Java. Having reified generics in the…
The gotcha is the potential boxing of structs onto the heap, but that can be avoided using `ref struct`s. https://news.ycombinator.com/item?id=48599273
Like @layer8 said, pass by copy and pass by value are the same. C# copies C++ behavior where you can pass a struct by value or reference, and you can mark the parameter as readonly. C# also has in/out parameters.…
Cell phone towers and communication systems have backup power for emergency communication during power outages. If you have backup power for your router and ONT/Modem, you should also still have internet service during…
> On the one hand, you are right, and I rather meant "not exploitable", since technically the vulnerability is still there. And I'm fine with that. I think, the Qubes OS notices should use that terminology as well.…
> My point is that they shouldn't. I am saying that it would be better for society if we regulated that. Playing devil's advocate here. Why should software developers be allowed to restrict where/how their software is…
So, not being vulnerable is dependent on not doing something that can make you vulnerable? That doesn't seem right. If you can do something to make yourself vulnerable, you are vulnerable. >…
> What would you say if your bank banned your Fairphone (that runs Stock Android signed by Google) just because it is a Fairphone, and "a few hundred thousands of users is marginal"? I think even the regulators would…
You know that Xen is just a hypervisor right? Dom0 (the admin Qube) is running the Linux kernel and is vulnerable like any other Linux system. DomU (App Qubes) also run the Linux kernel and are just as vulnerable. You…
I would group GrapheneOS with Android. If you handed a layperson a GrapheneOS phone and asked them what OS was on the phone, they would probably say Android. But considering it as a separate OS, I wouldn’t consider it…
Inflation can exist because of a lot of things: natural loss of value, resource scarcity, monetary policy, greed, etc. And it's even harder to make sense of with fiat currency. > Seemed like a vicious cycle. The issue…
Yes, the laws of thermodynamics and laws of economics are empirical laws. But, the laws of economics are derived from human values, which are inherently subjective. You state the choices as “illogical”, but those…
I don’t see how it’s an improvement over C# structs. C# structs are value types so they are copied when assigned to a variable like primitives. There is no ambiguity because it’s a struct. To avoid copying you have to…
Even closer would be a C# ‘readonly record struct’. Though, it would be allocated on the stack unless you box it.
Imo #4 is why it’s not that useful. If the data is larger than an atomic read/write op the data isn’t flattened and it’s a regular object with value equality and immutability. You have to opt into force flattening, and…
The C# equivalent to Java ‘value class’ would be a class with a struct encapsulated for data. The data is flattened and allocated on the heap like Java. Similarly, escape analysis could stack allocate the class at…
I hate to say it. But thats user error. The struct paradigm is different from classes. Structs are meant to be plain-old data types; simply a typed span of memory. Structs are values, classes are entities with…
Yeah, that’s a different issue. Statically-typed languages, including type-erased languages, are fine on the CLR. Dynamically-typed languages are a different beast. I suppose DLR would be comparable to GraalVM/Truffle.…
C# stackalloc returns a ‘ref struct’ which has certain restrictions and would be a Q-world type. Java chose to go with an L-world implementation where everything is still a reference type on the heap, but memory…
All that to be bytecode backwards compatible, although behaviorally there are some breaking changes. See https://news.ycombinator.com/item?id=48597943
There's also https://github.com/ikvmnet/ikvm that converts Java bytecode to CIL; essentially Java on CLR.
I made a comment on my understanding of the difference in implementation here: https://news.ycombinator.com/item?id=48606173 The ramifications for backwards compatibility is that the JVM won't have CLR features such as…
> Now, one can argue that this is just smoke and mirrors with type erasure and it is but you can already put a Date into a List<Point> if you're so inclined because the JVM doesn't know the difference, hence type…
Not necessarily. You can ignore the reified generic system in the CLR and monomorphize it in the CIL output for your language. Debugging for users is usually a nightmare though due to the monomorphization. The benefit…
I mean, the language is what it is. But, it definitely constrains the language developers. Especially when considering interop with other JVM languages. That being said, it is easier to write a language on top of the…
I don’t think that’s the case. You can absolutely implement a type-erased language on top of the CLR. Your language will just have the same constraints of a type-erased language like Java. Having reified generics in the…
The gotcha is the potential boxing of structs onto the heap, but that can be avoided using `ref struct`s. https://news.ycombinator.com/item?id=48599273
Like @layer8 said, pass by copy and pass by value are the same. C# copies C++ behavior where you can pass a struct by value or reference, and you can mark the parameter as readonly. C# also has in/out parameters.…
Cell phone towers and communication systems have backup power for emergency communication during power outages. If you have backup power for your router and ONT/Modem, you should also still have internet service during…
> On the one hand, you are right, and I rather meant "not exploitable", since technically the vulnerability is still there. And I'm fine with that. I think, the Qubes OS notices should use that terminology as well.…
> My point is that they shouldn't. I am saying that it would be better for society if we regulated that. Playing devil's advocate here. Why should software developers be allowed to restrict where/how their software is…
So, not being vulnerable is dependent on not doing something that can make you vulnerable? That doesn't seem right. If you can do something to make yourself vulnerable, you are vulnerable. >…
> What would you say if your bank banned your Fairphone (that runs Stock Android signed by Google) just because it is a Fairphone, and "a few hundred thousands of users is marginal"? I think even the regulators would…
You know that Xen is just a hypervisor right? Dom0 (the admin Qube) is running the Linux kernel and is vulnerable like any other Linux system. DomU (App Qubes) also run the Linux kernel and are just as vulnerable. You…
I would group GrapheneOS with Android. If you handed a layperson a GrapheneOS phone and asked them what OS was on the phone, they would probably say Android. But considering it as a separate OS, I wouldn’t consider it…