Back to Home11/12/2025, 8:02:58 PM

Making the Clang AST Leaner and Faster

49 points
9 comments

Mood

thoughtful

Sentiment

positive

Category

tech

Key topics

C++

Clang

compiler optimization

Debate intensity20/100

The article discusses efforts to improve the performance and memory usage of Clang's Abstract Syntax Tree (AST) by reducing unnecessary data and improving data structures.

Snapshot generated from the HN discussion

Discussion Activity

Moderate engagement

First comment

2h

Peak period

9

Day 1

Avg / period

9

Comment distribution9 data points

Based on 9 loaded comments

Key moments

  1. 01Story posted

    11/12/2025, 8:02:58 PM

    6d ago

    Step 01
  2. 02First comment

    11/12/2025, 9:52:03 PM

    2h after posting

    Step 02
  3. 03Peak activity

    9 comments in Day 1

    Hottest window of the conversation

    Step 03
  4. 04Latest activity

    11/13/2025, 5:00:18 AM

    6d ago

    Step 04

Generating AI Summary...

Analyzing up to 500 comments to identify key contributors and discussion patterns

Discussion (9 comments)
Showing 9 comments
wild_pointer
6d ago
1 reply
Impressive work! Also waiting for fine-grained caching:

https://discourse.llvm.org/t/rfc-add-an-llvm-cas-library-and...

nicwilson
6d ago
1 reply
That is dated Feb 2022. Do you know if anything came of it?
boomanaiden154
6d ago
Quite a few patches have landed. A couple features using this have already shipped in Apple’s downstream clang.
reactordev
6d ago
2 replies
>Modern C++ codebases — from browsers to GPU frameworks — rely heavily on templates, and that often means massive abstract syntax trees.

Symptom of a symptom. Templates are abhorrent abominations. However, there’s no way to do generics without them. It just becomes a hairball mess at compile time… kudos for alleviating some of the pain in waiting.

o11c
6d ago
The C++ implementation, sure. But there is plenty of other implementation space without giving up like Java.

With a trait-first implementation that mostly defers monomorphization and prefers "static if" over C++-style specialized implementations, the only hard choice is whether to optimize codegen for size or speed.

Trying to retrofit this onto standard C++ is ... not actually as difficult as you might think. The real problem is the implementation of builtins that rely heavily on "this really must be a constant during X phase of compilation".

throwaway17_17
6d ago
Im not sure what the originating symptom is in your comment. I read your comment as saying:

‘requiring generics’ -> C++ Templates -> massive ASTs

Is that correct? If so I’d then wonder if the applies from strictly within the bounds of C++ the language. Is there an alternate meaning? I think there are quite a few viable ways to present what are usually called ‘generics’ at several levels of abstraction and in several programming paradigms, so any reading outside of C++ seems strange.

gnusi
6d ago
That's awesome improvement!
hinkley
6d ago
Optimizations that require changes to data flow are some of the trickiest to get through. Even when the benefits are great, it will feel like a loss to some to take something away to make everything faster. Is this really worth it?
jiehong
6d ago
Great stuff!

But, I’m afraid it will actually lead to even more heavily templated C++ in a rebound effect!

ID: 45905620Type: storyLast synced: 11/16/2025, 9:42:57 PM

Want the full context?

Jump to the original sources

Read the primary article or dive into the live Hacker News thread when you're ready.