Back to News
Advertisement
Advertisement

⚡ Community Insights

Discussion Sentiment

48% Positive

Analyzed from 1547 words in the discussion.

Trending Topics

#python#project#cpython#subset#doesn#code#same#still#hard#fable

Discussion (87 Comments)Read Original on HackerNews

leobuskinabout 4 hours 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).

subarcticabout 4 hours ago
"Without ai assistance" - ok, but what about with ai assistance?
zahlmanabout 4 hours ago
For a project like this, relying on AI assistance also makes it effectively dead in the water.
frollogaston44 minutes ago
Not convinced. I was looking for an answer like "it doesn't actually have parity with CPython." Does it?
minimaxirabout 4 hours ago
Why?
simonwabout 1 hour ago
Good luck implementing and then maintaining a project of this size and complexity at ~100 lines of verified code per human developer per day.
leobuskinabout 4 hours ago
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?
coldteaabout 3 hours ago
>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.

bt1aabout 3 hours ago
it will be impossible to maintain parity with wetware
up2isomorphismabout 3 hours ago
Then the question is why? Because that is an another way of saying donating tokens.
TZubiriabout 2 hours ago
>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.

geraneumabout 2 hours ago
> 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.

skeledrewabout 2 hours ago
> 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.

cwillu26 minutes ago
Most subsets of a physical calculator are properly called “a broken calculator”.
Archit3chabout 1 hour ago
> A subset of python is python.

Mojo folks (rightly) disagree.

rurbanabout 3 hours ago
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

bunderbunderabout 2 hours ago
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.”

leobuskinabout 3 hours ago
It passes only curated corpus (snippets), not the full CPython test suite. So, yes, reading is hard. Nothing against AI, btw.
anitil33 minutes ago
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

cwillu25 minutes ago
> Reading is hard.

The irony…

ubercoreabout 3 hours ago
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.

bbminnerabout 1 hour ago
If AI can find new proofs for well posed math problems, i see no reason why it shouldn't be able to implement a more performant fully featured version of an existing interpreter (eg with JIT and AOT) that emulates python api well and passes all python tests and tests of other projects. It is true that a lot of human effort and thought has been put into squeezing performance out of the existing implementation. It is true that many people have found that getting that last 1% of python test suite to pass turned out to be insurmountably hard. Same is true for math, and yet AI sometimes finds simple solutions that we somehow missed. Maybe there's a simple optimization that was used in an obscure interpreter of a domain specific language that we never heard of. Worth a shot in my mind. If that turns out to be successful, we should ideally find the code that served "as an inspiration" if any.

It might make more practical sense to start from CPython and try to optimize that further though. It even has a "not fully fleshed out" JIT already.

getpokedagainabout 3 hours ago
>> The project is under heavy active development

Is a pretty oof sentence for a project with one contributor and no users. Just reeks of llm barf with no oversight.

tclancyabout 3 hours ago
I am a fan of AI assistance, but “ratchet” is pretty much a Claude giveaway. The kids, now in their twenties because the reference is dated, might make a joke here.
frollogastonabout 1 hour ago
It says ratchet so much. Yeah that's pretty ratchet.
getpokedagain7 minutes ago
Oh what the fuck I can t unsee
frollogaston36 minutes ago
Dynamic typing means you don't know the sizes/offsets of things beforehand. The "compiled to metal" thing still resembles a runtime more than your typical compiled code. Like naively, Object would be a struct with a hashmap of property names->values since technically you can alter the keys at runtime, and many values will be pointers to other objects. Idiomatic C or Rust code will have flatter structs.

Is it faster than the original interpreter? Maybe if you optimize out the primitives and certain well-known object types, unless you do some really complicated static analysis.

thx6737 minutes ago
A couple of other interesting Python compiler projects recently..

https://github.com/Nonannet/copapy uses copy and patch, discussed here https://news.ycombinator.com/item?id=46972392

Single-pass SSA bytecode compiler and threaded-code stack VM for a sandboxed Python subset https://github.com/dylan-sutton-chavez/edge-python

dr_kretynabout 2 hours ago
Awesome. Not for this repo specifically; more about the trend. More people are realizing that we have such powerful tools at our disposal and will want to do something awesome, worth while with them. Of course, many will fall off after a week, then more after a month, but some will survive. Knowledge will be spread and some will be winners through adoption. Grit can lead to knowledge, and can lead to awesome stuff.
zoom662811 minutes ago
Mojo not good enough?
ubercoreabout 4 hours ago
I hate to be that guy, but... one week old project, clear signs of vibing. I will be shocked if the remaining work listed (cpython test suite) proceeds in any reasonable timeline.

This is a pretty hard problem to just solve in a week.

EDIT: and man, these kind of comments LLM created comments are really starting to grind my gears as my job slowly turns into reviewing LLM PRs:

> Known gaps at the language level are burned down through the ratcheted floors above — the committed floor files, not this README, are the authoritative compatibility baseline.

himata4113about 4 hours ago
This is written by fable with the guidance of a very experienced, highly skilled person. See their previous work.
Dilettante_about 4 hours ago
"Very experienced" might mean different things to you. The oldest repo on their GH is from 2017. As for highly skilled: Could you point closer to which parts of their portfolio we are supposed to be awestruck by?
throwaway27448about 4 hours ago
Experience doesn't change the fundamental problem. I don't see this project going anywhere for general use beyond their needs.
roger_about 3 hours ago
This guy is behind the awesome Oh My Pi agent, so I’d give him a chance.
thx67about 1 hour ago
These tics are fairly easy to remove via hooks and prompts, but once the codebase is infected, it is 10x as much work to get the agents to stop.
baqabout 4 hours ago
of course it is vibed.

it doesn't matter as long as it works.

ActionHankabout 4 hours ago
That's the neat part, when it's vibed it works, until it doesn't and then it's really hard to make it work again.
coldteaabout 3 hours ago
>when it's vibed it works, until it doesn't and then it's really hard to make it work again

Is it?

People have solved AI bugs with AI. If some vibe project eventually hits some bug and stops working, what exactly stops using AI to fix it? Is the idea that bugs will go beyond the limits of AI capability?

If you meant to say that when an AI vibe coded project beyond some complexity it's difficult for a human coder to manually go through all the code they didn't write, understand it, and find the issue, sure.

getpokedagain10 minutes ago
Something working is pointless if there are no users and no need is being addressed.
nozzlegearabout 2 hours ago
> it doesn't matter as long as it works.

I think the clankers would call this a "load bearing statement".

kameit00about 4 hours ago
In 12 months… vibe code mess. Or discontinued. Or both.
ttulabout 2 hours ago
How much time have you spent with Fable? We're in new territory here. It does not create messes.
mcphageabout 4 hours ago
Given the stdlib modules listed as "explicitly not done yet", I'm going to say: it doesn't yet, in any meaningful sense. The question then becomes: how confident do we feel that it will work in the near future?
ubercoreabout 4 hours ago
I was trying to say "not confident at all" but hedged a bit too much.

I see this as a case of the "quick to get to a POC that falls apart after sustained development for the same reasons it didn't work pre-Fable" problem.

cuzezzzbbfofaiabout 4 hours ago
Can it run Numpy and Torch?
smithzaabout 4 hours ago
pickle files are usually the limiter here. I would be surprised if it can handle pickle files since it relies so much on runtime LUTs of the objects and arbitrary object definitions. This usually doesn't work in other use cases such as swig or cython either IIRC.
cdavidabout 3 hours ago
For NumPy/Pytorch, the C API is much bigger issue than pickle. I have not looked at the architecture of this, but given it uses its own IR + replaces ref counting w/ a GC, I am assuming it does not have C API compatibility.
RantyDaveabout 3 hours ago
Don't we have Nuitka for this?
LtWorfabout 3 hours ago
It's not the same, that one works.
TZubiriabout 2 hours ago
that compiles to C presumably, not to machine code
drivebyhootingabout 3 hours ago
Looks like it still uses python object model. You need auto unboxing for good performance.
Advertisement
echoangleabout 4 hours ago
What happens if you call exec/eval? Are they just not available?
skeledrewabout 2 hours ago
Also getattr/setattr, the magic methods, etc. I imagine this dead on arrival.
smithzaabout 4 hours ago
this as well as pickle files will likely be unavailable
leobuskinabout 3 hours ago
It uses JIT
westurnerabout 4 hours ago
How does performance compare to RustPython compiled in a similar way?
xiaodaiabout 1 hour ago
it's been tried 10 million times. so yeah
Archit3chabout 1 hour ago
Surely this will succeed where $4B Modular failed!
elzbardicoabout 2 hours ago
Seems to be slow as molasses compared to cpython.
iLoveOncallabout 4 hours ago
Can those AI slop projects have a reserved tag on HackerNews? So many in the past few weeks I wouldn't have clicked and wasted my time on if I knew it was just some vibe-coded garbage.
andy99about 4 hours ago
I see the same thing, and believe that ironically AI is going to bring about the return of good search engines as we’re currently drowning in slop and need a real way to filter it.
ranger_dangerabout 1 hour ago
How would a search engine filter that out?