cross-posted from: https://programming.dev/post/23822190

I added this language to my watch list some time ago and forgot about it, until I got a notification about a new release (0.15) yesterday.

I’m someone who is familiar with system languages (C, Rust) and shell languages (Bash, Zsh, …). But don’t have much experience, at a proficient level, with any languages setting in between.

So I gave Koto’s language guide a read, and found it to be very well-written, and the premise of the language in general to be interesting. I only got annoyed near the end when I got to @base, because I’m an anti-OOP diehard 😉

I hope this one well start to enjoy some adoption.

  • asudox@discuss.tchncs.de
    link
    fedilink
    arrow-up
    2
    ·
    6 hours ago

    Oh, very nice. I was searching for an easy to use scripting language for a project I am making. Is it easy for beginners? I am currently using mlua, but it is a bit hacky. I liked Rhai, but it had no real LSP and no asynchronous code support. And also, does it have sandboxing?

    • fxomt@lemm.ee
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      6 hours ago

      For embedded languages, you won’t find many features for them at all. There’s Mun, which seems to be what you want. (It’s more meant to be used standalone, but i think it’s embeddable)

      You should also check out Rune, which doesn’t have an LSP, but it’s embeddable, and has async support.

      PS: I don’t think koto has asynchronous support yet. But it seems sandboxed, yes. Can’t execute unsafe code, and doesn’t have unsafe libraries.

    • BB_COP
      link
      fedilink
      arrow-up
      1
      ·
      7 hours ago

      they don’t have C API bridge yet.

      WDYM

      cargo add libc
      

      Done 😎

      There is an example in the repository showcasing interop with Rust. But I didn’t find it compelling enough for people to like. It felt a bit too complex. But maybe the complexity is inherent. I don’t know.

  • beleza pura@lemmy.eco.br
    link
    fedilink
    arrow-up
    5
    ·
    15 hours ago
    print 'Hello, World!'
    # -> Hello, World!
    
    square = |n| n * n
    '8 squared is {square 8}'
    # -> 8 squared is 64
    
    (2, 4, 6, 8)
      .each square
      .to_list()
    # -> [4, 16, 36, 64]
    

    it might be just me, but, from the code snippet, it feels a lot like ruby

    • BB_COP
      link
      fedilink
      arrow-up
      2
      ·
      13 hours ago

      As someone who doesn’t know scripting languages well, what does make the snippet you posted particularly Ruby-ish?

      Reading the guide, it felt like a relatively small consistent scripting language, with some Rustic touches. But I probably missed the touches from other languages I don’t know.

      But then, Rust itself took inspiration from many other languages, including Ruby itself. So, maybe everyone is taking from (or mimicking if you will) everyone.

      BTW, that last part can be written as*:

      # from iterator import each, to_list
      » square -> each (2,4,6,8) -> to_list
      ➝ [4, 16, 36, 64]
      

      which maybe mimics some other functional or functional-influenced language(s).


      * may require 0.15.1