@odino odino released this Jan 22, 2019 · 3 commits to master since this release

Assets 12

Loads of changes over the past 2/3 weeks so we decided to release an additional version before 1.0!
Note that we have dropped the netbsd and freebsd builds for now, but are happy to re-instate them if requested to do so.

New features

  • the biggest news is that now ABS returns debug information when errors happen, helping you locate a line that
    caused an error (#121). Many thanks to @ntwrick for his amazing work!
⧐  [1, 2, 3].not_found()
ERROR: ARRAY does not have method 'not_found()'
	[1:10]	[1, 2, 3].not_found()
  • you can now access CLI flags (eg. abs script.abs --foo=bar) with flag("foo") (#79)
  • both single and double quotes are now supported in strings (#110)
  • ABS will output its version when called with abs --version (#97)
  • added the "string".is_number() function (#103)


  • shell commands wouldn't receive the stdin from the abs process (#113)
  • fixed a bug in for ... in loops that wouln't allow to iterate more than once on an array (#112)

@odino odino released this Dec 29, 2018 · 31 commits to master since this release

Assets 18

Loads of interesting fixes made it to this release, with the addition of a few features as well.

Backwards-incompatible changes

Array destructuring has now abandoned the JS form ([x, y] = [1, 2]) and follows a leaner syntax (x, y = [1, 2]).

New features

  • bitwise operators &, |, ^, >>, <<, ~ (#84)


  • null is now an "assignable" value. Earlier on, you couldn't x = null, which resulted in funny behaviors such as #85
  • numbers are not following scientific notation: for very large numbers, the formatter used to convert them to something like 1e+06. This has been now fixed.
  • fixed a panic when using .map(...) without return values (#62)
  • fixed a panic when calling functions without enough arguments (#61)
  • beautified a panic when trying to execute a script that does not exist (#77)
  • beautified a panic when trying to execute .sum() on an array with elements other than numbers (#75)
  • fixed error handling in .map() and .filter() (#80)
  • fixed script halting when there was an error in a while block (#82)
  • added \r and \f as a separator for .lines()
  • strengthened the command parser (#78)
  • fixed shell command escaping (#81)
  • destructuring statements do not need a ; on the preceding line anymore (#83)

Other changes

  • setup travis-ci tests on win, osx, linux (#88)

@odino odino released this Dec 26, 2018 · 55 commits to master since this release

Assets 18

Loads of bugfixes and new features in this release, which beefs up the language getting ready for a stable release (next release will be all about bugfixes in order to release a stable version).


  • floats: now fully supported, so you can 1.1 + 1 as well as "{x: 1.12}".json() and so on!
  • ability to read stdin: you can read a line with stdin() or loop through it with for input in stdin {}
  • compound assignments: +=, -=, etc
  • modulo operator
  • ability to format strings without printing them with str.fmt(x, y, z)
  • array destructuring: [x, y] = [1, 2]
  • errors now terminate ABS scripts with exit code 99 -- got problems?

Happy hacking!


@odino odino released this Dec 25, 2018 · 69 commits to master since this release

Assets 18

Lot's of things made it into this release -- the amount of issues worked on is exceptional and allows us to deliver .

Notable features that made it in this release:

...and many other things. This release, for example, adds support for <= and >= as well, though basic language features won't be highlighted on these release notes; the best place is the documentation which won't take more than 10 minutes of your time.

Try ABS out with a simple:

sh <(curl