Skip to content

Releases: sharkdp/bat

v0.26.0

19 Oct 18:22
c734087

Choose a tag to compare

v0.26.0

Features

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

Themes

v0.25.0

07 Jan 19:08
25f4f96

Choose a tag to compare

v0.25.0

Features

Bugfixes

Other

Syntaxes

Themes

  • Patched/improved themes for better Manpage syntax highlighting support, see #2994 (@keith-hall).

bat as a library

  • Changes to syntax_mapping::SyntaxMapping #2755 (@cyqsimon)
    • SyntaxMapping::get_syntax_for is now correctly public
    • [BREAKING] SyntaxMapping::{empty,builtin} are removed; use SyntaxMapping::new instead
    • [BREAKING] SyntaxMapping::mappings is replaced by SyntaxMapping::{builtin,custom,all}_mappings
  • Make Controller::run_with_error_handler's error handler FnMut, see #2831 (@rhysd)
  • Improve compile time by 20%, see #2815 (@dtolnay)
  • Add theme::theme for choosing an appropriate theme based on the
    terminal's color scheme, see #2896 (@bash)
    • [BREAKING] Remove HighlightingAssets::default_theme. Use theme::default_theme instead.
  • Add PrettyPrinter::print_with_writer for custom output destinations, see #3070 (@kojix2)

v0.24.0

11 Oct 18:20

Choose a tag to compare

v0.24.0

Features

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

Syntaxes

bat as a library

  • Add optional output_buffer arg to Controller::run() and Controller::run_with_error_handler(), see #2618 (@Piturnah)

v0.23.0

25 Mar 09:33

Choose a tag to compare

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

Syntaxes

v0.22.1

10 Sep 18:09

Choose a tag to compare

Bugfixes

  • Bring back pre-processing of ANSI escape characters to so that some common bat use cases starts working again. See #2308 (@Enselic)

v0.22.0

06 Sep 20:55

Choose a tag to compare

Features

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

12 May 11:39

Choose a tag to compare

Features

Bugfixes

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

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

27 Feb 07:16

Choose a tag to compare

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

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

08 Jan 17:02

Choose a tag to compare

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

Other

Syntaxes

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)

v0.18.3

22 Aug 16:48

Choose a tag to compare

Bugfixes

  • Bump git2 dependency to fix build with Rust 1.54, see #1761