1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-29 19:30:36 +02:00

Update effective version to 3.0

* GUILE-VERSION: Bump version to 2.3.0, and effective version to 3.0.
* .gitignore:
* README:
* doc/guile.1:
* doc/ref/api-evaluation.texi:
* doc/ref/api-options.texi:
* doc/ref/guile-invoke.texi:
* doc/ref/libguile-foreign-objects.texi:
* doc/ref/libguile-parallel.texi:
* doc/ref/srfi-modules.texi: Update to 3.0.
* libguile/_scm.h (SCM_OBJCODE_MAJOR_VERSION):
(SCM_OBJCODE_MINIMUM_MINOR_VERSION, SCM_OBJCODE_MINOR_VERSION): Bump
bytecode version for fallback path.
* libguile/loader.c: Update to avoid loading version 2.2 bytecode
files.
* meta/guile-3.0-uninstalled.pc.in:
* meta/guile-3.0.pc.in: Rename.
* module/system/vm/assembler.scm (*bytecode-major-version*):
(*bytecode-minor-version*): Write the new bytecode version.
This commit is contained in:
Andy Wingo 2017-05-22 14:13:20 +02:00
parent c248ea10be
commit b2c0e01bb4
16 changed files with 46 additions and 46 deletions

4
.gitignore vendored
View file

@ -67,8 +67,8 @@ guile-procedures.txt
guile-config/guile-config
*.go
TAGS
/meta/guile-2.2.pc
/meta/guile-2.2-uninstalled.pc
/meta/guile-3.0.pc
/meta/guile-3.0-uninstalled.pc
gdb-pre-inst-guile
cscope.out
cscope.files

View file

@ -2,10 +2,10 @@
# Note: `GUILE_VERSION' is defined in `configure.ac' using `git-version-gen'.
GUILE_MAJOR_VERSION=2
GUILE_MINOR_VERSION=2
GUILE_MICRO_VERSION=2
GUILE_MINOR_VERSION=3
GUILE_MICRO_VERSION=0
GUILE_EFFECTIVE_VERSION=2.2
GUILE_EFFECTIVE_VERSION=3.0
# All of the shared lib versioning info. Right now, for this to work
@ -16,7 +16,7 @@ GUILE_EFFECTIVE_VERSION=2.2
# See libtool info pages for more information on how and when to
# change these.
LIBGUILE_INTERFACE_CURRENT=3
LIBGUILE_INTERFACE_CURRENT=0
LIBGUILE_INTERFACE_REVISION=0
LIBGUILE_INTERFACE_AGE=2
LIBGUILE_INTERFACE_AGE=0
LIBGUILE_INTERFACE="${LIBGUILE_INTERFACE_CURRENT}:${LIBGUILE_INTERFACE_REVISION}:${LIBGUILE_INTERFACE_AGE}"

12
README
View file

@ -1,8 +1,8 @@
This is version 2.2 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
users of Guile-based applications a choice of languages.
This is a prerelease of version 3.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 users of Guile-based applications a choice of languages.
Please send bug reports to bug-guile@gnu.org.
@ -257,7 +257,7 @@ switches specific to Guile you may find useful in some circumstances.
Cross building Guile =====================================================
As of Guile 2.2.x, the build process produces a library, libguile-2.2,
As of Guile 3.0.x, the build process produces a library, libguile-3.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

@ -4,7 +4,7 @@
.\" groff -man -Tascii foo.1
.\"
.\" title section date source manual
.TH GUILE 1 "2011-03-04" GNU "GNU Guile 2.2"
.TH GUILE 1 "2017-05-22" GNU "GNU Guile 3.0"
.
.SH NAME
guile \- The GNU Project Extension Language

View file

@ -935,8 +935,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/2.2/ccache/ice-9/popen.go}, and use it instead of
@code{/usr/share/guile/2.2/ice-9/popen.scm}.
@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}.
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

@ -60,13 +60,13 @@ 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/2.2/}
i.e.@: @file{/usr/share/guile/3.0/}
@lisp
(version) @result{} "2.2.0"
(effective-version) @result{} "2.2"
(major-version) @result{} "2"
(minor-version) @result{} "2"
(version) @result{} "3.0.0"
(effective-version) @result{} "3.0"
(major-version) @result{} "3"
(minor-version) @result{} "0"
(micro-version) @result{} "0"
@end lisp
@end deffn
@ -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/2.2}.
for example @file{/usr/local/share/guile/3.0}.
@end deffn
@deffn {Scheme Procedure} %site-dir

View file

@ -373,7 +373,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/2.2/ccache)
(. ../my-library /usr/local/lib/guile/3.0/ccache)
@end example
@item GUILE_LOAD_PATH
@ -392,8 +392,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/2.2 \
/usr/local/share/guile/site/2.2 \
(. /usr/local/share/guile/3.0 \
/usr/local/share/guile/site/3.0 \
/usr/local/share/guile/site \
/usr/local/share/guile \
../srfi)

View file

@ -276,13 +276,11 @@ make_file (int fd)
@cindex finalization
Note that the finalizer may be invoked in ways and at times you might
not expect. In particular, if the user's Guile is built with support
for threads, the finalizer may be called from any thread that is running
Guile. In Guile 2.0, finalizers are invoked via ``asyncs'', which
interleaves them with running Scheme code; @pxref{Asyncs}. In Guile 2.2
there will be a dedicated finalization thread, to ensure that the
finalization doesn't run within the critical section of any other thread
known to Guile.
not expect. In a Guile built without threading support, finalizers are
invoked via ``asyncs'', which interleaves them with running Scheme code;
@pxref{Asyncs}. If the user's Guile is built with support for threads,
the finalizer will probably be called by a dedicated finalization
thread, unless the user invokes @code{scm_run_finalizers ()} explicitly.
In either case, finalizers run concurrently with the main program, and
so they need to be async-safe and thread-safe. If for some reason this

View file

@ -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.0} or @code{guile-2.2}, as appropriate.
ask for @code{guile-2.2} or @code{guile-3.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

@ -151,6 +151,7 @@ The Guile core has the following features,
guile
guile-2 ;; starting from Guile 2.x
guile-2.2 ;; starting from Guile 2.2
guile-3.0 ;; starting from Guile 3.0
r5rs
srfi-0
srfi-4

View file

@ -247,9 +247,9 @@ void scm_ia64_longjmp (scm_i_jmp_buf *, int);
#define SCM_OBJCODE_WORD_SIZE SCM_CPP_STRINGIFY (SIZEOF_VOID_P)
/* Major and minor versions must be single characters. */
#define SCM_OBJCODE_MAJOR_VERSION 3
#define SCM_OBJCODE_MINIMUM_MINOR_VERSION 9
#define SCM_OBJCODE_MINOR_VERSION A
#define SCM_OBJCODE_MAJOR_VERSION 4
#define SCM_OBJCODE_MINIMUM_MINOR_VERSION 0
#define SCM_OBJCODE_MINOR_VERSION 0
#define SCM_OBJCODE_MAJOR_VERSION_STRING \
SCM_CPP_STRINGIFY(SCM_OBJCODE_MAJOR_VERSION)
#define SCM_OBJCODE_MINOR_VERSION_STRING \

View file

@ -87,7 +87,7 @@ static void register_elf (char *data, size_t len, char *frame_maps);
enum bytecode_kind
{
BYTECODE_KIND_NONE,
BYTECODE_KIND_GUILE_2_2
BYTECODE_KIND_GUILE_3_0
};
static SCM
@ -95,7 +95,7 @@ pointer_to_procedure (enum bytecode_kind bytecode_kind, char *ptr)
{
switch (bytecode_kind)
{
case BYTECODE_KIND_GUILE_2_2:
case BYTECODE_KIND_GUILE_3_0:
{
return scm_i_make_program ((scm_t_uint32 *) ptr);
}
@ -294,12 +294,11 @@ process_dynamic_segment (char *base, Elf_Phdr *dyn_phdr,
scm_t_uint16 minor = dyn[i].d_un.d_val & 0xffff;
switch (major)
{
case 0x0202:
bytecode_kind = BYTECODE_KIND_GUILE_2_2;
case 0x0300:
bytecode_kind = BYTECODE_KIND_GUILE_3_0;
if (minor < SCM_OBJCODE_MINIMUM_MINOR_VERSION)
return "incompatible bytecode version";
/* FIXME for 3.0: Go back to integers. */
if (minor > SCM_OBJCODE_MINOR_VERSION_STRING[0])
if (minor > SCM_OBJCODE_MINOR_VERSION)
return "incompatible bytecode version";
break;
default:
@ -320,7 +319,7 @@ process_dynamic_segment (char *base, Elf_Phdr *dyn_phdr,
switch (bytecode_kind)
{
case BYTECODE_KIND_GUILE_2_2:
case BYTECODE_KIND_GUILE_3_0:
if ((scm_t_uintptr) init % 4)
return "unaligned DT_INIT";
if ((scm_t_uintptr) entry % 4)
@ -356,6 +355,8 @@ load_thunk_from_memory (char *data, size_t len, int is_read_only)
SCM init = SCM_BOOL_F, entry = SCM_BOOL_F;
char *frame_maps = 0;
errno = 0;
if (len < sizeof *header)
ABORT ("object file too small");

View file

@ -77,7 +77,7 @@ substitute = \
-e "s|[@]guild[@]|$$guild|g" \
-e "s|[@]installed_guile[@]|$$installed_guile|g"
# Substitutions for dependencies that appear in 'guile-2.0.pc'.
# Substitutions for dependencies that appear in 'guile-3.0.pc'.
dependency_substitutions = \
-e "s|[@]BDW_GC_CFLAGS[@]|$(BDW_GC_CFLAGS)|g" \
-e "s|[@]BDW_GC_LIBS[@]|$(BDW_GC_LIBS)|g" \

View file

@ -1806,8 +1806,8 @@ needed."
;;;
;; FIXME: Define these somewhere central, shared with C.
(define *bytecode-major-version* #x0202)
(define *bytecode-minor-version* (char->integer #\A))
(define *bytecode-major-version* #x0300)
(define *bytecode-minor-version* 0)
(define (link-dynamic-section asm text rw rw-init frame-maps)
"Link the dynamic section for an ELF image with bytecode @var{text},