mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-02 21:10:27 +02:00
*** empty log message ***
This commit is contained in:
parent
f4be1689e1
commit
8cd57bd061
2 changed files with 129 additions and 10 deletions
135
NEWS
135
NEWS
|
@ -126,6 +126,19 @@ file.
|
|||
|
||||
* Changes to Scheme functions and syntax
|
||||
|
||||
** Syntax-case, present in the snapshots, is absent from this release.
|
||||
|
||||
syntax-case is a powerful hygenic macro-expansion facility designed
|
||||
and implemented by R. Kent Dybvig, Oscar Waddell, Bob Hieb, Carl
|
||||
Bruggeman at Indiana University. Some Guile snapshots included this
|
||||
macro expander as a Guile module, but we cannot distribute it, because
|
||||
the authors have not assigned the code's copyright to the Free
|
||||
Software Foundation.
|
||||
|
||||
However, it would be fine to distribute this as a separate package,
|
||||
which users can download and install separately. I hope someone
|
||||
produces such a package.
|
||||
|
||||
** Multi-byte strings have been removed, as have multi-byte and wide
|
||||
ports. We felt that these were the wrong approach to
|
||||
internationalization support.
|
||||
|
@ -142,8 +155,10 @@ READLINE; you need to package up your prompt as a string, pass it to
|
|||
the function, and let READLINE print the prompt itself. This is
|
||||
because READLINE needs to know the prompt's screen width.
|
||||
|
||||
For Guile to provide this function, you must have the readline library
|
||||
installed on your system.
|
||||
For Guile to provide this function, you must have the readline
|
||||
library, version 2.1 or later, installed on your system. Readline is
|
||||
available via anonymous FTP from prep.ai.mit.edu in pub/gnu, or from
|
||||
any GNU mirror site.
|
||||
|
||||
See also ADD-HISTORY function.
|
||||
|
||||
|
@ -152,6 +167,17 @@ Add STRING as the most recent line in the history used by the READLINE
|
|||
command. READLINE does not add lines to the history itself; you must
|
||||
call ADD-HISTORY to make previous input available to the user.
|
||||
|
||||
** The behavior of the read-line function has changed.
|
||||
|
||||
This function now uses standard C library functions to read the line,
|
||||
for speed. This means that it doesn not respect the value of
|
||||
scm-line-incrementors; it assumes that lines are delimited with
|
||||
#\newline.
|
||||
|
||||
(Note that this is read-line, the function that reads a line of text
|
||||
from a port, not readline, the function that reads a line from a
|
||||
terminal, providing full editing capabilities.)
|
||||
|
||||
** New module (ice-9 getopt-gnu-style): Parse command-line arguments.
|
||||
|
||||
This module provides some simple argument parsing. It exports one
|
||||
|
@ -180,7 +206,89 @@ Function: getopt-gnu-style ARG-LS
|
|||
This function does not parse normal single-character switches.
|
||||
You will need to parse them out of the `rest' list yourself.
|
||||
|
||||
** macro-eval! is removed. Use local-eval instead.
|
||||
** The read syntax for byte vectors and short vectors has changed.
|
||||
|
||||
Instead of #bytes(...), write #y(...).
|
||||
|
||||
Instead of #short(...), write #h(...).
|
||||
|
||||
This may seem nutty, but, like the other uniform vectors, byte vectors
|
||||
and short vectors want to have the same print and read syntax (and,
|
||||
more basic, want to have read syntax!). Changing the read syntax to
|
||||
use multiple characters after the hash sign breaks with the
|
||||
conventions used in R5RS and the conventions used for the other
|
||||
uniform vectors. It also introduces complexity in the current reader,
|
||||
both on the C and Scheme levels. (The Right solution is probably to
|
||||
change the syntax and prototypes for uniform vectors entirely.)
|
||||
|
||||
|
||||
** The new module (ice-9 session) provides useful interactive functions.
|
||||
|
||||
*** New procedure: (apropos REGEXP OPTION ...)
|
||||
|
||||
Display a list of top-level variables whose names match REGEXP, and
|
||||
the modules they are imported from. Each OPTION should be one of the
|
||||
following symbols:
|
||||
|
||||
value --- Show the value of each matching variable.
|
||||
shadow --- Show bindings shadowed by subsequently imported modules.
|
||||
full --- Same as both `shadow' and `value'.
|
||||
|
||||
For example:
|
||||
|
||||
guile> (apropos "trace" 'full)
|
||||
debug: trace #<procedure trace args>
|
||||
debug: untrace #<procedure untrace args>
|
||||
the-scm-module: display-backtrace #<compiled-closure #<primitive-procedure gsubr-apply>>
|
||||
the-scm-module: before-backtrace-hook ()
|
||||
the-scm-module: backtrace #<primitive-procedure backtrace>
|
||||
the-scm-module: after-backtrace-hook ()
|
||||
the-scm-module: has-shown-backtrace-hint? #f
|
||||
guile>
|
||||
|
||||
** There are new functions and syntax for working with macros.
|
||||
|
||||
Guile implements macros as a special object type. Any variable whose
|
||||
top-level binding is a macro object acts as a macro. The macro object
|
||||
specifies how the expression should be transformed before evaluation.
|
||||
|
||||
*** Macro objects now print in a reasonable way, resembling procedures.
|
||||
|
||||
*** New function: (macro? OBJ)
|
||||
True iff OBJ is a macro object.
|
||||
|
||||
*** New function: (primitive-macro? OBJ)
|
||||
Like (macro? OBJ), but true only if OBJ is one of the Guile primitive
|
||||
macro transformers, implemented in eval.c rather than Scheme code.
|
||||
|
||||
*** New function: (macro-type OBJ)
|
||||
Return a value indicating what kind of macro OBJ is. Possible return
|
||||
values are:
|
||||
|
||||
The symbol `syntax' --- a macro created by procedure->syntax.
|
||||
The symbol `macro' --- a macro created by procedure->macro.
|
||||
The symbol `macro!' --- a macro created by procedure->memoizing-macro.
|
||||
The boolean #f --- if OBJ is not a macro object.
|
||||
|
||||
*** New function: (macro-name MACRO)
|
||||
Return the name of the macro object MACRO's procedure, as returned by
|
||||
procedure-name.
|
||||
|
||||
*** New function: (macro-transformer MACRO)
|
||||
Return the transformer procedure for MACRO.
|
||||
|
||||
*** New syntax: (use-syntax MODULE ... TRANSFORMER)
|
||||
|
||||
Specify a new macro expander to use in the current module. Each
|
||||
MODULE is a module name, with the same meaning as in the `use-modules'
|
||||
form; each named module's exported bindings are added to the current
|
||||
top-level environment. TRANSFORMER is an expression evaluated in the
|
||||
resulting environment which must yield a procedure to use as the
|
||||
module's eval transformer: every expression evaluated in this module
|
||||
is passed to this function, and the result passed to the Guile
|
||||
interpreter.
|
||||
|
||||
*** macro-eval! is removed. Use local-eval instead.
|
||||
|
||||
** Some magic has been added to the printer to better handle user
|
||||
written printing routines (like record printers, closure printers).
|
||||
|
@ -192,7 +300,7 @@ passed to the builtin printing routines (display, write, etc) to
|
|||
properly continue the print chain.
|
||||
|
||||
We didn't want to change all existing print code so that it
|
||||
explicitely passes thru a print state in addition to a port. Instead,
|
||||
explicitly passes thru a print state in addition to a port. Instead,
|
||||
we extented the possible values that the builtin printing routines
|
||||
accept as a `port'. In addition to a normal port, they now also take
|
||||
a pair of a normal port and a print-state. Printing will go to the
|
||||
|
@ -450,6 +558,9 @@ This syntax will be removed from Guile in the near future.
|
|||
To disable the warning message, set the GUILE_HUSH environment
|
||||
variable to any non-empty value.
|
||||
|
||||
** The newline character now prints as `#\newline', following the
|
||||
normal Scheme notation, not `#\nl'.
|
||||
|
||||
* Changes to the gh_ interface
|
||||
|
||||
** The gh_enter function now takes care of loading the Guile startup files.
|
||||
|
@ -629,6 +740,18 @@ from Erick Gallesio's STk.
|
|||
This means that the type codes scm_tc7_mb_string and
|
||||
scm_tc7_mb_substring has been removed.
|
||||
|
||||
** scm_gen_putc, scm_gen_puts, scm_gen_write, and scm_gen_getc have changed.
|
||||
|
||||
Since we no longer support multi-byte strings, these I/O functions
|
||||
have been simplified, and renamed. Here are their old names, and
|
||||
their new names and arguments:
|
||||
|
||||
scm_gen_putc -> void scm_putc (int c, SCM port);
|
||||
scm_gen_puts -> void scm_puts (char *s, SCM port);
|
||||
scm_gen_write -> void scm_lfwrite (char *ptr, scm_sizet size, SCM port);
|
||||
scm_gen_getc -> void scm_getc (SCM port);
|
||||
|
||||
|
||||
** The macros SCM_TYP7D and SCM_TYP7SD has been removed.
|
||||
|
||||
** The macro SCM_TYP7S has taken the role of the old SCM_TYP7D
|
||||
|
@ -636,10 +759,6 @@ scm_tc7_mb_substring has been removed.
|
|||
SCM_TYP7S now masks away the bit which distinguishes substrings from
|
||||
strings.
|
||||
|
||||
** All genio functions changed names and interfaces; new functions are
|
||||
scm_putc, scm_puts, scm_lfwrite, scm_getc, scm_ungetc, and
|
||||
scm_do_read_line.
|
||||
|
||||
** scm_catch_body_t: Backward incompatible change!
|
||||
|
||||
Body functions to scm_internal_catch and friends do not any longer
|
||||
|
|
|
@ -1808,7 +1808,7 @@ Thu Sep 11 00:59:17 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
|
|||
|
||||
Wed Sep 10 20:52:18 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
|
||||
|
||||
* * eval.c (macro?, macro-type, macro-name, macro-transfomer): New
|
||||
* eval.c (macro?, macro-type, macro-name, macro-transformer): New
|
||||
procedures;
|
||||
(prinmacro): Removed. The code has been moved/merged into print.c
|
||||
in order to decrease code redundancy. We want macros to print in
|
||||
|
@ -1820,7 +1820,7 @@ Wed Sep 10 20:52:18 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
|
|||
scm_macro_transformer): New prototypes.
|
||||
(scm_tc16_macro): Declared.
|
||||
|
||||
* * print.c (scm_iprin1): Added code for printing of macros. Macros
|
||||
* print.c (scm_iprin1): Added code for printing of macros. Macros
|
||||
are now printed in a way equivalent to procedures.
|
||||
|
||||
Sat Sep 6 12:20:42 1997 Mikael Djurfeldt <mdj@kenneth>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue