• r4venw@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    12
    arrow-down
    1
    ·
    12 hours ago

    While I agree with the general sentiment, scripting languages are perfectly fine to use for server software. Would you call hackernews slow? Its been running on lisp (originally Arc, now common lisp) for its entire existence. Another fun example of popular interpreter is, y’know, the JVM.

    • [object Object]@lemmy.world
      link
      fedilink
      English
      arrow-up
      6
      arrow-down
      3
      ·
      edit-2
      6 hours ago

      Common Lisp could be compiled, so not the best example.

      Lua is a way better example, since Lua scripts often finish in the time it takes Python to get going at all. And that’s with interpreted Lua, without JIT. I once straight up had to recheck if I left the dummy static output in there instead of calling my script, because the result was appearing instantly.

      There’s also Fennel, a Lisp compiled to Lua on the fly. Since Lua is so snappy, the compilation overhead is unnoticeable.

      • Rimu@piefed.social
        link
        fedilink
        English
        arrow-up
        6
        ·
        edit-2
        8 hours ago

        Performance is an attractive metric because it’s something you can put a number on. It’s measurable, so comparisons are easy.

        But there are so many other metrics that are more important.

        Still, https://leafo.net/lapis/ looks like something I’d like to try sometime. I don’t know anything about the Lua web framework ecosystem, that’s just the first search result I found. Do you have any recommendations?

        • [object Object]@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          edit-2
          6 hours ago

          I’m more familiar with Lua for desktop scripting — I’m using it whenever I can, if it’s something that’s more than like three lines in Bash and the Lua libraries aren’t too bad. I’m even using it on the phone when dragging around blocks in Automate becomes too much (its minuscule footprint comes handy there). There’s also the excellent automation app Hammerspoon for Mac, which uses Lua for its scripting.

          I’ve been vaguely looking now and then into using it for web in the manner of node.js, with asynchrony being handled on the Lua side — but was offput by the fact that many popular Luarocks libraries presumed synchronous workings, and async requires installing different libs if they even exist. Node has it better since the libs were developed to be async from the start. Iirc Luvit is what I was looking at, there are both libs and some kinda frameworks for it.

          OpenResty and frameworks for it like Lapis could be the better way to go. Nginx is pretty much mandatory anyway, and afaiu synchronous libs can be used then, leaving it to Nginx to chuck requests into multiple Lua threads. A drawback is that LuaJIT, used in Resty, still supports only Lua 5.1 features, which is pretty damn old.

          I haven’t looked into Lua for web in a few years, but since apparently nothing like Hammerspoon with its built-in http server exists for Linux, I’ll need to pick it up again, just to do some custom remote control from the phone.