ABS 1.0.0: here we go!

Eventually, the time has come: ABS 1.0.0 is finally out!

This wraps up weeks of work since I started the project a little over a month ago, and gives you a fairly stable release with all of the “must” features I originally wanted to introduce in the language.

About this release

There are 5 major talking point in this release (which I will go through in the next paragraphs), but I want to start by saying that ABS is now leaving the preview-x versioning scheme and committing to semantic versioning.

I originally didn’t want to start by using semantic versioning as I thought 0.1.0 and similar would spook users and contributors away, and opted to use the preview-x naming scheme to indicate that we’re on our way towards a stable release, with a few interediate previews to give users a taste of ABS as we implement it.

Anyhow, we’re now switching to x.y.z and will keep using semantic versioning in order to offer a strong backwards-compatibility promise. Sticking to a major release means you’re going to be able to apply minor / patch upgrades without even thinking about it.

So…enough with the chatter, let’s have a look at what’s in ABS 1.0.0!

New features

We have now added a new operator, in, for membership testing (#128): 1 in [1,2,3] will return a boolean (true in this case).

Note that you can combine in with whatever other types / operator, for example:

1
2
3
echo("type a number")
n = stdin().number()
return n in 1..10 # true if the user types a number between 1 and 10

In addition to the in operator, the other new feature introduced in this version is else if (#27): it might seem very trivial, but up until now you could only use if...else blocks.

Now you’re going to be able to use if...else if...else like in any other programming language:

1
2
3
4
5
6
7
if x {
    return x
} else if y {
    return y
} else {
    return z
}

Bug fixes

Two nasty issues were solved within this version:

1
2
3
4
5
6
7
[1,2,3].join("\n")
1
2
3
[1,2,3].join('\n')
1\n2\n3

Deprecations

Thanks to…

A big thank you to Rick who managed to implement #130 which was pending for quite some time.

Without his help, it would have taken a while longer to get 1.0.0 out of the way :)

What’s next?

Ready to increase your productivity with a shell script that looks modern and simple? Then:

1
bash <(curl https://www.abs-lang.org/installer.sh)

…and start scripting like it’s 2019!

Bonus point: what’s next for ABS?

We’re now going to focus working on 2 releases:

Adios!


In the mood for some more reading?

...or check the archives.