Skip to content

0.0.3

Latest
Compare
Choose a tag to compare
@fathyb fathyb released this 18 Feb 00:23
· 3 commits to main since this release

This second release of Carbonyl is very special!

Introducing Bitmap Mode

You can now start Carbonyl with a --bitmap flag to disable terminal text rendering.
Combined with the new --zoom flag, this lets you get a high-res browser in most terminals with zoom control. Look ma', no SIXEL!

 

CleanShot.2023-02-17.at.23.26.10-converted.mp4

 

Some terminals such as the macOS stock terminal are not efficient enough to render in bitmap mode. We found Alacritty and Kitty to perform the best, although Kitty's zoom is limited. Alacritty can render Carbonyl in 1080p at ~40FPS on an M1.

More is coming to bitmap mode. Most notably, we will integrate the complete Chromium UI.

Bigger

Carbonyl now uses a process we call "quadrant binarization": we take 4 pixels and turn them into a foreground color, a background color, and one of these unicode quadrant characters: , , , , , , , , . (code)

This allows Carbonyl to render 4 visible pixels per terminal cells, instead of 2 for previous versions. The page zoom also got tweaked to look better on terminals.

0.0.2 0.0.3
Screenshot 2023-02-17 at 23 08 32 Screenshot 2023-02-17 at 23 08 40
Screenshot 2023-02-17 at 23 12 26 Screenshot 2023-02-17 at 23 12 34
Screenshot 2023-02-18 at 00 33 06 1 Screenshot 2023-02-18 at 00 33 14

Faster

Bitmap mode puts more pressure on Carbonyl's renderer, so the renderer now runs in a dedicated thread and batches input events. This frees the browser thread to handle inputs and send them to tab processes. This makes expensive inputs such as scrolling far smoother.

All binaries are now compiled with Chromium PGO profiles, this brings a ~4% speedup. macOS binaries are now compiled with LLVM lld and have LTO enabled, this brings a ~15% speedup.

Lighter

Previous versions required a cocktail of ~20 dependencies to work on Linux. It makes sense for Chromium to have that many dependencies, but in our case we do not render in a window server or use GUI toolkits.

This version of Carbonyl only requires 4 dependencies now:

  • libnss3: SSL library needed for root SSL certificates
  • libexpat1: XML library, will be removed in the future
  • libasound2: ALSA library for audio playback
  • libfontconfig1: we need the configuration this package generates

This makes the Docker image go from 160 MB to 110 MB.


🚀 Features

  • Add --help and --version (#105)
  • Add logo and description to --help (#106)
  • Use Cmd instead of Alt for navigation shortcuts (#109)
  • Enable h.264 support (#103)
  • Introduce quadrant rendering (#120)

🐛 Bug Fixes

  • Fix arguments parsing (#108)
  • Fix missing module error on npm package (#113)
  • Enable threaded compositing with bitmap mode
  • Fix idling CPU usage (#126)
  • Package proper library in binaries (#127)

📖 Documentation

  • Update download links
  • Fix commit_preprocessors url (#102)
  • Add --rm to Docker example (#101)