This release contains bug fixes plus a number of additional features. A
summary is below. See git for the full changelog.
Thanks to everyone who contributed to this release.
Bugs fixed in version 0.81
- info complete - return 0 if the script is missing an end quote
- sqlite3 - return integers as 64 bit values, not 32 bit
Features and improvements added in version 0.81
- New redis client extension
- expr - TIP 582 - support comments in expressions
- Many commands now accept “safe” integer expressions rather than simple
integers: loop, range, incr, string repeat, lrepeat, pack, unpack, rand
- string and list indexes now accept “safe” integer expressions
- loop can now omit the start value
- New xtrace command for execution trace support
- Add history keep
- Add support for lsearch -index and lsearch -stride, the latter per TIP 351
- lsort -index now supports multiple indices
- Add support for lsort -stride
- open now supports POSIX-style access arguments
- sdl extension now supports SDL2, and basic text support is added as well
as polling support
- ABI version checking is now available to allow dynamic modules to verify
they are loaded into a compatible interpreter
Possible incompatibilities in version 0.81
- If the --compat configure option is not set, expr now only allows a single
argument (per TIP 526)
Jim Tcl version 0.80:
---------------------
Bugs fixed in version 0.80
return -level 0 -code xxx now returns the correct result
regexp - fix an issue with failed optional group
oo - fix an issue when no class variables are given
oo - fix super invocation with multiple inheritance levels
tailcall - fix to avoid growing the C stack frame
regsub -all with \A now works correctly
scan - fix an issue with chars vs bytes in utf-8 mode
aio - fix eventloop and eof for ssl connections
lsearch -regexp - fix the case where the pattern begins with a dash
lsearch -command - handle the case with too few args
Disallow renaming a local proc with upcall to avoid inconsistent behaviour
Features and improvements added in version 0.80
Dictionaries now preserve insertion order
string map and string compare now support embedded nulls
string match and other glob matches now support embedded nulls
Variable and proc names now support embedded nulls
Interactive mode now prints results containing embedded nulls
Generate a build warning if system is non-Y2038 compliant
package names added as an alias for package list
file rootname, file dirname are now more consistent with Tcl
aio - add Server Name Indication (SNI) ssl support
aio - add socket pty support
The 0d radix prefix is now supported for decimal (base 10)
String comparison operators lt, gt, le and ge are now supported
dict getwithdefault (and the alias dict getdef) are now supported
Build has coverage support, and test coverage is now over 90%
Performance improvements in a number of areas
Jim Tcl version 0.79:
---------------------
Bugs fixed in version 0.79
aio - Fix closing stdin in bootstrap jimsh
clock scan - Unspecified fields use the current date/time
Fix linenoise assertion failure on Windows
file - Improved support for trailing slashes in pathnames
regexp, regsub - Various fixes in UTF-8 mode
$(...) syntax now properly returns non-error codes
Features added in version 0.78
file - Add mtimeus for microsecond resolution
file - Add missing split subcommand
lreplace - Implement TIP #505
aio - Add dgram unix socket support
aio - Add support for lock -wait
aio copyto - Significantly improve performance
aio tty - Allow setting echo
signal - Add block for blocking signals with SIG_IGN
Add built-in JSON support with the json extension
Improve performance when indexing UTF-8 strings
Other changes
Documentation updates to improve consistency, remove obsolete commands, add some missing commands
exec no longer forces SIGPIPE disposition to SIG_DFL
Update autosetup to v0.6.9 with optimised insert/delete
Jim Tcl version 0.78:
---------------------
Bugs fixed in version 0.78
local - Fix crash when local command is deleted
history - When creating ~/.jim_history, set permissions to 0600 for security
exec - Fix windows exec with empty or unset env
exec - Fix check for | and |&
jim.c - Fix Object leak in zlib support
signal - Restore default signal handling on interp exit
dict - Fix [dict values] with duplicate values
Fix ‘/’ command, divide by zero
expr - Replace expression engine to fix a number of problems
zlib - Various fixes
lsort -unique - Fix case with no duplicates
aio tempname - Fix a crash when the template is invalid
Tcl compatibility - Error on extra characters after close brace
eventloop - Return from callback is not an error
oo - Fix methods for superclasses
Various refcount and edge case fixes found by fuzz testing
Features added in version 0.78
Add support for utf-8 wide characters
aio - Add tty for termios settings
aio - Add sockopt for broadcast, tcp_nodelay, etc.
utf-8 - Update UnicodeData.txt to 9.0.0
jimsh - Add support for jimsh -
jimsh - Scriptable command-line completion support via tcl::autocomplete
history - Add autocompletion support history completion <cmd>
Add support for -commands to many commands
Add pkg-config support - jimtcl.pc
clock - Add -gmt option to format and scan
tree - Allow nodes to be deleted
defer, $jim::defer - Allow scripts to run on proc exit
eventloop - Support sub-millisecond timer resolution
Support lambda even if references are disabled
Performance - Improve a number of common cases through caching
signal, exec, wait, pid, pipe - Many improvements
build - Support --silent-rules, and enable by default
regexp - Implement class shorthand escapes in brackets
linenoise (jimsh) - Add ^Z (SUSP) support
linenoise (jismh) - Update to support multiline mode
Other changes
signal - Remove the signal command from child interpreters
os.wait is now wait
aio ssl now upgrades the current channel rather than creating a new channel
Update autosetup to v0.6.8
Local changes:
- add test target
- build and install optional modules (right now: oo, tree, binary,
readline, rlprompt, mk, tclprefix, sqlite3, zlib, win32)
- install shared library
- simplify usage of the GitHub framework
- use --docdir instead of the SUBST framework
Upstream changelog
==================
CHANGES SINCE VERSION 0.76
This release contains some bug fixes plus a number of additional features. A summary is below. See git for the full changelog.
Thanks to everyone who contributed to this release.
Bugs fixed in version 0.77
exec - better handline of pipeline abnormal termination
exec - fix append redirection on Windows
regsub - fix substitution with trailing backslash
expr - improved mathfunc handling and pow/**
chained tailcalls were not always being run
Features added in version 0.77
Add support for configure --docdir=...
Add support for jimsh --help
Add support for booleans in string is and expressions (true, false, on, off, yes, no)
aio - add sync, openssl bindings, posix locking
expr - add support for atan2, hypot and fmod
regexp, regsub:
Add support for \D, \W and \S
Add partial support for \A, \Z
Add support for all character classes: [[::blank:]], [[::xdigit::]], etc.
Update included sqlite3 to v3.14.1
Add $tcl_platform(engine)
Add basic (optional) zlib support
Add interp child interprester support
oo:
Add support for constructor, runs on new object creation
Add support for unknown method
Add Travis and AppVeyor continuous integration support
Use pkg-config in configure to find packages if possibe
Steve Bennett (steveb@workware.net.au)
-- http://jim.tcl.tk/fossil/doc/www/www/news/
Jim is an opensource small-footprint implementation of the Tcl programming
language. It implements a large subset of Tcl and adds new features like
references with garbage collection, closures, built-in Object Oriented
Programming system, Functional Programming commands, first-class arrays and UTF-
8 support. All this with a binary size of about 100-200kB (depending upon
selected options).
The Jim core is very stable. Jim passes over 3000 unit tests and many Tcl
programs run unmodified. Jim is highly modular with the possiblity to configure
many components as loadable modules, or omitted entirely. A number of extensions
are included with Jim which may be built as loadable modules.