← Back to context

Comment by pizlonator

16 hours ago

That explains why:

- the architecture is idiotic.

- they have zero credible perf numbers.

I plan to benchmark it using generally accepted methods.

Porffor makes careful trade offs that make sense and is benchmarked in a way that I can believe.

(Source: I make dynamic languages fast for a living)

Putting aside the whole “team of professionals putting out a product vs solo dev fine tuning their opus” of it all:

Can you clarify what about the architecture is ‘idiotic’? Not trying to catch you or demand a defense, just looking for a vague description. I don’t even know how to start examining the architecture of something like this.

  • Yeah

    - using quickjs at all in a thing that needs perf. Quickjs is hilariously slow. Midwits use it because it has “quick” in the name.

    - using floats for numbers and deferring int optimizations for later. Inferring ints is like half the problem of fast JS.

    - rejecting inadequately annotated or too dynamic code without a whole heck of a lot of self-reflection about how unlikely that is to work out.

    The observation that languages that are even slightly dynamic need dynamic JIT opts is very old; folks figured that out in the 80s.

    This project reeks of weapons grade AI psychosis

    • As far as I can tell they pull in QuickJS (actually quickjs-ng) only in the case where the program has untyped dependencies that still need to be run by an interpreter - and they chose that library because it's pretty small (620KB). Did I miss something, are they using it outside of that purpose?

      13 replies →

    • > using floats for numbers and deferring int optimizations for later. Inferring ints is like half the problem of fast JS.

      For a project like this, isn't it worth introducing a TS type for Ints? Since they are trying to leverage TypeScript anyway...

    • "This project reeks of weapons grade AI psychosis" - fantastic quote: I will shamelessly steal & use. Apologies to pizlonator

  • Just randomly:

    1. TS only has a "number" type. But what type of number is it? This is doable safely via keywords (or known markers), or sometimes via analysis, but I couldn't find it in the README.

    2. A compiler that works only on macOS?