TIL is a collection of Tcl-only libraries and utilities of general type. Most of these libraries and utilities originates from a number of projects where interaction was a key issue and where the applications being developed and deployed would run continuously for days and, thus, need to perform some level of introspection to check the liveness of the system in question.
In general, TIL has three major goals.
Facilitate the development, deployment and surveillance of Tcl-based distributed applications and systems.
Suppress the discrepancies between UNIX and Windows when it comes to administration and deployment.
Demonstrate a design principle that consists in writing network-aware simple components. These components handle a single and well-defined task and an application consists of several of these components, assembled on one or several machines.
I have made available a new release of the TIL. This is mostly a bug-fixing release with very few new additions. The only noticeable difference is that TIL will now work better when included in starpacks. The initialisation routines contain code that will automatically extract modules that contain platform dependent libraries to the local (temporary) disk, and amend the loading path so that the disk copy can be accessed.
28/04/2006A few new components and a big commit
I have finally found some time to synchronise my own working copy of the TIL with the CVS and performed a commit that fixes a number of bugs that I discovered under the past weeks. Apart from the long (unknown!) list of bug fixes, here is what you should know:
- autoconnect is a new module that sits on top of permclient and automatically disconnects (and reconnects) from remote servers after a short time period. I wrote the module when I needed to communicate from a handheld device to a main server and realise that keeping the connection open at all time wasn't the best solution in wireless environments (surprise!)
- The synchronisation module is now able to synchronise remote HTTP directory hierarchies. I have tested it against Apache, the tcl http daemon and the httpd from the TIL.
- I have tweaked the process module so that it is both able to use the binaries from sysinternals and the one from the pv project. The next step would probably to interface directly the pdh.dll library through using something similar to winapi.
TIL is now released at version 1.1. This is really an interim release which consolidates most of the modules and library components. Apart from what has been announced here in the past months or so, TIL now ships with late-comers components which API has not really stabilised yet. These are:
- hostalive: hostalive is a module on top of the ping command. It periodically checks for the "presence" of hosts through sending ICMP requests and reports when they are off-line (and on-line again). The module understands the ping command available on the three major platforms: Mac OSX, Linux and Windows. It is capable of being "nice" to the network through using low-pace ping commands.
- preprocessor: preprocessor is a module to do query/replace on files line by line, whenever these lines match a condition. This is early work than needs a number of improvements before stabilising.
- tax: tax is a tiny xml parser based on a parser from the Wiki. This implementation adds the possibility to get to know where tags are in the tree during parsing and is explained further in the Wiki.
Even more new components in CVS
The CVS repository has been updated with a number of bug fixes. Also a number of components and routines have been added to the library, these are present in the CVS version only for the time being. The main additions and modifications are the following:
- lockfile: lockfile is a module modelled after and compatible with the lockfile command on UNIX systems. The module is able to create semaphore files and to wait for the release of the lock. The module has undergone few testing and will perhaps be improved later.
- log rotation: the diskutil module now contains routines to automatically perform rotation of, typically, log files.
- starter: The service starter is now able to handle starting of Java processes in a better way. The syntax of the starting files is able to make the difference between arguments that should be given to the JVM (typically the classpath) and arguments that should be given to the process itself. In theory the same should apply to tcl and tk processes.
- synchro: The synchronisation module has an initial support for downloading the header of a remote file and deciding upon its synchronisation once the header has been downloaded (and its content partly examined).
- URL caching: Two new utilities have been added to the library. One visualises the content of a cache, the other is able to do some query/replace operations on the URLs of a cache.
- Log Viewer: A utility is able to remotely connect to the service starter and visualise in real-time the log file of the services that are under its control. The log viewer understands the "syntax" of the log files, i.e. logs that are generated by the logger library from the Tcllib.
New Components added in CVS
The CVS repository has been updated with a number of bug fixes. Also a number of components have been added to the library, these are present in the CVS version only for the time being. The new components are the following:
- accesscontrol: Access control is module modelled after the hosts.allow and hosts.deny access control mechanisms found on UNIX system. The module handles the control of a number of resources (by default the name of the application), from a number of sources. The implementation supports both ways found on UNIX systems: separating the access control rules in two files or having all control rules in one single file, where access or denial are specified by keywords.
- rescacher: Result cacher is a module meant to cache the result of invariant lengthy operations. The module stores the command called together with its arguments the first time it is called and the cached value will be returned next time the same command is called with the same arguments.
- uid: The unique identifier module uniquely associate identifier to strings throughout the lifetime of any applications. The module provides handles any number of pools of unique identifier associations.
Initial Release of the TIL
The TIL is now available in its first release to the TCL community. More information about the TIL can be found in the manual. A shorter introduction to the different components forming the TIL is also available.