Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Android 17 is the first since 3.x to add new APIs without releasing to the AOSP(grapheneos.social ↗)
    330comments
  2. San Francisco Onion Futures Company(onionfutures.com ↗)
    6comments
  3. Science Is Open Software(jepedersen.dk ↗)
    15comments
  4. SDCC – Small Device C Compiler(sourceforge.net ↗)
    7comments
  5. Cloudflare Quick Tunnels(cloudflare.com ↗)
    266comments
  6. Saving another 100TB of RAM(cloudflare.com ↗)
    58comments
  7. How OpenAI Used Its Own LLMs to Design Its Jalapeño Chip(ieee.org ↗)
    69comments
  8. How to Write with an LLM(sockpuppet.org ↗)
    299comments
  9. Show HN: Seal – Letters and passwords that open for your family after you die(github.com/jasonepage ↗)
    discuss
  10. Why building a Rust LSP is hard(rust-glancer.github.io ↗)
    11comments
  11. Typesafe-computer-use drives a Mac toward a goal for 1/50th of a cent per step(github.com/awlevin ↗)
    2comments
  12. Xcode 27.1 Beta Release Notes(developer.apple.com ↗)
    75comments
  13. Harm Laundering in GPT Models: Gender Discrimination Transformed Rather Than(arxiv.org ↗)
    discuss
  14. The first new cat species discovered in 100 years(nationalgeographic.com ↗)
    80comments
  15. Show HN: Cactus Needle 3: 8-29MB automation models can match DeepSeek V4 Flash(cactuscompute.com ↗)
    81comments
  16. Photon-Emission-Guided Laser Fault Injection Enables RP2350 Secure Debug(ledger.com ↗)
    61comments
  17. OpenJev(openjev.com ↗)
    250comments
  18. The Farnese letter(simonklee.dk ↗)
    5comments
  19. Cache-to-Cache: Direct Semantic Communication Between LLMs (2025)(arxiv.org ↗)
    12comments
  20. Goroutine Leak Profiles(go.dev ↗)
    1comments
  21. LispBM is a concurrent Lisp for microcontrollers with message passing(lispbm.com ↗)
    3comments
  22. Cyclomatic Complexity in C#(ndepend.com ↗)
    16comments
  23. Claude Code now reads AGENTS.md if there is no Claude.md(claude.com ↗)
    208comments
  24. Minimal Phone 2(minimalcompany.com ↗)
    199comments
  25. Show HN: LiveWorld – Every 24/7 YouTube live camera on one globe(liveworld.info ↗)
    32comments
  26. Alibaba open-sources AI model that can detect cancer and nearly 150 conditions(scmp.com ↗)
    9comments
  27. Warez: The Infrastructure and Aesthetics of Piracy (2021)(archive.org ↗)
    39comments
  28. Inside ZCode: Silently uploading your Git history to the cloud(ferstar.org ↗)
    94comments
  29. Flock Offers Employees Buyouts as Customers Flee(wired.com ↗)
    3comments
  30. How SpaceX streamlined the Raptor engine(construction-physics.com ↗)
    55comments

Size-Specialized Memory Allocation

26 pointsby 2d agogo.dev
4 comments
6h agoHN ↗

Super interesting!

Fil-C's GC has basically always had size-specialized allocation and I've done some experiments with this so I have my own data.

As the post says, there are two potential benefits:

- Faster memory clearing when the compiler knows the size. In Fil-C, I leverage that by having LLVM emit a memset inline, so it often ends up being some SIMD crap.

- Faster size class computation.

Interestingly, the faster size class computation isn't really faster in practice. I implemented it and that's how the ABI works today, but I'm likely to move the size class computation into the runtime to simply the ABI, since repeated experiments show that there are no savings to be had there. It's super surprising, but the numbers don't lie.

Anyway, cool to see other fast non-moving GCs also finding the same sweet spot as me.

(Posted from WebKit built with Fil-C so for extra meta, I'm using the GC I describe to write this post)

6h agoHN ↗

Not sure that protobuf change is the same thing

But you might be right on your overall point: on my big x86 CPU, it doesn't matter, but it might matter on some tiny arm thingy

23m agoHN ↗

I’m not sure if you were getting at this by mentioning the ABI specifically, but for Go the “faster size class computation” isn’t purely about the computation itself.

There are lots of cases in the allocator that are conditional on size class (tiny allocations have a bunch of special cases, as do large allocations). Pointer/no-pointer allocations also have lots of special cases.

In the specialized functions, these conditionals become constant and lots of code falls away. We don’t pay the cost for those comparisons anymore, plus since code size is smaller it is now more reasonable to inline callees a bit more aggressively.

Michael also put a lot of time into finding the right balance of code size. At first you want to specialize everything, but that is going to increase code size a lot and thus hurt icache performance. If I recall correctly, our initial version had a code size increase ~4x higher than what we ended up with in 1.27. The final version specializes far fewer size classes yet actually had better performance than the original version.

Regarding the ABI, we definitely see an improvement with static calls vs computing the size class in the runtime. If I recall correctly, it’s the indirect call to the specialized function through a lookup table that stalls the dynamic case.