* ABS has CLI and NGS does not yet, CLI of NGS will be written in NGS itself, so it takes time. The CLI in NGS will be radically different [3].
* ABS runs on Windows.
* ABS has decorators, NGS does not yet, still thinking how to do it right and more generic.
* ABS has some functions that NGS doesn't and vice versa.
* Found inconsistently named functions in ABS (json() vs tsv() - json() parses JSON while tsv() generates tsv); given more eyeballs on NGS, such inconsistencies should come up.
* NGS has user defined types.
* NGS has many predefined types, ABS has few.
* NGS has multi-methods and multiple dispatch.
* NGS has exceptions.
* NGS has (partial but already very usable implementation of) Universal Pattern Matching [2]
Translating example in the docs:
# ABS
res = `curl -s 'https://api.ipify.org?format=json'`
if !res.ok {
exit(1, "An error occurred: %s".fmt(res))
}
ip = res.json().ip
total = ip.split(".").map(int).sum()
if total > 100 {
echo("The sum of [$ip] is a large number, $total.")
}
# NGS
ip = ``curl -s 'https://api.ipify.org?format=json'``.ip
total = ip.split('.').map(Int).sum()
if total > 100 {
echo("The sum of [$ip] is a large number, $total.")
}
In NGS the double backtick syntax above runs external program and parses the output. The check of `ok` is not needed because on error exception will be thrown.[1] https://github.com/ngs-lang/ngs