Now arbitrary nestings of produce, consume, and blocking for other events are supported. This is designed to have no scheduling overhead in the common case, so by itself produce is not fair to multiple consumers, but that is surely the right tradeoff. Fairness is provided by yield() and RemoteRefs.
`bytestring` has two definitions: 1. Turn a pointer to a string to a proper ByteString 2. Turn a T<:String into ByteString to be used e.g. in ccall All other uses are now disallowed
some misc cleanup
fix new expansion algorithm enough to be able to build sys image. I had to resort to some pretty bad hacks to make this work. The problem is that macros deal only with surface syntax, but local variable/argument names can only be identified after some expansion.
This is a common source of confusion when working in the repl with new types that can't show themselves successfully. The repl show functionality is pretty darned convoluted now -- I couldn't work out how to make the error show up with a backtrace. This stuff could use some refactoring to make it more understandable.
can be found. this means methods are added to existing, imported functions by default. "global x" decl can be used at the top level to force creation of a new binding. allows imported functions to be overridden entirely. updating exports
…var" adding syntax Module.var, but no good compiler support yet adding names(Module) giving array of defined names
this provides fully abstract equality: is(x,y) is true iff no program can be written that distinguishes x and y. before, is() would spuriously distinguish tuples; is((1,),(1,)) was false, but there is no other way to distinguish those objects. it would also incorrectly distinguish equal bits values, which do not have stable addresses.
make === an alias for is() make .. an operator; "a..b" calls (..)(a,:b). not sure about this, but we'll see if anybody likes it. it turns out both == == == == == and === === === === === are valid expressions :)
This is an aggregation of changes by Jeff and me over the past weeks, removing all use of the implicit current output stream mechanism from our code base, since it was deemed a misfeature, and it's terribly, terribly slow to use. The new approach is to just thread an IO object for output through all the basic calls that print stuff. Slightly annoying, but not so bad.