Recent submissions

Comment · 8 years ago
I’m not saying that 1<<x is generally meaningless. I’m saying that whenever the shift operand is negative, it’s meaningless. Just like log(x) isn’t generally meaningless, it’s only meaningless when the argument is not positive.

Syntactic constructs in general should and do have meaning. The meaning isn’t inherent, but nothing has inherent meaning. log(x) has no inherent meaning, but when x is positive we have decided that it means that it evaluates to the value to which you would raise 10 to get x.

Bad run-time values only cause UB in the context of improper usage in syntactic constructs. They aren’t independent of syntactic constructs: both syntactic constructs and values dictate behavior.

You’re right that UB only manifests itself at run-time. And you’re right that we wouldn’t need to use UB for constructs that only manifest their behavior at compile-time. Indeed, there exists syntactically valid yet meaningless C++ template substitutions that don’t result in UB, they result in compilation errors.

Comment · 8 years ago
Comment · 8 years ago
It doesn’t need to be unable to be precluded at compile-time to be UB. The expression “1 << -3” can be precluded at compile-time, yet it compiles just fine: instead it invokes UB.

Doing something at runtime is a different concept from having a runtime.

In any case, C, in fact, often does have a runtime. What do you think executes main()?

Comment · 8 years ago
Undefined behavior doesn’t exist to ease portability per se, it exists to handle meaningless yet syntactically valid constructs.

Shifting by a negative number is meaningless and is indicative of programming error. Instead of specifying that an implementation should check and handle these programming errors, which implies runtime costs, we use undefined behavior and leave the responsibility to the programmer.

The reason many compilers assume a positive shift after a shift operation executes is because otherwise the entire program would be undefined. You’re effectively asking for undefined programs to have defined behavior. The equivalent would be asking the compiler to correct your typos and it can’t do that. As they say: garbage in, garbage out. The compiler isn’t the one booby trapping you, you’re booby trapping yourself.

I think GP is right that what you want is more definition but it has to be in specific cases because otherwise the runtime costs would be too high. In your negative shift example, the definition would be “shifting by a negative number results in garbage output,” but note that that would burden implementations where negative shifts trap.

Comment · 8 years ago
Agreed, why not attach it to the internal USB bus? Maybe it’s a sourcing / business deal thing. I’m theorizing most laptop manufacturers have made a deal with m.2 pcie wifi producers and not the usb WiFi producers.
Comment · 8 years ago
Inspiring story. My uncle was in prison for most of my childhood, when he got out my dad helped train him for a job in IT. It wasn’t easy since the idea of making money using a skill was so foreign to him. I can’t help but think a program like this would have ease his transition.
Comment · 8 years ago
I wish there were more technical details on kaleidoscope. Just seems like lots and lots of borderline-meaningless high-level overview.
Comment · 8 years ago
That’s my point.
Comment · 8 years ago
How about they all pose a serious threat to privacy?
Comment · 8 years ago
Wasn’t sure which direction he was going in but now I see. That’s incredible satire. Thumbs up.
Comment · 8 years ago
Yeah the “fake news” narrative only serves the large media corporations that want to maintain their monopoly on content. Over time more news sources, including “fake” ones, will actually improve culture and society.
Comment · 8 years ago
Yeah it’s completely untrue. There were lots of very powerful weapons available in those days that rival today’s assault weaponry (even from medieval times) and the 2nd amendment makes no mention of that.

The 2nd amendment is a principle, not a law. It’s a universal, in time and space, foundation upon which we base our laws. The Founders were well aware of this and it actually was their intention.

These were highly educated enlightenment thinkers, to assume they didn’t foresee weapon innovation is just silly.

Comment · 8 years ago
Never made that claim but thanks for the info.
Comment · 8 years ago
The first amendment isn’t intended for physical speech. It exists to protect opinions and ideas. It’s for this reason lots of non-verbal “speech” is protected under the first amendment, like online posts and flag burning.

Threatening violence or slander has nothing to do with the first amendment.

Comment · 8 years ago
And they are totally wrong because there were all sorts of machine guns and powerful cannons available in those days, even some used in the Revolutionary war.

Projectile weapons have been improving throughout history, it’s silly to assume the Founders weren’t well aware of that. I mean, there were medieval weapons that were pretty devastating by even today’s standards and the first amendment makes no mention of that. These were enlightenment thinkers well versed in the history of governments and technological progress.

The 2nd amendment is a principle meant to transcend all time and cultures. The people have a fundamental right to defend their rights.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton