macdice
Main learnings: the IOCP version can't do asynchronous flush! Which we want. The IoRing version can! But it can't do scatter/gather AKA vector I/O yet! Which is an essential feature for buffer pool implementation. So actually I am basically waiting for IoRing to add support for that before taking it too seriously (I can see they are working on it because the ops are present in an enum, it's just that the build functions are missing).
So my guess is that in a year or so we should be able to run all PostgreSQL disk I/O through IoRing on Windows. Maybe?
Another complications is that it really wants to be multithreaded (consuming completions for IOs started in another process requires a lot of hoop jumping, I made it work but...) This will resolve itself naturally with ongoing work to make PostgreSQL multithreaded.
The next problem is that IoRing doesn't support sockets! So in future work on async networking (early prototypes exist) we will likely also need IOCP for that part.
https://store.planetcom.co.uk/products/astro-slide
I suppose this means that they still have a firm intention to produce eventually, hopefully even with an updated chipset given that the original parts are lost ("ODM is effectively unwilling to release remaining produced stock and the pre-purchased chipsets"!) Obviously you know all that, fellow backer, but just in case anyone else is interested in this debacle:
https://www.indiegogo.com/projects/astro-slide-5g-transforme...
At this point I think of it as the Delorean of handheld computers...
https://www.zdnet.com/product/cosmo-communicator/
[Edited for typos]
I've been able to debug PostgreSQL issues reported by [closed] Solaris users by booting illumos inside a virtual machine on my laptop in minutes...
I want to keep AIX support, for, well mainly irrational nostalgic reasons -- PostgreSQL used to run on pretty much the entire Unix family tree, and I wrote lots of code on AIX for a decade. But they make it hard. I don't know why an OS vendor wouldn't make an image of an OS available to developers as conveniently as possible (it is even possible to boot recent AIX versions on QEMU if you have the patience... the hypothesis is that they might have done work to make that possible, 'cause it didn't work in earlier versions; but you can't get an image of OS, so shrug).
https://www.postgresql.org/message-id/flat/CY5PR11MB63921AB0...
src/lib/sort_template.h is an example of a pseudo template function, but we also have at least one pseudo template container in src/lib/simplehash.h.
And if you want to see some "policy based design" (C++ community term) in PostgreSQL C code, check out src/backend/exec/nodeHashjoin.c. It uses forced inlining to "instantiate" two different versions of the hash join executor code, one with parallelism and one without, so that we don't have all the "am I in parallel mode?" branching/code size in the generated code.
I was just a kid catching the tail end of all that, but there are still a couple of hard-to-get-your-hands-on big iron Unixes like that; I've worked on most of them (ie those and many that are gone), and I must say it's surprising to me that, by now, you still can't just download an ISO and run it on qemu or whatever (actually you can, but it's probably illegal). I could forget about them entirely, if I didn't have to keep the open source stuff I work on working on them too, with limited access and no CI...
https://en.wikipedia.org/wiki/Gender_in_English#Decline_of_g...
I thought it probably had more to do with the influence of Norman French. The Germanic gender and declension system couldn't survive the influx of French lexicon, as the two languages with completely incompatible grammar and genders coexisted and eventually merged into a new frankenlanguage.
There was a recent article I can't locate right now claiming that for some period of time, English scribes writing late middle English (?) used to add an extra 'e' (and maybe more endings) to various words following old grammatical rules that involve knowing the gender and case, but began to forget the rules and eventually it decayed into randomly adding 'e' to sound smart, which is the basis of modern joke forms like 'ye olde shoppe'.
As an English speaker it's interesting to compare with some of our closest cousins that have also lost a grammatical gender or two:
I don't know too much about Dutch, but as far as I can tell they went from the 3-gender German system to the 2-gender common/neuter system (like Scandinavia, yellow in the diagram) in the last few hundreds years, but their language is still full of frozen phases from the 3-gender system. I wonder, can a modern Dutch speaker actually create new phases using the words 'ten', 'ter' (= German zum, zur, "to the"), 'des', 'der' and maybe more? You'd have to know if a common gender noun was masculine or feminine, but I guess, unless you also know German, you won't be able to do it.
I believe the Afrikaans language of South Africa, a dialect of Dutch, is down to just one gender. IIUC they had to give up using Dutch school books some time in the past century, because (vast over simplification, I'm sure) they couldn't remember if nouns were common or neuter. I wonder if they also have frozen phrases that reflect the 2-gender, and perhaps even 3-gender grammar of the ancestral language.
The Scandinavians have a few pockets of dialects that still use 3 genders. I'm not sure how they maintain that, given that, as far as I know, the prestige forms and most literature are down to 2!
AFAIK the last people to speak a cousin language with more than one gender in the British Isles were the Norn speakers, who maintained a 3-gendered Norse dialect up until the mid 19th century.
One I've noticed that is US vs UK/NZ/AU/...: "bring him with you" vs "take him with you", which has a directional component in British usage that I can't quite explain (away from the speaker maybe?) that the Americans don't do.
https://en.m.wikipedia.org/wiki/Cot%E2%80%93caught_merger https://en.m.wikipedia.org/wiki/Flapping
https://docs.microsoft.com/en-us/windows/win32/api/ioringapi...