Missed an opportunity to render it like this: prEvious
On a more serious note, what's the difference between a project like this and virtualization? Is there one? Once this is completed, could it be run in virtualization software, or is it not that kind of thing?
Emulation replicates the hardware of the machine being emulated in as many details as are necessary to run the program, while with virtualization, the guest OS runs directly on the host hardware, with hardware and software barricades that allow it to run simultaneously with the host OS (VT-d and VT-x are the host CPU features required).
Virtualization doesn’t work when the guest OS was built to be run on a different architecture, which is often the case for retro computing projects.
Virtualization doesn’t require VT-x or VT-d, those are just performance enhancement mechanisms for virtualization on 80386-derived CPUs. Most other 32-bit and 64-bit CPU architectures have supported virtualization reasonably well from the start. The biggest popularizer of the technique was the IBM System/360.
For a microprocessor example, the Motorola 68000 almost supported virtualization, and the 68010 corrected the one flaw—insufficient exception context to restart an instruction—that prevented it. That’s why even though the personal computer market didn’t touch it, workstations migrated to 68010 as soon as it was available.
Of course there are a variety of ways to make virtualization easier on the implementer and more efficient to use. Intel’s enhancements really shine there. But they’re not required, just useful.
Emulation and virtualization are two very different concepts.
Every OS you virtualize must be supported by the base processor in the hardware. That is not so in an emulation, where another architecture can be supported.
This is in contradiction to eschaton, and I agree with GP in this regard: pass-thru of CPU instructions to host hardware is just an optimization, not a defining feature of virtualization. There were VM hosts before processors supported this, and back then I think that virtualization == emulation.
One of the comments on the top answer added an example that unlocked it for me intuitively: “in VMWare you can have a virtualized CD drive which is connected to the real physical CD drive, or you can have an emulated CD drive that is backed by an ISO image on the host.”
Virtualization = sharing real hardware.
Emulation = software pretending to be real hardware.
It is similar if you can get it to run on x86, but NextStep/OpenStep on Intel was notoriously picky about hardware, supporting only a tiny number of video and networking cards. Even virtualization doesn't work that well -- I tried VirtualBox for OpenStep X86 a few years ago and never got the networking to work, and was stuck with subpar VESA graphics.
I have had a tough time emulating even OpenStep on x86, excited to see NeXT attempt to be run semi-natively. It is still one of my favourite architectures and members of the home server farm. Looking forward to seeing where this ends up.
Previous has been around a while already, and works well. It emulates "Black Hardware" (Cube, I think.), and will run even very early versions of NeXTstep. You should give it a try!
I know next to nothing about this space, but I'm curious whether the cheekiness of the name is worth the confusion it inevitably brings (as a fan of generally cheeky things).
You might be surprised. The core of the MacOS is nextstep (thus the reason that modern MacOS system functions begin with the prefix "ns") and even the software development tools will feel familiar to modern XCode users.
There is a lot of elegant refinement in modern MacOS, but the bones of it are solidly NeXT.
Based on, yes, but since OSX 10.0 it's been diverging from what was the 1990s era NeXT. The core OSX team up to v10.5 or so was basically the same people who wrote the NeXT OS, and were acqui-hired.
Apple bought NeXT pretty much for their IP and software. By the time they were acquired NeXT had been out of the hardware manufacturing business for many years.
The latter -- it emulates the hardware of various NeXT workstations and you need to install the OS from scratch, or at least find a hard drive image of an install. Both are around if you search, although not distributed with the emulator for obvious reasons. Once you get it working it is quite nice and nostalgic for those who used NeXTStep back in the day.
On a more serious note, what's the difference between a project like this and virtualization? Is there one? Once this is completed, could it be run in virtualization software, or is it not that kind of thing?