frontpage.
newsnewestaskshowjobs

Open Source @Github

fp.

No Signs of AI Payoff Outside the Tech Sector

https://www.apollo.com/wealth/insights-news/insights/daily-spark/no-signs-of-ai-payoff-outside-th...
233•the-mitr•1h ago•191 comments

The Goose Programming Language

https://aardappel.github.io/goose/
101•andsoitis•1h ago•40 comments

Steal My Bitcoin

https://stealmybitcoin.com/
64•cloudlandsdev•41m ago•10 comments

Roku developer repositories moved from GitHub to GitLab

https://blog.roku.com/developer/gitlab-move
209•cxr•5h ago•139 comments

Listen and read USA nuclear forces Emergency Action Messages, heard on 11175 kHz

https://missileer.watch
52•liotier•1h ago•23 comments

John Carmack on the Goose Language: multiple data stacks and relative references

https://twitter.com/ID_AA_Carmack/status/2113704269274636568
86•bobbydigitales•2h ago•40 comments

Dream-1

https://dreamlabs.ai/research/dream-1/
107•GaggiX•2h ago•58 comments

The St. Helena 5 pence coin shows Jonathan, a roughly 190 year old tortoise

https://de.numista.com/9866
71•schleck8•4h ago•15 comments

FreeDNS

https://freedns.afraid.org/
207•esher•5h ago•55 comments

Danish Government silently drops plan to dump MS Office

https://www.computerworld.dk/art/297226/digitaliseringsministeriet-har-i-al-stilhed-droppet-stort...
128•lowkeyokay•2h ago•76 comments

Neural chip decodes interactions between brain regions

https://actu.epfl.ch/news/neural-chip-decodes-interactions-between-brain-r-2/
71•giuliomagnifico•5h ago•18 comments

I don't understand quantum physics (2018)

https://www.southampton.ac.uk/~doug/quantum_physics/index.html
243•rramadass•11h ago•182 comments

OBS Studio 33

https://github.com/obsproject/obs-studio/releases/tag/33.0.0
419•pentagrama•16h ago•150 comments

Node2Shell evolves to HTTP2Shell, blast radius affects many HTTP libs and apps

https://www.aikido.dev/blog/python-packages-vulnerable-node2shell-brotli-cve-2026-111497
245•theanonymousone•13h ago•123 comments

Symbolic Learning in Python and Julia

https://github.com/astroautomata/PySR
34•alex_hirner•4d ago•4 comments

Zac-OS-9: The classic Platinum desktop, reborn for modern PCs

https://sourceforge.net/projects/zac-os-9/
30•felixding•2d ago•18 comments

Physicists trap a single antimatter particle for a month

https://www.scientificamerican.com/article/physicists-trap-a-single-antimatter-particle-for-a-month/
254•mooreds•3d ago•76 comments

GPU-unlock: FP/BF16 instruction issue rate on Nvidia 3000's cards

https://github.com/Zagitta/gpu-unlock
143•fragebogen•11h ago•53 comments

Why is AI generated language so hard to understand?

https://arxiv.org/abs/2610.29162
102•canjobear•3h ago•85 comments

TornadoVM 7 Enables GPU-Native Workloads from Java Applications

https://www.infoq.com/news/2026/10/tornadovm-7-gpu/
80•pjmlp•2d ago•13 comments

Rails Is a JIT Compiler

https://railsatscale.com/2026-10-21-rails-is-a-jit-compiler/
3•fbuilesv•2d ago•1 comments

SpeedCrunch 1.1

https://www.speedcrunch.org/
6•LordNibbler•1h ago•1 comments

Local Wikipedia: Wikipedia, but only for things a half hour walk from you

https://edjefferson.com/localwiki/
1519•sohkamyung•1d ago•240 comments

PHP Foundation 'under-funded' with one full-time staff member, director says

https://www.reuters.com/technology/php-foundation-under-funded-with-one-full-time-staff-member-di...
82•firesteelrain•2h ago•34 comments

Twelve years of distributed SQLite

https://philipotoole.com/twelve-years-of-distributed-sqlite/
348•otoolep•19h ago•55 comments

Oai-math-revised: a community hub for revising OpenAI's math write-ups

https://terrytao.wordpress.com/2026/10/24/oai-math-revised-a-community-hub-for-revising-openais-m...
21•tokepi•5h ago•17 comments

Cecilia Berdichevsky, Clementina expert (1961)

https://en.wikipedia.org/wiki/Cecilia_Berdichevsky
25•fedecaccia•3d ago•1 comments

How close can pure functional programming get to C?

https://rtfeldman.com/fp-vs-c
240•stmonty•17h ago•78 comments

Bringing uv and ty together

https://astral.sh/blog/uv-ty-integration
280•Ravencentric•3d ago•92 comments

Tiling Noise – Procedural GPU Patterns

https://catlikecoding.com/godot/procedural-gpu-patterns/09-tiling-noise/
56•ibobev•3d ago•2 comments
Open in hackernews

The Goose Programming Language

https://aardappel.github.io/goose/
99•andsoitis•1h ago

Comments

iacuobos•1h ago
I can't see a reason to use this and not C++ It reads like slop text
andsoitis•1h ago
> to use this and not C++

Why Goose - https://aardappel.github.io/goose/#why-goose

FrustratedMonky•1h ago
Looks cool, and well developed. But really, cover pages need some better TL;DR, about the purpose. What is it for? There are a ton of languages out there. What gap is this filling? What is the purpose, the use case. Why do I need to keep reading further?

Edit Man, two posting about Goose back to back. Carmack alone might be enough to read further.

https://news.ycombinator.com/item?id=50224100

tobiolo•51m ago
I think it is a general systems programming language that fits for a variety of use cases but especially well with trees, records and where you want to have direct data (de-)serialization, like flatten out a tree and pick it up then (last one reminds me of FlatBuffers, another invention of the programming language author). I think if you look into the Discord channel there's some nice examples.
pulse7•1h ago
Educate me: how to create a program in Goose which reads a JSON structure, prints it out and finishes. How is memory for JSON allocated on stack? It can be from 1K to 1M - depending on the file...
stickfigure•56m ago
I don't see why this is problematic. Stack is just memory, you can allocate it by incrementing a pointer. Any amount you want, really.

Apache modules worked like this (still do, presumably). Each request has a stack; allocations bump the stack pointer; when a request is finished, the stack pointer is reset. Incredibly efficient as long as you don't need to keep memory longer than a single request.

Looks like in Goose, each scope acts like an apache "request".

abcd_f•44m ago
In Windows, by default, thread's stack is capped at 1MB. Main thread gets more but that's somewhat off the point.
andsoitis•54m ago
> How is memory for JSON allocated on stack?

Check the features section (https://aardappel.github.io/goose/#features), which starts off with how memory works.

malisper•52m ago
I'm not familiar with Goose, but based on some research and my understanding of how memory works:

At compile time, Goose will analyze your program and determine a number of stacks, N, for it. N is the maximum number of "growable" items you can have in existence at any given point in time. Using virtual memory tricks, each stack can grow up to 2GB, but it uses a contiguous address space and only uses as much physical memory as it actually needs.

For the program you're describing, I think you would end up with two stacks: one to parse the input and a second to print it. When you parse the input, Goose reads characters from the string one at a time and puts them onto the stack. Once it has hit the end of value, it will update the stack so it now represents the decoded JSON value (strings will just leave the characters in place, numbers will pop off the characters and push the number onto the stack). Goose repeats this until it has parsed the whole JSON, and now the whole JSON is on the stack.

Then, when you print the JSON, Goose uses the second stack to build a string. Like the parsing approach, it iterates through each element of the JSON and pushes its string representation onto the stack. Once it's done, it resets the stack pointers to free the memory.

This is really nice because allocating memory is just adding to the pointer, and freeing it is subtracting from the pointer.

In contrast, Rust automatically inserts malloc() and free() calls throughout your code, which are much more expensive than pointer arithmetic. On top of that, freeing a vector of heap-allocated objects is O(n), whereas if done right in Goose, it would be O(1)

andsoitis•1h ago
Lobster is the author's other programming language, previously discussed on HN: https://news.ycombinator.com/item?id=47239955
onlyrealcuzzo•58m ago
Interesting. Lobster rocks, and Goose is similar to something I've been building on the side, but would rather have someone build for me... Hopefully this guy does it!
vanderZwan•45m ago
*one of, you mean:

https://strlen.com/programming-languages/

weinzierl•1h ago
Rust's appeal (to me) is safety, performance, DX in that order.

Where does Goose sit when classified along these dimensions?

Sure, performance is right there on the packaging but no word about UB in the README. I read "Goose has syntax familiar to C and Rust" as DX in the same ballpark, but is it a performance first or safety first language.

If it is the former it occupies the same crowded niche as C++ and its many cousins and will have a hard time.

If it's the latter it will have much more room to prosper. We don't have enough languages in the niche that Rust and Ada fill right now.

vanderZwan•15m ago
Well, "safety" is a lot of things so you have to be a bit more specific than that about your use-cases. And I can't really answer it either way - I think WvO has to chime in about that himself - but I can point to some things that might give you some idea of what to expect. Here's what WvO wrote a few weeks ago when he shared Goose on twitter:

> Goose: my latest programming language. Safer, faster and less memory than Rust/C++ for algorithms where tightly packed, flat data structures matter.

> It can represent more kinds of data structures as flat, pointer-free bytes than any language I know.

https://xitter.cf/wvo/status/2107979660558766351

So one way to answer might be: how often do you reach for unsafe when using Rust? If you don't I guess Rust is safer. If you do… it gets trickier.

As for UB, I guess you could try looking through the spec and/or the reference? Like, the code is mostly generated by Claude after WvO wrote a specification. If it were anyone else I'd be worried, but given WvO's cv I actually suspect that means the spec leaves basically no ambiguity.

However, Goose compiles to C. Does that by definition mean UB sneaks in, or is there a "UB free" C subset? I don't write C, so I don't really know.

baalimago•1h ago
Do android dream of goose?
onlyrealcuzzo•56m ago
If you mentioned it in the main page, I didn't see it. Something that I'm interested in:

How fast is the compilation speed on large programs compared to Zig, C, Go?

My ideal language is safer than Rust (no deadlocks / livelocks, no stack overflow from recursion) but compiles faster than Zig.

IshKebab•44m ago
PLEASE rewrite this without AI-isms. AI can write perfectly good code now, but its prose - even the latest models - is just awful to read. It hurts my brain to read this.
ivanjermakov•40m ago
I like it this way, it gives correct expectations regarding effort put into the rest of the project.
rfgplk•43m ago
Keep going, and I hope more people start rolling their own languages.

If anyone is interested, I'm fairly close to finalizing Slang and I'm considering open-sourcing it in the near future. What originally started as a simple register based lang for an embeddable VM turned into an insanely expressive meta?programming language. Full system Fω, expansive whole program reflection (you can reflect on absolutely anything), string memory & logic safety..

You can do stuff like this:

   (fn answer () -> i64 0)
   (defpass build-answer
     (phase source)
     (transform (lambda (f)
       (fn-with f 'body '(let ((a (arr (42)))) (at a 0)))))
     (safety (lambda (goal) (syntax (refl)))))
   (run-pass build-answer answer)
   (fnmut answer
     (transform (lambda (f)
       (if (memory-safe? (check-memory (current-program)))
         f (syntax-error 'unproved-memory)))))
   (defpass inspect-ssa
     (phase ssa)
     (transform (lambda (f)
       (if (memory-safe? (check-memory (ssa-current-program)))
         f (syntax-error 'unproved-ssa-memory))))
     (proof (lambda (goal) (syntax (refl)))))
   (run-pass inspect-ssa answer)
   (answer)
or this:

   (fn next ((i i64)) -> i64 (+ i 1))
   (fncontract next
     (ensures result (successor (Eq i64 result (+ (old i) 1)) auto)))
   (fn read-second ((i i64)) -> i64
     (let ((a (arr (0 42)))) (at a i)))
   (fncontract read-second (requires (one (Eq i64 i 1))))
   (let ((i (next 0)))
     (with-proof ((one (Eq i64 i 1) (result-proof i successor)))
       (print (read-second i))))
it also supports full inline asm or llvm ir:

   (var answer 0)
   (asm (input rdi 20)
        (input rsi 22)
        (output rax answer)
        (mov rdi rax)
        (add rsi rax))
   (print answer)

   (macroop \ (a) (asm (mov a rax)))
   (\ 42)

   (print (llvm add 20 22))
   (print (->i64 (llvm fused-multiply-add (f64) 6.0 7.0 0.0)))
   (llvm fn sum32 ((x i32) (y i32)) -> i32
     (block entry
       (value answer (llvm add x y (declare (flags nsw))))
       (llvm return answer)))
   (print (->i64 (sum32 (the i32 20) (the i32 22))))

Even though you can write this by hand, the core idea is to get a very dense and terse language that LLMs can emit while guaranteeing safety and performance.
anonymous908213•38m ago
An AI-generated language with an AI-generated article proclaiming AI-generated benchmarks about how it's 3x faster than C++. Spare me.
FrankWilhoit•38m ago
The right ideas. Not optimized for reallocation. Creates pressure to overload types, making secure software unattainable.
mihaaly•37m ago
Oh, is this then the Holy Grail of memory handling or what?!

Please share it with logistics guys, since putting stuff from here and there into warehouse storage, then taking away, put some more in than planned sometimes, keeps spinning their heads. They need all the good logic!

So, yet another programming language, that's nice. I never thought there will be one more beyond English.

  Evolution of programming languages:
  - 1940s → Machine Code ( 0s 1s )
  - 1949  → Assembly
  - 1957  → FORTRAN
  - 1959  → COBOL
  - 1964  → BASIC
  - 1970  → Pascal
  - 1972  → C
  - 1983  → C++
  - 1991  → Python
  - 1993  → Ruby
  - 1995  → Java
  - 1995  → JavaScript
  - 1995  → PHP
  - 2000  → C#
  - 2009  → Go
  - 2010  → Rust
  - 2011  → Kotlin
  - 2011  → Elixir
  - 2012  → TypeScript
  - 2014  → Swift
  - 2015  → Solidity
  - 2026  → English
anigbrowl•37m ago
This looks very interesting! I mostly write in garbage-collected languages (to the extent that I still write anything by hand...) so I'm just a spectator in memory management debates, but it's often struck me that heap management is more of an art than a science. The idea of treating memory more like stacks made immediate intuitive sense to me. I'm also fascinated by the thread implementation, although I'm not knowledgeable enough to to think through the potential benefits/costs vs other approaches to concurrency.

I wonder if the name of the language was inspired by the way geese fly in formation, with trailing birds saving energy by flying inside the aerodynamic shadow of the leaders, and swapping in and out as needed. If so, a very nice metaphor for the memory management model.

I was also impressed by the documentation. As we know AI-generted docs tends to be rather mediocre, but the author has clearly invested time in making in readable such that the relevance and rationale of design decisions provide the context that a curious programmer needs to understand why things are implemented in a particular way.

I really appreciated the detailed samples, ranging from simple algorithmic theorems up to a small game. Again, I don't have the experience to rate the language vs others, but I was struck by readable the code was and how easy it was to follow task flow. Not having to think about classes is always a plus!

Anyway, I usually the the offering of a new language with dispassionate interest, as something to be aware of and but not get too invested in or familiar with until it gains enough popularity to have a good shot at longevity. Goose is the first language in a long time where I looked at it and immediately thought that I'd like to use it for its own sake.

malisper•29m ago
I'm curious, for someone more familiar with Goose: how do you represent an arbitrary number of dynamically sized values? If you have a fixed number of stacks, it seems like only a fixed number of values can change size at any given time.

For instance, how would you represent a hash table where the values are strings and at random, the program inserts or deletes a random string?

This doesn't seem like something you could easily represent. The only way I can think of is to keep a stack that holds all of your strings, and you periodically compact it.

Edit: Maybe you could also have a separate stack for strings of various sizes. One each for strings less than 8, 16, ... bytes. But at that point you're basically implementing your own malloc by hand.

Edit: Fwiw I do think Goose is very cool! I've had to hand-roll a lot of similar stuff in Rust before to speed up memory management

andsoitis•23m ago
> how would you represent a hash table where the values are strings and at random, the program inserts or deletes a random string?

Goose has a built-in generic hash table called dictionary<K, V>, provided by its standard library.

https://aardappel.github.io/goose/docs/stdlib.html#dictionar...

malisper•21m ago
From the link

> Keys and values are fixed-size

so not quite what I'm looking for

andsoitis•3m ago
You can store the strings separately and have the dictionary hold references to them.

Conceptually:

dictionary<i64, StringReference>

             |

             +----> "hello"

             +----> "a much longer string"

             +----> "x"
rvz•29m ago
If you can't be bothered to read and structure your own README after getting an AI agent to write more than 10,000+ lines on a single page, it becomes a DONTREADME.md.

Yet, the author expects YOU to read all of what they didn't write. So I ain't reading all of that.

pron•26m ago
Interesting, but can you write something like an LRU cache?
timcobb•25m ago
> One memory model: stacks, and scope exit is the free

What are the ergonomics of this I wonder.

skrebbel•23m ago
I love that the logo is a very fast goose
daoxid•21m ago
I'm curious, when returning a dynamically sized array from a function, does the whole array need to be copied? C++/Rust would simple move the array out of the function (i.e., they would only copy the pointer to the underlying data), but it seems this wouldn't work in Goose if the stack the dynamic array lives in is cleared on return?
malisper•13m ago
Goose determines where the array will be copied to at compile time and allocates it there.

Rust does a similar thing. When a function returns a value, a location for it will be put in the callers stack frame. That means it automatically stack-allocates values when feasible. The downside in Rust is you need to know the size of the value at compile time whereas Goose can do it for arbitrarily sized values

Aardappel•5m ago
I made the language, AMA :)
James_K•15m ago
I think the limit of this would be creating your own allocator that works with the stacks, but you could probably stop short of that in most cases.

It's not entirely mad to do it this way, and I can see some benefits. For one, you might have multiple of these pools across the program for different data-types, which would make allocating to any one of them a cheaper operation. It is much more reference safe since you are only ever freeing stuff in a certain context and you can still never have dangling pointers. When you look at memory safe languages, they all default to this eventually. Like Rust in the advanced case will have you implementing your own allocator, lot's of games use this thing called ECS which is essentially a kind of allocator. Goose would just have it be more common.

malisper•4m ago
This is roughly what I do in Rust. I use different static types for values based on how long they'll live. Temporary values get one type; cached values get another. The allocator allocates each value in a different location based on how long the value will live.
progval•15m ago
I'm not familiar with Goose, but I'm guessing you could define a single stack and put your dynamically sized values in it. Essentially rewriting a memory allocator on top of Goose's stacks. This is what they seem to be doing here: https://github.com/aardappel/goose/blob/master/samples/13_li...
malisper•9m ago
Yeah, that looks like a freelist approach. That will work as long as the values you're allocating are all fixed-size. You'll need something much more complicated if you want arbitrarily sized values

That example implements a linked list of integers. I'm curious how you would do a linked list of strings