On 20 Apr 2019, at 1:11, 'John Clements' via Racket Users wrote:
There’s a paper at the most recent ICFP from Simon Peyton Jones (et al., I’m guessing) on make languages, IIRC.
Very interesting -- thanks! The paper is Andrey Mokhov, Neil Mitchell, and Simon Peyton Jones. 2018. Build Systems à la Carte. _Proc. ACM Program. Lang._ 2, ICFP, Article 79 (September 2018), 29 pages. <https://doi.org/10.1145/3236774>
My brain-dump notes from a fairly superficial read of that paper (thinking about make alternatives, rather than the functional properties of them, which is the authors' actual goal) are below, if anyone's interested.
With that in mind, it strikes me, Hendrik, that if you developed a (Racket) system which generated Ninja files, that might tick a few boxes.
Best wishes, Norman Build systems, various ====================== I read an interesting article about build systems (Andrey Mokhov, Neil Mitchell, and Simon Peyton Jones. 2018. Build Systems à la Carte. _Proc. ACM Program. Lang._ 2, ICFP, Article 79 (September 2018), 29 pages. <https://doi.org/10.1145/3236774>). It's a discussion of build systems, and a reimplementation of four of them in Haskell. Interesting overall, but also interesting because investigation makes it clear that there are remarkably few build systems which are real alternatives to Make. The four they discuss are Make, Excel (the spreadsheet), Shake (which is implemented in, and used for building, Haskell) and [Bazel](https://bazel.build) (which they describe in terms which suggests it's a cloud-based one for huge code bases, but which seems to be usable for small ones as well; it's an open-sourced version of an internal Google tool). At the end of the paper they mention a few others: * Ninja: see below. * Nix: really a package management system. * [Pluto](http://pluto-build.github.io): seems to be focused on Java. * Redo: slightly weird, in that the existing implementations appear to be the result of reverse-engineering the manual for the never-released original ([one version](https://redo.readthedocs.io/en/latest/) points to other implementations). * [Tup](http://gittup.org/tup/) looks interesting, and conceptually not massively far from Make in specification, but seems to detect dependencies by instrumenting the commands it runs. * [Buck](https://buckbuild.com) is a Facebook tool, written in Java. It looks quite similar to Bazel in the syntax. [Ninja](https://ninja-build.org) describes itself as a _low-level_ build system, where the input files are expected to be generated by a different system. And in fact [CMake](https://cmake.org) has a mode where it can generate Ninja files which do the actual building (as opposed to generating Makefiles). Of those, I think only Tup and CMake+Ninja would repay closer study, and possibly Bazel, though it looks pretty heavyweight. Some of these systems (as discussed in the paper at the top) also care about dependencies on, eg, compiler versions. I haven't looked specifically at that above. -- Norman Gray : https://nxg.me.uk -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.