1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Bump version to 3.9.x

Headed towards a 4.0.  The binary format will change slightly but
incompatibly (e.g. renumbering of intrinsics).  Having a new GC is
enough of a change to warrant a minor version bump, and it's been 5
years so why not go major.

* GUILE-VERSION (GUILE_EFFECTIVE_VERSION): Bump to 4.0.
(GUILE_MICRO_VERSION, GUILE_MINOR_VERSION): Bump to 3.9.0.
(LIBGUILE_INTERFACE_CURRENT, LIBGUILE_INTERFACE_AGE): Reset.

* meta/guile-4.0.pc.in:
* meta/guile-4.0-uninstalled.pc.in: Rename from guile-3.0.
* .gitignore: Ignore pkg-config files with 4.0 effective version.

* README: Update slightly.

* doc/ref/api-evaluation.texi (Load Paths):
* doc/ref/api-options.texi (Build Config):
* doc/ref/guile-invoke.texi (Environment Variables):
* doc/ref/history.texi (A Timeline of Selected Guile Releases):
* doc/ref/libguile-parallel.texi (Parallel Installations):
* doc/ref/srfi-modules.texi (SRFI-0): Update references to stable
version in paths.

* module/system/vm/assembler.scm (*bytecode-minor-version*):
* libguile/loader.h (SCM_OBJCODE_MAJOR_VERSION):
(SCM_OBJCODE_MINIMUM_MINOR_VERSION):
(SCM_OBJCODE_MINOR_VERSION): Use the same major objcode version for now
but bump the minor to 99.

* meta/guile.m4 (GUILE_PKG, GUILE_PROGS): Check for Guile 4.0.
* module/ice-9/boot-9.scm (%cond-expand-features): Add new cond-expand
features.
This commit is contained in:
Andy Wingo 2025-04-22 13:12:37 +02:00
parent 27f0490801
commit 7696344634
15 changed files with 45 additions and 38 deletions

4
.gitignore vendored
View file

@ -136,8 +136,8 @@ INSTALL
/meta/gdb-uninstalled-guile /meta/gdb-uninstalled-guile
/meta/guild /meta/guild
/meta/guile /meta/guile
/meta/guile-3.0.pc /meta/guile-4.0.pc
/meta/guile-3.0-uninstalled.pc /meta/guile-4.0-uninstalled.pc
/meta/guile-config /meta/guile-config
/meta/uninstalled-env /meta/uninstalled-env
/module/ice-9/eval.go.stamp /module/ice-9/eval.go.stamp

View file

@ -2,10 +2,10 @@
# Note: `GUILE_VERSION' is defined in `configure.ac' using `git-version-gen'. # Note: `GUILE_VERSION' is defined in `configure.ac' using `git-version-gen'.
GUILE_MAJOR_VERSION=3 GUILE_MAJOR_VERSION=3
GUILE_MINOR_VERSION=0 GUILE_MINOR_VERSION=9
GUILE_MICRO_VERSION=10 GUILE_MICRO_VERSION=0
GUILE_EFFECTIVE_VERSION=3.0 GUILE_EFFECTIVE_VERSION=4.0
# All of the shared lib versioning info. Right now, for this to work # All of the shared lib versioning info. Right now, for this to work
@ -18,7 +18,7 @@ GUILE_EFFECTIVE_VERSION=3.0
# '--disable-deprecated' builds. Generally speaking, within a stable # '--disable-deprecated' builds. Generally speaking, within a stable
# series, you increment CURRENT and AGE and set REVISION to 0. # series, you increment CURRENT and AGE and set REVISION to 0.
LIBGUILE_INTERFACE_CURRENT=8 LIBGUILE_INTERFACE_CURRENT=0
LIBGUILE_INTERFACE_REVISION=0 LIBGUILE_INTERFACE_REVISION=0
LIBGUILE_INTERFACE_AGE=7 LIBGUILE_INTERFACE_AGE=0
LIBGUILE_INTERFACE="${LIBGUILE_INTERFACE_CURRENT}:${LIBGUILE_INTERFACE_REVISION}:${LIBGUILE_INTERFACE_AGE}" LIBGUILE_INTERFACE="${LIBGUILE_INTERFACE_CURRENT}:${LIBGUILE_INTERFACE_REVISION}:${LIBGUILE_INTERFACE_AGE}"

4
README
View file

@ -1,4 +1,4 @@
This is version 3.0 of Guile, Project GNU's extension language library. This is version 4.0 of Guile, Project GNU's extension language library.
Guile is an implementation of the Scheme programming language, packaged Guile is an implementation of the Scheme programming language, packaged
as a library that can be linked into applications to give them their own as a library that can be linked into applications to give them their own
extension language. Guile supports other languages as well, giving extension language. Guile supports other languages as well, giving
@ -279,7 +279,7 @@ switches specific to Guile you may find useful in some circumstances.
Cross building Guile ===================================================== Cross building Guile =====================================================
As of Guile 3.0.x, the build process produces a library, libguile-3.0, As of Guile 4.0.x, the build process produces a library, libguile-4.0,
along with Guile "object files" containing bytecode to be interpreted by along with Guile "object files" containing bytecode to be interpreted by
Guile's virtual machine. The bytecode format depends on the endianness Guile's virtual machine. The bytecode format depends on the endianness
and word size of the host CPU. and word size of the host CPU.

View file

@ -1,7 +1,7 @@
@c -*-texinfo-*- @c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual. @c This is part of the GNU Guile Reference Manual.
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, @c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
@c 2010, 2011, 2012, 2013, 2014, 2020, 2021 Free Software Foundation, Inc. @c 2010, 2011, 2012, 2013, 2014, 2020, 2021, 2025 Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions. @c See the file guile.texi for copying conditions.
@node Read/Load/Eval/Compile @node Read/Load/Eval/Compile
@ -1025,8 +1025,8 @@ When @code{primitive-load-path} searches the @code{%load-compiled-path}
for a corresponding compiled file for a relative path it does so by for a corresponding compiled file for a relative path it does so by
appending @code{.go} to the relative path. For example, searching for appending @code{.go} to the relative path. For example, searching for
@code{ice-9/popen} could find @code{ice-9/popen} could find
@code{/usr/lib/guile/3.0/ccache/ice-9/popen.go}, and use it instead of @code{/usr/lib/guile/4.0/ccache/ice-9/popen.go}, and use it instead of
@code{/usr/share/guile/3.0/ice-9/popen.scm}. @code{/usr/share/guile/4.0/ice-9/popen.scm}.
If @code{primitive-load-path} does not find a corresponding @code{.go} If @code{primitive-load-path} does not find a corresponding @code{.go}
file in the @code{%load-compiled-path}, or the @code{.go} file is out of file in the @code{%load-compiled-path}, or the @code{.go} file is out of

View file

@ -1,7 +1,7 @@
@c -*-texinfo-*- @c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual. @c This is part of the GNU Guile Reference Manual.
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, @c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@c 2008, 2009, 2010, 2011, 2012, 2013 @c 2008, 2009, 2010, 2011, 2012, 2013, 2025
@c Free Software Foundation, Inc. @c Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions. @c See the file guile.texi for copying conditions.
@ -60,12 +60,12 @@ The @code{effective-version} function returns the version name that
should remain unchanged during a stable series. Currently that means should remain unchanged during a stable series. Currently that means
that it omits the micro version. The effective version should be used that it omits the micro version. The effective version should be used
for items like the versioned share directory name for items like the versioned share directory name
i.e.@: @file{/usr/share/guile/3.0/} i.e.@: @file{/usr/share/guile/4.0/}
@lisp @lisp
(version) @result{} "3.0.0" (version) @result{} "4.0.0"
(effective-version) @result{} "3.0" (effective-version) @result{} "4.0"
(major-version) @result{} "3" (major-version) @result{} "4"
(minor-version) @result{} "0" (minor-version) @result{} "0"
(micro-version) @result{} "0" (micro-version) @result{} "0"
@end lisp @end lisp
@ -87,7 +87,7 @@ party package) are installed. On Unix-like systems this is usually
@file{/usr/share/guile/@var{GUILE_EFFECTIVE_VERSION}}; @file{/usr/share/guile/@var{GUILE_EFFECTIVE_VERSION}};
@noindent @noindent
for example @file{/usr/local/share/guile/3.0}. for example @file{/usr/local/share/guile/4.0}.
@end deffn @end deffn
@deffn {Scheme Procedure} %site-dir @deffn {Scheme Procedure} %site-dir

View file

@ -1,6 +1,6 @@
@c -*-texinfo-*- @c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual. @c This is part of the GNU Guile Reference Manual.
@c Copyright (C) 1996-1997,2000-2005,2010-2011,2013-2014,2016,2019,2021-2022 @c Copyright (C) 1996-1997,2000-2005,2010-2011,2013-2014,2016,2019,2021-2022,2025
@c Free Software Foundation, Inc. @c Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions. @c See the file guile.texi for copying conditions.
@ -375,7 +375,7 @@ Here is an example using the Bash shell that adds the current directory,
@example @example
$ export GUILE_LOAD_COMPILED_PATH=".:../my-library" $ export GUILE_LOAD_COMPILED_PATH=".:../my-library"
$ guile -c '(display %load-compiled-path) (newline)' $ guile -c '(display %load-compiled-path) (newline)'
(. ../my-library /usr/local/lib/guile/3.0/ccache) (. ../my-library /usr/local/lib/guile/4.0/ccache)
@end example @end example
@item GUILE_LOAD_PATH @item GUILE_LOAD_PATH
@ -394,8 +394,8 @@ directory to @code{%load-path}, and adds the relative directory
@example @example
$ env GUILE_LOAD_PATH=".:...:../srfi" \ $ env GUILE_LOAD_PATH=".:...:../srfi" \
guile -c '(display %load-path) (newline)' guile -c '(display %load-path) (newline)'
(. /usr/local/share/guile/3.0 \ (. /usr/local/share/guile/4.0 \
/usr/local/share/guile/site/3.0 \ /usr/local/share/guile/site/4.0 \
/usr/local/share/guile/site \ /usr/local/share/guile/site \
/usr/local/share/guile \ /usr/local/share/guile \
../srfi) ../srfi)

View file

@ -1,6 +1,6 @@
@c -*-texinfo-*- @c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual. @c This is part of the GNU Guile Reference Manual.
@c Copyright (C) 2008, 2010, 2011, 2013, 2018, 2020 @c Copyright (C) 2008, 2010, 2011, 2013, 2018, 2020, 2025
@c Free Software Foundation, Inc. @c Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions. @c See the file guile.texi for copying conditions.
@ -230,6 +230,9 @@ inlining of top-level bindings, better closure optimization, and better
unboxing of integer and floating-point values. R7RS support was added, unboxing of integer and floating-point values. R7RS support was added,
and R6RS support improved. The exception facility (throw and catch) was and R6RS support improved. The exception facility (throw and catch) was
rewritten in terms of SRFI-34 exception handlers. rewritten in terms of SRFI-34 exception handlers.
@item 4.0 -- 2025?
Not yet released. New garbage collector.
@end table @end table
@node Status @node Status

View file

@ -1,7 +1,7 @@
@c -*-texinfo-*- @c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual. @c This is part of the GNU Guile Reference Manual.
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2010, 2011, @c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2010, 2011,
@c 2013-2014, 2021 Free Software Foundation, Inc. @c 2013-2014, 2021, 2025 Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions. @c See the file guile.texi for copying conditions.
@node Parallel Installations @node Parallel Installations
@ -27,7 +27,7 @@ need to know which version of Guile to ask for, when they build against
Guile. Guile solves this problem by installing a file to be read by the Guile. Guile solves this problem by installing a file to be read by the
@code{pkg-config} utility, a tool to query installed packages by name. @code{pkg-config} utility, a tool to query installed packages by name.
Guile encodes the version into its pkg-config name, so that users can Guile encodes the version into its pkg-config name, so that users can
ask for @code{guile-2.2} or @code{guile-3.0}, as appropriate. ask for @code{guile-3.0} or @code{guile-4.0}, as appropriate.
For effective version @value{EFFECTIVE-VERSION}, for example, you would For effective version @value{EFFECTIVE-VERSION}, for example, you would
invoke @code{pkg-config --cflags --libs guile-@value{EFFECTIVE-VERSION}} invoke @code{pkg-config --cflags --libs guile-@value{EFFECTIVE-VERSION}}

View file

@ -1,6 +1,6 @@
@c -*-texinfo-*- @c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual. @c This is part of the GNU Guile Reference Manual.
@c Copyright (C) 1996-1997, 2000-2004, 2006-2014, 2017-2020, 2023 @c Copyright (C) 1996-1997, 2000-2004, 2006-2014, 2017-2020, 2023, 2025
@c Free Software Foundation, Inc. @c Free Software Foundation, Inc.
@c Copyright (C) 2005-2006 Per Bothner @c Copyright (C) 2005-2006 Per Bothner
@c See the file guile.texi for copying conditions. @c See the file guile.texi for copying conditions.
@ -157,6 +157,8 @@ guile-2 ;; starting from Guile 2.x
guile-2.2 ;; starting from Guile 2.2 guile-2.2 ;; starting from Guile 2.2
guile-3 ;; starting from Guile 3.x guile-3 ;; starting from Guile 3.x
guile-3.0 ;; starting from Guile 3.0 guile-3.0 ;; starting from Guile 3.0
guile-4 ;; starting from Guile 4.x
guile-4.0 ;; starting from Guile 4.0
r5rs r5rs
r6rs r6rs
r7rs r7rs

View file

@ -1,4 +1,4 @@
/* Copyright 2001,2009-2015,2018,2020,2021,2023 /* Copyright 2001,2009-2015,2018,2020,2021,2023,2025
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of Guile. This file is part of Guile.
@ -38,9 +38,9 @@
#define SCM_OBJCODE_WORD_SIZE SCM_CPP_STRINGIFY (SIZEOF_VOID_P) #define SCM_OBJCODE_WORD_SIZE SCM_CPP_STRINGIFY (SIZEOF_VOID_P)
/* Major and minor versions must be single characters. */ /* Major and minor versions must be single characters. */
#define SCM_OBJCODE_MAJOR_VERSION 4 #define SCM_OBJCODE_MAJOR_VERSION 3
#define SCM_OBJCODE_MINIMUM_MINOR_VERSION 2 #define SCM_OBJCODE_MINIMUM_MINOR_VERSION 99
#define SCM_OBJCODE_MINOR_VERSION 7 #define SCM_OBJCODE_MINOR_VERSION 99
#define SCM_OBJCODE_MAJOR_VERSION_STRING \ #define SCM_OBJCODE_MAJOR_VERSION_STRING \
SCM_CPP_STRINGIFY(SCM_OBJCODE_MAJOR_VERSION) SCM_CPP_STRINGIFY(SCM_OBJCODE_MAJOR_VERSION)
#define SCM_OBJCODE_MINOR_VERSION_STRING \ #define SCM_OBJCODE_MINOR_VERSION_STRING \

View file

@ -1,6 +1,6 @@
## Autoconf macros for working with Guile. ## Autoconf macros for working with Guile.
## ##
## Copyright (C) 1998,2001, 2006, 2010, 2012, 2013, 2014, 2020 Free Software Foundation, Inc. ## Copyright (C) 1998,2001, 2006, 2010, 2012, 2013, 2014, 2020, 2025 Free Software Foundation, Inc.
## ##
## This library is free software; you can redistribute it and/or ## This library is free software; you can redistribute it and/or
## modify it under the terms of the GNU Lesser General Public License ## modify it under the terms of the GNU Lesser General Public License
@ -47,8 +47,8 @@
# for an available version of Guile. # for an available version of Guile.
# #
# By default, this macro will search for the latest stable version of # By default, this macro will search for the latest stable version of
# Guile (e.g. 3.0), falling back to the previous stable version # Guile (e.g. 4.0), falling back to the previous stable version
# (e.g. 2.2) if it is available. If no guile-@var{VERSION}.pc file is # (e.g. 3.0) if it is available. If no guile-@var{VERSION}.pc file is
# found, an error is signaled. The found version is stored in # found, an error is signaled. The found version is stored in
# @var{GUILE_EFFECTIVE_VERSION}. # @var{GUILE_EFFECTIVE_VERSION}.
# #
@ -64,7 +64,7 @@ AC_DEFUN([GUILE_PKG],
if test "x$PKG_CONFIG" = x; then if test "x$PKG_CONFIG" = x; then
AC_MSG_ERROR([pkg-config is missing, please install it]) AC_MSG_ERROR([pkg-config is missing, please install it])
fi fi
_guile_versions_to_search="m4_default([$1], [3.0 2.2 2.0])" _guile_versions_to_search="m4_default([$1], [4.0 3.0])"
if test -n "$GUILE_EFFECTIVE_VERSION"; then if test -n "$GUILE_EFFECTIVE_VERSION"; then
_guile_tmp="" _guile_tmp=""
for v in $_guile_versions_to_search; do for v in $_guile_versions_to_search; do
@ -224,7 +224,7 @@ AC_DEFUN([GUILE_SITE_DIR],
# as well. # as well.
# #
# By default, this macro will search for the latest stable version of # By default, this macro will search for the latest stable version of
# Guile (e.g. 3.0). x.y or x.y.z versions can be specified. If an older # Guile (e.g. 4.0). x.y or x.y.z versions can be specified. If an older
# version is found, the macro will signal an error. # version is found, the macro will signal an error.
# #
# The effective version of the found @code{guile} is set to # The effective version of the found @code{guile} is set to
@ -240,7 +240,7 @@ AC_DEFUN([GUILE_SITE_DIR],
AC_DEFUN([GUILE_PROGS], AC_DEFUN([GUILE_PROGS],
[_guile_required_version="m4_default([$1], [$GUILE_EFFECTIVE_VERSION])" [_guile_required_version="m4_default([$1], [$GUILE_EFFECTIVE_VERSION])"
if test -z "$_guile_required_version"; then if test -z "$_guile_required_version"; then
_guile_required_version=3.0 _guile_required_version=4.0
fi fi
_guile_candidates=guile _guile_candidates=guile

View file

@ -1,6 +1,6 @@
;;; -*- mode: scheme; coding: utf-8; -*- ;;; -*- mode: scheme; coding: utf-8; -*-
;;;; Copyright (C) 1995-2014, 2016-2024 Free Software Foundation, Inc. ;;;; Copyright (C) 1995-2014, 2016-2025 Free Software Foundation, Inc.
;;;; ;;;;
;;;; This library is free software; you can redistribute it and/or ;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public ;;;; modify it under the terms of the GNU Lesser General Public
@ -4488,6 +4488,8 @@ when none is available, reading FILE-NAME with READER."
guile-2.2 guile-2.2
guile-3 guile-3
guile-3.0 guile-3.0
guile-4
guile-4.0
r5rs r5rs
r6rs r6rs
r7rs r7rs

View file

@ -2323,7 +2323,7 @@ needed."
;; FIXME: Define these somewhere central, shared with C. ;; FIXME: Define these somewhere central, shared with C.
(define *bytecode-major-version* #x0300) (define *bytecode-major-version* #x0300)
(define *bytecode-minor-version* 7) (define *bytecode-minor-version* 99)
(define (link-dynamic-section asm text rw rw-init frame-maps) (define (link-dynamic-section asm text rw rw-init frame-maps)
"Link the dynamic section for an ELF image with bytecode @var{text}, "Link the dynamic section for an ELF image with bytecode @var{text},