# Mike Gerwitz

## Activist for User Freedom

 aboutsummaryrefslogtreecommitdiffstats log msg author committer range
blob: 9222f5e12977c1cd8eb922c54aec50dcac0bff1e (plain)
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */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. v18.0.0 (2021-06-23) ==================== 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. Compiler -------- - 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. - 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. Core ---- - New feature flag template _use-new-classification-system_. - 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. - 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). Rust ---- - Version bump from 1.42.0 to 1.48.0 now that intra-doc links has been stabalized. Miscellaneous ------------- - build-aux/progtest-runner will now deterministically concatenate files based on name rather than some unspecified order. v17.9.0 (2021-05-27) ==================== This is a documentation/design release, introducing The TAME Programming Language in design/tpl. Compiler ------- - Allow the mapping of flag values from program.xml. Design ------ - Introduce The TAME Programming Language. v17.8.1 (2021-03-18) ==================== 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.