• Cheetah speed with a redesigned render loop and a 2x faster escape code parser that uses SIMD CPU vector instruction to parse data in parallel (#7005)
  • A new benchmark kitten (kitten __benchmark__) to measure terminal throughput performance
  • Graphics protocol: Add a new delete mode for deleting images whose ids fall within a range. Useful for bulk deletion (#7080)
  • Keyboard protocol: Fix the Enter, Tab and Backspace keys generating spurious release events even when report all keys as escape codes is not set (#7136)
  • macOS: The command line args from macos-launch-services-cmdline are now prefixed to any args from open --args rather than overwriting them (#7135)
  • Allow specifying where the new tab is created for detach_window (#7134)
  • hints kitten: The option to set the text color for hints now allows arbitrary colors (#7150)
  • icat kitten: Add a command line argument to override terminal window size detection (#7165)
  • A new action toggle_tab to easily switch to and back from a tab with a single shortcut (#7203)
  • When clearing terminal add a new type to_cursor_scroll which can be used to clear to prompt while moving cleared lines into the scrollback
  • Fix a performance bottleneck when dealing with thousands of small images (#7080)
  • kitten @ ls: Return the timestamp at which the window was created (#7178)
  • hints kitten: Use default editor rather than hardcoding vim to open file at specific line (#7186)
  • Remote control: Fix --match argument not working for @ls, @send-key, @set-background-image (#7192)
  • Keyboard protocol: Do not deliver a fake key release events on OS window focus out for engaged modifiers (#7196)
  • Ignore startup_session when kitty is invoked with command line options specifying a command to run (#7198)
  • Box drawing: Specialize rendering for the Fira Code progress bar/spinner glyphs
  • iiGxC@slrpnk.net
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    3 months ago

    This is really impressive! Since they didn’t have a comparison to foot, I ran it on my machine with sway. Here are my results:

    Kitty old run #1
    Results:
      Only ASCII chars         : 6.01s      @ 33.3    MB/s
      Unicode chars            : 5.12s      @ 34.6    MB/s
      CSI codes with few chars : 4.94s      @ 20.3    MB/s
      Long escape codes        : 18.08s     @ 43.4    MB/s
      Images                   : 2m12.09s   @ 4.0     MB/s
    
    kitty new:
    Results:
      Only ASCII chars         : 2.36s      @ 84.8    MB/s
      Unicode chars            : 2.06s      @ 86.0    MB/s
      CSI codes with few chars : 2.05s      @ 48.8    MB/s
      Long escape codes        : 3.68s      @ 213.0   MB/s
      Images                   : 2.28s      @ 234.4   MB/s
    
    foot:
    Results:
      Only ASCII chars         : 1.72s      @ 116.3   MB/s
      Unicode chars            : 2.51s      @ 70.6    MB/s
      CSI codes with few chars : 1.31s      @ 76.2    MB/s
      Long escape codes        : 5.48s      @ 143.0   MB/s
      Images                   : 2.44s      @ 218.2   MB/s
    
    Kitty old run #2 (after all other runs, to see if poor performance was a fluke)
    Results:
      Only ASCII chars         : 44.84s     @ 4.5     MB/s
      Unicode chars            : 19.11s     @ 9.3     MB/s
      CSI codes with few chars : 34.58s     @ 2.9     MB/s
      Long escape codes        : 14.06s     @ 55.8    MB/s
      Images                   : 2m12.08s   @ 4.0     MB/s
    

    I expected foot to win, and it does win for Only ASCII chars and sci codes by a little bit, but not by much, and not by a meaningful amount, especially when you consider all the other features kitty has. Great work!

    Also, this wasn’t a very rigorous test. I had a bunch of other stuff open, and I just ran them one after the other without much cooldown

  • iiGxC@slrpnk.net
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    4 months ago

    How do you run the benchmarks? kitten __benchmark__ says “__benchmark__ is not a known subcommand for kitten”

    Edit: I see now that the changelog says that the benchmark kitten was added in this release