Comment by chatmasta

Comment by chatmasta 14 hours ago

23 replies

JS has the fastest, most robust and widely deployed sandboxing engines (V8, followed closely by JavaScriptCore which is what Bun uses). It also has TypeScript which pairs well with agentic coding loops, and compiles to the aforementioned JavaScript which can run pretty much anywhere.

otterley 13 hours ago

Note that "sandboxing" in this case is strictly runtime sandboxing - it's basically like having a separate process per event loop (as if you ran separate Node processes). It does not sandbox the machine context in which it runs (i.e. it's not VM-level containment).

  • Brass_Hopper 13 hours ago

    When you say runtime sandboxing, are you referring to JavaScript agents? I haven't worked all that much with JavaScript execution environments outside of the browser so I'm not sure about what sandboxing mechanics are available.

    • otterley 13 hours ago

      https://nodejs.org/api/vm.html

      Bun claims this feature is for running untrusted code (https://bun.com/reference/node/vm), while Node says "The node:vm module is not a security mechanism. Do not use it to run untrusted code." I'm not sure whom to believe.

      • Brass_Hopper 12 hours ago

        It's interesting to see the difference in how both treat the module. It feels similar to a realm which makes me lean by default to not trusting it for untrusted code execution.

        It looks like Bun also supports Shadow Realms which from my understanding was more intended for sandboxing (although I have no idea how resources are shared between a host environment and Shadow Realms, and how that might potentially differ from the node VM module).

      • Jarred 12 hours ago

        The reference docs are auto generated from node’s TypeScript types. node:vm is better than using the same global object to run untrusted code, but it’s not really a sandbox

      • sheepscreek 12 hours ago

        Doesn’t Bun use JavaScriptCore though? Perhaps their emulation, rather implementation, leans more towards security.

  • Muromec 13 hours ago

    Running it in a chroot or a scoped down namespace is all your need most of the time anyways.

locknitpicker 10 hours ago

> It also has TypeScript which pairs well with agentic coding loops, (...)

I've heard that TypeScript is pretty rough on agentic coding loops because the idiomatic static type assertion code ends up requiring huge amounts of context to handle in a meaningful way. Is there any truth to it?

  • miguelspizza 8 hours ago

    Not sure where you heard this but general sentiment is the opposite.

    There was recently a conference which was themed around the idea that typescript monorepos are the best way to build with AI

    • locknitpicker 4 hours ago

      > Not sure where you heard this but general sentiment is the opposite.

      My personal experience and anecdotal evidence is in line with this hypothesis. Using the likes of Microsoft's own Copilot with small simple greenfield TypeScript 5 projects results in surprisingly poor results the minute you start leaning heavily on type safety and idiomatic techniques such as branded types.

      > There was recently a conference which was themed around the idea that typescript monorepos are the best way to build with AI

      There are also flat earth conferences.

      • conartist6 3 hours ago

        It's especially tricky since monorepos are an obvious antipattern to begin with. They're a de-separation of concerns: an encouragement to blur the unit boundaries, not write docs, create unstable APIs (updating all usages at once when they change), and generally to let complexity spread unchecked.

  • aizk 5 hours ago

    I think this is contingent on the skill of the human reviewing the AI's code.

  • [removed] 9 hours ago
    [deleted]
mrcsharp 13 hours ago

> It also has TypeScript which pairs well with agentic coding loops

The language syntax has nothing to do with it pairing well with agentic coding loops.

Considering how close Typescript and C# are syntactically, and C#'s speed advantage over JS among many other things would make C# the main language for building Agents. It is not and that's because the early SDKs were JS and Python.

  • chamomeal 13 hours ago

    Typescript is probably generally a good LLM language because - static types - tons and tons of training data

    Kind of tangent but I used to think static types were a must-have for LLM generated code. But the most magical and impressively awesome thing I’ve seen for LLM code generation is “calva backseat driver”, a vscode extension that lets copilot evaluate clojure expressions and generally do REPL stuff.

    It can write MUCH cleaner and more capable code, using all sorts of libraries that it’s unfamiliar with, because it can mess around and try stuff just like a human would. It’s mind blowingly cool!!

    • miguelspizza 8 hours ago

      Clojure is such an underrated language for vibe coding for this very reason.

      Makes me wonder what a theoretical “best possible language for vibe coding” would look like

  • wiseowise 13 hours ago

    > C#'s speed advantage over JS among many other things would make C# the main language

    Nobody cares about this, JS is plenty fast for LLM needs. If maximum performance was necessary, you're better off using Go because of fast compiler and better performance.

    • mrcsharp 12 hours ago

      > Nobody cares about this

      And that was my point. The choice of using JS/TS for LLM stuff was made for us based on initial wave of SDK availabilities. Nothing to do with language merits.

      • wrathofmonads 23 minutes ago

        This has always been the case. The Java and C# ecosystems prioritise stability and scale. They wait for ideas to prove themselves in other languages like Erlang, Python, Go, Scala, and so on, and then adopt the successful ones. Last-mover advantage. That said, there are some caveats. Java is still missing value types, while C# has moved quickly with async/await rather than adopting models like goroutines or virtual threads, which can sometimes limit concurrency ergonomics for the developer.

      • [removed] 8 hours ago
        [deleted]