This looks cool, but why would I want to learn this language over Python, or a more mature alternative shell like Oilshell?
Good question - abs is a research vehicle for exploring the semantics of actor-based programming languages. As such, the syntax is somewhat restricted in some areas (to make static analysis easier), and the standard library is small. You’ll notice quickly that there are no file operations.
The closest recent analogue to abs semantics is the new actor-based concurrency model of Swift. The similarity extends to the problems with mutual deadlock and state mutation during process suspension - I’m really curious about the patterns and tools the larger community there will come up with to cope with these problems!
One (I believe) unique feature of abs is await-ing on member variables: multiple processes can, for example, cooperate on a list of work items stored in their actor, without the list growing unbounded. (Each consumer does await length(items) > 0, each producer does await length(items) < upper_bound, and cooperative scheduling guarantees that the field items always has between 0 and upper_bound items.)
await length(items) > 0
await length(items) < upper_bound
For me, the nicest thing about abs is modeling systems that are timed – multiple actors, each with their own timed behavior, can run in parallel and the behavior of the whole system just composes naturally. There’s a small example here: https://abs-models.org/documentation/examples/single-watertank/ – the two actors in that example happen to wake up at the same time points, but that’s not necessary.
TL;DR: you shouldn’t learn abs if you need a mature implementation language, and this is what happens if you ask an academic why their thing is interesting. ;)
Are you sure you’re talking about the same thing? The linked language seems to be a user-friendly shell scripting replacement.
Oh wow, you’re right! I only saw “Abs language” and didn’t even click the link, how embarrassing. (The one I was talking about is at https://abs-models.org.) Terribly sorry for hijacking the discussion.
Thanks for the great explanation!