From: Kevin W. <kw...@co...> - 2012-09-25 22:12:23
|
Hi all, After extensive discussion on the Tcl-Core mailing list, we've done a full merge of the Tk-Cocoa backport into the main branch of Tk 8.5, so that it will more closely track development in 8.6 and not require the complexity of maintaining a separate branch. Going forward, Tk 8.5 as well as Tk 8.6 will be based on Cocoa. As a result of this, the question of what to do with the older Carbon version of Tk--in both 8.5 and 8.6--has arisen. When Tk-Cocoa was first merged into Tk 8.6/trunk a few years ago, it was decided to set up a separate "Carbon" subdirectory in the Tk source tree, which someone could build using an "--enable-carbon" switch during the configure phase. It probably would not be too hard to set up something similar for 8.5. However, I'm not aware of any Tk 8.6-based projects that make a point of using Carbon, nor am I aware of any in 8.5; ActiveState switched ActiveTcl to the Cocoa-based version a couple of years ago, and the version of Tk that Apple ships with OS X has been Cocoa-based since 10.6. Most projects simply go with Cocoa because that is now the most widely-supported version; if a project is using Carbon, it is likely by happenstance (an older build of Tk, for instance). Adding to these observations is the fact that that the Carbon version is increasingly hard to build on recent versions of OS X, especially in a 64-bit environment. I've heard reports that it won't build at all on 10.8 (can't confirm that myself as I'm still on Lion); Apple has moved from deprecating to actively removing some part of the Carbon framework from OS X. No significant work has been done on the Carbon version of Tk for about five years, since Daniel Steffen began working on the Cocoa port. Based on all this, from my perspective it makes little sense to continue supporting the Carbon version of Tk. It seems at this point just to take up space in the Tk source tree, but is not used anywhere that I can see. My vote would be to remove it from both 8.5 and 8.6, set the line of demarcation on Carbon at Tk 8.5.12, and move forward. However, I think it make sense to discuss this issue more before proceeding with such a change. In the Tcl chatroom I volunteered today to start a conversation on this issue on the Tcl-Mac list, and based on the feedback here, will also discuss the issue on Tcl-Core. I will also fully acknowledge that the Cocoa port is not perfect, specifically with regard to performance and integration between the Tk and Cocoa event loops; the Carbon version is superior in this respect, and a few years ago a couple of people mentioned on this list that they prefer the Carbon version for that reason. Until Daniel Steffen or someone else with more expertise than me has time to dive into the event-loop integration questions, the Cocoa port will continue to have this issue. Nonetheless, these factors in my view do not outweigh the facts that the Carbon port is now obsolete, cannot build in a 64-bit environment, and is unsupported in every major binary distribution of Tk on the Mac. I believe that Tk would not suffer by removing that code from the source tree in both 8.5 and 8.6. Comments are not only welcome but invited. If there is a clear constituency for keeping the Carbon port around, we need to be aware of that. Thanks, Kevin -- Kevin Walzer Code by Kevin http://www.codebykevin.com |