aTbRef - better info on when attributes/ops/codes added

A reader asked … and I realised that my practice of marking system attributes and action/export codes as being in the current baseline or when added since still leaves some unanswered questions. Though I’ve now forgotten the causal case (!) I did realise I could add the very first version where the item was added, e.g. here for the action operator capitalize():

Now the ‘Operator First Added’ shows the app version where I believe the item was first added. The row data from the old ‘Operator First Added’ now captioned ‘Operator in Current Baseline’. So, we now know the operator `capitalize() was first added to Tinderbox v4.6.0, existed at the current (now, v10) aTbRef baseline, and has not been altered since the baseline (v10) version.

Very few will need this detail, but for those who do, I believe this extra skein of data will be useful. A bit of a labour to produce. But, now done it will be easy to keep updated. If anyone (including @eastgate) thinks i’ve made a wrong call on origin versions, please let me know.

To accomodate this, the current baseline website has a had a full refresh, including the TBX.

†. Note that not every attribute/export code/action operator is listed. Why? In the case of attributes most are there, even moribund ones. For export codes, when ^value*(^ and action() subsumed he role of many existing export codes, these were removed from aTbref in part to avoid encouraging new users to use obsolete (and so, deprecated) code. For action code, pre-dot-operator versions of Date-type and Color-type data operators are no longer listed (though likely they still work). So Color.hue() stands proxy for the unlisted hue(). The latter likely predates the former though the difference is moot if only the latter is to be used. Plus, much info about older codes can be seen in previous aTbRef baselines. It is a judgement call, as its author, as to how much legacy baggage we keep surfaced in the current baseline.

‡. The source of this data is old copies of aTbref and failing that, the old Release Notes TBX (v1–v5) and the Notes.tbx file for v6+. However, there is an element of deduction in some cases. Firstly, I only started using Tinderbox at v2.3.4 and didn’t really start to rigorously starting per-version changes until the v4.5.0 baseline (baseline #2). So for early things, I’m dependent on the RNs. But, the two referenced TBXs are occasionally mute as to changes. For instance, a new feature might be noted but not that doing this also added several new system attributes. So the further back in time you go, the less reliable this info may be. Still, I think it is most useful from the changes, especially in action code operators from v4.5 onwards.

3 Likes

As a side point, when looking at older threads.

Now attributes/operators and export codes show their version of introduction it can help when figuring out if code in old threads is still current. So, we see createAttribute() first arrived in Tinderbox v9.2.0. The Previous Versions To Current Baseline page tells us v9.2.0 released in March 2022. So code/threads before that date might be suggesting solutions for this problem for which there may be a better solution or a now-built-in feature.

Certainly, the arrival in v9.x of user functions and operators to make/delete notes/attributes/etc. have made possible solutions that previously involved a degree of workaround.

Likewise, action code user variables var() in v5.10.0 (Dec 2011) means the need to use lots of extra user attributes ($StringA, $StringB, etc.) just to hold in-process values has largely fallen away. You may still use the older methods if desired, but new users are advised to use more recent affordances.

This in whilst in the app v1 we might have written:

Color = blue

and it likely still works now, someone starting with Tinderbox now should use current syntax:

$Color = "blue";

Why? Because it avoids unexpected errors. Long-term users might see why the error arose. A new user is likely to lack the knowledge of app in the past and so is less likely to grok that the issue is user error (incorrectly formatted code).