Hacker News new | ask | show | jobs
by satvikpendem 492 days ago
So the build happens implicitly via the runtimes, then.
1 comments

Bun handling the TSX at runtime is just its capabilities as an interpeter. Else we'd be saying all interpreted languages have a build step
Bun does not handle TSX at the runtime level because Bun uses JavaScriptCore as its runtime and JavaScriptCore does not support TS(X).

Bun transpiles all typescript code before executing it in the JavaScriptCore runtime. That's an implicit on-startup build step.

Browsers cannot parse jsx/tsx natively. Deno is transforming the code you write before it is executed in the browser. That transformation is typically referred to as a build step.
I'm well aware that browsers don't run TS. But in this instance we are talking about the server side runtime.

Building is creating the runnable artefact, but in the context of the server this artefact is already runnable, so I'd just call that "interpreting" the program

> But in this instance we are talking about the server side runtime.

Not at all. We are talking about SSR, and the need for a build step (on the backend). That should be pretty obvious considering the explicit mentions of running the code in the browser, jsx, ts, etc. (Not to mention the backend runtime cannot run typescript/jsx without build either)

> Building is creating the runnable artefact

That's not all that 'building' is...

> but in the context of the server this artefact is already runnable

No it's not. The JIT/interpreter within Deno cannot run this code without doing a build first. This is made very obvious and explicit in the Deno docs.

https://docs.deno.com/runtime/fundamentals/typescript/

> With its built-in TypeScript compiler, Deno will compile your TypeScript code to JavaScript with no extra config needed.

The code is not runnable on the frontend. It needs to be transformed/built before that can happen.

Saying this doesn't have a build step is like saying a python script that compiles and runs a C program from source has no build step.

Yes, I'm aware the code doesn't run natively on the frontend. But we aren't talking about that.
That's exactly what everyone in this comment chain is talking about (even though you just updated your previous comment to make it sound different).
my apologies for using controversial wording. I'd love to confirm that we still must have some sort of transpilation / transformation because no Web Browser can consume JSX code directly (after all, JSX is just syntactic sugar, not a base language).

What I meant by "no build" is "no bundling". I elaborated more in this wiki: https://github.com/fullsoak/fullsoak/wiki/Concepts-&-Example...

Thank you for your help above in making things clearer <3

I would probably replace a lot of this language with something along the lines of "powered by Deno, enabling simplified, all-in-one tooling." You don't want it to look like you're taking credit for the features that Deno is responsible for. Would also help me understand what your project offers vs what Deno offers.

Hope that helps!

that's a nice perspective :) I totally had no intention for 'taking credits' as I assumed it's a 'given' that we run TS directly with Deno, Bun, or Node.js with the experimental flag.

I'll take this to my desk & update the wordings towards your suggestions above - thank you!

JIT?