TAME Release Notes ================== This file contains notes for each release of TAME since v17.4.0. TAME uses [semantic versioning][]. Any major version number increment indicates that backwards-incompatible changes have been introduced in that version. Each such version will be accompanied by notes that provide a migration path to resolve incompatibilities. [semantic versioning]: https://semver.org/ TAME developers: Add new changes under a "NEXT" heading as part of the commits that introduce the changes. To make a new release, run `tools/mkrelease`, which will handle updating the heading for you. NEXT ==== This release contains a bufix for recent build changes in v17.8.0 that were causing, under some circumstances, builds to fail during dependency generation. It also contains minor improvements and cleanup. Build System ------------ - [bugfix] Lookup tables will no longer build `rater/core/vector/table` when geneating the `xml` package. - This was causing problems during `suppliers.mk` dependency generation. The dependency is still in place for the corresponding `xmlo` file. - This was broken by v17.8.0. - Minor improvements to `tame` and `tamed` scripts to ensure that certain unlikely failures are not ignored. v17.8.0 (2021-02-23) ==================== This release contains changes to the build system to accommodate liza-proguic's introduction of step-based packages (in place of a monolithic `package-dfns.xml`), as well as miscellaneous improvements. Compiler -------- - `rater.xsd`, used for certain validations of TAME's grammar, has been updated to an out-of-tree version; it had inadvertently gotten out of date, and the discrepency won't happen again in the future. - Further, limits on the length of `@yields` identifiers have been removed; the lack of namespacing and generation of identifiers from templates can yield longer identifier names. Build System ------------ - Only modify `.version.xml` timestamp when hash changes. This allows its use as a dependency without forcefully rebuilding each and every time. - `configure` will no longer immediately generate `suppliers.mk`. - Additionally, `build-aux/suppmk-gen`, which `configure` directly invoked until now, was removed in favor of generic rules in `Makefile.am`. - Step-level imports in program definitions are now recognized to accommodate liza-proguic's step-level package generation. - Step-level program packages are now properly accounted for as dependencies for builds. - `supplier.mk` is now automatically regenerated when source files change. This previously needed to be done manually when imports changed. - `supplier.mk` generation will no longer be verbose (it'll instead be only one line), which makes it more amenable to more frequent regeneration. v17.7.0 (2020-12-09) ==================== This release provides tail-call optimizations aimed at the query system in core. Compiler -------- - [bugfix] Recursive calls using TCO will wait to overwrite their function arguments until all expressions calculating the new argument values have completed. `tame-core` ----------- - `mrange` is now fully tail-recursive and has experimental TCO applied. - It was previously only recursive for non-matching rows. v17.6.5 (2020-12-03) ==================== This release improves Summary Page performance when populating the page with data loaded from an external source. Summary Page ------------ - Populating the DOM with loaded data now runs in linear time. v17.6.4 (2020-11-23) ==================== This release tolerates invalid map inputs in certain circumstances. Compiler -------- - Tolerate non-string inputs to `uppercase` and `hash` map methods. v17.6.3 (2020-11-03) ==================== - Update the CDN used to get MathJax. v17.6.2 (2020-10-01) ==================== - Optionally include a "program.mk" file if it is present in the project's root directory. This allows us to move program specific tasks outside of TAME. v17.6.1 (2020-09-23) ==================== Compiler -------- - `lv:param-class-to-yields` will now trigger a failure rather than relying on propagating bad values, which may not result in failure if the symbol is represented by another type (non-class) of object. Miscellaneous ------------- - `package-lock.json` additions. v17.6.0 (2020-08-19) ==================== This release provides a new environment variable for JVM tuning. It does not provide any new compiler features or performance enhancements in itself, though it enables optimizations through JVM tuning. Compiler -------- - The new environment variable `TAMED_JAVA_OPTS` can now be used to provide arguments to the JVM. This feature was added to support heap ratio tuning. Miscellaneous ------------- - `build-aux/lsimports` was causing Gawk to complain about the third argument to `gensub`; fixed. - `bootstrap` will test explicitly whether `hoxsl` is a symbol link, since `-e` fails if the symlink is broken. v17.5.0 (2020-07-15) ==================== This release adds support for experimental human-guided tail call optimizations (TCO) to resolve issues of stack exhaustion during runtime for tables with a large number of rows after having applied the first predicate. This feature should not be used outside of `tame-core`, and will be done automatically by TAMER in the future. `tame-core` ----------- - `vector/filter/mrange`, used by the table lookup system, has had its mutually recursive function inlined and now uses TCO. - This was the source of stack exhaustion on tables whose predicates were unable to filter rows sufficiently. Compiler -------- - Experimental guided tail call optimizations (TCO) added to XSLT-based compiler, allowing a human to manually indicate recursive calls in tail position. - This is undocumented and should only be used by `tame-core`. The experimental warning will be removed in future releases if the behavior proves to be sound. - TAMER will add support for proper tail calls that will be detected automatically. v17.4.3 (2020-07-02) ==================== This release fixes a bug caused by previous refactoring that caused unresolved externs to produce an obscure and useless error for the end user. Linker ------ - Provide useful error for unresolved identifiers. - This was previously falling through to an `unreachable!` block, producing a very opaque and useless internal error message. v17.4.2 (2020-05-13) ==================== This release adds GraphML output for linked objects to allow us to inspect the graph. Linker ------ - Add `--emit` oprion to `tamer/src/bin/tameld.rs` that allows us to specify the type of output we want. - Minor refactoring. Miscellaneous ------------- - Added `make` target to build linked GraphML files. - Updated `make *.xmle` target to explicitly state it is emitting `xmle`. - Added Cypher script to use in Neo4J after a GraphML file is imported. - `RELEASES.md` - Add missing link to semver.org. - Fix `tame-core` heading, which was erroneously Org-mode-styled. - Rephrase and correct formatting of an introduction paragraph. v17.4.1 (2020-04-29) ==================== This release refactors the linker, adds additional tests, and improves errors slightly. There are otherwise no functional changes. Compiler -------- - Refactor proof-of-concept dependency graph construction code. - Improvements to error abstraction which will later aid in reporting. Miscellaneous ------------- - `RELEASES.md` added. - `tools/mkrelease` added to help automate updating `RELEASES.md`. - `build-aux/release-check` added to check releases. - This is invoked both by `tools/mkrelease` and by CI via `.gitlab-ci.yml` on tags. v17.4.0 (2020-04-17) ==================== This release focuses on moving some code out of the existing XSLT-based compiler so that the functionality does not need to be re-implemented in TAMER. There are no user-facing changes aside form the introduction of two new templates, which are not yet expected to be used directly. `tame-core` ----------- - New `rate-each` template to replace XSLT template in compiler. - New `yields` template to replace XSLT template in compiler. - Users should continue to use `rate-each` and `yields` as before rather than invoking the new templates directly. - The intent is to remove the `t` namespace prefix in the future so that templates will be applied automatically. Compiler -------- - XSLT-based compiler now emits `t:rate-each` in place of the previous XSLT template. - XSLT-based compiler now emits `t:yields` in place of the previous XSLT template.