In short, Amber is a programming language with Rust like syntax that compiles down to bash. More details here: https://amber-lang.com/

On the surface, it seems nice. Cleaner syntax, types, compile-time safety checks, etc. So you get to write in something nicer than bash but get the portability of bash.

My wonder is if there are pitfalls that make it worse than instead writing it in something like Python or even bash itself. I’d guess the generated bash code probably isn’t the prettiest to look at or debug.

  • balsoft@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    10 minutes ago

    At the risk of stating the obvious, I would like everyone to know that https://www.shellcheck.net/ exists. Unless you are a bash wizard: if your bash script doesn’t pass shellcheck, it is very likely to have bugs.

  • IanTwenty@piefed.social
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 hour ago

    I like the idea as BASH is available everywhere but has terrible gotchas in its syntax plus at times is unreadable.

    When I did some moderately complicated amber scripts I hit bugs. Also still some important features are missing.

    So I’m keeping an eye on it but it’s definately not ready for anything serious yet.

    I am also watching https://oils.pub/ and hoping one or both of these projects succeed.

  • False@lemmy.world
    link
    fedilink
    arrow-up
    9
    ·
    5 hours ago

    I think you may as well write your script in rust, if that’s what you want to do, and just have it call shell commands then parse the output in rust.

    I’ve done this in Python before, works fine.

  • jokro@feddit.org
    link
    fedilink
    arrow-up
    1
    ·
    3 hours ago

    This is nice. Writing safe bash scripts includes avoiding implicit pitfalls. If the tool actively stops you from that it’s great. I wished this would have existed some years back.

  • mmmm@sopuli.xyz
    link
    fedilink
    arrow-up
    10
    ·
    edit-2
    6 hours ago

    I wonder why they decided to make it transpile to bash instead of posix sh.

  • IrritableOcelot@beehaw.org
    link
    fedilink
    arrow-up
    2
    ·
    4 hours ago

    If you just want portability, then this could be useful. However, in my opinion a large part of why I use a shell script is to avoid compilation and just hack something together. If your goal is shell scripts that are easier to write you could also check out other shells:

    • fish is the easiest to use in my opinion, but is not POSIX compliant so you do have to learn the syntax.
    • zsh is a nice quality-of-life upgrade over BASH, tweaking the little things
    • There are also things like xonsh which use Python syntax for shell scripting, but I dont have personal experience with them.
  • CameronDev@programming.dev
    link
    fedilink
    arrow-up
    18
    ·
    8 hours ago

    If your comfortable writing rust, why not just use rust and compile to rust binaries? Rust has toolchains for realistically everything…

    • Quibblekrust@thelemmy.club
      link
      fedilink
      English
      arrow-up
      10
      ·
      7 hours ago

      It’s not Rust, OP was mistaken. It’s ECMA-Script-like with Rust-like features and also Python-like features.

      I think the idea is, you can develop Amber scripts “at home” then deploy them on any machine that has Bash without needing to install anything. This benefits system admins.

      Amber compiles directly to shell code, so you can:

      • Leverage existing shell tooling and pipelines.
      • Deploy a single script without installing a language interpreter.
      • Benefit from shell‑native features (process substitution, job control) while enjoying high‑level syntax and safety.

      Is Amber production‑ready?

      In the the project it is production ready because it is already used in this context because the shell code generated is tested and confirmed that works, the language is evolving with the tooling set.

      Well, their FAQ isn’t exactly production ready.

      • False@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        5 hours ago

        Eh, go is really good for this kind of stuff. It compiles to a single binary you can just execute from shell

  • ZWQbpkzl [none/use name]@hexbear.net
    link
    fedilink
    English
    arrow-up
    7
    ·
    7 hours ago

    Compile-to-Bash is a dead-end goal IMO. Just write it in Python or Rust and it’ll be even more portable.

    ECMA Script-like syntax.

    That’s supposed to be an improvement?

    • novafunc@discuss.tchncs.deOP
      link
      fedilink
      arrow-up
      3
      ·
      5 hours ago

      One annoyance about Python is that I also have a Mac. By default, it comes with no Python. If you install XCode, you get Python 3.9. And of course you can get the latest version from Homebrew.

      Granted, I don’t think Amber would help much in this situation either. macOS comes with bash 3.2 and Amber probably targets a newer version that that. So either way I would need to homebrew install newer versions.

  • jtrek@startrek.website
    link
    fedilink
    arrow-up
    3
    ·
    7 hours ago

    Interesting. I dislike writing bash scripts so this might appeal to me, but probably not before a stable 1.x release.