

Reproducible SBCL builds – a month ahead of schedule - luu
http://christophe.rhodes.io/notes/blog/posts/2014/reproducible_builds_-_a_month_ahead_of_schedule/

======
ICWiener
This is a great achievement: bitwise-identical output of the compiler when
bootstrapped with different CL implementations.

It is inspiring to see people like Christophe Rhodes work on SBCL and make
tremendous progress.

He is sufficiently honest to write how he missed an obvious typo (guess what,
this happens with every language, no matter how hard you try to avoid them).
Unfortunately, this is now the most discussed part of the article, which is
sad.

------
pfortuny
Quoting:

(shades of times gone by). Eventually I realised that (unless (member
(package-name package) '("COMMON- LISP" "KEYWORD" :test #'string=)) ...)

was not the same as (unless (member (package-name package) '("COMMON- LISP"
"KEYWORD") :test #'string=) ...)

I know this is a bit nitpicking but this is the kind of mistake which will be
always difficult to detect in lisp as long as the syntax is what it is...
Which is a pity because I like the language so much.

~~~
logicchains
Indenting/formatting conventions can make such a mistake easier to detect.

Compare

    
    
        (unless
    
            (member
    
                (package-name package)
    
                '("COMMON-LISP" "KEYWORD")
    
                :test #'string=) ...)
    

and

    
    
        (unless
    
            (member
    
                (package-name package)
    
                '("COMMON-LISP" "KEYWORD" :test #'string=)) ...)
    

If `member` requires 3 arguments, then it's easy to spot the mistake in the
latter.

~~~
pfortuny
Yes, thank you (by the way I am totally unable to properly quote things here).
I understand, yes.

~~~
ColinWright
You can create quoted text by leaving a blank line, indenting what you want to
quote, then leave another blank line.

[https://news.ycombinator.com/formatdoc](https://news.ycombinator.com/formatdoc)

~~~
pfortuny
I am amazed that you have taken the time to reply and explain! Thanks.

~~~
ColinWright
If there's a question I can answer in 30 seconds as I pass by, then I figure
it's worth doing. I've recently been looking at systems to try to capture and
make available knowledge bases that can be searched, mined, and possibly
automated.

How can we help people to stand on the shoulders of giants ...

~~~
pfortuny
I hope you are lucky. I am a prof. of maths and find your approach ro helping
very near my heart and as I know that it does take some effort, I really
appreciate it.

------
Elzair
Yay, now we can determine if our SBCL build contains a backdoor.

[https://www.schneier.com/blog/archives/2006/01/countering_tr...](https://www.schneier.com/blog/archives/2006/01/countering_trus.html)

