ANNOUNCE: Magicsplat Tcl/Tk 1.13.0 for Windows
Version 1.13.0 of the Magicsplat Tcl/Tk 8.6.13 for Windows binary distribution is released with new packages and updates.
所以釋出了一個新的版本。
ANNOUNCE: Magicsplat Tcl/Tk 1.13.0 for Windows
Version 1.13.0 of the Magicsplat Tcl/Tk 8.6.13 for Windows binary distribution is released with new packages and updates.
所以釋出了一個新的版本。
ANNOUNCE: BWIDGET 1.9.16 released
這個版本修正了以下事項:
Cudos to Wolfgang Kechel to fix one bug: Prevent multiple drops, when
movement while drop is processed
Tcl/Tk 8.6 釋出了一個新的 patch 版本,8.6.13,下面是改變的總結。
Summary of Changes since Tcl/Tk 8.6.12:
--------------------------------------
This is a patch release, so it primarily includes bug fixes and corrections
to erratic behavior. Highlighted changes are noted below. The changes file
at the root of the source tree contains a more complete list. The Timelines
of all changes are online.
http://core.tcl-lang.org/tcl/timeline
http://core.tcl-lang.org/tk/timeline
* [TIP 622] Tcl_GetRange defined for index args < 0
*** POTENTIAL INCOMPATIBILITY ***
* [TIP 599] [tk::build-info] when paired with Tcl 8.7+
* Fallback initialization of ::env(HOME) from USERPROFILE
* text: direct mouse events to insert mark, not current (textTag-15.4)
*** POTENTIAL INCOMPATIBILITY ***
* New color for Mac: SelectedMenuItemTextColor
* [tk_fontchooser] improvements
* Consistent cross-platform polygon fill
* Fix crashes or hangs in...
- extract signed int operand from bytecode on Plan9
- invalid bytecode in lambda (see apply-10.1)
- writing ill-formed utf-8 (see io-60.1)
- [menu .m -type {}]
- Mac: destroy and re-create toplevel after dragging
- Geometry requests on window not fully created or destroyed
- [ttk::combox .foo] current end
- canvPs-5.1
- canvWind-2.1
- textWind-18.3
- unixW-50.4
- bind-37.1
* Fat binary compiles on Mac M1
* Portability to CHERI-enabled Morello processor
* Floating point rounding portability to x86 Alpine Linux (musl libc)
* Restore Tk builds on MacOSX 10.11 (El Capitan)
* Enable Tk builds on Windows ARM
* Improved cygwin path support in Tk.
* Handle deprecation of OSTypes by MacOSX.
* Mac: Mouse events not delivered to dialog with global grab.
* Mac: Stop beeping when clicking outside comboboxes.
* Win: Adapt pointer warp and [tk busy] for better multi-screen support
* Mac: When a toplevel is minimized, pass focus to another toplevel.
* Mac: fix image positions in canvas screenshots.
* GIF with multiple images may reuse transparent color
* PGM reads with graylevel > 255
* Fixed broken optimization of smoothed line redraws
* Mac: ttk::notebook loses control of tab content
* Mac: enable removal of embedded windows from text widget
* Win, X11: improve (ttk) menubutton menu position
* <Enter> event after one toplevel is destroyed (event-9.[12])
* Execution order when compiled: try second finally [first] (error-9.6)
* CR-LF split between packets/buffers/reads (tests io-29.36.*)
* [string is integer 18446744073709551615]
* ttk::label defaults for -justify/-anchor (test ttk-9.9)
* Win: middle mouse click blocks system clipbord
* Avoid invalid <<TreeviewSelect>> events
* Many code changes to avoid undefined behavior or integer overflow.
* Updated keysym tables to latest X11R6
* Updated bundled packages, libraries, standards, data
- Itcl 4.2.3
- sqlite3 3.40.0
- Thread 2.8.8
- TDBC* 1.1.5 - restored MariaDB support in tdbcmysql
- http 2.9.8 - numeric IPv6 in URL, connection reuse after code 101
- platform 1.0.19 - Ventura support
- tcltest 2.5.5
- libtommath support/1.x branch
- zlib 1.2.13
- Unicode 15
- tzdata 2022e
- msg catalog updates: Chinese, Finnish, Russian, Esperanto
Announcement: Next Scripting Framework 2.4.0 available
NSF (Next Scripting Framework) 釋出了一個新的版本 2.4.0,詳細的改變可以看公告。
Write a script to list Last Sunday of every month in the given year.
#!/usr/bin/tclsh
#
# Write a script to list Last Sunday of every month in the given year.
#
proc lastDay {month year} {
set days [clock format [clock scan "+1 month -1 day" \
-base [clock scan "$month/01/$year"]] -format %d]
}
proc getLastSunday {baseDate} {
set base [clock scan $baseDate -format "%Y%m%d"]
set day_of_week [clock format $base -format %u]
# Sunday may report as 0 or 7.
# If 7, it is not necessary to adjust.
if {$day_of_week != 7} {
set timestamp [clock scan "12:00 last sunday" -base $base]
} else {
set timestamp $base
}
return [clock format $timestamp -format "%Y-%m-%d"]
}
if {$argc >= 1} {
set year [lindex $argv 0]
} else {
set year 2022
puts "Set year to 2022."
}
for {set i 1} {$i <= 12} {incr i} {
set lday [lastDay $i $year]
set ltime [format %04d%02d%02d $year $i $lday]
set sday [getLastSunday $ltime]
puts $sday
}
Apache Rivet 釋出了 3.2.x 系列的新版本,3.2.2。
下面是這個版本的更動:
在瀏覽 FreeDOS 網站的時候,我發現了 Tcl 8.6.12 for DOS 這個訊息(由 Ben Collver 提供的 patch release),檔案有被 mirror 一份到 Ibiblio /files/devel/tcl。
很有趣的事情,DOS 的市場份額可能很小,但是還是一直有人使用。
Change:
* Remove TCL_ARRAY optional code, it hasn't been updated or maintained in years.
釋出的原始碼包裡 configure.in 裡的版本還是 2.7.7,如果使用者會在意這件事的話,可以自己修正這件事(在 configure.in 檔案將 2.7.7 改為 3.0.0,然後執行 autoconf, ./configure 與 make)。
最近的 openSUSE build service 在 devel:languages:tcl/tcl 對 Tcl 套件做了修改,移掉了 Tcl source code 中關於 SQLite3 套件的部份,同時建立與 sqlite3-tcl 套件的依賴性(而這個套件來自於 sqlite3)。
我覺得這似乎有彼此依賴的問題(不確定),不過這樣我就必須把 SQLite3 套件也做一個連結到我 openSUSE build service 的計畫中,才能夠解決其它套件的相依性問題(因為現在 Tcl 會對 sqlite3-tcl 套件產生依賴)。
只是做一點程式練習。
You are given possible permutations of the string 'PERL'.
PELR, PREL, PERL, PRLE, PLER, PLRE, EPRL, EPLR, ERPL,
ERLP, ELPR, ELRP, RPEL, RPLE, REPL, RELP, RLPE, RLEP,
LPER, LPRE, LEPR, LRPE, LREP
Write a script to find any permutations missing from the list.
#!/usr/bin/env tclsh
proc permutations { list size } {
if { $size == 0 } {
return [list [list]]
}
set retval {}
for { set i 0 } { $i < [llength $list] } { incr i } {
set firstElement [lindex $list $i]
set remainingElements [lreplace $list $i $i]
foreach subset [permutations $remainingElements [expr { $size - 1 }]] {
lappend retval [linsert $subset 0 $firstElement]
}
}
return $retval
}
set compare [list PELR PREL PERL PRLE PLER PLRE EPRL EPLR ERPL \
ERLP ELPR ELRP RPEL RPLE REPL RELP RLPE RLEP \
LPER LPRE LEPR LRPE LREP]
set result [list]
foreach r [permutations [list P E R L] 4] {
set nr [join $r ""]
lappend result $nr
}
set result [lsort $result]
set compare [lsort $compare]
set len [llength $result]
for {set i 0} {$i < $len} {incr i} {
set ri [lindex $result $i]
set ci [lindex $compare $i]
if {[string compare $ri $ci] != 0} {
puts $ri
break
}
}
這是一個 bug fix 的版本,不過釋出的原始碼包裡 configure.in 裡的版本還是 2.7.7,如果使用者會在意這件事的話,可以自己修正這件事(在 configure.in 檔案將 2.7.7 改為 2.8.0,然後執行 autoconf, ./configure 與 make)。
我有點驚訝,Apache ECharts (JavaScript Visualization library) 有人嘗試撰寫 Tcl wrapper。目前看起來才剛起步,不過有一些命令可以使用了,我想有人嘗試是一件好事。