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
requiredandoptionalquery parameters (#1352, #1355) - Allow tuple arrays in schema definitions (73125882).
- Get rid of
schema::CompoundTypein favor ofis_compound_typeproperty (c30c1c4f). - Add anytype and anytuple as proper abstract types to the schema (affb65de).
schema::Constraintno longer hasargs, useparamsinstead (14cec6f1).- Make
std::Objectthe implicit base type for all user-defined object types only. - Make
std::BaseObjectthe root type for all object types both user-defined and system object types. - Accept
1e100nformat as a validbigintconstant rather thandecimal(#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,singleormulti. 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
- Add sys::get_current_database()
- Rename
std::to_str()array-joining function to array_join(). - Rename
std::to_array()string-splitting function to str_split().
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_ELEMENTSIO 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.
