Chris Hanson [Mon, 8 Jul 2019 19:33:23 +0000 (15:33 -0400)]
Don't use +inf.0 because it throws an exception on macos.
This will need to be fixed but right now it prevents compilation.
Taylor R Campbell [Mon, 8 Jul 2019 00:57:25 +0000 (00:57 +0000)]
Plot the new math functions and their condition numbers.
Plots are done purely in PostScript, so no additional tools required
on top of the existing PostScript/PDF stack we essentially already
depended on. Plots are cubic spline interpolations computed by a
little automatic differentiation library in PostScript.
Fix some mistakes in the prose characterizations of the condition
numbers that I had written.
Taylor R Campbell [Mon, 1 Jul 2019 00:22:21 +0000 (00:22 +0000)]
Fix typo.
Taylor R Campbell [Mon, 1 Jul 2019 00:16:04 +0000 (00:16 +0000)]
Clarify the non-significance of the total ordering.
Taylor R Campbell [Mon, 1 Jul 2019 00:13:38 +0000 (00:13 +0000)]
Tweak some text strength.
Taylor R Campbell [Mon, 1 Jul 2019 00:11:44 +0000 (00:11 +0000)]
Don't call NaN a number.
Taylor R Campbell [Mon, 1 Jul 2019 00:00:31 +0000 (00:00 +0000)]
Fix pasto.
Taylor R Campbell [Sun, 30 Jun 2019 23:44:16 +0000 (23:44 +0000)]
Flesh out an example and fix a typo.
Taylor R Campbell [Sun, 30 Jun 2019 23:28:06 +0000 (23:28 +0000)]
Add flo:signed-lgamma.
Taylor R Campbell [Sun, 30 Jun 2019 23:08:24 +0000 (23:08 +0000)]
Note a few more flonum operations.
Taylor R Campbell [Sun, 30 Jun 2019 22:48:30 +0000 (22:48 +0000)]
Update random number generation section of manual.
Taylor R Campbell [Sun, 30 Jun 2019 22:48:08 +0000 (22:48 +0000)]
Use a trailing 0 for text clarity.
Taylor R Campbell [Sun, 30 Jun 2019 21:59:43 +0000 (21:59 +0000)]
Document floating-point environment, exceptions, rounding modes.
Taylor R Campbell [Sun, 30 Jun 2019 20:52:56 +0000 (20:52 +0000)]
Update documentation for floating-point operations.
Taylor R Campbell [Sun, 30 Jun 2019 19:50:12 +0000 (19:50 +0000)]
Fix flo:ulp on NaN.
Taylor R Campbell [Sun, 30 Jun 2019 19:49:19 +0000 (19:49 +0000)]
flo:ulp is busted on NaN.
Taylor R Campbell [Sun, 30 Jun 2019 19:06:04 +0000 (19:06 +0000)]
Document copysign.
Taylor R Campbell [Sun, 30 Jun 2019 18:58:54 +0000 (18:58 +0000)]
Couple more logsumexp tests.
Taylor R Campbell [Sun, 30 Jun 2019 04:39:33 +0000 (04:39 +0000)]
Document some loggy numerical functions.
Taylor R Campbell [Sun, 30 Jun 2019 04:30:24 +0000 (04:30 +0000)]
Repair mistakes in proofs of some error bounds.
While here:
- Spell out some magic constants.
- Handle and test some edge cases in log1pexp and log1mexp.
- Paginate.
Taylor R Campbell [Thu, 30 May 2019 05:29:56 +0000 (05:29 +0000)]
Expect some failures to signal errors on fp exception traps on arm64.
Chris Hanson [Sat, 29 Jun 2019 21:21:52 +0000 (14:21 -0700)]
Fix calls to read-bytevector! that weren't aware of EOF values.
Chris Hanson [Sun, 9 Jun 2019 19:52:07 +0000 (12:52 -0700)]
Add "adapters" to list of source files.
Chris Hanson [Sun, 9 Jun 2019 04:07:54 +0000 (21:07 -0700)]
Suggest use of macOS command line developer tools rather than Xcode.
Chris Hanson [Sun, 9 Jun 2019 02:20:02 +0000 (19:20 -0700)]
Update make-upload-files to new version.
Chris Hanson [Sat, 8 Jun 2019 21:23:48 +0000 (14:23 -0700)]
Fix incorrect edit.
Chris Hanson [Sat, 8 Jun 2019 05:02:39 +0000 (22:02 -0700)]
Teach reader to find and respect "coding" attribute.
This allows a file to override the default utf-8 coding.
Chris Hanson [Fri, 7 Jun 2019 06:10:07 +0000 (23:10 -0700)]
Make sure that ports use ISO 8859-1 coding.
Chris Hanson [Fri, 7 Jun 2019 05:25:29 +0000 (22:25 -0700)]
Modify CREF to show references to inherited bindings.
This will help track down which parts of the string abstraction need to be
replaced.
Taylor R Campbell [Wed, 29 May 2019 22:17:25 +0000 (22:17 +0000)]
lisppaste is dead.
Taylor R Campbell [Wed, 29 May 2019 21:14:09 +0000 (21:14 +0000)]
Fix bug that caused redrawing whole display on paren flash.
Taylor R Campbell [Wed, 29 May 2019 20:47:46 +0000 (20:47 +0000)]
Hold strong reference to message header while writing summary line.
This way the GC won't be inclined to eat it from under us when we're
just going to parse it again in a moment for the date or subject.
Taylor R Campbell [Wed, 29 May 2019 20:47:35 +0000 (20:47 +0000)]
Tighten encode-cache-namestring.
Taylor R Campbell [Wed, 29 May 2019 20:43:55 +0000 (20:43 +0000)]
Use channel I/O directly for file->string and string->file.
Here a string is an octet sequence, always in US-ASCII or UTF-8, so
we don't need the rigmarole of text I/O.
Taylor R Campbell [Wed, 29 May 2019 16:14:43 +0000 (16:14 +0000)]
Make number of topmost frames with expressions shown configurable.
Taylor R Campbell [Wed, 29 May 2019 16:13:50 +0000 (16:13 +0000)]
Use the Edwin-private %string-append.
No need to pay the cost of wide stuff with string-append*.
Taylor R Campbell [Wed, 29 May 2019 16:10:52 +0000 (16:10 +0000)]
Let SIGALRM do its thing even if we're on the right millisecond.
If we request a timer interrupt now in logic that closes a lot of
files, which runs through %deregister-io-descriptor, it looks like
_all_ the time is spent in closing files even if it's merely the case
that at least one file is closed every millisecond.
If we instead let SIGALRM do its thing, unless the interrupt is
_overdue_, then the profiler can discriminate at sub-millisecond
resolution where the time is spent which is what I really want.
Taylor R Campbell [Wed, 29 May 2019 14:33:29 +0000 (14:33 +0000)]
Line break between #; and multiline expression.
Otherwise Emacs gets confused.
Taylor R Campbell [Wed, 29 May 2019 04:57:53 +0000 (04:57 +0000)]
Use number->string directly; skip dispatch through write-to-string.
Taylor R Campbell [Wed, 29 May 2019 04:24:40 +0000 (04:24 +0000)]
Block interrupts, _then_ lock.
Otherwise an interrupt might try to acquire the lock while we already
hold it, leading to deadlock.
Taylor R Campbell [Wed, 29 May 2019 04:12:04 +0000 (04:12 +0000)]
Rework profiler to be more useful.
Just make a histogram of stacks and print that.
Taylor R Campbell [Wed, 29 May 2019 04:11:52 +0000 (04:11 +0000)]
Fix check for arity of hash: must be binary, not unary.
Taylor R Campbell [Wed, 29 May 2019 04:10:57 +0000 (04:10 +0000)]
Process pending thread events when unblocking them.
Partly fixes bug where profiler never got a chance to run when the
program was doing most of its work in short routines that block and
unblock thread events, like opening and closing files.
Only partly, because it seems something else unblocks thread events
without processing them -- until we do another block/unblock cycle as
in channel-close. Verified that very little time is actually spent
in channel-close; haven't yet tracked down who the culprit is.
Taylor R Campbell [Wed, 29 May 2019 00:53:14 +0000 (00:53 +0000)]
Integrate some subroutines that turn up hot in profiles.
Taylor R Campbell [Tue, 28 May 2019 13:46:11 +0000 (13:46 +0000)]
Merge branch 'riastradh-
20190527-unicodereplacechar'
Taylor R Campbell [Mon, 27 May 2019 16:21:08 +0000 (16:21 +0000)]
Implement character replacement on ill-formed octet sequences.
- (utf8->string bv start end #t) now replaces by U+FFFD.
Existing behaviour of (utf8->string bv [start end]) is unchanged so
that utf8->string will fail noisily rather than quietly fail to be
invertible by string->utf8 on certain inputs.
- Generic I/O input now replaces ill-formed octet sequences by U+FFFD.
TODO: Add (port/set-coding-error port <action>) for <action> =
replace or <action> = error, perhaps.
TODO: This does not exactly implement the replacement algorithm
recommended as a best practice by Unicode 9, ยง3.9, pp. 127-129. That
algorithm is inconveneint because our decoder is factored into (a)
claiming a length based on the first code unit, and then (b)
consuming exactly that many bytes; the algorithm requires us to
refactor it so that part (b) can say `never mind' and consume fewer
bytes than (a) requeste.
Taylor R Campbell [Mon, 27 May 2019 17:54:34 +0000 (17:54 +0000)]
Set port coding to ISO-8859-1 for IMAP.
This is a sleazy workaround: sometimes the input is really encoded as
UTF-8, but passing it through Scheme `strings' as ISO-8859-1 works
out to approximately the not-wrong thing. Really we should be
operating on octets, not on characters-as-if-they-were-octets.
Matt Birkholz [Fri, 17 May 2019 16:33:16 +0000 (09:33 -0700)]
Fix enumerate-graphics-types per documentation.
Chris Hanson [Wed, 8 May 2019 06:50:48 +0000 (23:50 -0700)]
Treat strings returned from primitives as UTF-8 coded.
In particular, make sure that filenames are treated this way, because this is
normal for modern unix systems. This change mostly affects filenames, but also
environment variables and command-line strings.
This is necessary because strings passed to primitives are converted to UTF-8
bytevectors. Otherwise, a non-ASCII filename returned by a primitive won't be
converted back to the same bytes when passed to another primitive.
Chris Hanson [Wed, 8 May 2019 05:58:06 +0000 (22:58 -0700)]
On macOS, support building without Xcode installed.
However, command line tools must be installed.
Matt Birkholz [Mon, 29 Apr 2019 21:43:08 +0000 (14:43 -0700)]
x11-test: Expect the correct device name. Use x-graphics-draw-arc.
Matt Birkholz [Mon, 29 Apr 2019 20:34:18 +0000 (13:34 -0700)]
x-graphics-draw-arc: Add missing parameters.
Taylor R Campbell [Sat, 20 Apr 2019 19:30:40 +0000 (19:30 +0000)]
Make this run on ucode without nonnegative-fixnum-length/mask.
Taylor R Campbell [Sat, 20 Apr 2019 19:23:16 +0000 (19:23 +0000)]
Specify arity in newer primitives.
Arthur A. Gleckler [Wed, 20 Mar 2019 00:01:19 +0000 (17:01 -0700)]
Fix spelling error.
This came from the text of SRFI 9, which I've also corrected.
Chris Hanson [Mon, 18 Mar 2019 05:56:09 +0000 (22:56 -0700)]
Eliminate unused handler for printing URIs.
Chris Hanson [Sat, 16 Mar 2019 08:10:52 +0000 (01:10 -0700)]
Add test to make sure that string slices print correctly.
Chris Hanson [Sat, 16 Mar 2019 05:27:01 +0000 (22:27 -0700)]
Fix bug in printing of string slices.
Chris Hanson [Sat, 16 Mar 2019 05:15:58 +0000 (22:15 -0700)]
Remove cleverness for SIGTERM and SIGHUP.
SIGTERM shouldn't be caught; instead just leave the default behavior. SIGHUP is
sent by Emacs when the *scheme* buffer is killed; it must kill the process or
we're left with a detached process.
Taylor R Campbell [Sat, 23 Feb 2019 03:21:00 +0000 (03:21 +0000)]
Fix recursion in n-ary append.
Taylor R Campbell [Sat, 23 Feb 2019 03:16:30 +0000 (03:16 +0000)]
Test append on dotted lists. I broked it.
Taylor R Campbell [Mon, 11 Feb 2019 05:07:22 +0000 (05:07 +0000)]
Add release note about cross-compilation.
Taylor R Campbell [Mon, 11 Feb 2019 05:00:51 +0000 (05:00 +0000)]
Add release notes about big-endian and powerpc.
Taylor R Campbell [Mon, 11 Feb 2019 05:00:36 +0000 (05:00 +0000)]
Use arity-dispatched procedures for APPEND and APPEND!.
APPEND turns up hot in the compiler, because LAP = quasiquote. Let's
skip some round-trips through the microcode, shall we?
Taylor R Campbell [Mon, 11 Feb 2019 00:56:37 +0000 (00:56 +0000)]
Simplify and factor out carefully checking for stack overflows.
Taylor R Campbell [Mon, 11 Feb 2019 00:44:21 +0000 (00:44 +0000)]
Confirm delv does not blow out the stack.
Taylor R Campbell [Mon, 11 Feb 2019 00:36:36 +0000 (00:36 +0000)]
Add some tests of blowing out the stack with SRFI 1.
Taylor R Campbell [Mon, 11 Feb 2019 00:16:06 +0000 (00:16 +0000)]
Tidy up deletion routines in list.scm.
- Share code.
- Use constant stack space.
Taylor R Campbell [Mon, 11 Feb 2019 00:45:58 +0000 (00:45 +0000)]
Merge branch 'riastradh-
20190210-letrecdefn'
- Improve performance of LETREC* and unary LETREC.
- Convert various multi-way LETRECs to internal definitions.
The compiler knows about internal definitions. Teaching to recognize
patterns of LET and SET! produced for LETREC semantics is a lot of
trouble, and internal definitions are usually much more legible
anyway.
This is a lot of little commits in case I made a mistake so you can
bisect to find the mistake.
Taylor R Campbell [Sun, 10 Feb 2019 22:40:10 +0000 (22:40 +0000)]
Convert multi-LETREC to internal definitions in edwin/undo.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:40:05 +0000 (22:40 +0000)]
Convert multi-LETREC to internal definitions in edwin/txtprp.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:39:59 +0000 (22:39 +0000)]
Convert multi-LETREC to internal definitions in edwin/tterm.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:39:54 +0000 (22:39 +0000)]
Convert multi-LETREC to internal definitions in edwin/tparse.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:39:49 +0000 (22:39 +0000)]
Convert multi-LETREC to internal definitions in edwin/string.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:39:41 +0000 (22:39 +0000)]
Convert multi-LETREC to internal definitions in edwin/occur.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:39:07 +0000 (22:39 +0000)]
Convert multi-LETREC to internal definitions in sos/class.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:38:53 +0000 (22:38 +0000)]
Convert multi-LETREC to internal definitions in uri.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:38:50 +0000 (22:38 +0000)]
Convert multi-LETREC to internal definitions in thread.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:38:44 +0000 (22:38 +0000)]
Convert multi-LETREC to internal definitions in stream.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:38:24 +0000 (22:38 +0000)]
Convert multi-LETREC to internal definitions in srfi-1.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:38:10 +0000 (22:38 +0000)]
Convert multi-LETREC to internal definitions in rfc2822-headers.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:37:54 +0000 (22:37 +0000)]
Convert multi-LETREC to internal definitions in ordvec.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:37:37 +0000 (22:37 +0000)]
Convert multi-LETREC to internal definitions in list.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:37:18 +0000 (22:37 +0000)]
Convert multi-LETREC to internal definitions in lambda-list.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:35:38 +0000 (22:35 +0000)]
Convert multi-LETREC to internal definitions in dispatch-cache.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:35:19 +0000 (22:35 +0000)]
Convert multi-LETREC to internal definitions in arith.scm.
Taylor R Campbell [Sun, 10 Feb 2019 22:25:12 +0000 (22:25 +0000)]
Convert multi-LETREC to internal definitions.
The compressor turns up hot in profiles. This doesn't make a big
difference but it saves some closure consing and reduces some
indentation levels.
Taylor R Campbell [Sun, 10 Feb 2019 22:20:32 +0000 (22:20 +0000)]
Add some LETREC and LETREC* tests.
Taylor R Campbell [Sun, 10 Feb 2019 22:09:48 +0000 (22:09 +0000)]
Use internal definitions for LETREC* and unary LETREC.
The compiler will recognize these better than LET and SET!; teaching
it to recognize LET and SET! is more trouble than I want to deal with
at the moment. Internal definitions at the scode level have LETREC*
semantics anyway, and with only a single binding, LETREC and LETREC*
coincide.
Chris Hanson [Sun, 10 Feb 2019 22:04:07 +0000 (14:04 -0800)]
Eliminate potentially-problematic use of delay for char-set-predicate.
Taylor R Campbell [Sun, 10 Feb 2019 04:34:34 +0000 (04:34 +0000)]
Use arity-dispatched procedures for MAP, FOR-EACH, &c.
Requires shuffling initialization order in make.scm a little bit so
that we can call MAKE-ARITY-DISPATCHED-PROCEDURE in list.scm.
Saves a trip through the microcode to compute the lexpr for each call
to MAP and FOR-EACH, which turned up hot in profiles.
Taylor R Campbell [Sun, 10 Feb 2019 04:32:05 +0000 (04:32 +0000)]
Integrate NULL-LIST?.
This is used all over common SRFI 1 list operations, so what should
have been a pair of conditional branches turned into unknown
procedure calls, sometimes through a trampoline to fill in default
arguments, which turned up in profiling the compiler.
Taylor R Campbell [Sun, 10 Feb 2019 04:26:40 +0000 (04:26 +0000)]
Add GENERAL-CAR-CDR to usual integrations.
The compiler explicitly calls this for every RTL accessor, so that
would explain why this primitive was turning up hot. Should speed up
the compiler a little to avoid diving into microcoded primitives for
every attempt to get a piece out of an RTL expression during the RTL
passes!
Chris Hanson [Sun, 10 Feb 2019 00:20:33 +0000 (16:20 -0800)]
Put char-set microcode table back in data structure. Edwin needs this.
Taylor R Campbell [Sat, 9 Feb 2019 16:14:15 +0000 (16:14 +0000)]
Cache char set table.
This is a provisional kludge to make string searches by character set
in Edwin less obscenely expensive than they are at the moment, which
is killing IMAIL.
Formerly we just cached these in the char-set object itself.
Taylor R Campbell [Sat, 9 Feb 2019 16:14:57 +0000 (16:14 +0000)]
Integrate record accessors and modifiers where convenient.
Limited to record types with:
- a defined predicate name we can pass to GUARANTEE, and
- no parent type so we can statically determine the field offsets.
Obviously it would be better if the compiler could do the flow
analysis to figure out where it can statically partially evaluate
RECORD-ACCESSOR and RECORD-MODIFIER, but, y'know, exercise for the
reader.
Taylor R Campbell [Wed, 9 Jan 2019 04:04:51 +0000 (04:04 +0000)]
Defer unmasking timer interrupt until after daemon is marked running.
Otherwise we might re-enter on timer interrupt.
Taylor R Campbell [Wed, 9 Jan 2019 04:04:12 +0000 (04:04 +0000)]
Avoid consing closures if we're low on space.
Taylor R Campbell [Sun, 6 Jan 2019 04:14:15 +0000 (04:14 +0000)]
Can't see why I chose to discard recent samples a decade ago.
Taylor R Campbell [Sun, 6 Jan 2019 04:14:01 +0000 (04:14 +0000)]
Dust off stack sampler.
Use of compiled-code-address? will be needed by the
riastrah-
20181220-closentry{...} branch.