Change Log
2.9.94¶
2023-09-11
-
The VSCode extension now provides more details on hover, as well as navigation from, for example,
Science:CTD_Seabird.sea_water_salinity
, to corresponding definition in C++ source location (when the lrauv-application codebase is available).As an example,
Science.tl
includes:Unlike many other cases, this kind of definition is not captured inreadData strategy="MinError" { while ( EnabledSeabird ) Science:CTD_Seabird.sea_water_temperature Science:CTD_Seabird.sea_water_salinity }
*IF.h
headers, but indirectly via calls tonewUniversalWriter
in module.cpp
files. -
Internal code reorg and cleanup.
2.9.93¶
2023-09-06
- The VSCode extension
Reload Base Information
command now also works for when using a published set of LRAUV definitions (that is, when using theLRAUV Revision
setting). See 2.9.90 notes below for more details on this feature. - Internal adjustments.
2.9.90¶
2023-09-01
This important release is primarily intended to better support TethysL users with no access to the lrauv-application codebase. The new support involves two main aspects:
-
Publication of lrauv-application definitions by MBARI:
-
The definitions get published under https://okeanids.mbari.org/tethys/defs/. This happens in two main ways:
- As part of the regular lrauv-application nightly build process
-
LRAUV developers can also trigger the update whenever needed, and not only for master, but for any other branch as needed:
make tl-publish-lrauv-info
The published revision identifier will be the latest commit hash of the checked-out branch. Also, a soft link with the name of the branch is created for convenience.
-
-
Now in VSCode, the user can instruct TethysL to use a published set of LRAUV definitions by indicating the corresponding revision identifier:
-
Open the VSCode Settings window and filter for example by "tethysl" to quickly find the TethysL settings. The new setting is named
LRAUV Revision
, and the attached screenshot showsmaster
as the value. -
Reload your workspace for any change in this setting to have effect (you can use the
Developer: Reload Window
command). - TethysL will now use those published definitions for all validations in the editor.
-
The user can also trigger a reload of the definitions at any time by running the usual
Reload Base Information
command:A summary of the reloaded definitions will be shown in the output window:
-
Note
For CLI users, there's a corresponding new option --lrauv-revision
for the compile
command.
2.9.81¶
2023-07-31
-
Maintenance release including these changes:
-
CLI
compile
command: If no--mission-dir
option is given, then thecompile
command now defaults to current directory as base for any mission inserts.Note
However, when the CLI discovers there's a lrauv-application codebase available depending on the given mission file path, then it will try to determine the associated
Missions/
subdirectory as such base for any mission inserts. -
VSCode extension: Hovering on some behavior settings was triggering an error instead of showing the associated information. Fixed.
-
2.9.7¶
2023-07-19
- Maintenance release:
- Embedding LRAUV resources as of lrauv-application commit faa20085d2a (Jul 15), which includes new settings that are used in WHOI missions.
- Some code cleanup and minor fixes.
2.9.6¶
2023-06-26
-
First release with a proper parser for lrauv-application
xyzModule/XyzModule.cpp
files to extract the module information, that is, not using the traditional scripts there(*). The new parser already seems to be covering most, if not all of, what the traditional scripting has provided, and even including some fixes (for issues like missing entries, duplicates).(*) Note
Our immediate plan is to have the new parser enabled for some time to facilitate testing by others, but the final parsing mechanism for LRAUV module information is still TBD.
-
Other updates:
- VS Code extension: The user can now do searches in the resulting panel created
by some commands (for example, upon running
TethysL: Reload Base Information
). - VS Code extension: Fixed regression that prevented navigating from a
call refId
to corresponding referenced element. - Fix:
*IF.h
parser would not always capture allnamespace
members.
- VS Code extension: The user can now do searches in the resulting panel created
by some commands (for example, upon running
2.9.5¶
2023-06-15
- Fix in xml-to-tethysl related with translation of comments in expression
2.9.3¶
2023-06-08
- Improved prettification of
syslog
statements: If no printed fragment has any comments associated, TethysL will split the set of fragments into new lines as needed so no individual line gets too long. Example of resulting formatting:syslog "Depth=" + Universal:depth~meter + ", Thermocline Depth = " + Derivation:TempGradientCalculator.thermoclineDepth~meter + ", Target depth = " + Derivation:TempGradientCalculator.targetDepth~meter
2.9.2¶
2023-06-06
Further improvements toward facilitating XML migrations to TethysL.
2023-05-31 - 2.9.1
This release brings the following significant improvements:
-
The XML-to-TethysL translator now performs a more complete handling of expressions in terms of retaining the traditional but non-standard evaluation semantics performed by the LRAUV framework.
Note
At the TethysL level, expression evaluation continues to follow the standard practice in most common programming languages, in particular, in terms of operator precedence and associativity.
-
Reformatting of expressions involving nested sub-expressions now results in significantly more legible structure. As an example (taken from translation of the
circle_sample
mission):run when ( MissionStartCommsCompleted and not ( FlagSamplingOngoing ) and CntSamples <= NumSamplers and SampleOptionsSet and not ( SampleCompleted ) and ( CntSamples == 1 count and ( UseOtherLRAUVSignals and not ( OtherLRAUVSampleStartReceived ) and elapsed ( ElapsedSinceStartOrLastFiring ) > MaxWaitFirstSample or ( not ( UseOtherLRAUVSignals ) and elapsed ( ElapsedSinceStartOrLastFiring ) > MaxWaitFirstSample ) ) or elapsed ( ElapsedSinceStartOrLastFiring ) > MaxWaitMustFire ) )
Other adjustments include:
- VS Code extension: For the "Format Document" command, now the user is notified when there's any syntax error that prevents the operation from proceeding.
- Though redundant, now an optional
bool
"units" is allowed after a boolean literal expression (e.g.,true bool
orfalse bool
). Such cases are found when translating from some XML missions, so this is intended to further facilitate the migration efforts. - Improved prettification of
not
expressions. - Fix in the XML-to-TethysL translator:
Any
"""
in a<Description>
content is now replaced with something else ('''
) in the generated TethysL (otherwise it would conflict with the regular"""
delimiter).
2.8.1¶
2023-02-28
- TethysL VS Code extension enhancements, including new commands for mission regression testing and xml/tx diffing to facilitate XML-to-TethysL conversions.
2.7.4¶
2023-02-22
- Fixes in the VSCode TethysL extension regarding the automatic download of its dependencies at activation time. (In particular, various fixes related with the download of Java when needed. For more details, see the VSCode extension page. Tested on Windows and Linux machines with no prior Java installation.)
2.6.21¶
2023-02-08
- Fixed a regression exposed when opening the lrauv-application codebase directly in VSCode. Thanks, Quinn, for reporting and testing!
2.6.20¶
2023-02-07
- Various code adjustments and documentation updates toward resuming the conversion of XML scripts to TethysL.
2.6.1¶
2023-02-06
- Several fixes in both the VSCode extension and the TethysL language server, so the system should now be functional on the Windows platform. Please let us know if you encounter any issues.
- Fixes and adjustments mainly related with the validation of arrays, that is,
arguments or output variables using the
foo[1..10]
syntax as supported by TethysL. As an example, one can now have an argument definitionCartridgeType[1..60]
and also an output variableCartridgeType
, which was previously not allowed.
2.4.7¶
2023-01-24
-
Several internal dependencies updated, and some fixes.
-
Note: The Java-based release is the recommended and fully tested mechanism to install the TethysL CLI. The binary releases continue to be auto-generated from the Java one, but, unfortunately, are proving unreliable in general. If you cannot use the Java based release, please let us know to determine possible solutions.
2.4.53¶
2023-01-23
-
TethysL CLI: Various internal adjustments, including the direct parsing of C++ module information to support the case of possibly using a different branch or tag of the lrauv-application codebase.
-
TethysL VSCode extension 2.4.5 (and requiring TethysL CLI 2.4.5+), now includes a command for the conversion of the currently open XML script to TethysL. See the Migrating from XML page for more details.
2.3.5¶
2022-04-26
-
Language: Related with the array/macro extensions, one can now use a static, simple addition/subtraction expression in two general cases:
-
Anywhere where a number expression can be used, e.g.,
$( $k - 1 ) count
Note: The
$( ... )
construct is to group the static expression itself. -
Array index expression, e.g.,
Latitude[$k - 1]
Note: The usual
[ ... ]
serves as the grouping construct for the static expression.
"Static" here means that the expression is only to be evaluated at compile time, with the resulting value used in the generated XML. The expression can only involve literal numbers (excluding
NaN
), and macro variable. Typically, this feature is to be used within the context of a macro.Here's an example (as used in
_examples/mbts_sci2.tl
):macro $k = 2..5 { aggregate Leg$k { run in sequence break if ( leg <= $( $k - 1 ) count ) assign in sequence { Lat[$k - 1] = NaN degree Lon[$k - 1] = NaN degree } } }
-
-
Validation adjustments for
macro
. - LSP: Added basic references handling. (For now, both references and definitions are handled in the same way.)
2.3.4¶
2022-04-18
- Now, explicit extension for all
insert
s is required. This avoids confusion given that both.tl
and.xml
inserts are supported, and also fixes an interlinking issue in the markdown generation. - Various adjustments and fixes (source reformatting, markdown generation).
2.3.3¶
2022-04-01
- TethysL 2.3.3 released (both CLI and VSCode extension).
2.0.5¶
2021-08
-
TethysL CLI 2.0.5 released, with binary executables available for Linux, macOS, and Windows. See CLI.
-
VSCode extension 2.0.5 published (requires TethysL CLI 2.0.5). See VSCode.
1.9.0¶
2021-06
-
TethysL CLI 1.9.0 and VSCode extension 1.9.0 released.
-
TethysL CLI: the
markdown
command (which supports the automatic generation of some content exposed here) has been expanded to also generate pages for Units and Universals. -
Various LSP related enhancements
- Smart handling of the
lrauv-application
"workspace" for resolution ofinsert
s. That is, in this case, the server determines the actual base mission directory to beMissions/
(instead of the workspace directory itself). - Improved go-to-definition functionality:
when dealing with a
lrauv-application
workspace, abehavior
resolution will now point to correspondingIF*.h
header file, and even to the specific line when resolving a particular setting.
- Smart handling of the
-
Language syntax adjustment: Quotes are not needed anymore for the filename in an
insert
construct. So, one now writesinsert Insert/NeedComms ...
instead ofinsert "Insert/NeedComms" ...
. -
Various validation improvements and fixes in the language engine.
-
XML generation now with
https://
for schema hrefs (instead ofhttp://
). This is a pretty standard best practice, and should not have any impact on the LRAUV. -
Reformatting of a
.tl
source now simplifies the behavior setting IDs (by removing the redundant prefix corresponding to the behavior itself).As an example, with this source (originally, a direct translation from some XML file):
behavior Trigger:PeakDetectVsDepth { run in sequence set Trigger:PeakDetectVsDepth.detect = Universal:mass_concentration_of_chlorophyll_in_sea_water set Trigger:PeakDetectVsDepth.timeWindowPeakReport = TimeWindowPeakReport set Trigger:PeakDetectVsDepth.windowLength = LowPassWindowLength set Trigger:PeakDetectVsDepth.medianFilterLength = MedianFilterLen set Trigger:PeakDetectVsDepth.shallowBound = PeakShallowBound set Trigger:PeakDetectVsDepth.deepBound = PeakDeepBound set Trigger:PeakDetectVsDepth.depthChangeThresh = DepChangeThreshForAttitudeFlip outputArg PeakChl = Trigger:PeakDetectVsDepth.peakDetect outputArg PeakChlDepth = Trigger:PeakDetectVsDepth.peakDepth outputArg PeakChlTemperature = Trigger:PeakDetectVsDepth.peakTemperature outputArg PeakChlLatitude = Trigger:PeakDetectVsDepth.peakLatitude outputArg PeakChlLongitude = Trigger:PeakDetectVsDepth.peakLongitude }
the reformatting results in the following, semantically equivalent but more legible:
behavior Trigger:PeakDetectVsDepth { run in sequence set detect = Universal:mass_concentration_of_chlorophyll_in_sea_water set timeWindowPeakReport = TimeWindowPeakReport set windowLength = LowPassWindowLength set medianFilterLength = MedianFilterLen set shallowBound = PeakShallowBound set deepBound = PeakDeepBound set depthChangeThresh = DepChangeThreshForAttitudeFlip outputArg PeakChl = peakDetect outputArg PeakChlDepth = peakDepth outputArg PeakChlTemperature = peakTemperature outputArg PeakChlLatitude = peakLatitude outputArg PeakChlLongitude = peakLongitude }
1.8.8¶
2021-05
-
The Tethysl CLI can now generate documentation pages for all
.tl
missions under a given directory. -
The
behavior
construct now always require a body and the specification of the execution mode, which now goes in the body and not in the "header".This is intended for consistency with other constructs.
Example, now:
behavior Guidance:Buoyancy { run in parallel set position = BuoyancyNeutral }
Previously:
behavior Guidance:Buoyancy in parallel { set position = BuoyancyNeutral }
-
Delimitation of
test_code
blocks is now with{{{
and}}}
.
2021-04
- TethysL engine undergoing enhancements mainly toward implementing the Language Server Protocol so the editing capabilities can be leveraged in diverse development tools. Initial focus on VS Code. Details will be captured in the vscode section.
(Older change notes here.)