There’s a good episode [0] on Jane Street’s Signals and Threads podcast in which the creator of MirageOS talks a fair bit about the inspiration behind and origins of it:
The website wouldn't load for me, and I thought it was the TI-83 MirageOS (which has been supplanted by Doors CS, and IDK if the entire B&W TI calculator scene is dead).
Sure, I'll play your game, but with a twist. I'd like to crawl a webpage for links to zip files, extract the CSVs inside them, do some basic data processing on them to calculate some stats, then post that data to an API hosted on AWS using amazon's SigV4 authentication scheme - all of this without writing temp files to disk since that would tank performance.
I choose Python, you can have OCaml. Race?
In all seriousness, I quite enjoyed OCaml in university and a quick search shows it has all the libraries needed for this task (which is actually just the next thing in my work queue). It's a great language, but "give me a language and I'll tell you why it's inferior" is not a good attitude. There are always pros and cons and every use case has different priorities.
That ";;; loading ..." message gets into the SBCL_FLAGS variable and causes a shell syntax error when Make tries to run the resulting command (that it builds with that messed up variable.)
Now this alone, although annoying, is not enough to make me cry. I'm a tough old bird who's been around the block. I know where my towel is.
What made me cry is that I can't find any information about >;;; loading #P"/usr/local/lib/sbcl/asdf/asdf.lisp"< !
SBCL and ASDF are both ancient and venerable, there is a metric shit-ton of documentation around them, going back to before I was born. However, without a greybeard around to mentor me, it's effectively not a learning cure but a learning cliff.
And yeah, I could open a bug, or join a mailing list or IRC channel, etc. But I "don't have time for that", I just want to run a goddammed browser, not grok the ancient mysteries of SBCL/ASDF.
BTW, I'm not posting this to complain, I hoping someone will pipe up with some useful information about how to quash that little message (piping stderr to /dev/null loses the message, but also the value that we're trying to get from sbcl in the first place.)
(P.S. Hard-coding the value in the makefile let it continue, but then it spews a huge bunch of info about how it's compiling Lisp, cool, but then the build fails with an obscure link error or something. So it goes...)
It's a bit weird that it would load asdf despite --no-userinit. Maybe there's something in your system init. In that case adding --no-sysinit in the command line might help.
Adding `--no-sysinit` suppressed the message and allowed make to proceed.
The build then hangs on not finding lfp.h header file (which is part of libfixposix which is in FreeBSD pkg repo but without the header files.
<...>/common-lisp/nyxt/_build/iolib/src/syscalls/ffi-types-unix__grovel.c:6:10: fatal error: 'lfp.h' file not found
#include <lfp.h>
^~~~~~~
1 error generated.
It's been too long, can I just download the header(s) and put them somewhere (where the compiler will find them)?
- - - -
FWIW, at the start of sbcl compiling Nyxt this warning is printed:
> WARNING: You are using ASDF version 3.3.1 (probably from (require "asdf") or loaded
by quicklisp) and have an older version of ASDF (and older than 2.27 at
that) registered at #P"/usr/local/lib/common-lisp/asdf/asdf.asd". Having an
ASDF installed and registered is the normal way of configuring ASDF to
upgrade itself, and having an old version registered is a configuration
error. ASDF will ignore this configured system rather than downgrade itself.
In the future, you may want to either: (a) upgrade this configured ASDF to a
newer version, (b) install a newer ASDF and register it in front of the
former in your configuration, or (c) uninstall or unregister this and any
other old version of ASDF from your configuration. Note that the older ASDF
might be registered implicitly through configuration inherited from your
system installation, in which case you might have to specify
:ignore-inherited-configuration in your in your
~/.config/common-lisp/source-registry.conf or other source-registry
configuration file, environment variable or lisp parameter. Indeed, a likely
offender is an obsolete version of the cl-asdf debian or ubuntu package,
that you might want to upgrade (if a recent enough version is available) or
else remove altogether (since most implementations ship with a recent asdf);
if you lack the system administration rights to upgrade or remove this
package, then you might indeed want to either install and register a more
recent version, or use :ignore-inherited-configuration to avoid registering
the old one. Please consult ASDF documentation and/or experts.
But when I look in /usr/local/lib/common-lisp/asdf/asdf.asd it has:
(defsystem "asdf"
:author ("Daniel Barlow")
:maintainer ("Robert Goldman")
:licence "MIT"
:description "Another System Definition Facility"
:long-description "ASDF builds Common Lisp software organized into defined systems."
:version "3.3.4.7" ;; to be automatically updated by make bump-version
...
So I don't know why it thinks there's "an older version of ASDF (and older than 2.27 at that)" registered there, nor why it thinks I'm using 3.3.1.
The proper solution would be to install it somewhere and configure pkg-config to find it, but you could just try putting the headers in /usr/local/include and see if it finds them.
I think your system package manager has installed your SBCL/asdf in some weird way. It would be best to just uninstall it all and build SBCL from sources yourself (it has asdf bundled with it). The binary releases for FreeBSD on sbcl.org seem to be ancient versions.
There have been several releases since, including the first 4.0.0-beta just yesterday https://mirage.io/blog/announcing-mirage-40-beta-release
EDIT: submitted the current one here https://mirage.io/blog/announcing-mirage-40-beta-release