- added descriptions of print-extended-identifiers to the user's guide

and release notes.  updated the release notes to account for a couple
  of other log entries.
    release_notes.stex,
    intro.stex, io.stex

original commit: 7d1bbdaaccc6640e1529fdbd8b40a8ff7012bee4
This commit is contained in:
dybvig 2016-08-22 23:34:32 -04:00
parent 0bd87e4c4d
commit c680147c5b
4 changed files with 106 additions and 12 deletions

7
LOG
View File

@ -301,7 +301,12 @@
syntax.ss
- added tests for the case and exclusive-cond syntax-error calls
4.ms, root-experr-compile-0-f-f-f
- added print-extended-identifier parameter. when #t, symbols like
- added print-extended-identifiers parameter. when #t, symbols like
1+ and +++ print without escapes.
priminfo.ss, print.ss,
6.ms
- added descriptions of print-extended-identifiers to the user's guide
and release notes. updated the release notes to account for a couple
of other log entries.
release_notes.stex,
intro.stex, io.stex

View File

@ -269,10 +269,13 @@ parameter \scheme{case-sensitive} has been set to \scheme{#f}.
The printer invoked by \scheme{write}, \scheme{put-datum},
\scheme{pretty-print}, and the \scheme{format} \scheme{~s}
option always prints standard Revised$^6$ Report objects
using the standard syntax.
For example, it prints symbols whose names require escaping using hex
scalar value escapes, not one of the other mechanisms supported by the
reader.
using the standard syntax, unless a different behavior is
requested via the setting of one of the print parameters.
For example, it prints symbols in the extended identifier syntax
of Chez Scheme described above using hex scalar value escapes,
unless the parameter
\index{\scheme{print-extended-identifiers}}\scheme{print-extended-identifiers} is set to
true.
Similarly, it does not print the explicit length or suppress
duplicate trailing elements unless the parameter
\index{\scheme{print-vector-length}}\scheme{print-vector-length} is set to

View File

@ -2789,7 +2789,7 @@ Character associations created by \scheme{char-name} are ignored by the
printer unless the parameter \scheme{print-char-name} is set to a true
value.
The reader recognizes character names established by \scheme{char-name}
except after the \scheme{#!r6rs}, which is implied within a library or
except after \scheme{#!r6rs}, which is implied within a library or
R6RS top-level program.
In the one-argument form, \var{obj} must be a symbol or character.
@ -3146,6 +3146,56 @@ common control structures, e.g., around \scheme{let} bindings and
(get-output-string p))) ;== "
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{print-extended-identifiers}{\categorythreadparameter}{print-extended-identifiers}
\listlibraries
\endentryheader
Chez Scheme extends the syntax of identifiers as described
Section~\ref{SECTINTROSYNTAX}, except within a set of forms prefixed by
\scheme{#!r6rs} (which is implied by in a library or top-level program).
When this parameter is set to a false (the default), identifiers in the
extended set are printed with hex scalar value escapes as necessary to
conform to the R6RS syntax for identifiers.
When this parameter is set to a a true value, identifiers in the
extended set are printed without the escapes.
Identifiers whose names fall outside of both syntaxes are printed with
the escapes regardless of the setting of this parameter.
For example:
\schemedisplay
(parameterize ([print-extended-identifiers #f])
(printf "~s\n~s\n"
'(1+ --- { } .xyz)
(string->symbol "123")))
\endschemedisplay
prints
\schemedisplay
(\x31;+ \x2D;-- \x7B; \x7D; \x2E;xyz)
\x31;23
\endschemedisplay
while
\schemedisplay
(parameterize ([print-extended-identifiers #t])
(printf "~s\n~s\n"
'(1+ --- { } .xyz)
(string->symbol "123")))
\endschemedisplay
prints
\schemedisplay
(1+ --- { } .xyz)
\x31;23
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{print-vector-length}{\categorythreadparameter}{print-vector-length}

View File

@ -58,6 +58,24 @@ Online versions of both books can be found at
%-----------------------------------------------------------------------------
\section{Functionality Changes}\label{section:functionality}
\subsection{Printing of non-standard (extended) identifiers (9.4.1)}
Chez Scheme extends the syntax of identifiers as described in the
introduction to the Chez Scheme User's Guide, except within forms prefixed
by \scheme{#!r6rs}, which is implied by in a library or top-level program.
Prior to Version~9.4.1, the printer always printed such identifiers using
hex scalar value escapes as necessary to render them with valid R6RS identifier syntax.
When the new parameter \scheme{print-extended-identifiers} is set
to \scheme{#t}, these identifiers are printed without escapes, e.g.,
\scheme{1+} prints as \scheme{1+} rather than as \scheme{\x31;+}.
The default value of this parameter is \scheme{#f}.
\subsection{Expression-editor Unicode support (9.4.1)}
The expression editor now supports Unicode characters under Linux and MacOS~X
except that combining characters are not treated correctly for
line-wrapping.
\subsection{Extensions to whole-program, whole-library optimization (9.3.1, 9.3.4)}
\scheme{compile-whole-program} now supports incomplete
@ -1428,7 +1446,26 @@ in fasl files does not generally make sense.
%-----------------------------------------------------------------------------
\section{Bug Fixes}\label{section:bugfixes}
\subsection{Compiler error: leaked or unexpected \protect\scheme{cpvalid-defer} form (9.4.1)}
\subsection{Incorrect code for certain nested \protect\scheme{if} patterns (9.4.1)}
A bug in the source optimizer that produced incorrect code for certain
nested \scheme{if} patterns has been fixed.
For example, the code generated for the following expression:
\schemedisplay
(if (if (if (if (zero? (a)) #f #t) (begin (b) #t) #f)
(c)
#f)
(x)
(y))
\endschemedisplay
inappropriately evaluated the subexpression \scheme{(b)} when the
subexpression \scheme{(a)} evaluates to 0 and not when \scheme{(a)}
evaluates to 1.
[This bug dated back to Version 9.0.]
\subsection{Leaked or unexpected \protect\scheme{cpvalid-defer} form (9.4.1)}
A bug in the pass of the compiler that inserts valid checks for
\scheme{letrec} and \scheme{letrec*} bindings has been fixed.
@ -1475,18 +1512,17 @@ zone-offset field.
\subsection{\protect\scheme{wchar} and \protect\scheme{wchar_t} record field types fail to inline in Windows (9.4)}
On Windows, the inliner has been fixed to handle \scheme{wchar} and
On Windows, the source optimizer has been fixed to handle \scheme{wchar} and
\scheme{wchar_t} record field types.
\subsection{path-related procedures cause invalid memory reference with non-string arguments in Windows (9.4)}
On Windows, the path-related procedures now raise an appropriate exception when the path argument is not a string.
\subsection{Internal mutex structure not always thread safe (9.4)}
\subsection{Mutex acquisition bug (9.4)}
The internal mutex structure now has its fields marked
\scheme{volatile} so that the C compiler does not reorder assignments
to these fields.
A bug in the handling of mutexes has been fixed.
The bug typically presented as a spurious ``recursively locked'' exception.
\subsection{\protect\scheme{dynamic-wind} mistakenly enabling interrupts (9.3.3)}