Updates since the latest release
Brian Rice
water at tunes.org
Sun Jun 19 22:22:20 PDT 2005
I've been remiss in keeping you all posted. There are new images up,
no VM changes.
Summary:
* %-prefix for expressions and selectors now makes properly deferred
messages. Concurrency is as in E, minus a lot of complications right
now - just the simplest thing that works. I'm still working on the
manual updates. The only Process ("Vat" in E terms) is REPL driven,
running one big loop per REPL turn. All of this will improve over time.
* "repl noviceMode" toggle to suppress the debugger (on by default).
* define: with optionals &builder: to call define:using: or
&parents:&slots: to replace addPrototype:derivedFrom: and bunches of
simple addSlot:valued: calls. Also, ensureNamespace and
ensureDelegatedNamespace: now take &slots: (making immutable ones).
&slots: takes an array of Symbols or Associations (made with ->
binary selector) between symbols and initial values. I'll shift the
libraries over to use these; they're shorter and more encapsulating,
and so people don't fixate on which form to use for definitions.
* ExternalPrimitivesHolder as a facade for ExternalLibrary stuff. See
the end of extlib.slate or the FFI wiki page: http://slate.tunes.org:
8080/wiki/60
A bunch of fixes and new features...
Here are the NEWS contents just to keep things "brief":
- Added a noviceMode switch slot on the REPL which suppresses the
Debugger
for errors encountered as a result of REPL expressions.
"repl noviceMode: False" disables it.
- Extended the Parser's error reporting with check: token is: {types}
and
expected:butFound: to standardize and clarify Parser error-reporting.
- Added a Converter abstraction with >> support, as well as a Base64
encoder/decoder in converter.slate.
- Added a `math macro to handle convential precedence assumptions in
arithmetic
code. It however will not handle non-arithmetic code within yet.
- Fixed the QuickSort algorithm in Sequence sortFrom:to:by: to not
require
two executions to reach final sorted state.
- Added String 'sorted' method.
- Added Method "adverbial" (called so after their APL/K language
origins)
methods: reducer, collector, acrosser, selecter, tracer, injector,
converger which turn their respective Collection method normal
variants
into blocks with the argument block filled-in with the receiver.
- Added Root converge: which takes a block and runs it on the object and
results until there is a fixed-point or cycle of values.
- Added Collection trace: which acts like inject:into: but returns
all the
intermediate values.
- Added Method across: Collection which applies the block to matching
elements of collections in the argument. If it's a binary block, it
works like reduce:, otherwise the block's arity should be the same as
the number of collections in the argument.
- Added a Namespace 'new' method.
- Added &slots: to ensureNamespace: and ensureDelegatedNamespace: for
the
simple construction case of a Namespace of simple (immutable) values.
- Added define:&parents:&builder:&slots: to wrap the varying ways to
define
immutable and well-known objects and derivations (&builder: triggers
define:using: but the other two optionals are suitable for derivation
customization).
- Cleaned up define:using:.
- Added ExternalPrimitivesHolder as a facade for ExternalLibrary
facilities
that are reasonably regular.
- Cleaned up and simplified the SDL backend, also turning it into a
plugin.
- Fixed/cleaned-up AutoLoader database code.
- Added LineStream R/W/RW variants as attributes / wrappers of R/W/
RWStreams;
each LineStream takes/emits whole lines as elements. The generic
accessor
"lines" on a Stream instantiates an appropriate type. Reading from
this
Stream type will auto-detect line endings.
- Added Everything and Nothing as PredicateCollections.
- Made Sequence rotate/rotated efficient, and added shiftFrom:by:count:,
replaceFrom:with:, and reverse (in-place variant of reversed).
- Fixed Sequence first:/last: to work for N > sequence size.
- Added Sequence endsWith:, includesSubSeq:.
- Added UniqueNumber to refactor Infinities and Epsilons.
- Fixed the SourceWriter's usage of parentheses, and the Parser's
output of
them (this did not affect compilation).
- Added a default grow method for ExtensibleSequences.
- Added E-style language concurrency, using % to prefix message
selectors or
expressions as a whole for deferred-resolution, with dependency
management
for nested-eventualness. See concurrency.slate; the initial
Process used is
currently REPL-driven.
Enjoy! :)
--
-Brian
More information about the Slate
mailing list