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:
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).