Release notes on the upcoming 0.9.2 release of E-on-Java
Release process notes
Here I will jot down notes on the process of performing the E 0.9.2 release, as a guide to others who may do future releases. This information is descriptive; not prescriptive.
At Kevin's suggestion, I did a
$ svn log -r321:HEAD svn://svn.synchrona.org/erights/e/trunk
to gather all the log entries since the last release. I then summarize them in the Highlights, Features, Bug Fixes, and Other Changes below.
Kevin enumerated the release blockers for the this release:
- Since r468, help(<int>) shows no methods.
- Since ???, epatt__quasiParser always throws a parse error.
Fixed them as of r635.
Once all other changes are checked in and ready to go, on a Windows Cygwin shell (with gcc and a sun jdk installed), bring all sources up to date. (svn update, etc).
In e/src/Makefile, change
The DOTVER is used to generate the names of the tarballs and the value of the
e.version property. TAGVER is no longer used, but was used for cvs tagging.
In the "e" directory, i.e., the parent of the "e/src" directory, do
$ chmod -R a+rX . $ chmod -R u+w . $ rm -rf classes/ dist/ export/ tarballs/ $ ls -la# verify the directories are actually gone.
None of the above should be necessary, but helps to work around various weirdnesses that seem to crop up on Windows, such as directories that can't be deleted. However, the permissions fixes may only be needed on systems in which Polaris is installed.
$ cd src $ MAKE_PARSERS=true make draft tarballs $ ls -la ../tarballs
For reference, this time the output looked like
$ ls -la ../tarballs total 23888 drwxr-xr-x+ 2 Terry None 0 May 10 20:21 . drwxr-xr-x+ 9 Terry None 0 May 10 20:17 .. -rw-r--r-- 1 Terry None 3143728 May 10 20:21 E-purej-0.9.2a.tar.gz -rw-r--r-- 1 Terry None 15954776 May 10 20:20 E-src-0.9.2a.tar.gz -rw-r--r-- 1 Terry None 5353732 May 10 20:21 E-win32-x86-0.9.2a.zip
Note that the
make can take vastly longer on Windows than it does on Unix. Or maybe it's just our old PC. Or maybe it's a bad interaction with Polaris. We don't know.
For normal development, you normally don't need MAKE_PARSERS. However, this should be on when building a release and prior to the final checkin.
If the make succeeds and everything looks good, then try installing the
E-win32-x86-0.9.2a.zip by unpacking it into a fresh directory, where you'd like E installed, such as
c:/Program Files/erights.org. Make the directory if necessary. Double click on
e.jar. If E installs successfully, your should see a monologue box pop up saying "Welcome to E 0.9.2a".
Run whatever other tests you need to feel comfortable that E still works after the changes since the last release. (Ideally, this would be an automated set of tests that are normally all green. We are not yet ready for that.)
If it all checks out, then do an SVN commit.
$ svn ci
or interactively using Tortoise SVN (recommended). The commit message should state that this corresponds to this release.
Updating the web site
Check out and/or SVN update the erights.org website. The following assumes that the "doc" directory is placed under "e" as a sibling to "src".
$ cd ../doc/dowload $ ls -la
We see an "0-9-1" directory but no "0-9-2" directory. We copy 0-9-1 to make an initial draft 0-9-2, remove all 0-9-2 ".svn" subdirectories, and modify 0-9-2 to reflect the new release.
$ cp -r 0-9-1 0-9-2 $ cd 0-9-2 $ rm -rf `find . -name '.svn'`
Causeway now processes the language neutral trace file format defined by Tyler Close and generated from the Waterken server. Many other functionality and usability improvements. Thanks Terry Stanley and Tyler Close.
Switched from SWT v2135 to v18.104.22.168. E now works with SWT on Mac OS X 10.5. Thanks Kevin Reid.
The E parser has been updated to accept the new guard-based auditing-friendly E syntax, but guard-based auditing itself is not yet implemented. Thanks Kevin Reid.
Lamport slots are now pass-by-construction Unums thanks to Martin Scheffler.
Made SealedBox final thanks to Tyler Close.
We have experimental Joule-like multichannels thanks to Mark Miller (and Dean Tribble for the multichannel semantics)
Added a command line option to webServerSocket80.e to tell it to use a different port.
ReadOnlyFile now supports the copyTo/2 method of its underlying File.
File now has a makeParentDirs/1 method, which will (attempt to) make as many parent directories as necessary.
Term tree matching is still much less powerful than regular expressions, but is at least not so naively greedy. Matches like
def term`[@x*, @y, @z]` := term`[4,5,6,7,8]`
used to fail because @x* would consume everything, leaving nothing for @y and @z. See lessgreedy.updoc for more examples.
Fixed A sent <import> needs to arrive as the local one thanks to Martin Scheffler.
Fixed File(File, String) is unsafe and must be suppressed thanks to Adrian Mettler.
Fixed Updoc timing quirk thanks to Kevin Reid.
Fixed Masking of parser warning thanks to Kevin Reid.
Fixed escape optimization invalid thanks to Kevin Reid.
Fixed makeMembrane fixed thanks to Martin Scheffler.
Typed verbs, i.e., verbs that look like Java signatures such as "__conformTo(Guard)" that are normally used to disambiguate Java overloads, are now suppressed for sugar method including Miranda methods. Thanks to Kevin Reid.
Fixed TraversalKey bug thanks to Kevin Reid.
Fixed bug in swtGrid quasiParser (though the bug itself may be post 9.1b) thanks to Martin Scheffler.
Fixed emacs e-mode indentation thanks to Pierre Radermecker. It had worked for me. But this e-mode in my Emacs 22.214.171.124 Carbon version on Mac OS X 10.5.6 has again the original symptom: when I hit tab, I get "Wrong type argument: stringp, nil". I'm not an elisp hacker, so I don't know what the problem is.
Fixed Ordered region comparison bug thanks to Allen Short.
Fixed javax.swing.ActionEvent.getActionCommand() unsuppressed thanks to Kevin Reid.
The taming of JFileChooser#APPROVE_SELECTION, JFileChooser#CANCEL_SELECTION, java.awt.event.MouseEvent#getButton/0 now lists these as unsuppressed.
BaseLexer now accepts "\/" as synonymous with "/". TermL, inheriting this rule, is now a superset of JSON. Thanks to Kevin Reid.
Fixed reflection operations that broke the sameness guarantee (if a == b then they are indistinguishable): The implementation class of integer objects is no longer revealed by __getAllegedType(), and the Help object avoids revealing implementation classes.
Unresolved proxies no longer print as "<Remote Promise>". Rationale: There is no way a program can (without making assumptions about English) make this same distinction; it was arguably a bug that the printing subsystem could in order to print them differently.