# How the five languages compare

If you know TypeScript, a few of the standard library's choices will
differ from what you expect:

- Text length counts code points, as `max_length` does, not UTF-16 units.
- There are no negative positions. To cut from the end, use
  `keep_last(x, 2)`, not `slice(-2)`.
- Rounding is named every time, with `rounding:`, never a hidden default.
- Exact decimals and `Money`, in minor units with a currency, are built
  in.
- `list.sort_by(items, key)` gives a new list, sorted by a key, never in
  place and never comparing as strings by default.
- Hashing, `hash.sha256`, is an ordinary call, not asynchronous, and
  password hashing is `crypto.hash_password`, Argon2id with no choices.

How TypeScript, Rust, Go, Elixir and Python each handle these jobs, and
what Jadpo took from each, is in the
[design notes](https://github.com/jadpo-dev/jadpo/blob/main/docs/language/notes/19-standard-library.md#how-the-five-languages-compare).
