Updated SotL/L documents for Iteration 2
david.holmes at oracle.com
Mon Sep 10 17:51:51 PDT 2012
On 11/09/2012 10:41 AM, Talden wrote:
> FYI, the list-manager gives the following URL for the list archives:
> However that page says the archive is empty (desite the fact that it
> clearly isn't).
It is not empty for me.
> Anyone have any idea what the story is?
> Aaron Scott-Boddendijk
> On Tue, Sep 11, 2012 at 6:02 AM, Brian Goetz<brian.goetz at oracle.com> wrote:
>> Duh, I forgot attachments are not permitted on this list :(
>> I sent them to lambda-libs-spec-experts, you can see the mangled version
>> of the attachments here:
>> Meanwhile I'll come up with a better place to stash them.
>> On 9/10/2012 1:51 PM, Brian Goetz wrote:
>>> We're now almost finished prototyping Iteration 2 of the Lambda
>>> Libraries APIs; they are still in an experimental branch in the openjdk
>>> lambda repo (it2-bootstrap), but will be moved into the default branch
>>> (still of the lambda repo) in the next few days.
>>> The attached documents describe the approach taken in Iteration 2, and
>>> the changes since Iteration 1. There are still plenty of open issues to
>>> discuss, and I'll be discussing them on the EG list.
>>> Several significant API changes between Iterations 1 and 2:
>>> - In Iteration 1, stream operations were injected directly into
>>> Iterable; now Stream is its own entity, which is much more like an
>>> Iterator rather than an Iterable.
>>> - There are now stream "accessor" methods on Collection and friends;
>>> instead of sayng collection.filter(...)..., you now have to say
>>> collection.stream().filter(...) or collection.parallel().filter(...).
>>> - The multiplicity of interfaces (Stream, StreamOps, Streamable,
>>> ParallelStream, ParallelStreamable, etc) has been collapsed
>>> dramatically, down to one Stream interface for each shape (list-shaped,
>>> map-shaped). The serial/parallel-ness of a stream is now a dynamic
>>> rather than static property.
>>> - Most terminal operations are performed by forEach'ing elements into
>>> a "sink" rather than pulling elements from an Iterator.
>>> - There is an extensible API for adding new stream operations besides
>>> the built-in ones, although this API will likely not be exposed in JDK 8
>>> (needs more bake time.)
>>> As usual, the implementation and API are in varying states of
>>> "done"-ness; the general shape and set of operations is fairly baked,
>>> but many of the implementation details and internal APIs (such as
>>> StreamAccessor, ParallelOp, ParallelHelper) are mostly stabs in the
>>> dark, and there are bits we know we have to fix that have just not yet
>>> been fixed as we've been focusing on the high-order bits.
>>> Start with Stream, MapStream and Streamable -- that's most of the
>>> exposed API right there (and the most baked part.)
More information about the lambda-dev