Hacker News new | ask | show | jobs
by leobuskin 22 days ago
A few problems with this Fable's project:

1. It's not Python by any means, it's a subset with its own runtime, its own quirks and nuances;

2. It will be impossible to maintain parity with CPython without AI assistance;

3. It will die the same way as dozens of similar (even non-AI projects) died before, and reasons will be the same: (1) and (2).

3 comments

"Without ai assistance" - ok, but what about with ai assistance?
For a project like this, relying on AI assistance also makes it effectively dead in the water.
Why?
Time-cost for machines instead of willing knowledgeable humans. The former requires money, the latter requires passion.

Arguably, passion for a project is without price.

Someone pays for the AI? That's the new human maintainer.
Who will pay if someone, somewhere is not passionate about it?
Hypothetically, maybe. In practice, probably not.
Humans have time-cost too, much higher than machines. Considering SOTA right now, for a project like this it would make more sense for the community to contribute and verify tests, sponsor updates with $.
Trust
Not convinced. I was looking for an answer like "it doesn't actually have parity with CPython." If it does, that's a decent indication that it can be sustained.
Good luck implementing and then maintaining a project of this size and complexity at ~100 lines of verified code per human developer per day.
I wonder how you arrived at that number. Is it perhaps a number that we should aspire to, if we want to write high-quality, maintainable code by hand?
I've been doing some reading recently around what the literature expects a professional software engineer to produce in a day.

In ~1976 Mythical Man Month era it was around 5 lines of fully debugged assembly.

Code Complete 2nd edition ~2004 bumped that up to 10-50 delivered lines of code per day.

I found other estimates of around 20-60. I need to pull them altogether into a cited article.

Based on that plus my own experience I think 100 lines per day of production-level, reviewed and debugged code was a reasonably higher target for a professional software engineer up until just a couple of years ago.

Today I'm frequently pushing 2,000 to 4,000 - and that's not vibe coded junk (I can easily hit 10,000+ if I'm not reviewing anything), that's code that I've reviewed and am happy to put my name to.

Obviously counting lines of code is a stupid, easily gamed metric. But I still think there's signal there. If you want to build a sophisticated piece of software you're going to have to write a bunch of code to do it. Writing at 1,000+ lines of code per day vs 100 will get you there faster.

It's possible, but we're at the moment when most of us can ask Fable to implement a custom compiler to a custom target for our favorite language, and even use it as a part of custom solution. Why do I need someone else's implementation? Where's the magic in this project? What's the secret sauce?
>Where's the magic in this project? What's the secret sauce?

Someone else paying for the tokens.

Also someone seeing it through (should that come). Obviously we're not "at the moment when most of us can ask Fable to implement a custom compiler to a custom target for our favorite language, and even use it as a part of custom solution", without thousands to spare and lots of time to shape the solution.

Even if it does cost thousands (does it? I genuinely have no idea how to scope such a thing) that might be a good price if a custom compiler to your custom target is something you really want. People have paid far more for far less.

If you're a hobbyist trying to compile python to your weird little arduino based thing, then that's a lot of money and you would want to use somebody else's solution, no doubt.

But if you're an aerospace company trying to compile for a flight control computer (and I guess you really want to use python for some reason), spending thousands of dollars on tokens to make and maintain a custom compiler could represent serious savings.

The big picture impact of AI that I see/anticipate the most is SAAS dying out because AI coding makes this kind of enablement and support software easier to make in-house, and this feels like an example of that, but maybe I'm seeing what I expect to see.

Just eight years ago basically nobody wanted to pay for compilers and developer tooling, and now you're suggesting people will spend a thousand dollars for a compiler they'll have to maintain themselves just because they're willing to pay for AI generated tokens but not for finished tools?

>But if you're an aerospace company trying to compile for a flight control computer (and I guess you really want to use python for some reason), spending thousands of dollars on tokens to make and maintain a custom compiler could represent serious savings.

If you're an aerospace company you're willing to pay thousands of dollars for a compiler, because you need a DO-178C certified toolchain so that you can DO-178C certify the whole airframe. Suggesting AI here tells me you have no clue about the realities of aerospace, because you've just thrown out the entire value proposition of the commercial toolchains.

>Even if it does cost thousands (does it? I genuinely have no idea how to scope such a thing) that might be a good price if a custom compiler to your custom target is something you really want. People have paid far more for far less.

I wouldn't spend $100K in tokens to get a custom bare metal Python. Or even $10K.

And I'd guess that most devs wouldn't either, unless they spend $10K like it's nothing.

People that have "paid far more for far less" are people who have the money to buy $10K watches, or fancy multi $1000 clothes.

your first mistake is thinking this would cost that much. with DS4 this might cost far less than 1k imo
It's like we invented a worse github.
To be fair, most of the training data likely came from GitHub.
Gimphub.
it will be impossible to maintain parity with wetware
Then the question is why? Because that is an another way of saying donating tokens.
>1. It's not Python by any means, it's a subset with its own runtime, its own quirks and nuances;

A subset of python is python. Half a tomato is still tomato

>2. It will be impossible to maintain parity with CPython without AI assistance

What does that even mean? If you would have said that it's impossible to update to python 3.15 of further, I'd get it.

> A subset of python is python. Half a tomato is still tomato

The funny thing about this is not that the first sentence is wrong, which it is. It’s the failed reductio ad absurdum.

> A subset of python is python. Half a tomato is still tomato

A subset of a calculator is still a calculator, but that subset definitely can't do everything the full version can.

Most subsets of a physical calculator are properly called “a broken calculator”.
This isn't about the shell of a calculator though, but the functionality. Like if the only operations are addition and subtraction, theoretically you could derive the effects of other operations but it's extremely limiting.
So yeah, half of Python might still be Turing-complete, but it wouldn’t really be Python for any practical purpose.

Just like how a device that can’t multiply or divide is not a 4-function calculator; it’s more like an adding machine. Many of which did multiply by serial addition.

If you write a program in python, say a hello world:

'

def hello_world():

  print("hello, world")
'

Is that not python? Yet it uses a subset of python?

That program can be run by either a python runtime, or a python subset runtime.

Now if you were to run a python subset program, like a hello world, you would get:

'

def hello_world():

  print("hello, world")
'

Whoah, it's the same thing.

Turns out every program you write with a subset of a language, is valid for the super language.

Subjectively also, if the subset is big enough, it feels like that language, if it uses 'def' for functions, that's python. 'I know it when I see it' kinda deal.

I think the confusion comes from the mathematical folk reading "subset of X is X", and implying that "subset of X=X". But this is natural language, not mathematical language, when I say that "dog is mammal", I'm not saying that "dog = mammal" I'm saying that "dog ∈ mammal", and "subset of python ∈ python"

> A subset of python is python.

Mojo folks (rightly) disagree.

Mojo folks created a new language, officially called it "superset", and trying to sell to enterprise. And it's not a superset by definition, because it can't run it's "subset" (the original Python) without CPython (which was used as libcpython under the hood, iirc). It's a travesty.
Reading is hard.

It runs and passes the full cpython testsuite, just 5x faster.

With AI it's 100x easier to maintain than by hand.

It reminds my on pperl. same approach using crane lift. Looks good

The “status” section of the project’s readme explicitly says that it is not passing the full test suite, and that the AOT compiler passes fewer tests than the JIT one.

It also explicitly says that they’re still working on building out the standard library.

I’m maybe not as pessimistic as leobuskin, but they are absolutely right that this is not the first time someone has tried to build an alternative Python implementation, and that all previous ones have failed because they weren’t able to get close enough to 100% parity to be acceptable to most users. Python is an unusually quirky language. I kind of wonder if “written in Rust” adds an extra headwind here because there’s nothing even remotely memory-safe about Python’s extension mechanism. I don’t know enough to know, but I have read about the death of a few of these projects in the past and a common theme of the post-mortem seems to be, “It went so smoothly at the start that we were caught off guard how much of a brick wall the last 5% was going to be.”

It passes only curated corpus (snippets), not the full CPython test suite. So, yes, reading is hard. Nothing against AI, btw.
Your reply would have been much better without the first line [0]

> Please don't comment on whether someone read an article. "Did you even read the article? It mentions that" can be shortened to "The article mentions that"

[0] https://news.ycombinator.com/newsguidelines.html

No, it wouldn't, because he didn't actually read the readme which clearly states that they are still working on passing the CPython test suite and that 5x performance is an aspirational goal, not something they accomplished yet.

>What is explicitly not done yet — this is the active roadmap, in order:

>CPython test suite (cpython-full): the standing grind; failures are clustered and burned down per wave.

>Stdlib build-out: _io/os, math/struct/random, collections/itertools/json, datetime, importlib parity — each lands as a native module plus a differential corpus module.

>Performance ratchets: tagged small-int flip, TLAB allocation, dict fast paths, float unboxing, call/attribute specialization, generator tiering — toward the ≥5× CPython geomean target (numerics ≥20×).

>AoT parity growth toward the full corpus, plus single-binary product polish.

>No-GIL/free-threaded runtime hardening: thread/GC/signal stress is now on the default runtime path, with remaining gaps tracked by the ratcheted suites.

Overall the substantial parts of his comment are completely wrong and the subjective parts are not much better

>With AI it's 100x easier to maintain than by hand.

This is an unsubstantiated opinion. In practice AI has a limit well below 100x.

>It reminds my on pperl. same approach using crane lift. Looks good

The only thing I can find on the internet that mentions "pperl" is this https://metacpan.org/pod/PPerl

>This program turns ordinary perl scripts into long running daemons, making subsequent executions extremely fast. It forks several processes for each script, allowing many proceses to call the script at once.

Which sounds nothing like pon, which is heavily inspired by bun. Meanwhile if it's this: https://perl.petamem.com/ which took quite a while to find, then I'm wondering why that would have precedence over bun?

Once you add the first sentence, it basically turns into a negative value comment that shouldn't have been posted.

I noticed that it wasn't the best comment, I was only concerned with the tone, and I feel like dang has enough going on that we also need to help elevate the conversation. I admit there's some delicious irony in the accuser committing the same crime, but it doesn't improve the discussion to revel in that.
> Reading is hard.

The irony…

How am I misreading this part of the readme?

> What is explicitly not done yet — this is the active roadmap, in order: > CPython test suite (cpython-full): the standing grind; failures are clustered and burned down per wave.