It’s unclear what problem the test patching was trying to solve, but on current
SBCL builds this does more harm than good. Removing those patches leaves the
test in its original state, which builds and passes.
As for the timestamps: also unclear, removing it doesn’t seem to affect anything
either way and this feels very much like a fix for /nix/store read-only
access. I’ve test SBCL without these and it works fine, so I don’t think this is
relevant anymore? Unfortunately there are no comments so it’s hard to know why
these existed.
The sbcl version specific nix expressions were an exact copy of each
other with the version and hash swapped out, leading to unnecessary code
duplication. This has been resolved by moving the common expression to
common.nix and only tracking version and hash in the version specific
expressions.
Since the expression is unchanged, this should cause 0 rebuilds.
Programs which generate and compile a lot of code at runtime (such as
programming language interpreters like ACL2) are not suited for running on SBCL
executables built with the "immobile space" feature, as explained by Douglas
Katzman in this mail thread:
https://sourceforge.net/p/sbcl/mailman/message/36007057/
In this commit, I add an optional flag to the SBCL package allowing you to
disable the "immobile space" features.
I also migrated away from specifying enabled/disabled features in a
`customize-target-features.lisp` file and towards supplying them as command line
arguments to `make.sh`, as has been recommended by the installation instructions
since 2012 or so.
Following legacy packing conventions, `isArm` was defined just for
32-bit ARM instruction set. This is confusing to non packagers though,
because Aarch64 is an ARM instruction set.
The official ARM overview for ARMv8[1] is surprisingly not confusing,
given the overall state of affairs for ARM naming conventions, and
offers us a solution. It divides the nomenclature into three levels:
```
ISA: ARMv8 {-A, -R, -M}
/ \
Mode: Aarch32 Aarch64
| / \
Encoding: A64 A32 T32
```
At the top is the overall v8 instruction set archicture. Second are the
two modes, defined by bitwidth but differing in other semantics too, and
buttom are the encodings, (hopefully?) isomorphic if they encode the
same mode.
The 32 bit encodings are mostly backwards compatible with previous
non-Thumb and Thumb encodings, and if so we can pun the mode names to
instead mean "sets of compatable or isomorphic encodings", and then
voilà we have nice names for 32-bit and 64-bit arm instruction sets
which do not use the word ARM so as to not confused either laymen or
experienced ARM packages.
[1]: https://developer.arm.com/products/architecture/a-profile
Updated sbcl with new version released today. Tested on nixos 17.03
x86_64, sbcl executable runs. Thanks.
From 36da6ad6eac68fdf2c8876c0a35642aa3e5c9d96 Mon Sep 17 00:00:00 2001
From: Tomas Hlavaty <tom@logand.com>
Date: Wed, 28 Jun 2017 20:12:58 +0200
Subject: [PATCH] sbcl: 1.3.18 -> 1.3.19