4,573 karma · joined September 7, 2015
However its more of a Merkle tree https://en.wikipedia.org/wiki/Merkle_tree; which blockchain is also.
The first one is about shrinking to under 8Kb.
This is about running on Windows 3.11
And yes the game now runs on MS-DOS 5.0 https://twitter.com/MStrehovsky/status/1218966180104458240
> 1/n It has always bugged me that I can't run my 64-bit C# games on MS-DOS. Today I fixed that. A thread.
1. stackless (async/await) where the operation becomes an inspectable object that you can choose what to do with (awaiting being suspend for completion) as taken by C#, C++, Python, JS, PHP, Swift and Rust
2. "with stack" where you pretend its not async; but this means when something else uses the thread you need to get the suspended operation's stuff off the thread; usually by not using the thread's stack at all and having it in the heap and just jumping into and out of these "off-thread" stacks; as used by Go and being looked at for Java (as Project Loom)
Interesting paper on it http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2018/p136...
> While fibers may have looked like an attractive approach to write scalable concurrent code in the 90s, the experience of using fibers, the advances in operating systems, hardware and compiler technology (stackless coroutines), made them no longer a recommended facility.
Disadvantage of stackless is the extra boilerplate (e.g. async/await everywhere); though it also gives more control as the consumer of the operations (e.g. fanout and wait for many; or continue not waiting for the result at all)
Advantage of the "with stack" approach is it looks the same as non async code as its all hidden (goroutines aside); which is why Java is no doubt looking at doing it as there is a large body of code that would need to be rewritten so "hiding it" is easier to avoid that.
C# had/has teething issues when async/await was introduced as it kept the initial thread blocking methods; and added the async and they don't mix very well, you need really to go one way or the other when developing.
Javascript leapt at async/await as it was all async anyway, but callback based which makes for horrible code to follow; so it made everything much cleaner.
However, speculative increases (buying land for increase in prices, buying shares for increase in share price, etc) and rent seeking adds price but doesn't add real value/investment to the economy.
And in 2.1 https://devblogs.microsoft.com/dotnet/performance-improvemen...
3.0 has new JIT capabilities like CPU hardware intrinsics; devirtualization; Span etc which in turn enable new techniques in the standard library.
Though 3.0 is a vast set of improvements compared to the previous two
A huge amount of R&D happens in academia which isn't capitalism; but then is monetised by capitalism (but doesn't reinvest it back into the academia)
> To find a time when the planet’s air was consistently above 400 ppm you have to look much farther back to the warm part of the Miocene, some 16 million years ago, or the Early Oligocene, about 25 million years ago, when Earth was a very different place and its climate totally dissimilar from what we might expect today.
Towards the end Miocene was when grasses began to emerge significantly
> The higher organic content and water retention of the deeper and richer grassland soils, with long-term burial of carbon in sediments, produced a carbon and water vapor sink. This, combined with higher surface albedo and lower evapotranspiration of grassland, contributed to a cooler, drier climate. C4 grasses, which are able to assimilate carbon dioxide and water more efficiently than C3 grasses, expanded to become ecologically significant near the end of the Miocene between 6 and 7 million years ago.
Would they sell their products for 20% less; or would they decide consumers were happy to pay at that price so keep the price the same and keep the extra as profits?
Considerations would be different if the MRI scanner was running as for profit; or you could switch coverage so the later costs would be borne by someone else.
The framework gets out of the way and any allocations are under your control
Could even use the return `await Task.WhenAny` to tell you the specific one to check. Shouldn't be a very hard construct to make; to make it more select like.
i.e. its been fully open source for 4 years https://mattwarren.org/2018/12/04/Open-Source-.Net-4-years-l... and is under the .NET Foundation rather than Microsoft https://dotnetfoundation.org/
With open membership https://dotnetfoundation.org/blog/2018/12/04/announcing-net-... and election of its board https://dotnetfoundation.org/blog/2019/01/23/why-you-should-...
https://github.com/dotnet/corefx/tree/master/src/Common/src/...
C# async/await is also very much resumable state machines