From 773bdd8739318a726f3cb8a19a12598bb26c2752 Mon Sep 17 00:00:00 2001 From: Julian Hyde Date: Tue, 23 Jul 2019 17:05:56 -0700 Subject: [PATCH] Release 0.1.0 --- HISTORY.md | 7 +- HOWTO.md | 91 +++++++++++++++++++++ README | 14 ++++ README.md | 18 +++- pom.xml | 4 +- src/main/java/net/hydromatic/sml/Shell.java | 2 +- 6 files changed, 129 insertions(+), 7 deletions(-) create mode 100644 HOWTO.md create mode 100644 README diff --git a/HISTORY.md b/HISTORY.md index 407dee2d..98259164 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -23,7 +23,10 @@ License. For a full list of releases, see github. -## 0.1 / 2019-xx-xx +## 0.1 / 2019-07-24 -Work in progress +Initial release features the core language (primitive types, lists, +tuples, records; `let`, `if`, `fn` and `match` expressions; `val`, +`fun` and `datatype` declarations), an interactive shell `smlj`, and +relational extensions (`from`). diff --git a/HOWTO.md b/HOWTO.md new file mode 100644 index 00000000..c57064a5 --- /dev/null +++ b/HOWTO.md @@ -0,0 +1,91 @@ + +# smlj HOWTO + +## How to make a release (for committers) + +Make sure `mvn clean install`, `mvn site`, and +`mvn javadoc:javadoc javadoc:test-javadoc` pass under JDK 8 - 12. + +Write release notes. Run the +[relNotes](https://github.com/julianhyde/share/blob/master/tools/relNotes) +script and append the output to [HISTORY.md](HISTORY.md). + +Update version numbers in README and README.md, +and the copyright date in NOTICE. + +Switch to JDK 11. + +Check that the sandbox is clean: + +```bash +git clean -nx +mvn clean +``` + +Prepare: + +```bash +export GPG_TTY=$(tty) +mvn -Prelease -DreleaseVersion=x.y.0 -DdevelopmentVersion=x.(y+1).0-SNAPSHOT release:prepare +``` + +Perform: + +```bash +mvn -Prelease -DskipTests release:perform +``` + +Stage the release: +* Go to https://oss.sonatype.org and log in. +* Under "Build Promotion", click on "Staging Repositories". +* Select the line "smlj-nnnn", and click "Close". You might need to + click "Refresh" a couple of times before it closes. + +After testing, publish the release: +* Go to https://oss.sonatype.org and log in. +* Under "Build Promotion", click on "Staging Repositories". +* Select the line "smlj-nnnn", and click "Release". + +Wait a couple of hours for the artifacts to appear on Maven central, +and announce the release. + +Update the [github release list](https://github.com/julianhyde/smlj/releases). + +## Cleaning up after a failed release attempt (for committers) + +```bash +# Make sure that the tag you are about to generate does not already +# exist (due to a failed release attempt) +git tag + +# If the tag exists, delete it locally and remotely +git tag -d smlj-X.Y.Z +git push origin :refs/tags/smlj-X.Y.Z + +# Remove modified files +mvn release:clean + +# Check whether there are modified files and if so, go back to the +# original git commit +git status +git reset --hard HEAD +``` diff --git a/README b/README new file mode 100644 index 00000000..83b5013f --- /dev/null +++ b/README @@ -0,0 +1,14 @@ +smlj release 0.1.0 + +This is a source or binary distribution of smlj. + +Changes since the previous release are described in the +HISTORY.md file. + +The LICENSE and NOTICE files contain license information. + +If this is a source distribution, you can find instructions how to +build the release in the "Building" section in README.md. + +Further information about smlj is available at its web site, +https://github.com/julianhyde/smlj. diff --git a/README.md b/README.md index b17d4a02..d039285c 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Get smlj from net.hydromatic smlj - 0.1 + 0.1.0 ``` @@ -53,6 +53,18 @@ On Windows, the last line is ```bash > mvnw install ``` + +### Run the shell + +```bash +$ ./smlj +smlj version 0.1.0 (java version "11.0.4", JLine terminal, xterm-256color) += "Hello, world!"; +val it = "Hello, world!" : string += exit +$ +``` + ## Status Implemented: @@ -73,7 +85,7 @@ Implemented: * `if` * `case` * Primitive, list, tuple and record types -* Type variables (polymorphism) +* Type variables (polymorphism) (but see "bugs") * Enumerated types (`datatype`) * Tuples and unit, record and list values * Patterns (destructuring) in `val` and `case`, @@ -93,6 +105,8 @@ Not implemented: * Type annotations in expressions and patterns Bugs: +* Unbound type variables are not yet supported. For example, the + expression `[]` should have type `'a list` but currently fails * Prevent user from overriding built-in constants and functions: `true`, `false`, `nil`, `ref`, `it`, `::`; they should not be reserved * Access parameters and variables by offset into a fixed-size array; diff --git a/pom.xml b/pom.xml index d91a9c7b..cafff8cd 100644 --- a/pom.xml +++ b/pom.xml @@ -40,8 +40,8 @@ License. - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt repo diff --git a/src/main/java/net/hydromatic/sml/Shell.java b/src/main/java/net/hydromatic/sml/Shell.java index d5ff8335..23bd75b3 100644 --- a/src/main/java/net/hydromatic/sml/Shell.java +++ b/src/main/java/net/hydromatic/sml/Shell.java @@ -117,7 +117,7 @@ private void printAll(List lines) { /** Generates a banner to be shown on startup. */ private String banner() { - return "smlj version 0.1-SNAPSHOT" + return "smlj version 0.1.0" + " (java version \"" + System.getProperty("java.version") + "\", JRE " + System.getProperty("java.vendor.version") + " (build " + System.getProperty("java.vm.version")