diff --git a/assets/deed-v0.2.8-wasm32-unknown-unknown.wasm b/assets/deed-v0.2.8-wasm32-unknown-unknown.wasm deleted file mode 100644 index 23a2e08..0000000 Binary files a/assets/deed-v0.2.8-wasm32-unknown-unknown.wasm and /dev/null differ diff --git a/assets/deed-v0.2.9-wasm32-unknown-unknown.wasm b/assets/deed-v0.2.9-wasm32-unknown-unknown.wasm new file mode 100644 index 0000000..8e668bd Binary files /dev/null and b/assets/deed-v0.2.9-wasm32-unknown-unknown.wasm differ diff --git a/assets/errors.js b/assets/errors.js index ab6dbf0..3877424 100644 --- a/assets/errors.js +++ b/assets/errors.js @@ -5,8 +5,8 @@ // artifact carries all of them, so this page cannot document a code the // compiler does not have, or miss one it does. -const TAG = "v0.2.8"; -const VERSION = "0.2.8"; +const TAG = "v0.2.9"; +const VERSION = "0.2.9"; const WASM_URL = `../assets/deed-${TAG}-wasm32-unknown-unknown.wasm`; const STATUS = document.getElementById("status"); diff --git a/assets/play.js b/assets/play.js index a7f45d7..380fc2e 100644 --- a/assets/play.js +++ b/assets/play.js @@ -13,8 +13,8 @@ // release, because a release asset cannot be fetched from a browser at all: // both the download URL and the API one redirect to a host that sends no // `Access-Control-Allow-Origin`. See decisions/2026-07-31-no-build-step.md. -const TAG = "v0.2.8"; -const VERSION = "0.2.8"; +const TAG = "v0.2.9"; +const VERSION = "0.2.9"; const WASM_URL = `../assets/deed-${TAG}-wasm32-unknown-unknown.wasm`; const SOURCE = document.getElementById("source"); diff --git a/examples/index.json b/examples/index.json index 0c2c237..a77dc91 100644 --- a/examples/index.json +++ b/examples/index.json @@ -1,5 +1,5 @@ { - "tag": "v0.2.8", + "tag": "v0.2.9", "examples": [ { "file": "calculator.deed", diff --git a/index.html b/index.html index a07ed66..10b89ef 100644 --- a/index.html +++ b/index.html @@ -126,7 +126,7 @@
On Linux, or on an Apple-silicon Mac:
+$ curl -fsSL https://raw.githubusercontent.com/deed-lang/deed/main/install.sh | sh
+ On Windows:
+> irm https://raw.githubusercontent.com/deed-lang/deed/main/install.ps1 | iex
+
+ Either one works out which release asset fits the machine, downloads
+ it along with the checksum list the release published, refuses it if
+ the hash does not match, and leaves one file in your own profile:
+ ~/.local/bin, or
+ %LOCALAPPDATA%\Programs\deed. It never asks for a
+ password, because it never writes anywhere that would need one, and
+ there is nothing to uninstall but the file.
+
+ What the hash buys is worth stating exactly, since a
+ sha256 in an install script tends to read like it proves
+ more than it does. The checksums come from the same release as the
+ binary, so this catches a truncated or corrupted download and does
+ not catch a compromised release.
+
+ Piping a script into a shell is a thing worth being uneasy about.
+ Both scripts are short and are in the repository beside the compiler
+ — install.sh
+ and
+ install.ps1
+ — and the rest of this page is the same work done by hand.
+
| Linux, 64-bit Intel or AMD | -deed-v0.2.8-x86_64-unknown-linux-gnu.tar.gz |
+ deed-v0.2.9-x86_64-unknown-linux-gnu.tar.gz |
| macOS, Apple silicon | -deed-v0.2.8-aarch64-apple-darwin.tar.gz |
+ deed-v0.2.9-aarch64-apple-darwin.tar.gz |
| Windows, 64-bit | -deed-v0.2.8-x86_64-pc-windows-msvc.zip |
+ deed-v0.2.9-x86_64-pc-windows-msvc.zip |
$ tar xzf deed-v0.2.8-x86_64-unknown-linux-gnu.tar.gz
-$ ./deed-v0.2.8-x86_64-unknown-linux-gnu/deed --version
-deed 0.2.8
+ $ tar xzf deed-v0.2.9-x86_64-unknown-linux-gnu.tar.gz
+$ ./deed-v0.2.9-x86_64-unknown-linux-gnu/deed --version
+deed 0.2.9
$ tar xzf deed-v0.2.8-aarch64-apple-darwin.tar.gz
-$ xattr -d com.apple.quarantine deed-v0.2.8-aarch64-apple-darwin/deed
-$ ./deed-v0.2.8-aarch64-apple-darwin/deed --version
-deed 0.2.8
+ $ tar xzf deed-v0.2.9-aarch64-apple-darwin.tar.gz
+$ xattr -d com.apple.quarantine deed-v0.2.9-aarch64-apple-darwin/deed
+$ ./deed-v0.2.9-aarch64-apple-darwin/deed --version
+deed 0.2.9
The middle line is not optional and it is explained below.
> Expand-Archive deed-v0.2.8-x86_64-pc-windows-msvc.zip .
-> .\deed-v0.2.8-x86_64-pc-windows-msvc\deed.exe --version
-deed 0.2.8
+ > Expand-Archive deed-v0.2.9-x86_64-pc-windows-msvc.zip .
+> .\deed-v0.2.9-x86_64-pc-windows-msvc\deed.exe --version
+deed 0.2.9
@@ -160,10 +194,11 @@
Anywhere. It reads nothing next to itself and writes nothing beside
- itself. To type deed instead of a path, move it onto
- yours:
+ itself. The one-line install has already put it somewhere your shell
+ looks; if you unpacked it by hand and want to type
+ deed instead of a path, move it onto yours:
$ sudo mv deed-v0.2.8-x86_64-unknown-linux-gnu/deed /usr/local/bin/deed
+ $ sudo mv deed-v0.2.9-x86_64-unknown-linux-gnu/deed /usr/local/bin/deed
On Windows, put the folder on Path through Settings, or
keep using the full path. Nothing on this page needs it on
@@ -171,7 +206,33 @@
Put this in a file called hello.deed:
+ deed new writes one, rather than leaving you to work the
+ module header and the file layout out of a repository:
+
$ deed new greeter
+greeter/greeter.deed
+greeter/main.deed
+
+next: cd greeter && deed test .
+
+$ cd greeter
+$ deed test .
+./greeter.deed
+ ok a greeting carries the name it was given
+ ok there is no greeting for nobody
+ ok property greeting (100 cases)
+
+3 passed, 0 failed
+
+$ deed run main.deed
+hello, world
+
+ Three tests out of two files, and only two of them are written down.
+ The third is generated from the contract on greeting,
+ which is the point: a signature is checked rather than read.
+
By hand instead, the whole of a program is this much:
module hello
fn main(sys: System) -> Int
@@ -216,6 +277,14 @@ What else is in it
+
+ deed new
+
+ A project: a library module with a contract and its tests, and
+ a program that imports it. No manifest, because a new project
+ has no code outside its own tree.
+
+
deed check
The compiler. Silence is the answer.
@@ -298,14 +367,22 @@ What else is in it
to a runtime check.
- From source
+ With Rust instead
Needs Rust 1.85 or newer, and nothing else:
+ $ cargo install deed-lang
+
+ deed on crates.io belongs to somebody else, so the
+ package is deed-lang. The binary it installs is
+ deed, and it is the same one file this page has been
+ talking about.
+
+ From a clone, if you want the tree it was built from:
$ git clone https://github.com/deed-lang/deed
$ cd deed
$ cargo install --path crates/deed-cli
- The workspace has no external dependencies, so this compiles what is
- in the tree and nothing from anywhere else.
+ The workspace has no external dependencies, so either way this
+ compiles the compiler and nothing from anywhere else.
When it does not work
@@ -322,7 +399,7 @@ When it does not work
./, or move it as above.
- --version prints something other than 0.2.8
+ --version prints something other than 0.2.9
You are running a different deed than the one you
unpacked. which deed says which.
diff --git a/one-clause/index.html b/one-clause/index.html
index 87a9e4e..78df177 100644
--- a/one-clause/index.html
+++ b/one-clause/index.html
@@ -201,14 +201,14 @@
read_only.deed
The one a host without `Io.save` will run.
read_write.deed
The one it will not.