Sunday, 28 November 2021
Jim Tcl version 0.81
ANNOUNCE: Jim Tcl version 0.81
Jim Tcl 0.81 has been released and is available from:
https://github.com/msteveb/jimtcl
Find out all about Jim Tcl at http://jim.tcl.tk/
CHANGES SINCE VERSION 0.80
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 quotesqlite3
- 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
andlist
indexes now accept “safe” integer expressionsloop
can now omit the start value- New
xtrace
command for execution trace support - Add
history keep
- Add support for
lsearch -index
andlsearch -stride
, the latter per TIP 351 lsort -index
now supports multiple indices- Add support for
lsort -stride
open
now supports POSIX-style access argumentssdl
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)
Steve Bennett (steveb@workware.net.au)
Comments >>>Saturday, 02 January 2021
SDL2 - Jim Tcl sdl extension update
Since the early days of Jim Tcl, the included sdl extension has provided an example of how to integrate an external library as a Jim Tcl extension.
However this extension had not been updated for some time, and did not support the newer SDL2 API.
Now the sdl extension has been updated to support both SDL and SDL2, and also includes some additional features.
Building the extension
configure uses pkg-config to find the required libraries, so be sure to have SDL2_gfx (and optionally SDL2_ttf) installed where pkg-config can find them.
$ pkg-config --modversion SDL2_gfx 1.0.2
Build the sdl extension as a module by specifying it at configure time.
$ ./configure --full --with-mod=sdl ... Checking for SDL2_gfx ...1.0.2 Checking for SDL2_ttf ...2.0.15 Extension sdl...module ... $ make ... CC jim-sdl.o LDSO sdl.so ...
Testing the extension
Some test scripts are available in the examples/ directory.
$ ./jimsh examples/sdltest.tcl
$ ./jimsh examples/sdlevents.tcl
Using the extension
Create a window (sdl screen) with the sdl.screen
command
. package require sdl 1.0 . set s [sdl.screen 640 480 "Window Title"] ::sdl.surface4
The returned handle provides a number of subcommands. Help is available for each subcommand.
. $s -commands free flip poll clear pixel circle aacircle fcircle rectangle box line aaline font text . $s -help fcircle Usage: ::sdl.surface4 fcircle x y radius red green blue ?alpha? . $s fcircle 100 100 30 200 0 0 . $s flip
Colours in SDL use separate red, green and blue components. These are specified as integers from 0 to 255. Similarly, the alpha (opacity) is specified from 0 (transparent) to 255 (opaque).
The image commands are as follows:
clear
- clear the entire window to the given colourpixel
- draw a single pixelcircle
- draw a circle (outline)aacircle
- draw a circle (outline) with antialiasingfcircle
- draw a filled circlerectangle
- draw a rectangle (outline)box
- draw a filled rectangleline
- draw a lineaaline
- draw a line with antialiasing
If the SDL2_ttf package is available, basic text support is also provided.
font
- load a TrueType font from a file with the given point sizetext
- draw text with the currently loaded font
Some notes on text:
- Only one font may be loaded at a time
- The specified font may not support all unicode glyphs.
- To display utf-8 text, Jim Tcl must have been built with –utf8
There are several non-drawing commands.
free
- close the window and free the handle (the same as:rename $s ""
)flip
- update the window to match graphics changes, then clear the background buffer and poll for eventspoll
- update the window to match graphics changes, then poll for events
Note that the graphics window is double (or triple) buffered. This means that any
graphics changes are not displayed until flip
or poll
is used.
In general, you should display an entire frame and then call flip
.
In order to keep the SDL window responsive, it is necessary to pump the SDL event loop.
Both flip
and poll
can be used for this. Currently the only SDL event that is recognised is the SDL_QUIT event.
When this event occurs, flip
and poll
return JIM_EXIT. By default, this will exit the interpreter.
A typical script that simply displays a single image will look like:
... draw the SDL image ... $s poll { sleep 0.25 }
This will run the SDL event loop and then eval the given script. If SDL_QUIT is ever received, the script will exit.
See examples/sdlevents.tcl
for an example of how to integrate the SDL event loop
with the Jim Tcl event loop.
Steve Bennett (steveb@workware.net.au)
Comments >>>Saturday, 31 October 2020
Jim Tcl version 0.80
ANNOUNCE: Jim Tcl version 0.80
Jim Tcl 0.80 has been released and is available from:
https://github.com/msteveb/jimtcl
Find out all about Jim Tcl at http://jim.tcl.tk/
CHANGES SINCE VERSION 0.79
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.80
return
-level 0 -code xxx now returns the correct resultregexp
- fix an issue with failed optional groupoo
- fix an issue when no class variables are givenoo
- fix super invocation with multiple inheritance levelstailcall
- fix to avoid growing the C stack frameregsub -all
with \A now works correctlyscan
- fix an issue with chars vs bytes in utf-8 modeaio
- fix eventloop and eof for ssl connectionslsearch -regexp
- fix the case where the pattern begins with a dashlsearch -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
andstring compare
now support embedded nullsstring 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 forpackage list
file rootname
,file dirname
are now more consistent with Tclaio
- add Server Name Indication (SNI) ssl supportaio
- add socket pty support- The
0d
radix prefix is now supported for decimal (base 10) - String comparison operators
lt
,gt
,le
andge
are now supported dict getwithdefault
(and the aliasdict getdef
) are now supported- Build has coverage support, and test coverage is now over 90%
- Performance improvements in a number of areas
Steve Bennett (steveb@workware.net.au)
Comments >>>Monday, 03 February 2020
Move primary repo to github
ANNOUNCE: Jim Tcl is moving to github
As repo.or.cz has been down for some time, the mirror at github has now been designated as the primary repository.
https://github.com/msteveb/jimtcl
Steve Bennett (steveb@workware.net.au)
Comments >>>Wednesday, 20 November 2019
Jim Tcl version 0.79
ANNOUNCE: Jim Tcl version 0.79
Jim Tcl 0.79 has been released and is available from:
https://github.com/msteveb/jimtcl
Find out all about Jim Tcl at http://jim.tcl.tk/
CHANGES SINCE VERSION 0.78
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.79
aio
- Fix closing stdin in bootstrap jimshclock scan
- Unspecified fields use the current date/time- Fix linenoise assertion failure on Windows
file
- Improved support for trailing slashes in pathnamesregexp
,regsub
- Various fixes in UTF-8 mode$(...)
syntax now properly returns non-error codes
Features added in version 0.78
file
- Addmtimeus
for microsecond resolutionfile
- Add missingsplit
subcommandlreplace
- Implement TIP #505aio
- Add dgram unix socket supportaio
- Add support forlock -wait
aio copyto
- Significantly improve performanceaio tty
- Allow setting echosignal
- Addblock
for blocking signals withSIG_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 forcesSIGPIPE
disposition toSIG_DFL
- Update autosetup to v0.6.9 with optimised insert/delete
Steve Bennett (steveb@workware.net.au)
Comments >>>Sunday, 01 July 2018
Jim Tcl version 0.78
ANNOUNCE: Jim Tcl version 0.78
Jim Tcl 0.78 has been released and is available from:
http://repo.or.cz/w/jimtcl.git or https://github.com/msteveb/jimtcl
Find out all about Jim Tcl at http://jim.tcl.tk/
CHANGES SINCE VERSION 0.77
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.78
local
- Fix crash when local command is deletedhistory
- When creating ~/.jim_history, set permissions to 0600 for securityexec
- Fix windows exec with empty or unset envexec
- Fix check for|
and|&
- jim.c - Fix Object leak in zlib support
signal
- Restore default signal handling on interp exitdict
- Fix [dict values] with duplicate values- Fix ‘/’ command, divide by zero
expr
- Replace expression engine to fix a number of problemszlib
- Various fixeslsort -unique
- Fix case with no duplicatesaio 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
- Fixmethods
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
- Addtty
for termios settingsaio
- Addsockopt
forbroadcast
,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 supporthistory completion <cmd>
- Add support for
-commands
to many commands - Add pkg-config support -
jimtcl.pc
clock
- Add-gmt
option toformat
andscan
tree
- Allow nodes to be deleteddefer
,$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 interpretersos.wait
is nowwait
aio ssl
now upgrades the current channel rather than creating a new channel- Update autosetup to v0.6.8
Steve Bennett (steveb@workware.net.au)
Comments >>>