In the E installation directory, or at e/src/csrc/setup/ in the sources, you will find the bash script inst-e.bash for helping you install E on Linux and other Unix-like platforms.
Thanks to Zooko. MarkM had problems trying to test it, so until further notice this isn't yet ready for prime time.
term`a=b` used to be equivalent to term`a(b)`. It's now equivalent to term`a(.attr.(b))`.
Like the other term syntactic shorthands, with this change, the '=' shorthand is now practically reversible in a context independent manner.
Derived from a suggestion of Dean Tribble's. Thanks!
We are not going to be making the agreed operator renamings, because I don't know how to do it without breaking our code base in a reasonable time frame. Therefore, "m[argsList,...]" continues to expand to "m.get(argList,...)". This is problematic for all the reasons mentioned in these threads, but we can live with it.
Given this, what we can't live with is the old two argument get, where the second argument is an "instead" value to be returned if the lookup fails. The problem is that "m[3,7]" expands to "m.get(3,7)", which doesn't correspond to any sensible interpretation of the earlier syntax. One should define get/n methods only for objects that are conceptually like n-dimensional arrays or something. All the arguments should be taken as keys for the lookup. Rather than deprecating get/2, we are getting rid of it now.
As discussed here, the old get/2 wasn't general enough anyway. The new replacement fetch/2 takes an insteadThunk as an argument. On lookup failure, it does a "return insteadThunk()". This provides all the flexibility of Smalltalk's #at:ifFail:. In particular, the insteadThunk, rather than returning a replacement value, can instead do a non-local exit.
Since fetch/2 invokes the insteadThunk using an immediate call, remote use would normally need to pass a PassByCopy insteadThunk. However, as we don't have auditors yet, we instead provide ValueThunk as a convenience. It's a PassByCopy thunk constructed with one value, that returns that value when invoked.
See this description of e.enable.verb-string. Thanks to Constantine Plotnikov for prodding me into adding this.
These are based on an earlier successful experiment by Kevin Smathers of HP Labs to build a local (non-distributed) headless (no ui) E under GCJ.
Reordered e/src/jsrc/Makefile to place at the end of the build sequence things one may want to leave out, to ensure one can:
In particular, we are trying to facilitate the porting of a local headless subset of E onto GCJ.
VatTP was currently depends on a sun.* package to do its ASN1 parsing. With the exception of this one issue, VatTP depends only on the Java standard libraries. GCJ, of course, doesn't provide sun.* packages. We've changed VatTP to use ELib to access this sun.* library reflexively, so that if it isn't available, we'll get a runtime error rather than a build-time error. This allows us to maintain one set of sources while trying to build the rest of E under GCJ. Paragraph obsolete now that this bug is fixed.
Similarly, if you try to make a Vat or Runner with a runnerKind of "awt" or "swt", if the AWTRunner or SWTRunner isn't available, we'll now get a runtime error rather than a build-time error.
Finally, Kevin and I identified a bug in the libgcj of gcc 3.3.3. The statement
java.lang.reflect.Array.set(array, i, null)
throws an exception even when array is an array of reference types (ie, not an array of scalars). The internal isntanceof check being used forgot to allow a null in this context. This release of E should successfully workaround this bug so long as the flag GCJ_WORKAROUND in ArrayHelper.java is set to true.
Not yet ready for prime time. Stay tuned. See Distributed Space-Time Debugging for the basic idea.
Unless stated otherwise, all text on this page which is either unattributed or by Mark S. Miller is hereby placed in the public domain.