Ticol Tcl - Bugs and Issues

Good bug reports are, welcomed although as this is a hobby project I can't guarantee a fix time or detailed reply. When submitting a bug report, try to be as detailed as possible, include copies of any relevant scripts and, if possible, screenshots. Keep the total email size < 1Mb

Before submitting a bug report, check out the "Tips and Tricks", "Ticol Workarounds" and "Troubleshooting and Common Mistakes" sections of the manual Bug reports or change/feature requests may be sent to 'ticol' @ this domain

Features Not Fully Implemented

Description Comments
Dictionaries These have not been a priority so [dict] is feature incomplete and may have bugs.
Finishing [dict] is very low priority work
Multi-threading The underlying design and architecture of Ticol does not readily lend itself to multi-tasking but an experimental compile has been produced which can multi-task simple scripts. This version is far from reliable
[after] Currently unthreaded in the release version
[join] Almost complete.  Some work needed
Namespaces Emulation only. It is very unlikely that a full implementation will be done as emulation is currently enough
[big] floating point Apart from a small number of subcommands, [big] is an integer only plugin. Floating point numbers would be useful
[big] size limit [big] numbers are currently subject to a 4,000 digit hard limit
[array unset] Does not accept a glob search spec
[ls] [ls] is incomplete
[binary] Only a few subcommands implemented. More may follow
[glob] Incomplete


Problematic Features

Description Comments
Escape sequences Constant sequences such as \n are handled by the Macro PreProcessor but literal backslash characters and escaped double-quotes are problematic.
Workarounds for double-escaping are to use the [escape] and [unescape] commands to control escape handling
Strings within strings You cannot embed strings within strings or embed in certain other exceptional cases. However, braces can be used to group characters as a string.
set a("with spaces") Hello
- is allowed but embedding a quoted string within an assumed string ...
set q a("with spaces")
will result in a malformed string, e.g. 'a("with spaces)'
A string may be assigned with literal, escaped double-quotes and these may be unescaped on use
set q "a(\"Hello world\")"
puts [unescape $q]
[calldll_*] byte widths Currently widths can be specified using a trailing colon separator. This is far from ideal and another solution will have to be found
[option expression] If the incorrect mode is selected for the language style being used then loops may not terminate
[option expression] gives a programmer the choice of using Tcl or [expr] syntax for flow-control structures such as [if], [for], [while] etc. This can be changed dynamically at runtime
Hash, # character A hash character may be used in quoted strings. Use the escape sequence \#
A hash character encountered outside of a double-quoted string will be interpreted as a comment
You may also use [chr 35] to emit a #
[lmap] Works slightly differently to ActiveState tcl. Investigating a rewrite to make fully-compatible


Common Tcl Features Not Implemented

Description Comments
Unicode / Multi-Byte Character Set Strings etc. From the outset there was no requirement to handle international character sets and there was a desire for maximum reuse of existing legacy C++ code. The requirements for the project were satisfied by producing an ANSI-only language capability
Native Unicode and foreign language support will never be implemented
Regular Expressions There was no immediate requirement for regex support. I wanted to write as much as possible of the C++ library code from the ground upwards and I had no working regex library code. The [scan] command is often a useful substitute. I have an experimental regex code base but this is not release quality
"Scientific" format numbers e.g. 2E85. These have not been required but could probably be implemented via the Macro PreProcessor
[lset] This is currently a string operation, partnered with [rset]. A rewrite is planned
Multi-line paste into the CLI This would be a desireable feature which may get implemented when time can be found
Full socket library commands I didn't really need these and any socket-related commands have been implemented as specialised routines. e.g. SMTP mail, PING
Some [file] subcommands A small number of less-useful [file] subcommands have been omitted
Classes/objects Classes (proper) are not implemented. However, class-like behaviour can be emulated
CLI Editor As Notepad++ is such a nice editor there has been no reason to invest time in producing a direct CLI editor which would not get used
Bytecode compiler Maybe one day when I learn more about this? ActiveState Tcl fills the need for a fast, optimised Tcl script language
Tk GUI support Not required and not implemented
[interp] Mooted but not yet implemented. May be added as a plugin as I can't see this being terribly useful
Syntax checking Pre-execution syntax checking is either minimal, via the MPP or absent


Known Major Bugs

Description Comments
Not logged Currently all known bugs are logged in the development source
Any major new bugs which cannot be resolved will be recorded here


Back | Top