Libghostty 1.0 is stable, your Mac maps your family, and Discord drops Electron

1 day ago

Libghostty 1.0 makes Ghostty's terminal core a stable C library that JetBrains IDEs already run on and Neovim is adopting. Also from Saturday's Hacker News front page: the knowledge graph and family classifier inside every Mac, Pivot's faster top-K GROUP BY, and Discord's Rust client that replaces Electron. Libghostty 1.0, by Mitchell Hashimoto https://mitchellh.com/writing/libghostty-1-0 Discussion: https://news.ycombinator.com/item?id=50399933 Every Mac comes with an (undocumented) family member classifier, by Dario Pasquini and Michał Bazyli https://8rank.ai/game/apple-intelligence-personal-knowledge-graph Discussion: https://news.ycombinator.com/item?id=50403097 aetherspawn on why the graph exists: https://news.ycombinator.com/item?id=50403752 Can GROUP BY still be optimized after all these years? https://pivotlake.io/blog/know-your-limit-faster-top-k-aggregation/ Discussion: https://news.ycombinator.com/item?id=50354097 malisper on the count-min sketch: https://news.ycombinator.com/item?id=50402082 Every Windows 11 app should kill Electron, and Discord just showed why, by Windows Latest https://www.windowslatest.com/2026/11/06/every-windows-11-app-should-kill-electron-and-discord-just-showed-why-no-starting-screen-and-70-less-ram-even-with-two-accounts-signed-in/ Discussion: https://news.ycombinator.com/item?id=50403507 Doohickey-d on Electron's accessibility: https://news.ycombinator.com/item?id=50404391 The front page that day: https://news.ycombinator.com/front?day=2026-11-07

Ask about this presentation

Chapters

  1. 0:00Libghostty 1.0
  2. 0:23Who already runs it
  3. 0:55How the ABI stays stable
  4. 1:31Your Mac's knowledge graph
  5. 2:05The family classifier
  6. 2:44Top-K GROUP BY
  7. 3:20Discord's Rust client
  8. 3:46When you can try it
Show transcript
  1. On Saturday's HN front page, libghostty reached 1.0. It is the terminal emulator at the core of Ghostty, pulled out into a portable C library, and as of this release both the library and its C ABI are stable. You can now build a terminal in about 1,500 lines of C that beats most terminals you can install on features and speed.

    Slide text

    Libghostty 1.0 puts Ghostty’s terminal in any app, with a stable C ABI

  2. If you use IntelliJ, PyCharm or GoLand, you are already typing into it: that is more than 12 million people. Neovim has approved a pull request that swaps libvterm for libghostty and closes a ten-year-old bug about reflowing scrollback on resize. Its maintainers were waiting for a tagged release so distributions could package it, and 1.0 is that release. More people now use a terminal built on libghostty than use Ghostty itself.

    Slide text

    The terminal in every JetBrains IDE already runs on libghostty

    JetBrains IDEs
    12.5 million active users
    Neovim
    approved PR to replace libvterm
    OrbStack
    embedded in a commercial app
    Turborepo
    renders task output in its TUI
    Ghostel
    a terminal inside Emacs
    cmux, herdr
    agent tools built on it
  3. That stability lets a distribution ship one shared copy for every app to link against. Every object is an opaque handle, and new settings go through the same few getters and setters, so adding one never adds a symbol. Link newer headers against an older library and you get an unsupported result instead of undefined behavior. Every change is checked against a committed ABI baseline in CI. At runtime it needs only libc, and the WebAssembly build is under a megabyte.

    Slide text

    A program built against newer headers gets an error code, not a crash

    // every object is an opaque handle
    // hundreds of values, a few enum-keyed getters and setters
    // a value this build lacks:
    result == GHOSTTY_UNSUPPORTED
    libabigail in CI versioned ELF symbols no copyleft dependencies needs only libc
  4. Two background daemons on every Mac since 2022 build a personal knowledge graph, and Apple's only documentation for them is a short man page. They cross-reference your contacts, the faces in your photos, calendar invites, the ages in Family Sharing, a log of who you message and when, and where you go. It all lands in 51 plain SQLite databases in your Library folder, behind Full Disk Access. The message log keeps who and when, and leaves out what was said.

    Slide text

    Every Mac since macOS 13 builds a graph of who you know

    Contacts faces in Photos Calendar attendees Family Sharing ages who you message, and when location Screen Time
    ~/Library/IntelligencePlatform · 51 SQLite databases
  5. The graph also guesses relationships. Two small classifiers take 144 features and score each person on seventeen columns, from mother to coworker, recomputed every day. Most of those features track who you message and who is in your photos, by time of day. One is the chance a person is in your photos on a Saturday night. Apple gives you no general way to correct a wrong guess, but an open-source dashboard called iKnow lets you browse your own graph locally. In the thread, aetherspawn argues this is how Siri knows which James you mean, and it stays on the device.

    Slide text

    Two XGBoost models score how likely each person you know is family

    photosPersonPosteriorProbabilityGivenSaturdayNight

    “it knows which James you mean”

    — aetherspawn
  6. A query like this one splits its groups across many hash partitions and merges every one, even though the ten winners sit in ten of them at most. Pivot, an open-source analytics database, gives each partition a handful of counters, one per hash slot. If every slot is below the current tenth place, no group in that partition can win, so it skips the merge. On a ClickBench query of this shape, that cuts the time by more than a third. malisper points out in the thread that the structure is a count-min sketch.

    Slide text

    Pivot skips most of a GROUP BY when you only want the top ten

    SELECT item_id, COUNT(*) AS c
    FROM orders GROUP BY item_id
    ORDER BY c DESC LIMIT 10;
    ClickBench Q16: 35.6 ms → 22.2 ms, over 70% of partitions skipped
  7. Discord is rebuilding its desktop app in Rust on GPUI, the GPU-drawn UI framework from the makers of Zed, with no HTML in it. In a cold-start clip on two Windows laptops, the new client skips the Starting screen and updates itself in the background. It held two accounts signed in at once in about 290 megabytes, where the Electron app normally sits under a gigabyte.

    Slide text

    Discord’s Rust client has its friends list up before the Electron app finishes loading

    Rust client on GPUI, two accounts 290 MB
    Electron app, normal use under 1 GB
  8. You can't install it yet. The client goes into private testing soon, on Windows, Mac and Linux. Doohickey-d points to what Electron gives you for free: screen readers and non-English input methods, where most Rust toolkits still lagged in 2025. For an app people leave open all day, I would take Discord's route. For a tool you open for a minute and quit, Electron is still a fair trade.

    Slide text

    The Rust client goes to private testing first, with no public release date

    “all Electron apps have decent accessibility out of the box”

    — Doohickey-d

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built with ❤️ in New York