2020-04-29 14:40:55 -04:00
|
|
|
|
TAME Release Notes
|
|
|
|
|
==================
|
|
|
|
|
This file contains notes for each release of TAME since v17.4.0.
|
|
|
|
|
|
2020-04-30 13:06:43 -04:00
|
|
|
|
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.
|
2020-04-29 15:48:21 -04:00
|
|
|
|
|
|
|
|
|
[semantic versioning]: https://semver.org/
|
2020-04-29 14:40:55 -04:00
|
|
|
|
|
|
|
|
|
TAME developers: Add new changes under a "NEXT" heading as part of the
|
|
|
|
|
commits that introduce the changes. To make a new release, run
|
2020-04-30 13:06:43 -04:00
|
|
|
|
`tools/mkrelease`, which will handle updating the heading for you.
|
2020-04-29 14:40:55 -04:00
|
|
|
|
|
2021-03-18 09:55:36 -04:00
|
|
|
|
|
2021-07-01 13:54:34 -04:00
|
|
|
|
NEXT
|
|
|
|
|
====
|
|
|
|
|
Compiler
|
|
|
|
|
--------
|
|
|
|
|
- Make Summary Page less chatty.
|
2021-07-14 09:51:08 -04:00
|
|
|
|
- Fix incorrect package name for generated worksheet packages.
|
2021-07-01 13:54:34 -04:00
|
|
|
|
|
2021-07-14 09:59:45 -04:00
|
|
|
|
Summary Page
|
|
|
|
|
------------
|
|
|
|
|
- Correctly generate input fields for params using imported types.
|
|
|
|
|
- This is a long-standing (nearly 10-year-old) bug.
|
|
|
|
|
|
2021-07-01 13:54:34 -04:00
|
|
|
|
|
2021-06-24 10:37:25 -04:00
|
|
|
|
v18.0.1 (2021-06-24)
|
|
|
|
|
====================
|
2021-06-24 09:59:00 -04:00
|
|
|
|
This is a minor maintenance release.
|
|
|
|
|
|
|
|
|
|
Compiler
|
|
|
|
|
--------
|
|
|
|
|
- Remove internal notice when new system is used to emit code for a
|
|
|
|
|
particular classification.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-23 12:54:25 -04:00
|
|
|
|
v18.0.0 (2021-06-23)
|
|
|
|
|
====================
|
2021-06-23 12:46:37 -04:00
|
|
|
|
This release focuses primarily on compiler optimizations that affect runtime
|
|
|
|
|
performance (both CPU and memory). The classification system has undergone
|
|
|
|
|
a rewrite, but the new system is gated behind a template-based feature flag
|
|
|
|
|
`_use-new-classification-system_` (see Core below). Many optimizations
|
|
|
|
|
listed below are _not_ affected by this toggle.
|
2021-06-07 11:41:01 -04:00
|
|
|
|
|
|
|
|
|
Compiler
|
|
|
|
|
--------
|
2021-06-23 12:46:37 -04:00
|
|
|
|
- Numerous compiler optimizations including (but not limited to):
|
|
|
|
|
- Classification system rewrite with significant correctness and
|
|
|
|
|
performance improvements, with significantly less generated code.
|
|
|
|
|
- There is more work to be done in TAMER.
|
|
|
|
|
- This change is gated behind a feature toggle (see
|
|
|
|
|
`_use-new-classification-system_` in Core below).
|
|
|
|
|
- Significant reduction in byte count of JavaScript target output.
|
|
|
|
|
- Classifications with single-`TRUE` predicate matches are aliases and now
|
|
|
|
|
compile more efficiently.
|
|
|
|
|
- Classifications that are a disjunction of conjunctions with a common
|
|
|
|
|
predicate will have the common predicate hoisted out, resulting in more
|
|
|
|
|
efficeint code generation.
|
|
|
|
|
- Classifications with equality matches entirely on a single param are
|
|
|
|
|
compiled into a `Set` lookup.
|
|
|
|
|
- Most self-executing functions in target JavaScript code have been
|
|
|
|
|
eliminated, resulting in a performance improvement.
|
|
|
|
|
- Floating point truncation now takes place without using `toFixed` in
|
|
|
|
|
JavaScript target, eliminating expensive number->string->number
|
|
|
|
|
conversions.
|
|
|
|
|
- Code paths are entirely skipped if a calculation predicate indicates
|
|
|
|
|
that it should not be executed, rather than simply multiplying by 0
|
|
|
|
|
after performing potentially expensive calculations.
|
|
|
|
|
- A bunch of wasteful casting has been eliminated, supplanted by proper
|
|
|
|
|
casting of param inputs.
|
|
|
|
|
- Unnecessary debug output removed, significantly improving performance in
|
|
|
|
|
certain cases.
|
|
|
|
|
- Single-predicate any/all blocks stripped rather than being extracted
|
|
|
|
|
into separate classifications.
|
|
|
|
|
- Extracted any/all classifications are inlined at the reference site when
|
|
|
|
|
the new classification system is enabled, reducing the number of
|
|
|
|
|
temporaries created at runtime in JavaScript.
|
2021-06-07 11:41:01 -04:00
|
|
|
|
- Summary Page now displays values of `lv:match/@on` instead of debug
|
|
|
|
|
values.
|
|
|
|
|
- This provides more useful information and is not subject to the
|
|
|
|
|
confusing reordering behavior of the compiler that is not reflected on
|
|
|
|
|
the page.
|
|
|
|
|
- Changes that have not yet been merged will remove debug values for the
|
|
|
|
|
classification system.
|
|
|
|
|
|
2021-06-08 12:00:20 -04:00
|
|
|
|
Core
|
|
|
|
|
----
|
2021-06-09 16:09:09 -04:00
|
|
|
|
- New feature flag template `_use-new-classification-system_`.
|
2021-06-23 12:46:37 -04:00
|
|
|
|
- This allows selectively enabling code generation for the new
|
|
|
|
|
classification system, which has BC breaks in certain buggy situations.
|
|
|
|
|
See `core/test/core/class` package for more information.
|
2021-06-08 12:00:20 -04:00
|
|
|
|
- Remove `core/aggregate`.
|
|
|
|
|
- This package is not currently utilized and is dangerous---it could
|
|
|
|
|
easily aggregate unintended values if used carelessly. Those who know
|
|
|
|
|
what they are doing can use `sym-set` if such a thing is a good thing
|
|
|
|
|
within the given context, and proper precautions are taken (as many
|
|
|
|
|
templates already do today).
|
|
|
|
|
|
2021-06-21 13:10:00 -04:00
|
|
|
|
Rust
|
|
|
|
|
----
|
|
|
|
|
- Version bump from 1.42.0 to 1.48.0 now that intra-doc links has been
|
|
|
|
|
stabalized.
|
|
|
|
|
|
2021-06-09 16:10:52 -04:00
|
|
|
|
Miscellaneous
|
|
|
|
|
-------------
|
|
|
|
|
- `build-aux/progtest-runner` will now deterministically concatenate files
|
|
|
|
|
based on name rather than some unspecified order.
|
|
|
|
|
|
2021-06-07 11:41:01 -04:00
|
|
|
|
|
2021-05-27 13:22:00 -04:00
|
|
|
|
v17.9.0 (2021-05-27)
|
|
|
|
|
====================
|
2021-05-10 14:21:24 -04:00
|
|
|
|
This is a documentation/design release, introducing The TAME Programming
|
|
|
|
|
Language in `design/tpl`.
|
|
|
|
|
|
2021-06-08 11:42:09 -04:00
|
|
|
|
Compiler
|
|
|
|
|
-------
|
|
|
|
|
- Allow the mapping of flag values from `program.xml`.
|
|
|
|
|
|
2021-05-10 14:21:24 -04:00
|
|
|
|
Design
|
|
|
|
|
------
|
|
|
|
|
- Introduce The TAME Programming Language.
|
|
|
|
|
|
|
|
|
|
|
2021-03-18 09:56:02 -04:00
|
|
|
|
v17.8.1 (2021-03-18)
|
|
|
|
|
====================
|
2021-03-18 09:55:36 -04:00
|
|
|
|
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.
|
|
|
|
|
|
2021-03-15 09:49:57 -04:00
|
|
|
|
Build System
|
|
|
|
|
------------
|
2021-03-18 09:55:36 -04:00
|
|
|
|
- [bugfix] Lookup tables will no longer build `rater/core/vector/table` when
|
2021-03-17 17:02:58 -04:00
|
|
|
|
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.
|
2021-03-15 09:49:57 -04:00
|
|
|
|
- Minor improvements to `tame` and `tamed` scripts to ensure that certain
|
|
|
|
|
unlikely failures are not ignored.
|
|
|
|
|
|
2021-03-18 09:55:36 -04:00
|
|
|
|
|
2021-02-23 10:51:59 -05:00
|
|
|
|
v17.8.0 (2021-02-23)
|
|
|
|
|
====================
|
2021-02-22 12:37:38 -05:00
|
|
|
|
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.
|
|
|
|
|
|
2021-02-22 14:39:31 -05:00
|
|
|
|
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.
|
2021-02-22 14:41:23 -05:00
|
|
|
|
- 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.
|
2021-02-22 14:39:31 -05:00
|
|
|
|
|
2021-02-22 12:37:38 -05:00
|
|
|
|
Build System
|
|
|
|
|
------------
|
|
|
|
|
- Only modify `.version.xml` timestamp when hash changes. This allows
|
|
|
|
|
its use as a dependency without forcefully rebuilding each and every time.
|
2021-02-22 12:38:38 -05:00
|
|
|
|
- `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`.
|
2021-02-22 12:40:31 -05:00
|
|
|
|
- Step-level imports in program definitions are now recognized to
|
|
|
|
|
accommodate liza-proguic's step-level package generation.
|
2021-02-22 12:42:16 -05:00
|
|
|
|
- Step-level program packages are now properly accounted for as dependencies
|
|
|
|
|
for builds.
|
2021-02-22 16:47:07 -05:00
|
|
|
|
- `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.
|
2021-02-22 12:37:38 -05:00
|
|
|
|
|
|
|
|
|
|
2020-12-09 09:59:09 -05:00
|
|
|
|
v17.7.0 (2020-12-09)
|
|
|
|
|
====================
|
2020-12-02 14:56:38 -05:00
|
|
|
|
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.
|
|
|
|
|
|
2020-12-02 16:50:35 -05:00
|
|
|
|
`tame-core`
|
|
|
|
|
-----------
|
|
|
|
|
- `mrange` is now fully tail-recursive and has experimental TCO applied.
|
|
|
|
|
- It was previously only recursive for non-matching rows.
|
|
|
|
|
|
|
|
|
|
|
2020-12-03 14:09:37 -05:00
|
|
|
|
v17.6.5 (2020-12-03)
|
2020-11-30 15:25:18 -05:00
|
|
|
|
====================
|
2020-12-09 09:55:34 -05:00
|
|
|
|
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.
|
2020-11-30 15:25:18 -05:00
|
|
|
|
|
2020-11-23 15:20:20 -05:00
|
|
|
|
|
2020-11-23 15:26:54 -05:00
|
|
|
|
v17.6.4 (2020-11-23)
|
|
|
|
|
====================
|
2020-11-23 15:20:20 -05:00
|
|
|
|
This release tolerates invalid map inputs in certain circumstances.
|
|
|
|
|
|
|
|
|
|
Compiler
|
|
|
|
|
--------
|
|
|
|
|
- Tolerate non-string inputs to `uppercase` and `hash` map methods.
|
|
|
|
|
|
|
|
|
|
|
2020-11-03 13:24:36 -05:00
|
|
|
|
v17.6.3 (2020-11-03)
|
2020-11-03 12:37:38 -05:00
|
|
|
|
====================
|
|
|
|
|
- Update the CDN used to get MathJax.
|
|
|
|
|
|
2020-11-23 15:20:20 -05:00
|
|
|
|
|
2020-10-01 10:22:17 -04:00
|
|
|
|
v17.6.2 (2020-10-01)
|
|
|
|
|
====================
|
2020-09-30 15:25:43 -04:00
|
|
|
|
- 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.
|
2020-04-29 14:40:55 -04:00
|
|
|
|
|
2020-11-23 15:20:20 -05:00
|
|
|
|
|
2020-09-23 16:32:19 -04:00
|
|
|
|
v17.6.1 (2020-09-23)
|
|
|
|
|
====================
|
2020-09-23 15:59:20 -04:00
|
|
|
|
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.
|
2020-08-19 15:39:20 -04:00
|
|
|
|
|
|
|
|
|
Miscellaneous
|
|
|
|
|
-------------
|
|
|
|
|
- `package-lock.json` additions.
|
|
|
|
|
|
|
|
|
|
|
2020-08-19 15:30:00 -04:00
|
|
|
|
v17.6.0 (2020-08-19)
|
|
|
|
|
====================
|
2020-08-14 00:03:01 -04:00
|
|
|
|
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.
|
2020-07-23 14:33:06 -04:00
|
|
|
|
|
|
|
|
|
Miscellaneous
|
|
|
|
|
-------------
|
|
|
|
|
- `build-aux/lsimports` was causing Gawk to complain about the third
|
|
|
|
|
argument to `gensub`; fixed.
|
2020-07-24 15:33:02 -04:00
|
|
|
|
- `bootstrap` will test explicitly whether `hoxsl` is a symbol link, since
|
|
|
|
|
`-e` fails if the symlink is broken.
|
2020-07-23 14:33:06 -04:00
|
|
|
|
|
|
|
|
|
|
2020-07-15 11:16:14 -04:00
|
|
|
|
v17.5.0 (2020-07-15)
|
|
|
|
|
====================
|
2020-07-14 16:53:05 -04:00
|
|
|
|
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.
|
|
|
|
|
|
2020-07-14 16:50:08 -04:00
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2020-07-02 12:48:16 -04:00
|
|
|
|
v17.4.3 (2020-07-02)
|
|
|
|
|
====================
|
2020-07-02 12:47:12 -04:00
|
|
|
|
This release fixes a bug caused by previous refactoring that caused
|
2020-07-15 14:38:07 -04:00
|
|
|
|
unresolved externs to produce an obscure and useless error for the end
|
2020-07-02 12:47:12 -04:00
|
|
|
|
user.
|
|
|
|
|
|
2020-07-01 15:40:21 -04:00
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2020-05-13 08:09:48 -04:00
|
|
|
|
v17.4.2 (2020-05-13)
|
|
|
|
|
====================
|
2020-04-30 14:33:10 -04:00
|
|
|
|
This release adds GraphML output for linked objects to allow us to
|
2020-05-13 07:27:34 -04:00
|
|
|
|
inspect the graph.
|
2020-04-30 14:33:10 -04:00
|
|
|
|
|
|
|
|
|
Linker
|
|
|
|
|
------
|
|
|
|
|
- Add `--emit` oprion to `tamer/src/bin/tameld.rs` that allows us to specify
|
|
|
|
|
the type of output we want.
|
2020-05-13 07:27:34 -04:00
|
|
|
|
- Minor refactoring.
|
2020-04-30 14:33:10 -04:00
|
|
|
|
|
|
|
|
|
Miscellaneous
|
|
|
|
|
-------------
|
2020-05-01 13:33:41 -04:00
|
|
|
|
- Added `make` target to build linked GraphML files.
|
|
|
|
|
- Updated `make *.xmle` target to explicitly state it is emitting `xmle`.
|
2020-05-13 07:24:02 -04:00
|
|
|
|
- Added Cypher script to use in Neo4J after a GraphML file is imported.
|
2020-04-29 15:49:57 -04:00
|
|
|
|
- `RELEASES.md`
|
|
|
|
|
- Add missing link to semver.org.
|
|
|
|
|
- Fix `tame-core` heading, which was erroneously Org-mode-styled.
|
2020-04-30 13:06:43 -04:00
|
|
|
|
- Rephrase and correct formatting of an introduction paragraph.
|
2020-04-29 15:48:21 -04:00
|
|
|
|
|
|
|
|
|
|
2020-04-29 15:34:29 -04:00
|
|
|
|
v17.4.1 (2020-04-29)
|
|
|
|
|
====================
|
2020-04-29 14:40:55 -04:00
|
|
|
|
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.
|
|
|
|
|
|
2020-04-29 15:49:57 -04:00
|
|
|
|
`tame-core`
|
2020-04-29 14:40:55 -04:00
|
|
|
|
-----------
|
|
|
|
|
- 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.
|