Skip to content

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 16 Oct 22:54
· 237 commits to main since this release

Install

curl -fsSL https://raw.githubusercontent.com/orelang/ore/main/install.sh | sh

or brew install orelang/tap/ore; then ore update keeps it up to date.
Each archive carries its LLVM and lld.

For File
Linux x86-64 ore-v0.4.2-linux-amd64.tar.gz
Linux arm64 ore-v0.4.2-linux-arm64.tar.gz
macOS arm64 ore-v0.4.2-darwin-arm64.tar.gz
VS Code extension ore-vscode-v0.4.2.vsix
Zed extension ore-zed-v0.4.2.zip

The editor extensions run ore lsp, so ore must be on PATH. VS Code:
install "Ore" (orelang.ore) from the Marketplace or Open VSX, or
code --install-extension ore-vscode-v0.4.2.vsix. Zed: unzip
ore-zed-v0.4.2.zip and pick its directory in zed: install dev extension
(Zed builds it with Rust, which must be installed with rustup).

What is in 0.4.2

Faster string-keyed maps.

  • String-keyed maps are faster (bench/knucleotide about 1.9x, wordcount
    1.25x, map 1.25x, in CPU time on an M-series Mac). The index of a map
    keeps the high bits of each key's hash beside the entry, so probing
    compares keys only when those match; string keys and 8-byte keys
    (integers, objects by identity) are hashed and compared by the runtime
    itself, strings a word at a time instead of FNV-1a's byte at a time; and
    map.set(key, f(map.get(key))), where f only computes with locals and
    constants (counts.set(w, (counts.get(w) ?? 0) + 1)), hashes and looks
    up the key once. indexOf and split no longer call memcmp for a
    one-byte separator.