I made some changes to ice-9 slib, * slib.scm (*features*): Remove array and array-for-each, core definitions are insufficient for latest slib. (t, nil): New constants slib says are supposed to exist. (call-with-open-ports, browse-url): New functions for latest slib. Implementations taken from Template.scm (public domain). (open-file): Extend core definition to accept symbols for the mode, required by latest slib. (delete-file): Replace core definition with version returning #t/#f as per slib spec. (system): Mark as #:replace to suppress override warning, use new style "(@ (guile) system)" to call core function. This will be for 1.6 too, because otherwise slib 3a1 is fairly broken. Just need to adapt the open-file and delete-file implementations to 1.6. Words in the manual about the overridden bits: Note that the following Guile core functions are overridden by `(ice-9 slib)', to implement SLIB specified semantics. `delete-file' Returns `#t' for success or `#f' for failure (*note Input/Output: (slib)Input/Output.), as opposed to the Guile core version unspecified for success and throwing an error for failure (*note File System::). `provided?' Accepts a feature specification containing `and' and `or' forms combining symbols (*note Feature: (slib)Feature.), as opposed to the Guile core taking only plain symbols (*note Feature Manipulation::). `open-file' Takes a symbol `r', `rb', `w' or `wb' for the open mode (*note Input/Output: (slib)Input/Output.), as opposed to the Guile core version taking a string (*note File Ports::). `system' Returns a plain exit code 0 to 255 (*note System Interface: (slib)System Interface.), as opposed to the Guile core version returning a wait status that must be examined with `status:exit-val' etc (*note Processes::).