sd/CHANGELOG.md
CosmicHorror e4e42a2d2d
Update the changelog (#264)
* Update the changelog

* Include the changelog in prebuilt releases

* Dig up older history for the changelog

* Make missing history note clearer
2023-11-01 20:57:04 -05:00

7.2 KiB

Changelog

All notable changes to this project will be documented in this file.

This project adheres to Semantic Versioning.

(unreleased) [1.0.0] - TODO

A quick note to any packages. The generated shell completions and man page are now in the gen directory of the repo. They're also included in the pre-built release artifacts on the releases page.

Improvements

  • #115 Do not replace symlink with output file (@SimplyDanny)
    • Fixes an issue where a symlink would be replaced with a regular file
  • #124 Fix tests (@Linus789)
    • Removed displaying the file path when passing the --preview flag and fixed how text coloring was handled in tests

Breaking

  • #192 Rename --string-mode to --fixed-strings (@CosmicHorrorDev)
    • Renamed -s --string-mode to -f --fixed-strings to better match similar tools
    • -s and --string-mode will still continue to work for backwards compatibility, but are no longer documented
  • #258 Error on $<num><non_num> capture replacement names (@CosmicHorrorDev)
    • Previously when you tried to use a numbered capture group right before some letters in the replacement text (e.g. $1foo) then it would be considered the impossible-to-use 1foo capture. The correct way to pass the numbered capture group in this case would be to surround the number with curly braces like so ${1}foo. The error just detects this case and informs the user of the issue

Docs

  • #93 Add note about in-place file modification to --help output (@jchook)
  • #148 Doc: nitpick -- has no special meaning to shells (@hexagonrecursion)
  • #181 Fix man page -f flag help text (@ulope)
    • Fixed copy-pasted text in the man page's -f flag's help text
  • #186 Improve error message for failed replacements (@CosmicHorrorDev)
  • #187 Freshen up README (@CosmicHorrorDev)
    • Added a repology badge to document different installation methods
    • Improved the formatting of the benchmarks
  • #207 Documenting $ escape (@yahkbar)
    • Adds a section in the README that covers that $$ is a literal $ in the replacement text
  • #227 Improve README readability (@vassudanagunta)
    • Various formatting improvements
  • #231 Use clap_mangen and roff to generate manpage (@nc7s)
    • This change ensures the man page contents stay in sync with the CLI automatically, and fixes some broken rendering of the existing manpage
  • #243 Exclude unsupported packages from the repology badge (@CosmicHorrorDev)

Pre-built Releases

  • (11295fb) Add ARM target (@chmln)
    • Added the arm-unknown-linux-gnueabihf target to CI and releases
  • #114 Adding aarch64-apple-darwin target (@yahkbar)
  • #143 Fix paths to release binary in "publish" action (@skrattaren)
  • #179 Build Adjustments (@yahkbar)
    • striped release binaries and added the aarch64-ubuntu-linux-musl target
  • #204 Adding armv7-unknown-linux-gnueabihf target (@yahkbar)
    • Added the armv7-unknown-linux-gnueabihf target to the list of targets to build in CI and for each release
  • #205 Resolving broken aarch64-apple-darwin tests (@yahkbar)
    • Switched aarch64-apple-darwin to only try building the executable without running the tests since there seems to be no easy way to test for ARM Apple targets
  • #206 Adding Windows builds back (@yahkbar)
    • Added the x86_64-pc-windows-gnu and x86_64-windows-musl targets back to the list of targets to build in CI and for each release

Internal

  • #118 Fix master (@SimplyDanny)
    • Fixes several cross-compilation issues that effected different targets in CI
  • #182 cargo update (@CosmicHorrorDev)
    • Bumps dependencies to their latest compatible versions
  • #183 Switch memmap -> memmap2 (@CosmicHorrorDev)
    • Switches away from an unmaintained crate
  • #184 Add editor config file matching rustfmt config (@CosmicHorrorDev)
    • Adds an .editorconfig file matching the settings listed in the .rustfmt.toml file
  • #185 Fix warnings and clippy lints (@CosmicHorrorDev)
  • #188 Switch atty for is-terminal (@CosmicHorrorDev)
    • Switches away from an unmaintained crate
  • #189 Replace structopt with clap v4 (@CosmicHorrorDev)
    • Switches away from a defacto deprecated crate
  • #190 Change how all shell variants are expressed (@CosmicHorrorDev)
    • Tiny tidying up PR
  • #196 Move generating static assets to a cargo-xtask task (@CosmicHorrorDev)
    • Moves the generation of the man page and shell completions from a build script to a cargo-xtask task
  • #197 Add a release checklist (@CosmicHorrorDev)
  • #209 Dependency updates (@yahkbar)
  • #235 Update generated assets (@CosmicHorrorDev)
  • #236 Tone down dependabot (@CosmicHorrorDev)
  • #245 Update sd to 2021 edition (@CosmicHorrorDev)
    • Updates sd to the Rust 2021 edition
  • #248 Misc Cargo.toml tweaks (@CosmicHorrorDev)
    • Switches to use workspace edition and dependencies where appropriate
  • #249 Resolve CI warnings (@CosmicHorrorDev)
    • Switched from actions-rs actions to dtolnay@rust-toolchain
    • Switched from using ::set-output to $GITHUB_ENV
  • #251 Update dependencies (@CosmicHorrorDev)
  • A lot of sad CI tweaking:
    • #252 Fix build target usage in CI (@CosmicHorrorDev)
    • #253 Improve publishing CI job (@CosmicHorrorDev)
    • #256 More CI tweaks (@CosmicHorrorDev)
    • #257 Fix publish action (@CosmicHorrorDev)

(History listed in here is missing from v0.6.3 - v0.7.6)

[0.6.2]

  • Fixed pre-allocated memmap buffer size
  • Fixed failing tests

[0.6.0] - 2019-06-15

Improvements

  • sd now uses memory-mapped files, allowing replacement on files of any size
  • -p/--preview flag is now added to preview changes
    • as of right now, results are simply emitted to stdout
    • in a future version, the output will be changed to contain only relevant information
  • a w regex flag is added to match full words only, e.g. sd -f w foo bar file.txt

Deprecations

  • --in-place is now deprecated and assumed whenever a list of files is given

[0.5.0] - 2019-02-22

Improvements

  • Windows support (thanks to @ErichDonGubler)

[0.4.2] - 2019-01-02

Improvements

  • Support for unicode and special characters (like \n) in replacement expressions
    • Only in regex mode
  • Fixed edge-cases when replacing content containing unescaped characters

[0.4.1] - 2019-01-01

Improvements

  • Significant performance improvements (see benchmarks in README)

[0.4.0] - 2018-12-30

Added

  • Option to set regex flags via -f or --flags:
    • m (multi-line)
    • c (case-sensitive)
    • i (case-insensitive)
  • Smart case-sensitivity is used by default with regular expressions

Improvements

  • You may now pass multiple files to sd
    • this is now valid: sd -i "\n" "," *.txt

[0.3.0] - 2018-12-29

Breaking Change: the -i/--input is revamped per #1. The file path now comes at the end, instead of -i.

Transforming the file in-place:

  • Before: sd -s 'str' '' -i file.txt'
  • Now: sd -i -s 'str' '' file.txt
  • Future: sd -i -s 'str' '' *.txt

To reflect this change, --input is also renamed to --in-place. This is the first and most likely the last breaking change in this project.

Improvements