Commit Graph

1077 Commits

Author SHA1 Message Date
Matthew Flatt
e0bab441a8 fix `get-output-{bytes,string}' with bad starting index, no ending index
Closes PR 13933
2013-07-25 20:39:57 -06:00
Matthew Flatt
aeb3372faf more safe-dereference repairs for DWARF native stack trace (on ARM) 2013-07-23 20:38:23 -06:00
Matthew Flatt
a31e9b29e0 no dprintf() macro in libunwind to avoid collisions on some platforms 2013-07-23 19:59:00 -06:00
Matthew Flatt
245a688c2e fix for inotify() use with places and futures disabled 2013-07-23 19:46:10 -06:00
Matthew Flatt
9f0c5b1487 fix x86_64 DWARF-based stack trace
Commit 5917d4c added a guard on some pointer dereferences, but
the guard is too strict for DWARF. Allow reading of TEXT segments,
etc.
2013-07-23 17:20:20 -06:00
Matthew Flatt
92f2d7d386 remove bogus cross-phase-persistent declaration
Also fix and improve source-location reporting.
2013-07-22 15:31:18 -06:00
Matthew Flatt
9f4420b07a allow gensym' and string->uninterned-symbol' in cross-phase persistent 2013-07-22 12:51:37 -06:00
Matthew Flatt
9e2cf2ab37 add `#%declare', require declaration of cross-phase persistent modules 2013-07-22 12:51:37 -06:00
Matthew Flatt
df891791b4 avoid a compiler warning 2013-07-21 21:57:25 -06:00
Matthew Flatt
a5f26013ab place: fix finalizaiton of place channels stuck in a GC'ed channel
Lack of ordering on finalization requires some care for explicit
clean-up actions in a finalizer.
2013-07-21 16:35:56 -06:00
Matthew Flatt
a0741c5ea7 JIT repair for `(/ (most-negative-fixnum) -1)'
When I added JIT-inling of '/' for fixnums, I somehow forgot to
handle the special case that is already handled for `quotient'.
2013-07-21 09:59:08 -06:00
Matthew Flatt
22dbcaa77f fix arithmetic-shift' with shifts close to (- (expt 2 31))' on 64-bit
The bug was caused by an accidental cast of a 64-bit integer to a
32-bit integer.

Closes PR 13923
2013-07-21 08:03:53 -06:00
Matthew Flatt
aecf0e60b5 add catalog, source, and Mac OS X instructions to basic README
Also, include "stamp.txt" and "collects.tgz" at a build site.
2013-07-20 10:17:14 -06:00
Matthew Flatt
e7b0e4ffab fix problems with "collects" path and GUI executables 2013-07-19 13:17:40 -06:00
Matthew Flatt
67a9889ef7 add "share", move "collects" back out of "lib", move "pkgs"
The "share" directory holds platform-independent files, while
"lib" holds platform-specific files.

In principle, the "collects" directory belongs in "share",
as does "doc". Those directories are put into "share"
by a Unix-style install, but left at top level for an
in-place install.

Packages in installation scope are put in "share" instead
of "lib", and the top-level Makefile puts development links
in "share/devel-pkgs".

The `configure' script now supports `--docdir' and `--collectsdir'.

Changed the version to 5.90.0.1.
2013-07-19 11:52:02 -06:00
Matthew Flatt
e59f888310 GC clean-ups related to disabled collections and place-shared space
The changes make shared-space allocation work in GC-stress mode
(forcing "master" GCs, just like other GCs).
2013-07-16 11:03:40 -06:00
Matthew Flatt
c88dc8efc8 configure: fix a CC vs. CC_FOR_BUILD mismatch 2013-07-16 06:07:42 -06:00
Matthew Flatt
691a6303eb use CONFIGURE_ARGS_qq' in reconfigure' 2013-07-15 19:22:27 -06:00
Matthew Flatt
9aee8b53d9 use `filesystem-change-evt' for collection paths only if low-latency
Specifically, this change disables the use of inotify() for detecting
changes to collection-links files, because the latency is too large
on some (many?) Linux configurations. (The fallback is to detect changes
to a links file by reading the whole content every time.)
2013-07-15 08:58:39 -06:00
Matthew Flatt
df79198e6e add 'fs-change mode to `system-type'
Report whether `filesyste-change-evt' is supported, works
at the granularity of files, etc.
2013-07-15 08:58:39 -06:00
Matthew Flatt
b3715ba36e filesystem-notify-evt: change inotify() implementation
Create a single inotify() connection per place, which should reduce
the latency of operations on filesystem change events and make
them generally scale better on Linux.

Internally, add a filesystem-never-changes mode, which could be useful
for platforms with fixed filesystems, but it's also for experiments in
checking the cost of filesystem change events.
2013-07-15 07:07:27 -06:00
Matthew Flatt
5aab8a0137 disable inotify()-based `filesystem-change-evt'
... until we can track down latency problems with the use of
inotify().
2013-07-14 07:54:57 -06:00
Matthew Flatt
59170d4caf x86_64 native stack traces: protect some pointer dereferenecs
Guard dereferences of DWARF information to avoid crashing when
the information is wrong or misinterpreted.
2013-07-12 14:52:43 -06:00
Matthew Flatt
79abd1f629 clean up deregistration of VNODE watches via kqueue()
The shotgun approach generates errors/warnings.
2013-07-12 14:52:42 -06:00
Matthew Flatt
d5558a4fe0 raco setup and scribble: fix problems tracking document changes
Some non-transparent but serializable data structures broke
the comparison between previous and new outputs, which caused
too many document rebuilds.

Includes a change to make module path indexes work with `equal?'.
2013-07-12 14:52:42 -06:00
Matthew Flatt
30a1c3565d fix "collects" path setup in 3m build 2013-07-10 13:41:06 -06:00
Matthew Flatt
32b0064b56 Don't install "libracket3m.a" by default
Configure with `--enable-libs' to install the library.
2013-07-10 13:09:41 -06:00
Matthew Flatt
2a4f32d853 remove core dependency on `mzlib/restart' 2013-07-10 12:57:02 -06:00
Matthew Flatt
fe98a80c22 add `identifier-bindig-symbol'; fix free-id-table for renames
The implement of `free-id-table' uses `identifier-binding'
to decide on a symbolic name as a key for each identifier,
but `identifier-binding' doesn't provide enough information
for local and top-level bindings. The new `identifier-binding-symbol'
function provides that information.

Closes PR 13911
2013-07-10 07:10:39 -06:00
Matthew Flatt
9cc50dc914 Makefile: make PKGS' not sticky by default, add again' target
More generally, `LINK_MODE' controls how the `PKGS' value is saved
or restored: "--save" saves the value (the default), "--restore"
uses a previously saved value (if any), and "" disables saving or
restoring.

The `again' target recurs to `in-place' with `LINK_MODE=--restore'.
2013-07-08 20:11:26 -06:00
Matthew Flatt
267ba4c72b fix some absolute paths in an in-place build 2013-07-08 20:01:05 -06:00
Matthew Flatt
36f7b7051e drop non-relative paths in procedure source locations
A path that is not relative to the enclosing file can show up
due to cross-module inlining. Package-based modules do not have
a good relative path to "collects", which creates trouble for
distributing compiled modules where, say, `map' was inlined.

It might be possible to keep the path in module-path-index form
so that a path can be constructed appropriately at run time, but
it's much simpler to just punt on function source locations in
this relatively rare case.
2013-07-08 12:24:16 -06:00
Matthew Flatt
e3c27b2737 fix `call-with-default-reading-parameterization'
The `read-accept-compiled' parameter is supposed to be #f.
2013-07-07 11:51:25 -06:00
Matthew Flatt
1a0312acc0 Package-database reading and related library improvements
The main result is that `path->selative-string/library' now generates
"<pkg>/..." strings.

To make that possible, minimal support for reading the
installed-package database moved to a new `pkg/path' library.

To make that possible and avoid poetntial problems from concurrent
reading and writing of the database file, `racket/file' now provides
`call-with-atomic-output-file', which implements the write-and-move
dance that CM uses for compiled bytcode (i.e., `with-compile-output').
The new function is used to write links and installed-package files.

Finally, `racket/base' provides the new function
`call-with-default-reading-parameterization', which is used to guard
various file `read's to make them consistent and avoid security holes.
2013-07-07 11:26:40 -06:00
Matthew Flatt
7ef5048961 `filesystem-change-evt' and use repairs 2013-07-07 08:12:43 -06:00
Matthew Flatt
22ab892143 minor Makefile and C fixes 2013-07-07 06:42:00 -06:00
Matthew Flatt
b8e20f5a3e use `filesystem-change-evt' and static roots to speed library search
Use `filesystem-change-evt' (where supported) to detect changes to
collection link files.

Add "static root" as a new kind of collection root directory in links
files. A static root directory is assumed to not change (in terms of
its collection subdirectories) as long as the links file itself does
not change.

Propagate the notion of static roots through `raco link' and `raco pkg
install'.

Change the `pkg-links' makefile target to install static links
instead of plain links.

The result of all of these changes is to cut 25%-33% of the
time for `racket -l racket', bringing it back in line with
the pre-package-reorganization time.
2013-07-07 06:42:00 -06:00
Matthew Flatt
3b0566ea0a add `filesystem-change-evt'
The `filesystem-change-evt' function takes a path to a file
or directory and returns an event that becomes ready when
the file or directory changes (conservatively, so false
positives are possible).

These events are supported on Linux, Mac OS X and other BSD
variants with kqueue(), and Windows.
2013-07-07 06:41:59 -06:00
Matthew Flatt
4266e606e3 fix GC bug
This is a variant of the bug fixed in
49fbca5b18,
where a GC-notification callback still
could cause problems in a GC during a finalization
callback.

(Bug found by running tests in GC-stress mode.)
2013-07-06 07:21:46 -06:00
Matthew Flatt
e3eed89b1d fix GC bug in FFI
A foreign procedure's data could get GCed before the procedure
was called, if the procedure is not otherwise reachable.

(Bug found by running tests in GC-stress mode.)
2013-07-06 07:19:42 -06:00
Matthew Flatt
2f637741e2 switch makefile's parallelism control to `JOB_OPTIONS'
Avoid potential collision with `PLT_SETUP_OPTIONS' as an environment
variable.
2013-07-05 12:09:09 -06:00
Matthew Flatt
a8ed2b1546 Add -j'/--jobs' <n> argument to `raco pkg install', etc.
Also, thread `PLT_SETUP_OPTIONS' though server and client build
(so that a `#:j' configuration works as intended).
2013-07-05 11:33:57 -06:00
Matthew Flatt
f98c56f722 fix exception handler inside links-reading code 2013-07-05 08:30:01 -06:00
Matthew Flatt
6a78219d5d fix some clang warnings
The "if (pi->unwind_info);" change might be a bug fix.
2013-07-05 08:30:00 -06:00
Matthew Flatt
fb052532c0 make in-place: keep non-default `PKGS' value in "racket/etc/link-pkgs.rktd"
This change makes a `PKGS=...' setting sticky for an in-place build via
`make', `make in-place', `make pkg-links', etc.
2013-07-05 08:30:00 -06:00
Sam Tobin-Hochstadt
14207682d3 Create info collection for "info.rkt" files. 2013-07-04 16:46:31 -04:00
Matthew Flatt
0d60486a32 GC: make place-message support work with GC stress mode 2013-07-04 14:25:18 -06:00
Matthew Flatt
b232f572a9 add missing GC traversal-function registration
Related to places and place messages.

(Bug found by running tests in GC-stress mode.)
2013-07-04 14:25:10 -06:00
Matthew Flatt
49fbca5b18 fix GC bug
GC during allocation of a pair, weak box, ephemeron, or
weak array went wrong if the GC-notification callback
allocated any of those kinds of things.

(Bug found by running tests in GC-stress mode.)
2013-07-04 14:20:44 -06:00
Matthew Flatt
bf175c5fb0 configure: add --enable-sdk6
To ensure that the Mac OS X 64-bit builds work on 10.6.
2013-07-04 06:53:08 -06:00
Matthew Flatt
9b4940d6a6 fix build on version change 2013-07-01 10:53:04 -06:00
Matthew Flatt
b12cdecb9f fixup for mzscheme' -> racket/base' conversion 2013-07-01 10:49:07 -06:00
Sam Tobin-Hochstadt
d54c1e4e49 Remove most uses of mzscheme in the core.
Remaining are:
 - parts of unit200 that Matthew plans to remove.
 - the `mzscheme` implementation itself.

The implementation of `mzscheme` has been moved
to the `mzscheme` collection (from the `racket` and
`scheme` collections). The `scheme/mzscheme`
language, which was undocumented, has been removed.

This is slightly backwards-incompatible, because
the `xform` handling of precompiled headers now
evaluates code in a `racket/base`-like namespace,
instead of in a `mzscheme`-like namespace.
2013-07-01 12:08:42 -04:00
Sam Tobin-Hochstadt
d0a0e31abc Fix uses of 'mzscheme' in comments. 2013-07-01 11:27:14 -04:00
Sam Tobin-Hochstadt
9f31b8bb30 Copy many fewer files for xform. 2013-07-01 11:27:14 -04:00
Robby Findler
d412afa426 removed unused variable 2013-06-29 10:33:37 -05:00
Matthew Flatt
04d5d9bd55 raco setup: add package-dependency checking
The new `--no-pkg-deps' or `-K' flag skips the check.

If a module in package X refers to a module in package Y, check that
package X declares a dependency on Y.  Note that package X must
specifically depend on Y --- not another package that at the moment
happens to declare a dependency on Y.

A new "base" package represents the content of the core (so that, if
the core shrinks, a new "base2" can represent the smaller core).
Most every package now needs a dependency on "base".

Sometimes, it makes sense for X to access Y when X declares a
dependency on Z, because Z promises to always depend on Y.  For
example, the "gui" package is defined to combne "gui-lib" and
"gui-doc", so it's appropriate to use the modules of "gui-lib" when
depending on "gui". A package's "info.rkt" can therefore define
`implies' as a subset of the dependencies listed in `deps', which
means that depending on the package implies a dependency on the listed
packages. (It's even possible for packages to mutually imply each
other, which is why the dependency checking code ends up with a
union-find.)

Dependency checking distinguishes between run-time dependencies and
build-time dependencies: anything listed in a ".dep" file is a build
dependency, at least. To imply a run-time dependency, a reference must
appear in a bytecode file's imports, and not in a subdirectory or
submodule that would be pruned for a binary package.

The `--fix-pkg-deps' flag attempts to automatically fix package
dependency declarations (i.e., modify a package's "info.rkt" file)
based on inferred dependencies.
2013-06-29 06:51:18 -06:00
Matthew Flatt
336d6ebc09 ditto on build repair (missed two places) 2013-06-29 06:19:09 -06:00
Matthew Flatt
0fdc7ec1a1 build repair for case that "etc" does not exist 2013-06-28 08:32:33 -06:00
Matthew Flatt
d450ee9707 link development-mode packages in a separate pkg database
Use `PKGS' with the top-level makefile to select packages for
a development-mode build. The default is "main-distribution",
which includes all packages in "pkgs".
2013-06-27 21:52:23 -06:00
Sam Tobin-Hochstadt
5ec754803e Fix some mzlib references. 2013-06-27 23:13:46 -04:00
Asumu Takikawa
42b5cfe8b2 Use racket/cmdline instead of mzlib/cmdline
This should fix the build
2013-06-27 22:17:15 -04:00
Matthew Flatt
53d68e2149 switch "config.rktd" dirs back to "collects"-relative
Making them "etc"-relative intercts badly with redirecting
a configuration to override just a few values --- such as
the links path, which is what `make core' needs.
2013-06-27 17:04:16 -06:00
Matthew Flatt
a5ce399dcf .gitignore fixups 2013-06-27 07:52:28 -06:00
Matthew Flatt
dc11090f6b repair interaction of taints and submodule expansion 2013-06-26 12:59:44 -07:00
Eli Barzilay
555c300c72 .gitignore cleanups
* Clarified bogosity of toplevel .gitignore (and other such files)

* Removed "doc/" in the toplevel file -- looks like this was some broken
  leftover, and it's dangerous for at least "scribble/doc" (which
  contains code).

* Collapse more common patterns into worksp instead of in each file.

* Use a trailing "/" for directories.

* racket/lib/collects/pkg/.gitignore looks like a leftover that is no
  longer needed.
2013-06-26 00:52:01 -04:00
Matthew Flatt
1ee88e2721 links file and pkg directrory location and search paths in "config.rktd"
Allow the location of the installation-specific "links.rktd" file to
be specified in "config.rktd", and also allow extra link files to
be provided.

Allow the same for package directories.

The main file/directory in each case corresponds to the file/directory
that can be modified by an installation-scope install. Extra files
or directories in a search path supports constant links and libraries
that are shared across installations --- like "/usr/lib" versus "/lib".
2013-06-25 22:46:23 +02:00
Matthew Flatt
2aed2138a6 raco link: "user" versus "shared" links
By default, `raco link' is now more like `raco pkg' in terms of scope,
and version-specific information doesn't pile up in a user's "links.rktd"
file.
2013-06-25 22:46:23 +02:00
Matthew Flatt
e51ac9cc61 fix `local-transformer-expand' with 'top-level context 2013-06-25 11:02:10 +02:00
Matthew Flatt
208c7d23a6 detect changes to "links.rktd" by content instead of timestamp
The 1-second granularity of filesystem timestamps is not
good enough to deetct changes to the file --- especially
when `raco pkg' installs links and runs `raco setup' (in
the same Rcket process), in which case a newly installed link
might not be detected.

The longer-term repair is probably to add file-changed
events to Racket (based on `inotify' and similar interfaces
provided by OSes).
2013-06-21 13:16:03 -06:00
Matthew Flatt
2ff05e2dda win32: fix destination of COPYING files in build 2013-06-20 07:21:46 -06:00
Matthew Flatt
fc79d744d1 win32: make "doc" dir for core install 2013-06-20 06:41:09 -06:00
Matthew Flatt
fa6f56fcb1 move release notes in appropriate packages
A collection declares release notes with a `release-notes' field in
"info.rkt".

The "doc" directory is now populated exclusively by generated content,
instead of having a static "release-notes" directory (and a "keep-dirs.rktd"
file to record the static directories).
2013-06-19 21:01:52 -06:00
Matthew Flatt
2e781d32f7 mzcom: set mzobj interface version to bogus value, for now
MzCOM and its build process need some sort of overhaul, but
it's on the backburner for now.
2013-06-19 21:01:52 -06:00
Matthew Flatt
8f2b08d0f5 win32: fix `win32-in-place' target on existing tree 2013-06-19 21:01:51 -06:00
Matthew Flatt
a3c7be1a9c win32: fix version info in executables
Also, remove the need for a cron job that patches the version
number in resource and manifest files.
2013-06-19 11:20:03 -06:00
Matthew Flatt
b2ebb0a28b reorganize into core plus packages
The "racket" directory contains a pared-back version of the
repository, roughly.

The "pkgs" directory everything else in the repository, but
organized into packages.
2013-06-19 09:01:37 -06:00