2016-07-22 51 views
1

到目前爲止,我已經使用TCL 8.6了,可是最近我不得不搬回到8.0,因爲我使用的程序只支持8.0哪些命令,並基於該版本在功能TCL不支持

問題是,我無法找到一個文件或一個比較新的命令和功能之間有什麼是兼容的,哪些不是

是否有包含此類信息的任何網站

//請注意,我查了TCL。 tk網站,它只具有什麼是新的每個版本,但不是特定的

+1

我感到你的痛苦。從2005年到2012年,我使用了嵌入式tcl 8.0p2的數據庫。確保你的書籤http://www.tcl.tk/man/tcl8.0/TclCmd/contents.htm –

回答

2

This page及其鏈接的頁面,具有關於命令和語法更改的相當詳細的信息。您可能不得不向後搜索以找到支持您想知道的功能的第一個版本。

2

http://www.tcl.tk/man/已鏈接到各種版本從7.5到8.6的Tcl命令文檔,但由於某些原因跳過了8.1。

+0

它是_really_不建議在生產中使用8.1;它有一些主要的缺陷,直到8.2才真正解決。從8.0開始,並沒有那麼多實際的命令改變,但許多事情發生了很多變化(就像Tcl獲得unicode支持時那樣)。 –

2

只支持8.0?這是相當古老的。 (我仍然有這樣的系統,但他們真的只是在生命支持上。)

版本之間變化的第二最權威的來源是任何Tcl源代碼發行版中的changes文件。 (第一個最準確的來源是比較源代碼,但對於各種不重要的原因,這在8.1之前有點煩人。)您可以使用current version,因爲該文件的舊部分實際上是靜態的; here's等同於Tk。該文件包含一個lot更多信息比您可能需要,包括提到許多更重要的錯誤修正,以及功能在貝塔斯期間(我們試圖避免這樣做,但偶爾會發生)振作一些的情況下。

但是,大的事情,早都相當簡單,所以我們大概可以縮小東西需要提防這些大件物品:

  • 擴展語法({*}...)中的Tcl 8.5中引入。在此之前,您使用eval a lot更多。
  • 在現代Tcl中有一大堆命令,當時根本不存在。有這些的一些的解決方法;更容易嘗試看看你期望的是什麼,然後再問這裏,而不是試圖預測它們。已知一些已知的例外是完全不可用8.0:
    • 字典
    • 合奏
    • 協程
    • 的TclOO對象系統
    • 的TTK外集件組
  • Tcl的8.0假定字符總是8位數量,並沒有試圖理解編碼。它只是徘徊字節。 (這也意味着encoding命令不存在,-encoding選項與fconfigure也是如此。)
    • 請確保您的腳本本身只使用ASCII。節省痛苦。
  • 8.0中的RE引擎與8.1中使用的引擎不同。它非常簡單,只支持新引擎所做的一小部分。
  • 8.0和之前的線程支持並不適合心臟不好。 假設你的代碼是單線程的,並且避免了很多困難的調試。