Wine acronym meaning

https://lemmy.ca/post/26407053

Wine acronym meaning - Lemmy.ca

Windows should emulate Linux so it can run wine on its arm chips.
WSL 3 wishlist starts here

I refuse to use 2 because it breaks all my shit.

OG WSL 1 for me, or just Linux lol

Qemu if you can get it. It is a little hard to learn but it can use Hyper-V acceleration
It’s harder to set up windows without giving microsoft the right to let 72 virgins rape your ass than to use QEMU.
GNU’s Not Unix! moment
GNU’s not Unix image manipulation program toolkit.
RecursionError: Maximum recursion depth exceeded image manipulation toolkit
Is there a separate RecursionError in modern versions of Python? Been a couple years but I remember it just being a RuntimeError
I haven’t really done much recursion in Python, but can’t we do a tail-recursive version so that it (almost) never reaches recursion depth issues?

We cannot, Python explicitly doesn’t do TCO.

…blogspot.com/…/tail-recursion-elimination.html?m…

Tail Recursion Elimination

I recently posted an entry in my Python History blog on the origins of Python's functional features . A side remark about not supporting ta...

GNU’s not Unix image manipulation program toolkit public license
My favorite acronym is PINCE, the reverse engineering tool that’s similar to Cheat Engine in Winblols, that stands for PINCE Is Not Cheat Engine.
GitHub - korcankaraokcu/PINCE: Reverse engineering tool for linux games

Reverse engineering tool for linux games. Contribute to korcankaraokcu/PINCE development by creating an account on GitHub.

GitHub
After all these years… I finally found cheat engine for Linux
Sadly not, Cheat Engine has a whole lot more features. PINCE is still very good though

Game Conqueror also works, but is missing a lot of features too from what I can tell. Don’t know how it holds up against PINCE.

I’ve had success getting CE to run with Proton though, specifically by using SteamTinkerLaunch to run it as additional custom command with the game. There are other ways too, like protontricks. In my experience, it has been mostly stable, with the occasional freeze, but generally usable for pointer scanning and such.

My favorite is the scanning device interface driver protocol.

TWAIN

Technology Without An Interesting Name

I really wanted this to be true but according to Wikipedia that’s an unofficial backronym. :( Sorry to be Debbie Downer.
Get outta here with your facts! /s
I’m partial to a good TLA (three letter acronym) myself.
WINaE! It bugs me that it isn’t “Wine Is Not Emulation”
WINE Is No Emulator
“This is no emulator, boy. No emulator.”
my favorite fact about Wine is that they could’ve named it Pine, Dine, Fine, Line, etc
It’s a cheeky play on “WINdows Emulator” as well as “WINE’s Is Not an Emulator”, but I think for both legal (trademark) and logistical (it really isn’t an emulator) reasons, you’ll never officially see that bit sanctioned

It’s a cheeky play on “WINdows Emulator”

It’s not an emulator though. That’s literally what the name is explaining!

It does emulate the windows environment
Pine was already taken by an email reader. One of the early ascii email readers was called elm, for ELectronic Mail. Pine was made after elm and it stands for Pine Is Not Elm.
I’m starting to get the impression that most software older than me is defined more by what it isn’t than by what it is.

My personal favorite acronym like that definitely goes to AROS (Amiga Research Operating System) that if I remember correctly had to - for legal reasons - change the name. Rather than come up with a completely new name, went with AROS Research Operating System.

Edit: name change was apparently to avoid any trademark issues with the Amiga name.

Acorn/ARM apparently did much the same thing.
i refuse to call it advanced risc Machine, it’s always Acorn Risc Machine
wine = (!!) $ iterate (++" is Not an Emulator") "WINE"
Internal errors - invalid parameters received
I should’ve specified, it’s in Haskell. Idk where you tried running it.

I’ve never worked with Haskell, but I’ve been meaning to expand my programming repertoire (particularly since I don’t get to do much coding at work, let alone learn new languages) and this makes for a nice opportunity, so I wanna try to parse this / guess at the syntax.

I assume iterate function arg applies some function to arg repeatedly, presumably until some exit condition is met? Or does it simply create an infinite, lazily evaluated sequence?

( ) would be an inline function definition then, in this case returning the result of applying ++suffix to its argument (which other languages might phrase something like arg += suffix), thereby appending " Is Not an Emulator" to the function argument, which is initially “WINE”.

So as a result, the code would produce an infinite recurring “WINE Is Not an Emulator Is Not an Emulator…” string. If evaluated eagerly, it would result in an OOM error (with tail recursion) or a stack overflow (without). If evaluated lazily, it would produce a lazy string, evaluated only as far as it is queried (by some equivalent of a head function reading the first X characters from it).

How far off am I? What pieces am I missing?

You’re pretty much right on the money. In Haskell, a String is a type synonym for [Char], so we can use list concatenation operator ++ to join strings. ++ is an infix operator i.e. [1,2,3] ++ [3,4,5] = [1,2,3,3,4,5]. When we do (++ “a”), we create a partially applied function. Now, we can supply another string to it and it will add “a” at the end of it.

iterate f x produces a lazily evaluated sequence [x, f x, f f x, …]. So, to get the nth entry, we can do wine !! n where we use another infix operator !!. With partial application, we can modify the definition of wine to create a function that takes an Int n and spits out the nth entry of it by doing

wine = (!!) $ iterate (++" Is Not an Emulator") "WINE"

We needed to wrap the !! inside parentheses because it’s an infix operator. $ just changes the order of application. (IIRC, it’s the least significant operator.) You can think that we’re wrapping whatever’s on the right of the $ by parentheses. Now we can do wine 2 instead of wine !! 2 to get “WINE Is Not an Emulator Is Not an Emulator”.

I’m by no means a Haskell expert. So, if someone would like to add some more details, they’re more than welcome.

[The list concatenation function] ++ is an infix function i.e. [1,2,3] ++ [3,4,5] = [1,2,3,3,4,5] (which will be equivalent to doing (++) [1,2,3] [3,4,5] by virtue of how infix functions work in Haskell).

I think that’s the part I was most confused by. I’m coming mostly from Java and C, where ++ would be the unary operator to increment a number. I would have expected that symbol in a functional language context to be a shorthand for + 1. The idea of it being an infix function didn’t occur to me.

Partial applications I remember from a class on Clojure I took years ago, but as far as I remember, the functions always had to come first in any given expression. Also, I believe partial fills the arguments from the left, so to add a suffix, I’d have to use a reversed str function. At that point, it would probably be more idiomatic to just create an inline function to suffix it. So if my distant recollection doesn’t fail me, the Clojure equivalent of that partial function would be #(str % " Is Not an Emulator").

iterate works the same though, I think, so the whole expression would be (def wine (iterate #(str % " Is Not an Emulator") “WINE”) )

This code was typed on a mobile phone in a quick break based off of years-old memories, so there might be errors, and given it was a single class without ever actually applying it to any problems, I have no real sense for how idiomatic it really is. I’ll gladly take any corrections.

NGL though, that last, readable version is sexy as hell.

Qemu?

Quick Emulator

(At least it was when it was written. Rosetta blows it out of the water.)

What is Rosetta?

Apple’s x86->ARM transpiler

(It accomplishes this by “cheating” and turning on a feature only found in Apple Silicon that make concurrent memory access rules more similar to x86, but still)

How does that apply to qemu?
Qemu is an emulator designed to allow you to run software for one architecture on another, much like Rosetta does. Qemu has gained the ability to run native virtual machines using hardware virtualization, which it does astonishingly well, but its original purpose is emulation. In terms of quickness, though, more modern offerings run circles around it
Do you have benchmarks to confirm that hardware accelerated virtualization on qemu is slow? It is what powers a lot of things including hypervisors like Proxmox. It also supports hyper-v acceleration. As far as Apple is concerned no one is really running a Mac so that isn’t a useful comparison.
I didn’t say hardware accelerated virtualization on qemu was slow. In fact, it’s one of the best performing hypervisors out there. When used as an emulator, however, its performance leaves something to be desired.
Even as a emulator it is very solid. Name one emulator that is faster. (Rosetta is a translator not an emulator)
…the difference being? JIT transpilers still count as emulators.
They really don’t. A emulator is doing all of the hardware in software. A translator is just converting instructions.

By that definition, qemu-[architecture] is a translator. qemu-system-[architecture] is an emulator.

And it’s still a worse translator than Rosetta. Because Rosetta cheats.

EMACS makes all coding suck
VIM is marvelous
Eight Megabytes And Constantly Swapping
That joke has aged like milk
Vim is the new “I use Arch btw”
NEW?
I guess? Because I’m new to Linux
Well, it was either that or “I’ve been using Unix for so long that my first text editor was ed”.