_Breaking changes are marked with `!`._
Additions:
- `LANGUAGE_VERSION`
- `MIN_COMPATIBLE_LANGUAGE_VERSION`
- `Point(row, column)`
- `Language.__repr__()`
- `Language.__eq__()`: checks `ptr`
- `Language.__int__()`: returns `ptr`
- `Language.__index__()`: returns `ptr`
- `Language.__hash__()`: returns `ptr`
- `Node.__str__()`: returns the S-expression
- `TreeCursor.goto_first_child_for_point(point)`
- `TreeCursor.__copy__()`: returns `copy()`
- `Query(language, source)`
- `Parser(language, included_ranges, timeout_micros)`
- `Parser.language` (getter + setter)
- `Parser.included_ranges` (getter + setter)
- `Parser.timeout_micros` (getter + setter)
- `Range.__hash__()`
Deprecations:
- `Node.sexp()`: use `str()`
- `Tree.text`: use `root_node.text`
- `TreeCursor.goto_first_child_for_point(row, column)`: use `goto_first_child_for_point(point)`
- `LookaheadIterator.reset(language, state)`: use `reset_state(state, language)`
- `Parser.set_language(language)`: use `Parser(language)` or `language` setter
- `Parser.set_included_ranges(ranges)`: use `included_ranges` setter
- `Parser.set_timeout_micros(timeout)`: use `timeout_micros` setter
Removals:
- `Language(path, name)` **!**
- `Language.build_library(...)` **!**
- `Language.name` **!**
- `Language.lib`
- `Language.language_id`: use `int()`
Changes:
- `Language()` only accepts a single integer argument. **!**
- `Parser.parse(...)` accepts an optional `encoding` argument. **!**
- `TreeCursor.descendant_index` is changed to a property. **!**
- `LookaheadIterator.language` returns a `Language` instance. **!**
- `LookaheadIterator.reset_state(...)` accepts an optional `language` argument.
- `Query.captures(...)` arguments must be keywords (except for `node`).
- `Query.matches(...)` arguments must be keywords (except for `node`).
- `Range.__repr__()` prints attributes in the same order as the `Range()` arguments.
- `Range()` arguments are no longer considered optional.