~ chicken-core (chicken-5) a863494840d07d62e8fd04b3c43c39fee98e231b


commit a863494840d07d62e8fd04b3c43c39fee98e231b
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Jan 10 14:04:01 2024 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Wed Jan 10 14:04:01 2024 +0100

    merrge wiki changes into manual, with a few corrections

diff --git a/manual/Acknowledgements b/manual/Acknowledgements
index fc3183aa..8e6ac12b 100644
--- a/manual/Acknowledgements
+++ b/manual/Acknowledgements
@@ -2,7 +2,7 @@
 
 == Acknowledgements
 
-Many thanks to "alicemaz", "acdw", Jules Altfas, Nico Amtsberg, Alonso Andres, William
+Many thanks to "alicemaz", Jules Altfas, Nico Amtsberg, Alonso Andres, William
 Annis, Jason E. Aten, Marc Baily, Peter Barabas, Andrei Barbu, Jonah
 Beckford, Arto Bendiken, Andy Bennett, Kevin Beranek, Peter Bex,
 Jean-Francois Bignolles, Oivind Binde, Alaric Blagrave Snell-Pym, Dave
@@ -11,9 +11,9 @@ Christopher Brannon, Terence Brannon, Roy Bryant, Adam Buchbinder, Hans Bulfone,
 "Category 5", Taylor Campbell, Naruto Canada, Mark Carter, Esteban U. Caamano
 Castro, Semih Cemiloglu, Alex Charlton, Franklin Chen, Joo ChurlSoo,
 Thomas Chust, Gian Paolo Ciceri, Fulvio Ciriaco, Paul Colby, Tobia
-Conforto, Wolfgang Corcoran-Mathe, John Cowan, Grzegorz Chrupala, James Crippen,
-John Croisant, Evan Hanson, Adhi Hargo, Moritz Heidkamp, Tollef Fog Heen, Drew Hess,
-Alejandro Forero Cuervo, Peter Danenberg, Linh Dang, Brian Denheyer, Sean
+Conforto, John Cowan, Grzegorz Chrupala, James Crippen, Evan Hanson,
+Adhi Hargo, Moritz Heidkamp, Tollef Fog Heen, Drew Hess, Alejandro
+Forero Cuervo, Peter Danenberg, Linh Dang, Brian Denheyer, Sean
 D'Epagnier, "dgym", "Don", Chris Double, "Brown Dragon", David
 Dreisigmeyer, Jarod Eells, Petter Egesund, Stephen Eilert, Steve
 Elkins, Daniel B. Faken, Erik Falor, Will Farr, Graham Fawcett, Marc
@@ -22,7 +22,7 @@ Martin Gasbichler, Abdulaziz Ghuloum, Joey Gibson, Stephen C. Gilardi,
 Mario Domenech Goulart, Joshua Griffith, Johannes Groedem, Damian
 Gryski, Matt Gushee, Andreas Gustafsson, Sven Hartrumpf, Jun-ichiro
 itojun Hagino, Ahdi Hargo, Matthias Heiler, Karl M. Hegbloom, Moritz Heidkamp,
-William P. Heinemann, Christian Himpe, Bill Hoffman, Eric Hoffman, Bruce Hoult, Hans Hübner,
+William P. Heinemann, Bill Hoffman, Eric Hoffman, Bruce Hoult, Hans Hübner,
 Markus Hülsmann, Götz Isenmann, Paulo Jabardo, Wietse Jacobs, David Janssens,
 Christian Jäger, Robert Jensen, Matt Jones, Dale Jordan, Valentin Kamyshenko,
 Daishi Kato, Peter Keller, Christian Kellermann, Brad Kind, Ron Kneusel, "Kooda",
@@ -45,15 +45,15 @@ Andreas Rottman, David Rush, Lars Rustemeier, Daniel Sadilek,
 Otavio Salvador, Burton Samograd, "Sandro", "satori", Aleksej Saushev,
 Oskar Schirmer, Vasilij Schneidermann, Reed Sheridan, Ronald Schröder,
 Spencer Schumann, Ivan Shcheklein, Alexander Shendi, Alex Shinn, Ivan
-Shmakov, "Shmul", "siiky", Tony Sidaway, Jeffrey B. Siegal, Andrey Sidorenko,
+Shmakov, "Shmul", Tony Sidaway, Jeffrey B. Siegal, Andrey Sidorenko,
 Michele Simionato, Iruata Souza, Volker Stolz, Jon Strait, Dorai Sitaram,
 Robert Skeels, Sandra Snan, Jason Songhurst, Clifford Stein, David Steiner,
 "Sunnan", Zbigniew Szadkowski, Rick Taube, Nathan Thern, Mike Thomas, Minh
 Thu, Christian Tismer, Andre van Tonder, John Tobey, Henrik Tramberend,
 Vladimir Tsichevsky, James Ursetto, Neil van Dyke, Sam Varner,
 Taylor Venable, Sander Vesik, Jaques Vidrine, Panagiotis Vossos,
-Shawn Wagner, Peter Wang, Xin Wang, Ed Watkeys, Brad Watson, Thomas Weidner,
-Göran Weinholt, Matthew Welland, Drake Wilson, Jörg Wittenberger, Peter
+Shawn Wagner, Peter Wang, Ed Watkeys, Brad Watson, Thomas Weidner, Göran
+Weinholt, Matthew Welland, Drake Wilson, Jörg Wittenberger, Peter
 Wright, Mark Wutka, Adam Young, Richard Zidlicky, Houman Zolfaghari and
 Florian Zumbiehl for bug-fixes, tips and suggestions.
 
diff --git a/manual/Cross development b/manual/Cross development
index ca5b6b01..9e91e122 100644
--- a/manual/Cross development	
+++ b/manual/Cross development	
@@ -196,14 +196,19 @@ To cross compile from Linux to Windows, you will need to use a Linux build of Mi
 As far as the runtime is concerned, the procedure is the same that what have been shown before, using the platform name {{cross-linux-mingw}}.
 
 The procedure to compile the compiler however require some more care:
-* The platform name is {{linux}} because it is where you want your compiler to run
-* You have to set the {{TARGET_LIBRARIES}} as this is different between Linux and Windows:
-  For Linux target, this variable contains {{-ldl -lm}}, while for Windows target it should be {{-lm -lws2_32}}.
+* The platform name is {{linux}} because it is where you want your compiler to run.
+* You have to change {{TARGET_LIBRARIES}} to {{-lm -lws2_32}}.
 * You have to make sure you are pointing to the right toolchain (see next paragraph).
 
 In order to compile the C sources that Chicken will produce you have to make sure that you provide the right toolchain in both runtime and compiler steps.
 
-In most cases, you want to do that by setting {{HOSTSYSTEM}} when building the runtime and {{TARGETSYSTEM}} when building the compiler to something similar to {{x86_64-w64-mingw32}} (check you distribution binaries).
+In most cases, you want to do that by setting {{HOSTSYSTEM}} when building the runtime and {{TARGETSYSTEM}} when building the compiler to something similar to {{x86_64-w64-mingw32}} (check you distribution binaries). For example:
+
+ # build a CHICKEN runtime for windows
+ > make PREFIX=$HOME/target PLATFORM=cross-linux-mingw HOSTSYSTEM=x86_64-w64-mingw32 install
+ > make confclean
+ # build a CHICKEN cross-compiler that uses the runtime above
+ > make PREFIX=$HOME/cross PROGRAM_PREFIX=mingw- TARGET_PREFIX=$HOME/target PLATFORM=linux TARGETSYSTEM=x86_64-w64-mingw32 TARGET_LIBRARIES="-lm -lws2_32" install
 
 If your distribution does not stick to the {{PREFIX-TOOLNAME}} convention you may want to set some following variables (runtime step/compiler step):
 * {{C_COMPILER}}/{{TARGET_C_COMPILER}}
@@ -242,6 +247,33 @@ for the host system and for the cross-target. To selectively install, uninstall
 or list extensions for either the host or the target system use the
 {{-host}} and {{-target}} options for the tools.
 
+For example, using the mingw-cross-compiler from above, we can create
+a standalone Windows exe file that includes the CHICKEN runtime and all
+egg dependencies.
+
+ # install an egg using the mingw cross compiler above
+ > $HOME/cross/bin/mingw-chicken-install fmt
+ > cat hello.scm
+ (import fmt chicken.platform)
+ (fmt #t "hello world from " (software-type) nl
+      (pretty (features)))
+ # create a standalone exe file with the CHICKEN and fmt statically linked
+ > $HOME/cross/bin/mingw-csc -static hello.scm
+ # hello.exe should now run on Window without any runtime DLL dependencies:
+ > x86_64-w64-mingw32-objdump -p hello.exe | grep "DLL Name"
+    DLL Name: KERNEL32.dll 
+    DLL Name: msvcrt.dll 
+    DLL Name: USER32.dll
+    DLL Name: WS2_32.dll
+ # or using wine
+ > wine hello.exe
+ hello world from windows
+ (#:windows            #:64bit              #:cross-chicken
+  #:ptables            #:dload              #:little-endian
+  #:x86-64             #:gnu                #:mingw32
+  ...)
+
+
 === "Target-only" extensions
 
 Sometimes an extension will only be compilable for the target platform
diff --git a/manual/Extensions to the standard b/manual/Extensions to the standard
index edc8b795..9a28ea81 100644
--- a/manual/Extensions to the standard	
+++ b/manual/Extensions to the standard	
@@ -28,28 +28,22 @@ always present in a module, even without imports.
 
 Expands by selecting feature clauses. This form is allowed to appear in non-toplevel expressions.
 
-The following features are built-in and always available by default:
-{{chicken}}, {{srfi-0}}, {{srfi-2}}, {{srfi-6}}, {{srfi-8}}, {{srfi-9}},
-{{srfi-11}}, {{srfi-12}}, {{srfi-15}}, {{srfi-16}}, {{srfi-17}}, {{srfi-23}},
-{{srfi-26}}, {{srfi-28}}, {{srfi-30}}, {{srfi-31}}, {{srfi-39}}, {{srfi-46}},
-{{srfi-55}}, {{srfi-61}}, {{srfi-62}}, {{srfi-87}}, {{srfi-88}}.
+Predefined feature-identifiers are "situation" specific:
 
-There are also situation-specific feature identifiers: {{compiling}} during
-compilation, {{csi}} when running in the interpreter, and {{compiler-extension}}
-when running within the compiler.
+; compile : {{chicken}}, {{chicken-5}}, {{compiling}}, {{library}}, {{eval}}, {{extras}}, {{regex}}, {{srfi-0}}, {{srfi-2}}, {{srfi-4}}, {{srfi-6}}, {{srfi-8}}, {{srfi-9}}, {{srfi-10}}, {{srfi-11}}, {{srfi-12}}, {{srfi-15}}, {{srfi-16}}, {{srfi-17}}, {{srfi-23}}, {{srfi-26}}, {{srfi-28}}, {{srfi-30}}, {{srfi-31}}, {{srfi-39}}, {{srfi-55}}, {{srfi-61}}, {{srfi-62}}
 
-The symbols returned by the following procedures from
-[[Module (chicken platform)|(chicken platform)]] are also available
-as feature-identifiers in all situations: {{(machine-byte-order)}},
-{{(machine-type)}}, {{(software-type)}}, {{(software-version)}}. For
-example, the {{machine-type}} class of feature-identifiers include
-{{arm}}, {{alpha}}, {{mips}}, etc.
+; load : {{chicken}}, {{chicken-5}}, {{extras}}, {{srfi-0}}, {{srfi-2}}, {{srfi-6}}, {{srfi-8}}, {{srfi-9}}, {{srfi-10}}, {{srfi-12}}, {{srfi-17}}, {{srfi-23}}, {{srfi-28}}, {{srfi-30}}, {{srfi-39}}, {{srfi-55}}, {{srfi-61}}, {{srfi-62}}. {{library}} is implicit.
 
-Platform endianness is indicated by the {{little-endian}} and {{big-endian}}
-features.
+; eval : {{csi}}, {{chicken}}, {{chicken-5}}, {{extras}}, {{srfi-0}}, {{srfi-2}}, {{srfi-6}}, {{srfi-8}}, {{srfi-9}}, {{srfi-10}}, {{srfi-11}}, {{srfi-12}}, {{srfi-15}}, {{srfi-16}}, {{srfi-17}}, {{srfi-23}}, {{srfi-26}}, {{srfi-28}}, {{srfi-30}}, {{srfi-31}}, {{srfi-39}}, {{srfi-55}}, {{srfi-61}}, {{srfi-62}}. {{library}} is implicit.
 
-In addition the following feature-identifiers may exist: {{cross-chicken}},
-{{dload}}, {{gchooks}}, {{ptables}}, {{case-insensitive}}.
+Also, features of the form {{chicken-5.X}}, where {{X}} denotes the minor version, are available.
+
+The symbols returned by the following procedures from [[Module (chicken platform)|(chicken platform)]] are also available as feature-identifiers in all situations: {{(machine-byte-order)}}, {{(machine-type)}}, {{(software-type)}}, {{(software-version)}}. For example, the {{machine-type}} class of feature-identifiers include {{arm}},
+{{alpha}}, {{mips}}, etc.
+
+The [[Module (chicken platform)|(chicken platform)]] module also provides a function {{(features)}} that returns a list of all registered features.
+
+In addition the following feature-identifiers may exist: {{cross-chicken}}, {{dload}}, {{manyargs}}, {{ptables}}.
 
 For further information, see the documentation for
 [[http://srfi.schemers.org/srfi-0/srfi-0.html|SRFI-0]].
@@ -142,7 +136,7 @@ any whitespace characters:
  SYMBOL:
  :SYMBOL
 
-Syntax for keywords. Keywords are symbols that evaluate to themselves, and as such don't have to be quoted.  Either {{SYMBOL:}} or {{:SYMBOL}} is accepted, depending on the setting of the {{keyword-style}} parameter, but never both.  {{#:SYMBOL}} is always accepted.
+Syntax for keywords. Keywords are symbol-like objects that evaluate to themselves, and as such don't have to be quoted.  Either {{SYMBOL:}} or {{:SYMBOL}} is accepted, depending on the setting of the {{keyword-style}} parameter, but never both.  {{#:SYMBOL}} is always accepted.
 
 === Multiline String Constant
 
diff --git a/manual/Foreign type specifiers b/manual/Foreign type specifiers
index afa766dd..8221e048 100644
--- a/manual/Foreign type specifiers	
+++ b/manual/Foreign type specifiers	
@@ -72,7 +72,7 @@ prior to CHICKEN 4.7.2.
 Notes for 64-bit architectures:
 
 * C's {{int}} is 32 bits on most 64-bit systems
-([[http://en.wikipedia.org/wiki/64-bit#Specific_C-language_data_models|LP64]]),
+([[https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models|LP64]]),
 so {{int}} and {{int32}} are functionally (if not semantically) equivalent.
 
 * The fixnum type is larger than 32 bits and consequently the entire
@@ -86,33 +86,26 @@ should use (unsigned) {{integer}} or {{integer32}}.
 <type>integer32</type><br>
 <type>unsigned-integer32</type><br>
 
-A fixnum or integral flonum, mapping to {{int}} or {{int32_t}} or
+A fixnum or bignum, mapping to {{int}} or {{int32_t}} or
 their unsigned variants.  When outside of fixnum range the value will
-overflow into a flonum.
+overflow into a bignum. Prior to CHICKEN 5, the value would overflow
+into a flonum.
 
 C's {{int}} is 32 bits on most 64-bit systems
-([[http://en.wikipedia.org/wiki/64-bit#Specific_C-language_data_models|LP64]]),
+([[https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models|LP64]]),
 so {{integer}} and {{integer32}} are functionally (if not semantically) equivalent.
 
 <type>integer64</type><br>
 <type>unsigned-integer64</type>
 
-A fixnum or integral flonum, mapping to {{int64_t}} or {{uint64_t}}.
-When outside of fixnum range the value will overflow into a flonum.
-
-On a 32-bit system, the effective precision of this type is 52 bits
-plus the sign bit, as it is stored in a {{double}} flonum.  (In other
-words, numbers between 2^52 and 2^64-1 can be represented but there are
-gaps in the sequence; the same goes for their negative counterparts.)  
-On a 64-bit system the range is 62 bits plus the sign bit, the
-maximum range of a fixnum.  (Numbers between 2^62 and 2^64-1 have gaps.)
-
-{{unsigned-integer64}} is not valid as a return type until CHICKEN 4.6.4.
+A fixnum or bignum, mapping to {{int64_t}} or {{uint64_t}}.
+When outside of fixnum range the value will overflow into a bignum.
+Prior to CHICKEN 5, the value would overflow into a flonum.
 
 <type>long</type><br>
 <type>unsigned-long</type>
 
-Either a fixnum or a flonum in the range of an (unsigned) machine ''long''.
+A fixnum or bignum, mapping to {{long}} or {{unsigned long}}.
 Similar to {{integer32}} on 32-bit systems or {{integer64}} on 64-bit.
 
 <type>size_t</type>
@@ -243,7 +236,7 @@ e.g. via {{(address->pointer 0)}}.)
 <type>pointer-vector</type><br>
 <type>nonnull-pointer-vector</type>
 
-A vector of foreign pointer objects; see [[Module (chicken memory)#pointer-vectors|Pointer vectors]].
+A vector of foreign pointer objects; see [[/man/5/Module (chicken memory)#pointer-vectors|Pointer vectors]].
 Permitted only as an argument type, not as return type.  This type was introduced in CHICKEN 4.6.3.
 
 A pointer vector contains a C array of void pointers, and the argument
diff --git a/manual/Module (chicken base) b/manual/Module (chicken base)
index 11d9c441..0522f851 100644
--- a/manual/Module (chicken base)	
+++ b/manual/Module (chicken base)	
@@ -511,7 +511,7 @@ between each sublist. {{LIST}} defaults to the empty list.
 <procedure>(rassoc KEY LIST [TEST])</procedure>
 
 Similar to {{assoc}}, but compares {{KEY}} with the {{cdr}} of each pair in {{LIST}} using
-{{TEST}} as the comparison procedures (which defaults to {{eqv?}}.
+{{TEST}} as the comparison procedures (which defaults to {{eqv?}}).
 
 
 ==== tail?
diff --git a/manual/Module (chicken file posix) b/manual/Module (chicken file posix)
index 14e95132..dcdd523c 100644
--- a/manual/Module (chicken file posix)	
+++ b/manual/Module (chicken file posix)	
@@ -532,7 +532,7 @@ given and not false, then it should specify the number of seconds after
 which the wait is to be aborted (the value may be a floating point
 number). This procedure returns two values:
 the lists of file-descriptors ready for input and output, respectively.
-{{READFDLIST}} and '''WRITEFDLIST''' may also by file-descriptors
+{{READFDLIST}} and {{WRITEFDLIST}} may also be file-descriptors
 instead of lists.  In this case the returned values are booleans
 indicating whether input/output is ready by {{#t}} or {{#f}}
 otherwise.  You can also pass {{#f}} as {{READFDLIST}} or
diff --git a/manual/Module (chicken foreign) b/manual/Module (chicken foreign)
index f3fcbc49..3a6afdd1 100644
--- a/manual/Module (chicken foreign)	
+++ b/manual/Module (chicken foreign)	
@@ -10,8 +10,8 @@ operating-system specific functionality.
 Note that this interface is source-based, since CHICKEN translates
 Scheme code to C. It is not binary, as in many other Scheme implementations.
 
-Several special forms of this interface refer to ''foreign type specifiers'', 
-consult the [[Foreign type specifiers|relevant chapter]] of this manual for
+Several special forms of this interface refer to ''foreign type specifiers'',
+consult the [[/manual/Foreign type specifiers|relevant chapter]] of this manual for
 more information.
 
 
@@ -116,7 +116,7 @@ See that {{define-foreign-variable}} will not generate C declarations
 or memory allocation code; use it to include references to variables
 in external C code. To actually create Scheme variables visible from C,
 use {{define-external}} (see the Manual section on
-[[Callbacks]]).
+[[/manual/Module (chicken foreign)#Callbacks|Callbacks]]).
 For example, the following code:
 <enscript lang="scheme">
 (import (chicken foreign))
@@ -165,7 +165,7 @@ commences in the calling code.
 <macro>(foreign-safe-lambda RETURNTYPE NAME ARGTYPE ...)</macro>
 
 This is similar to {{foreign-lambda}}, but also allows the called
-function to call Scheme functions. See [[Callbacks]].
+function to call Scheme functions. See [[/manual/Module (chicken foreign)#Callbacks|Callbacks]].
 
 
 === foreign-safe-lambda*
@@ -173,7 +173,8 @@ function to call Scheme functions. See [[Callbacks]].
 <macro>(foreign-safe-lambda* RETURNTYPE ((ARGTYPE VARIABLE)...) STRING ...)</macro>
 
 This is similar to {{foreign-lambda*}}, but also allows the called
-function to call Scheme functions and allocate Scheme data-objects. See [[Callbacks]].
+function to call Scheme functions and allocate Scheme data-objects.
+See [[/manual/Module (chicken foreign)#Callbacks|Callbacks]].
 
 
 
@@ -247,13 +248,17 @@ is an optional qualifier for the foreign procedure definition, like
 (define-external (foo (c-string x)) int (string-length x))
 </enscript>
 
+You can use [[/manual/Module (chicken foreign)#location|{{location}}]]
+to get a pointer to the defined C function, which can be passed to a
+C function that takes a callback function pointer argument, for example.
+
 The second form of {{define-external}} can be used to define
 variables that are accessible from foreign code. It declares
 a global variable named by the symbol {{NAME}} that
 has the type {{TYPE}}. {{INIT}} can be an arbitrary
 expression that is used to initialize the variable. {{NAME}} is
 accessible from Scheme just like any other foreign variable defined by
-{{define-foreign-variable}}.  
+{{define-foreign-variable}}.
 
 <enscript highlight=scheme>
 (define-external foo int 42)
@@ -326,24 +331,24 @@ Defines a lexically bound location.
 <read>#$</read>
 
 This form returns a pointer object
-that contains the address of the variable {{NAME}}. 
+that contains the address of the variable {{NAME}}.
 If the argument to {{location}} is not a location defined by {{define-location}},
 {{define-external}} or {{let-location}}, then
 
  (location X)
 
-is essentially equivalent to 
+is essentially equivalent to
 
  (make-locative X)
 
-(See the [[Module (chicken locative)|manual section on locatives]] for more
+(See the [[/manual/Module (chicken locative)|manual section on locatives]] for more
 information about locatives)
 
 Note that {{(location X)}} may be abbreviated as {{#$X}}.
 
 <enscript highlight=scheme>
 (define-external foo int)
-((foreign-lambda* void (((c-pointer int) ip)) "*ip = 123;") 
+((foreign-lambda* void (((c-pointer int) ip)) "*ip = 123;")
   (location foo))
 foo                                                                    ==> 123
 </enscript>
@@ -364,7 +369,7 @@ returns more than one result value:
     (print "i=" i ", f=" f) ) )
 </enscript>
 
-See [[/location-and-c-string-star|location and c-string*]] 
+See [[/location-and-c-string-star|location and c-string*]]
 for a tip on returning a {{c-string*}} type.
 
 {{location}} returns a value of type {{c-pointer}}, when given
diff --git a/manual/Module (chicken gc) b/manual/Module (chicken gc)
index c20613da..344f4064 100644
--- a/manual/Module (chicken gc)	
+++ b/manual/Module (chicken gc)	
@@ -39,15 +39,15 @@ because CHICKEN uses a copying semi-space collector.
 
 Registers a procedure of one argument {{PROC}}, that will be
 called as soon as the non-immediate data object {{X}} is about to
-be garbage-collected (with that object as its argument). Note that
+be garbage-collected (with that object as its argument).
 This procedure returns {{X}}.
 
-Finalizers installed using {{set-finalizer!}} are invoked asynchronously, 
+Finalizers installed using {{set-finalizer!}} are invoked asynchronously,
 in the thread that happens to be currently running.
 Finalizers for data that has become garbage
 are called on normal program exit. Finalizers are not run on
 abnormal program exit. A normal program exit does not run finalizers
-that are still reachable from global data. 
+that are still reachable from global data.
 
 Multiple finalizers can be registered for the same object. The order
 in which the finalizers run is undefined. Execution of finalizers
@@ -67,7 +67,7 @@ invalid state.
 
 <procedure>(make-finalizer OBJECT ...)</procedure>
 
-Registers the set of non-immediate argument objects for finalization and 
+Registers the set of non-immediate argument objects for finalization and
 returns a procedure of zero or one arguments. Invoking this procedure
 will return the first object from the set that
 is not referenced from any other globally reachable data and can be
diff --git a/manual/Module (chicken locative) b/manual/Module (chicken locative)
index 807673c7..9c26a2a3 100644
--- a/manual/Module (chicken locative)	
+++ b/manual/Module (chicken locative)	
@@ -68,15 +68,6 @@ Returns the object that contains the element referred to by {{LOC}} or
 
  (locative->object (make-locative "abc" 1)) ==> "abc"
 
-
-=== locative-index
-
-<procedure>(locative-index LOC)</procedure>
-
-Returns the index (position) of the element that {{LOC}} refers to.
-
- (locative-index (make-locative "abcde" 3)) ==> 3
-
 ---
 Previous: [[Module (chicken load)]]
 
diff --git a/manual/Module (chicken platform) b/manual/Module (chicken platform)
index 7be85317..47566d6b 100644
--- a/manual/Module (chicken platform)	
+++ b/manual/Module (chicken platform)	
@@ -157,11 +157,17 @@ process is currently running, which is one of the following:
 
 === Feature identifiers
 
+
 CHICKEN maintains a global list of ''features'' naming functionality available
 in the current system. Additionally the {{cond-expand}} form accesses this
 feature list to infer what features are provided. Predefined features are
 {{chicken}}, and the SRFIs (Scheme Request For Implementation) provided by the
-base system. Refer to {{cond-expand}} for a full list of predefined identifiers.
+base system: {{srfi-23, srfi-30, srfi-39}}. If the {{eval}} unit
+is used (the default), the features {{srfi-0, srfi-2, srfi-6, srfi-8, srfi-9}}
+and {{srfi-10}} are defined. When compiling code (during compile-time) the
+feature {{compiling}} is registered. When evaluating code in the interpreter
+(csi), the feature {{csi}} is registered.
+
 
 ==== features
 
diff --git a/manual/Module (chicken port) b/manual/Module (chicken port)
index ba8c268f..0dcab42d 100644
--- a/manual/Module (chicken port)	
+++ b/manual/Module (chicken port)	
@@ -52,6 +52,7 @@ Sets the buffering-mode for the file associated with {{PORT}} to
 {{#:line}} or {{#:none}}. If {{BUFSIZE}} is specified it
 determines the size of the buffer to be used (if any).
 
+This procedure doesn't work on custom ports, such as those created with {{make-input-port}} or {{make-output-port}}.
 
 === Terminal ports
 
diff --git a/manual/Module (chicken read-syntax) b/manual/Module (chicken read-syntax)
index a5fc716a..00429878 100644
--- a/manual/Module (chicken read-syntax)	
+++ b/manual/Module (chicken read-syntax)	
@@ -6,8 +6,6 @@
 This module provides procedures which can be used to extend the reader
 with custom read syntax.
 
-When loaded, the feature identifier {{srfi-10}} is defined.
-
 === define-reader-ctor
 
 <procedure>(define-reader-ctor SYMBOL PROC)</procedure>
diff --git a/manual/Module (chicken time) b/manual/Module (chicken time)
index 4422ce64..c7a924fc 100644
--- a/manual/Module (chicken time)	
+++ b/manual/Module (chicken time)	
@@ -16,7 +16,7 @@ For representation and manipulation of calendar time, see
 Returns the used CPU time of the current process in milliseconds as
 two values: the time spent in user code, and the time spent in system
 code. On platforms where user and system time can not be differentiated,
-system time will be always be 0.
+system time is always 0.
 
 
 ==== current-process-milliseconds
diff --git a/manual/Module r4rs b/manual/Module r4rs
index 3b7c5e5b..9e9987f2 100644
--- a/manual/Module r4rs	
+++ b/manual/Module r4rs	
@@ -6,7 +6,7 @@
 This module provides the subset of procedures and macros from the
 {{scheme}} module which are from the R4RS standard.
 
-This is every procedure and macro from [[scheme|Module scheme]] except for
+This is every procedure and macro from [[/manual/Module scheme|Module scheme]] except for
 {{dynamic-wind}}, {{eval}}, {{call-with-values}} and {{values}}.
 
 ---
diff --git a/manual/Module scheme b/manual/Module scheme
index a35e6e24..62976614 100644
--- a/manual/Module scheme	
+++ b/manual/Module scheme	
@@ -277,7 +277,7 @@ in this section into the primitive constructs described in the
 previous section.  This does not necessarily mean that's exactly how
 it's implemented in CHICKEN.
 
-==== Conditionals
+==== Derived Conditionals
 
 <macro>(cond <clause[1]> <clause[2]> ...)</macro><br>
 
diff --git a/manual/Module srfi-4 b/manual/Module srfi-4
index 2f72ac0b..fd6b9835 100644
--- a/manual/Module srfi-4	
+++ b/manual/Module srfi-4	
@@ -245,8 +245,9 @@ Return a newly-allocated SRFI-4 homogeneous number vector of length N.
 
 If the optional fill VALUE is specified, it specifies the initial
 value for each slot in the vector.  If not, the content of the vector
-is unspecified but individual elements of the vector are guaranteed to
-be in the range of values permitted for that type of vector.
+is unspecified as the underlying memory is uninitialized.
+Particularly this means that entries in {{f32vector}} or {{f64vector}}
+may be i.e. a NaN-value.
 
 The type of the fill value must be compatible with the elements of the
 vector datatype.  It is an error if otherwise -- for example, if an
Trap