frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

You Can Run

https://magazine.atavist.com/2026/mccann-cocaine-fugitives
1•bryanrasmussen•50s ago•0 comments

The fourth law (on AI-generated supercustomized email marketing)

https://www.robinsloan.com/lab/fourth-law/
1•brandur•57s ago•0 comments

We have decided to make our service FREE. (Bloomberg Terminal for Everyone)

https://www.bullbear.ninja/notes/everything-free-ad-supported
1•haebom•1m ago•1 comments

Claudemux – Run and coordinate multiple Claude Codes reliably

https://github.com/wastedcode/claudemux
1•zeppelin_7•2m ago•1 comments

Authentic looking D&D homebrews with Markdown

https://homebrewery.naturalcrit.com/
1•Svoka•3m ago•1 comments

Show HN: Oh my wrist – Garmin alerts for Claude Code and OpenCode

https://github.com/yazon/oh-my-wrist
1•yazon•4m ago•0 comments

The mayor of Shelbyville, IN says only 'shitty houses' oppose data center

https://www.theverge.com/ai-artificial-intelligence/944984/shelbyville-indiana-mayor-shitty-house...
2•timpera•4m ago•0 comments

Adobe Photoshop: A Case for Keeping an Intel or PowerPC Mac

https://lowendmac.com/2025/adobe-photoshop-a-case-for-keeping-an-intel-or-powerpc-mac/
1•herbertl•7m ago•0 comments

Blackopscloud: Private VPS in seconds, email signup, crypto

https://blackopscloud.com/verify?redirect=%2F
2•hardboners69•9m ago•1 comments

Language models transmit behavioural traits through hidden signals in data

https://www.nature.com/articles/s41586-026-10319-8
1•momentmaker•11m ago•0 comments

Communities of Not

https://lucumr.pocoo.org/2026/6/6/communities-of-not/
1•Tomte•13m ago•0 comments

VibeOS

https://github.com/hansstam86/wibeos/tree/main
1•hans863•15m ago•1 comments

Every AI Agent Feature Is a Cache Invalidation Surface

https://www.openclacky.com/engineering/cache-invalidation-surface
1•gemHunter•18m ago•0 comments

From State to Foresight: Adding a Predictive World Model to an LLM Assistant

https://zenfox.ai/research/world-model-llm-assistant
1•zenfoxai•19m ago•0 comments

The last astronomers: astrophysicists left questioning the soul of their field

https://www.science.org/content/article/amid-flood-ai-advances-astrophysicists-are-questioning-so...
2•creamyhorror•20m ago•0 comments

Police in England and Wales told to halt AI use in court statements

https://www.ft.com/content/229e5949-3ebc-4151-8a86-a01b5e259241
2•nmstoker•20m ago•0 comments

A 40-Node 1U Cluster Gigabyte R1C7-K0A-AS1

https://www.servethehome.com/a-40-node-1u-cluster-gigabyte-r1c7-k0a-as1/
2•ksec•25m ago•1 comments

Scientists found a surprisingly simple way to create powerful quantum states

https://www.sciencedaily.com/releases/2026/06/260606075510.htm
1•hsnewman•25m ago•1 comments

Total Reciprocity Public License

https://trplfoundation.org/
1•birdculture•25m ago•0 comments

AI didn't break the web. The dotcons did – AI just turned up the volume

https://hamishcampbell.com/ai-didnt-break-the-web-the-dotcons-did-ai-just-turned-up-the-volume/
2•speckx•26m ago•0 comments

Python JIT project was asked to pause development

https://discuss.python.org/t/an-announcement-from-the-steering-council-regarding-the-jit-project/...
2•kbumsik•26m ago•0 comments

Microsoft continues its big Linux push at Build 2026

https://www.zdnet.com/article/microsoft-continues-its-linux-company-shift/
1•abdelhousni•27m ago•0 comments

Microsoft launches Scout, an OpenClaw-inspired personal assistant

https://techcrunch.com/2026/06/02/microsoft-launches-scout-an-openclaw-inspired-personal-assistant/
1•Pearlapp•29m ago•0 comments

Show HN: Native Mac app which places an teleprompter in your Mac's notch

https://apps.apple.com/in/app/cuenotch-notch-teleprompter/id6760926058?mt=12
1•siddharthrk14•30m ago•0 comments

Medically supervised water-only fasting in the treatment of hypertension

https://pubmed.ncbi.nlm.nih.gov/11416824/
1•pseudolus•31m ago•0 comments

How does Effect work under-the-hood?

https://effect-guide.netlify.app/
1•obadakhalili•31m ago•1 comments

Drawing Hands

https://hari.computer/drawing-hands
1•andytratt•35m ago•0 comments

A Cross-Language Perspective on Speech Information Rate (2011) [pdf]

https://gwern.net/doc/cs/algorithm/information/2011-pellegrino.pdf
1•tosh•37m ago•0 comments

Two characters named Dennis the Menace were created independently the same day

https://www.smithsonianmag.com/arts-culture/dennis-menace-has-evil-british-twin-180958114/
1•nobody_nothing•38m ago•0 comments

Show HN: MemoryHole – Personal Internet Archive

https://memoryhole.app/blog/welcome-all
1•flippant•39m ago•0 comments
Open in hackernews

Moving beyond fork() + exec()

https://lwn.net/SubscriberLink/1076018/16f01bbbb8e0d1f0/
59•jwilk•1h ago

Comments

ComputerGuru•49m ago
I'm not surprised Chen's patch was rejected; that's an extremely niche usecase not worth supporting. With my shell developer hat on, I agree with the closing "developers would likely welcome a native implementation that isn't (unlike the current implementation) hiding fork() and exec() under the covers".
smj-edison•36m ago
It sounds like they're interested in the concept though, just not that specific implementation.
sanderjd•28m ago
Yeah this seems like a promising discussion.
hparadiz•49m ago
Maybe tangentially related but I always think it's silly that every linux process has the same libgcc_so.so.1 loaded into memory for each process even though the raw binary for the library is exactly the same so you end up with like 800 copies of libgcc_so.so.1 in memory.

I mean maybe this has been optimized for already and I don't know what I'm talking about but maybe someone with more knowledge about the kernel knows? Is this something we simply can't optimize for because of security implications?

201984•45m ago
Shared libraries (and mmapped files in general) are deduplicated; it's nowhere near as bad as you think. The kernel loads a .so into memory once and then maps that memory into every process that mmaps it.

Editing to add: this deduplication is one of the greatest upsides to dynamic linking. Common libs like libgcc and libc only have to exist in memory once and can stay in CPU caches, whereas if they were statically linked into every binary, each binary would have a copy of that library that wouldn't be shared with anything else and you'd waste a lot of memory.

sjmulder•18m ago
Doesn't the loaded code have to be patched for relocations?
ptspts•11m ago
It does, so not 100% is reused. The patched parts are in different sections though, so the entire .text (code) section ends up being reused.
monocasa•9m ago
Not on modern archs that provide decent support for PIE (position independent executables).
t-3•6m ago
Not if it's position-independent.
monocasa•45m ago
Those mappings by default all go to the same shared memory.

Unices have been sharing executable memory between processes longer than there's been mmap for user space to do the same thing themselves. I remember seeing it in the 2BSD kernel for instance.

Sophira•39m ago
I'm guessing that a big part of the problem with moving away from fork() in general is that each new process needs a copy of the parent process' environment anyway, right?
lokar•36m ago
the environment is not that big
dijit•35m ago
I'm a bit naive, but I don't think that's necessarily a requirement.

It might be commonly held convention, and thus, an assumption, in Linux (and, broadly, UNIX) but I don't think it's true inside VAX or even Windows, so I don't think it's a requirement.

Unless I've missed something (which is totally possible, this is not an area of OS design I've spent much time).

sjmulder•19m ago
Even DOS has environment inheritance!
lanstin•6m ago
But also UID, groups, controlling TTY, process group, capabilities, pipes, shared memory, etc. and the file descriptors while maybe not inherently needed are how a lot of Unix plumbing works.
zerobees•28m ago
The LWN article is incorrect in saying that it "must copy the entire process state (including memory) for the child process". There are some kernel structures and page tables that need to be initialized, plus you need a new stack, but it's not nearly as dramatic as implied. Most of the parent's memory is "incorporated by reference", so to speak.

In fact, if you profile it, in the fork() + execve() model, execve() is far more expensive, because not only does it replace the old process with a new one, but it also involves running the dynamic linker, which opens, parses, and mmaps library files.

It still makes sense to get rid of the fork() overhead if you're going to throw away the cloned process state soon thereafter, but if you wanted to make process execution radically faster, rethinking the exec architecture would probably offer more significant gains.

ktpsns•36m ago
There is lots of discussion on this old API here on hacker news, for instance https://news.ycombinator.com/item?id=31739794
lokar•34m ago
This seems unnecessary to me. In the example, the core of git should be a library yo can link so you don't need to run the binary. That would be better in every way.
sanderjd•28m ago
There are lots of reasons to want to spawn fresh processes, which aren't solved by linking a library.
aerzen•15m ago
Spawning processes should not be on the hot path of any program.
lokar•4m ago
Sure, but not many times a second
sanderjd•30m ago
I just ran into this recently, where I had an obscure bug caused by needing to close more file descriptors in the forked process. "I want a clone of the current process" is just way less common in my experience than "I want a completely new process". It feels crazy that we don't have a way to directly express the latter thing, and can only approximate it by cloning and then fixing things up in post.
dnw•28m ago
What do you mean by "a completely new process"?
sanderjd•25m ago
A process that shares nothing with the process that spawned it.
jerf•12m ago
A thing that makes that complicated is that while you want that conceptually, you don't want that in reality. For instance, if the spawning process is in a container of some sort and it spawned a process that "shares nothing with the process that spawned it", the spawned process would no longer be in that container, because the state of "being in the container" is one of the things it shares with the parent process.

This is just an example of I don't even know how many things a modern-day process will share from its parent.

By "complicated" I do not even remotely mean "unsolvable". I just mean that if you really dig down into what it means to "share nothing" in a modern operating system, it's a lot richer than it was back when fork+exec was a practical solution. There's a lot of fuzzy things that could go either way when you say "shares nothing".

wongarsu•11m ago
debatem1•23m ago
There are a lot of slightly different fork-exec-like things in the concept space and it's hard to imagine one approach satisfying them all. IMO it would be interesting to take an approach analogous-ish to sched_ext_ops where you built the rough flow chart of a combined fork-exec, but with hooks built to enable ebpf to change behavior or skip the bits these sophisticated users don't want/need.
uecker•21m ago
The elegance of the fork() + exec() model is that every kind of configuration can be done after the fork using all the usual APIs. Every attempt to replace it with a combined call that I have seen so far seemed fundamentally poorer because it needs to add all configuration options as parameters to the call and then do this in away that you can extend it later and does not become a mess.
amluto•15m ago
I have the entirely opposite opinion. IMO a big mistake of the UNIXy model is that so much state is preserved across the creation of a process. For example, there are APIs to have a specific thing be fd number 4 so you can run a program and have it find that thing at fd 4. This is weird.

Windows, for all its many, many faults, did not use fork+exec and instead mostly has options for how one creates a process. It wasn’t done elegantly, but it was the right decision.

mrkeen•8m ago
> fork() is a relatively expensive system call; it must copy the entire process state (including memory) for the child process. Many optimizations have been made over the years, but a fork is still a fundamentally costly operation. To make things worse, a fork() call is often immediately followed by an exec(), which will discard all of that memory that was so carefully copied for the child.

It's weird to leave out a mention of copy-on-write - the optimisation that means that you don't copy over all the memory.

rom1v•7m ago
It makes me think of "A fork() in the road": https://www.microsoft.com/en-us/research/wp-content/uploads/...

> ABSTRACT > The received wisdom suggests that Unix’s unusual combi- > nation of fork() and exec() for process creation was an > inspired design. In this paper, we argue that fork was a clever > hack for machines and programs of the 1970s that has long > outlived its usefulness and is now a liability. We catalog the > ways in which fork is a terrible abstraction for the mod- > ern programmer to use, describe how it compromises OS > implementations, and propose alternatives. > As the designers and implementers of operating systems, > we should acknowledge that fork’s continued existence as > a first-class OS primitive holds back systems research, and > deprecate it. As educators, we should teach fork as a histor- > ical artifact, and not the first process creation mechanism > students encounter.

burnt-resistor•5m ago
> "If you are repeatedly creating large processes, you are already doing it wrong. The fix is in user space, not the kernel."

Every couple of years, someone claims they have "the solution" implying everyone else who came before them didn't know what they were doing.

saidinesh5•43m ago
Typically libgcc_so.so is loaded by the linker, which uses an mmap call to map the binary into the address space.

> The kernel keeps track of which file is mapped where, and can detect when a request is made to map an already mapped file again, avoiding physical memory allocation if possible.

Relevant stack overflow answer: https://stackoverflow.com/questions/61950951/linux-shared-li...

mlaretallack•42m ago
In Linux, when a shared lib is loaded by multiple processes, its loaded once and not duplicated in ram. Only if a memory page is modified by the process will the memory be duplicated. (Hope I have explained that correctly)
BoingBoomTschak•32m ago
Eh? Aren't shared libraries actually shared in memory?
sirsinsalot•24m ago
I have a rule for myself. If I think something is silly or stupid, I assume I don't understand it. I usually find I do not understand it, and it no longer seems silly when I do understand it.

In this case too, you think it is silly because you don't understand it. Your assumptions are wrong, making it seem silly.

sanderjd•25m ago
A lot of times you actively don't want the parent environment or any of the memory or file descriptors. And then you have to actively do work to fix all that stuff up after the fork.
The equivalent of CreateProcessW https://learn.microsoft.com/en-us/windows/win32/api/processt...
1718627440•6m ago
But you generally want to communicate with that process, so you do need to setup e.g. file descriptors and stuff, which needs information from the parent process to be passed.