Re: scheme and lisp
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
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
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