1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00
guile/doc/ref/libguile-parallel.texi
Andy Wingo 7696344634 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.
2025-04-22 13:23:00 +02:00

84 lines
3.4 KiB
Text

@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, 2025 Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions.
@node Parallel Installations
@section Parallel Installations
@cindex pkg-config
@cindex effective version
Guile provides strong API and ABI stability guarantees during stable
series, so that if a user writes a program against Guile version 2.2.3,
it will be compatible with some future version 2.2.7. We say in this
case that 2.2 is the @dfn{effective version}, composed of the major and
minor versions, in this case 2 and 2.
Users may install multiple effective versions of Guile, with each
version's headers, libraries, and Scheme files under their own
directories. This provides the necessary stability guarantee for users,
while also allowing Guile developers to evolve the language and its
implementation.
However, parallel installability does have a down-side, in that users
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-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}}
to get the compilation and linking flags necessary to link to version
@value{EFFECTIVE-VERSION} of Guile. You would typically run
@code{pkg-config} during the configuration phase of your program and use
the obtained information in the Makefile.
Guile's @code{pkg-config} file,
@file{guile-@value{EFFECTIVE-VERSION}.pc}, defines additional useful
variables:
@table @code
@item sitedir
@cindex @code{sitedir}
The default directory where Guile looks for Scheme source and compiled
files (@pxref{Installing Site Packages, %site-dir}). Run
@command{pkg-config guile-@value{EFFECTIVE-VERSION} --variable=sitedir}
to see its value. @xref{Autoconf Macros, GUILE_SITE_DIR}, for more on
how to use it from Autoconf.
@item extensiondir
@cindex @code{extensiondir}
The default directory where Guile looks for extensions---i.e., shared
libraries providing additional features (@pxref{Foreign Extensions}).
Run @command{pkg-config guile-@value{EFFECTIVE-VERSION}
--variable=extensiondir} to see its value.
@item guile
@itemx guild
@cindex program name transformations, dealing with
The absolute file name of the @command{guile} and @command{guild}
commands@footnote{The @code{guile} and @code{guild} variables defined
starting from Guile version 2.0.12.}. Run @command{pkg-config
guile-@value{EFFECTIVE-VERSION} --variable=guile} or
@code{--variable=guild} to see their value.
These variables allow users to deal with program name transformations
that may be specified when configuring Guile with
@code{--program-transform-name}, @code{--program-suffix}, or
@code{--program-prefix} (@pxref{Transformation Options,,, autoconf, GNU
Autoconf Manual}).
@end table
@noindent
See the @code{pkg-config} man page, for more information, or its web
site, @url{http://pkg-config.freedesktop.org/}.
@xref{Autoconf Support}, for more on checking for Guile from within a
@code{configure.ac} file.
@c Local Variables:
@c TeX-master: "guile.texi"
@c End: