On 19/04/2017 15:35, Chris Angelico wrote:
On Wed, Apr 19, 2017 at 11:46 PM, bartc <b...@freeuk.com> wrote:
You'd be surprised how easy it is to be non-OS-neutral.

I misread that as 'easy to be OS-neutral'. If I turn it around, you're saying it is easy to be OS-specific. But we know that! And that is the problem.

It's not so simple. By OS-neutral I mean code that doesn't depend on special
features of either OS (Ie. Windows and Linux). Not conditional code that
does either Windows stuff or Linux stuff.


Which means, therefore, that you either can't have any file system
facilities, or must transparently expose them to the application. You
also will have a lot of trouble making cross-platform subprocess
functionality. Even sockets, which are notionally the same on all
platforms, have a lot of little differences.

To be truly OS-neutral, you basically have to be either nerfed to
nothing, or so thin you're doing nothing.

Enough works in that 'pcc' project, in terms of file i/o, that it can still run plenty of useful programs, such as compilers. (See from line 3357 of pcc64.c for example; a list of functions that are patched in to the host rather linked to an external msvcrt or libc.so shared library.)

In this project, the only OS-specifics it really needs are:

 Windows: use LoadLibrary/GetProcAddr, and msvcrt.dll
 Linux:   use dlopen/dlsym, and libc.so.6

which wouldn't be hard to arrange.

Any other specifics are in the domain of the user programs (different libraries for screen i/o for example).

However, getting it to choose between one of those two pairs of functions is trivial, compared with the dependencies of a a typical open source project.

(I've just downloaded CPython sources from your github link, and the first thing I see is an 18,000 line 'configure' script (somewhat bigger than my entire C compiler).

This doesn't run on Windows, not without importing most of Linux via cygwin or MSYS. But the sources do now appear to support a Windows build:

Step 1: Download Visual Studio Express 2015

Last time I looked, it seemed to be a 5GB to 11GB download (GB not MB!). Nevertheless I start the process to get a better idea. It says:

 "Visual Studio requires .NET Framework 4.6 or higher."

Here where I start to think it might be easier to download all the Linux stuff after all! As, with my track record, I could download tons of stuff, and it still won't work.

FWIW, my mcc64.c file compiles to a 0.2MB executable which is capable of compiling that pcc64.c interpreter (I think it does it in 50msec for good measure; Tiny C will also do it instantly). /That/ is how simple things should be, and can be.

Cue a million excuses for why things have to be the way they are...)

--
bartc
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to