Remix.run Logo
nasretdinov 4 hours ago

The code needs to be not in the state of "no obvious bugs", but "obviously no bugs". Especially the programming language runtime. Otherwise there is no hope you can sustain any development whatsoever

pizlonator 4 hours ago | parent | next [-]

No language runtime is ever in a state of "obviously no bugs".

Good luck demanding that of anything of JSC's or LLVM's complexity

TomatoCo 3 hours ago | parent | next [-]

On one hand, sure, the entire point of a programming language is to make complex ideas able to be expressed in simpler abstractions. On the other hand, we can damn well try.

pizlonator 3 hours ago | parent [-]

Damn well trying to enforce an "obviously no bugs" rule in a language runtime would mean zero progress in language runtimes.

We certainly wouldn't have gotten to where we are with runtime and compiler quality and performance if we had damn well tried to enforce such a rule

nasretdinov 3 hours ago | parent [-]

IMO the very minimum requirement should be that you've demonstrated effort to reduce unnecessary complexity of the problem. Sure, some problems are complex enough that there might not exist an obvious solution, yet usually after a while once you're familiar with some topic the existing solutions do start to appear obvious. If they're not I'd argue we're doing something very very wrong

pizlonator 3 hours ago | parent [-]

Adding concurrency to JavaScript definitely falls in the "complex enough" category

So does basically any feature or optimization in a JS runtime

nasretdinov 3 hours ago | parent [-]

I think it's also worth distinguishing _problem complexity_ and _solution complexity_. The problem might be really really hard (and it very obviously is in the case of adding multi-threading to JavaScript). But it does not mean that the solution has to be hard to understand. It doesn't mean that any average PHP developer (I can say that, I started with PHP) should be able to verify the correctness of the patch, but for a person who is well familiar with the area there shouldn't exist areas they can't understand.

Look at the description of your own Fil-C: it focuses on clarity of explanation of how it works, and it actually does make sense (and, hopefully, works well enough too). Compare that with the pull request sent here. I'll wait

pizlonator 3 hours ago | parent [-]

The solution to concurrency in JS is hard to understand and I would expect even hardened JSVM folks (me included) to be super confused by it

nasretdinov 2 hours ago | parent [-]

I think you're underselling your own level of intelligence Fil. If even you would be confused by an implementation (and you're the author of the concept) what chances do you think this PR has to actually work correctly?

pizlonator an hour ago | parent [-]

Lots of tests

matsemann 24 minutes ago | parent | prev | next [-]

My Elm code base was virtually bug free. My current python code base is riddled with small bugs. Some designs makes it easy to trust your code. Some make it die by a thousand paper cuts.

Big llm rewrites I fear lead to the latter.

norir 3 hours ago | parent | prev [-]

Perhaps then it would be better to not use tools of this level of complexity.

nasretdinov 3 hours ago | parent | next [-]

I think LLVM is a perfect example of what happens when it's too complicated: it's slow, it's bug-ridden when you stray away from the beaten path (e.g. Rust hits bugs in LLVM like this one https://www.reddit.com/r/rust/comments/l4roqk/a_fix_for_the_... ), and it's really hard to use and understand.

It's obviously not useless because of that, but it's a great example of what happens when you cannot fully control the implementation complexity

spankalee 3 hours ago | parent | prev | next [-]

So don't use compilers at all?

nasretdinov 3 hours ago | parent [-]

Compilers aren't made equal either. E.g. compare Visual Studio C++.NET compiler and something like Go. And Go isn't that simple either to be fair

peesem 3 hours ago | parent | prev [-]

how would you suggest we compile literally anything?

baq 2 hours ago | parent | prev [-]

Won’t happen unless the thing is implemented in lean4.

nasretdinov 2 hours ago | parent [-]

Proving something is correct doesn't automatically make it obvious though. For it to be obvious it needs to either be intuitive or it needs to be (reasonably) simple