1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-29 19:30:36 +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/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

View file

@ -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}"

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
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.

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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

View file

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

View file

@ -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

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.
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 \

View file

@ -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

View file

@ -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

View file

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