From: Soeren S. <so...@de...> - 2011-10-13 22:39:41
Attachments:
signature.asc
|
Dear all, I have read the documentation to no avail but am stuck in figuring out how it is possible to reduce the size of the wrapper code. I've found http://www.swig.org/Doc2.0/Modules.html#Modules_nn6 but that is not an option (several swig supported $lang have problems with such split ups). So now I am wondering if it is actually possible to split up the generated .cxx file (which here is ~20 MB / 500kLoC - for this project http://shogun-toolbox.org/) into say 10 files compile them seperately into .o's and then just link them together in the end. Did anyone ever do this / or is this even already supported? Soeren -- For the one fact about the future of which we can be certain is that it will be utterly fantastic. -- Arthur C. Clarke, 1962 |
From: William S F. <ws...@fu...> - 2011-10-17 18:37:42
|
On 13/10/11 23:39, Soeren Sonnenburg wrote: > Dear all, > > I have read the documentation to no avail but am stuck in figuring out > how it is possible to reduce the size of the wrapper code. I've found > http://www.swig.org/Doc2.0/Modules.html#Modules_nn6 but that is not an > option (several swig supported $lang have problems with such split ups). > > So now I am wondering if it is actually possible to split up the > generated .cxx file (which here is ~20 MB / 500kLoC - for this project > http://shogun-toolbox.org/) into say 10 files compile them seperately > into .o's and then just link them together in the end. > > Did anyone ever do this / or is this even already supported? The only real support for this problem is %import with multiple modules. All target languages should work with multiple modules. Some might not, but then consider it a bug in a major area which should be fixed. The -fvirtual and -fcompact options you refer to offer some reduction, but nothing really large. You could alternatively wrap less code, do you really need all of the code wrapped? William |
From: Robin S. <ro...@ni...> - 2011-10-19 20:07:39
|
William S Fulton wrote: > The only real support for this problem is %import with multiple > modules. All target languages should work with multiple modules. Some might > not, but then consider it a bug in a major area which should be fixed. Here's one such bug with a simple one-line patch: http://sourceforge.net/tracker/?func=detail&aid=3421876&group_id=1645&atid=301645 Would it be possible for you to have a look at it? I would appreciate it greatly, as it is currently blocking my work on creating a complete wrapper for taglib for Ruby, see here: https://github.com/robinst/taglib-ruby/issues/1 Regards, Robin Stocker |
From: William S F. <ws...@fu...> - 2011-11-23 20:31:01
|
On 19/10/11 21:07, Robin Stocker wrote: > William S Fulton wrote: >> The only real support for this problem is %import with multiple >> modules. All target languages should work with multiple modules. Some might >> not, but then consider it a bug in a major area which should be fixed. > > Here's one such bug with a simple one-line patch: > > http://sourceforge.net/tracker/?func=detail&aid=3421876&group_id=1645&atid=301645 > > Would it be possible for you to have a look at it? > > I would appreciate it greatly, as it is currently blocking my work on > creating a complete wrapper for taglib for Ruby, see here: > > https://github.com/robinst/taglib-ruby/issues/1 > In case you didn't see, I committed this 10 days ago. William |
From: Robin S. <ro...@ni...> - 2011-11-24 11:51:56
|
William S Fulton wrote: > On 19/10/11 21:07, Robin Stocker wrote: > > William S Fulton wrote: > >> The only real support for this problem is %import with multiple > >> modules. All target languages should work with multiple modules. > >> Some might > >> not, but then consider it a bug in a major area which should be > >> fixed. > > > > Here's one such bug with a simple one-line patch: > > > > http://sourceforge.net/tracker/?func=detail&aid=3421876&group_id=1645&atid=301645 > > > > Would it be possible for you to have a look at it? > > > > I would appreciate it greatly, as it is currently blocking my work > > on > > creating a complete wrapper for taglib for Ruby, see here: > > > > https://github.com/robinst/taglib-ruby/issues/1 > > > In case you didn't see, I committed this 10 days ago. I did, thanks! Any idea when 2.0.5 will be released? Regards, Robin |
From: William S F. <ws...@fu...> - 2011-11-24 20:09:08
|
On 24/11/11 11:51, Robin Stocker wrote: > William S Fulton wrote: >> On 19/10/11 21:07, Robin Stocker wrote: >>> William S Fulton wrote: >>>> The only real support for this problem is %import with multiple >>>> modules. All target languages should work with multiple modules. >>>> Some might >>>> not, but then consider it a bug in a major area which should be >>>> fixed. >>> >>> Here's one such bug with a simple one-line patch: >>> >>> http://sourceforge.net/tracker/?func=detail&aid=3421876&group_id=1645&atid=301645 >>> >>> Would it be possible for you to have a look at it? >>> >>> I would appreciate it greatly, as it is currently blocking my work >>> on >>> creating a complete wrapper for taglib for Ruby, see here: >>> >>> https://github.com/robinst/taglib-ruby/issues/1 >>> >> In case you didn't see, I committed this 10 days ago. > > I did, thanks! > > Any idea when 2.0.5 will be released? Probably not for a while as there are currently some template regressions and they won't be easy to fix. I could back out the changes instead, not sure right now. William |
From: Soeren S. <so...@de...> - 2011-10-17 19:21:03
Attachments:
signature.asc
|
On Mon, 2011-10-17 at 19:37 +0100, William S Fulton wrote: > On 13/10/11 23:39, Soeren Sonnenburg wrote: > > Dear all, > > > > I have read the documentation to no avail but am stuck in figuring out > > how it is possible to reduce the size of the wrapper code. I've found > > http://www.swig.org/Doc2.0/Modules.html#Modules_nn6 but that is not an > > option (several swig supported $lang have problems with such split ups). > > > > So now I am wondering if it is actually possible to split up the > > generated .cxx file (which here is ~20 MB / 500kLoC - for this project > > http://shogun-toolbox.org/) into say 10 files compile them seperately > > into .o's and then just link them together in the end. > > > > Did anyone ever do this / or is this even already supported? > The only real support for this problem is %import with multiple modules. > All target languages should work with multiple modules. Some might not, > but then consider it a bug in a major area which should be fixed. The > -fvirtual and -fcompact options you refer to offer some reduction, but > nothing really large. You could alternatively wrap less code, do you > really need all of the code wrapped? IIRC java, c# and other languages have trouble with %import / modules so this won't work. In addition we are using -fvirtual etc already and the problem with exploded wrapper code size exists possibly only because we support so many data types for all kinds of functions and consequently have %template's for uint8,int8,uint16,...int64_t,float,double,long double... That's because it is a data analysis toolkit so limiting types - though of course possible - would really mean limit functionality. Generally speaking, it should be possible to split up any .cpp file into parts and then using appropriate .h and use of extern (or replicating static functions) one could first compile the isolated splits and then link them together. I might underestimate the difficulty of such an endeavor - am I really or does anyone know of a splitcpp or so utility? Soeren -- For the one fact about the future of which we can be certain is that it will be utterly fantastic. -- Arthur C. Clarke, 1962 |
From: William S F. <ws...@fu...> - 2011-10-17 20:02:43
|
On 17/10/11 20:20, Soeren Sonnenburg wrote: > On Mon, 2011-10-17 at 19:37 +0100, William S Fulton wrote: >> On 13/10/11 23:39, Soeren Sonnenburg wrote: >>> Dear all, >>> >>> I have read the documentation to no avail but am stuck in figuring out >>> how it is possible to reduce the size of the wrapper code. I've found >>> http://www.swig.org/Doc2.0/Modules.html#Modules_nn6 but that is not an >>> option (several swig supported $lang have problems with such split ups). >>> >>> So now I am wondering if it is actually possible to split up the >>> generated .cxx file (which here is ~20 MB / 500kLoC - for this project >>> http://shogun-toolbox.org/) into say 10 files compile them seperately >>> into .o's and then just link them together in the end. >>> >>> Did anyone ever do this / or is this even already supported? >> The only real support for this problem is %import with multiple modules. >> All target languages should work with multiple modules. Some might not, >> but then consider it a bug in a major area which should be fixed. The >> -fvirtual and -fcompact options you refer to offer some reduction, but >> nothing really large. You could alternatively wrap less code, do you >> really need all of the code wrapped? > > IIRC java, c# and other languages have trouble with %import / modules so > this won't work. In addition we are using -fvirtual etc already and the > problem with exploded wrapper code size exists possibly only because we > support so many data types for all kinds of functions and consequently > have %template's for uint8,int8,uint16,...int64_t,float,double,long > double... > I use %import with C# and Java on a large project., so it is possible, but not necessarily straight forward. I compile all the generated _wrap.cxx files into one big .so/.dll file. > That's because it is a data analysis toolkit so limiting types - though > of course possible - would really mean limit functionality. > > Generally speaking, it should be possible to split up any .cpp file into > parts and then using appropriate .h and use of extern (or replicating > static functions) one could first compile the isolated splits and then > link them together. I might underestimate the difficulty of such an > endeavor - am I really or does anyone know of a splitcpp or so utility? I don't know of any such utility, but I'd be quite happy to accept a patch that does this kind of splitting into SWIG. William |