Quick status update on Tightener: the project is still moving; I am slowly gearing up for a first alpha release.
A big chunk of work has been making the TQL glue language support ‘cooperative multitasking’.
Unlike JavaScript, where scripts are not running concurrently, but instead ‘pass the baton’ using constructs like Promises or async/await, TQL provides cooperative multitasking baked into the language, so multiple TQL scripts can run concurrently.
Next step will be to add a ‘yield()’ function to ExtendScript. The idea is that your ExtendScript would call ‘yield()’ frequently, and TQL scripts would then run a bit on each yield.
The use case I am working towards is around InDesign Server. One would use Tightener/TQL to coordinate things.
A web server could interact with the InDesign Server, and launch a TQL script containing an embedded ExtendScript on the InDesign Server.
The ExtendScript would be the ‘meat and potatoes’ script which does pagination, rendering, exporting,… whatever we typically do on InDesign Server.
The TQL script would continue to run concurrently with the ExtendScript and it would be able to easily send live feedback info to the web application (e.g. to show progress bars, update job progress, report failure or errors, interact with the user via the web browser,…)
This would make ExtendScript less of a ‘blocker’ and allow more lively behavior of the InDesign server.
Stay tuned…