~ chicken-core (chicken-5) 06cedbbaba2471911ce8ecb096aa9d0c40ec2dd4
commit 06cedbbaba2471911ce8ecb096aa9d0c40ec2dd4 Author: Peter Bex <peter@more-magic.net> AuthorDate: Sun Jan 24 15:31:02 2016 +0100 Commit: Peter Bex <peter@more-magic.net> CommitDate: Sun Jan 24 15:31:02 2016 +0100 Update manual with latest changes from the wiki diff --git a/manual/C interface b/manual/C interface index 6e476a85..3421875d 100644 --- a/manual/C interface +++ b/manual/C interface @@ -331,6 +331,10 @@ accessor macros instead). [C function] C_word C_string2 (C_word **ptr, char *zero_terminated_string) +===== C_intern + + [C function] C_word C_intern (C_word **ptr, int length, char *string) + ===== C_intern2 [C function] C_word C_intern2 (C_word **ptr, char *zero_terminated_string) diff --git a/manual/Embedding b/manual/Embedding index 2b688a75..0d0de015 100644 --- a/manual/Embedding +++ b/manual/Embedding @@ -4,10 +4,10 @@ == Embedding -Compiled Scheme files can be linked with C code, provided the Scheme code was compiled -in ''embedded'' mode by passing {{-DC_EMBEDDED}} to the C compiler (this will -disable generation of a {{main()}} function). {{csc}} will do this, when given -the {{-embedded}} option. Alternatively pass {{-embedded}} to {{csc}}. +Compiled Scheme files can be linked with C code, provided the Scheme +code was compiled in ''embedded'' mode by passing {{-DC_EMBEDDED}} to +the C compiler (this will disable generation of a {{main()}} +function). {{csc}} will do this, when given the {{-embedded}} option. The following C API is available: diff --git a/manual/Getting started b/manual/Getting started index f0e671b1..585e8ce3 100644 --- a/manual/Getting started +++ b/manual/Getting started @@ -28,8 +28,8 @@ Lisp dialects, Scheme features In contrast to Common Lisp, Scheme is very minimal, and tries to include only those features absolutely necessary in programming. In -contrast to Emacs Lisp, Scheme is not anchored into any one program -(Emacs), and has a somewhat more modern language design. +contrast to Emacs Lisp, Scheme is not anchored into a single program +(Emacs), and has a more modern language design. Scheme is defined in a document called ''The Revised^5 Report on the Algorithmic Language Scheme'', or ''R5RS'' for short. (Yes, it really @@ -168,6 +168,9 @@ communication. For other topic-specific mailing lists (e.g., announcements, security) and discussion groups, see [[http://wiki.call-cc.org/discussion-groups|http://wiki.call-cc.org/discussion-groups]]. +There is also an IRC channel ({{#chicken}}) on +[[http://freenode.net|Freenode]]. + === Installing CHICKEN CHICKEN is available as C sources. Refer to the @@ -401,7 +404,7 @@ organize your {{PATH}} according to the task at hand.) Compiled code can be intermixed with interpreted code on systems that support dynamic loading, which includes modern versions of *BSD, -Linux, Mac OS X, Solaris, and Windows. +Linux, Mac OS X, Solaris, and Windows. We can compile our factorial function, producing a file named {{fact.so}} (''shared object'' in Linux-ese, the same file type is diff --git a/manual/The User's Manual b/manual/The User's Manual index 8da51a26..825c0091 100644 --- a/manual/The User's Manual +++ b/manual/The User's Manual @@ -3,7 +3,7 @@ == The CHICKEN User's Manual <nowiki> -<img style="float:right; margin-left:1em;" src="http://wiki.call-cc.org/chicken-small.png" alt="Stylized picture of a chicken" /> +<img id="big-logo" style="float:right; margin-left:1em;" src="http://wiki.call-cc.org/chicken-small.png" alt="Stylized picture of a chicken"/> </nowiki> This is the manual for CHICKEN Scheme, version 4.10.1 diff --git a/manual/Unit posix b/manual/Unit posix index 92ceac1d..b3a8f59f 100644 --- a/manual/Unit posix +++ b/manual/Unit posix @@ -31,7 +31,7 @@ Operations used with {{file-control}}. <constant>fileno/stdout</constant><br> <constant>fileno/stderr</constant> -Standard I/O file descriptor numbers, used with procedures +Standard I/O file descriptor numbers, used with procedures such as {{open-input-file*}} which take file descriptors. ==== Open flags @@ -52,8 +52,8 @@ such as {{open-input-file*}} which take file descriptors. <constant>open/binary</constant><br> <constant>open/text</constant> -Open flags used with the {{file-open}} procedure. {{open/read}} is a -convenience synonym for {{open/rdonly}}, as is {{open/write}} +Open flags used with the {{file-open}} procedure. {{open/read}} is a +convenience synonym for {{open/rdonly}}, as is {{open/write}} for {{open/wronly}}. ==== Permission bits @@ -538,7 +538,7 @@ not followed: character-device block-device -Note that not all types are supported on every platform. +Note that not all types are supported on every platform. If {{ERROR}} is given and true, {{file-type}} signals an error if the file does not exist. @@ -551,7 +551,7 @@ error if the file does not exist. <procedure>(block-device? FILE)</procedure><br> <procedure>(socket? FILE)</procedure> -These procedures return {{#t}} if {{FILE}} given is of the +These procedures return {{#t}} if {{FILE}} given is of the appropriate type. {{FILE}} may be a filename, a file-descriptor or a port object. Note that these operations follow symbolic links. If the file does not exist, {{#f}} is returned. @@ -645,14 +645,14 @@ Get or set the process group ID of the process specified by {{PID}}. Replaces the running process with a new process image from the program stored at {{PATHNAME}}, using the C library function {{execvp(3)}}. -If the optional argument {{ARGUMENT-LIST}} is given, then it should +If the optional argument {{ARGUMENT-LIST}} is given, then it should contain a list of strings which are passed as arguments to the subprocess. -If the optional argument {{ENVIRONMENT-LIST}} is supplied, then the library +If the optional argument {{ENVIRONMENT-LIST}} is supplied, then the library function {{execve(2)}} is used, and the environment passed in {{ENVIRONMENT-LIST}} (which should be of the form {{("<NAME>=<VALUE>" ...)}} is given to the invoked process. Note that {{execvp(3)}} respects the current setting of the {{PATH}} environment variable while {{execve(3)}} does not. - + This procedure never returns; it either replaces the process with a new one or it raises an exception in case something went wrong executing the program. @@ -1038,7 +1038,7 @@ nothing happens. === Memory mapped I/O Memory mapped I/O takes the contents of a file descriptor and places them in memory. - + ==== memory-mapped-file? <procedure>(memory-mapped-file? X)</procedure> @@ -1250,19 +1250,24 @@ These variables contain error codes as returned by {{errno}}. Recursively traverses the contents of {{DIRECTORY}} (which should be a string) and invokes the procedure {{action}} for all files in which -the procedure {{test}} is true. {{test}} may be a procedure of one -argument or an irregex object, regex string or SRE expression that -will be matched with a full pathname using {{irregex-match}}. +the procedure {{test}} is true. + +{{test}} may be a procedure of one argument or an irregex object, +regex string or SRE expression that will be matched with a full +pathname using {{irregex-match}}. {{test}} defaults to {{(constantly +#t)}}. + + {{action}} should be a procedure of two arguments: the currently encountered file and the result of the previous invocation of {{action}}, or, if this is the first invocation, the value of -{{seed}}. {{test}} defaults to {{(constantly #t)}}, {{action}} -defaults to {{cons}}, {{seed}} defaults to {{()}}. {{limit}} should -be a procedure of one argument that is called for each nested -directory and which should return true, if that directory is to be -traversed recursively. {{limit}} may also be an exact integer that -gives the maximum recursion depth. For example, a depth of {{0}} means -that only files in the top-level, specified directory are to be +{{seed}}. {{action}} defaults to {{cons}}, {{seed}} defaults to {{()}}. + +{{limit}} should be a procedure of one argument that is called for +each nested directory and which should return true, if that directory +is to be traversed recursively. {{limit}} may also be an exact integer +that gives the maximum recursion depth. For example, a depth of {{0}} +means that only files in the top-level, specified directory are to be traversed. In this case, all nested directories are ignored. {{limit}} may also be {{#f}} (the default), which is equivalent to {{(constantly #t)}}. @@ -1283,7 +1288,7 @@ has a different signature: (find-files DIRECTORY [TEST [ACTION [SEED [LIMIT]]]]) The old signature was supported until CHICKEN 4.7.3 for compatibility reasons, -at which point it became invalid. The optional arguments are ignored +at which point it became invalid. The optional arguments are ignored and use their default values, and no warning is issued. One symptom is that your {{TEST}} does not work, returning every file. @@ -1519,4 +1524,4 @@ Returns: ---- Previous: [[Unit srfi-69]] -Next: [[Unit utils]] +Next: [[Unit utils]] \ No newline at end of file diff --git a/manual/faq b/manual/faq index 6310ef2e..fb4c4a09 100644 --- a/manual/faq +++ b/manual/faq @@ -98,7 +98,12 @@ protocol. Such a design would make native threads in CHICKEN essentially equivalent to Unix processes and shared memory. For a different approach to concurrency, please see the -[[/egg/mpi|mpi]] egg. +[[/egg/mpi|mpi]] or +[[/egg/concurrent-native-callbacks|concurrent-native-callbacks]] egg. + +[[http://www.stylewarning.com/blog/about|Robert Smith]] has put +[[http://www.stylewarning.com/blog/bounties|a bounty]] on a +release-quality implementation of native threads. ==== Does CHICKEN support Unicode strings?Trap