Taylor R Campbell [Tue, 13 Nov 2018 07:25:36 +0000 (07:25 +0000)]
Skip floating-point trap tests if the host doesn't support them.
Taylor R Campbell [Tue, 13 Nov 2018 06:25:27 +0000 (06:25 +0000)]
Ignore .fni and .moc files too.
Taylor R Campbell [Tue, 13 Nov 2018 06:03:06 +0000 (06:03 +0000)]
Missed a spot: 64-bit architecture is effectively heap-in-low-memory.
Taylor R Campbell [Tue, 13 Nov 2018 05:56:28 +0000 (05:56 +0000)]
Teach the ucode to build on NetBSD/aarch64.
Taylor R Campbell [Tue, 13 Nov 2018 05:55:56 +0000 (05:55 +0000)]
Cull configure checks for unused functions.
Chris Hanson [Mon, 12 Nov 2018 07:03:27 +0000 (23:03 -0800)]
Export flo:random-unit-{closed,open} and deprecate flo:random-unit.
Chris Hanson [Mon, 12 Nov 2018 07:01:46 +0000 (23:01 -0800)]
Fix bug: couldn't compile random.scm on a 32-bit system.
The problem is that it was trying to represent the constant #x55555555 as a
fixnum, which won't work. I added more selective macro-expansion to enable only
those parts of the code relevant for the different word sizes.
Chris Hanson [Mon, 12 Nov 2018 06:59:33 +0000 (22:59 -0800)]
Fix bug: -Werror means FOO_length_in_bits won't compile on 32-bit gcc.
Before it just issued a warning. I rewrote it so that it works.
Taylor R Campbell [Sun, 11 Nov 2018 02:44:06 +0000 (02:44 +0000)]
Disable -Winline.
Not really generally useful unless you're tuning particular code;
highly compiler-dependent. Currently breaks -Os.
Taylor R Campbell [Sat, 10 Nov 2018 18:01:00 +0000 (18:01 +0000)]
Check for overflow in int, not size_t.
Taylor R Campbell [Sat, 10 Nov 2018 18:00:42 +0000 (18:00 +0000)]
Use -Wl,-export-dynamic to pass -export-dynamic to the linker.
Taylor R Campbell [Sat, 10 Nov 2018 18:00:00 +0000 (18:00 +0000)]
Disable -Wunreachable-code for now, too many false positives.
Taylor R Campbell [Thu, 8 Nov 2018 18:56:40 +0000 (18:56 +0000)]
Use -frounding-math since we change the rounding mode.
Chris Hanson [Sat, 10 Nov 2018 07:03:30 +0000 (23:03 -0800)]
Fix problems when trying to compile under macOS.
Chris Hanson [Fri, 9 Nov 2018 06:37:04 +0000 (22:37 -0800)]
Bump version number so it's different from release.
Chris Hanson [Fri, 9 Nov 2018 06:46:09 +0000 (22:46 -0800)]
Merge branch 'master' of git.sv.gnu.org:/srv/git/mit-scheme
Chris Hanson [Fri, 9 Nov 2018 06:44:51 +0000 (22:44 -0800)]
Allow --enable-debugging to have a third value.
Anything other than "yes" or "no" will be interpreted as setting the C compiler
to generate debugging symbols, but not turn on all of the debugging helpers in
the microcode.
Taylor R Campbell [Thu, 8 Nov 2018 18:30:27 +0000 (18:30 +0000)]
Show the expression too.
Taylor R Campbell [Thu, 8 Nov 2018 17:59:19 +0000 (17:59 +0000)]
Use multiple tests rather than an iterated test to get all results.
Taylor R Campbell [Thu, 8 Nov 2018 17:25:14 +0000 (17:25 +0000)]
Paranoia (and gcc warning suppression): Avoid arithmetic overflow.
Taylor R Campbell [Thu, 8 Nov 2018 17:09:47 +0000 (17:09 +0000)]
Disable -Wstringop-truncation.
We use strncpy in very limited ways, one of which is for struct
sockaddr_un, for which strncpy truncation is correct.
Taylor R Campbell [Thu, 8 Nov 2018 16:19:03 +0000 (16:19 +0000)]
Explain why we don't do -Wmissing-prototypes yet.
Taylor R Campbell [Thu, 8 Nov 2018 16:17:41 +0000 (16:17 +0000)]
Add -Wunreachable-code and -Wwrite-strings.
Taylor R Campbell [Thu, 8 Nov 2018 16:16:25 +0000 (16:16 +0000)]
Merge all the warning flags into the same list.
Taylor R Campbell [Thu, 8 Nov 2018 16:13:32 +0000 (16:13 +0000)]
Subscribe to particular warning flags, not to -Wextra.
-Wextra now entails -Wcast-function-type, which is incompatible with
various Unix APIs like sigaction.
Taylor R Campbell [Thu, 8 Nov 2018 16:02:09 +0000 (16:02 +0000)]
Fix reader NaN notation: -nan.0/+nan.0, not just nan.0.
Taylor R Campbell [Thu, 8 Nov 2018 15:44:43 +0000 (15:44 +0000)]
Some trivial tests for read/write invariance.
One xfail: The `nan.0' notation reads as NaN, not as a symbol, and
`+nan.0' is not recognized.
Taylor R Campbell [Thu, 8 Nov 2018 08:22:51 +0000 (08:22 +0000)]
More atan2 edge cases.
Taylor R Campbell [Thu, 8 Nov 2018 08:13:33 +0000 (08:13 +0000)]
Fix edge cases of flonum divide and atan2.
Taylor R Campbell [Thu, 8 Nov 2018 08:09:47 +0000 (08:09 +0000)]
Test edge cases of flonum-divide primitive and of atan.
Taylor R Campbell [Thu, 8 Nov 2018 07:49:02 +0000 (07:49 +0000)]
Let the system math library elicit IEEE 754 exceptions.
Don't trap in our ucode primitive wrappers if the floating-point
exception isn't trapped.
Taylor R Campbell [Thu, 8 Nov 2018 07:47:20 +0000 (07:47 +0000)]
Test the flonum-sqrt ucode primitive explicitly.
The compiler open-codes it in flo:sqrt on amd64, which hardware gives
the correct behaviour, but the ucode does not right now.
Taylor R Campbell [Thu, 8 Nov 2018 07:42:50 +0000 (07:42 +0000)]
Follow IEEE 754 semantics: disable floating-point traps by default.
Taylor R Campbell [Thu, 8 Nov 2018 07:40:13 +0000 (07:40 +0000)]
Add tests for floating-point exceptions.
Taylor R Campbell [Thu, 8 Nov 2018 02:12:36 +0000 (02:12 +0000)]
Mind my i's and j\s.
Taylor R Campbell [Thu, 8 Nov 2018 02:11:54 +0000 (02:11 +0000)]
I broke random-bytevector for large inputs.
Taylor R Campbell [Wed, 7 Nov 2018 17:28:37 +0000 (17:28 +0000)]
Rewrite random number generator.
New one has 32-byte state s, produces output x by splitting 64-byte
ChaCha20_s(0) into 32-byte halves s' and x and replacing the state by
s'.
I added two alternate implementations of flo:random-unit, one which
samples real numbers uniformly from [0,1] and rounds them to
floating-point numbers, and one which samples real numbers uniformly
from (2^{-emin - p - 1}, 1 - ulp(1)/4) and rounds them to
floating-point numbers. The latter is wrong for various reasons but
it is closer to what we historically provided, so it is what we use
for now.
I removed the fallback in case get-entropy (/dev/urandom) fails,
which means this won't work on Windows until someone teaches the
microcode to call CryptGenRandom there, and won't work in a chroot
unless someone teaches it to use getentropy(2) or getrandom(2) or
whatever.
If this causes any problems, feel free to back out this commit --
aside from refusing to fall back to getting `entropy' from the clock
and having a different export format, this is intended to be a
drop-in replacement for the old random.scm (hence the recent tests),
so if I made a mistake just back it out, let me know what went wrong,
and I'll add more tests before re-merging it.
Taylor R Campbell [Wed, 7 Nov 2018 17:20:23 +0000 (17:20 +0000)]
Test that make-random-source is deterministic.
Taylor R Campbell [Wed, 7 Nov 2018 17:15:13 +0000 (17:15 +0000)]
Randomize the dispatch tag cache; don't copy the system state.
Taylor R Campbell [Wed, 7 Nov 2018 17:09:55 +0000 (17:09 +0000)]
Use get-entropy primitive to initialize random states.
Taylor R Campbell [Wed, 7 Nov 2018 17:06:50 +0000 (17:06 +0000)]
Remember to close /dev/urandom when done.
Taylor R Campbell [Wed, 7 Nov 2018 16:28:59 +0000 (16:28 +0000)]
Check for fenv.h and ieeefp.h functions only if the header is there.
Makes it easier to disable these and test our own version by just
setting ac_cv_header_fenv_h=no ac_cv_header_ieeefp_h=no.
Taylor R Campbell [Wed, 7 Nov 2018 16:27:44 +0000 (16:27 +0000)]
Add -Werror after all autoconf checks.
If we do it before, the autoconf checks -- which are full of compiler
warnings -- all fail.
Taylor R Campbell [Wed, 7 Nov 2018 16:27:15 +0000 (16:27 +0000)]
Need "osentropy.h" for OS_get_entropy.
Taylor R Campbell [Wed, 7 Nov 2018 16:27:01 +0000 (16:27 +0000)]
Use "config.h" to get uint8_t. No more need of <stddef.h> for size_t.
Taylor R Campbell [Wed, 7 Nov 2018 16:26:23 +0000 (16:26 +0000)]
Fix prototypes for x87_read/write_environment.
Taylor R Campbell [Wed, 7 Nov 2018 16:00:48 +0000 (16:00 +0000)]
Use a fresh random state for randomized tests.
Taylor R Campbell [Wed, 7 Nov 2018 07:53:44 +0000 (07:53 +0000)]
More floating-point parameters.
Taylor R Campbell [Wed, 7 Nov 2018 07:52:46 +0000 (07:52 +0000)]
New primitive (get-entropy bv) randomly fills a 32-byte vector.
Taylor R Campbell [Wed, 7 Nov 2018 07:40:12 +0000 (07:40 +0000)]
Turn off -Werror here; breaks configure.
Should turn it back on somewhere else.
Taylor R Campbell [Wed, 7 Nov 2018 05:35:36 +0000 (05:35 +0000)]
Missed a run-sub-test.
Taylor R Campbell [Wed, 7 Nov 2018 05:33:52 +0000 (05:33 +0000)]
New procedure (bytevector-zero-explicit! <bv> [<start> [<end>]]).
Intended to zero the memory backing a bytevector even if the values
will never be used again and an aggressively optimizing compiler can
prove that.
Doesn't actually work (GC can move stuff without zeroing it) but it
may help to have it in order to tag where it _would_ be needed if we
could make it work in the future.
Taylor R Campbell [Wed, 7 Nov 2018 05:24:41 +0000 (05:24 +0000)]
Fix indentation.
Taylor R Campbell [Wed, 7 Nov 2018 05:10:18 +0000 (05:10 +0000)]
Make some of my stupid old randomized tests a little less slow.
Would be better to rewrite these so they're not as stupid.
Taylor R Campbell [Wed, 7 Nov 2018 05:08:02 +0000 (05:08 +0000)]
Halfway fix some broken tests.
- Use with-test-properties, not run-sub-test.
- Disable run-sub-test in the test environment; it doesn't make sense
for tests to call it.
- Add a rudimentary expect-failure. (Feel free to spruce this up
with a message detailing the nature of the expectation, a note in
the final report, &c.)
- Partly fix test-char-set.scm, which was silently nonfunctional
because of run-sub-test. Leave an xfail for the part I don't know
how to fix. (Chris -- if you could fix this, that would be great!)
Taylor R Campbell [Wed, 7 Nov 2018 04:03:28 +0000 (04:03 +0000)]
Depend on x11-const directly, not via a stamp and submake.
Going via the submake means parallel make can get confused and cause
two processes to try to build the same thing at the same time and
stomp on each other's toes.
Taylor R Campbell [Wed, 7 Nov 2018 03:08:47 +0000 (03:08 +0000)]
Make the C compiler warnings that we subscribe to fatal.
Taylor R Campbell [Wed, 7 Nov 2018 03:08:28 +0000 (03:08 +0000)]
Confirm the primitive respects the bounds too.
Taylor R Campbell [Wed, 7 Nov 2018 02:52:37 +0000 (02:52 +0000)]
Simplify construction of chacha core test vector tests.
Taylor R Campbell [Wed, 7 Nov 2018 02:52:17 +0000 (02:52 +0000)]
Test fenceposts in chacha core primitives.
Taylor R Campbell [Wed, 7 Nov 2018 02:39:25 +0000 (02:39 +0000)]
Unfix the fix for an off-by-zero.
arg_ulong_index_integer(argno, n) takes n as _exclusive_ upper bound.
In this case, n - 64 is a valid starting index. So the exclusive
upper bound is n - 64 + 1 = n - 63.
Taylor R Campbell [Wed, 7 Nov 2018 02:39:20 +0000 (02:39 +0000)]
Fix more formatting.
Chris Hanson [Tue, 6 Nov 2018 05:53:04 +0000 (21:53 -0800)]
Eliminate unused variable warnings.
Chris Hanson [Tue, 6 Nov 2018 05:51:23 +0000 (21:51 -0800)]
Fix a bug in prchacha: compiler warned of unused variable.
Also there was an off-by-one thinko, and incorrect PRIMITIVE_HEADER arguments.
While I was at it I tweaked the formatting a little.
Taylor R Campbell [Mon, 5 Nov 2018 04:41:14 +0000 (04:41 +0000)]
Fix sign of (flo:ulp -infinity). Simplify.
flo:ulp is supposed to return a positive magnitude, in particular the
absolute distance from x to the next larger floating-point number in
magnitude.
Taylor R Campbell [Mon, 5 Nov 2018 04:40:00 +0000 (04:40 +0000)]
Tidy up ieee754.scm, add some tests, and export some of it.
Chris Hanson [Sun, 4 Nov 2018 04:55:19 +0000 (21:55 -0700)]
Allow sequences to contain zero elements.
Chris Hanson [Fri, 2 Nov 2018 05:07:12 +0000 (22:07 -0700)]
Don't use upper-case symbols in loader.
The system might be in a non-case-fold mode.
Chris Hanson [Fri, 2 Nov 2018 03:31:37 +0000 (20:31 -0700)]
Don't print internals of promises.
Chris Hanson [Fri, 2 Nov 2018 03:29:37 +0000 (20:29 -0700)]
Fix printing of promises.
Chris Hanson [Thu, 1 Nov 2018 05:42:43 +0000 (22:42 -0700)]
Merge branch 'release-10'
Chris Hanson [Thu, 1 Nov 2018 05:41:45 +0000 (22:41 -0700)]
Make macos dmg file read only.
Chris Hanson [Thu, 1 Nov 2018 01:55:47 +0000 (18:55 -0700)]
Fix problem with building and installing x11 plugin from native dist.
Taylor R Campbell [Wed, 31 Oct 2018 16:44:43 +0000 (16:44 +0000)]
Comment what log-logistic and logit-exp are for.
Taylor R Campbell [Wed, 31 Oct 2018 16:37:32 +0000 (16:37 +0000)]
Define (flo:ulp x) to be distance to next float in direction of x.
Thus, (flo:ulp 1.) = (flo:ulp -1.) = flo:ulp-of-one. Bottoms out at
infinity: (flo:ulp x) = x if x is infinite. This definition applies
to zero, too, giving the smallest subnormal.
Taylor R Campbell [Wed, 31 Oct 2018 16:35:54 +0000 (16:35 +0000)]
Add Mode: C line on request from mejja.
(Not keen to otherwise reformat this code from an upstream, though.)
Taylor R Campbell [Tue, 30 Oct 2018 16:16:38 +0000 (16:16 +0000)]
Clarify some comments.
Taylor R Campbell [Tue, 30 Oct 2018 16:04:13 +0000 (16:04 +0000)]
Reorganize logsumexp for clarity. No functional change.
Taylor R Campbell [Tue, 30 Oct 2018 15:59:04 +0000 (15:59 +0000)]
Mask underflow exception in logsumexp because it doesn't matter.
Taylor R Campbell [Tue, 30 Oct 2018 15:41:22 +0000 (15:41 +0000)]
Add (logsumexp (list 1 2 3)) = (log (+ (exp 1) (exp 2) (exp 3))).
Chris Hanson [Tue, 30 Oct 2018 04:30:33 +0000 (21:30 -0700)]
Don't assume that it's possible to run MIT_SCHEME_EXE during configuration.
This won't work with a native distribution, since there may not be a working
scheme on the host. Instead use other ways to do the necessary work.
Chris Hanson [Tue, 30 Oct 2018 01:43:02 +0000 (18:43 -0700)]
Bump revision to 10.1.1 to fix stupid bug.
Chris Hanson [Sun, 28 Oct 2018 23:08:29 +0000 (16:08 -0700)]
Reduce default heap size for 32-bit systems.
During build was getting sporadic "unable to mmap heap" errors.
Chris Hanson [Sun, 28 Oct 2018 22:10:02 +0000 (15:10 -0700)]
Fix typo in previous change.
Taylor R Campbell [Sun, 28 Oct 2018 19:56:35 +0000 (19:56 +0000)]
Eliminate flo:epsilon.
The name is confusing. It means two different things: the distance
from 1 to the next positive floating-point number, and the maximum
relative error of rounding to the nearest floating-point number.
Provide the separate names flo:ulp-of-one and flo:error-bound for
these so that you're not even tempted to be confused by the name
`epsilon'.
(But continue to say `eps' in the proofs in the comments where it's
obvious that we're talking about relative error bounds and a short
name for that is essential for legibility.)
Taylor R Campbell [Sun, 28 Oct 2018 04:13:26 +0000 (04:13 +0000)]
Tidy up error analysis of logit and logistic.
Add (logit1/2+ p) = (logit (+ 1/2 p)) and (logistic-1/2 x) = (-
(logistic x) 1/2), for reasons like log1p and expm1. Add some
trivial tests of the edge cases they cover where logit and logistic
are ill-conditioned.
Chris Hanson [Sun, 28 Oct 2018 03:43:38 +0000 (20:43 -0700)]
Merge branch 'release-10'
Chris Hanson [Fri, 26 Oct 2018 02:02:51 +0000 (19:02 -0700)]
No need to separately configure plugins.
Chris Hanson [Fri, 26 Oct 2018 02:02:36 +0000 (19:02 -0700)]
Change "module" to "plugin".
Chris Hanson [Sun, 28 Oct 2018 03:41:15 +0000 (20:41 -0700)]
Eliminate compiler warning.
Chris Hanson [Sat, 27 Oct 2018 23:49:09 +0000 (16:49 -0700)]
Use create-dmg script to automate building of macOS image.
Chris Hanson [Sat, 27 Oct 2018 22:40:58 +0000 (15:40 -0700)]
Fix a couple of compiler warnings from 32-bit system.
Chris Hanson [Sat, 27 Oct 2018 05:20:16 +0000 (22:20 -0700)]
Merge branch 'release-10' of git.sv.gnu.org:/srv/git/mit-scheme into release-10
Chris Hanson [Sat, 27 Oct 2018 05:19:58 +0000 (22:19 -0700)]
Fix thinko.
Chris Hanson [Sat, 27 Oct 2018 05:19:42 +0000 (22:19 -0700)]
Eliminate unavailable (and unused) load option.
Taylor R Campbell [Sat, 27 Oct 2018 02:45:23 +0000 (02:45 +0000)]
Forgot to define this. Ummm, I guess cref accidentally made it work?
Taylor R Campbell [Sat, 27 Oct 2018 02:37:06 +0000 (02:37 +0000)]
Expose flo:radix = 2 too, just for good measure, and for assertions.
Taylor R Campbell [Sat, 27 Oct 2018 02:21:06 +0000 (02:21 +0000)]
Export primitive flonum-denormalize as flo:ldexp and flo:scalbn.
These are the familiar -- and when FLT_RADIX = 2, equivalent -- names
for the operation in libm.
`Denormalize' is not right: neither does it turn a normal number into
a subnormal, nor does it put anything into a canonical interval like
[1/2, 1) or [1, 2). I personally favour `shift' -- it is, in Z, the
same as the bitwise shift operation. But unless anyone else wants to
join me against this windmill I'll just stay with the familiar if
ugly libm names.
Taylor R Campbell [Sat, 27 Oct 2018 02:11:27 +0000 (02:11 +0000)]
Disable errno checking in libm functions.
If there's a floating-point exception, we have a mechanism for
dealing with it -- and continuing without a trap if the user so
desires.
Leave in the restriction on flo:log1p and flo:expm1 because those are
implementation limitations in the i386 compiler; the full functions
are implemented in the runtime.
Taylor R Campbell [Sat, 27 Oct 2018 02:11:14 +0000 (02:11 +0000)]
log1pexp(x) is never exactly x even if that's the best approximation.