Commit Graph

34895 Commits

Author SHA1 Message Date
Matthew Flatt
04ce921e8f fix optimize problem
Gustavo's tests in de3fa9a855 illustrate the problem. The solution
is simply passing 1 for `optimized_rator` to optimize_for_inline().
Additional changes generalize optimize_for_inline() a little (although
that generality doesn't seem to be useful at the moment) and collapse
some variables that represent the same value.
2015-02-27 10:01:09 -07:00
Gustavo Massaccesi
de3fa9a855 Tests for correct use of reverse in procedure? reduction 2015-02-27 08:32:27 -07:00
Matthew Flatt
6cf28d55cd fix memory-management problem in putenv
Problem reported by Sergey Pinaev: free(oldbuffer) should be called
AFTER putenv(buffer).

Also, respond correctly to an (unlikely) putenv() failure.
2015-02-27 08:18:13 -07:00
Asumu Takikawa
f43096b123 Export an alternative object/c constructor
This functional constructor allows runtime construction
of object contracts in extension libraries.
2015-02-24 17:18:40 -05:00
Asumu Takikawa
5dc6be1a17 Allow chaperones on class methods
This allows libraries to add metadata to methods in the form
of chaperone properties which can be read by contracts on
methods.
2015-02-24 17:17:32 -05:00
Matthew Flatt
c5e9f42cee adjust use of TARGET_OS_IPHONE in C preprocessing
Some Mac headers `#define` it as 0, so depend on its value instead
of its definedness.
2015-02-23 08:29:27 -07:00
Ryan Culpepper
80e4894597 fix mandatory-after-optional checking
Also fix tests for attribute change.
2015-02-22 21:51:49 -05:00
Leif Andersen
2a583988cb Use #f for no default or keyword (opposed to #'#f) 2015-02-22 21:51:48 -05:00
Leif Andersen
551704ed4a Added tests for function-header. 2015-02-22 21:51:48 -05:00
Leif Andersen
3d567f643c Puts following limitations on args:
* no duplicate names
* no duplicate keywords
* no mandatory argument after optional argument
2015-02-22 21:00:10 -05:00
Leif Andersen
2e9065e610 Use function-header library in racket/match. 2015-02-22 21:00:10 -05:00
Leif Andersen
ca365d17c1 Add syntax/parse/lib/function-header library. 2015-02-22 21:00:10 -05:00
Matthew Flatt
af6c39611d configure: initial support for an iOS build
A new `--enable-ios=<sdk-path>` flag in combination with `--host=...`
sets up the right compiler options for compiling the Racket runtime
system as a framework to use in an iOS application.

I don't know whether the resulting framework actually works, but
compiling and linking is a step forward.
2015-02-22 08:45:40 -07:00
Matthew Flatt
52ca80a7ab search document: rint error without aborting on bad index entry
Survive a broken link in the index by complaining via `log-error`
and continuing.
2015-02-20 13:34:09 -07:00
Tobias Grelsson
a5d506a3a4 add http method "options" 2015-02-19 10:30:19 -07:00
Javier Olaechea
be6e1a4045 typo in sequences.scrbl
Fix return values in the  documentation of stream-empty?
2015-02-19 10:29:58 -07:00
Matthew Flatt
aae35ea3ac fix stream/c using generics chaperone property support 2015-02-19 09:56:50 -07:00
Matthew Flatt
d69af6af30 add property support to chaperone-generic, etc. 2015-02-19 09:56:50 -07:00
Matthew Flatt
e913a13614 contract test suite: fix exit status on failure 2015-02-19 08:35:25 -07:00
Matthew Flatt
54fb57d6b9 fix extflonum-printing test when extflonums are disabled
The minimal suport for extflonums just preserves the text of the
input, so adjust the test to work for both.
2015-02-17 19:12:29 -07:00
Matthew Flatt
a40afcd782 fix problem with _list-struct
Repairs a mistake in d747f8f806.
2015-02-17 16:01:03 -07:00
Matthew Flatt
b37eab0621 raco pkg update: add --skip-uninstalled flag 2015-02-17 15:43:15 -07:00
Matthew Flatt
cc621124c1 fix typo 2015-02-17 13:05:20 -07:00
Matthew Flatt
8aa16faa6d raco pkg {install,update}: add --pull option 2015-02-17 13:05:20 -07:00
Matthew Flatt
51d38152d4 fix win32-as-is makefile target 2015-02-17 09:29:07 -07:00
Gustavo Massaccesi
4b8517b27c Recognize more procedures in scheme_optimize_apply_values
scheme_optimize_apply_values reduces (call-with-values gen proc)
to (#%apply-values proc gen) when recognizes proc as a procedure.
This extends the expressions that are recognized as procedures.
2015-02-16 10:06:52 -07:00
Gustavo Massaccesi
0c5944d64a Reduce (procedure? <inlineable>) => #t 2015-02-16 10:06:51 -07:00
Matthew Flatt
a8026824dd adjust optimizer to improve intra-module inlining
Instead of delaying the registration of some constants until a
group of expressions is re-optimized, add constant information as
it is discovered, which can expose some additional optimizations.

The old grouping was probably aimed at avoiding excessive code growth,
but I think that other and better controls are now in place. The
overall size of ".zo" files in an installation did not grow
significantly with this change.

Closes PR 14978
2015-02-16 10:01:16 -07:00
Matthew Flatt
17275b946a raco setup: improve and normalize error reporting
When repoting an error during compilation, always show the path to the
module being compiled. That path was sometimes available in the error
message anyway, due to source locations for syntax errors, but often
there would be no path due to run-time errors in macros, a lack of
source locations on macro-introduced forms, etc.

The `raco setup` improvements rely on new machinery in `compiler/cm`,
and `raco make` inherits that machinery.

The parallel and non-parallel variants of `raco setup` reported
excpetions in slightly different formats, and now they're consistent.
The initial report of an exception now always shows an evaluation
context, while the summary's repeat of the error omits the context.
2015-02-15 09:49:40 -07:00
Matthew Flatt
1c4c76dd57 fix printing of ellipses in long error context 2015-02-15 08:10:27 -07:00
Matthew Flatt
d747f8f806 require a #:offset keyword before a field offset in define-cstruct
Also, allow `#:offset` specifications on individual fields, instead
of all or node.
2015-02-14 18:40:20 -07:00
BartAdv
7dfa02cc5f Add field offsets specification for define-cstruct
This allows to define the offsets for each field instead
of relying on the calculated ones - useful when struct might
be defined differently across platforms.
2015-02-14 18:40:20 -07:00
Paul Ojanen
2c506a2157 grammar fix 2015-02-14 18:40:20 -07:00
Gustavo Massaccesi
9c67f8be6a Ignore fuel in optimize_for_inline when it's used just to get a known procedure
Fix 7f61a6
2015-02-14 18:40:20 -07:00
Alexis King
714b7684fe Add stream/c contract for adding contracts on stream contents 2015-02-13 20:14:03 -06:00
Matthew Flatt
abe1233734 make hash-table order invertible at build time
For detecting and debugging accidental dependencies on hash-table
order, it might be helpful to invert the order at the lowest level. To
do that, uncomment `#define REVERSE_HASH_TABLE_ORDER` in "hash.c".
2015-02-13 18:28:48 -07:00
Matthew Flatt
0b82125ce9 remove misleading call
The `extractors` array is allocated on start-up (which is why it's
ok for places).
2015-02-13 06:59:27 -07:00
Matthew Flatt
f5da16b56d fix interaction of nack-guard-evt and choice-evt
If the result of `nack-guard-evt` is a `choice-evt`, then chosing any
of the combined events should avoid the NACK.
2015-02-12 15:24:45 -07:00
Matthew Flatt
0e009117b5 fix docs on print
The default global print handler changed long ago.
2015-02-12 10:17:55 -07:00
Gustavo Massaccesi
488029b952 Minimal tests for when extflonum are no available
Racket has a minimal support to read and write `extflonum`s when the `exflonums`
are not available. In this configuration they use a different path code, so it's
necessary to test this version of the code too.
2015-02-12 10:14:52 -07:00
Matthew Flatt
fa00d01b6f fix SRFI-14 tests for Unicode 7.0 2015-02-12 10:14:52 -07:00
Asumu Takikawa
97bd3f7549 Add doc examples for dynamic-require 2015-02-12 10:14:52 -07:00
Asumu Takikawa
e63fbfde7a Clarify docs of dynamic-require on syntax bindings 2015-02-12 10:14:52 -07:00
BartAdv
3a123ca85c Fix a typo in define-cstruct 2015-02-12 10:14:52 -07:00
Gustavo Massaccesi
84543217f9 Add flexpt to is_inline_unboxable_op list 2015-02-12 10:14:51 -07:00
Matthew Flatt
8c545ae05a adjust docs & history note for println and writeln
When adding a new function or form, use

 @history[#:added "<version>"]

at the end of the documentation for the added function or formœ.
2015-02-12 10:14:51 -07:00
Sam Tobin-Hochstadt
d3b018b7cb Re-do projections for struct fields in chaperone handlers.
If the selector is itself a chaperone, then doing the access once
will mean that the saved result is not `chaperone-of?` the result
of doing the access a second time, at least in some cases (such as
when the accessor uses vector contracts).

Thanks to Neil T for initial spotting, and to Robby for actually
finding the bug and suggesting the fix.
2015-02-12 09:50:57 -05:00
Robby Findler
0e563c6ab3 minor tweaks to define-sequence-syntax docs 2015-02-11 10:53:40 -06:00
Matthew Flatt
1409ff1d24 fix position of lifted requires in expansion
The macro expander formerly put all lifted requires at the start of a
module, but that doesn't work with re-expansion if a module has
submodules and lifted requires that refer to submodules. Put lifted
submodules in the right place, instead: just before the form whose
expansion added the lifted require.
2015-02-10 17:53:08 -07:00
Rob Hoelz
912d65948c Link to the guide and reference source locations 2015-02-10 09:46:40 -05:00