HN user

asb

4,307 karma

https://asbradbury.org https://muxup.com

https://twitter.com/asbradbury

https://www.linkedin.com/in/alex-bradbury

asb@igalia.com

Compiler engineer at Igalia (https://igalia.com). Previously co-founded lowRISC CIC (https://www.lowrisc.org) and served as its CTO for many years.

Writes LLVM Weekly (https://llvmweekly.org).

Posts31
Comments497
View on HN
www.npopov.com 5mo ago

This Year in LLVM (2025)

asb
43pts0
github.com 1y ago

Go 'green tea' garbage collector

asb
6pts0
v8.dev 2y ago

Maglev – V8's Fastest Optimizing JIT

asb
7pts0
www.cerebras.net 3y ago

Cerebras-GPT: A Family of Open, Compute-Efficient, Large Language Models

asb
567pts232
kcsrk.info 10y ago

Lock-free programming for the masses

asb
8pts4
duck.co 10y ago

DuckDuckGo: New Features from a Stronger Yahoo Partnership

asb
28pts7
www.sqlite.org 10y ago

SQLite 3.9.0 released with json1 extension module

asb
2pts0
www.openssl.org 10y ago

License Agreements and Changes Are Coming

asb
21pts5
google-opensource.blogspot.com 11y ago

Google Summer of Code now open for student applications

asb
3pts0
google-opensource.blogspot.com 11y ago

Mentoring Organizations for Google Summer of Code 2015 Announced

asb
2pts0
llvmweekly.org 11y ago

My weekly newsletter about LLVM/Clang has been running for one year

asb
85pts10
www.lowrisc.org 11y ago

Show HN: Tagged memory and minion cores in the lowRISC SoC

asb
9pts1
blog.wikimedia.org 11y ago

Phabricator, Wikimedia’s new collaboration platform

asb
121pts76
taras.glek.net 12y ago

How Mozilla Amazon EC2 Usage Got 15X Cheaper in 8 Months

asb
21pts2
trac.webkit.org 12y ago

"Fourth Tier LLVM" JavaScript JIT enabled in WebKit Mac

asb
13pts1
mail.mozilla.org 12y ago

Rust 0.10 released

asb
337pts91
blog.docker.io 12y ago

Docker 0.8: Quality, new builder features, btrfs, OSX support

asb
291pts121
news.dartlang.org 12y ago

Dart 1.1 features up to 25% faster Javascript

asb
28pts0
llvmweekly.org 12y ago

Show HN: LLVM Weekly – Developments in the world of LLVM and Clang

asb
49pts9
blog.chromium.org 12y ago

Dart 1.0: A stable SDK for structured web apps

asb
50pts22
fooishbar.org 13y ago

Weston on Raspberry Pi

asb
5pts0
pcwalton.github.io 13y ago

Performance of sequential Rust programs

asb
66pts26
www.bunniestudios.com 13y ago

Gongkai: an alternate open ecosystem that built a $12 phone

asb
42pts3
www.freelists.org 13y ago

Mike Pall: Ramblings on languages and architectures

asb
146pts96
blog.linode.com 13y ago

Security incident update

asb
318pts272
github.com 13y ago

Show HN: sh-todo, my take on the minimalist todo list (Posix shell)

asb
1pts1
www.lightbluetouchpaper.org 14y ago

A one-line software patent, and a fix (2012)

asb
15pts0
blog.linode.com 15y ago

Linode giving $100 credit to first 1,000 new customers to sign up this Friday

asb
93pts68
gmailblog.blogspot.com 15y ago

Gmail adds support for delegating access to accounts

asb
58pts13
apenwarr.ca 15y ago

An implementation of djb's 'redo' make replacement

asb
33pts9
Mistral Small 3 1 year ago

Note the announcement at the end, that they're moving away from the non-commercial only license used in some of their models in favour of Apache:

We’re renewing our commitment to using Apache 2.0 license for our general purpose models, as we progressively move away from MRL-licensed models

I think they should probably set LoopMicroOpBufferSize to a non-zero value even if its not microarchitecturally accurate. This value is used in LLVM to control whether partial and runtime loop unrolling are enabled (actually only for that). Although some targets override this default behaviour, AArch64 only overrides it to enable partial and runtime unrolling for in-order models. I've left a review comment https://github.com/llvm/llvm-project/pull/91022/files#r16026... and as I note there, the setting seems to have become very divorced from microarchitectural reality if you look at how and why different scheduling models set it in-tree (e.g. all the Neoverse cores, set it to 16 with a comment they just copied it from the A57).

Is Emacs dying? 2 years ago

Yes that's what I meant. Just an assumption I'd had, perhaps the joking about Emacs vs Vim preference in programmers made me assume the groups were of similar size.

Is Emacs dying? 2 years ago

One source of stats is the 2023 Annual Rust Survey. The question on text editors allowed multiple responses (so percentages naturally don't add up to 100%), but 5.5% of respondents reported using Emacs for Rust vs ~30% for Vim/Neovim, vs ~61% for VS Code. I was shocked that Emacs and Vim weren't closer. https://blog.rust-lang.org/2024/02/19/2023-Rust-Annual-Surve...

Obviously, it's possible this is a quirk of the Rust community. Though the Go survey shows similarly small Emacs usage numbers https://go.dev/blog/survey2023-h2-results (3% Emacs vs 16% Vim/Neovim).

(Article author here). I'm typically executing the same compile command from shell history (or via an alias) so missing off the `'; bell` isn't really a concern, but I agree that automatically triggering it after commands of a certain duration is a nicer way of avoiding that mental overhead if you're executing a wider variety of commands.

On https://muxup.com/ you should see pastel-coloured randomly drawn 'roguh' highlights for the site title and for the titles of individual articles. If you mouse over, they'll be redrawn while your mouse is hovering. If you're on mobile, you won't see that, and that's fine. It worked just fine on Android (FF or Chrome) and iPhone last time I checked, but do let me know if you're not seeing that.

It's really very simple, just thought the distillation of the 'rough' drawing technique to a couple of dozen lines of code for this use case might be of interest to some.

LLVM has a LoopIdiomRecognize pass which will, amongst other patterns, try to detect a loop implementing popcount [1] and convert it to the llvm.ctpop.* intrinsic [2]. I've not looked at why it's not matching this loop, but the sibling comment suggesting to just use `.count_ones` seems like the right answer for Rust. In C or C++ I'd strongly recommend using `__builtin_popcount` (provided by both Clang and GCC).

[1] https://github.com/llvm/llvm-project/blob/08a6968127f04a40d7... [2]: https://llvm.org/docs/LangRef.html#llvm-ctpop-intrinsic

Article author here. Thanks for calling that out - the intent wasn't to make readers who might not have been aware feel bad. It really came from my worry about being seen to write about something that is trivial and everyone knows already!

Perhaps I'd be better just dropping "I think it's quite well known that"?

Here’s the reality of the matter, though: whether or not you agree with the Sutskever/Shear tribe, the board’s charter and responsibility is not to make money. This is not a for-profit corporation with a fiduciary duty to its shareholders; [...] to the extent the board believes that Altman and his tribe were not “build[ing] general-purpose artificial intelligence that benefits humanity” it is empowered to fire him; they do, and so they did.

I would quibble with this slightly. They do have a right to fire, but they're doing a poor job of working in the not-for-profit's interests if they do so in a way that collapses the value of their biggest asset (the for-profit), especially when other options are potentially available. e.g. a negotiated exit, providing proper warning to their investors etc etc.

99.9% of my clang invocations are from the build dir of the git tree I'm working on, so I could be missing something known to others on the distribution side - but let me try my best answer.

Firstly, as you probably know the Clang/LLVM model is quite different to gcc/binutils in terms of build-time configuration. Any clang can target any architecture (unless it was disabled at build time) using --target=$TRIPLE (see <https://clang.llvm.org/docs/CrossCompilation.html#target-tri...>). In practice it's not as useful as it sounds of course because you need appropriate sysroots. You can control the default with LLVM_DEFAULT_TARGET_TRIPLE, but without patching clang it's going to enabled compressed for the riscv64-unknown-linux-gnu triple. I think the standard way of controlling other default flags would be to deploy a configuration file <https://clang.llvm.org/docs/UsersManual.html#configuration-f...> - though I'd need to check which logic took precedent if you explicitly passed --target=riscv64-unknown-linux-gnu. Ultimately we'd need to change the meaning of the current linux triples, or decide upon new ones I think.

Thanks for sharing that doc - really helpful. I don't know if it's different with GNU as, but not that if a file contains `.option rvc` that _isn't_ sufficient to set the EF_RISCV_RVC ELF flag with LLVM. Additionally, I'd imagine in general that people using .option in inline asm may see different behaviour for Clang vs GCC. Clang doesn't generate assembly output that then gets passed to the assembly - ELF emission happens directly (of course, with the assembler being invoked as needed for inline asm blocks), and so it's rather difficult to replicate the effect you'd see with GCC generating a .s file that's then assembled.

Ah, that's because my static site generator only includes "needed" CSS directives, so if the page doesn't have h3 then this isn't included (I know, classic premature optimisation):

    h3 {
      font-size:2.074rem
    }
Playing with font weights or color is a good suggestion, thanks.

Edited to explicitly mention muxup.com - you won't see any current articles using nested headings (i.e. h3 in addition to h1 for the article title and h2 for article headings) as every time I've used one I've not liked how hard it is to differentiate, and haven't invested the time in revisiting the CSS to fix it.

I'm currently using the 'minor third' scale on my site muxup.com (mainly because I didn't know what scaling to use and I saw it in use somewhere else). It seems fine, but I've found the headings aren't visually distinct enough if they're not right next to each other (i.e. it's hard to visually distinguish a h2 at 2.488 rem vs an h3 at 2.074rem). Perhaps I've chosen a bad scale, or perhaps I should be adding other visual markers to help distinguish the heading level?