1.0 Alpha 3​

This changelog summarizes new features and breaking changes in EdgeDB 1.0 alpha 3 “Proxima Centauri”.

CLI​

The EdgeDB command-line tools are now written in Rust. The tools are a single binary now and can run on multiple different platforms, including Windows.

A few more commands have been added to REPL:

  1. \dump FILENAME dump current database into a file
  2. \restore FILENAME restore the database from file into
  3. the current one
  4. \s, \history show history
  5. \e, \edit [N] spawn $EDITOR to edit history entry N
  6. then use the output as the input
  7. \set [OPTION [VALUE]] show/change setting
  8. \set Show setting descriptions (without
  9. arguments)

Existing introspection commands have been slightly updated to use a different way of supplying command options. Commands now also have long-form names that are more human-readable.

Also, there are a few settings that control the look and feel of the REPL (and can be changed via the \set command:

  1. expand-strings Stop escaping newlines in quoted
  2. strings
  3. implicit-properties Print implicit properties of objects:
  4. id, type id
  5. input-mode Set input mode. One of: vi, emacs
  6. introspect-types Print type names instead of `Object`
  7. in default output mode (may fail if
  8. schema is updated after enabling
  9. option)
  10. limit Set implicit LIMIT. Defaults to 100,
  11. specify 0 to disable
  12. output-mode Set output mode. One of: json, json-
  13. elements, default, tab-separated
  14. verbose-errors Print all errors with maximum
  15. verbosity

EdgeQL​

  • Add += and -= operations for use in update (#165).

  • Distinguish required and optional query parameters (#1352, #1355)

  • Allow tuple arrays in schema definitions (73125882).

  • Get rid of schema::CompoundType in favor of is_compound_type property (c30c1c4f).

  • Add anytype and anytuple as proper abstract types to the schema (affb65de).

  • schema::Constraint no longer has args, use params instead (14cec6f1).

  • Make std::Object the implicit base type for all user-defined object types only.

  • Make std::BaseObject the root type for all object types both user-defined and system object types.

  • Accept 1e100n format as a valid bigint constant rather than decimal (#1372)

  • Make self-referencing (recursive) aliases forbidden.

  • Fix dependency tracking affecting index creation (#1181).

  • Fix derivation of link targets in certain cases of multiple inheritance (52c6b2d4).

  • Fix handling of ad-hoc tuples (#1255).

  • Fix incorrect implicit limit injection in subqueries in computed expressions (#1271).

  • Computables cardinality must now be declared explicitly as required, single or multi. The expression is validated to be within the upper and lower limits implied by the declaration (#1201, #349).

  • Prohibit database names longer than 63 characters (#1158).

  • Prohibit duplicate elements in shapes (#1368).

  • Implement alter function (#1433).

GraphQL​

  • Reflect “description” annotations into GraphQL descriptions (#1228).

  • Change the auto-generated type name template to use “_Type” suffix (#1175).

  • Fix incorrect reflection of enums (#1227).

  • Fix deeply nested insert issue (#1243).

Standard Library​

Server​

  • Convert EdgeQL lexer (#1178)

  • Convert GraphQL parser to Rust and perform constant extraction (#1299).

  • Constant extraction from EdgeQL queries (#1356)

  • Make it possible to use different EdgeDB servers connected to the same Postgres cluster (#1197).

  • Protocol: implement JSON_ELEMENTS IO format for responses (#1169).

Misc​

  • Add cheatsheet to documentation.

  • Strictly type-annotate the core schema module.

  • Clean-up and improve schema and introspection code to make the internal APIs more consistent (#1408).

  • Update the edgedb-js driver to v0.7.3.

  • Update the edgedb-python driver to v0.8.0.