Using a tree representation enables sharing to avoid a quadratic-sized
compiled form and intermediate quadtraic-time/space representations
for a program like this one, where there are N calls each with an
average of N/2 live variables:
(define vars
(let loop ([i 10000])
(cond
[(zero? i) '()]
[else (cons (gensym) (loop (sub1 i)))])))
(time
(begin
(compile
`(lambda ,vars
,@(map (lambda (v) `(,v)) vars)))
(void)))
Keeping the variables in tree form (since they're already collected
that way) and memoizing reduces on the tree allows sharing to be
constructed and preserved. The tree approach persists even to the
runtime mask for live variables.
original commit: 35942accb14d1226189605548a9e05ca95e3f0b6
A program can use `make-arity-wrapper-procedure` to synthesize a
function that reports a given arity mask (without calling `compile`).
In addition, `set-arity-wrapper-procedure!` suports modifying the
implementation of a synthesized procedure. Although similar
functionality could be achieved with `(lambda args (apply (unbox proc)
args))`, an arity wrapper procedure can dispatch to another procedure
without allocating a list for the arguments.
The interpreter now uses an internal variant of arity wrappers to
cooperate with `procedure-arity-mask`.
original commit: 295255a326afbf3f120f95c2ccc6e95b74fdd5e2
Intermediate version: converting to use stack allocation
for `&` arguments and results in a callable, only x86_64
and x86 updated so far.
original commit: 645e1ec56376548cdef1849ba7ff2f56a926af45
scheme.1.in, newrelease
- removed version update of no-longer-existing bldnt.bat. "fixed"
sed patterns to replace \? with * for the benefit of the deficient
mac sed.
newrelease
- updated version to 9.5
bintar BUILDING NOTICE makefiles/Mf-install.in scheme.1.in
c/Makefile.i3nt c/Makefile.a6nt c/Makefile.ti3nt c/Makefile.ta6nt
workarea c/scheme.rc s/7.ss s/cmacros.ss
release_notes/release_notes.stex csug/csug.stex
- updated release notes and fixed user's guide overfull hbox.
release-notes.stex, syntax.stex
- updated install target to do something more sensible
release_notes/Makefile
original commit: adb3b7bb22ddaa1ba91b98b6f4a647427c3a4d9b
convention that the only undocumented externs are prefixed with
S_.
externs.h, stats.c, thread.c
original commit: 898c3941d807a18c393a4575a72283e3671ee7e5
Fixes problems that Kent pointed out, and tries a macro
instead of duplicating the source for sweeping records.
original commit: a6796ba13da33ec9f765d6129cfc26cc38f48ffc
updated ez-grammar-test to write temp files to current directory and delete them when finished
original commit: 89885b73d679759de9c62bab0b407318df123d6f
Add optional beginning-line and beginning-column components to a
source object, so that line and column information can be recorded
independent of the file. Add `locate-source-object-source` to use
the recorded information. Add a cache for `locate-source` as enabled by
the `use-cache?` optional argument, which can avoid compilation times
that are quadratic in the number of `let-values` or `define-values`
forms.
original commit: b36fab81d5041a54ce01a422395eee79d2f930bc
Revert the use of ephemeron pairs in weak hashtables, since the
difference is visible via guardians. Add hashtable based on ephemerons
(to avoid key-in-value problems) as an explicit variant.
original commit: 31ac6d78592e1a9ba6bfbe802260e3d56d4cf772
* master:
fix reference to libc.so to be libc.so.7 for FreeBSD (machine types i3fb, ti3fb, a6fb, ta6fb) foreign.ms
adds entry to LOG
fixes wrong type for iconv
support Windows build on Bash/WSL
Add CC option to configure
original commit: 05ddaf8c994a20450104819e06d7c987bbc0acaa
Accesses existing-but-hidden DST information in date records,
and adds support for getting a name of the current time zone
when a time zone offset is not explicitly provided.
original commit: 3c8be62d12a8197018fb6c5aae182fd75da14fe8
been seen on the pending list rather than the trigger lists.
gc.c
removed scan of space_ephemeron from check_heap because check_heap
as written can't handle the two link fields properly.
gcwrapper.c
in the ephemerons mat that checks interaction between mutation and
collection, added generation arguments to the first two collect
calls so they always collect into the intended generation.
4.ms
updated allx and bullyx patches
patch*
original commit: 43b54f64949cf992e52cf18bacc2a09f4a199227