The Abs Programming Language
Posted3 months agoActive3 months ago
abs-lang.orgTechstory
calmmixed
Debate
60/100
Programming LanguagesShell ScriptingAbs Language
Key topics
Programming Languages
Shell Scripting
Abs Language
The ABS programming language is introduced, aiming to 'bring back the joy of shell scripting', sparking a discussion on its merits and comparisons to existing scripting languages.
Snapshot generated from the HN discussion
Discussion Activity
Moderate engagementFirst comment
46m
Peak period
10
8-10h
Avg / period
4.2
Comment distribution38 data points
Loading chart...
Based on 38 loaded comments
Key moments
- 01Story posted
Sep 30, 2025 at 1:53 AM EDT
3 months ago
Step 01 - 02First comment
Sep 30, 2025 at 2:39 AM EDT
46m after posting
Step 02 - 03Peak activity
10 comments in 8-10h
Hottest window of the conversation
Step 03 - 04Latest activity
Oct 1, 2025 at 6:44 AM EDT
3 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45422353Type: storyLast synced: 11/20/2025, 6:39:46 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
ABS brakes ABS plastic ABS function ABS muscles ABS programming language etc.
At places it looks like plain old PHP without the need for <?, in other I can see some goodies from JS with a bit of Python sprinkled as well.
It really looks like the author gave it a proper thought! Good job!
There was joy?
Seriously though, this actually doesn't look half bad. The problem is you can easily achieve the same thing in basically any standard scripting language (Typescript, Python, etc.) just by replacing backticks with a function call.
Actually in Typescript you can use tagged string so it could just be one extra character if you want:
Is saving that one character worth using a niche language?If the developers of ABS are reading this, it would be great some examples of that kind of thing to the homepage. Like, how would you do `curl <url> | grep something | sort | uniq | tee output.txt`? What about process substitution? What about redirecting stderr to stdout? And, the biggest problem with shell scripting is escaping problems, how does ABS handle that? Can you run a command with an array of strings as argument instead of having the shell split on (unescaped and unquoted) spaces?
Then again nothing stops a general-purpose language from providing a built-in syntax & data type for paths, see e.g. Nix.
I'm not really talking about making something longer just to be more clear either. I just meant all the nice libraries and Python data structures seem to allow me to do complex things in a short amount of code. Bash and Awk and all the Linux commands are great for simple things, but I haven't figured out how to handle more complex data outputs.
Imho traditional shells are actually pretty limited in this regard; you generally can only compose programs in simple linear pipelines with one input one output. Technically bash does allow doing some stuff with additional fds, but it is not very convenient nor flexible in that regard. There have been some attempts to make more flexible shells, like for example dgsh: https://www2.dmst.aueb.gr/dds/sw/dgsh/
Which is the common case, for which it does a reasonable job. I think if I was looking at most of the directed graph examples, I'd look to another tool than a shell to orchestrate that, rather than say "you know what my shell lacks? More special case syntax.".
This is the shell scripting super-power, all this stuff is just trivial.
As opposed to "exterior" piping to executables like grep and xargs, which may be written in any language
I believe the comment you're replying to is saying that's a design MISTAKE
And I agree -- in trying to make shell more consistent, you've actually REDUCED its power
I wrote a blog post about this issue:
Oils Is Exterior-First (Code, Text, and Structured Data) - https://www.oilshell.org/blog/2023/06/ysh-design.html
(which was aimed at people working on Oils, not general users. Hopefully a more concise/illustrative post will appear, though I also welcome anyone else like the OP who wants to argue this ! )
In YSH, you can do everything that bash does with processes, because OSH is the most bash-compatible shell in the world: https://pages.oils.pub/spec-compat/2025-09-14/renamed-tmp/sp...
For example, I think many of the newer shells don't implement process subs, a ksh/bash thing:
YSH also improves on bash by checking the error code from process subs, which bash simply ignores: BUT you can also do Python like stuff, pretty much exactly like ABS's example on the home page (hm I wonder if str(n) should be relaxed ...)ABS is listed on this wiki page, along with many Python- and JavaScript- influenced shells:
https://github.com/oils-for-unix/oils/wiki/Alternative-Shell...
https://koi-lang.dev/
https://github.com/alexst07/shell-plus-plus
https://hush-shell.github.io/
But YSH is the only one that has a process runtime that's a SUPERSET of bash
---
I also want to add to add xargs-like functionality to the runtime. I mentioned in the latest release that bash/xargs actually has a problem with waiting for processes in parallel, while ALSO checking for errors:
Eight Releases of Oils in 6 Months: https://oils.pub/blog/2025/09/releases.html
Python and a few others such as LISP, smalltalk, etc., have some affordances made for a developer at the keyboard. Oddly, most of them are not taught to developers, it seems. The number of people I have worked with that didn't know of python's `help` is stark.
I'm much more receptive to projects telling me how they're good, rather than how the competitor is bad.
I can definitely understand both points of view but my pov is that we shouldn't avoid projects solely because of these and that there are greater merits to choose from. We are more similar than different :) in foss community I suppose
Another thing is that sometimes, people don't like taglines telling how good the project is, like I searched fish and I love fish but fish is a smart and user-friendly command line shell for Linux, macOS, and the rest of the family.
Maybe its me as I could only vouch for the user friendly part of fish from my small time using it (and the time I mimicked every aspect of fish for my zsh config file). I truly loved fish but I might not be sure about its smartness and what it means by that and that might be a nitpick but I still love fish and would recommend it to some people
Maybe I can be wrong, I usually am and someone please feel free to correct me to make me understand what they mean by smart, I know that somethings scripting in fish can be more pleasant than bash and it has some nice features but just smart is really vague, I hope everybody gets it :)
But the point is, I actually enjoy scripting in bash. Half the time people rant about it, there's something wrong in the argument. Not always of course, different tools for different people and all that. But having someone's primary marketing argument be a strong implication that "finally you can get rid of shitty bash and bring the joy back" rubs me the wrong way because for me it's not shitty and I'm already experiencing joy. So what I'm getting from the tagline is that it's condescending, uninformative, and the vibe I'm getting is that it's going to mess with what already works by suggesting oversimplified workarounds, which fail when you actually need that desired complexity. So this is already negatively predisposing me when it could have been avoided.
Fish is similar, if you go to the webpage (https://fishshell.com/), the primary tagline isn't the one you mentioned (which I would have been very happy with), it's "Finally, a command line shell for the 90s". To me that's just petty, and this is despite the fact that I have tried fish before and liked it. Ironically, I then moved back to bash because in the end I decided it was still better.
This isn't Coke vs Pepsi ads. I'm sure a project serving as an alternative for another popular project can promote itself without such pettiness right as the first sentence in the website. "Discover the joy of shell scripting" would have been great; but "Bring back" is petty.