sprw121
The second and third order effects of this are going to be terrible. You have a large portion of the country that feels disenfranchised, unheard, and forgotten (the rural American working class). This is why Trump got elected, and why the Capitol was stormed.
These people had some hope and felt heard through Trump. Removing him, along with the purge of many other conservatives (they've even banned an account I followed which posted documents on the Flynn case and provide some legal analysis) will serve to worsen this.
I heard the phrase "violence is the language of the unheard" to justify the unrest and rioting this summer; I agree with this statement, and why I fear for the worst.
I have to say that compared to other ad exchanges. AdX (google's ad exchange) is far and ways ahead of any other ad exchange in minimizing the the amount of fraudulent traffic that we as ad buyers get exposed to. I did them serious props.
Not that buffer reuse/avoiding heap allocations was unknown to me, it was just surprising to see this in an application that spent most of it's time waiting on the network.
I will say as a positive point that the equivalent D code to a C++ implementation was much cleaner due to build in array slicing among other things.
There are other areas where heap allocations are not so avoidable however (some hashmaps, some std's). My main point is that like at all languages, heap allocations are slow, but here they bear an unnecessarily large contention factor.
I really like D so I hope this is helpful feedback.
However not a beat a dead horse, but if you want to process more than a trickle of data in it you run into problems with the GC really quickly. I really feel the language would be better off without the GC.
These are not the same issues address by the JSON compiler post or w/e that surfaces a couple months ago.
From what I can tell, theres a global lock around everything in the GC, including allocations. In a multi-core world, this just simply doesn't work and it one of the major pain point of the language. I write data-intensive processing on high core count machines (32), and have had to resort to 0-allocation strategies, or in map-reduce contexts actually sharding at the process level, writing the results to disk, and then running a reducer process over the results.
You can write performant D code, but you give up large amounts of code safety. It's essentially just whatever you'd write in C++ without the ownership semantics it gives you.
You can't have a core part of your language being an essentially unavoidable massive point of contention.
I've literally seen 20x or more speedups in multithreaded cases just by making sure I reuse every buffer rather than create new ones.
I feel this is really holding back an otherwise great language to work in.
This is discussed in the reddit thread in more detail.