Hacker News new | past | comments | ask | show | jobs | submit login

Lisp user here. Scratching my head on this one: What's it build exactly? Why would I use this over, say, Quicklisp? Is this just a Nix thing?

Edit: Also, why do you need to specify all the .lisp files in the build(?) file?




> What's it build exactly?

For libraries, it builds an output with a concatenated FASL for all inputs (which reference the sources by their exact hash in the Nix store, which means that they will be distributed alongside).

For programs, it dumps an executable image (save-lisp-and-die with `:executable t`).

For `buildLisp.sbclWith` it creates an SBCL that loads an image pre-loaded with all the dependencies.

> Why would I use this over, say, Quicklisp?

Quicklisp is one small bit of the puzzle (the distribution of packages using ASDF).

Using Nix for the task replaces Quicklisp, ASDF, your distribution package manager used to install your Lisp, your distribution package manager used to install native dependencies of your Lisp code (e.g. cl+ssl with openssl[0]), your deployment tooling and generally your entire software packaging and distribution stack which leaves you with one homogeneous system that is easily composed across language boundaries.

> why do you need to specify all the .lisp files in the build(?) file?

I modeled this after the way Bazel rules are normally written, where specifying each source file is common. In fact, ASDF does this too.

[0]: https://git.tazj.in/tree/third_party/lisp/cl-plus-ssl.nix#n2...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: