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