github abs-lang/abs 2.7.0
v2.7.0

latest releases: 2.7.2, 2.7.1
4 months ago

A fresh new minor release of ABS: always be shipping! 🚢

It's been quite a while, and we couldn't take us being called abandonware (obviously, no hard feelings!). This release is mainly focused on a fresh new CLI, and a bunch of bugfixes.

New CLI

A GIF is worth a a thousand words:

suggestions

The new CLI is based on bubbletea, and adds several improvements over the previous iteration:

  • suggestions aren't based on identifiers anymore eg. the CLI can suggest functions, methods etc
  • when suggesting an identifier or property, abs also includes its value so you can get a sneak peak before applying it
  • suggestions are contextual eg. the cli won't suggest an array function if you're pressing tab on a string
  • suggestions also include comments / doc
  • a fully functional reverse-search: press ctrl+r, type your query and search through your history
  • colored output to simplify digesting whatever abs sends back to you

while stack overflow

while loops were previously implemented via recursion, which, well, could lead to a stack overflow.

Inconsistencies in for / while loops

More generally, while and for loops have been unified -- for loops did not suffer from overflows, but because while loops had their own implementation, there were bugs and inconsistencies. The implementation has been unified, considering for is a superset of while.

With this, we also fixed a bug where continue was not working in while loops.

for compound assignments

Earlier on, for loops did not support compound assignments:

for x = 0; x+1; x += 1 {
  ...
}

This has been fixed.

stdin scanning error

Previously, 2 iterations of stdin counted as the same loop, meaning keys wouldn't be reset, due to our usage of a global scanner. This has been fixed.

Cleanups and Go 1.24

This version of ABS is built with the latest version of Go, 1.24, and drops CGO. We've also removed a bunch of deprecated calls (eg. ioutil).

Don't miss a new abs release

NewReleases is sending notifications on new releases.