[Wine] Re: question about WINEPREFIX

Phobos wineforum-user at winehq.org
Wed Mar 26 08:57:32 CDT 2008


aha!... 

I have not had much time yet to see what I can do... but with a little investigation, I found something interesting for the naysayers here  :D ...

you see, Jonathan Clark (founder of Thinstall, in 1999 and who also worked on the Doom and Quake ports to UNIX) thinks about the same lines as I mentioned before. In this blog you will find one of is post titled "Thinstall and WINE": http://communities.vmware.com/blogs/Opunui25/2008/02/26/thinstall-and-wine. From the post:

"For people who see Thinstall for the first time, it seems like magic and they wonder how it works. But Thinstall isn't new - most of the concepts for Thinstall are a decade old and have been implemented by various open source projects such as Wine and UML.

...

Although Thinstall and Wine do not share any code internally and they are targeting different operating systems the underlying designs have many similarities. Both systems use a combinations of API translation and API emulation to achieve their goals.

Thinstall's primary goal is to allow Windows applications to run on the Windows operating system without installation and with limited changes to the host PC. The primary goal of Wine is to allow Windows applications to run on unix operating systems.

...

Wine was originally designed for Linux but was quickly ported to FreeBSD and today supports many other operating systems. While it never came to fruition, cygwin and Wine developers have contemplated porting wine to the Windows operating system using cygwin.

...


Design-wise, Thinstall has many similarities with Wine. Thinstall emulates and translates the Win32 API on a more selective basis to achieve its stated goals. With Thinstall the vast majority of the Win32 API passes directly to Windows with no emulation or translation. For example, when an application calls BitBlt, a function used to draw a bitmap to the screen, the call passes directly to Windows. Because Thinstall only replaces about 600 of the 10,000+ or so Win32 APIs it can achieve much higher levels of compatibility than are possible with Wine and generally it automatically supports newer operating systems and kernel updates. Because Thinstall is already running on top of Windows, we can use the existing operating system where possible rather than needing to reimplement everything.

...

Like wine, Thinstall can support multiple data directories so that applications can be separated from each other and the changes made by one application do not affect another application. In Thinstall, the default model is to give each application it's own private data directory. In Wine, the default model is to use one virtual environment for all Windows application. Also like wine, this data directory can be copied to other machines or users and used as "snapshot" and thus eliminating some or all installation steps normally needed to use the application. Thinstall takes this a bit further by implementing a compressed read-only file system that can be directly embedded in the original EXE file so distributions can occur via a single file.

Thinstall uses another concept called Copy on Write (COW) which is not present in Wine. COW has been a key concept in operating system design and CPU design over the years.

Thinstall uses COW to allow read-only access to parts of the file system and registry such that any operations that would cause modifications will copy the data to a private sandbox area where modifications occur without affecting the rest of the PC. The first implementations for COW occurred in microprocessor and OS design in the 1980's and soon after it was adopted by virtualization/emulation solutions such as Bochs, QEMU, and UML for virtual disk storage. As well, numerous older file systems implemented the concept of snapshots and COW at the file granularity level.

...

Summary

Thinstall and wine share a lot of common design ancestry that goes back more than a decade. This design commonality evolved naturally and independently because both projects were targeting the same standard which was defined by Microsoft - otherwise known as the Win32 API. Thinstall and wine are not unique in targeting this platform, IBM's OS/2, ReactOS, Windows 9X, and Windows NT also implement the Win32 API as a standard."

So yes, the projects do share a lot of ideas even if the final targets are a bit different... that cygwin part might be what I was searching for to make wine run on windows, but I'll have to test it and see what happens

PS. a mail by Jonathan Clark on wine-devel could also be of interest to some, as he was searching for wine coders to work on thinstall (due to the similarities shared by both) at the time (for the current 3.x version)... it's here: http://www.winehq.org/pipermail/wine-devel/2006-June/048806.htmlp







More information about the wine-users mailing list