Religious Wars: Perl, Python and Tcl in the EDA community
The anual State Of Tcl presentation by our Release Manager
We describe an initiative to simplify drastically the compilation of Starkit basekits for Unix and Windows, which excises no-longer-needed code and relies wholly on Tcl tools for build scripts. Starkit code providing once-essential features (e.g., reflected channels, zlib compression, encoding configuration) is now redundant thanks to Tcl 8.6's feature set, and is eliminated. Our changes facilitate a professional standard of security auditing and accountability of basekit contents, make it easier to upgrade separate library components, and will ease future support of new platforms. Tcllib's TEPAM package was used to create a human-friendly command line wrapper, and Ghostscript's tmake.tcl (a partial clone of standard make) was used as a flexible and configurable backend compile engine.
Health IT Lab developed a fast and efficient machanism of auto-updating for client-server software, by leveraging the sync function in Starkit Developer eXtension kit. The mechanism has been applied to a data quality toolkit software (DQT) with high performance.
My talk will demonstrate how to employ Tcl to implement a
high-availability distributed system with automatic failover. Using
zookeepertcl library and the Zookeeper project's leader election
recipe, I will discuss the design decisions necessary for turning
these generic building blocks into a concrete system. As part of my
demonstration, several best practices and potential pitfalls of the
zookeepertcl library will be noted. Primarily, though, the talk will
answer a number of questions that arise when using Zookeeper for
implementing a distributed system in Tcl. Throughout my talk,
discussion will be informed by my experience in building such a system
Clay is an attempt to take a career's worth of decent design ideas and condense them into a single language tool. Clay provides a vocabulary to describe the complex interactions possible in TclOO. It also allows programmers to harness that complexity in a deterministic fashion.
Comdb2 is a distributed database system designed for geographical replication and high availability. In contrast with the latest trends in this field, Comdb2 offers full transactional support, a standard relational model, and the expressivity of SQL. Moreover, the system allows for rich stored procedures using a dialect of Lua. Comdb2 implements a serializable system in which reads from any node always return current values. Comdb2 provides transparent High Availability through built-in service discovery and sophisticated retry logic embedded in the standard API. In addition to the relational data model, Comdb2 implements queues for publisher-to-subscriber message delivery. Queues can be combined with table triggers for time consistent log distribution, providing functionality commonly needed in modern OLTP.
Visual Studio Code is an increasingly popular tool for software developers. The IDE supports linting, debugging, intellisense, and formatting for languages such as python, node, C#, PHP and others.
Extensions exists for Tcl language support (mainly syntax highlighting and snippets), but no debugging extensions are available.
We have created a new extension for Visual Studio Code that supports debugging Tcl in the Visual Studio Code editor. The extension is built using the debug adapter protocol defined by Visual Studio Code with Tcl debug logic from the Tcl Pro Debugger. The Visual Studio Code Tcl debugger currently supports setting breakpoints, stepping through code, and variable and stack display in a modern IDE.
We are working to add more features and will ultimately publish the debug adapter for public contributions and comments.
Our students develop client-server and multiuser software prototypes in the scope of applied research projects. These prototypes are used by the professionals in the field which results in their further refinement and improvement. Tcl/Tk ecosystem which we define as the language, libraries, sqlite3, and Fossil have proved to be highly beneficial. The pros were ease of learning and using the language, database, and the versioning system, an integration among these components, ability to develop GUI in the same language, and the event loops and threads in Tcl. The cons were perceived lack of popularity, libraries, and information resources.
The text widget is an incredibly powerful tool. With specialized tags and bindings it can be more powerful. This paper will discuss extending the emacs editing features, adding full font control (as done in WYSIWYG word processors) and import/export functionality.
The management of the lifetime of an object in Tcl presents a number of unique challenges.
Popeye combines Tcl, a custom C++ tcl extension, and the sqlite extension to provide real-time access to the combined feed of flight events at FlightAware.
Against the background that all future air traffic participants are
requested to act as System Wide Information Management (
communicating sub-systems by the future Single European Sky Air
Traffic Management Research (
SESAR) SWIM 'Intranet for ATM' concept,
SWIM compliance of future ATM information sharing software modules is
of utmost importance. The paper describes Tcl/Tk usage in this
context, focusing on a prototype referring future space / air traffic
Sqlbird obtains table definitions from PostgreSQL, defines corresponding tables in SQLite, and with reasonable efficiency replicates the tables from PostgreSQL to SQLite, keeping them updated according to a defined schedule, making SQLite databases available to concurrent readers who can then perform full SQL queries on them (including JOIN, etc), accessing data mirrored from the PostgreSQL database. Clients can often do work without needing to communicate with PostgreSQL at all.
Most SQL queries that work in Postgres will run unmodified in SQLite, as long as the referenced tables are present. Sqlbird's apex user function, sqlbird::select, will try the SQL query first in SQLite and fall back to PostgreSQL if it doesn't work. This gives developers functionality akin to superbird, but letting them stay with SQL rather than having to specify queries in the speedtables query language.
Sqlbird consists of a package and a few programs. Most of the work is done through calls to functions defined in the sqlbird package. This talk covers how sqlbird works, how it is configured and operated, various design decisions that were made, and details experiences from using it in commercial production.
The state of the TCA operating the conference
The Bounty Program was intended to speed up the pace of development and evolution of the Tcl language. Some bounties were successfully fulfilled, resulting in bug fixes, enhancements, and performance improvements to the Tcl language itself or to one of a number of popular and widely used packages, while others were not attempted or the efforts did not meet the conditions of success.
In this talk we'll go over the bounties that have been fulfilled and what the results have been, discuss some of the ones that weren't fulfilled, what happened and any lessons learned, and we'll introduce several new bounties for 2018/2019.
Tcl @ FlightAware
HealthIT lab at UMBC leveraged the easy relationship between SQLite and Tcl/Tk to develop a migration package which maintains database schema migration by using Tcl on the sqlite database. The package is to update or revert the database's schema to a newer or older version.
Migration of database schema in software used to be hard coded in the program, which reduced the flexibility to change, manage, and track the evolution of database schemas. To fulfill this gap, a migration package was developed to manage schema alterations in Sqlite3 database which allows generating and executing forward and backward database migration scripts.
Schema migration refers to the management of incremental or reversible changes of a relational database schema, such as table creation and drop, column addition and removal, and table renaming. Functions are created in the migration package to fulfill the requirements of these changes, with generation of Tcl script files.Each function is designated to a database schema change action, and the script generated for it includes an "Up" function and a "Down" function. The "Up" function updates the database while the down function reverts the database to an older state.
The name of these script files include timestamp along with the associated action and the name of table or column modified. The time stamp in the name of files can help execute a series of data schema changes in time sequence, both in forward and invertedorder. Thus, executing scripts in order with "Up" fucntions can establish the database, and executing scripts in inverted order with "Down" functions can degenerate the database.
The migration package was included in a software developed in Health IT Lab. The migration scripts were integrated into the code as per their requirement which constructed the expected database scenarios, and enabled data schema change without damaging the data. With progression and evolution of the application, the data model also evolved and it was handled easily by running migration scripts.
Some of the migration examples are as follows: The Up script of Add Table function for a particular entity introduces that table into the data model while the Down script of Add Table function removes the particular table from the schema if it exists and reverts the database to an older version. Similarly a Up script of Delete Table for a particular entity successfully deletes the table from the database while Down script of Delete Table fucntion inserts the table back into the database and constructs an earlier state of the database.
Database Schema Migration is an essential process in agile software development. It helps adapting the database with evolutions in requirements. The database schema can be updated to a new state or reverted to an earlier state and its evolution can be tracked. The utilization of the schema migration removes the need to fully redesign data models up-front with every little alterations in the database. The primary purpose of schema migration is to handle database evolutions without impacting the existing data in the database. However preservation of data in general is not guaranteed as schema changes like column deletion can affect data negatively.
This paper explores the internals of the new httpd module in tcllib. It will explain the development path from the original tclhttpd, and why objects, coroutines, and the demands of ever more complex web applications drove this new approach.
The paper will also explore the development of the httpd kernel into a full fledged web server, Toadhttpd. The paper will also explore embedding the httpd module into an existing application (the Integrated Recoverability Model) as a documentation viewer. The paper will also outline how the httpd module will be used in upcoming projects as a supercomputing job dispatch hub.
I would like to present a talk on cpptcl. https://github.com/flightaware/cpptcl