wingo pushed a commit to branch wip-whippet
in repository guile.

commit 7696344634d4b4f1682d0559ea905ebc656672d7
Author: Andy Wingo <wi...@pobox.com>
AuthorDate: Tue Apr 22 13:12:37 2025 +0200

    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.
---
 .gitignore                                                   |  4 ++--
 GUILE-VERSION                                                | 10 +++++-----
 README                                                       |  4 ++--
 doc/ref/api-evaluation.texi                                  |  6 +++---
 doc/ref/api-options.texi                                     | 12 ++++++------
 doc/ref/guile-invoke.texi                                    |  8 ++++----
 doc/ref/history.texi                                         |  5 ++++-
 doc/ref/libguile-parallel.texi                               |  4 ++--
 doc/ref/srfi-modules.texi                                    |  4 +++-
 libguile/loader.h                                            |  8 ++++----
 ...ile-3.0-uninstalled.pc.in => guile-4.0-uninstalled.pc.in} |  0
 meta/{guile-3.0.pc.in => guile-4.0.pc.in}                    |  0
 meta/guile.m4                                                | 12 ++++++------
 module/ice-9/boot-9.scm                                      |  4 +++-
 module/system/vm/assembler.scm                               |  2 +-
 15 files changed, 45 insertions(+), 38 deletions(-)

diff --git a/.gitignore b/.gitignore
index 0dbca7366..b1c182c4c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -136,8 +136,8 @@ INSTALL
 /meta/gdb-uninstalled-guile
 /meta/guild
 /meta/guile
-/meta/guile-3.0.pc
-/meta/guile-3.0-uninstalled.pc
+/meta/guile-4.0.pc
+/meta/guile-4.0-uninstalled.pc
 /meta/guile-config
 /meta/uninstalled-env
 /module/ice-9/eval.go.stamp
diff --git a/GUILE-VERSION b/GUILE-VERSION
index 873813f31..13afc9057 100644
--- a/GUILE-VERSION
+++ b/GUILE-VERSION
@@ -2,10 +2,10 @@
 
 # Note: `GUILE_VERSION' is defined in `configure.ac' using `git-version-gen'.
 GUILE_MAJOR_VERSION=3
-GUILE_MINOR_VERSION=0
-GUILE_MICRO_VERSION=10
+GUILE_MINOR_VERSION=9
+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
@@ -18,7 +18,7 @@ GUILE_EFFECTIVE_VERSION=3.0
 # '--disable-deprecated' builds.  Generally speaking, within a stable
 # 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_AGE=7
+LIBGUILE_INTERFACE_AGE=0
 
LIBGUILE_INTERFACE="${LIBGUILE_INTERFACE_CURRENT}:${LIBGUILE_INTERFACE_REVISION}:${LIBGUILE_INTERFACE_AGE}"
diff --git a/README b/README
index 19505de22..bd27b1002 100644
--- a/README
+++ b/README
@@ -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
 as a library that can be linked into applications to give them their own
 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  =====================================================
 
-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
 Guile's virtual machine.  The bytecode format depends on the endianness
 and word size of the host CPU.
diff --git a/doc/ref/api-evaluation.texi b/doc/ref/api-evaluation.texi
index 68bf38e54..7d888b4a1 100644
--- a/doc/ref/api-evaluation.texi
+++ b/doc/ref/api-evaluation.texi
@@ -1,7 +1,7 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Guile Reference Manual.
 @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.
 
 @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
 appending @code{.go} to the relative path.  For example, searching for
 @code{ice-9/popen} could find
-@code{/usr/lib/guile/3.0/ccache/ice-9/popen.go}, and use it instead of
-@code{/usr/share/guile/3.0/ice-9/popen.scm}.
+@code{/usr/lib/guile/4.0/ccache/ice-9/popen.go}, and use it instead of
+@code{/usr/share/guile/4.0/ice-9/popen.scm}.
 
 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
diff --git a/doc/ref/api-options.texi b/doc/ref/api-options.texi
index 161c46794..f397b9dc1 100644
--- a/doc/ref/api-options.texi
+++ b/doc/ref/api-options.texi
@@ -1,7 +1,7 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Guile Reference Manual.
 @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 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
 that it omits the micro version.  The effective version should be used
 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
-(version) @result{} "3.0.0"
-(effective-version) @result{} "3.0"
-(major-version) @result{} "3"
+(version) @result{} "4.0.0"
+(effective-version) @result{} "4.0"
+(major-version) @result{} "4"
 (minor-version) @result{} "0"
 (micro-version) @result{} "0"
 @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}};
 
 @noindent
-for example @file{/usr/local/share/guile/3.0}.
+for example @file{/usr/local/share/guile/4.0}.
 @end deffn
 
 @deffn {Scheme Procedure} %site-dir
diff --git a/doc/ref/guile-invoke.texi b/doc/ref/guile-invoke.texi
index 7ceef0bb5..ee93ee1c1 100644
--- a/doc/ref/guile-invoke.texi
+++ b/doc/ref/guile-invoke.texi
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @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 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
 $ export GUILE_LOAD_COMPILED_PATH=".:../my-library"
 $ 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
 
 @item GUILE_LOAD_PATH
@@ -394,8 +394,8 @@ directory to @code{%load-path}, and adds the relative 
directory
 @example
 $ env GUILE_LOAD_PATH=".:...:../srfi" \
 guile -c '(display %load-path) (newline)'
-(. /usr/local/share/guile/3.0 \
-/usr/local/share/guile/site/3.0 \
+(. /usr/local/share/guile/4.0 \
+/usr/local/share/guile/site/4.0 \
 /usr/local/share/guile/site \
 /usr/local/share/guile \
 ../srfi)
diff --git a/doc/ref/history.texi b/doc/ref/history.texi
index 60d839ac3..1adec9951 100644
--- a/doc/ref/history.texi
+++ b/doc/ref/history.texi
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @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 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,
 and R6RS support improved.  The exception facility (throw and catch) was
 rewritten in terms of SRFI-34 exception handlers.
+
+@item 4.0 -- 2025?
+Not yet released.  New garbage collector.
 @end table
 
 @node Status
diff --git a/doc/ref/libguile-parallel.texi b/doc/ref/libguile-parallel.texi
index a3779a2a0..e92ffd8b4 100644
--- a/doc/ref/libguile-parallel.texi
+++ b/doc/ref/libguile-parallel.texi
@@ -1,7 +1,7 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Guile Reference Manual.
 @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.
 
 @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
 @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
-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
 invoke @code{pkg-config --cflags --libs guile-@value{EFFECTIVE-VERSION}}
diff --git a/doc/ref/srfi-modules.texi b/doc/ref/srfi-modules.texi
index 0b663902e..a86765368 100644
--- a/doc/ref/srfi-modules.texi
+++ b/doc/ref/srfi-modules.texi
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @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 Copyright (C) 2005-2006 Per Bothner
 @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-3   ;; starting from Guile 3.x
 guile-3.0 ;; starting from Guile 3.0
+guile-4   ;; starting from Guile 4.x
+guile-4.0 ;; starting from Guile 4.0
 r5rs
 r6rs
 r7rs
diff --git a/libguile/loader.h b/libguile/loader.h
index 42c98fcca..bacca13ec 100644
--- a/libguile/loader.h
+++ b/libguile/loader.h
@@ -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.
 
    This file is part of Guile.
@@ -38,9 +38,9 @@
 #define SCM_OBJCODE_WORD_SIZE  SCM_CPP_STRINGIFY (SIZEOF_VOID_P)
 
 /* Major and minor versions must be single characters. */
-#define SCM_OBJCODE_MAJOR_VERSION 4
-#define SCM_OBJCODE_MINIMUM_MINOR_VERSION 2
-#define SCM_OBJCODE_MINOR_VERSION 7
+#define SCM_OBJCODE_MAJOR_VERSION 3
+#define SCM_OBJCODE_MINIMUM_MINOR_VERSION 99
+#define SCM_OBJCODE_MINOR_VERSION 99
 #define SCM_OBJCODE_MAJOR_VERSION_STRING        \
   SCM_CPP_STRINGIFY(SCM_OBJCODE_MAJOR_VERSION)
 #define SCM_OBJCODE_MINOR_VERSION_STRING        \
diff --git a/meta/guile-3.0-uninstalled.pc.in b/meta/guile-4.0-uninstalled.pc.in
similarity index 100%
rename from meta/guile-3.0-uninstalled.pc.in
rename to meta/guile-4.0-uninstalled.pc.in
diff --git a/meta/guile-3.0.pc.in b/meta/guile-4.0.pc.in
similarity index 100%
rename from meta/guile-3.0.pc.in
rename to meta/guile-4.0.pc.in
diff --git a/meta/guile.m4 b/meta/guile.m4
index 12f465bb0..88ca5936e 100644
--- a/meta/guile.m4
+++ b/meta/guile.m4
@@ -1,6 +1,6 @@
 ## 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
 ## modify it under the terms of the GNU Lesser General Public License
@@ -47,8 +47,8 @@
 # for an available version of Guile.
 #
 # By default, this macro will search for the latest stable version of
-# Guile (e.g. 3.0), falling back to the previous stable version
-# (e.g. 2.2) if it is available.  If no guile-@var{VERSION}.pc file is
+# Guile (e.g. 4.0), falling back to the previous stable version
+# (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
 # @var{GUILE_EFFECTIVE_VERSION}.
 #
@@ -64,7 +64,7 @@ AC_DEFUN([GUILE_PKG],
   if test "x$PKG_CONFIG" = x; then
     AC_MSG_ERROR([pkg-config is missing, please install it])
   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
     _guile_tmp=""
     for v in $_guile_versions_to_search; do
@@ -224,7 +224,7 @@ AC_DEFUN([GUILE_SITE_DIR],
 # as well.
 #
 # 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.
 #
 # The effective version of the found @code{guile} is set to
@@ -240,7 +240,7 @@ AC_DEFUN([GUILE_SITE_DIR],
 AC_DEFUN([GUILE_PROGS],
  [_guile_required_version="m4_default([$1], [$GUILE_EFFECTIVE_VERSION])"
   if test -z "$_guile_required_version"; then
-    _guile_required_version=3.0
+    _guile_required_version=4.0
   fi
 
   _guile_candidates=guile
diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm
index 04f84215c..469f279c0 100644
--- a/module/ice-9/boot-9.scm
+++ b/module/ice-9/boot-9.scm
@@ -1,6 +1,6 @@
 ;;; -*- 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
 ;;;; 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-3
     guile-3.0
+    guile-4
+    guile-4.0
     r5rs
     r6rs
     r7rs
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm
index 46f75482b..c9435c6bd 100644
--- a/module/system/vm/assembler.scm
+++ b/module/system/vm/assembler.scm
@@ -2323,7 +2323,7 @@ needed."
 
 ;; FIXME: Define these somewhere central, shared with C.
 (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)
   "Link the dynamic section for an ELF image with bytecode @var{text},

Reply via email to