If you think directly calling Windows syscall is crazy, some applications parse binary code from ntdll.dll to figure out what the syscall numbers actually are, since they change across different Windows versions :)
HN user
yshui
Blog: https://trace.yshui.dev Mastodon: https://fosstodon.org/@yshui
see also the proton release notes: https://github.com/ValveSoftware/Proton/releases
It's a bit different. WoW64 is the technology used to run 32-bit applications on 64-bit Windows. Wine has support WoW64 for a long time. The difference is the "old" wine WoW64 mode required 32-bit libraries on the host side, whereas this "new" WoW64 mode doesn't.
who are the devs of Wine.
they employs many devs of Wine (including the project lead, Alexandre Julliard). but technically Wine is still an independent open-source project, and has many contributors from outside Codeweavers.
That's a cool find. I wonder if LLVM also does the other way around operation, where it pattern matches handwritten CAS loops and transform them into native ARM64 instructions.
CodeWeavers, which I am very lucky to be part of, is also an (almost) 30-year-old small company! We make Wine, Proton, and CrossOver, you might've heard of them. And I think we are hiring as well, please have a look!
Any autoregressive model can do what you are describing. transformers are generating one token at a time too, not all at once.
further reading: xkcd's "A mole of moles" https://what-if.xkcd.com/4/
i'd say it's mostly due to linking. the debug info generated is absolutely enormous.
I (kind of) know multiple languages and they all have different word orders. I find it interesting that my brain is able to switch from expecting information to be received in one order to another. Each word order feels normal to me in its respective language, mix them and they will feel weird. It's like my brain is able to process information in different orders, but there are feature flags to enable them based on the language used.
I suspect the models probably memorized some chess openings, and afterwards they are just playing random moves with the help of the grammar.
Okay, I can't believe I am going to defend performance reviews (I hate them with passion), but I actually disagrees with the author's main point. Same accomplishments can be colored good or bad, but that in itself isn't wrong. You could've moved a mountain with a teaspoon, but that's pointless if you don't work for a mountain moving company. i.e. performance isn't just what you have done, but also whether that aligns with the goal of your employer.
(Of course there's the problem where the capitalistic system forces people to work and do things that aren't necessarily aligned with their personal goals and values, just to have a roof over their head and food on their table. But that's a whole different story.)
(And then there's also the problem where people will abuse the review system for their own benefits...)
I had the pleasure of reverse-engineering win32 SRWLOCKs, and based on the author description of nsync it is very close to how SRWLOCK works internally. Kind of surprised how much faster nsync is compared to SRWLOCK.
This is pretty dumb on Debian's part. First of all I don't understand why they insist crate dependencies must be pulled from their repository. They are just source code, not built binary. AFAIK there is no other distro that does this, what they do is that they would download crates from crates.io (`cargo vendor` is a command that does this automatically) and build against that. Arch does this, Gentoo does this, NixOS does this, why does Debian has to be different?
Secondly, even if they have to use crates from their repository, I don't understand what's so hard to just have multiple versions of the same crate? That will solve the problem too.
This is just all-around weird what Debian is doing.
(Full disclosure, I am the one who introduced the first piece of Rust code into bcachefs-tools)
I am split on this. Maybe I am idealistic and naive, but I will always wish people can just stop fighting, and work together. Fragmenting the community and starting a project out of grudge, is always the last resort, IMO.
OTOH, I also recognize sometimes it is really that bad and going your own way is the best thing to do. But I think Linux isn't at that position yet.
Congrats! :)
BTW, instead of max(min()) when I wrote mine I used this equality: V'(s) = 1 - V(swap_players(s)), where swap_players(s) switches X and O pieces. And I only need to do max(). Don't know if that would make your program simpler.
Yep, this is what I ended up doing as well! With how the game generate boards, the player that goes first always have a ~5% advantage. Since players switch hands each around they should have 50% win rate if both play optimally.
In practice, playing against author's AI I barely get ~60% win rate (small caveat, I count ties as 0.5 to both players). What about yours?
Edit: nvm I saw you did the same with ties.
Turns out linear programming is not fast... Takes about 90 minutes to find the optimal solution for any board configuration.
I think this is doable. Say we assign a win rate W(S) to each board state S, and let W(S, A) denote the win rate after taking action A from state S. Since the transition is probabilistic, we can write:
W(S, A) = P(good) * (1 - W(S_good)) + P(bad) * (1 - W(S_bad)) + (1 - P(good) - P(bad)) * (1 - W(S))
And obvisouly:
W(S) = max(W(S, A), foreach A in Actions)
max() is troublesome, but we can replace it with a >= sign:
W(S) >= (W(S, A), forall A in Actions)
And then we can expand W(S, A) and move W(S) in each of the inequalities to the left hand side. After all that we will have a bunch of linear inequalities which can be optimized with linear programming. I think the objective would just be:
<del>maximize</del> minimize W(empty_board)
I have a similar project too! I have an e-ink display connected to a Pi Zero that shows just a "Yes" or "No" telling me if it's going to rain outside in the next three hours. (On a second thought, maybe I don't need a 7 color display...)
My display is this one: https://shop.pimoroni.com/products/inky-impression-7-3?varia... which seems to be cheaper.
Author here. I probably should have stated this more explicitly in the article, but my main concern with using it for day job is copyright. I don't want to accidentally commit copyrighted code into the codebase, and I work for an open source project.