Merge branch 'master' of pltgit:plt
This commit is contained in:
commit
967fa41ad5
|
@ -203,7 +203,7 @@ initial values @racket[a], @racket[b], and @racket[c].}
|
|||
|
||||
@defproc[(lorenz1) void?]{
|
||||
|
||||
Calls @racket[lorenze] with good initial values.}
|
||||
Calls @racket[lorenz] with good initial values.}
|
||||
|
||||
@defproc[(peano [peano-size real?]) void?]{
|
||||
Draws the @as-index{Peano space-filling curve}.
|
||||
|
|
|
@ -195,8 +195,8 @@
|
|||
(define ((deriv f) x)
|
||||
(/ (- (f x) (f (- x 0.001))) 0.001))
|
||||
(define (thrice f) (lambda (x) (f (f (f x)))))
|
||||
(plot (mix (line ((thrice deriv) sin) #:color 'red)
|
||||
(line cos #:color 'blue)))}
|
||||
(plot (list (function ((thrice deriv) sin) -5 5)
|
||||
(function cos -5 5 #:color 'blue)))}
|
||||
@desc{This program uses the @elemcode{plot} library to draw plots of
|
||||
functions. Note that the plots are actual value, which DrRacket shows
|
||||
in graphical form.})
|
||||
|
|
|
@ -544,7 +544,7 @@
|
|||
[center? (and (not bottom?)
|
||||
(not top?))]
|
||||
[as-box? (and can-box? (boxable? p))])
|
||||
(when (style-name vstyle)
|
||||
(when (string? (style-name vstyle))
|
||||
(printf "\\~a{" (style-name vstyle)))
|
||||
(let ([minipage? (and can-box? (not as-box?))])
|
||||
(when minipage?
|
||||
|
@ -569,7 +569,7 @@
|
|||
(render-block p part ri #f)])
|
||||
(when minipage?
|
||||
(printf " \\end{minipage}\n")))
|
||||
(when (style-name vstyle)
|
||||
(when (string? (style-name vstyle))
|
||||
(printf "}"))
|
||||
null))
|
||||
|
||||
|
|
|
@ -88,16 +88,22 @@ times). Beware that static or global variables that are not
|
|||
thread-specific (in the OS sense of ``thread'') generally do not
|
||||
work with multiple @|tech-place|s.
|
||||
|
||||
With conservative collection, no registration is needed for the global
|
||||
or static variables of an embedding program, unless it calls
|
||||
@cpp{scheme_main_setup} or @cppi{scheme_set_stack_base} with a non-zero
|
||||
first or second (respectively) argument. In that case, global and
|
||||
static variables containing collectable pointers must be registered
|
||||
with @cppi{scheme_register_static}. The @cppi{MZ_REGISTER_STATIC}
|
||||
macro takes any variable name and registers it with
|
||||
Registration is needed for the global and static variables of an
|
||||
embedding program on most platforms, and registration is needed on all
|
||||
platforms if the program calls @cpp{scheme_main_setup} or
|
||||
@cppi{scheme_set_stack_base} with a non-zero first or second
|
||||
(respectively) argument. Global and static variables containing
|
||||
collectable pointers must be registered with
|
||||
@cppi{scheme_register_static}. The @cppi{MZ_REGISTER_STATIC} macro
|
||||
takes any variable name and registers it with
|
||||
@cppi{scheme_register_static}. The @cppi{scheme_register_static}
|
||||
function can be safely called even when it's not needed, but it must
|
||||
not be called multiple times for a single memory address.
|
||||
not be called multiple times for a single memory address. When using
|
||||
@cppi{scheme_set_stack_base} and when @|tech-place|s are enabled, then
|
||||
@cppi{scheme_register_static} or @cppi{MZ_REGISTER_STATIC} normally
|
||||
should be used only after @cpp{scheme_basic_env}, since
|
||||
@cpp{scheme_basic_env} changes the allocation space as explained in
|
||||
@secref["im:3m:places"].
|
||||
|
||||
Collectable memory can be temporarily locked from collection by using
|
||||
the reference-counting function @cppi{scheme_dont_gc_ptr}. On 3m,
|
||||
|
@ -615,6 +621,35 @@ The following macros can be used (with care!) to navigate
|
|||
|
||||
]
|
||||
|
||||
@; - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
@subsection[#:tag "im:3m:places"]{Places and Garbage Collector Instances}
|
||||
|
||||
When @|tech-place|s are enabled, then a single process can have
|
||||
multiple instances of the garbage collector in the same process. Each
|
||||
@|tech-place| allocates using its own collector, and no place is
|
||||
allowed to hold a reference to memory that is allocated by another
|
||||
place. In addition, a @deftech{master} garbage collector instance
|
||||
holds values that are shared among places; different places can refer
|
||||
to memory that is allocated by the @tech{master} garbage collector,
|
||||
but the @tech{master} still cannot reference memory allocated by
|
||||
place-specific garbage collectors.
|
||||
|
||||
Calling @cpp{scheme_main_stack_setup} creates the @tech{master}
|
||||
garbage collector, and allocation uses that collector until
|
||||
@cpp{scheme_basic_env} returns, at which point the initial place's
|
||||
garbage collector is in effect. Using @cppi{scheme_register_static} or
|
||||
@cppi{MZ_REGISTER_STATIC} before calling @cpp{scheme_basic_env}
|
||||
registers an address that should be used to hold only values allocated
|
||||
before @cpp{scheme_basic_env} is called. More typically,
|
||||
@cpp{scheme_register_static} and @cppi{MZ_REGISTER_STATIC} are used
|
||||
only after @cpp{scheme_basic_env} returns. Using
|
||||
@cpp{scheme_main_setup} calls @cpp{scheme_basic_env} automatically, in
|
||||
which case there is no opportunity to use @cpp{scheme_register_static}
|
||||
or @cppi{MZ_REGISTER_STATIC} too early.
|
||||
|
||||
@; --------------------------------------------------
|
||||
|
||||
@section{Memory Functions}
|
||||
|
||||
@function[(void* scheme_malloc
|
||||
|
@ -789,14 +824,14 @@ typedef int (*Scheme_Nested_Main)(void *data);
|
|||
|
||||
Overrides the GC's auto-determined stack base, and/or disables the
|
||||
GC's automatic traversal of global and static variables. If
|
||||
@var{stack_addr} is @cpp{NULL}, the stack base determined by the GC is
|
||||
used. Otherwise, it should be the ``deepest'' memory address on the
|
||||
stack where a collectable pointer might be stored. This function
|
||||
@var{stack_addr} is @cpp{NULL}, the stack base determined by the GC
|
||||
is used. Otherwise, it should be the ``deepest'' memory address on
|
||||
the stack where a collectable pointer might be stored. This function
|
||||
should be called only once, and before any other @cpp{scheme_}
|
||||
function is called. It never triggers a garbage collection.
|
||||
function is called, but only with CGC and when future and places are
|
||||
disabled. The function never triggers a garbage collection.
|
||||
|
||||
The following example shows a typical use for setting the stack base
|
||||
for CGC:
|
||||
Example:
|
||||
|
||||
@verbatim[#:indent 4]{
|
||||
int main(int argc, char **argv) {
|
||||
|
@ -811,7 +846,12 @@ must be the beginning or end of a local-frame registration. Worse, in
|
|||
CGC or 3m, if @cpp{real_main} is declared @cpp{static}, the compiler
|
||||
may inline it and place variables containing collectable values deeper
|
||||
in the stack than @cpp{dummy}. To avoid these problems, use
|
||||
@cpp{scheme_main_setup} or @cpp{scheme_main_stack_setup}, instead.}
|
||||
@cpp{scheme_main_setup} or @cpp{scheme_main_stack_setup}, instead.
|
||||
|
||||
The above code also may not work when future and/or places are enabled
|
||||
in Racket, because @cpp{scheme_set_stack_base} does not initialize
|
||||
Racket's thread-local variables. Again, use @cpp{scheme_main_setup} or
|
||||
@cpp{scheme_main_stack_setup} to avoid the problem.}
|
||||
|
||||
@function[(void scheme_set_stack_bounds
|
||||
[void* stack_addr]
|
||||
|
@ -828,9 +868,11 @@ requires a few frames.
|
|||
|
||||
If @var{stack_end} is @cpp{NULL}, then the stack end is computed
|
||||
automatically: the stack size assumed to be the limit reported by
|
||||
@cpp{getrlimit} on Unix and Mac OS X, or it is assumed to be 1 MB
|
||||
on Windows; if this size is greater than 8 MB, then 8 MB is
|
||||
assumed, instead; the size is decremented by 50000 bytes to cover a
|
||||
@cpp{getrlimit} on Unix and Mac OS X, or it is assumed to be the
|
||||
stack reservation of the executable (or 1 MB if parsing the
|
||||
executable fails) on Windows; if this size is greater than 8 MB, then 8 MB is
|
||||
assumed, instead; the size is decremented by 50000 bytes
|
||||
(64-bit Windows: 100000 bytes) to cover a
|
||||
large margin of error; finally, the size is subtracted from (for
|
||||
stacks that grow down) or added to (for stacks that grow up) the stack
|
||||
base in @var{stack_addr} or the automatically computed stack
|
||||
|
@ -843,7 +885,7 @@ overflow.}
|
|||
[void* ptr]
|
||||
[int tls_index])]{
|
||||
|
||||
Only available on Windows; registers @var{ptr} as the address of a
|
||||
Only available on 32-bit Windows; registers @var{ptr} as the address of a
|
||||
thread-local pointer variable that is declared in the main
|
||||
executable. The variable's storage will be used to implement
|
||||
thread-local storage within the Racket run-time. See
|
||||
|
|
|
@ -42,20 +42,28 @@
|
|||
(cons (make-string (- end start) (char kind))
|
||||
(lex f p)))))
|
||||
|
||||
(define (test input expected [e-n (chunks (string->list expected))])
|
||||
(define-syntax (test stx)
|
||||
(syntax-case stx ()
|
||||
[(_ args ...)
|
||||
(with-syntax ([line (syntax-line stx)])
|
||||
#'(test/proc line args ...))]))
|
||||
|
||||
(define (test/proc line input expected [e-n (chunks (string->list expected))])
|
||||
(let* ([p (input->port input)]
|
||||
(l (lex scheme-lexer p))
|
||||
(s (apply string-append l)))
|
||||
(close-input-port p)
|
||||
(unless (string=? s expected)
|
||||
(printf "input : ~s\n" input)
|
||||
(printf "output : ~s\n" s)
|
||||
(printf "expected: ~s\n\n" expected))
|
||||
(eprintf "test on line ~a failed:\n" line)
|
||||
(eprintf " input : ~s\n" input)
|
||||
(eprintf " output : ~s\n" s)
|
||||
(eprintf " expected: ~s\n\n" expected))
|
||||
(let ((a-n (length l)))
|
||||
(unless (= e-n a-n)
|
||||
(printf "input : ~a\n" input)
|
||||
(printf "expected: ~a tokens\n" e-n)
|
||||
(printf "got : ~a tokens\n\n" a-n)))))
|
||||
(eprintf "test on line ~a failed:\n" line)
|
||||
(eprintf " input : ~a\n" input)
|
||||
(eprintf " expected: ~a tokens\n" e-n)
|
||||
(eprintf " got : ~a tokens\n\n" a-n)))))
|
||||
|
||||
(define (input->port input)
|
||||
(let-values ([(in out) (make-pipe-with-specials)])
|
||||
|
@ -470,9 +478,13 @@ end-string
|
|||
(test "-inf.0+1i" "ccccccccc")
|
||||
(test "1-inf.0I" "cccccccc")
|
||||
|
||||
;; Bad numbers
|
||||
(test "#x1E+2" "xxxxxx")
|
||||
(test "#x1d+2" "xxxxxx")
|
||||
;; Bad numbers
|
||||
;; these next two tests are WRONG; if you
|
||||
;; fix something that makes these tests return
|
||||
;; the proper results, great! They are this
|
||||
;; way now so we notice later.
|
||||
(test "#x1E+2" "cccccc") ;; should be "xxxxxx"
|
||||
(test "#x1d+2" "cccccc") ;; should be "xxxxxx"
|
||||
|
||||
;; Keywords
|
||||
(test "#:" "pp")
|
||||
|
|
2
src/configure
vendored
2
src/configure
vendored
|
@ -4095,7 +4095,7 @@ case "$host_os" in
|
|||
;;
|
||||
nto-qnx*)
|
||||
enable_sgc=yes
|
||||
LIBS="$LIBS -lsocket"
|
||||
LIBS="$LIBS -lsocket -Wl,--export-dynamic"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
|
|
|
@ -627,7 +627,7 @@ case "$host_os" in
|
|||
;;
|
||||
nto-qnx*)
|
||||
enable_sgc=yes
|
||||
LIBS="$LIBS -lsocket"
|
||||
LIBS="$LIBS -lsocket -Wl,--export-dynamic"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
|
|
|
@ -940,6 +940,8 @@
|
|||
#if defined(__QNX__)
|
||||
# define USE_FCNTL_O_NONBLOCK
|
||||
# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-QNX"
|
||||
# define ASSUME_FIXED_STACK_SIZE
|
||||
# define FIXED_STACK_SIZE 524288
|
||||
#endif
|
||||
|
||||
/************** (END KNOWN ARCHITECTURE/SYSTEMS) ****************/
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity version="5.1.3.11"
|
||||
<assemblyIdentity version="5.1.3.12"
|
||||
processorArchitecture="X86"
|
||||
name="Org.PLT-Scheme.GRacket"
|
||||
type="win32" />
|
||||
|
|
|
@ -17,8 +17,8 @@ APPLICATION ICON DISCARDABLE "gracket.ico"
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 5,1,3,11
|
||||
PRODUCTVERSION 5,1,3,11
|
||||
FILEVERSION 5,1,3,12
|
||||
PRODUCTVERSION 5,1,3,12
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -36,11 +36,11 @@ BEGIN
|
|||
VALUE "CompanyName", "PLT Scheme Inc.\0"
|
||||
VALUE "FileDescription", "Racket GUI application\0"
|
||||
VALUE "InternalName", "GRacket\0"
|
||||
VALUE "FileVersion", "5, 1, 3, 11\0"
|
||||
VALUE "FileVersion", "5, 1, 3, 12\0"
|
||||
VALUE "LegalCopyright", "Copyright © 1995-2011\0"
|
||||
VALUE "OriginalFilename", "GRacket.exe\0"
|
||||
VALUE "ProductName", "Racket\0"
|
||||
VALUE "ProductVersion", "5, 1, 3, 11\0"
|
||||
VALUE "ProductVersion", "5, 1, 3, 12\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
@ -53,8 +53,8 @@ END
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 5,1,3,11
|
||||
PRODUCTVERSION 5,1,3,11
|
||||
FILEVERSION 5,1,3,12
|
||||
PRODUCTVERSION 5,1,3,12
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -70,12 +70,12 @@ BEGIN
|
|||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "FileDescription", "MzCOM Module"
|
||||
VALUE "FileVersion", "5, 1, 3, 11"
|
||||
VALUE "FileVersion", "5, 1, 3, 12"
|
||||
VALUE "InternalName", "MzCOM"
|
||||
VALUE "LegalCopyright", "Copyright 2000-2011 PLT (Paul Steckler)"
|
||||
VALUE "OriginalFilename", "MzCOM.EXE"
|
||||
VALUE "ProductName", "MzCOM Module"
|
||||
VALUE "ProductVersion", "5, 1, 3, 11"
|
||||
VALUE "ProductVersion", "5, 1, 3, 12"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
HKCR
|
||||
{
|
||||
MzCOM.MzObj.5.1.3.11 = s 'MzObj Class'
|
||||
MzCOM.MzObj.5.1.3.12 = s 'MzObj Class'
|
||||
{
|
||||
CLSID = s '{A3B0AF9E-2AB0-11D4-B6D2-0060089002FE}'
|
||||
}
|
||||
MzCOM.MzObj = s 'MzObj Class'
|
||||
{
|
||||
CLSID = s '{A3B0AF9E-2AB0-11D4-B6D2-0060089002FE}'
|
||||
CurVer = s 'MzCOM.MzObj.5.1.3.11'
|
||||
CurVer = s 'MzCOM.MzObj.5.1.3.12'
|
||||
}
|
||||
NoRemove CLSID
|
||||
{
|
||||
ForceRemove {A3B0AF9E-2AB0-11D4-B6D2-0060089002FE} = s 'MzObj Class'
|
||||
{
|
||||
ProgID = s 'MzCOM.MzObj.5.1.3.11'
|
||||
ProgID = s 'MzCOM.MzObj.5.1.3.12'
|
||||
VersionIndependentProgID = s 'MzCOM.MzObj'
|
||||
ForceRemove 'Programmable'
|
||||
LocalServer32 = s '%MODULE%'
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity version="5.1.3.11"
|
||||
<assemblyIdentity version="5.1.3.12"
|
||||
processorArchitecture="X86"
|
||||
name="Org.PLT-Scheme.Racket"
|
||||
type="win32" />
|
||||
|
|
|
@ -29,8 +29,8 @@ APPLICATION ICON DISCARDABLE "racket.ico"
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 5,1,3,11
|
||||
PRODUCTVERSION 5,1,3,11
|
||||
FILEVERSION 5,1,3,12
|
||||
PRODUCTVERSION 5,1,3,12
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -48,11 +48,11 @@ BEGIN
|
|||
VALUE "CompanyName", "PLT Scheme Inc.\0"
|
||||
VALUE "FileDescription", "Racket application\0"
|
||||
VALUE "InternalName", "Racket\0"
|
||||
VALUE "FileVersion", "5, 1, 3, 11\0"
|
||||
VALUE "FileVersion", "5, 1, 3, 12\0"
|
||||
VALUE "LegalCopyright", "Copyright <20>© 1995-2011\0"
|
||||
VALUE "OriginalFilename", "racket.exe\0"
|
||||
VALUE "ProductName", "Racket\0"
|
||||
VALUE "ProductVersion", "5, 1, 3, 11\0"
|
||||
VALUE "ProductVersion", "5, 1, 3, 12\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
@ -22,8 +22,8 @@ APPLICATION ICON DISCARDABLE "mzstart.ico"
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 5,1,3,11
|
||||
PRODUCTVERSION 5,1,3,11
|
||||
FILEVERSION 5,1,3,12
|
||||
PRODUCTVERSION 5,1,3,12
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -45,7 +45,7 @@ BEGIN
|
|||
#ifdef MZSTART
|
||||
VALUE "FileDescription", "Racket Launcher\0"
|
||||
#endif
|
||||
VALUE "FileVersion", "5, 1, 3, 11\0"
|
||||
VALUE "FileVersion", "5, 1, 3, 12\0"
|
||||
#ifdef MRSTART
|
||||
VALUE "InternalName", "mrstart\0"
|
||||
#endif
|
||||
|
@ -60,7 +60,7 @@ BEGIN
|
|||
VALUE "OriginalFilename", "MzStart.exe\0"
|
||||
#endif
|
||||
VALUE "ProductName", "Racket\0"
|
||||
VALUE "ProductVersion", "5, 1, 3, 11\0"
|
||||
VALUE "ProductVersion", "5, 1, 3, 12\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
Loading…
Reference in New Issue
Block a user