Package: guile-3.0 / 3.0.10+really3.0.10-6

Metadata

Package Version Patches format
guile-3.0 3.0.10+really3.0.10-6 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
0001 Mark mutex with owner not retained threads test as u.patch | (download)

test-suite/tests/threads.test | 6 4 + 2 - 0 !
1 file changed, 4 insertions(+), 2 deletions(-)

 mark "mutex with owner not retained" threads test as unresolved.

As per discussion with upstream, mark this test as unresolved since it
may produce false negatives, depending on the behavior/timing of the
garbage collector.

0002 Look for guile procedures.txt in pkglibdir.patch | (download)

module/ice-9/documentation.scm | 5 4 + 1 - 0 !
1 file changed, 4 insertions(+), 1 deletion(-)

 look for guile-procedures.txt in pkglibdir

Look for guile-procedures.txt in %guile-build-info's pkglibdir first
since the content is not architecture independent.

Bug: https://debbugs.gnu.org/22833
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=816123

0003 Disable sandbox.test 1e6 alloc loop allocation limit.patch | (download)

test-suite/tests/sandbox.test | 6 4 + 2 - 0 !
1 file changed, 4 insertions(+), 2 deletions(-)

 disable sandbox.test "1e6 alloc loop" "allocation limit" test

The test suite would eventually hang on sandbox.test when run in a "make
-j5 check" loop.  The last test printed to the log was the one before
"1e6 alloc loop", and after commenting out that test, the loop doesn't
appear to hang, so disable it for now.

0004 gc.test after gc hook mark unresolved on failure eve.patch | (download)

test-suite/tests/gc.test | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 gc.test: after-gc-hook - mark unresolved on failure (everywhere)

Previously this was done for just mips and mipsel,
59d9bcd468aab0d97d763595fd4e934044dc7590 "gc.test: after-gc-hook - mark
unresolved on failure for mips(el)", and then
fd4ba18bca1c6000fc0dd417a5b489e1ac60e0d9 "Fix gc.test "after-gc-hook
gets called" failures" attempted to fix it upstream, but as of 2.2.6
it's failing again, this time on amd64, so just mark it as unresolved
everywhere for now.

Bug: https://debbugs.gnu.org/31776
Bug-Debian: https://bugs.debian.org/900652

0005 Mark test out of memory as an expected failure for n.patch | (download)

test-suite/standalone/Makefile.am | 3 2 + 1 - 0 !
1 file changed, 2 insertions(+), 1 deletion(-)

 mark test-out-of-memory as an expected failure for now

Since this test has been failing for a long time on various
architectures, mark it as expected to fail for now so that we'll still
run it and can see the results, but won't be blocked by it.

There are known issues with the test upstream, and at least in some past
cases it's been possible to reproduce the failure quickly by running
test-suite/standalone/test-out-of-memory in a loop.

Bug: https://debbugs.gnu.org/29464
Bug-Debian: https://bugs.debian.org/880148
Bug-Debian: https://bugs.debian.org/966300

0006 numbers.test disable unresolved mixed type division .patch | (download)

test-suite/tests/numbers.test | 19 16 + 3 - 0 !
1 file changed, 16 insertions(+), 3 deletions(-)

 numbers.test: disable unresolved "mixed type" division tests on i686

Bug: https://debbugs.gnu.org/43262
Bug-Debian: https://bugs.debian.org/968403

0007 Fix 32 bit big endian builds via Oresolve primitives.patch | (download)

bootstrap/Makefile.am | 9 8 + 1 - 0 !
configure.ac | 3 3 + 0 - 0 !
stage0/Makefile.am | 10 9 + 1 - 0 !
3 files changed, 20 insertions(+), 2 deletions(-)

 fix 32-bit big endian builds via -oresolve-primitives -ocps

Specify -Oresolve-primitives -Ocps during bootstrapping builds to fix
build failures on 32-bit big endian architectures.

Thanks to John David Anglin for reporting the problem and investigating
the problem, and to John Paul Adrian Glaubitz for helping devise the
solution.

Bug: https://debbugs.gnu.org/45214
Bug-Debian: https://bugs.debian.org/977223

0008 test hashing support 32 bit.patch | (download)

test-suite/standalone/test-hashing.c | 8 7 + 1 - 0 !
1 file changed, 7 insertions(+), 1 deletion(-)

 test-hashing: support 32-bit

* test-suite/standalone/test-hashing.c (test_hashing): add expected
value for 32-bit architectures.

0009 More thorough lowering of lognot to CPS.patch | (download)

module/language/tree-il/compile-cps.scm | 8 6 + 2 - 0 !
1 file changed, 6 insertions(+), 2 deletions(-)

 more thorough lowering of lognot to cps

* module/language/tree-il/compile-cps.scm (canonicalize): Lower to a
logxor with -1.

0010 Fix intset fold right on transient intsets.patch | (download)

module/language/cps/intset.scm | 17 9 + 8 - 0 !
1 file changed, 9 insertions(+), 8 deletions(-)

 fix intset-fold-right on transient intsets

* module/language/cps/intset.scm (make-intset-folder): intset-fold-right
on a transient intset would dispatch to left fold after making the
persistent set.  Sadness!

0011 Add a workaround for pre 3.0.10 incorrect inlinable .patch | (download)

module/language/tree-il/peval.scm | 20 18 + 2 - 0 !
1 file changed, 18 insertions(+), 2 deletions(-)

 add a workaround for pre-3.0.10 incorrect inlinable exports

* module/language/tree-il/peval.scm (peval)
(inlinable-kwargs-bug-fixup): Before 3.0.10, the inlinable exports pass
was incorrectly serializing functions with keyword arguments.  This was
fixed in 2c645571b351a0044911847025b666551a8e4fb5, but that meant that
3.0.10 compiling against 3.0.9 binaries could raise an exception at
compile-time; whoops.  Add a workaround so that 3.0.9 binaries still
work.

Fixes https://issues.guix.gnu.org/72936.

0012 Remove needless constraints in type range analysis.patch | (download)

module/language/cps/types.scm | 11 1 + 10 - 0 !
1 file changed, 1 insertion(+), 10 deletions(-)

 remove needless constraints in type/range analysis

* module/language/cps/types.scm
(ulogand, ulogand/immediate, ulogsub, ulogior, ulogxor): Where we have
u64 inputs, there's no need to `restrict!`; the range will come from the
definition.

0013 Narrow parameter of logand immediate if no bits used.patch | (download)

module/language/cps/specialize-numbers.scm | 8 5 + 3 - 0 !
1 file changed, 5 insertions(+), 3 deletions(-)

 narrow parameter of logand/immediate if no bits used

* module/language/cps/specialize-numbers.scm (specialize-operations):
Narrow ulogand/immediate param according to used bits.

0014 Partially revert d579848cb5d65440af5afd9c89686286655.patch | (download)

module/language/cps/specialize-numbers.scm | 4 2 + 2 - 0 !
1 file changed, 2 insertions(+), 2 deletions(-)

 partially revert d579848cb5d65440af5afd9c8968628665554c22

* module/language/cps/specialize-numbers.scm (specialize-operations):
Accept any operand to logand/immediate, provided the result is a u64 in
the right range.

0015 Fix fixpoint needed bits computation in specialize n.patch | (download)

module/language/cps/specialize-numbers.scm | 27 10 + 17 - 0 !
1 file changed, 10 insertions(+), 17 deletions(-)

 fix fixpoint needed-bits computation in specialize-numbers

* module/language/cps/specialize-numbers.scm (next-power-of-two): Use
integer-length.  No change.
(compute-significant-bits): Fix the fixpoint computation, which was
failing to complete in some cases with loops.

0016 Fix boxing of non fixnum negative u64 values.patch | (download)

module/language/cps/specialize-numbers.scm | 21 20 + 1 - 0 !
1 file changed, 20 insertions(+), 1 deletion(-)

 fix boxing of non-fixnum negative u64 values

* module/language/cps/specialize-numbers.scm (u64->fixnum/truncate): New
helper.
(specialize-operations): Fix specialized boxing of u64 values to
truncate possibly-negative values, to avoid confusing CSE.  Fixes
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=71891.

0017 Tighten up range inference for scm u64 truncate.patch | (download)

module/language/cps/types.scm | 8 5 + 3 - 0 !
1 file changed, 5 insertions(+), 3 deletions(-)

 tighten up range inference for scm->u64/truncate

* module/language/cps/types.scm (scm->u64/truncate): Better range
analysis.

0018 Run sigbits fixpoint based on use def graph not cfg.patch | (download)

module/language/cps/specialize-numbers.scm | 120 54 + 66 - 0 !
1 file changed, 54 insertions(+), 66 deletions(-)

 run sigbits fixpoint based on use/def graph, not cfg

* module/language/cps/specialize-numbers.scm (sigbits-ref): New helper.
(invert-graph*): New helper.
(compute-significant-bits): When visiting a term changes computed
needed-bits for one of its definitions, we need to revisit the variables
that contributed to its result (the uses), because they might need more
bits as well.  Previously we were doing this by enqueueing predecessors
to the term, which worked if the uses were defined in predecessors, or
if all defining terms were already in the worklist, which is the case
without loops.  But with loops, when revisiting a term, you could see
that it causes sigbits to change, enqueue its predecessors, but then the
predecessors don't change anything and the fixpoint stops before
reaching the definitions of the variables we need.  So instead we
compute the use-def graph and enqueue defs directly.

0019 Compile with fexcess precision standard for i 3456 8.patch | (download)

configure.ac | 24 24 + 0 - 0 !
1 file changed, 24 insertions(+)

 compile with -fexcess-precision=standard for i[3456]86 when we can

* configure.ac: when -fexcess-precision=standard is available and we're
building for i[3456]86, use it.  This fixes floating point precision
problems caused by x87 (80-bit) floating point, and detected by
numbers.test.

Closes: 43262

0020 Eight byte align statically allocated stringbufs.patch | (download)

libguile/strings.h | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 eight byte align statically allocated stringbufs

Previously they were unaligned, unlike their parent strings, and so
could end up with the wrong pointer tag.  Observed on i686-linux-gnu,
where they ended up tagged as immediates (SCM_IMP()), causing failures
in TYP7 related checks.

* libguile/strings.h (SCM_IMMUTABLE_STRINGBUF): align resulting buffer
  via SCM_ALIGNED(8).

0021 Mark inter protocol attack test unresolved if write .patch | (download)

test-suite/tests/00-repl-server.test | 9 7 + 2 - 0 !
1 file changed, 7 insertions(+), 2 deletions(-)

 mark inter-protocol attack test unresolved if write-request fails

This happens with some frequency during parallel test runs, and the
same (apparent) failure can eventually be triggered by repeated
moreutils parallel invocations like this in a built tree:

  parallel -j 3 ./check-guile -- \
    00repl-server.test 00repl-server.test 00repl-server.test

0022 tests Skip hole related port tests on Darwin.patch | (download)

test-suite/tests/ports.test | 12 12 + 0 - 0 !
1 file changed, 12 insertions(+)

 tests: skip hole-related port tests on darwin.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hole are itself a file-system specific feature and they are not
mandated.  While APFS does support sparse files, they do not behave like
on Linux.  I did not discover exact rules, but the file needs to be
large (100s of kB at least) and the holes are not aligned as the test
code expects.  So just disable them.

* test-suite/tests/ports.test (skip-on-darwin): New procedure.
("size of sparse file", "SEEK_DATA while on data")
("SEEK_DATA while in hole", "SEEK_HOLE while in hole"): Skip on Darwin.

Signed-off-by: Ludovic Courts <ludo@gnu.org>

0023 Skip ports.test seek tests unless filesystem looks s.patch | (download)

test-suite/tests/ports.test | 32 21 + 11 - 0 !
1 file changed, 21 insertions(+), 11 deletions(-)

 skip ports.test seek tests unless filesystem looks suitable

For now, only test on filesystems that we know have the expected
semantics, i.e. btrfs, ext4, and xfs.

0024 fport_print handle ttyname ENODEV.patch | (download)

libguile/fports.c | 33 30 + 3 - 0 !
1 file changed, 30 insertions(+), 3 deletions(-)

 fport_print: handle ttyname enodev

In some situations, ttyname may return ENODEV even though isatty is
true.  From ttyname(3):

  A process that keeps a file descriptor that refers to a pts(4) device
0025 build Fix in tree cross compilation build.patch | (download)

libguile/Makefile.am | 9 4 + 5 - 0 !
1 file changed, 4 insertions(+), 5 deletions(-)

 build: fix in-tree cross-compilation build.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Commit 57a889b7282dab303c4cdc49cccbbe22f961bd1c fixed out-of-tree
cross-compilation builds but broke in-tree cross-compilation builds.
With this change, we should have both.

* libguile/Makefile.am (gen-scmconfig.$(OBJEXT)): Use -iquote instead
of -I.

0026 fluids.test be more determined when checking fluid g.patch | (download)

test-suite/tests/fluids.test | 22 14 + 8 - 0 !
1 file changed, 14 insertions(+), 8 deletions(-)

 fluids.test: be more determined when checking fluid gc

The "fluids are GC'd" test failed on s390x. Investigation revealed that
adding a (sleep 0) allowed the test to succeed. Rework the test to try
more than once (up to 100 times), with a (sleep 0) between attempts.

The investigation also revealed that a (usleep n) for various values of
n, including 0 and 1000000 never worked. Further testing found that
changing usleep to convert the interval as a uint (as sleep does)
instead of a ulong allowed the test to succeed.

* test-suite/tests/fluids.test: Try up to 100 times, sleeping between
attempts.