# bat changelog > A cat clone with syntax highlighting and Git integration. - Vendor: David Peter - Category: Developer Tools - Official site: https://github.com/sharkdp/bat - Tracked by: What's New (https://whatsnew.fyi/product/bat) - Harvested from: GitHub (sharkdp/bat) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### v0.26.1 - Date: 2025-12-02 - Version: v0.26.1 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.26.1 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.26.1 - **added** — Add paging to '-h' and '--help' - **fixed** — Fix hang when using `--list-themes` with an explicit pager - **fixed** — Fix negative values of N not being parsed in line ranges without `=` flag value separator - **fixed** — Fix broken Docker syntax preventing use of custom assets - **fixed** — Fix decorations being applied unexpectedly when piping - **fixed** — Fix diagnostics attempting to find the version of an executable named builtin when builtin pager is used - **fixed** — `--help` now correctly reads the config file for theme information - **changed** — Make PowerShell completions compatible with PowerShell v5.1 - **changed** — Use more robust approach to escaping in Bash completions - **changed** — Update quadlet syntax mapping to include *.{build,pod} files - **fixed** — Fix inconsistencies in Ada syntax - **added** — Add syntax mapping for podman's `artifact` quadlet files - **added** — Highlight Korn Shell scripts with a shebang of `ksh` using Bash syntax #### v0.26.1 ##### Features - Add paging to '-h' and '--help' see PR #3478 (@MuntasirSZN) ##### Bugfixes - Fix hang when using `--list-themes` with an explicit pager, see #3457 (@abhinavcool42) - Fix negative values of N not being parsed in line ranges without `=` flag value separator, see #3442 (@lmmx) - Fix broken Docker syntax preventing use of custom assets, see #3476 (@keith-hall) - Fix decorations being applied unexpectedly when piping. Now only line numbers explicitly required on the command line should be applied in auto decorations mode for `cat` compatibility. See #3496 (@keith-hall) - Fix diagnostics attempting to find the version of an executable named builtin when builtin pager is used. See #3498 (@keith-hall) - `--help` now correctly reads the config file for theme information etc. See #3507 (@keith-hall) ##### Other - Improve README documentation on pager options passed to less, see #3443 (@injust) - Make PowerShell completions compatible with PowerShell v5.1, see #3495 (@keith-hall) - Use more robust approach to escaping in Bash completions, see #3448 (@akinomyoga) ##### Syntaxes - Update quadlet syntax mapping to include *.{build,pod} files #3484 (@cyqsimon) - Fix inconsistencies in Ada syntax, see #3481 (@AldanTanneo) - Add syntax mapping for podman's `artifact` quadlet files, see #3497 (@xduugu) - Highlight Korn Shell scripts (i.e. with a shebang of ...`ksh`) using Bash syntax, see #3509 (@keith-hall) ### v0.26.0 - Date: 2025-10-19 - Version: v0.26.0 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.26.0 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.26.0 - **added** — Add build for windows/ARM64 platform - **added** — Add paging to `--list-themes` - **added** — Support negative relative line ranges, e.g. `bat -r :-10` / `bat -r='-10:'` - **added** — Support context in line ranges, e.g. `bat -r 30::5` / `bat -r 30:40:5` - **added** — Add built-in 'minus' pager, e.g. `bat --pager=builtin` - **fixed** — Fix UTF-8 BOM not being stripped for syntax detection - **fixed** — Fix `BAT_THEME_DARK` and `BAT_THEME_LIGHT` being ignored - **fixed** — Prevent `--list-themes` from outputting default theme info to stdout when it is piped - **fixed** — Fix crash for multibyte characters in file path - **fixed** — Add missing mappings for various bash/zsh files - **fixed** — Send all bat errors to stderr by default - **fixed** — Make --map-syntax target case insensitive to match --language - **fixed** — Correctly determine the end of the line in UTF16LE/BE input - **fixed** — `--style=changes` no longer prints a two-space indent when the file is unmodified - **fixed** — Add missing shell completions - **fixed** — Execute help/version/diagnostic commands even with invalid config/arguments present - **fixed** — Fix line numbers (`-n`) and style components not printing when piping output - **changed** — Update terminal-colorsaurus (the library used for dark/light detection) to 1.0 - **changed** — Update console dependency to 0.16 - **changed** — Update syntect dependency to v5.3.0 #### v0.26.0 ##### Features - Add build for windows/ARM64 platform. #3190 (@alcroito) - Add paging to `--list-themes`, see PR #3239 (@einfachIrgendwer0815) - Support negative relative line ranges, e.g. `bat -r :-10` / `bat -r='-10:'`, see #3068 (@ajesipow) - Support context in line ranges, e.g. `bat -r 30::5` / `bat -r 30:40:5`, see #3345 (@cavanaug) - Add built-in 'minus' pager, e.g. `bat --pager=builtin` see PR #3402 (@academician) ##### Bugfixes - Fix UTF-8 BOM not being stripped for syntax detection, see #3314 (@krikera) - Fix `BAT_THEME_DARK` and `BAT_THEME_LIGHT` being ignored, see issue #3171 and PR #3168 (@bash) - Prevent `--list-themes` from outputting default theme info to stdout when it is piped, see #3189 (@einfachIrgendwer0815) - Rename some submodules to fix Dependabot submodule updates, see issue #3198 and PR #3201 (@victor-gp) - Make highlight tests fail when new syntaxes don't have fixtures PR #3255 (@dan-hipschman) - Fix crash for multibyte characters in file path, see issue #3230 and PR #3245 (@HSM95) - Add missing mappings for various bash/zsh files, see PR #3262 (@AdamGaskins) - Send all bat errors to stderr by default, see #3336 (@JerryImMouse) - Make --map-syntax target case insensitive to match --language, see #3206 (@keith-hall) - Correctly determine the end of the line in UTF16LE/BE input #3369 (@keith-hall) - `--style=changes` no longer prints a two-space indent when the file is unmodified, see issue #2710 and PR #3406 (@jyn514) - Add missing shell completions, see #3411 (@keith-hall) - Execute help/version/diagnostic commands even with invalid config/arguments present, see #3414 (@keith-hall) - Fixed line numbers (`-n`) and style components not printing when piping output, see issue #2935 and PR #3438 (@lmmx) ##### Other - Update base16 README links to community driven base16 work #2871 (@JamyGolden) - Work around build failures when building `bat` from vendored sources #3179 (@dtolnay) - CICD: Stop building for x86_64-pc-windows-gnu which fails #3261 (Enselic) - CICD: CICD: replace windows-2019 runners with windows-2025 #3339 (@cyqsimon) - Build script: replace string-based codegen with quote-based codegen #3340 (@cyqsimon) - Improve code coverage of `--list-languages` parameter #2942 (@sblondon) - Only start offload worker thread when there's more than 1 core #2956 (@cyqsimon) - Update terminal-colorsaurus (the library used for dark/light detection) to 1.0, see #3347 (@bash) - Update console dependency to 0.16, see #3351 (@musicinmybrain) - Fixed some typos #3244 (@ssbarnea) - Update onig_sys dependency to 69.9.1 to fix a gcc build failure #3400 (@CosmicHorrorDev) - Add a cargo feature (`vendored-libgit2`) to build with vendored libgit2 version without depending on the system's one #3426 (@0x61nas) - Update syntect dependency to v5.3.0 to fix a few minor bugs, see #3410 (@keith-hall) ##### Syntaxes - Add syntax mapping for `paru` configuration files #3182 (@cyqsimon) - Add support for [Idris 2 programming language](https://www.idris-lang.org/) #3150 (@buzden) - Add syntax mapping for `nix`'s '`flake.lock` lockfiles #3196 (@odilf) - Improvements to CSV/TSV highlighting, with autodetection of delimiter and support for TSV files, see #3186 (@keith- - Improve (Sys)log error highlighting, see #3205 (@keith-hall) - Map `ndjson` extension to JSON syntax, see #3209 (@keith-hall) - Map files with `csproj`, `vbproj`, `props` and `targets` extensions to XML syntax, see #3213 (@keith-hall) - Add debsources syntax to highlight `/etc/apt/sources.list` files, see #3215 (@keith-hall) - Add syntax definition and test file for GDScript highlighting, see #3236 (@chetanjangir0) - Add syntax test file for Odin highlighting, see #3241 (@chetanjangir0) - Update quadlet syntax mapping rules to cover quadlets in subdirectories #3299 (@cyqsimon) - Add syntax Typst #3300 (@cskeeters) - Map `.mill` files to Scala syntax for Mill build tool configuration files # _[Truncated at 4000 characters — full notes: https://github.com/sharkdp/bat/releases/tag/v0.26.0]_ ### v0.25.0 - Date: 2025-01-07 - Version: v0.25.0 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.25.0 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.25.0 - **added** — Set terminal title to file names when paging is not Paging::Never - **added** — Add `bat --squeeze-blank`/`bat -s` to squeeze consecutive empty lines - **added** — Add `bat --squeeze-limit` to set the maximum number of empty consecutive lines when using `--squeeze-blank` - **added** — Add `PrettyPrinter::squeeze_empty_lines` to support line squeezing for bat as a library - **added** — Add syntax highlighting for JavaScript files that start with `#!/usr/bin/env bun` - **added** — Add `bat --strip-ansi={never,always,auto}` to remove ANSI escape sequences from bat's input - **added** — Add ability to add or remove individual style components without replacing all styles - **added** — Automatically choose theme based on the terminal's color scheme - **added** — Add option `--binary=as-text` for printing binary content - **added** — Make shell completions available via `--completion ` - **added** — Add syntax highlighting for puppet code blocks within Markdown files - **added** — Add `theme::theme` for choosing an appropriate theme based on the terminal's color scheme - **fixed** — Fix long file name wrapping in header - **fixed** — Fix `NO_COLOR` support - **fixed** — Fix handling of inputs with OSC ANSI escape sequences - **fixed** — Fix handling of inputs with combined ANSI color and attribute sequences - **fixed** — Fix panel width when line 10000 wraps - **fixed** — Fix override behavior of --plain and --paging - **fixed** — Fix bugs in `$LESSOPEN` support - **changed** — Improve performance when color output disabled #### v0.25.0 ##### Features - Set terminal title to file names when Paging is not Paging::Never #2807 (@Oliver-Looney) - `bat --squeeze-blank`/`bat -s` will now squeeze consecutive empty lines, see #1441 (@eth-p) and #2665 (@einfachIrgendwer0815) - `bat --squeeze-limit` to set the maximum number of empty consecutive when using `--squeeze-blank`, see #1441 (@eth-p) and #2665 (@einfachIrgendwer0815) - `PrettyPrinter::squeeze_empty_lines` to support line squeezing for bat as a library, see #1441 (@eth-p) and #2665 (@einfachIrgendwer0815) - Syntax highlighting for JavaScript files that start with `#!/usr/bin/env bun` #2913 (@sharunkumar) - `bat --strip-ansi={never,always,auto}` to remove ANSI escape sequences from bat's input, see #2999 (@eth-p) - Add or remove individual style components without replacing all styles #2929 (@eth-p) - Automatically choose theme based on the terminal's color scheme, see #2896 (@bash) - Add option `--binary=as-text` for printing binary content, see issue #2974 and PR #2976 (@einfachIrgendwer0815) - Make shell completions available via `--completion `, see issue #2057 and PR #3126 (@einfachIrgendwer0815) - Syntax highlighting for puppet code blocks within Markdown files, see #3152 (@liliwilson) ##### Bugfixes - Fix long file name wrapping in header, see #2835 (@FilipRazek) - Fix `NO_COLOR` support, see #2767 (@acuteenvy) - Fix handling of inputs with OSC ANSI escape sequences, see #2541 and #2544 (@eth-p) - Fix handling of inputs with combined ANSI color and attribute sequences, see #2185 and #2856 (@eth-p) - Fix panel width when line 10000 wraps, see #2854 (@eth-p) - Fix compile issue of `time` dependency caused by standard library regression #3045 (@cyqsimon) - Fix override behavior of --plain and --paging, see issue #2731 and PR #3108 (@einfachIrgendwer0815) - Fix bugs in `$LESSOPEN` support, see #2805 (@Anomalocaridid) ##### Other - Upgrade to Rust 2021 edition #2748 (@cyqsimon) - Refactor and cleanup build script #2756 (@cyqsimon) - Checks changelog has been written to for PRs in CI #2766 (@cyqsimon) - Use GitHub API to get correct PR submitter #2791 (@cyqsimon) - Minor benchmark script improvements #2768 (@cyqsimon) - Update Arch Linux package URL in README files #2779 (@brunobell) - Update and improve `zsh` completion, see #2772 (@okapia) - More extensible syntax mapping mechanism #2755 (@cyqsimon) - Use proper Architecture for Debian packages built for musl, see #2811 (@Enselic) - Pull in fix for unsafe-libyaml security advisory, see #2812 (@dtolnay) - Update git-version dependency to use Syn v2, see #2816 (@dtolnay) - Update git2 dependency to v0.18.2, see #2852 (@eth-p) - Improve performance when color output disabled, see #2397 and #2857 (@eth-p) - Relax syntax mapping rule restrictions to allow brace expansion #2865 (@cyqsimon) - Apply clippy fixes #2864 (@cyqsimon) - Faster startup by offloading glob matcher building to a worker thread #2868 (@cyqsimon) - Display which theme is the default one in basic output (no colors), see #2937 (@sblondon) - Display which theme is the default one in colored output, see #2838 (@sblondon) - Add aarch64-apple-darwin ("Apple Silicon") binary tarballs to releases, see #2967 (@someposer) - Update the Lisp syntax, see #2970 (@ccqpein) - Use bat's ANSI iterator during tab expansion, see #2998 (@eth-p) - Support 'statically linked binary' for aarch64 in 'Release' page, see #2992 (@tzq0301) - Update options in shell completions and the man page of `bat`, see #2995 (@akinomyoga) - Update nix dev-dependency to v0.29.0, see #3112 (@decathorpe) - Bump MSRV to [1.74](https://blog.rust-lang.org/2023/11/16/Rust-1.74.0.html), see #3154 (@keith-hall) - Update clircle dependency to remove winapi transitive dependency, see #3113 (@niklasmohrin) ##### Syntaxes - `cmd-help`: scope subcommands followed by other terms, and other misc improvements, see #2819 (@victor-gp) - Upgrade JQ syntax, see #2820 _[Truncated at 4000 characters — full notes: https://github.com/sharkdp/bat/releases/tag/v0.25.0]_ ### v0.24.0 - Date: 2023-10-11 - Version: v0.24.0 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.24.0 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.24.0 - **added** — Add environment variable BAT_PAGING - **added** — Add opt-in support for LESSOPEN and LESSCLOSE via --features lessopen - **fixed** — Fix more not being found on Windows when provided via BAT_PAGER - **changed** — Switch default behavior of --map-syntax to be case insensitive - **changed** — Update version of serde_yaml to 0.9 - **fixed** — Fix arithmetic overflow in LineRange::from and LineRange::parse_range - **fixed** — Fix paging not happening when stdout is interactive but stdin is not - **fixed** — Make -pp override --paging and vice versa when passed as a later argument - **changed** — Output directory for generated assets can be customized - **changed** — Use the is-terminal crate instead of atty - **changed** — Bump MSRV to 1.70 - **added** — Associate os-release with bash syntax - **added** — Associate Containerfile with Dockerfile syntax - **added** — Associate ksh files with bash syntax - **added** — Associate sarif files with JSON syntax - **added** — Associate ron files with rust syntax - **added** — Add support for WebGPU Shader Language - **added** — Add .dpkg-new and .dpkg-tmp to ignored suffixes - **added** — Add syntax mapping *.jsonl => json - **added** — Add NSIS support #### v0.24.0 ##### Features - Add environment variable `BAT_PAGING`, see #2629 (@einfachIrgendwer0815) - Add opt-in (`--features lessopen`) support for `LESSOPEN` and `LESSCLOSE`. See #1597, #1739, #2444, #2602, and #2662 (@Anomalocaridid) ##### Bugfixes - Fix `more` not being found on Windows when provided via `BAT_PAGER`, see #2570, #2580, and #2651 (@mataha) - Switched default behavior of `--map-syntax` to be case insensitive #2520 - Updated version of `serde_yaml` to `0.9`. See #2627 (@Raghav-Bell) - Fix arithmetic overflow in `LineRange::from` and `LineRange::parse_range`, see #2674, #2698 (@skoriop) - Fix paging not happening when stdout is interactive but stdin is not, see #2574 (@Nigecat) - Make `-pp` override `--paging` and vice versa when passed as a later argument, see #2660 (@J-Kappes) ##### Other - Output directory for generated assets (completion, manual) can be customized, see #2515 (@tranzystorek-io) - Use the `is-terminal` crate instead of `atty`, see #2530 (@nickelc) - Add Winget Releaser workflow, see #2519 (@sitiom) - Bump MSRV to 1.70, see #2651 (@mataha) ##### Syntaxes - Associate `os-release` with `bash` syntax, see #2587 (@cyqsimon) - Associate `Containerfile` with `Dockerfile` syntax, see #2606 (@einfachIrgendwer0815) - Replaced quotes with double quotes so fzf integration example script works on windows and linux. see #2095 (@johnmatthiggins) - Associate `ksh` files with `bash` syntax, see #2633 (@johnmatthiggins) - Associate `sarif` files with `JSON` syntax, see #2695 (@rhysd) - Associate `ron` files with `rust` syntax, see #2427 (@YeungOnion) - Add support for [WebGPU Shader Language](https://www.w3.org/TR/WGSL/), see #2692 (@rhysd) - Add `.dpkg-new` and `.dpkg-tmp` to ignored suffixe, see #2595 (@scop) - fix: Add syntax mapping `*.jsonl` => `json`, see #2539 (@WinterCore) - Update `Julia` syntax, see #2553 (@dependabot) - add `NSIS` support, see #2577 (@idleberg) - Update `ssh-config`, see #2697 (@mrmeszaros) ##### `bat` as a library - Add optional output_buffer arg to `Controller::run()` and `Controller::run_with_error_handler()`, see #2618 (@Piturnah) ### v0.23.0 - Date: 2023-03-25 - Version: v0.23.0 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.23.0 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.23.0 - **added** — Implement `-S` and `--chop-long-lines` flags as aliases for `--wrap=never` - **changed** — Environment variables can now override config file settings, with command-line arguments still having the highest precedence - **added** — Implement `--nonprintable-notation=caret` to support showing non-printable characters using caret notation - **fixed** — Fix `bat cache --clear` not clearing the `--target` dir if specified - **changed** — Various bash completion improvements - **changed** — Disable completion of `cache` subcommand - **changed** — Significantly improve startup performance on macOS - **changed** — Bump MSRV to 1.62 - **added** — Add support for Ada syntax - **added** — Add `todo.txt` syntax - **changed** — Improve Manpage.sublime-syntax - **added** — Add a new `requirements.txt` syntax - **added** — Add a new VimHelp syntax - **changed** — Associate `pdm.lock` with `TOML` syntax - **fixed** — Fix highlighting of contexts and projects at beginning of done.txt - **changed** — Overhaul `cmd-help` scope names and improve syntax - **added** — Add support for Crontab syntax ##### Features - Implemented `-S` and `--chop-long-lines` flags as aliases for `--wrap=never`. See #2309 (@johnmatthiggins) - Breaking change: Environment variables can now override config file settings (but command-line arguments still have the highest precedence), see #1152, #1281, and #2381 (@aaronkollasch) - Implemented `--nonprintable-notation=caret` to support showing non-printable characters using caret notation. See #2429 (@einfachIrgendwer0815) ##### Bugfixes - Fix `bat cache --clear` not clearing the `--target` dir if specified. See #2393 (@miles170) ##### Other - Various bash completion improvements, see #2310 (@scop) - Disable completion of `cache` subcommand, see #2399 (@cyqsimon) - Signifigantly improve startup performance on macOS, see #2442 (@BlackHoleFox) - Bump MSRV to 1.62, see #2496 (@Enselic) ##### Syntaxes - Added support for Ada, see #1300 and #2316 (@dkm) - Added `todo.txt` syntax, see #2375 (@BANOnotIT) - Improve Manpage.sublime-syntax. See #2364 (@Freed-Wu) and #2461 (@keith-hall) - Added a new `requirements.txt` syntax, see #2361 (@Freed-Wu) - Added a new VimHelp syntax, see #2366 (@Freed-Wu) - Associate `pdm.lock` with `TOML` syntax, see #2410 - `Todo.txt`: Fix highlighting of contexts and projects at beginning of done.txt, see #2411 - `cmd-help`: overhaul scope names (colors) to improve theme support; misc syntax improvements. See #2419 (@victor-gp) - Added support for Crontab, see #2509 (@keith-hall) ### v0.22.1 - Date: 2022-09-10 - Version: v0.22.1 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.22.1 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.22.1 - **fixed** — Bring back pre-processing of ANSI escape characters so that common bat use cases work again ##### Bugfixes - Bring back pre-processing of ANSI escape characters to so that some common `bat` use cases starts working again. See [#2308](https://github.com/sharkdp/bat/pull/2308) (@Enselic) ### v0.22.0 - Date: 2022-09-06 - Version: v0.22.0 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.22.0 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.22.0 - **added** — Make the default macOS theme depend on Dark Mode - **added** — Support for separate system and user config files - **fixed** — Prevent fork nightmare with PAGER=batcat - **fixed** — Make --no-paging/-P override --paging=... if passed as a later arg - **fixed** — Make --map-syntax and --ignored-suffix work together - **fixed** — Strip byte order mark from output when in non-loop-through mode - **changed** — Relax glibc requirements on amd64 - **changed** — Improve fish completions - **changed** — Stop pre-processing ANSI escape characters - **changed** — Map NSE (Nmap Scripting Engine) to Lua - **changed** — Correctly color fstab dump and pass fields - **changed** — Update Command Help syntax - **fixed** — Fix Julia syntax highlighting for function name starting with struct - **changed** — Update LiveScript syntax - **changed** — Associate .mts and .cts files with the TypeScript syntax - **changed** — Map Fish history to YAML - **changed** — Make bat::PrettyPrinter::syntaxes() iterate over new bat::Syntax struct instead of &syntect::parsing::SyntaxReference - **fixed** — Clear highlights after printing ##### Features - Make the default macOS theme depend on Dark Mode. See #2197, #1746 (@Enselic) - Support for separate system and user config files. See #668 (@patrickpichler) ##### Bugfixes - Prevent fork nightmare with `PAGER=batcat`. See #2235 (@johnmatthiggins) - Make `--no-paging`/`-P` override `--paging=...` if passed as a later arg, see #2201 (@themkat) - `--map-syntax` and `--ignored-suffix` now works together, see #2093 (@czzrr) - Strips byte order mark from output when in non-loop-through mode. See #1922 (@dag-h) ##### Other - Relaxed glibc requirements on amd64, see #2106 and #2194 (@sharkdp) - Improved fish completions. See #2275 (@zgracem) - Stop pre-processing ANSI escape characters. Syntax highlighting on ANSI escaped input is not supported. See #2185 and #2189 (@Enselic) ##### Syntaxes - NSE (Nmap Scripting Engine) is mapped to Lua, see #2151 (@Cre3per) - Correctly color `fstab` dump and pass fields, see #2246 (@yuvalmo) - Update `Command Help` syntax, see #2255 - `Julia`: Fix syntax highlighting for function name starting with `struct`, see #2230 - Minor update to `LiveScript`, see #2291 - Associate `.mts` and `.cts` files with the `TypeScript` syntax. See #2236 (@kidonng) - Fish history is mapped to YAML. See #2237 (@kidonng) ##### `bat` as a library - Make `bat::PrettyPrinter::syntaxes()` iterate over new `bat::Syntax` struct instead of `&syntect::parsing::SyntaxReference`. See #2222 (@Enselic) - Clear highlights after printing, see #1919 and #1920 (@rhysd) ### v0.21.0 - Date: 2022-05-12 - Version: v0.21.0 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.21.0 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.21.0 - **added** — Correctly render tab stops in --show-all - **added** — Add a --style=default option and make it the default, which is less verbose than full - **added** — Enable BusyBox less as pager - **changed** — File extensions are now matched case-insensitively - **security** — Bump regex dependency from 1.5.4 to 1.5.5 to fix CVE-2022-24713 - **fixed** — bat no longer crashes when encountering files that reference missing syntaxes - **changed** — Skip syntax highlighting on long lines (> 16384 chars) to improve performance - **changed** — Vastly improve startup time by lazy-loading syntaxes via syntect 5.0.0, making bat display small files approximately 75% faster - **changed** — Include info about custom assets in --diagnostics if used - **added** — Map clang-format config file (.clang-format) to YAML syntax - **changed** — Improve log syntax handling of escape characters in double quoted strings - **added** — Associate /var/spool/mail/* and /var/mail/* with the Email syntax - **added** — Add cmd-help syntax to scope --help messages - **changed** — Slightly adjust Zig syntax - **added** — Associate .inf files with the INI syntax - **added** — Allow configuration of show_nonprintable with PrettyPrinter - **changed** — Change the binary format of syntaxes.bin due to syntaxes now being lazy-loaded via syntect 5.0.0 - **changed** — Mark bat::error::Error enum as #[non_exhaustive] to allow adding new variants without future semver breakage - **changed** — Change Error::SyntectError(syntect::LoadingError) to Error::SyntectError(syntect::Error) - **added** — Add Error::SyntectLoadingError(syntect::LoadingError) enum variant ##### Features - Correctly render tab stops in `--show-all`, see #2038 (@Synthetica9) - Add a `--style=default` option and make it the default. It is less verbose than `full`, see #2061 (@IsaacHorvath) - Enable BusyBox `less` as pager, see #2162 (@nfisher1226) - File extensions are now matched case-insensitively. See #1854, #2181 (@Enselic) ##### Bugfixes - Bump `regex` dependency from 1.5.4 to 1.5.5 to fix [CVE-2022-24713](https://blog.rust-lang.org/2022/03/08/cve-2022-24713.html), see #2145, #2139 (@Enselic) - `bat` no longer crashes when encountering files that references missing syntaxes. See #915, #2181 (@Enselic) ##### Performance - Skip syntax highlighting on long lines (> 16384 chars) to help improve performance. See #2165 (@keith-hall) - Vastly improve startup time by lazy-loading syntaxes via syntect 5.0.0. This makes bat display small files ~75% faster than before. See #951, #2181 (@Enselic) ##### Other - Include info about custom assets in `--diagnostics` if used. See #2107, #2144 (@Enselic) ##### Syntaxes - Mapped clang-format config file (.clang-format) to YAML syntax (@TruncatedDinosour) - log syntax: improved handling of escape characters in double quoted strings. See #2123 (@keith-hall) - Associate `/var/spool/mail/*` and `/var/mail/*` with the `Email` syntax. See #2156 (@cyqsimon) - Added cmd-help syntax to scope --help messages. See #2148 (@victor-gp) - Slightly adjust Zig syntax. See #2136 (@Enselic) - Associate `.inf` files with the `INI` syntax. See #2190 (@Enselic) ##### `bat` as a library - Allow configuration of `show_nonprintable` with `PrettyPrinter`, see #2142 - The binary format of syntaxes.bin has been changed due to syntaxes now being lazy-loaded via syntect 5.0.0. See #2181 (@Enselic) - Mark `bat::error::Error` enum as `#[non_exhaustive]` to allow adding new variants without future semver breakage. See #2181 (@Enselic) - Change `Error::SyntectError(syntect::LoadingError)` to `Error::SyntectError(syntect::Error)`. See #2181 (@Enselic) - Add `Error::SyntectLoadingError(syntect::LoadingError)` enum variant. See #2181 (@Enselic) ### v0.20.0 - Date: 2022-02-27 - Version: v0.20.0 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.20.0 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.20.0 - **added** — New style component `header-filesize` to show size of the displayed file in the header - **changed** — Use underline for line highlighting on ANSI - **fixed** — Fix bash completion on bash 3.x and bash-completion 1.x - **changed** — GraphQL syntax: Add support for interfaces implementing interfaces and consider ampersand an operator - **changed** — Associate `_vimrc` and `_gvimrc` files with the VimL syntax - **changed** — Associate `poetry.lock` files with the TOML syntax - **changed** — Associate `.mesh`, `.task`, `.rgen`, `.rint`, `.rahit`, `.rchit`, `.rmiss`, and `.rcall` files with the GLSL syntax - **added** — Add support for JQ syntax - **changed** — Properly associate global git config files rooted in `$XDG_CONFIG_HOME/git/` or `$HOME/.config/git/` - **added** — Expose `get_syntax_set` and `get_theme` methods on `HighlightingAssets` - **added** — Add `HeaderFilename` and `HeaderFilesize` to `StyleComponent` enum and mark it `#[non_exhaustive]` ##### Features - New style component `header-filesize` to show size of the displayed file in the header. See #1988 (@mdibaiee) - Use underline for line highlighting on ANSI, see #1730 (@mdibaiee) ##### Bugfixes - Fix bash completion on bash 3.x and bash-completion 1.x. See #2066 (@joshpencheon) ##### Syntaxes - `GraphQL`: Add support for interfaces implementing interfaces and consider ampersand an operator. See #2000 - Associate `_vimrc` and `_gvimrc` files with the `VimL` syntax. See #2002 - Associate `poetry.lock` files with the `TOML` syntax. See #2049 - Associate `.mesh`, `.task`, `.rgen`, `.rint`, `.rahit`, `.rchit`, `.rmiss`, and `.rcall` with the `GLSL` syntax. See #2050 - Added support for `JQ` syntax, see #2072 (@clarfonthey) - Properly associate global git config files rooted in `$XDG_CONFIG_HOME/git/` or `$HOME/.config/git/`. See #2067 (@cyqsimon) ##### `bat` as a library - Exposed `get_syntax_set` and `get_theme` methods on `HighlightingAssets`. See #2030 (@dandavison) - Added `HeaderFilename` and `HeaderFilesize` to `StyleComponent` enum, and mark it `#[non_exhaustive]`. See #1988 (@mdibaiee) ### v0.19.0 - Date: 2022-01-08 - Version: v0.19.0 - Original notes: https://github.com/sharkdp/bat/releases/tag/v0.19.0 - Permalink: https://whatsnew.fyi/product/bat/releases/v0.19.0 - **changed** — Reduce startup time in loop-through mode by 90% - **changed** — Load themes lazily to make bat start 25% faster when disregarding syntax load time - **fixed** — Python syntax highlighting no longer suffers from abysmal performance in specific scenarios - **fixed** — Fix for poor performance when ANSI escape sequences are piped to bat - **fixed** — Fix for incorrect handling of ANSI escape sequences when using --wrap=never - **changed** — Load custom assets as fast as integrated assets - **added** — Support for x:-delta (minus) syntax in line ranges - **added** — Support for --ignored-suffix argument - **added** — $BAT_CONFIG_DIR is now a recognized environment variable with precedence over $XDG_CONFIG_HOME - **added** — Support for x:+delta syntax in line ranges - **added** — Add new --acknowledgements option that gives credit to theme and syntax definition authors - **changed** — Include git hash in bat -V and bat --version output if present - **fixed** — First line not shown in diff context - **fixed** — Do not ignore syntaxes that handle file names with a *.conf extension - **added** — Add PowerShell completion - **added** — Add Groff syntax highlighting - **added** — Add HTTP Requests and Responses syntax highlighting - **added** — Add LLVM syntax highlighting - **added** — Add Racket syntax highlighting - **deprecated** — Deprecate HighlightingAssets::syntaxes() and HighlightingAssets::syntax_for_file_name() in favor of HighlightingAssets::get_syntaxes() and HighlightingAssets::get_syntax_for_path() ##### Performance - Reduce startup time in loop-through mode (e.g. when redirecting output) by 90%. See #1747 (@Enselic) - Load themes lazily to make bat start 25% faster when disregarding syntax load time. See #1969 (@Enselic) - Python syntax highlighting no longer suffers from abysmal performance in specific scenarios. See #1688 (@keith-hall) - Fix for poor performance when ANSI escape sequences are piped to `bat`, see #1596 (@eth-p) - Fix for incorrect handling of ANSI escape sequences when using `--wrap=never`, see #1596 (@eth-p) - Load custom assets as fast as integrated assets, see #1753 (@Enselic) ##### Features - Support for `x:-delta` (minus) syntax in line ranges (e.g. `20:-10`). See #1901 (@bojan88) - Support for `--ignored-suffix` argument. See #1892 (@bojan88) - `$BAT_CONFIG_DIR` is now a recognized environment variable. It has precedence over `$XDG_CONFIG_HOME`, see #1727 (@billrisher) - Support for `x:+delta` syntax in line ranges (e.g. `20:+10`). See #1810 (@bojan88) - Add new `--acknowledgements` option that gives credit to theme and syntax definition authors. See #1971 (@Enselic) - Include git hash in `bat -V` and `bat --version` output if present. See #1921 (@Enselic) ##### Bugfixes - First line not shown in diff context. See #1891 (@divagant-martian) - Do not ignore syntaxes that handle file names with a `*.conf` extension. See #1703 (@cbolgiano) ##### Other - Add PowerShell completion, see #1826 (@rashil2000) - Minimum supported Rust version (MSRV) bumped to 1.51, see #1994 (@mdibaiee) ##### Syntaxes - Groff, see #1685 (@scop) - HTTP Requests and Responses, see #1748 (@keith-hall) - LLVM, see #1777 (@ioncodes) - Highlight for `vimrc` and `gvimrc` files, see #1763 (@SuperSandro2000) - Syslog highlighting improvements, see #1793 (@scop) - Added support for `slim` syntax, see #1693 (@mfinelli) - Racket, see #1884 (@jubnzv) - LiveScript, see #1915 (@Enselic) - MediaWiki, see #1925 (@sorairolake) - The `requirements.txt` syntax has been removed due to incompatible license requirements. - Dart, new highlighter, see #1959 (@Ersikan) - SCSS and Sass syntaxes updated, see #1766 (@Enselic) - PowerShell syntax updated, see #1935 (@Enselic) - TypeScript syntax updated, see #1834 (@Enselic) ##### `bat` as a library - Deprecate `HighlightingAssets::syntaxes()` and `HighlightingAssets::syntax_for_file_name()`. Use `HighlightingAssets::get_syntaxes()` and `HighlightingAssets::get_syntax_for_path()` instead. They return a `Result` which is needed for upcoming lazy-loading work to improve startup performance. They also return which `SyntaxSet` the returned `SyntaxReference` belongs to. See #1747, #1755, #1776, #1862 (@Enselic) - Remove `HighlightingAssets::from_files` and `HighlightingAssets::save_to_cache`. Instead of calling the former and then the latter you now make a single call to `bat::assets::build`. See #1802, #1971 (@Enselic) - Replace the `error::Error(error::ErrorKind, _)` struct and enum with an `error::Error` enum. `Error(ErrorKind::UnknownSyntax, _)` becomes `Error::UnknownSyntax`, etc. Also remove the `error::ResultExt` trait. These changes stem from replacing `error-chain` with `thiserror`. See #1820 (@Enselic) - Add new `MappingTarget` enum variant `MapExtensionToUnknown`. Refer to its documentation for more information. Also mark `MappingTarget` as `#[non_exhaustive]` since more enum variants might be added in the future. See #1703 (@cbolgiano), #2012 (@Enselic)