Download Latest Version v3.12.0 source code.tar.gz (232.3 kB)
Email in envelope

Get an email when there's a new version of sh

Home / v3.12.0
Name Modified Size InfoDownloads / Week
Parent folder
shfmt_v3.12.0_linux_arm 2025-07-06 2.9 MB
shfmt_v3.12.0_darwin_amd64 2025-07-06 3.0 MB
shfmt_v3.12.0_linux_amd64 2025-07-06 2.9 MB
shfmt_v3.12.0_linux_arm64 2025-07-06 2.9 MB
shfmt_v3.12.0_linux_386 2025-07-06 2.7 MB
shfmt_v3.12.0_windows_386.exe 2025-07-06 3.0 MB
shfmt_v3.12.0_darwin_arm64 2025-07-06 2.9 MB
sha256sums.txt 2025-07-06 744 Bytes
shfmt_v3.12.0_windows_amd64.exe 2025-07-06 3.2 MB
README.md 2025-07-06 1.8 kB
v3.12.0 source code.tar.gz 2025-07-06 232.3 kB
v3.12.0 source code.zip 2025-07-06 271.0 kB
Totals: 12 Items   24.0 MB 12
  • The mvdan-sh JS package is discontinued in favor of sh-syntax - [#1145]
  • cmd/shfmt
  • Support the "simplify" and "minify" flags via EditorConfig - [#819]
  • Do not allow --write to replace non-regular files - [#843]
  • interp
  • Add IsBuiltin to check if a command name is a shell built-in - [#1164]
  • Add HandlerContext.Builtin to allow ExecHandlerFunc to call built-ins
  • Initial support for $! and wait PID - [#221]
  • Return non-fatal ExecHandlerFunc errors via the Runner.Run API
  • Add HandlerContext.Pos to provide handlers with source positions
  • Deprecate NewExitStatus and IsExitStatus in favor of ExitStatus
  • Fix wait to always return the status of the last given job
  • Copy all env vars for background subshells to avoid data races
  • Support reading random numbers via $RANDOM and $SRANDOM
  • Set $BASH_REMATCH when matching regular expressions via =~
  • Support modifying local vars from the parent calling function
  • expand
  • Adjust which backslash sequences are expanded in here-docs - [#1138]
  • Tweak tilde expansions to match Bash semantics
  • pattern
  • Remove the flawed and broken Braces mode; use syntax.SplitBraces instead
  • Tweak ** to only act as "globstar" when alone as a path element - [#1149]
  • Tweak * and ** to not match leading dots in basenames
  • Add a NoGlobStar mode to match the POSIX semantics
  • fileutil
  • Treat all non-regular files as definitely not shell scripts - [#1089]

Consider becoming a sponsor if you benefit from the work that went into this release!

Binaries built on go version go1.24.4 linux/amd64 with:

CGO_ENABLED=0 go build -trimpath -ldflags="-w -s -X=main.version=v3.12.0"
Source: README.md, updated 2025-07-06