frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Start all of your commands with a comma (2009)

https://rhodesmill.org/brandon/2009/commands-with-comma/
256•theblazehen•2d ago•85 comments

Hoot: Scheme on WebAssembly

https://www.spritely.institute/hoot/
26•AlexeyBrin•1h ago•2 comments

OpenCiv3: Open-source, cross-platform reimagining of Civilization III

https://openciv3.org/
706•klaussilveira•15h ago•206 comments

The Waymo World Model

https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simula...
969•xnx•21h ago•558 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
69•jesperordrup•6h ago•31 comments

Reinforcement Learning from Human Feedback

https://arxiv.org/abs/2504.12501
7•onurkanbkrc•47m ago•0 comments

Making geo joins faster with H3 indexes

https://floedb.ai/blog/how-we-made-geo-joins-400-faster-with-h3-indexes
135•matheusalmeida•2d ago•35 comments

Where did all the starships go?

https://www.datawrapper.de/blog/science-fiction-decline
45•speckx•4d ago•36 comments

Unseen Footage of Atari Battlezone Arcade Cabinet Production

https://arcadeblogger.com/2026/02/02/unseen-footage-of-atari-battlezone-cabinet-production/
68•videotopia•4d ago•7 comments

Welcome to the Room – A lesson in leadership by Satya Nadella

https://www.jsnover.com/blog/2026/02/01/welcome-to-the-room/
39•kaonwarb•3d ago•30 comments

ga68, the GNU Algol 68 Compiler – FOSDEM 2026 [video]

https://fosdem.org/2026/schedule/event/PEXRTN-ga68-intro/
13•matt_d•3d ago•2 comments

What Is Ruliology?

https://writings.stephenwolfram.com/2026/01/what-is-ruliology/
45•helloplanets•4d ago•46 comments

Show HN: Look Ma, No Linux: Shell, App Installer, Vi, Cc on ESP32-S3 / BreezyBox

https://github.com/valdanylchuk/breezydemo
240•isitcontent•16h ago•26 comments

Monty: A minimal, secure Python interpreter written in Rust for use by AI

https://github.com/pydantic/monty
238•dmpetrov•16h ago•126 comments

Show HN: I spent 4 years building a UI design tool with only the features I use

https://vecti.com
340•vecti•18h ago•149 comments

Hackers (1995) Animated Experience

https://hackers-1995.vercel.app/
506•todsacerdoti•23h ago•248 comments

Sheldon Brown's Bicycle Technical Info

https://www.sheldonbrown.com/
389•ostacke•22h ago•98 comments

Show HN: If you lose your memory, how to regain access to your computer?

https://eljojo.github.io/rememory/
304•eljojo•18h ago•188 comments

Microsoft open-sources LiteBox, a security-focused library OS

https://github.com/microsoft/litebox
361•aktau•22h ago•186 comments

An Update on Heroku

https://www.heroku.com/blog/an-update-on-heroku/
428•lstoll•22h ago•284 comments

Cross-Region MSK Replication: K2K vs. MirrorMaker2

https://medium.com/lensesio/cross-region-msk-replication-a-comprehensive-performance-comparison-o...
3•andmarios•4d ago•1 comments

PC Floppy Copy Protection: Vault Prolok

https://martypc.blogspot.com/2024/09/pc-floppy-copy-protection-vault-prolok.html
71•kmm•5d ago•10 comments

Was Benoit Mandelbrot a hedgehog or a fox?

https://arxiv.org/abs/2602.01122
23•bikenaga•3d ago•11 comments

Dark Alley Mathematics

https://blog.szczepan.org/blog/three-points/
96•quibono•4d ago•22 comments

The AI boom is causing shortages everywhere else

https://www.washingtonpost.com/technology/2026/02/07/ai-spending-economy-shortages/
26•1vuio0pswjnm7•2h ago•16 comments

How to effectively write quality code with AI

https://heidenstedt.org/posts/2026/how-to-effectively-write-quality-code-with-ai/
271•i5heu•18h ago•219 comments

Delimited Continuations vs. Lwt for Threads

https://mirageos.org/blog/delimcc-vs-lwt
34•romes•4d ago•3 comments

I now assume that all ads on Apple news are scams

https://kirkville.com/i-now-assume-that-all-ads-on-apple-news-are-scams/
1079•cdrnsf•1d ago•461 comments

Introducing the Developer Knowledge API and MCP Server

https://developers.googleblog.com/introducing-the-developer-knowledge-api-and-mcp-server/
64•gfortaine•13h ago•30 comments

Understanding Neural Network, Visually

https://visualrambling.space/neural-network/
306•surprisetalk•3d ago•44 comments
Open in hackernews

A brief history of threads and threading

https://eclecticlight.co/2025/09/20/a-brief-history-of-threads-and-threading/
95•emschwartz•4mo ago

Comments

tankenmate•4mo ago
When I saw the subject line I thought maybe we'd get an interesting article about OS/360 or something, but then found an article about Macs; interesting but not expected.
Animats•4mo ago
Right.

As far as I know, the first operating system to have threads was UNIVAC 1108 EXEC 8, first released in 1966.[1] They were called "activities". A program launched with one activity, and could start others with a FORK call. There were locks, with hardware support for an atomic Test and Set instruction. Activities had priorities, and there was a good scheduler. Threads exited with an EXIT call, and when the last thread exited, so did the program. No main thread. There were timed waits, explicit waits for an event, and even async I/O with callbacks. Multiprocessors were supported. In 1966.

It's still in use, as OS/2200. [2]

[1] https://ia803206.us.archive.org/11/items/bitsavers_univac110...

[2] https://www.unisys.com/siteassets/collateral/pi-sheet/pi-060...

TZubiri•4mo ago
That sounds like a process, processes are scheduled by the operating system. Threads are not, they are scheduled by an application.
Veserv•4mo ago
No, you are not using the standard definition of a thread [1]. What you are calling a thread would normally be called a userspace thread, green thread, fiber, stackful coroutine, etc. Note the specific qualifiers distinguishing them from the overarching concept of a thread which can be broadly classified as a scheduled instruction stream.

edit: Just to be clear, "thread" is itself also just one of many names for the general concept. Task, Activity, Actor, etc. may be used, but they might also refer to something completely different. It is really a question of checking that the properties of the named thing match the properties of the standard definition of a "thread".

[1] https://en.wikipedia.org/wiki/Thread_(computing)

TZubiri•4mo ago
you are right, I guess the main difference is whether the process or thread has its own memory or not, if it does it's a process, if it shares memory, it's a thread.
anyfoo•4mo ago
Processes aren’t scheduled by the OS, threads are. But many processes only consist of one thread, so there’s only one thing to schedule. Processes are commonly a collection of threads with a single shared address space among them.
cryptonector•4mo ago
Processes were scheduled by the OS back when there were only processes (e.g., in Unix). Today processes are collections of one or more threads (or zero if e.g. a zombie) that are scheduled by the OS.
somat•4mo ago
It is almost the other way around, which is to say, the same as you said but approached from the other direction. The unixen I know(linux and bsd) implemented the threading concept(shared memory execution environments) by taking their execution environment that did not share memory(the process) and having it share memory. So on at least linux and bsd(probably others but I can not say for sure) a thread is just a process that shares memory with another process.
cryptonector•4mo ago
Only Linux did the `clone(2)` thing. The others went for threads with a distinct ID namespace where all the threads were in the same process. Only Linux tried a different approach, and that approach was terrible for a while, and eventually Linux got much closer to the rest.
somat•4mo ago
Fair enough, probably my fault for having linux and openbsd as my two reference systems and assuming most other unixen went the same way.

Now That I am second guessing myself I am not even sure about openbsd, My assumption is mainly based on the manual for pthread "This 1-to-1 implementation of the pthreads API initially appeared in OpenBSD 3.9 under the name “librthread” as an alternative to the pure-userspace (N-to-1) implementation. In OpenBSD 5.2 it became the default implementation and was renamed to libpthread." and some half remembered discussion on the lists about adding shared memory flags to the kernel process structure.

cryptonector•4mo ago
All the BSDs and Solaris etc. went through a process of having OS threads and N-to-M threading in user-land only to eventually end up with 1-to-1 threading in user-land. N-to-M means that you could have N (with N>M) threads in user-land and a smaller number of OS threads to run them, and then the C library had to manage part of the scheduling by switching contexts between the N user-land threads as they blocked on I/O and as I/Os completed, and also maybe in other cases. N-to-M threading came to be considered harmful, at least in C, but then nowadays green threads are super popular in Java and other languages, and green threads are just more N-to-M threading.
Animats•4mo ago
The condition for program exit in EXEC 8 was that all threads had terminated, or all threads were in a waiting state. The latter produced the error message "AWAIT/DEACT AMBIGUITY". There was no "main thread".

By the time UNIX/Linux got threads, nobody knew that it had been done twenty years previous, and we had to go through a large number of design mistakes, mostly involving signals.

cryptonector•4mo ago
I know (you'd said up-thread).

> and we had to go through a large number of design mistakes, mostly involving signals.

Eh, Unix signals themselves were a bit of a design mistake, especially SIGPIPE (which was a byproduct of the lack of error checking in Unix programs). The reality is that Unix was too simple an OS, but the reality too is that that simplicity was the key to its success.

Animats•4mo ago
No, activities (threads) were totally scheduled by the operating system. This was not cooperative multitasking. All those activities are in the same address space.

Here's Dijkstra's P and V, implemented for EXEC 8 by John Walker, who later wrote AutoCAD. These are user space primitives built on top of the OS primitives ACT$ and DACT$. This is part of an application called FANG, an overdesigned utility for doing various copies with as much parallelism as possible.

I once modified a Pascal compiler for that system to support multi-threading. I could get about a hundred activities going.

The main difference from threads today is that there's no concept of a stack. There can be a heap allocator, and you can save state, but the whole concept of a stack is absent.

Animats•4mo ago
Ref: https://www.fourmilab.ch/documents/univac/fang/hsource/sched...
contingencies•4mo ago
I was hoping for something more like https://baer.tools/en/blog/a-brief-history-of-the-thread-fro...
codethief•4mo ago
As a non-native English speaker it took me quite a while to figure out what kind of thread they are talking about. :)
dented42•4mo ago
As a native English speaker it likewise took me quite a while to figure out Andy kind of thread they are talking about. ;)
mikejulietbravo•4mo ago
was just glad this wasn't about twitter :)
srean•4mo ago
There was a green threads library that came out off Apache Web server redesign exploration. Few days ago I was trying to recall the name and find the repo but couldn't.

Does anyone remember?

kergonath•4mo ago
> Its first Macs with dual processors came in PowerPC 7400 (G4) chips in Power Mac G4 desktop systems

AFAIK the first multiprocessor Power Mac was the 9500/180MP, with two 604e.

dboreham•4mo ago
Plus, threading has pretty much nothing to do with SMP.
dboreham•4mo ago
Quick note that this article is not a general history of threading. It's only about Apple operating systems, which are about the most backward thing you could pick to look at threading. NT or VMS or even Solaris would make a better choice.
Yoric•4mo ago
I had a friend exploring expanding the Solaris kernel to provide M:N scheduling to applications, back in the late 90s. I guess kind of a predecessor to Grand Central Dispatch on macOS?
felixgallo•4mo ago
Solaris had a variety of M:N options in the early-to-mid 90s, including libthread and pthreads, all of which were precursors to GCD as you say.
Yoric•4mo ago
I remember that the idea was to provide kernel-level support for better non-blocking I/O for M:N schedulers. I don't remember the details.
foofoo12•4mo ago
I though it was about machining threads on screws. If you did too and found it exciting, you'll find this book exciting too:

Exactly: How Precision Engineers Created the Modern World

https://www.amazon.co.uk/Exactly-Precision-Engineers-Created...

pechay•4mo ago
It's worth pointing out the Commodore Amiga had proper pre-emptive multitasking on a single M68000 all the way back in July '85