Rel version 3.000 now available!

This forum contains announcements about Rel.
Post Reply
Site Admin
Posts: 368
Joined: Sun Nov 27, 2005 7:19 pm

Rel version 3.000 now available!

Post by Dave »

This is a major release of Rel, an implementation of Date & Darwen's Tutorial D database language. It introduces a new graphical "front end" user interface that provides rich desktop database management functionality and a native look-and-feel on Windows, Mac OS X, and Linux. It is the starting point for what will be a significant focus on friendly, end-user oriented functionality in forthcoming releases.

As part of this release, the version numbering system has changed. The entire Rel release, including the standalone DBMS and the user-interface, is version 3.000. The standalone DBMS carries on the Rel version numbering from before; the last release was version 1.0.12 so the standalone DBMS is now version 1.0.13.

Rel now runs under Java 8. Running a standalone Rel DBMS requires that it be installed, but a typical Rel distribution including the user interface bundles a Java runtime, so it's usually not necessary to download Java separately.

The source code is now available on GitHub under and is easily loaded into the Eclipse IDE to facilitate further development.

Major features of the new user interface include:

1. Displaying, editing, and designing relation-valued variables, operators, constraints, types, queries (expressions), and other database objects can now be done via a graphical interface, in addition to the traditional command-line.

2. Code entry is now enhanced with syntax highlighting, find/replace, undo/redo, persistent edit history, and "zoom" buttons to maximize the input or output display. Rel scripts may be saved in and retrieved from the database.

3. A graphical query language called Rev, based on a data-flow metaphor, is fully integrated and generates Tutorial D / Rel code.

4. The backup facility is now fully integrated. Database backups can be made at the click of a button and do not rely on an external script.

5. The default database is created in the user's home directory, rather than inside the Rel program folder or directory. Other databases can be easily loaded from the user interface and multiple local and remote databases can be used simultaneously.

Significant enhancements have also been made to the Rel implementation of the Tutorial D database language:

1. TUPLE {*} now returns the "current tuple" in any open expression. TUPLE {*} is equivalent to ​​TUPLE {A1 A1, ..., AAn}, where A1, ..., An are the attributes of an implied relation such as the relation operand to an invocation of WHERE or EXTEND. The keyword TUPLE can be abbreviated to TUP, as in other places where it appears in the language.

2. IMAGE_IN(r, t) where r is a relation and t is a tuple, is equivalent to (r JOIN RELATION {t}) {ALL BUT A1, ..., An}, where A1, ..., An are the attributes of t. The tuple operand to IMAGE_IN may be omitted, defaulting to TUPLE {*}. Thus, IMAGE_IN(r) is equivalent to !!r as proposed in Date & Darwen's Database Explorations, Chapter 14.

3. ARRAY TUPLE {...} is now a valid parameter type.

4. User-defined aggregate operators are now supported, as described in ... nd-Rel.pdf

5. Altering relvar definitions is now supported via:
ALTER VAR <relvar> TYPE_OF <attrname> TO <newattrtype>
ALTER VAR <relvar> RENAME <oldattrname> AS <newattrname>
ALTER VAR <relvar> INSERT <newattrname> <newattrtype>
ALTER VAR <relvar> DROP <attrname>
ALTER VAR <relvar> KEY {<keyspec>} [... KEY {<keyspec>}] (must be last)

6. All data definition statements are now logged in sys.DefinitionHistory.

7. SET_UNIQUE_NUMBER(INT) built-in operator has been provided and is used in the DatabaseToScript.rel script.

8. IF, CASE, DO, WHILE, FOR and OPERATOR definitions now support multiple statements without requiring BEGIN .. END blocks.

9. Keywords IF, CASE, DO, WHILE, FOR and OPERATOR are now optional after the END that closes a block.

10. POSSREP component definitions may now be surrounded with "( ... )" (preferred) or "{ ... }" (deprecated).

11. Updated storage engine to Oracle Berkeley DB JE version 7.0.6

12. External Java compilation is now fully integrated; a JDK is no longer required.

13. System startup announcement now provides more information about the runtime platform.

14. Removed octal and hex integer representations, as these were a source of confusion.

15. Empty EXTEND, e.g., EXTEND S: {}, is now permitted.

16. Empty UPDATE, e.g., UPDATE S: {}, is now permitted.

17. Added a sequence generator built-in operator: OPERATOR SEQUENCE(first INT, last INT, step INT) RELATION {n INT}; OPERATOR SEQUENCE(first INT, last INT) RELATION {n INT};

18. TYPE_OF(e) pseudo-operator returns type metadata about any expression using new built-in types TypeInfo, Scalar and NonScalar.

19. The sys.Catalog relvar now provides Attributes and Keys metadata.

20. Relvar update notices can be turned off with SET VerboseRelvarUpdates Off.

21. All relations are now emitted with their heading. This improves readability & parse-ability.

22. A modulo operator (%) is now built-in. E.g., 3 % 4 is a valid expression.

23. A bug has been fixed: UNION (RELATION {x RELATION {y INT}} {}, x) returned an error. It should have returned RELATION {y INT}} {}. The same applies to D_UNION and XUNION. This has been corrected.

For more information or to download Rel, go to
Post Reply