Recent submissions

Comment · 23 days ago
Comment · 1 month ago
He's trying to imply that you're a crypto-fascist because you presented some hate-facts.

It's sad that there can be no straightforward discussion of issues like this. It doesn't help anyone except people who are paid from ineffectual educational and social programs.

Comment · 2 months ago
It's called inflation. If you helicopter money on people they will bid up the prices of everything that they need. We had an experiment with this just a few years ago.
Comment · 2 months ago
7x not 390x
Comment · 2 months ago
>>>The problem is that a reader should not do anything with the data that is read, which depends on its value, before validating the copy, by counter comparison.

The description of the problem explicitly says that this is not happening. The data is being thrown away if the counter comparison fails. So the only undefined behavior that I can think they might be referring to is the act of loading the data itself, even though it is thrown away if it is wrong. Is that what they mean?

Comment · 2 months ago
So you're saying the problem that this article is solving is just preventing the language from generating code that can possibly load some incorrect bytes from main memory, even though these incorrect bytes will in every case be ignored? Why is this considered a problem at all?
Comment · 2 months ago
From the article: >>>The Problem: Even if the reader detects that the data was modified and discards the copy before use, the act of copying the non-atomic data itself still triggers undefined behavior. While a sequence lock can detect that a data race occurred, it does not prevent it.

Why is this a problem? Isn't the correct way to deal with a sequence lock failure to just retry? A torn read yes means you get undefined behavior as far as the result of your read, but you throw it all away and start again anyway so what is this solving?

Comment · 3 months ago
There is a good proportion of the planet that will look at that and say "well we just needed to write bigger checks."
Comment · 3 months ago
What do you mean? The FBI could know that this VPN ip visited ngrok and then the retailer website, but how would it know that that ip was associated with the specific GDID unless microsoft was tracking (timestamp,website,gdid) tuples?
Comment · 3 months ago
Yes I can see it would be pretty fast, but the computation is defined at run time and its evaluation uses pointers to the various nodes of the computation graph. This limits what optimizations be applied (ie inlining, vectorization, reordering, etc). I'm just curious if anyone has taken this a step further and written something like PSAC except with a code-generation step that creates an optimized implementation of psac_propagate() for the specific computation graph.
Comment · 3 months ago
Is anyone aware of a version of this focused on very speed sensitive, low-level incremental computation? Like perhaps a compiler that generated a kernel for doing an incremental computation on a static graph?
Comment · 3 months ago
How do you consistently update a DAG, like you describe in your medium article, if the functions corresponding to the nodes in the graph are free to create new dependencies willy-nilly? It seems like this would have to be pretty restricted and/or performance killing, because you'd have to evaluate the graph under the assumption that any node could depend on any other node (unless that dependency creates a cycle, presumably). This overhead may not matter if the node functions are expensive relative to the cost of managing the graph, though.
Comment · 3 months ago
Can anyone comment on the suitability of databases of any kind as the data source for running a "high frequency trading" backtest? The fact that the market data ticks are in a database doesn't seem that helpful, given that the order book state needs to be built up by processing all previous ticks since market open anyway.
Comment · 3 months ago

  block
    statement (assignment)
      expression
        operator (post-increment)
          operator (dereference)
            variable
      expression
        variable
I don't think this could possibly be a valid AST for '*lwr++ = x' because the increment is not an operation on the dereferenced value, its an operation on the pointer. So in this case I don't see how it could help but be transformed into a form similar to the "beginner friendly" case.

Or perhaps I am wrong and it would generate an AST like you describe and rely on later passes to actually create a proper dependency graph. My mental model of how these kinds of postfix operators work always assumed it must very early on turn it into two separate statements. Thank you for the suggestions.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton