4 ms·
How does it compare to OpenWatcom? (the only other modern(ish) compiler I'm aware of with near/far support)
by messe 5y ago
How does it compare to OpenWatcom? (the only other modern(ish) compiler I'm aware of with near/far support)
- Koshkin 5y agoWatcom was (is?) the best optimizing compiler for 80[3]86, and it included a DOS extender (among other things).
- WalterBright 5y agoWatcom ceased development 25(?) years ago. DMC still gets updates and code gen improvements.
- messe 5y agoThe most recent commit for OpenWatcom, which is what I originally asked about, was 4 hours ago[1] at time of writing. [1]: https://github.com/open-watcom/open-watcom-v2/commit/ac10ed31a002211349c31f777633af5153843615 https://github.com/open-watcom/open-watcom-v2/commit/ac10ed3... (FWIW: I'm in agreement with you that DMC++ is likely superior, I'm more curious about what OpenWatcom's deficiencies in relation to it are, and I reckon there are probably only a few people as familiar and qualified than yourself to comment)
- WalterBright 5y agoI thought OW was museumed. I guess I was wrong. I have no idea how its code gen compares with DMC++ these days.
- xvilka 5y agoI used Open Watcom 2 in production, together with JWasm and JWlink, everything worked perfectly. Though I remember a couple issues I had and reported mainstream, they fixed it relatively quickly.
- badsectoracula 5y agoWhen i made a small raytracing benchmark a few years ago[0] OpenWatcom produced better code than DMC (note it was C, not C++), though they were both crushed by Visual C++ 6. [0] http://runtimeterror.com/tools/raybench/ http://runtimeterror.com/tools/raybench/
- WalterBright 5y agoA few years ago is a long time ago in the compiler biz.
- badsectoracula 5y agoOk, i tried with the latest versions of both (DMC 8.57 - though the compiler advertises itself as 8.42n - and the latest build from OpenWatcom). DMC version: Elapsed time = 7.593 seconds OW2 version: Elapsed time = 6.344 seconds While i'm using a different CPU than the one from the previous benchmark, the relative results are practically identical (OW version is ~1.195 times faster for the old results and ~1.196 with the new results). VC6 is still faster than both. FWIW i do not think these different matter that much in practice anyway, if anyone is going to target those old machines nowadays it'd be for retrocoding fun and in those cases if performance is a concern you'd most likely just want to use assembly anyway. IMO as long as a compiler does some basic optimizations to get mostly there it is fine. Some years ago i wrote a small maze rasterizer[0] in C to run on an original IBM PC and i tried to compile it with both Turbo C and OpenWatcom... and there was zero difference in performance since the main render loop was done by generated machine code, so OW's optimizer was optimizing stuff that didn't really need optimizing anyway :-P. [0] https://i.imgur.com/M3gKlfA.jpg https://i.imgur.com/M3gKlfA.jpg
- Koshkin 5y ago> want to use assembly anyway Well, Doom was written in C, so...
- badsectoracula 5y ago
- pabs3 5y agoOpenWatcom is under a license that isn't considered free enough under the FSD/OSD/DFSG. https://github.com/open-watcom/open-watcom-v2/blob/master/license.txt https://github.com/open-watcom/open-watcom-v2/blob/master/li...
- WalterBright 5y agoDigital Mars C/C++ is Boost licensed.
- pabs3 5y agoIs that able to build 16-bit x86 code, including near/far pointers, like the VirtualBox BIOS uses? https://www.virtualbox.org/ticket/12011 https://www.virtualbox.org/ticket/12011
- WalterBright 5y agoDMC++ can built 16 bit x86 code with near and far pointers, and near and far functions.
- pabs3 5y agoDoes DMC++ run on Linux? Or just Windows?
- WalterBright 5y agoIt runs under Windows, cross compiling for DOS. People have told me it runs fine under Wine, though I haven't tried it myself. It could be made to run on Linux without Wine, there's nothing in particular nailing it to Windows.
- pabs3 5y agoHmm, I guess the VirtualBox BIOS needs to be compiled for bare metal rather than running on DOS. Sounds like DMC++ would need porting to run on Linux though.