Minutes 111706

From KitwarePublic
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Minutes from Gaetan email

This text for the minutes was taken from Gaetan's email following the tcon

http://www.itk.org/mailman/private/insight-developers/2006-November/008718.html


Summary

The current wrapping system:

  • work on linux and windows with tcl, python and java
  • known to have problems on mac os (java, python) and solaris (java)
  • the problems detailed in the WrapITK article, including the small coverage, and inconsistency in wrapped types

WrapITK:

  • 66% of the filters wrapped
  • tcl, python, java
  • python typemaps, to be able to use python types rather than simple itk objects, like FixedArray, Index, Size, ...
  • no typemaps for tcl and java
  • lacks some custom classes from the previous wrapping system in java and tcl
  • tested on linux, mac os, and recently, solaris
  • still lots of problems with windows (especially with java), even if some users have reported using it on that plateform (msvc 7.1 only I think)

What will be better with swig:

  • a lot easier to customize
  • build with python 2.5
  • should help to fix problems with very long file names
  • may help to fix build caused by too big generated c++ files
  • no need to maintain a branch of swig

WrapITK with swig status:

  • swig is still not able to read ITK headers - they still need to be read by gccxml. The output of gccxml is converted to a swig interface with igenerator.py
  • python only
  • made on mac os
  • all currently wrapped itk classes builds with swig
  • no customization from the current wrapitk, like typemaps
  • but some other customizations, like vector support
  • no cmake configurations support
  • based on cableidx and pygccxml, so need python to build
  • problems with cmake dependencies
  • don't group the groups in a few shared modules
  • no template with dict interface
  • require pygccxml cvs and swig cvs because some bugs have been fixed while working on wrapping ITK with swig
  • only a few changes have been made (to respect the wrapping order imposed by swig) in the WrapITK/Modules directory
  • roughly, igenerator.py have took about 2 days of work, modifying WrapITK have took 1 day. The bugs above, and a misunderstanding of pygccxml query interface took me one more day

What need to be done (* mark for what I need help), in the order I think it should be done:

  • fix the cmake dependencies *
  • add the customizations
    • basic types like std::string, std::exception, ...
    • typemaps currently in WrapITK
    • PyCommand, PyImageToImageFilter
  • fix the dict interface for the templates

(at that point, the current python tests should all pass on unix-like systems)

  • support cmake configurations
  • make it work on all the systems, and submit daily tests for all those systems on the dashboard *
  • add support for java (*?)
  • add support for tcl and the customizations from the current wrapper (TkImageViewer2D, TclCommand, ...) *
  • more python customizations: __getitem__(), __len__(), __str__(), ... like in the current optional patch
  • recode igenerator.py in c++ to no more use pygccxml (igenerator.py is attached for the ones who want to have an idea of the work to do) *

(the following items are too be done later)

  • better filter coverage *
  • support more languages
  • ...

What still remain to decide:

  • when switch to swig (I think it's clear that the switch is a good thing)
  • who can/want to work on the the items marked with a "*" in the "What need to be done" section above (any help is welcome for the other items too :-)
  • how to proceed:
    • fix WrapITK with cableswig on windows, or switch first to swig, and make sure it builds on windows after that
    • create a new cvs branch or a new cvs check out