Porting a large scale enterprise application from Tcl/Tk 8.4 to 8.5 Prashant Thakre, Tushar Gupta {prashant_thakre, Gaurav Bansal.

Slides:



Advertisements
Similar presentations
CIMCO Integration Software Products
Advertisements

© Paradigm Publishing, Inc Excel 2013 Level 2 Unit 2Managing and Integrating Data and the Excel Environment Chapter 7Automating Repetitive Tasks.
Chapter 3: Editing and Debugging SAS Programs. Some useful tips of using Program Editor Add line number: In the Command Box, type num, enter. Save SAS.
Feature requests for Case Manager By Spar Nord Bank A/S IBM Insight 2014 Spar Nord Bank A/S1.
By Hrishikesh Gadre Session II Department of Mechanical Engineering Louisiana State University Engineering Equation Solver Tutorials.
Guide To UNIX Using Linux Third Edition
Guide To UNIX Using Linux Third Edition
Introduction to Unix (CA263) Introduction to Shell Script Programming By Tariq Ibn Aziz.
1 of 5 This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT. © 2006 Microsoft Corporation.
Graphical Tree-Based Scientific Calculator: CalcuWiz Will Ryan Christian Braunlich.
Microsoft Visual Basic 2005 CHAPTER 8 Using Procedures and Exception Handling.
Unit Testing & Defensive Programming. F-22 Raptor Fighter.
1 Integrated Development Environment Building Your First Project (A Step-By-Step Approach)
A First Program Using C#
Linux Operations and Administration
Programming with Microsoft Visual Basic 2012 Chapter 13: Working with Access Databases and LINQ.
Microsoft Visual Basic 2012 Using Procedures and Exception Handling CHAPTER SEVEN.
Introduction to Shell Script Programming
© Copyright 1992–2005 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Tutorial 2 - Welcome Application: Introduction to C++
Copyright © 2007, Oracle. All rights reserved. Managing Concurrent Requests.
Tutorial 111 The Visual Studio.NET Environment The major differences between Visual Basic 6.0 and Visual Basic.NET are the latter’s support for true object-oriented.
Cataloging 12.3 to 14.2 Seminar. Cataloging 2 -New check routines -Cataloging authorizations -Other innovations -Fix and expand routines -Floating keyboard.
Active-HDL Interfaces Building VHPI Applications C Compilation Course 9.
Oracle Data Integrator Procedures, Advanced Workflows.
NA-MIC National Alliance for Medical Image Computing Slicer Building and Deployment Steve Pieper, PhD.
Microsoft Office Outlook 2013 Microsoft Office Outlook 2013 Courseware # 3252 Lesson 6: Organizing Information.
Javadoc: Advanced Features & Limitations Presented By: Wes Toland.
VistA Imaging Workstation Configuration. October The information in this documentation includes functionality of the software after the installation.
Eagle: Maturation and Evolution 17th Annual Tcl Conference Joe Mistachkin.
1 Chapter 12: Form Builder Objects and Flexible Code.
Chapter Thirteen Working with Access Databases and LINQ Programming with Microsoft Visual Basic th Edition.
Roll Screen Development Debugging assistance for building Rocks Rolls with screens OSGC, May 2008 Nadya Williams University of Zurich.
Digital Electronics and Computer Interfacing Tim Mewes 4. LabVIEW - Advanced.
Advanced BioPSE NCRR How to Install and Configure J. Davison de St. Germain Chief Software Engineer SCI Institute December 2003 J. Davison.
Enhanced Tcl/Tk Widgets for EDA Applications Gaurav Bansal, Roshni Lalwani Gaurav Bansal 17'th Annual.
3 Copyright © 2004, Oracle. All rights reserved. Working in the Forms Developer Environment.
9-Nov-97Tri-Ada '971 TASH An Alternative to the Windows API TRI-Ada ‘97 Terry J. Westley
Deploying Software with Group Policy Chapter Twelve.
Dreamweaver MX. 2 Tools for Code Editing (p. 366) n An HTML editor like Dreamweaver writes most of the code you need, but at times you will need to perform.
Eagle: Tcl Integration with the CLR 16th Annual Tcl Conference Joe Mistachkin.
GOSS iCM Gary Ratcliffe. 2 Agenda Webinar Programme V10 Overview Version Information Supported Browsers Architectural Changes New Features.
Exceptions and Assertions Chapter 15 – CSCI 1302.
Innovation Intelligence ® 1 Chapter 4: Using TCL to Control the HyperMesh Session.
Error Handling Tonga Institute of Higher Education.
Microsoft Visual Basic 2012 CHAPTER FOUR Variables and Arithmetic Operations.
Lab 9 Department of Computer Science and Information Engineering National Taiwan University Lab9 - Debugging I 2014/11/4/ 28 1.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Linux Tutorial Lesson Two *Getting Help in Linux *Data movement and manipulation *Relative and Absolute path *Processes Note: see chapter 1,2,3 from Linux.
Spell Checker web service (you build a web client that interacts with the service) The client uses a servlet class and a JSP page. The user passes information.
McGraw-Hill/Irwin The Interactive Computing Series © 2002 The McGraw-Hill Companies, Inc. All rights reserved. Microsoft Excel 2002 Using Macros Lesson.
Chapter 2 Build Your First Project A Step-by-Step Approach 2 Exploring Microsoft Visual Basic 6.0 Copyright © 1999 Prentice-Hall, Inc. By Carlotta Eaton.
© 2015 Ex Libris | Confidential & Proprietary Yoel Kortick Senior Librarian Cataloging introductory flow.
What type of project? I tried three type of project and the only one I managed to obtain the results I wanted was this one. It is more flexible and much.
Eagle: Tcl Integration with the CLR
Development Environment
Project Management: Messages
Tk Widgets in Javascript
CARA 3.10 Major New Features
Metadata Editor Introduction
Cataloging introductory flow
WORKSHOP 3 GSE IMPORT.
HP C/C++ Remote developer plug-in for Eclipse
Instructor: Prasun Dewan (FB 150,
TCL/TK Tool Command Language/Tool Kit.
Variables and Arithmetic Operations
Getting Started: Developing Code with Cloud9
Testing, debugging, and using support libraries
EuroTcl 2009 The State of Tcl/Tk.
Eagle: Maturation and Evolution
Overview Before You Start Structure of a Module Ports and Datatypes
Presentation transcript:

Porting a large scale enterprise application from Tcl/Tk 8.4 to 8.5 Prashant Thakre, Tushar Gupta {prashant_thakre, Gaurav Bansal 17'th Annual Tcl/Tk Conference (Tcl'2010) October 11 - October 15, 2010

Problem description Challenges involved in porting a large and diverse code base.  Tcl/Tk  External packages like BWidget, [incr Tk], and others.  Internal packages like Mtiwidgets.  Change in behaviour of core Tcl/Tk as compared to previous release i.e  C/C++  Change in interface of Tcl APIs.  Custom built of Tk  TIP #125, converting between frame and toplevel windows using custom extension to wm (toplevel).

Configuration details Tcl/Tk version  standard distribution. Operating system  Redhat Enterprise Linux 4 update 8. Compiler  Application is compiled with GCC

Core Tcl/Tk changes tk/library/button.tcl.  Issue:  Application uses check button and radio button, and global variable linked to the buttons are specified using itcl::scope. This resulted in exception at runtime with Tcl 8.5.  Solution:  Relevant bug # This fix uses uplevel set instead of set ::to work with itcl. [tk_getOpenFile] change.  Issue:  With Tcl 8.4 multiple file and directory selection using ctrl throws an exception.  Solution:  Fixed in Tcl/Tk 8.5 and requires no changes.

Core Tcl/Tk changes continued … Correct [list] - Quoting of the '#' Character  Issue:  Application dumps tree contents during testing to check for regressions if any. Starting with Tcl 8.5, name of tree nodes starting with ‘#’ are quoted by default. This bug in [list]-quoting is present in all released versions of Tcl since and including Tcl 8.4 and has been fixed in 8.5. [list] does not quote the leading ‘#’ in a manner to make the list safe for passing to [eval]. The Tcl parser sees the unquoted ‘#’ as the start of a comment.  Solution:  Required update to gold files in regression.

Core Tcl/Tk changes continued … [info level] change.  Issue:  Application calls [info level] with level argument as -1 in order to verify that the cd command has been called from within tk::dialog::file. This is being done to prevent user from calling cd in certain scenarios.  Solution:  Level argument passed to [info level] should be -2 instead of -1. [pwd] change.  Issue:  If a present working directory is deleted, a call to pwd no longer throws an exception.  Solution:  Add check for empty string on return value of pwd.

Core Tcl/Tk changes continued … Incorrect gridding/packing of elements.  Issue:  This relates to incorrect display in Tcl/Tk 8.5 as compared to 8.4. For example following code snippet would display the button frame correctly in 8.4 but not in 8.5, where button_frame contains add and remove buttons. A similar issue exists with iwidgets::disjointlistbox. pack $left $button_frame $right –expand yes –fill both –side left -padx 5 –pady 5 Left Button Frame Right

Core Tcl/Tk changes continued …  Solution:  Above mentioned code had to be replaced with following. pack $left –expand yes –fill both –side left –padx 5 –pady 5 pack $button_frame –side left –padx 5 –pady 5 pack $right –expand yes –fill both –side left –padx 5 –pady 5 Change in APITclInitSubSystems.  Issue:  argv0 has been done away with for TclInitSubSystems. Compiler error notifies the user about this.  Solution:  Remove the NULL argument being passed to the API.

Core Tcl/Tk changes continued … [TIP 125]: wm manage and wm forget  Issue:  Application allows docking and undocking of child windows. This was implemented in Tcl/Tk 8.4 using custom patch for [wm toplevel]. However, this TIP was incorporated into standard distribution with new wm subcommands manage and forget.  Solution:  A procedure wm_toplevel was defined to handle all calls to [wm toplevel] through wm manage and wm forget.

Core Tcl/Tk changes continued … Crash in Tk while trying to dock/undock a window repeatedly.  Issue:  Repeated docking and undocking of child windows (achieved by wm manage and wm forget ) would result in application crash. This was due to change in the way “-menu” option was configured. These child windows were derived from itk::Archetype and due to changes to “-menu” option in [incr Tk] 3.4, “-menu” was configured after first undock operation. This resulted in abnormal termination during docking process.  Solution:  Configure “-menu” option to {} during all docking operations and configure it back to correct menu during undocking.

Core Tcl/Tk changes continued … A visible tail.  Issue:  Application uses Mtiwidgets and dragging the cursor leaves a visible trail that goes off as soon as user completes the drag operation.

[incr Tcl/Tk] changes Change in availability of –menu option.  Issue:  [incr Tk] has three base classes that reside in the itk namespace namely itk::Archetype, itk::Widget and itk::Toplevel. with [incr Tk] 3.4 this option is now defined only for toplevel windows i.e. itk::Toplevel.  Solution:  Application uses custom widget Mtiwidgets and required update to accommodate this change. Archetype WidgetToplevel

Performance Penalty in a particular scenario.  Issue:  Moving to newer release of Tcl/Tk 8.5 has caused some unexpected regressions in terms of performance. In a particular computation intensive task (on C/C++ side) it was observed that the performance penalty has been as high as 30%. The function in question is pure C/C++ implementation.  Solution:  Currently we are trying to profile the application in order to narrow down the exact cause of the problem. We have tried to build the application by linking it to single threaded version of Tcl/Tk libraries. However, this hasn’t yielded desired results.

Thank you. 14