Re: scheme and lisp

2023-11-23 Thread Bernhard M. Wiedemann via rb-general



On 23/11/2023 17.53, Ludovic Courtès wrote:

The implementations are also very different: for instance, Chez
implements a native ahead-of-time compiler whereas Guile has bytecode
compilation plus just-in-time compilation.  Thus problems and solutions
for one implementation are unlikely to translate to other
implementations.


Thanks for that insight.


That said I’m surprised about Emacs, this needs more investigation…


Here is the diff from our emacs-29.1
https://rb.zq1.de/compare.factory-20230830/diffs/emacs-compare.out
it has 2 different variations in .eln and .pdmp files.
The .eln one probably comes from ASLR [1].
While the .pdmp has some sequences of very random bytes.

Ciao
Bernhard M.

[1] https://github.com/bmwiedemann/theunreproduciblepackage/tree/master/aslr


OpenPGP_signature.asc
Description: OpenPGP digital signature


Re: scheme and lisp

2023-11-23 Thread Ludovic Courtès
Hello Bernhard,

"Bernhard M. Wiedemann via rb-general"
 skribis:

> in openSUSE there are some packages that so far refuse to build
> reproducibly. The common theme around them is that they use scheme or
> lisp to produce binaries with a 'dump' command.

I think this practice is vanishing.  For one, Emacs had an ‘unexec’
function that produced an ELF executable containing an image of its heap
at the time the function was called; this was replaced by a portable and
reproducible mechanism in Emacs 27, released in August 2020.

[...]

> The list of our packages I think are affected by this is:
> clisp
> scheme48
> chezscheme
> emacs
> maxima
> scsh
> xindy
>
> Most distros seem to be affected by this:
> http://ismypackagereproducibleyet.org/?pkg=scheme48
> http://ismypackagereproducibleyet.org/?pkg=emacs surprisingly shows as
> reproducible in Archlinux, but I could not figure out why.
> maxima also shows as green there.
>
> Can we get them reproducible? Or can we drop+replace these
> implementations with guile?

Scheme implementations are all vastly different, notably because they
implement different things: the standards were historically very
minimal, so to do practical things, you had to implement custom
extensions.  Because of that, you can’t just use one “Scheme”
implementation as a drop-in replacement for another one.

The implementations are also very different: for instance, Chez
implements a native ahead-of-time compiler whereas Guile has bytecode
compilation plus just-in-time compilation.  Thus problems and solutions
for one implementation are unlikely to translate to other
implementations.

That said I’m surprised about Emacs, this needs more investigation…

HTH,
Ludo’.


scheme and lisp

2023-11-23 Thread Bernhard M. Wiedemann via rb-general

Hi,

in openSUSE there are some packages that so far refuse to build 
reproducibly. The common theme around them is that they use scheme or 
lisp to produce binaries with a 'dump' command.


e.g. for scheme48 I extracted this reproducer:

pushd ~/rpmbuild/BUILD/scheme48-*/ps-compiler
../go -h 2000 -a batch <<- 'EOF'
,config ,load ../scheme/prescheme/interface.scm
,config ,load ../scheme/prescheme/package-defs.scm
,exec ,load load-ps-compiler.scm
,in prescheme-compiler prescheme-compiler
,user (define prescheme-compiler ##)
,dump ../ps-compiler.image "(Pre-Scheme)"
,exit
EOF

I also know that guile implements scheme and builds reproducibly (with 
-j1). So there must be a way to do it right.


The list of our packages I think are affected by this is:
clisp
scheme48
chezscheme
emacs
maxima
scsh
xindy

Most distros seem to be affected by this:
http://ismypackagereproducibleyet.org/?pkg=scheme48
http://ismypackagereproducibleyet.org/?pkg=emacs surprisingly shows as 
reproducible in Archlinux, but I could not figure out why.

maxima also shows as green there.

Can we get them reproducible? Or can we drop+replace these 
implementations with guile?


I'd appreciate some insight from this knowledgeable crowd.

Ciao
Bernhard M.


OpenPGP_signature.asc
Description: OpenPGP digital signature