Skip to content

0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Nov 20:29

Purring may have developed as an evolutionary advantage as a signaling mechanism of reassurance between mother cats and nursing kittens, who are thought to use it as a care-soliciting signal. Although purring is popularly interpreted as indicative of pleasure, it has been recorded in a wide variety of circumstances, most of which involve physical contact between the cat and another, presumably trusted individual.

Changelog

New features

  • Koshka now has the koshconf builtin and kosh.conf for shell settings.
    • Every setting is now stored in /etc/kosh/kosh.conf and ~/.config/kosh/kosh.conf. koshconf create kosh writes a fresh configuration file that documents every setting, and koshconf set mood bash --persist saves a change.
    • .koshrc is gone. The kosh mood now sources rc.kosh, and the bash mood loads existing Bash startup files untouched. See kosh-switching(5).
  • set --tab-selector, set -o space-after-completion, set -o mimicry, and related flags have been updated to have koshconf settings (completion.menu_style, completion.add_space_after_completed_word, and interpreter.mimic_shebang). --no-config starts the shell without loading them.
  • The line editor has been updated to have a kill ring, transposes, Ctrl-X Ctrl-E, undo on Ctrl-Z, live diagnostics in the hint row, M-x in Emacs mode, and :s, gg, and G in Vi mode.
  • Prompt rendering now has a right prompt (RPS1 and RPROMPT), a transient prompt (KOSH_TRANSIENT_PS1), and KOSH_PS1_... variables for every prompt escape.
  • Koshka now has the slurp builtin, a full-screen file editor built on the line editor with Emacs and Vi keys. koshkit also has koshkit vi and koshkit emacs linked to it.
  • koshkit has been updated to have new utilities and GNU options.
    • The utility suite now has less, more, pwdx, and meow.
    • Bundled utilities now have sed -i, grep -H, grep -L, grep -m, grep -a, cp -a, date -d, diff -q, wc -L, additional sort orders, cut --complement, xargs -P, realpath --relative-to, NUL-terminated output, and -x or --one-file-system across recursive tools.
  • source now has --mood to run a file in a selected mood. z now has an exact directory check before a frecency match, and cd now has interpreter.cd_is_z to fall back to z.
  • Koshka moved to fennec-support.
    • Distribution now has the container image ghcr.io/fennec-support/kosh and a Homebrew tap.
    • The editor extensions now have separate repositories for VS Code, Zed, and Neovim.
  • The build system now has MODE=tinyrel (up to 40% smaller), NO_KOSHKIT=1 (omits bundled utilities), and HARDENED=1 (traps on an out-of-bounds index).
  • The release installers have been updated to have PowerShell 5 support and now install all three manual pages.

Fixes

  • Windows process substitution now has a private pipe implementation, and /dev/null and /tmp map to their Windows equivalents. compatibility.dev_null and compatibility.slash_tmp turn the mappings off.
  • The parser and utilities have been updated to have fixes for data loss, crashes, and wrong results on hostile input.
  • Extended regular expressions now have back-reference support on Linux and Windows, and an invalid =~ regular expression returns 2 like Bash.
  • Restricted shells now refuse mood, koshconf, and Koshkit changes, and history files are no longer written to restricted paths.

Performance

  • Execution now has 2x the speed of Dash and 6x the speed of Bash, and static analysis checks 400,000 lines of shell in under a second.
  • Release binaries now have context-sensitive profile-guided optimization.
  • Regular expressions in [[ =~ ]], grep, sed, and expr now have 2x to 3x the speed on Linux and Windows.

Downloads

The recommended way to install is to run:

# on Linux, macOS, or any system with a POSIX shell:
curl -fsSL "https://fennec.support/kosh/install" | sh

# on Windows, Powershell:
irm "https://fennec.support/kosh/install" | iex

# on Linux or macOS, with Homebrew:
brew tap fennec-support/kosh
brew install fennec-support/kosh/kosh

# with Docker, as an Alpine image:
docker run --rm -it "ghcr.io/fennec-support/kosh"

These commands do everything for you automatically, invoked install.sh/ps1 from the scripts/ on the master branch, based on your system.

Please check the editor integrations:

VS Code Zed Neovim
kosh-vscode kosh-zed kosh.nvim

Below are the attached assets:

Download OS Arch Size
kosh-linux-amd64-0.4.0 Linux x86-64 7.5 MiB
kosh-win32-amd64-0.4.0.exe Windows x86-64 9.9 MiB
kosh-linux-aarch64-0.4.0 Linux AARCH64 7.0 MiB
kosh-darwin-aarch64-0.4.0 macOS Apple Silicon 5.2 MiB

Extras

File Contents Size
kosh.1.zst The kosh(1) manpage 65.9 KiB
kosh.5.zst The kosh(5) manpage 12.2 KiB
kosh-switching.5.zst The kosh-switching(5) manpage 2.7 KiB
kosh.bash The bash-completion script 25.7 KiB

Read README.md or the manpages for usage information. Contact the author if you have any questions, or need help.

New Contributors

Full Changelog: 0.3.0...0.4.0