Commit Graph

2122 Commits

Author SHA1 Message Date
Vincent St-Amour
22caaad944 free-vars: nicer error on submodules 2015-12-07 10:31:12 -06:00
Matthew Flatt
715bdbb49e incremental GC: avoid already-finished finalizaton work
Avoid extra work svaing finalization information and
re-chaining old-generation records for a major GC.
2015-12-06 12:36:52 -05:00
Matthew Flatt
e44926fcee increemntal GC: compact when a major GC is forced early
This change further defends against fragmentation when
incremental mode isn't working well.
2015-12-06 12:36:52 -05:00
Matthew Flatt
b5131321d7 force non-inremental GC if excessive fragmentation
Increemntal GC skips the old-generation compaction phase.
For most applications, that's ok, but it's possible for
fragmentation to get out of hand. Detect that situation
and fall back to non-incremental mode for one major GC.
2015-12-06 12:36:52 -05:00
Sam Tobin-Hochstadt
21316e3ebf Don't copy immutable vectors in vectorof if not needed.
This happens only if the element contract is a flat contract.
2015-12-06 10:45:13 -05:00
Sam Tobin-Hochstadt
b8d4248053 Copy immutable vector more efficiently.
Thanks to @mflatt for the suggestion.
2015-12-06 10:31:01 -05:00
Robby Findler
e814d742a7 fix the late-neg construction for flat contracts
Thanks to Sam for finding this problem!
2015-12-05 23:03:06 -06:00
Robby Findler
8b3369f81c set up some information for TR 2015-12-05 15:35:46 -06:00
Leif Andersen
f88ba77a5c Fix travis to build against latest Racket build. 2015-12-04 18:01:57 -05:00
Matthew Flatt
fef695f066 fix call-with-atomic-output-file for pathless filename
Closes #1156
2015-12-03 08:05:17 -07:00
Matthew Flatt
724dc2fdbf fix namespace-mapped-symbols forcing of lazy binding info 2015-12-02 13:14:28 -07:00
Sam Tobin-Hochstadt
a6eb00a41c Avoid warning for unused variable. 2015-12-02 10:01:01 -05:00
Matthew Flatt
d56e7309ad GC: fix yet another problem counting allocated bytes 2015-12-01 16:21:32 -07:00
Jay McCarthy
67bf4349ca Revert "Assume that files that start with . are not modules"
This reverts commit fc34292486.
2015-12-01 14:21:09 -05:00
Gustavo Massaccesi
b175241961 Flatten nested begin and begin0 forms
The nested begin/begin0 are flattened at read time, but some
optimizations may create new instances.
2015-12-01 13:50:16 -03:00
Matthew Flatt
7e949d5513 GC: skip memory accounting if demand goes away
Memory accounting is enabled on demand; if demand goes
away --- as approximated by no live custodians having
a limit or previously been queried for memory use ---
then stop accounting until demand resumes.
2015-12-01 08:14:38 -07:00
Matthew Flatt
bef34606cb incremental GC: fix handling of ephemerons
Fix the case that an old-generation finalizer ends up
on a modified page after all old-generation marking
is complete.

Also, make sure epehemerons are checked after previous
marking that may have left the stack empty.
2015-12-01 05:50:06 -07:00
Matthew Flatt
03302c3f30 repair an assertion in the GC 2015-12-01 05:50:06 -07:00
Matthew Flatt
8363144818 incremental GC: make finalization more incremental 2015-12-01 05:50:06 -07:00
Matthew Flatt
f30d8bd562 incremental GC: fix overcount of immobile objects 2015-12-01 05:50:06 -07:00
Matthew Flatt
d306ecdf3a incremental GC: fix accumulation of page-repair work
Too much work was being saved for the final step of a
major GC.
2015-12-01 05:50:06 -07:00
Matthew Flatt
e9c722cf22 re-tune incremental GC parameters
With immobile-object allocation repaired, smaller increments
work.
2015-12-01 05:50:06 -07:00
Matthew Flatt
7901962647 incremental GC: fix phantom-byte counting 2015-12-01 05:50:06 -07:00
Matthew Flatt
fa3cabd681 incremental GC: avoid allocating immobile on old-generation page
The allocation strategy for immobile objects avoids some fragmentation
in non-incremental mode, but it interferes with finishing up an
incremental major collection, so trade some fragmentation for
an earlier finish (which is far more likely to use less memory
instead of more, despite extra fragmentation).
2015-12-01 05:50:06 -07:00
Jay McCarthy
fc34292486 Assume that files that start with . are not modules 2015-11-30 08:30:25 -05:00
Matthew Flatt
817fdad2d5 Windows with MinGW: Fix network address resolution
Use the same code as for MSVC compilation, which is as simple
as defining `HAVE_GETADDRINFO`.

Closes PR 15192
2015-11-29 17:31:47 -07:00
Vincent St-Amour
e7e75c2292 Fix exponentiation of negative single-floats and moderately large bignums. 2015-11-29 15:46:56 -06:00
Matthew Flatt
a389678556 improve interaction of incremental mode and finalization
Really, just improve when majors GCs are forced to trigger
further finalizations. This improvement makes `(collect-garbage)`
followed by `(collect-garbage 'incremental)` move more
reliably into incremental mode.
2015-11-28 15:54:45 -07:00
Robby Findler
71d80bace5 whoops: don't want to do the precondition check twice 2015-11-28 16:27:21 -06:00
Robby Findler
8cc2e27ca7 improve error checking in version/utils
closes #1152
2015-11-28 16:26:09 -06:00
Robby Findler
86934d4a4f adjust contract printing so that it looks like
the constructors in print mode and so that it
cooperates with pretty printing to get some
newlines in there
2015-11-28 13:47:27 -06:00
Matthew Flatt
9407afa0a2 faster GC traversal of shared closure prefixes 2015-11-28 11:21:19 -07:00
Matthew Flatt
89807d178e fix accounting of nursery for logging
The pre-GC count didn't include the obejcts allocated on
the most recent nursery page.
2015-11-28 10:36:12 -07:00
Matthew Flatt
c3ac1c6bf4 reduce incremental work on (collect-garbage 'minor)
When `(collect-garbage 'minor)` is combined with incremental
mode, do less incremental work. At the same time, don't
skip an incremental GC just because a major GC is ready.
2015-11-28 10:36:12 -07:00
Matthew Flatt
e968cfbde4 fix accounting of phantom bytes for incremental GC
Also fixes accounting when a phantom-bytes value is
treated as potentially having a backpointer.
2015-11-28 10:35:24 -07:00
Matthew Flatt
81e0636843 fix counting of interior-pointer-allowed objects
Words versus bytes.
2015-11-28 09:22:11 -07:00
Matthew Flatt
ca0e9b8b2f report timing of incremental step 2015-11-28 09:22:11 -07:00
Matthew Flatt
d37bfd45ae avoid unnecessary closure-fixup work in incremental mode 2015-11-28 09:22:11 -07:00
Matthew Flatt
46fe53fadb incremental GC: avoid extra traverals of weak-link lists
When incremental mode has already gone through weak boxes
and arrays, a major GC doesn't need to see them again.
2015-11-28 09:22:11 -07:00
Matthew Flatt
ad2dd24fb8 incremental GC: split "incremental" finalization to single step
Don't finalize after performing some marking work, since
finalization is in one chunk, so it's best to avoid combining
that delay with others.
2015-11-28 06:09:39 -07:00
Matthew Flatt
493eb1de7f tweak incremental-GC parameters
Based on experiments with a few programs.
2015-11-27 15:08:54 -07:00
Matthew Flatt
ba8103bbde add PLT_INCREMENTAL_GC
Although calling `(collect-garbage 'incremental)` in a program with
a periodic task is the best way to request incremental collection, it's
handy for some experiments to have an environment variable that turns
it on permanently.

This change also makes incremental-mode minor collections log as "mIn"
instead of "min", and it changes the first field of the logged
`gc-info` structure to be a mode symbol instead of a boolean.
2015-11-27 08:02:18 -07:00
Matthew Flatt
a0576e0378 make the clean-up phase of a major GC incremental
Incremental GC now works well enough to be useful for some programs
(e.g., games). Memory accounting is still not incremental, so DrRacket
(and running programs in DrRacket) does not really support incremental
collection, although pause times can be much shorter in incremental
mode than by default.
2015-11-27 08:02:17 -07:00
Matthew Flatt
2486c7f4bc incremental GC: add finalization step
This step is semi-incremental, in that it can happen during
incremental collection, but all finalization is performed at once.
This will work well enoguh if the number of finalizers, weak boxes,
etc., will be small enough relative to the heap size.
2015-11-27 08:02:17 -07:00
Matthew Flatt
e24b73fbfd minor GC simplification 2015-11-27 08:02:17 -07:00
Vincent St-Amour
e9282d4f6e Fix expt of floats by large positive bignums.
Brings behavior in line with Gambit.

Closes GH #1148.
2015-11-25 17:46:36 -06:00
Matthew Flatt
8839f7b848 bump version number
Should have incremented it for "xform.rkt" change in f5dbd99e43.
2015-11-25 07:18:12 -07:00
Matthew Flatt
050f708879 setup/unixstyle-install: fix DESTDIR mode for ".desktop" fixup
Closes #1143
2015-11-24 09:49:09 -07:00
Matthew Flatt
b443f3fe68 fix broken resize of place array
Change default array size from 32 to 4, so that the
resize path is used (and tested) on more typical
machines.
2015-11-24 09:20:44 -07:00
Matthew Flatt
5cb02282f5 fix round-to-even for exact->inexact on rationals
Thanks again to Robby
2015-11-22 18:09:11 -07:00
Matthew Flatt
ce7487182a fix too-early exact->inexact conversion in number parsing
Robby found this bug, continuing his streak that included
find the bugs behind commits f5dbd99e43 and 901ffdcbac.
2015-11-22 09:11:23 -07:00
Matthew Flatt
2a88662d01 exact->inexact fixup for MSVC
Casting a `uintptr_t` to `double` seems not to round to
nearest, so keep all bits while moving to `double` and
use arithmetic to combine them (since the rounding mode
is used correctly for arithmetic).
2015-11-22 08:33:44 -07:00
Matthew Flatt
901ffdcbac fix inexact-number parsing problem
Bug introduced in c40229f756.
2015-11-22 06:50:49 -07:00
Matthew Flatt
f5dbd99e43 fix precision in exact->inexact on bignums
The strategy of converting a bignum to a flonum by converting on word
boundaries can lose one bit of precision. (If the use of a word
boundary causes a single bit to get rounded away, but the first bit of
the next word is non-zero, then the rounding might have been down when
it should have been up.)

Avoid the problem by aligning relative to the high bit, instead.
2015-11-22 06:50:49 -07:00
Asumu Takikawa
92fc1f41c8 Add more hash-like operations to id-table
The operations are ref!, set*, set*!, update, and
update!. Also bumps version number.
2015-11-21 15:46:22 -05:00
Matthew Flatt
c40229f756 fix reading of extflonums, including with large exponents
Fix even basic readind when extflonums are not supported, but
also fix reading extflonums with large exponents (related to
the other recent changes to number parsing).
2015-11-21 10:55:14 -07:00
Matthew Flatt
9d2dd01689 more repairs of parsing inexact with large exponents
Fix the slow-path parsing of numbers in essentially the same
way as aff167b13d.

Closes #1140
2015-11-21 09:18:32 -07:00
Chris Jester-Young
aff167b13d Fix parsing of 0e401 on USE_EXPLICT_FP_FORM_CHECK platforms. 2015-11-21 08:27:46 -07:00
Matthew Flatt
8e46e46d40 add more support for continuation marks in procedure impersonators
Allow a more dynamic (than `impersonator-prop:application-mark`)
determination of continuation marks and associated values to wrap the
call of an impersonated procedure.
2015-11-20 10:20:02 -07:00
Jay McCarthy
69b8b2be35 Fix up prim count from merge mistake 2015-11-20 10:34:19 -05:00
Jay McCarthy
8c08d22197 update cstartup 2015-11-20 10:22:36 -05:00
Jay McCarthy
fff7bcfb03 initialize new params in read_escape_from_string 2015-11-20 10:17:59 -05:00
Jay McCarthy
ec713a22c3 Ensurce new parameters have false defaults everywhere 2015-11-20 10:17:59 -05:00
Jay McCarthy
bbf03997bb correct dot cancelling under readtable 2015-11-20 10:17:36 -05:00
Jay McCarthy
ce0aed77ea use readtable for detecting dot 2015-11-20 10:17:36 -05:00
Jay McCarthy
4451f44dda use readtable if available to look up whitespace 2015-11-20 10:17:36 -05:00
Jay McCarthy
35aa2c2398 first version of read_cdot 2015-11-20 10:17:36 -05:00
Jay McCarthy
23beaa4793 comments re mflatt 2015-11-20 10:17:08 -05:00
Jay McCarthy
c257d6dc64 tagged brackets and braces 2015-11-20 10:16:41 -05:00
Matthew Flatt
877264c63b fix net/url delays to be thread-safe 2015-11-20 06:17:52 -07:00
Tim Brown
0b1d0610f2 support [plt_]{http,no}_proxy environment variables
The `current-proxy-servers` and `current-no-proxy-servers` parameters
are initialized on-demand from environment variables.
2015-11-19 15:46:54 -07:00
Asumu Takikawa
76e27da8ba Fix blame error for listof contract 2015-11-17 06:30:35 -06:00
Matthew Flatt
6099a70c52 fix relative-path discovery for case-normalized paths 2015-11-16 12:55:19 -07:00
Ryan Culpepper
912f1fe603 add macro-debugger event on expand opaque expression 2015-11-16 09:09:36 -05:00
Matthew Flatt
d3f2bd6dac fix broken abort handling related to module-registry lock 2015-11-15 16:46:07 -07:00
Matthew Flatt
0e16ce4bea add internal-definition-context-{binding-identifier,track}
When an internal-definition context is used with `local-expand`, the
any binding added to the context affect expansion, but the binding do
not appear in the expansion. As a result, Check Syntax was unable to
draw an arrow from the `s` use to its binding in

 (class object%
   (define-struct s ())
   s)

The general solution is to add the internal-definition context's
bindings to the expansion as a 'disappeared-bindings property. The new
`internal-definitionc-context-track` function does that using a new
`internal-definition-context-binding-identifier` primitive.
2015-11-15 06:17:22 -07:00
Matthew Flatt
e3d78e44cc avoid excessive path retention in raco dist output
This change builds on 5c909cca0d, but it better handles files that
are installed in "lib" or "share" instead of residing in a
package.
2015-11-14 08:31:23 -07:00
Matthew Flatt
8ec17deed1 avoid Linux stack correction on non-main thread 2015-11-13 14:54:05 -07:00
Matthew Flatt
6343ca0826 raco {dist,c-tool}: normalize case of paths before finding prefix 2015-11-13 07:42:34 -07:00
Matthew Flatt
fb1432e70e declare and document scheme_set_dll_path() for Windows embedding 2015-11-13 06:49:07 -07:00
Matthew Flatt
825902f8e6 Windows: adjust raco ctool --c-mods ... --runtime ... to copy libs
When gathering runtime files, include the "longdouble.dll"
and "libiconv-2.dll" libraries that are referenced by the
runtime system.
2015-11-12 19:01:18 -07:00
Matthew Flatt
a053c78c30 fix re-export of shadowing binding
Mishandling of the `require`-binding table could cause
`racket/private/pre-base` to export `andmap` as syntax, for example,
instead of as a variable. The syntax-versus-variable distinction
doesn't usually matter, but it affects the order of exports in
bytecode form.
2015-11-12 14:24:44 -07:00
John Clements
b5e2ae030b net/head: better error message for bytes/string mismatch 2015-11-11 17:46:47 -08:00
Matthew Flatt
596b05146c file/tar: add #:follow-links? option 2015-11-10 10:50:07 -07:00
Matthew Flatt
4c6750286a net/http-client: avoid race between EOF and collection close
The race condition can result in an "input port is closed"
error when a connection is used again.
2015-11-10 10:50:07 -07:00
Robby Findler
3d31d86bf5 fix (-> any/c boolean?) for the case of an impersonated struct predicate
closes #1129
2015-11-10 09:00:17 -06:00
Sam Tobin-Hochstadt
54be64ad31 Restore permissive error message from permissive/c.
Thanks to @rbfindler for the suggestion.
2015-11-09 09:15:33 -05:00
Robby Findler
611899764f pass along neg-party
closes #1126
2015-11-08 09:07:16 -06:00
Matthew Flatt
2ed6c01e56 fix space-safety annotation for nested ifs
Closes PR 15176
2015-11-08 07:36:48 -07:00
Robby Findler
71690384a4 add first-or/c 2015-11-07 19:55:20 -06:00
Robby Findler
12d063ad87 improve error message when an unknown dependent variable is used 2015-11-07 19:55:20 -06:00
Robby Findler
657cda6e12 add missing ->i well-formedness check 2015-11-07 19:55:19 -06:00
Matthew Flatt
0beee9cd6a remove visit of available module in dynamic-require
Even though `dynamic-require` might lead to loading source, the
path into the compiler for that source will force compile-time code
as needed.

One benefit of ths change is that `racket -l pict3d` takes about half
as long, because `racket/gui` includes a `dynamic-require` to load a
platform-specific back-end, while `pict3d` can pull in a lot of
compile-time code to cooperate with Typed Racket.
2015-11-07 14:08:13 -07:00
Matthew Flatt
6655352789 guard against some cyclic lists in bytecode decoding
Closes #1098
2015-11-07 09:17:41 -07:00
Matthew Flatt
e94b07b3aa patch Pango to handle font-info failure
Getting NULL from CTFontCollectionCreateMatchingFontDescriptors()
might indicate a font installation problem; I'm not sure. In any case,
checking for NULL avoids a crash on at least one installation.
2015-11-07 08:19:50 -07:00
Matthew Flatt
4d9c5d8dd2 patch Cairo to avoid writing to a global constant
This bug is already fixed in the Cairo source repo, so we
can discard the patch on the next Cairo upgrade.

It's not clear which platforms are affected. On OS X, at least,
writing to a global constant can cause a crash.

Thanks to Spencer for making a small example that triggers the bug
(added to the "draw-test" package).
2015-11-06 16:01:36 -07:00
Sam Tobin-Hochstadt
b6939b0b2e Namespace scheme_boxmap_size now that it isn't static. 2015-11-06 14:25:41 -05:00
Sam Tobin-Hochstadt
f126fd2356 Revert "change or/c so that it takes the first ho projection"
This reverts commit 5a33856802.

Merge to 6.3.
2015-11-06 14:25:41 -05:00
Juan Francisco Cantero Hurtado
5e2421b1a0 Doc: github.com/plt -> github.com/racket 2015-11-06 10:26:07 -06:00
Matthew Flatt
58c919c04e fix getting port name for reader errors
Closes #1121
2015-11-05 06:40:05 -07:00