11 comments

[ 0.19 ms ] story [ 1019 ms ] thread
The upside of the Unix way is greater parallelizability, which allows for greater speed on newer multi-processor machines

Why is this true? Because parallel/shared memory access is hard to get right?

The UNIX way doesn't involve shared memory in that sense, unless multiple processes are modifying the same files at the same time (known to be a bad idea). Instead it's more akin to go's channels and go procs. Use text between unix processes.
I was asking about the Lisp, way, which it said was harder to parallelize because everything was held in memory.
In context, I believe the author means that having a build system which splits into independent, simultaneously executing processes (such as `make -j 5` or some such) tends to have an advantage over ASDF's monolithic process model which doesn't take full advantage of multiple cores/CPUs.
AFAIK, Common Lisp doesn't have a portable threading/multiprocess story, and asdf appears to target the standard / lowest common denominator.
This is inaccurate, for threads see: https://common-lisp.net/project/bordeaux-threads/

For processes, ASDF comes with UIOP which contains portable code for multiprocessing (among other things).

But that does not make the compiler thread safe.

'Unix way' to compilation: possibly parallel compile activities by running multiple compiler instances as programs

'ASDF way' to compilation: compile multiple files in a serialized fashion using one Lisp image for compilation

To run multiple compile activities inside one Lisp image, one would require that something like the file compiler is thread safe and corresponding stuff implemented by the program in the compile-time environment is thread-safe, too.

> ASDF, the Common Lisp build system
Thanks for the click saving!
It goes on

> In the spirit of the original Lisp DEFSYSTEM, it compiles and loads software...

ASDF stands for Another System Definition Facility.

Off topic, but my first thought was 'omg, a livejournal link. people still use that!?"