bat

Developer Tools

A cat clone with syntax highlighting and Git integration.

Latest v0.26.1 · by David PeterWebsitesharkdp/bat

Release activity

Release activity — 2 releases across 2 days in the last year. Each cell is one day; darker means more releases that day. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026
MondayNo releases on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on Apr 28, 2026No releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026
WednesdayNo releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 30, 2026No releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026

2 releases in the last year

Changelog

v0.26.1

Added 3
  • Add paging to '-h' and '--help'
  • Add syntax mapping for podman's `artifact` quadlet files
  • Highlight Korn Shell scripts with a shebang of `ksh` using Bash syntax
Changed 3
  • Make PowerShell completions compatible with PowerShell v5.1
  • Use more robust approach to escaping in Bash completions
  • Update quadlet syntax mapping to include *.{build,pod} files
Fixed 7
  • Fix hang when using `--list-themes` with an explicit pager
  • Fix negative values of N not being parsed in <N:M> line ranges without `=` flag value separator
  • Fix broken Docker syntax preventing use of custom assets
  • Fix decorations being applied unexpectedly when piping
  • Fix diagnostics attempting to find the version of an executable named builtin when builtin pager is used
  • `--help` now correctly reads the config file for theme information
  • Fix inconsistencies in Ada 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 <N:M> 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)
View originalPermalink
How v0.26.1 went

v0.26.0

Added 5
  • Add build for windows/ARM64 platform
  • Add paging to `--list-themes`
  • Support negative relative line ranges, e.g. `bat -r :-10` / `bat -r='-10:'`
  • Support context in line ranges, e.g. `bat -r 30::5` / `bat -r 30:40:5`
  • Add built-in 'minus' pager, e.g. `bat --pager=builtin`
Changed 3
  • Update terminal-colorsaurus (the library used for dark/light detection) to 1.0
  • Update console dependency to 0.16
  • Update syntect dependency to v5.3.0
Fixed 12
  • Fix UTF-8 BOM not being stripped for syntax detection
  • Fix `BAT_THEME_DARK` and `BAT_THEME_LIGHT` being ignored
  • Prevent `--list-themes` from outputting default theme info to stdout when it is piped
  • Fix crash for multibyte characters in file path
  • Add missing mappings for various bash/zsh files
  • Send all bat errors to stderr by default

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 #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 #3311 (@krikera)
  • Add syntax highlighting for VHDL, see #3337 (@JerryImMouse)
  • Add syntax mapping for certbot certificate configuration #3338 (@cyqsimon)
  • Update Lean syntax from Lean 3 to Lean 4 #3322 (@YDX-2147483647)
  • Map .flatpakref and .flatpakrepo files to INI syntax #3353 (@Ferenc-)
  • Update hosts syntax #3368 (@keith-hall)
  • Map .kshrc files to Bash syntax #3364 (@ritoban23)
  • Map /var/log/dmesg files to Syslog syntax #3412 (@keith-hall)
  • Add syntax definition and test file for Go modules(go.mod and go.sum) highlighting, see #3424 (@DarkMatter-999)
  • Syntax highlighting for typescript code blocks within Markdown files, see #3435 (@MuntasirSZN)
Themes
  • Add Catppuccin, see #3317 (@SchweGELBin)
  • Updated Catppuccin, see #3333 (@SchweGELBin)
  • Updated gruvbox, see #3372 (@Nicholas42)
  • Updated GitHub theme, see #3382 (@CosmicHorrorDev)
  • Updated ANSI theme to highlight JSON object keys differently from values, see #3413 (@keith-hall)
View originalPermalink
How v0.26.0 went

v0.25.0

Added 12
  • Set terminal title to file names when paging is not Paging::Never
  • Add `bat --squeeze-blank`/`bat -s` to squeeze consecutive empty lines
  • Add `bat --squeeze-limit` to set the maximum number of empty consecutive lines when using `--squeeze-blank`
  • Add `PrettyPrinter::squeeze_empty_lines` to support line squeezing for bat as a library
  • Add syntax highlighting for JavaScript files that start with `#!/usr/bin/env bun`
  • Add `bat --strip-ansi={never,always,auto}` to remove ANSI escape sequences from bat's input
Changed 1
  • Improve performance when color output disabled
Fixed 7
  • Fix long file name wrapping in header
  • Fix `NO_COLOR` support
  • Fix handling of inputs with OSC ANSI escape sequences
  • Fix handling of inputs with combined ANSI color and attribute sequences
  • Fix panel width when line 10000 wraps
  • Fix override behavior of --plain and --paging
  • Fix bugs in `$LESSOPEN` support

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 <shell>, 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, 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 (@dependabot[bot])
  • Add syntax mapping for quadman quadlets #2866 (@cyqsimon)
  • Map containers .conf files to TOML syntax #2867 (@cyqsimon)
  • Associate .xsh files with xonsh syntax that is Python, see #2840 (@anki-code)
  • Associate JSON with Comments .jsonc with json syntax, see #2795 (@mxaddict)
  • Associate JSON-LD .jsonld files with json syntax, see #3037 (@vorburger)
  • Associate .textproto files with ProtoBuf syntax, see #3038 (@vorburger)
  • Associate GeoJSON .geojson files with json syntax, see #3084 (@mvaaltola)
  • Associate .aws/{config,credentials}, see #2795 (@mxaddict)
  • Associate Wireguard config /etc/wireguard/*.conf, see #2874 (@cyqsimon)
  • Add support for CFML, see #3031 (@brenton-at-pieces)
  • Map *.mkd files to Markdown syntax, see issue #3060 and PR #3061 (@einfachIrgendwer0815)
  • Add syntax mapping for CITATION.cff, see #3103 (@Ugzuzg)
  • Add syntax mapping for kubernetes config files #3049 (@cyqsimon)
  • Adds support for pipe delimiter for CSV #3115 (@pratik-m)
  • Add syntax mapping for /etc/pacman.conf #2961 (@cyqsimon)
  • Associate uv.lock with TOML syntax, see #3132 (@fepegar)
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)
View originalPermalink
How v0.25.0 went

v0.24.0

Added 11
  • Add environment variable BAT_PAGING
  • Add opt-in support for LESSOPEN and LESSCLOSE via --features lessopen
  • Associate os-release with bash syntax
  • Associate Containerfile with Dockerfile syntax
  • Associate ksh files with bash syntax
  • Associate sarif files with JSON syntax
Changed 5
  • Switch default behavior of --map-syntax to be case insensitive
  • Update version of serde_yaml to 0.9
  • Output directory for generated assets can be customized
  • Use the is-terminal crate instead of atty
  • Bump MSRV to 1.70
Fixed 4
  • Fix more not being found on Windows when provided via BAT_PAGER
  • Fix arithmetic overflow in LineRange::from and LineRange::parse_range
  • Fix paging not happening when stdout is interactive but stdin is not
  • Make -pp override --paging and vice versa when passed as a later argument

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, 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)
View originalPermalink
How v0.24.0 went

v0.23.0

Added 7
  • Implement `-S` and `--chop-long-lines` flags as aliases for `--wrap=never`
  • Implement `--nonprintable-notation=caret` to support showing non-printable characters using caret notation
  • Add support for Ada syntax
  • Add `todo.txt` syntax
  • Add a new `requirements.txt` syntax
  • Add a new VimHelp syntax
  • Add support for Crontab syntax
Changed 8
  • Environment variables can now override config file settings, with command-line arguments still having the highest precedence
  • Various bash completion improvements
  • Disable completion of `cache` subcommand
  • Significantly improve startup performance on macOS
  • Bump MSRV to 1.62
  • Improve Manpage.sublime-syntax
  • Associate `pdm.lock` with `TOML` syntax
  • Overhaul `cmd-help` scope names and improve syntax
Fixed 2
  • Fix `bat cache --clear` not clearing the `--target` dir if specified
  • Fix highlighting of contexts and projects at beginning of done.txt
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)
View originalPermalink
How v0.23.0 went

v0.22.1

Fixed 1
  • 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 (@Enselic)
View originalPermalink
How v0.22.1 went

v0.22.0

Added 2
  • Make the default macOS theme depend on Dark Mode
  • Support for separate system and user config files
Changed 10
  • Relax glibc requirements on amd64
  • Improve fish completions
  • Stop pre-processing ANSI escape characters
  • Map NSE (Nmap Scripting Engine) to Lua
  • Correctly color fstab dump and pass fields
  • Update Command Help syntax
Fixed 6
  • Prevent fork nightmare with PAGER=batcat
  • Make --no-paging/-P override --paging=... if passed as a later arg
  • Make --map-syntax and --ignored-suffix work together
  • Strip byte order mark from output when in non-loop-through mode
  • Fix Julia syntax highlighting for function name starting with struct
  • 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)
View originalPermalink
How v0.22.0 went

v0.21.0

Added 9
  • Correctly render tab stops in --show-all
  • Add a --style=default option and make it the default, which is less verbose than full
  • Enable BusyBox less as pager
  • Map clang-format config file (.clang-format) to YAML syntax
  • Associate /var/spool/mail/* and /var/mail/* with the Email syntax
  • Add cmd-help syntax to scope --help messages
Changed 9
  • File extensions are now matched case-insensitively
  • Skip syntax highlighting on long lines (> 16384 chars) to improve performance
  • Vastly improve startup time by lazy-loading syntaxes via syntect 5.0.0, making bat display small files approximately 75% faster
  • Include info about custom assets in --diagnostics if used
  • Improve log syntax handling of escape characters in double quoted strings
  • Slightly adjust Zig syntax
Fixed 1
  • bat no longer crashes when encountering files that reference missing syntaxes
Security 1
  • Bump regex dependency from 1.5.4 to 1.5.5 to fix CVE-2022-24713
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, 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)
View originalPermalink
How v0.21.0 went

v0.20.0

Added 4
  • New style component `header-filesize` to show size of the displayed file in the header
  • Add support for JQ syntax
  • Expose `get_syntax_set` and `get_theme` methods on `HighlightingAssets`
  • Add `HeaderFilename` and `HeaderFilesize` to `StyleComponent` enum and mark it `#[non_exhaustive]`
Changed 6
  • Use underline for line highlighting on ANSI
  • GraphQL syntax: Add support for interfaces implementing interfaces and consider ampersand an operator
  • Associate `_vimrc` and `_gvimrc` files with the VimL syntax
  • Associate `poetry.lock` files with the TOML syntax
  • Associate `.mesh`, `.task`, `.rgen`, `.rint`, `.rahit`, `.rchit`, `.rmiss`, and `.rcall` files with the GLSL syntax
  • Properly associate global git config files rooted in `$XDG_CONFIG_HOME/git/` or `$HOME/.config/git/`
Fixed 1
  • Fix bash completion on bash 3.x and bash-completion 1.x
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)
View originalPermalink
How v0.20.0 went

v0.19.0

Added 10
  • Support for x:-delta (minus) syntax in line ranges
  • Support for --ignored-suffix argument
  • $BAT_CONFIG_DIR is now a recognized environment variable with precedence over $XDG_CONFIG_HOME
  • Support for x:+delta syntax in line ranges
  • Add new --acknowledgements option that gives credit to theme and syntax definition authors
  • Add PowerShell completion
Changed 4
  • Reduce startup time in loop-through mode by 90%
  • Load themes lazily to make bat start 25% faster when disregarding syntax load time
  • Load custom assets as fast as integrated assets
  • Include git hash in bat -V and bat --version output if present
Fixed 5
  • Python syntax highlighting no longer suffers from abysmal performance in specific scenarios
  • Fix for poor performance when ANSI escape sequences are piped to bat
  • Fix for incorrect handling of ANSI escape sequences when using --wrap=never
  • First line not shown in diff context
  • Do not ignore syntaxes that handle file names with a *.conf extension
Deprecated 1
  • 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)
View originalPermalink
How v0.19.0 went
View all

Discussion