Re: SRFI 140, Immutable Strings: 150 days Per Bothner 08 Jan 2017 02:20 UTC

On Friday I checked in my first set of big changes.

In anyone wants to test it, clone:
and then: git checkout invoke
(The invoke branch will be the basis for Kawa 3.0.)

This included the basic framework in a way I'm happy with:

* String literals are O(1) istrings.

* By default string-append returns an istring.

* (import (kawa base)) is now pretty complete, and matches
the default environment - and imports the istring-returning string-append.
(A lot of the time I've spent recently is re-doing how Kawa sets up the
initial environment using (kawa base).)

* If you (import (scheme base)) *or* you invoke Kawa
with one of the --r5rs/--r6rs/--r7rs flags you get
traditional mutable strings.

* Other functions like substring have not been updated,
but the framework is there to support two different versions.

I'm taking a break to work on some other things (specifically
get a Kawa 2.3 version out, based on the master branch).
Then I think the next steps are something like:

* Re-implement substring (this isn't difficult - it's just figuring
out the right way to do sharing) and related functions like string-take.

* (Re-)Implement the remaining functions.  In some case it may
be reasonable to use the srfi-135 reference implementation.

* Implement srfi-135.  (That's just a renaming wrapper.)

* Finishing out the actual srfi specification.

* Figuring out what to do for the reference implementation.

I wouldn't object to help with the last two tasks - but I'll get to it.
	--Per Bothner