mit-scheme.git
5 years agouser.texinfo: Merged with 10.1.10 and updated for Ubuntu 19.10.
Matt Birkholz [Sat, 14 Dec 2019 04:23:32 +0000 (21:23 -0700)]
user.texinfo: Merged with 10.1.10 and updated for Ubuntu 19.10.

5 years agotests: Re-enable compiler/test-vartrap.
Matt Birkholz [Sat, 14 Dec 2019 04:01:20 +0000 (21:01 -0700)]
tests: Re-enable compiler/test-vartrap.

5 years agodebian/prerm: Simplify; use global delete-plugin-list binding.
Matt Birkholz [Fri, 13 Dec 2019 06:58:46 +0000 (23:58 -0700)]
debian/prerm: Simplify; use global delete-plugin-list binding.

5 years agoblowfish: Include build dependencies texinfo and texlive.
Matt Birkholz [Fri, 13 Dec 2019 06:56:39 +0000 (23:56 -0700)]
blowfish: Include build dependencies texinfo and texlive.

5 years agodevops: Simpler char-in regsexps.
Matt Birkholz [Fri, 13 Dec 2019 06:54:02 +0000 (23:54 -0700)]
devops: Simpler char-in regsexps.

The char-in expression will union multiple char-set-ishes.

5 years agoWordsmith description of --band option.
Matt Birkholz [Fri, 13 Dec 2019 06:50:34 +0000 (23:50 -0700)]
Wordsmith description of --band option.

Drop "returning" a "full pathname".  Leave more room for the default.

5 years agoMerge branch 'master' into pucked.
Matt Birkholz [Fri, 13 Dec 2019 04:43:45 +0000 (21:43 -0700)]
Merge branch 'master' into pucked.

5 years agoMerge branch 'master' into pucked.
Matt Birkholz [Fri, 13 Dec 2019 04:40:26 +0000 (21:40 -0700)]
Merge branch 'master' into pucked.

5 years agoCarefully fix problems caused by changing char-set:graphic. master origin/master
Chris Hanson [Mon, 9 Dec 2019 09:31:35 +0000 (01:31 -0800)]
Carefully fix problems caused by changing char-set:graphic.

5 years agoAdd title of SRFI.
Chris Hanson [Sun, 8 Dec 2019 00:55:05 +0000 (16:55 -0800)]
Add title of SRFI.

5 years agoEliminate use of char-set-members.
Chris Hanson [Thu, 5 Dec 2019 06:19:52 +0000 (22:19 -0800)]
Eliminate use of char-set-members.

5 years agoEliminate use of ascii-range->char-set.
Chris Hanson [Thu, 5 Dec 2019 06:09:49 +0000 (22:09 -0800)]
Eliminate use of ascii-range->char-set.

5 years agoChange REPL to recognize and print multiple values.
Chris Hanson [Thu, 5 Dec 2019 05:20:47 +0000 (21:20 -0800)]
Change REPL to recognize and print multiple values.

5 years agoExtensive revision of Lists chapter in reference manual.
Chris Hanson [Thu, 5 Dec 2019 02:33:08 +0000 (18:33 -0800)]
Extensive revision of Lists chapter in reference manual.

5 years agoEliminate use of list-head and list-tail.
Chris Hanson [Thu, 5 Dec 2019 00:21:06 +0000 (16:21 -0800)]
Eliminate use of list-head and list-tail.

Also make reverse* an alias for append-reverse.

5 years agoEliminate use of with-values.
Chris Hanson [Thu, 5 Dec 2019 00:25:30 +0000 (16:25 -0800)]
Eliminate use of with-values.

5 years agoEliminate use of map*, append-map*, append-map*!.
Chris Hanson [Thu, 5 Dec 2019 00:19:41 +0000 (16:19 -0800)]
Eliminate use of map*, append-map*, append-map*!.

5 years agoConvert test-srfi-1 into a real test.
Chris Hanson [Wed, 4 Dec 2019 08:45:39 +0000 (00:45 -0800)]
Convert test-srfi-1 into a real test.

5 years agoRewrite foldX and reduceX for simplicity.
Chris Hanson [Wed, 4 Dec 2019 22:33:09 +0000 (14:33 -0800)]
Rewrite foldX and reduceX for simplicity.

Deprecate the non-standard X-left procedures, as well as the X* mappings that
can be expressed using fold-right.

5 years agoEliminate use of fold-left.
Chris Hanson [Wed, 4 Dec 2019 08:45:23 +0000 (00:45 -0800)]
Eliminate use of fold-left.

5 years agoForce indent-tabs-mode only for Scheme files.
Chris Hanson [Wed, 4 Dec 2019 07:11:44 +0000 (23:11 -0800)]
Force indent-tabs-mode only for Scheme files.

5 years agoSRFI 115 complete.
Chris Hanson [Tue, 3 Dec 2019 07:50:29 +0000 (23:50 -0800)]
SRFI 115 complete.

5 years agoPull Unicode segmentation support out of string and rewrite.
Chris Hanson [Tue, 3 Dec 2019 07:44:41 +0000 (23:44 -0800)]
Pull Unicode segmentation support out of string and rewrite.

This is a nearly complete reimplementation, with a simpler and faster DFA,
providing a fold-like interface.

The describing rules are nearly identical to those in UAX #29, which makes them
much easier to write and understand.  Also, there's a debugging feature that
shows how the DFA evolves for a given string.

5 years agoImplement more general zero-width assertions in the regexp NFA.
Chris Hanson [Tue, 3 Dec 2019 07:42:23 +0000 (23:42 -0800)]
Implement more general zero-width assertions in the regexp NFA.

5 years agoRound out the named char-set abstraction.
Chris Hanson [Tue, 3 Dec 2019 07:41:42 +0000 (23:41 -0800)]
Round out the named char-set abstraction.

5 years agoMore SRFI 115 work.
Chris Hanson [Tue, 3 Dec 2019 04:48:06 +0000 (20:48 -0800)]
More SRFI 115 work.

Fixed issues with implementation of regexp-match-submatch*.
Implemented procedures for folding and transforming.

5 years agoImplement regexp-search-all and fix two typos.
Chris Hanson [Tue, 3 Dec 2019 02:28:46 +0000 (18:28 -0800)]
Implement regexp-search-all and fix two typos.

5 years agoUse char-set:printing, not graphic, so we can type SPC in Edwin again.
Taylor R Campbell [Mon, 9 Dec 2019 02:27:19 +0000 (02:27 +0000)]
Use char-set:printing, not graphic, so we can type SPC in Edwin again.

5 years agoImplement regexp replacement.
Chris Hanson [Tue, 3 Dec 2019 00:05:48 +0000 (16:05 -0800)]
Implement regexp replacement.

5 years agoAdd missing call to run-deferred-boot-actions.
Chris Hanson [Tue, 3 Dec 2019 00:13:30 +0000 (16:13 -0800)]
Add missing call to run-deferred-boot-actions.

5 years agoImplement (w/FOO ...) patterns for SRFI 115.
Chris Hanson [Mon, 2 Dec 2019 17:43:47 +0000 (09:43 -0800)]
Implement (w/FOO ...) patterns for SRFI 115.

5 years agoAdd support for case-folding of character sets.
Chris Hanson [Mon, 2 Dec 2019 08:59:19 +0000 (00:59 -0800)]
Add support for case-folding of character sets.

5 years agoChar-set refactor: SRFI 14 complete.
Chris Hanson [Mon, 2 Dec 2019 08:37:01 +0000 (00:37 -0800)]
Char-set refactor: SRFI 14 complete.

5 years agoChar-set refactor: add another round of SRFI 14 support.
Chris Hanson [Mon, 2 Dec 2019 07:25:55 +0000 (23:25 -0800)]
Char-set refactor: add another round of SRFI 14 support.

Also rename old char-set->string to char-set->ascii-string since it conflicted
with SRFI 14.

5 years agoChar-set refactor: fill out some missing SRFI 14 procedures.
Chris Hanson [Mon, 2 Dec 2019 06:51:54 +0000 (22:51 -0800)]
Char-set refactor: fill out some missing SRFI 14 procedures.

5 years agoChar-set refactor: a bunch of small internal changes.
Chris Hanson [Mon, 2 Dec 2019 06:30:32 +0000 (22:30 -0800)]
Char-set refactor: a bunch of small internal changes.

5 years agoExpand the ilist and ranges abstractions in preparation for char-set refactor.
Chris Hanson [Mon, 2 Dec 2019 06:26:59 +0000 (22:26 -0800)]
Expand the ilist and ranges abstractions in preparation for char-set refactor.

5 years agoReorganization in preparation for char-set refactor.
Chris Hanson [Mon, 2 Dec 2019 04:49:07 +0000 (20:49 -0800)]
Reorganization in preparation for char-set refactor.

5 years agoA bunch of renames in preparation for char-set refactor.
Chris Hanson [Mon, 2 Dec 2019 04:11:21 +0000 (20:11 -0800)]
A bunch of renames in preparation for char-set refactor.

5 years agoMove string-fold{,-right} into runtime.
Chris Hanson [Sun, 1 Dec 2019 23:19:58 +0000 (15:19 -0800)]
Move string-fold{,-right} into runtime.

5 years agoRefactor regexp-rules to allow prefix arguments.
Chris Hanson [Sun, 1 Dec 2019 04:48:26 +0000 (20:48 -0800)]
Refactor regexp-rules to allow prefix arguments.

5 years agoRename SRE? -> VALID-SRE?.
Chris Hanson [Sat, 30 Nov 2019 23:13:06 +0000 (15:13 -0800)]
Rename SRE? -> VALID-SRE?.

5 years agoFix some issues with tags generation.
Chris Hanson [Mon, 2 Dec 2019 07:23:02 +0000 (23:23 -0800)]
Fix some issues with tags generation.

5 years agoFix typo in previous commit.
Chris Hanson [Mon, 2 Dec 2019 03:56:15 +0000 (19:56 -0800)]
Fix typo in previous commit.

5 years agoFix wrong number of arguments.
Taylor R Campbell [Sun, 1 Dec 2019 00:12:36 +0000 (00:12 +0000)]
Fix wrong number of arguments.

5 years agoCollapse NFA matcher node types together.
Chris Hanson [Sat, 30 Nov 2019 08:35:13 +0000 (00:35 -0800)]
Collapse NFA matcher node types together.

5 years agoOptimize follow-epsilons to reuse the same hash table.
Chris Hanson [Sat, 30 Nov 2019 08:22:57 +0000 (00:22 -0800)]
Optimize follow-epsilons to reuse the same hash table.

There's no reason to cons a new one on each call since we can just clear it
between calls.

5 years agoRewrite the NFA regexp interpreter into epsilon/matcher phases.
Chris Hanson [Sat, 30 Nov 2019 08:08:01 +0000 (00:08 -0800)]
Rewrite the NFA regexp interpreter into epsilon/matcher phases.

This greatly simplifies the interpreter's operation, and isolates the state
elision in the epsilon phase where it belongs.

Also added hash-consing of states, so that we can use eq? to compare them.

5 years agoChange NFS nodes to have a clearer set of types.
Chris Hanson [Sat, 30 Nov 2019 06:01:48 +0000 (22:01 -0800)]
Change NFS nodes to have a clearer set of types.

This also allows more detailed analysis of the graph: we can now write a program
that will determine the initial character(s) of a regexp and use that to speed
up search.

5 years agoMarkup and tweaks for partial SRFI 14 support.
Chris Hanson [Sat, 30 Nov 2019 06:01:06 +0000 (22:01 -0800)]
Markup and tweaks for partial SRFI 14 support.

5 years agoImplement NFA regexp engine and change srfi-115 to use it.
Chris Hanson [Sat, 30 Nov 2019 01:20:26 +0000 (17:20 -0800)]
Implement NFA regexp engine and change srfi-115 to use it.

5 years agoImplement char-set-size and update char-set:newline.
Chris Hanson [Sat, 30 Nov 2019 01:19:48 +0000 (17:19 -0800)]
Implement char-set-size and update char-set:newline.

5 years agoPartial implementation of SRFI 115.
Chris Hanson [Wed, 27 Nov 2019 08:09:29 +0000 (00:09 -0800)]
Partial implementation of SRFI 115.

5 years agoAdd character sets needed for SRFI 115.
Chris Hanson [Mon, 25 Nov 2019 21:39:17 +0000 (13:39 -0800)]
Add character sets needed for SRFI 115.

5 years agoRefactor regsexp for simplicity and future sharing.
Chris Hanson [Mon, 25 Nov 2019 09:33:26 +0000 (01:33 -0800)]
Refactor regsexp for simplicity and future sharing.

* The rule engine has been moved to its own file, rewritten, and generalized.

* The recursive implementation has been moved to its own file and slightly
  edited.

* There's new support for match replacement.

5 years agoAdd define-deferred-procedure to capture a common pattern.
Chris Hanson [Wed, 27 Nov 2019 06:27:27 +0000 (22:27 -0800)]
Add define-deferred-procedure to capture a common pattern.

5 years agoImplement complement, a predicate inverter.
Chris Hanson [Mon, 25 Nov 2019 05:50:53 +0000 (21:50 -0800)]
Implement complement, a predicate inverter.

5 years agoFix typo from earlier commit.
Chris Hanson [Mon, 25 Nov 2019 07:38:32 +0000 (23:38 -0800)]
Fix typo from earlier commit.

5 years agoImplementation of the immutable strings of SRFI 140.
Chris Hanson [Tue, 19 Nov 2019 06:48:40 +0000 (22:48 -0800)]
Implementation of the immutable strings of SRFI 140.

This does not include the mutable strings from SRFI 118.

5 years agoTighten up testing of duplicate imports to ensure R7RS compatibility.
Chris Hanson [Wed, 20 Nov 2019 05:23:06 +0000 (21:23 -0800)]
Tighten up testing of duplicate imports to ensure R7RS compatibility.

5 years agoChange list->string to take optional start and end args.
Chris Hanson [Tue, 19 Nov 2019 06:47:50 +0000 (22:47 -0800)]
Change list->string to take optional start and end args.

This extension matches SRFI 140.

5 years agoAllow string-builder to take a zero argument.
Chris Hanson [Tue, 19 Nov 2019 06:46:03 +0000 (22:46 -0800)]
Allow string-builder to take a zero argument.

This simplifies cases where the length of the result is known in advance and
passed as the buffer size.

5 years agoOn error, show a condition report instead of a condition object.
Chris Hanson [Tue, 19 Nov 2019 06:45:25 +0000 (22:45 -0800)]
On error, show a condition report instead of a condition object.

5 years agoUpdate reference manual with changes to string-{splitter,trimmer}.
Chris Hanson [Tue, 19 Nov 2019 02:15:06 +0000 (18:15 -0800)]
Update reference manual with changes to string-{splitter,trimmer}.

5 years agoModify string-splitter and string-trimmer to accept copier arg.
Chris Hanson [Mon, 18 Nov 2019 07:42:20 +0000 (23:42 -0800)]
Modify string-splitter and string-trimmer to accept copier arg.

5 years agoChange string-builder to use a vector as its buffer.
Chris Hanson [Mon, 18 Nov 2019 04:12:39 +0000 (20:12 -0800)]
Change string-builder to use a vector as its buffer.

Hopefully this will be generally faster since it's slower to copy characters
into a mutable string than it is into a vector.

5 years agoImplement UTF-{16,32} converters that use BOM.
Chris Hanson [Mon, 18 Nov 2019 00:48:18 +0000 (16:48 -0800)]
Implement UTF-{16,32} converters that use BOM.

This is needed for support of SRFI 140.

5 years agoFix bug in parsing of cond-expand.
Chris Hanson [Mon, 18 Nov 2019 00:35:53 +0000 (16:35 -0800)]
Fix bug in parsing of cond-expand.

5 years agoFix warning about re-exporting imported names from libraries.
Chris Hanson [Mon, 18 Nov 2019 00:14:20 +0000 (16:14 -0800)]
Fix warning about re-exporting imported names from libraries.

5 years agoFix typo.
Chris Hanson [Sun, 17 Nov 2019 22:51:36 +0000 (14:51 -0800)]
Fix typo.

5 years agoUse euclidean/ from division package as pointed out by Taylor.
Chris Hanson [Sat, 16 Nov 2019 23:01:40 +0000 (15:01 -0800)]
Use euclidean/ from division package as pointed out by Taylor.

Also fix typo.

5 years agoRegister srfi-133 and srfi-143 for cond-expand.
Chris Hanson [Mon, 11 Nov 2019 08:42:50 +0000 (00:42 -0800)]
Register srfi-133 and srfi-143 for cond-expand.

5 years agoFinish implementing SRFI 143.
Chris Hanson [Mon, 11 Nov 2019 08:39:10 +0000 (00:39 -0800)]
Finish implementing SRFI 143.

5 years agoAdd usual-integrations for SRFI-143 bindings.
Chris Hanson [Tue, 5 Nov 2019 04:19:26 +0000 (20:19 -0800)]
Add usual-integrations for SRFI-143 bindings.

5 years agoAdd some SRFI-143 renames to primitive arithmetic.
Chris Hanson [Tue, 5 Nov 2019 04:06:03 +0000 (20:06 -0800)]
Add some SRFI-143 renames to primitive arithmetic.

5 years agoIntegrate inline tests into testing framework.
Chris Hanson [Mon, 28 Oct 2019 01:08:29 +0000 (18:08 -0700)]
Integrate inline tests into testing framework.

5 years agoImplement as-needed loading of libraries on import.
Chris Hanson [Mon, 28 Oct 2019 00:48:07 +0000 (17:48 -0700)]
Implement as-needed loading of libraries on import.

This does topological sorting to do the loads in the right order, but doesn't
handle dependency loops (yet).

5 years agoAdd implementation of simple directed graph algorithms.
Chris Hanson [Sun, 27 Oct 2019 22:07:00 +0000 (15:07 -0700)]
Add implementation of simple directed graph algorithms.

5 years agoAdd ability to import a library into an existing environment.
Chris Hanson [Sun, 27 Oct 2019 20:52:55 +0000 (13:52 -0700)]
Add ability to import a library into an existing environment.

5 years agoAutomatically pre-register libraries in standard places.
Chris Hanson [Sun, 27 Oct 2019 05:50:52 +0000 (22:50 -0700)]
Automatically pre-register libraries in standard places.

5 years agoAdd param:hide-notifications?.
Chris Hanson [Sun, 27 Oct 2019 05:50:11 +0000 (22:50 -0700)]
Add param:hide-notifications?.

5 years agoCreate a new directory src/libraries, to hold R7RS libraries.
Chris Hanson [Wed, 23 Oct 2019 07:29:52 +0000 (00:29 -0700)]
Create a new directory src/libraries, to hold R7RS libraries.

Initially populate this with (srfi 133) and (mit inline-testing), plus unit
tests for the former.

5 years agoPreserve the initial host-library-db.
Chris Hanson [Tue, 22 Oct 2019 07:16:20 +0000 (00:16 -0700)]
Preserve the initial host-library-db.

5 years agoCreate a "standard" library providing access to the library database.
Chris Hanson [Tue, 22 Oct 2019 06:00:09 +0000 (23:00 -0700)]
Create a "standard" library providing access to the library database.

This is useful for programs that want to work directly on libraries.

5 years agoFix problems with reporting why an auto property isn't available.
Chris Hanson [Tue, 22 Oct 2019 05:58:01 +0000 (22:58 -0700)]
Fix problems with reporting why an auto property isn't available.

The previous approach was not filtering the dependencies right.

5 years agoEliminate duplicate binding.
Chris Hanson [Tue, 22 Oct 2019 05:13:46 +0000 (22:13 -0700)]
Eliminate duplicate binding.

5 years agoDon't rewrite library imports after parsing them.
Chris Hanson [Tue, 22 Oct 2019 05:12:36 +0000 (22:12 -0700)]
Don't rewrite library imports after parsing them.

It's more convenient to have the retain their syntax, so that they can be used
by programs using reflective access to the libraries.

5 years agoBe more careful when checking for unquote in repl eval.
Chris Hanson [Tue, 22 Oct 2019 03:43:19 +0000 (20:43 -0700)]
Be more careful when checking for unquote in repl eval.

5 years agoFurthur improve error reporting for libraries.
Chris Hanson [Mon, 21 Oct 2019 05:37:00 +0000 (22:37 -0700)]
Furthur improve error reporting for libraries.

5 years agoJust have one legacy library: (mit legacy runtime)
Chris Hanson [Sun, 20 Oct 2019 23:33:52 +0000 (16:33 -0700)]
Just have one legacy library: (mit legacy runtime)

Otherwise it's a pain to figure out where all the exports are, since they aren't
necessarily where you might think.

Also, this eliminates deprecated bindings.

5 years agoImprove error reporting for library imports.
Chris Hanson [Sun, 20 Oct 2019 20:07:17 +0000 (13:07 -0700)]
Improve error reporting for library imports.

5 years agoFix problem with syntaxing of DO.
Chris Hanson [Sun, 20 Oct 2019 05:41:51 +0000 (22:41 -0700)]
Fix problem with syntaxing of DO.

This wouldn't work correctly in some weird edge cases.  Specifically, it was
trying to detect the 'else and '=> keywords, but comparing them in the syntactic
environment outside of the DO, not the one inside of it.  Fixed by rewriting the
macro to defer the cond-clause processing until the interior environment was
available.

5 years agoFix typo in earlier change.
Chris Hanson [Sun, 20 Oct 2019 05:20:19 +0000 (22:20 -0700)]
Fix typo in earlier change.

5 years agoAdd printer for bytevectors and limit printing of vectors.
Chris Hanson [Mon, 7 Oct 2019 05:10:28 +0000 (01:10 -0400)]
Add printer for bytevectors and limit printing of vectors.

5 years agoChange debug printer to print vectors correctly.
Chris Hanson [Mon, 7 Oct 2019 04:34:47 +0000 (00:34 -0400)]
Change debug printer to print vectors correctly.

5 years agoFix cold-load problems when cross-compiling from 10.1.10.
Chris Hanson [Mon, 7 Oct 2019 04:34:26 +0000 (00:34 -0400)]
Fix cold-load problems when cross-compiling from 10.1.10.

5 years agoA reader has alerted me to a caveat about IEEE 754 min/max.
Taylor R Campbell [Thu, 3 Oct 2019 16:23:03 +0000 (16:23 +0000)]
A reader has alerted me to a caveat about IEEE 754 min/max.

5 years agoFix bugs in min/max on signalling NaN inputs.
Taylor R Campbell [Thu, 3 Oct 2019 15:39:13 +0000 (15:39 +0000)]
Fix bugs in min/max on signalling NaN inputs.

5 years agoFix floating-point min/max tests, and mark them xfail.
Taylor R Campbell [Thu, 3 Oct 2019 14:49:34 +0000 (14:49 +0000)]
Fix floating-point min/max tests, and mark them xfail.

I misread IEEE 754 semantics on min/max for _signalling_ NaN.

If given a number and a _quiet_ NaN, min/max are to return the
_number_.  But if given a _signalling_ NaN, min/max are to return a
quiet version of the NaN.

References:

Sec. 5.3 `Homogeneous general-computational operations',
subsec. 5.3.1 `General operations',
on minNum/maxNum/minNumMag/maxNumMag reads:

  `minNum(x, y) is...the canonicalized number if one operand is a
   number and the other is a quiet NaN.'

  `When either x or y is a signaling NaN, then the result is according
   to 6.2.'

Sec. 6.2 `Operations with NaNs' reads:

  `Under default exception handling, any operation signaling an invalid
   operation exception and for which a floating-point result is to be
   delivered shall deliver a quiet NaN.'

     [Consequently, _if_ min/max raise invalid-operation and
      nevertheless return a result, they shall return a quiet NaN.]

  `Signaling NaNs shall be reserved operands that, under default
   exception handling, signal the invalid operation exception (see 7.2)
   for every general-computational and signaling-computational
   operation except for the conversions described in 5.12.'

     [min/max (i.e., minNum/maxNum/minNumMag/maxNumMag) are listed
      under homogeneous general-computational, so this clause applies.]

Subsec. 6.2.3 `NaN propagation' further reads:

  `An operation that propagates a NaN operand to its result and has a
   single NaN as an input should produce a NaN with the payload of the
   input NaN.'

  `If two or more inputs are NaN, then the payload of the resulting NaN
   should be identical to the payload of one of the input NaNs if
   representable in the destination format.'

5 years agoChange record types to be immutable.
Chris Hanson [Tue, 24 Sep 2019 07:35:38 +0000 (00:35 -0700)]
Change record types to be immutable.

The primary reason for this is to make the predicates slightly faster,
eliminating the need to look up the type markers in the predicates.

Additionally, make-record-type now accepts these additional options using a
keyword list.  The define-record-type macro has not been updated to support
these new options, but that will come soon.  Consequently the files using these
options have been modified to use make-record-type directly.

Finally, a small tweak was needed so that multiple values are available earlier
in the cold load.