summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Keep <andy.keep@gmail.com>2019-03-20 22:26:29 -0400
committerAndy Keep <andy.keep@gmail.com>2019-03-20 22:26:29 -0400
commit4740211242cf7f010fd66a7c15cf71aea098956c (patch)
treec58f6fb4ec72d65230a02d01c31e075aefb41834
parent4a4e1c40b611e56260c4751f1e16d0f9d78d2a35 (diff)
Start on release notes.v9.5.1
- added library-search-handler, compile-whole-library, and improved packaging to the release notes. release_notes/release_notes.stex
-rw-r--r--LOG3
-rw-r--r--release_notes/release_notes.stex53
2 files changed, 56 insertions, 0 deletions
diff --git a/LOG b/LOG
index 9276d1dd..7f65723c 100644
--- a/LOG
+++ b/LOG
@@ -1204,3 +1204,6 @@
compile.ss
- minor build and new-release updates
checkin, newrelease, Makefile.in, Makefile-workarea.in
+- added library-search-handler, compile-whole-library, and improved
+ packaging to the release notes.
+ release_notes/release_notes.stex
diff --git a/release_notes/release_notes.stex b/release_notes/release_notes.stex
index ab54a073..d7cbc9d5 100644
--- a/release_notes/release_notes.stex
+++ b/release_notes/release_notes.stex
@@ -58,6 +58,29 @@ Online versions of both books can be found at
%-----------------------------------------------------------------------------
\section{Functionality Changes}\label{section:functionality}
+\subsection{Improved packaging support (9.5.1)}
+
+The Chez Scheme \scheme{Makefile} has been enhanced with new targets for
+creating binary packages for Unix-like operating systems.
+The \scheme{create-tarball} target generates a binary tarball package for
+distribution, the \scheme{create-rpm} target generates a Linux RPM package, and
+the \scheme{create-pkg} target generates a macOS package file.
+
+\subsection{Library search handler (9.5.1)}
+
+The new \scheme{library-search-handler} parameter controls how library source
+or object code is located when \scheme{import}, \scheme{compile-whole-program},
+or \scheme{compile-whole-library} are used to load a library.
+The value of the \scheme{library-search-handler} parameter must be a procedure
+expecting four arguments: the \var{who} argument is a symbol that provides
+context in \scheme{import-notify} messages, the \var{library} argument is the
+name of the desired library, the \var{directories} is a list of source and
+object directory pairs in the form returned by \scheme{library-directories},
+and the \var{extensions} parameter is a list of source and object extension
+pairs in the form returned by \scheme{library-extensions}.
+The default vaue of the \scheme{library-search-handler} is the newly exposed
+\scheme{default-library-search-handler} procedure.
+
\subsection{Ftype guardians (9.5.1)}
Applications that manage memory outside the Scheme heap can leverage
@@ -1640,6 +1663,36 @@ in fasl files does not generally make sense.
%-----------------------------------------------------------------------------
\section{Bug Fixes}\label{section:bugfixes}
+\subsection{Unbound object resulting from libraries combined with \protect\scheme{compile-whole-library} (9.5.1)}
+
+A bug in \scheme{compile-whole-library} that allowed the invoke code for a
+library included in the combined library body to be executed without first
+invoking its binary library dependencies has been fixed.
+This bug could arise when a member of a combined library was invoked without
+invoking the requirements of the other libraries it was combined with. For
+instance, consider the case where libraries \scheme{(A)} and \scheme{(B)} are
+combined and \scheme{(B)} has dependencies on library \scheme{(A)} and binary
+library \scheme{(C)}.
+One possible sort order of this graph is \scheme{(C)}, \scheme{(A)},
+\scheme{(B)}, where the invoke code for \scheme{(A)} and \scheme{(B)} are
+combined into a single block of invoke code. If library \scheme{(A)} is
+invoked first, it will implicitly cause the invoke code for \scheme{(B)} to be
+invoked without invoking the code for \scheme{(C)}.
+We address this by adding explicit dependencies between \scheme{(A)} and all
+the binary libraries that precede it and all of the other libraries clustered
+with \scheme{(A)} and \scheme{(A)}, such that no matter which library clustered
+with \scheme{(A)} is invoked firts, \scheme{(A)} will be invoked, causing all
+binary libraries that precede \scheme{(A)} to be invoked.
+It is also possible for a similar problem to exist between clusters, where
+invoking a later cluster may invoke an earlier cluster without invoking the
+binary dependencies for the earlier cluster.
+We address this issue by adding an invoke requirement between each cluster and
+the first library in the cluster that precedes it.
+These extended invoke requirements are also added to the import requirements
+for each library, and the dependency graph is enhanced with import requirement
+links to ensure these are taken into account during the topological sort.
+
+
\subsection{Automatic recompilation and missing include files (9.5.1)}
A bug in automatic recompilation involving missing include files