1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-26 21:20:30 +02:00
Commit graph

21803 commits

Author SHA1 Message Date
Andy Wingo
3a86fedcde Update nofl metadata byte comment 2025-03-07 21:15:47 +01:00
Andy Wingo
d22eb88948 nofl space / mmc supports untagged allocations 2025-03-07 13:37:59 +01:00
Andy Wingo
521cd44ebd Add gc_allocation_kind argument to gc_allocate
Adapt all users.  Will eventually allow for mmc to have untagged
allocations.
2025-03-07 13:37:59 +01:00
Andy Wingo
5bddd522cf Rework large_object_space_alloc to also map if needed
Also fix a bug in which objects reclaimed from freelists were not
zeroed.
2025-03-07 13:37:59 +01:00
Andy Wingo
6c444b33f1 Remove card-marking barriers
Field barriers aren't slower and are more precise.
2025-03-07 13:37:59 +01:00
Andy Wingo
4a95a514b7 Fix inline old-generation check for nofl space mark byte changes 2025-03-07 13:37:59 +01:00
Andy Wingo
f1b660484e Remove gc_allocator_needs_clear
Whether the returned object needs to be cleared or not depends on a
couple things:
 - Whether the embedder actually needs the object to be cleared.
 - Whether the collector allocated the object from memory that was all
   zeroes already.

The goal of course would be to prevent clearing memory if the mutator
was just going to write all over it.  But it's hard to know statically
if the memory would have been all zeroes anyway, and in that case if you
did clear it you'd be doing double work.  In the end it's simpler to
just require collectors to clear memory in bulk.  We can revisit this
later if it is an issue.
2025-03-07 13:37:59 +01:00
Andy Wingo
3db1e48ea6 Fix race in large object space when counting live object pages
Embarrassing!
2025-03-07 13:37:59 +01:00
Zheng Junjie
402e0dfa33
build: Mark JIT as supported on riscv64.
This is a followup to 5d3f561d7d.

* acinclude.m4 (GUILE_ENABLE_JIT): Mark riscv64 as JIT available.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-03-06 17:28:18 +01:00
Andy Wingo
ed5db9bc36 nofl: Reclaim another mark bit if concurrent tracing is disabled 2025-03-05 17:17:55 +01:00
Andy Wingo
29cf0f40d3 nofl space: Rework treatment of mark bits to avoid masks
This will allow us to free up some metadata bits.
2025-03-05 17:10:26 +01:00
Andy Wingo
4d271e7492 nofl space: refactor to add NOFL_METADATA_BYTE_MARK_MASK 2025-03-05 16:08:41 +01:00
Andy Wingo
8c1b98d306 Make parallel tracer less verbose; tracepoints are better 2025-03-05 11:32:53 +01:00
Andy Wingo
5c4d5a72e4 Fix embarrassing bug in lospace initial mark value 2025-03-05 11:32:47 +01:00
Andy Wingo
e780d27959 nofl: Refactor SWAR mark-matching routines
We are going to try to use fewer bits for mark state.
2025-03-05 10:12:43 +01:00
Rob Browning
5012581745 r6rs-ports.test: don't race with gc close in custom port tests
The tests share a "log" for custom port events and didn't always
explicitly close the test ports, so the close might come later, during
another test.  Change the tests to always close their ports immediately,
and clear the log after checking for expected "inter-test" events.

test-suite/tests/r6rs-ports.test: don't race with gc close in custom
port tests.
2025-03-02 14:44:53 -06:00
Rob Browning
d7475d4073 configure.ac: enable -ffat-lto-objects with -flto when available
Without -ffat-lto-objects libguile.a ends up with no symbols, visible
via "nm t libguile.a".
cf. https://lintian.debian.org/tags/no-code-sections.html

* configure.ac: enable -ffat-lto-objects with -flto when available.
2025-03-02 14:44:51 -06:00
Rob Browning
e1a6622b3b Note setlocale raises a system-error when locale doesn't exist
doc/ref/posix.texi: note setlocale raises a system-error when locale
doesn't exist

Thanks to Francesco P. Lovergine for suggesting the
addition (https://bugs.debian.org/1078681).
2025-03-02 14:33:30 -06:00
Dale P. Smith
29c27afe96 Allow trailing "." in urls
Fixes https://debbugs.gnu.org/53201

* module/web/uri.scm (valid-host?): Allow trailing "." in URLs
* test-suite/tests/web-uri.test: Add tests for trailing "."
2025-03-02 21:18:19 +01:00
Ludovic Courtès
5be5a10a8a
Update NEWS.
* NEWS: Update for c1353972ee.
2025-02-28 22:12:04 +01:00
Olivier Dion
7b7340b2d9
Warn about mutation of ‘environ’ when multi-threaded.
This is an amendment to 84bf840322.

The warning was only emitted for calling `environ', even if only reading
and no mutation occurred.

However, it is correct to read the environment in a multi-threaded
process.  It is however unsafe to mutate it.

The same logic also applies to `putenv'.

* libguile/posix.c
  (maybe_warn_about_environ_mutation): New private procedure ...
  (scm_environ): ... called here when mutating the environment ...
  (scm_putenv): ... and here.
* NEWS: Update.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-02-28 22:12:04 +01:00
Ludovic Courtès
b8031fc965
Exclude the finalizer thread from the ‘all-threads’ result.
Fixes <https://bugs.gnu.org/76343>.

Fixes a bug whereby “echo '(environ)' | guile” would wrongfully trigger
the multiple-thread warning.

* libguile/finalizers.c (finalizer_thread): New variable.
(finalization_thread_proc): Set it.
(scm_i_is_finalizer_thread): New function.
(run_finalization_thread): Clear FINALIZER_THREAD.
* libguile/finalizers.h (scm_i_is_finalizer_thread): New declaration.
* libguile/threads.c (scm_all_threads): Use it.
* NEWS: Update.

Reported-by: Simon Josefsson <simon@josefsson.org>
2025-02-28 22:12:03 +01:00
Maxim Cournoyer
75fd1d6434
Remove lib/malloc/.dirstamp and register to .gitignore.
* lib/malloc/.dirstamp: Delete file.
* .gitignore: Register.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-02-28 22:12:03 +01:00
Morgan Smith
a58c2d21f4
doc: Remove reference to long-gone tutorial.
The tutorial was removed in commit f75c5849cd.

* doc/README: Remove reference to a tutorial that no longer exists

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-02-28 22:12:03 +01:00
Morgan Smith
6ea7c858a6
HACKING: Update mailing list URL.
* HACKING: Update.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-02-28 22:12:03 +01:00
Morgan Smith
93119355b9
doc: Remove all remaining references to GDS.
This finished what this previous commit was meant to do:
767dbb1af3

* .gitignore: Remove "gds-test.debug" and "gds-test.transcript".
* doc/ref/Makefile.am (PICTURES): Remove "gds.eps", "gds.pdf", and "gds.txt".
* doc/ref/gds.dia:
* doc/ref/gds.eps:
* doc/ref/gds.pdf:
* doc/ref/gds.txt: Delete files

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-02-28 22:12:03 +01:00
Hannes Müller
ff4d79074c
libguile/scm.h: Allow compilation with ‘-Werror=undef’.
* libguile/scm.h: BUILDING_LIBGUILE is not always defined. This is
signaled by -Werror=undef in code using libguile. This patch fixes
commit dc3a3a84f9
* NEWS: Update.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-02-28 22:12:03 +01:00
Hannes Müller
5abb24efe4
Fix make-custom-port in case encoding is #f
* module/ice-9/custom-ports.scm (make-custom-port): Code fails if
(fluid-ref %default-port-encoding) returns #f. In fact this was the
case why readline support on MSYS2 failed for guile 3.0.10, ref.
https://github.com/msys2/MSYS2-packages/issues/5079
But later used canonicalize-encoding is prepared to handle #f for
encoding. So allow encoding to also handle this case.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2025-02-28 22:12:03 +01:00
Werner Lemberg
25c9440e4d
Add LIB_GETRANDOM to Libs.private in .pc files
The omission was discovered while cross-compiling LilyPond with mingw
11.0.1: without this addition, linking with libguile causes the error

  undefined reference to `BCryptGenRandom'

* meta/Makefile.am (dependency_substitutions): Add ‘LIB_GETRANDOM’.
* meta/guile-3.0-uninstalled.pc.in (Libs.private): Likewise.
* meta/guile-3.0.pc.in (Libs.private): Likewise.
* NEWS: Update.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2025-02-28 22:12:03 +01:00
Ludovic Courtès
b3a4dea943
doc: Update ‘release.org’.
* doc/release.org: Update links to CI and the web site.  Clarify what’s
optional.  Remove references to discontinued services.
2025-02-28 22:12:02 +01:00
Tomas Volf
c1353972ee srfi-19: Fix ~V converter in date->string.
The ~V is supposed to print ISO week number, not a week number.  This
commit fixes that.

* module/srfi/srfi-19.scm (date-week-number-iso): New procedure taken
  from the reference implementation.
  (directives)<#\V>: Use it.
* test-suite/tests/srfi-19.test ("date->string ~V"): Add tests taken
  from the reference test suite.
* doc/ref/srfi-modules.texi (SRFI-19 Date to string): Mention ISO-8601
  in description for ~V.

Fixes <https://bugs.gnu.org/74841>.
Edited by lloda <lloda@sarc.name>.
2025-02-28 10:28:06 +01:00
Tomas Volf
46a0ee7779 Fix typos in comments.
* module/sxml/xpath.scm: Fix typo in a comment.
* module/sxml/upstream/SXPath-old.scm: Same.
* doc/ref/sxml.texi (SXPath): Reflect in the documentation.
* doc/ref/texinfo.texi (string-utils): Fix same typo.
* module/texinfo/string-utils.scm (expand-tabs): Same.

Fixes <https://bugs.gnu.org/76621>.
Edited by lloda <lloda@sarc.name>.
2025-02-28 09:58:29 +01:00
Andy Wingo
c8a169d388 Fix string-utf8-length to have unboxed representation
* module/language/cps/utils.scm (primcall-raw-representations): Add
string-utf8-length.
2025-02-20 12:38:28 +01:00
Andy Wingo
c410992d55 Doc rewording 2025-02-14 12:34:17 +01:00
Andy Wingo
e19bf100b9 Doc rewording 2025-02-14 12:33:09 +01:00
Andy Wingo
0bef1e9435 Doc rewording 2025-02-14 12:32:54 +01:00
Andy Wingo
367e04f164 Add documentation on tracepoints
Also clean up how-to-build documentation
2025-02-14 12:30:40 +01:00
Andy Wingo
81da950ebe Steal becomes an instant event 2025-02-12 14:33:05 +01:00
Andy Wingo
c0dd2e58d1 Fix embed.mk for tracepoints 2025-02-11 21:51:46 +01:00
Andy Wingo
2f0c0f8f8e Refactor lttng makefile bits 2025-02-11 21:42:13 +01:00
Andy Wingo
d675a9b8f1 Add tracepoints to tracer itself
Also fix an issue whereby the main thread would spin, waiting for other
active threads to finish, doing no work itself.
2025-02-11 16:14:27 +01:00
Andy Wingo
461efa98a0 Wire up tracepoints for event-listener interface 2025-02-10 13:41:19 +01:00
Andy Wingo
cca54736a0 Add build support for tracepoints via lttng-ust 2025-02-10 12:45:25 +01:00
Andy Wingo
5d3f561d7d Merge remote-tracking branch 'lightening/main' 2025-01-29 16:52:29 +01:00
Andy Wingo
d418f80803 Merge branch 'main' into 'main'
RISC-V Support

See merge request wingo/lightening!14
2025-01-29 15:43:49 +00:00
Ekaitz Zarraga
105a9c7958 riscv: error if not little endian 2025-01-29 14:53:04 +01:00
Ekaitz Zarraga
7c20ba7767 riscv: float/double call convention implementation
RISC-V uses a0-a7 registers for argument passing. Float/double arguments
use f0-f7 first and continue in a0-a7 if needed.

Once registers are consumed, stack is used.

This commit changes how lightening passes arguments in order to allow
this behavior.
2025-01-29 14:53:04 +01:00
Ekaitz Zarraga
ce8b8e4778 riscv: change stack alignment to 16 2025-01-29 14:28:13 +01:00
Ekaitz Zarraga
285cfd284a riscv: fix hi20/lo12 calculations for negative numbers 2025-01-29 14:28:13 +01:00
Ekaitz Zarraga
cbda249dc5 riscv: better movi 2025-01-29 14:28:13 +01:00