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},