Monday February 14, 2011

[Time] NameMessage
[07:19] sustrik mikko: yes, clear roadmap to 2.1 would be nice
[07:20] sustrik however, i am not sure how to manage it within a distributed development model
[07:20] sustrik would it mean that patches out of scope of the roadmap are not accepted?
[09:45] mikko sustrik: sure they would
[09:45] mikko sustrik: im talking about feature roadmap
[09:45] mikko things that we know needs to be done
[10:30] mikko pieterh: there?
[10:31] pieterh mikko: hi
[10:31] mikko pieterh: is pkgconfig dependency acceptable in zfl?
[10:32] pieterh you mean autoconf tooling?
[10:33] mikko yes
[10:34] sustrik mikko: there's 3.0 roadmap
[10:34] mikko pieterh: let me show you a patch
[10:34] mikko sec
[10:34] pieterh mikko: I used the same framework as for zmq
[10:34] pieterh but all suggestions welcome, of course
[10:34] mikko pieterh:
[10:34] mikko pieterh: i sent one pull request for mingw32 fixes earlier
[10:35] mikko that can be rewritten without pkgconfig as well
[10:35] mikko to remove the dependency
[10:35] pieterh sorry to be ignorant... I'm not even sure what pkgconfig is/does
[10:36] mikko NAME pkg-config - Return metainformation about installed libraries
[10:36] pieterh right
[10:36] mikko cflags, libs to link etc
[10:36] pieterh if you're happier removing the dependency, that's fine by me
[10:37] mikko ok, ill tinker with it this evening
[10:37] mikko the mingw32 fix is more straight-forward
[10:37] mikko
[10:37] pieterh let me apply that mingw32 patch then...
[10:37] mikko the assumption before was that build happens on linux if gnu compiler is used
[10:37] mikko so -DLINUX got defined in mingw32 and bsd
[10:37] mikko etc
[10:37] pieterh right
[10:38] pieterh there is some plausible benefit in having zfl build the same way as zeromq2
[10:38] pieterh and i assume you made a similar patch for the zeromq2
[10:38] mikko pieterh: zeromq2 hasn't had that in ages
[10:39] pieterh the dependency, you mean?
[10:39] pieterh aight
[10:39] mikko the dependency to pkg-config can be removed
[10:39] mikko ill make a clean patch this evening
[10:39] pieterh nice
[10:39] mikko i think it's easier for users to do: ./configure --with-libzmq=/usr/local
[10:39] mikko rather than having to specify CFLAGS and LDFLAGS
[10:40] mikko this is really more zfl specific as it uses zeromq as a dependency
[10:41] mikko i'll add zfl build on solaris and freebsd at some point
[10:48] pieterh mikko: pull request merged
[10:49] mikko pieterh: will run mingw32 build now
[10:49] mikko sec
[10:49] mikko mingw32 and linux builds running now
[10:49] pieterh on linux it looks in /usr/local by default, right?
[10:49] mikko nope
[10:50] pieterh hmm, so how does this work on all my linux boxes without any special options...?
[10:50] mikko you've added /usr/local to runtime linkers conf
[10:50] mikko ?
[10:50] mikko or your distro adds it
[10:50] pieterh let me check...
[10:50] mikko cd /etc/
[10:51] pieterh LD_LIBRARY_PATH...
[10:51] mikko
[10:51] mikko mingw builds now
[10:51] mikko and linux builds as well
[10:52] mikko this is how i got it configured on build box:
[10:52] mikko CFLAGS="-I${ZEROMQ2_PREFIX_MASTER_MINGW32}/include" LDFLAGS="-L${ZEROMQ2_PREFIX_MASTER_MINGW32}/lib" ./configure --target=mingw32 --build=i686-linux --host=i586-mingw32msvc
[10:52] mikko for mingw32
[10:52] mikko linux is: CFLAGS="-I${ZEROMQ2_PREFIX_MASTER_GCC}/include" LDFLAGS="-L${ZEROMQ2_PREFIX_MASTER_GCC}/lib" ./configure
[10:54] pieterh hmm, I don't seem to need any of that... need to investigate
[10:55] mikko pieterh: the macro you use uses runtime linker
[10:55] mikko so if you got it configured then it should work (not sure about includes)
[10:55] stimpie I need to implement a push-pull with a custom loadbalancing strategy, what would be the recommend method? adjust the source and create a new socket type? implement it using PAIR's?
[10:55] mikko do echo | gcc -v -x c -E -
[10:55] mikko and check for default includes
[10:56] pieterh mikko: yes, gcc goes looking in /usr/local/include
[10:57] pieterh stimpie, read the Guide and Ch3 on custom routing using XREP sockets
[10:57] pieterh to do custom routing you *always* use an XREP socket
[11:01] pieterh mikko: IMO it's Ubuntu doing smart stuff with gcc configuration
[11:01] stimpie pieterh, ok thanks I will do some more reading
[11:01] pieterh stimpie, if it's not clear in the Guide, let me know
[11:02] mikko pieterh: yes
[11:02] mikko pieterh: hence the build flag would be nice
[11:02] pieterh mikko: so basically any gcc system that is not set-up to look in /usr needs these build flags
[11:02] pieterh that's clear
[11:02] pieterh feel free to change the README.txt file for zfl (patch)
[11:03] mikko pieterh: i'll create a new patch to add the flag and update docs while im at it
[11:03] mikko probably won't have time until this evening
[11:04] pieterh mikko: :-) there is no hurry
[11:40] Guthur mikko: what was the link to your logs again?
[11:40] mikko
[11:41] Guthur cheers, you don't mind me using it?
[11:41] mikko don't like to it if possbly
[11:41] mikko possible*
[11:42] Guthur oh no certainly, it was just for my personal use
[11:42] Guthur to check anything I missed
[11:42] mikko thats fine
[11:43] Guthur i see the talk of 2.1 roadmap earlier, this for movement to a stable release I assume?
[11:52] sustrik yeah
[11:52] sustrik i am not sure how to fomalise it though
[11:58] Guthur sustrik: are there many outstanding issues?
[11:58] mikko gant chart!
[11:59] sustrik :)
[11:59] sustrik the problem is that everyone here is a volunteer
[11:59] sustrik so there's no way to estimate anything
[12:01] Guthur are the issues prioritized at all yet?
[12:01] sustrik what would that be good for?
[12:02] Guthur well maybe there are some that must be resolved and some that would be nice to have resolved
[12:03] Guthur I've not looked at the issues though, so I don't know what there is
[12:03] Guthur is it just the list on github?
[12:03] sustrik well, the point is that even an issue with highest priority won't be solved unless someone decides to solve it
[12:03] sustrik so having priorities is kind of mute
[12:06] Guthur very true
[12:08] Guthur though from the github issue list it seems hard to know what is an issue stopping 2.1 becoming stable
[12:08] Guthur what/which
[12:09] sustrik there's no formal criterion
[12:09] sustrik if people are happy with stability of 2.1 it will become stable
[12:10] sustrik i think it has to do with migration to 2.1
[12:10] sustrik some people have switched already
[12:10] sustrik some have not
[12:12] sustrik if there's enough people using 2.1 in prodution, i believe we can make it "stable"
[12:20] Guthur is 0MQ then working towards a 2.2 after that
[12:22] sustrik either 2.2 or 3.0
[12:22] sustrik depends on overall sentiment of the community
[12:27] Guthur is the ØMQ/3.0 Roadmap up to date with current desires for 3.0?
[12:28] mikko i got a couple of desires that i would like to get in later releases
[12:28] mikko but it will take some time to produce patches
[12:29] mikko investigating UDT is one and another one is PUSH/PULL acks
[12:29] sustrik mikko: ack
[12:30] sustrik Guthur: the distinction is that 2.2 has to be backward compatible
[12:30] sustrik while 3.0 can break backward compatibility
[12:30] sustrik so 3.0 is a chance to fix API bugs and mis-designs
[12:31] sustrik however, introducing incompatible API is a painful process
[12:31] sustrik so people may choose to stick with existing API and work on 2.2 instead
[12:32] mikko do we have any outstanding ones?
[12:32] sustrik outstanding what?
[12:32] mikko "so 3.0 is a chance to fix API bugs and mis-designs"
[12:32] mikko api bugs and misdesign
[12:32] sustrik ah, many of them
[12:32] sustrik see socket option types
[12:32] sustrik they are a mess
[12:34] Guthur is that the: Review the types of socket options for getsockopt/setsockopt (it's kind of arbitrary now).
[12:34] sustrik another example: zero-copy should not be default
[12:34] sustrik zmq_send should look like POSIX send:
[12:34] sustrik zmq_send (void *buff, size_t size, int flags);
[12:34] sustrik Guthur: yes
[12:38] sustrik one intriguing option would be to provide both version of the API from the same library
[12:39] sustrik however, i am not sure whether that's technically possible
[12:40] Guthur like some compatibility layer on top the new API
[12:40] sustrik yep
[12:40] mikko LD_PRELOAD sumbols
[12:40] mikko symbols*
[12:41] mikko messy though
[12:41] sustrik not sure how portable that is
[12:41] mikko not very probably
[12:41] sustrik an alternative would be to export symbols such as:
[12:41] sustrik _zmq_init
[12:41] sustrik _zmq_socket
[12:41] sustrik etc.
[12:41] sustrik then have 2 header files
[12:42] sustrik containing simple inline functions
[12:42] sustrik that would call the appropriate _zmq routine
[13:40] pieterh sustrik: wrt 2.1 stable, IMO it's self-regulating...
[13:41] pieterh when there are no patches for a certain period you can assume it's stable
[13:41] sustrik yes, that's what i was saying
[13:41] pieterh difficulty is when you mix old and new code, it can remain unstable forever
[13:41] sustrik ack
[13:41] pieterh i'd not take master HEAD to stable, ever
[13:41] pieterh but rather the 2.1 unstable + patches -> stable
[13:42] sustrik i've missed that
[13:42] pieterh there is an unstable branch, no?
[13:42] sustrik master
[13:42] pieterh ah... well... this won't be optimal then
[13:43] pieterh not if you develop on master
[13:43] sustrik development should go on on topic branches
[13:43] pieterh yes but then it does not get tested...
[13:43] sustrik true
[13:43] pieterh i think the basic principle is that any specific code ages and becomes stable (or unused) automatically
[13:44] pieterh like fine wine
[13:44] sustrik that's the case with 2.1 i think
[13:44] sustrik people are already switching
[13:44] pieterh right but if you mix new wine with the old wine there is a problem
[13:44] pieterh you risk making a stable release that has relatively new, unproven code in it
[13:45] sustrik there's still a maint branch
[13:45] sustrik bugs are still patched in maint
[13:45] pieterh this is something to discuss with Mato when he's back from down-under
[13:45] sustrik yes
[13:46] pieterh if you can cleanly separate older code (6 months+) into its own branch you can push it to 'stable' safely
[13:46] pieterh e.g. stuff like the socket shutdown mechanics from 2.1
[13:47] mikko but in that case you need to separate well-tested from old
[13:47] pieterh but it would be a pity to have e.g. the bug I found on win32 yesterday to still be in a 'stable' release
[13:47] mikko older code that is implicitly used by everyone is more tested than some feature just used by some
[13:47] pieterh yeah
[13:47] mikko in the former you expect to see bugs quicker
[13:47] pieterh so you'd expect, IMO, to see
[13:47] pieterh - very stable (2.0.x), does not change except for major bugs
[13:48] pieterh - (almost) stable (2.1.x), maintained
[13:48] pieterh - raw (master HEAD)
[13:48] pieterh and all new work as rapidly as possible into HEAD
[13:48] pieterh e.g. xsub, xpub should be in HEAD now, so we actually test it
[13:49] pieterh but people have an 'official latest' release to work with
[13:49] pieterh to have to choose between 2.0.x and HEAD is kind of painful
[13:49] sustrik that's 2.1.0
[13:49] pieterh yeah, but it's not maintained :-)
[13:50] sustrik wait a sec
[13:50] sustrik there are 3 things there"
[13:50] sustrik 1. latest stable (2.0.10)
[13:50] sustrik 2. latest dev (2.0.1)
[13:50] sustrik 3. head
[13:51] pieterh 2. latest dev (2.1.0) ?
[13:51] sustrik 2.1.0, sorry
[13:51] pieterh ack
[13:51] pieterh let me add two things I think would help
[13:51] pieterh a. new code goes into HEAD asap, not topic branches unless extremely unstable
[13:52] pieterh b. latest dev is a branch and gets bug fixes from head
[13:52] pieterh rationale for a = faster testing of new code is very valuable
[13:52] mikko latest dev is bug fixes only?
[13:52] pieterh hmm, yes
[13:53] pieterh at least
[13:53] sustrik then it's same as maint
[13:53] mikko so when do new features get in?
[13:53] pieterh well, this rolls around
[13:53] mikko and is new version branched of from HEAD?
[13:53] pieterh latest dev becomes stable at a certain point
[13:53] pieterh and then new dev is branched from head
[13:53] pieterh like I'd suggest 2.1.0 + patches is today ready for stable
[13:53] pieterh we want people to move off 2.0.10
[13:54] pieterh of course the packages can remain available
[13:54] pieterh but we don't want people asking about stuff that was fixed 6 months ago
[13:54] sustrik i still don't see why we need two maintenance branches instead of a single one
[13:55] pieterh because you have two generations of 'officially released' code
[13:55] pieterh that is standard operating procedure
[13:55] pieterh and you need to maintain both branches
[13:55] sustrik me?
[13:55] pieterh while also having space for new functionality that is raw and liable to break
[13:55] pieterh not you
[13:55] pieterh one
[13:55] pieterh :-)
[13:55] sustrik :)
[13:56] pieterh i'm happy to do this
[13:56] pieterh i've said that often
[13:56] mikko if the process is being reviewed can we also look into using pull requests on github instead of signed patches?
[13:56] pieterh mikko: +1
[13:57] pieterh it allows the author of a patch to request explicitly that it be applied to a set of target branches
[13:57] pieterh and it creates an asynchronous workflow
[13:57] pieterh +100
[13:58] sustrik ok, we can have as many maintenance branches as we want
[13:59] sustrik have a look at linux, there are some 4-5 of them
[13:59] pieterh indeed
[13:59] sustrik as for new features, linux kernel uses concept of merge windows
[13:59] mikko do they still use the even and odd versions?
[13:59] sustrik nope
[14:00] sustrik basically, there's a week or two in each cycle
[14:00] sustrik when people can ask their new code to be merged
[14:00] pieterh linux kernel processes are *weird*, they don't always make good examples
[14:00] sustrik the rest of the cycle is used to stabilise the new codebase
[14:01] sustrik the merge windows eases the stabilisation process
[14:02] sustrik it makes the development of new features to happen in discrete steps
[14:02] pieterh i'd really avoid trying to imitate the Linux processes unless they solve real problems we face
[14:02] mikko i think one of the issues to solve is: clear and visible roadmap for new features
[14:02] sustrik well, this is the problem we face:
[14:03] sustrik the new fetures are merged in continuously
[14:03] sustrik so what you have is a shifting landscape
[14:03] pieterh i think the roadmap for 2.1 worked pretty well
[14:04] pieterh what sustrik says is right
[14:04] pieterh you cannot take a shifting landscape to stability
[14:04] pieterh today we have no way to produce a stable 2.1 release afaics
[14:04] pieterh except by putting all new work into topic branches and waiting for another 3 months
[14:04] pieterh and even then it would not be based on a real 'unstable'
[14:05] mikko we don't really classify incoming features much
[14:06] sustrik classify?
[14:06] pieterh mikko: you just need to ask Sustrik more often, "what are you going to make?" :-)
[14:07] mikko pieterh: im trying more and more be able to produce patches
[14:07] Guthur i'd like to +1 the pull request, more from a laziness point of view, hehe
[14:07] mikko sustrik: we get a fair amount of feature requests
[14:07] mikko sustrik: which i think could be classified based on two factors: value and effort
[14:08] mikko maybe more factors needed but as a baseline
[14:08] sustrik i see
[14:08] mikko small effort, large value -> you want to do those first
[14:08] sustrik in theory
[14:08] mikko large effort, large value -> maybe schedule somewhere future
[14:08] mikko etc
[14:08] sustrik the reality is that everyone scratches his own itch
[14:09] sustrik so people are going to do work on what they need rather than on effort/value estimates
[14:09] mikko i think this would also give 'tools' to people wanting to contribute
[14:09] mikko they could start from the small effort ones
[14:09] mikko sustrik: that is true as well
[14:10] sustrik sure, but do you really see people asking for something to do
[14:10] sustrik ?
[14:10] sustrik it's rather like they choose what to do depending on what they want to use 0mq for
[14:11] sustrik GSoC may be a bit like what you have in mind
[14:11] mikko GSoC and also individuals
[14:11] sustrik but even with GSoC you just sketch some ideas
[14:11] pieterh mikko, what could be nice is an area on the wiki where people *ask* for help on areas
[14:11] mikko there are people who contribute just for the sake of it
[14:11] pieterh i.e. acting as mentors
[14:11] sustrik and people are free to work on something completely different
[14:12] mikko is it too late for GSoC this year?
[14:12] sustrik nope
[14:12] sustrik the applications are to be posted shortly
[14:12] mikko we should apply. i think there are a couple of things that GSoC students could do
[14:13] pieterh mikko: there is a page on the wiki with about 50 ideas
[14:13] mikko pieterh: which one?
[14:13] pieterh it should be visible from the main community page
[14:13] pieterh hang on...
[14:14] pieterh yeah
[14:14] pieterh
[14:14] mikko hot topics
[14:16] pieterh :-)
[14:21] mikko udt and sctp are on the list
[14:21] mikko both very interesting transports
[14:22] mikko sustrik: is this likely to be major change?
[14:23] Guthur From a prospective contributor point of view I think it would be nice to have a list of areas needing work
[14:23] Guthur i was looking at the GSoC and the 3.0 roadmap like that though
[14:23] Guthur i also have an interest in adding win32 IPC
[14:24] pieterh what do you think of the mentor idea?
[14:24] pieterh i.e. area of work means working with someone who helps you get into that code
[14:25] Guthur yeah that's a neat idea, though devs here tend to be very helpful as well
[14:25] Guthur i've been asking here regarding pointers in starting the win32 IPC
[14:26] Guthur got a lot the preliminary research done at the weekend there
[14:26] Guthur sustrik gave me a lot of pointers on where to start looking in ZMQ as well
[14:27] pieterh Grrr. we need ipc: working on windows... :-/
[14:27] pieterh just hitting problems due to that
[14:28] pieterh Guthur, can I help you make IPC work on win32?
[14:30] pieterh Oh... I'm using inproc: ... I take it back :-)
[14:35] mikko pieterh: zfl doesn't need to link against libuuid, right?
[14:36] Guthur pieterh: hehe, well hopefully someone will need it, I'm sure they will
[14:36] Guthur I just need to write some code now for it, my time is limited during the week though due to work, and I'll be in dublin on saturday
[14:37] Guthur hopefully slow but steady progress will be made
[14:39] sustrik btw guys, there's a need for backup mentor for GSoC
[14:39] sustrik i can be the mentor as i know the code best
[14:39] sustrik but the rules of GSoC require to have a backup mentor as well
[14:40] sustrik in case i got run over by car or something
[14:40] sustrik any volunteers?
[14:44] Guthur probably need to send that on ml
[14:44] sustrik i've already did :)
[14:45] sustrik no answer though
[14:51] pieterh mikko: well, zfl links with zeromq, which links with libuuid
[14:51] mikko pieterh: but zfl doesn't need to link libuuid
[14:51] mikko ?
[14:52] pieterh mikko: it's like I said... there are zfl classes that link zmq functions
[14:52] pieterh like zfl_msg and zfl_rpc
[14:52] sustrik zfl->libzmq->libuuid
[14:52] pieterh sustrik: that email had too many questions in it, I doubt many read the part about backup mentor
[14:52] mikko yeah, but zfl links against libuuid as well which i think is unnecessary dependency
[14:53] pieterh zfl_selftest will need it
[14:53] pieterh remove the dependency, see if it still works :-)
[14:54] pieterh sustrik: do you know any place to get kefir seeds in bratislava?
[14:54] mikko pieterh: i think it should be fine as libzmq doesnt expose any libuuid stuff directly
[14:55] sustrik hm, some bio-food store, i would say
[14:55] mikko so there should be no need for dependent programs/libraries to link with libuuid
[14:55] mikko will test
[14:55] sustrik never tried to buy it myself
[14:55] pieterh ah, katka will know... :-)
[14:56] sustrik you can buy kefir in any shop here
[14:56] sustrik but it's pasteurized
[14:56] sustrik so the culture is dead i suppose
[14:56] pieterh made from pasteurized milk but not itself pasteurized
[14:57] pieterh otherwise there'd be no point
[14:57] pieterh i've cultured kefir here, you can buy imported Polish kefir in some places
[14:57] pieterh but it's kind of hard to find
[14:58] pieterh mikko: regarding uuid, IMO it's better to leave the check in there
[14:58] pieterh since otherwise people will just get an error when they try to link their apps, if they don't have libuuid
[15:00] sustrik i have bottle of kefir in the fridge, it says nothing about pasteurisation, so it's probably alive
[15:01] sustrik my girlfriend suggests that the culture may be sold in pharmacy
[15:01] sustrik no guarantee though
[15:02] pieterh hmm, there are some online stores, will check them out
[15:03] pieterh heh, there are even kefir grain sharing communities :-)
[15:06] mikko pieterh: what do you mean?
[15:06] mikko pieterh: people shouldnt need to link libuuid
[15:07] pieterh mikko: we seem to have a misunderstanding...
[15:07] pieterh if you link with libzfl, you're going to need the uuid functions
[15:07] mikko pieterh: libzfl doesn't seem to use them directly (from what i can see)
[15:08] mikko pieterh: only through libzmq
[15:08] mikko or am i missing something (?)
[15:10] pieterh link is link
[15:10] pieterh there will be a dependency on uuid functions
[15:10] sustrik i think it's different for staci and dynamic libraries
[15:11] sustrik static*
[15:11] pieterh i don't think so
[15:12] sustrik if zfl links static version of libzmq, it has to link with libuuid
[15:12] pieterh if you do a static link, linker will search for uuid functions at link time
[15:12] mikko unless libzmq links static version of uuid
[15:12] mikko in which case they would collide
[15:12] pieterh mikko: libraries do not link...
[15:13] pieterh if you use dynamic libraries, executable will look for uuid functions at run time
[15:13] pieterh it's the same result
[15:13] pieterh if you use zfl you will eventually have to have uuid on your box
[15:13] pieterh libzmq *never* includes other libraries
[15:14] pieterh on no system, ever, afaik
[15:14] mikko libuuid is shared library dependency for libzmq
[15:15] pieterh if you remove the dependency check in, in zmq, libzmq will build fine
[15:17] pieterh and if you don't have libuuid installed, your apps will run until a peer tries to generate an identity
[15:18] pieterh alternatively if you're doing static links, your apps won't link at all
[15:18] pieterh this is precisely the same situation for a zfl app
[15:18] pieterh and therefore the check has exactly the same purpose and value
[15:21] mikko what happens in a situation where i have libzmq statically linked with libuuid and i try to use that with libzfl?
[15:23] mikko i guess thats more rare scenario
[15:24] sustrik i have no idea of how it is to be done
[15:25] sustrik however, i would suggest following the best practices
[15:25] mikko i guess it doesn't harm to have the explicit dependency there
[15:25] sustrik rather than trying to figure it out yourselves
[15:25] pieterh mikko: there is no such thing afaik as a "statically linked library"
[15:26] pieterh you create statically linked executables that pull in all referenced object files from various lbraries
[15:27] pieterh I don't know if any linkers allow a mix of static and dynamic
[15:27] mikko pieterh: on linux you seem to be able to include static libraries inside shared libraries
[15:27] mikko did some investigation a while ago regarding pgm builds
[15:27] mikko but it's non-portable case anyway
[15:28] pieterh weird and wonderful and in that specific case, if libzmq was changed to do that, we could drop the uuid check in zfl for those platforms
[15:28] mikko the only reason i know this is because i was looking into openpgm autotools builds and how to include the results of those in zeromq
[15:29] sustrik mikko: btw have you seen the email wrt. openvms builds?
[15:29] mikko but my original thinking was related to libzmq making a dependency to libuuid already it wouldnt be necessary in libzfl
[15:29] mikko but i guess it's ok to be explicit about it especially when its almost identical to zeromq build check
[15:30] mikko sustrik: yeah, haven't formulated a response yet
[15:30] sustrik actually, i think there's java on openvms
[15:31] sustrik but i have no idea whether hudson will run on it
[15:31] sustrik s/hudson/jenkins
[15:32] mikko we should be able to execute a script over ssh as well
[15:32] sustrik ack
[15:36] mikko sustrik: responded
[15:36] sustrik thx
[18:05] Guthur would a socket pool make much sense from a 0MQ perspective?
[18:06] Guthur I'm thinking of implementing in C# and was curious if it would translate down into the 0MQ lib
[18:34] pieterh Guthur, what problem does that solve?
[18:36] Guthur pieterh, so that sockets can be reused
[18:36] Guthur not sure if it will really benefit much
[18:36] Guthur in a managed environment it may have more benefit
[18:37] bitweiler can zeromq send any kind of data or does it have to be string data?
[18:38] Guthur bitweiler, the messages can contain any byte data
[18:38] bitweiler okay thanks :)
[18:42] Guthur pieterh, I had the situation where there is many differing threads coming in and I was thinking of having a pool of already connected sockets for them to use and reuse
[18:43] Guthur probably too specialized to be relevant to 0MQ
[18:57] Guthur it's partly inspired by WCF which is quite fast once it is 'warmed up', in part due to reusing the connection
[18:57] Guthur i need to bench of course
[19:03] pieterh Guthur, sorry, was away...
[19:03] pieterh Reusing connections could be a fun optimization but you may hit the issue of flushing messages on sockets
[19:03] pieterh I've seen apps that did a lot of socket opening and closing
[19:04] pieterh but they were IMO badly designed
[19:04] pieterh TCP startup costs are significant compared to message transfer
[19:13] Guthur it's a interesting minor wee exercise
[19:19] Guthur pieterh, are other socket types (in ZMQ) reasonable cheap to create
[19:57] pieterh Guthur, I'd expect them to be very cheap, yes... it's something to measure if you want figures
[20:02] cremes on linux do i need to do anything special to compile the lib to use epoll?
[20:02] cremes or does it pick that up automatically?
[20:06] Guthur cremes, will epoll is #ifdef ZMQ_HAVE_LINUX if that makes any difference
[20:06] Guthur will/well
[20:07] cremes Guthur: ah, i see that now
[20:08] cremes my config.log shows it set to 1 so i assume it picked it up correctly
[20:17] neale1 vargaz: I just pushed my s390x unwind changes. It hits a couple of common files in mini so you may want to inspect
[20:20] neale1 Sorry wrong window!
[20:28] cremes i am seeing something quite odd on linux (2.6.35-ARCH)
[20:29] cremes processes that should be idle are showing 80% cpu; it looks like it's all in zmq_poll
[20:29] cremes which is set for a 10ms timeout
[20:29] cremes that shouldn't tax the machine at all
[20:29] cremes suggestions on debugging this?
[20:34] pieterh cremes: perhaps you're doing other heavy work in that loop
[20:34] pieterh profiler should help
[20:34] cremes pieterh: nope, i'm not doing *any* work
[20:34] cremes running the exact same code on OSX shows around 3-5% cpu
[20:34] cremes do you have a suggested profiler?
[20:35] pieterh gprof springs to mind
[20:35] pieterh it sounds like a bug in zmq
[20:35] cremes okay, i'll poke at it with gprof
[20:36] Guthur cremes, you have remembered poll takes micro seconds, not sure if that would effect CPU load, but it's something I keep forgetting
[20:37] cremes Guthur: yes, i pass 10000 as the value for a 10ms timeout
[20:37] cremes it looks like a platform bug; osx is okay with it (for once) and linux is not
[20:43] mikko pieterh: pull req sent
[20:43] mikko pieterh: does that look sensible?
[20:47] pieterh mikko: hang on a sec
[20:49] pieterh mikko: yeah, but you removed the check for uuid :-)
[20:50] mikko i did?
[20:50] pieterh looks like it
[20:50] pieterh actually I don't mind, people building zfl will normally have built zmq already
[20:50] mikko oh, didnt save file before reverting that
[20:50] mikko i also noticed one thing
[20:51] mikko majority of the tests in for zfl are done in C++
[20:51] pieterh lol, yes, inherited from zmq
[20:51] pieterh feel free to rip em out
[20:54] mikko are you planning to use these things in the build in future?
[20:54] mikko as there is much inherited from zmq build
[20:54] mikko like checks for atomic operations
[20:54] pieterh to some extent this was meant to be a template for other libraries
[20:54] pieterh but I doubt that will happen
[20:55] mikko on zeromq side i tried to isolate these things into functions
[20:55] pieterh take an axe to it, you have a blank check
[20:55] mikko
[20:55] mikko these should be fairly reusable if needed
[20:56] pieterh it's a shame it's not reusable as-is
[20:56] pieterh nice work
[20:56] pieterh mikko: are you volunteering to give the zfl tooling a clean-up?
[20:57] pieterh :-)
[20:57] pieterh for me, it works, which is kind of sufficient
[20:57] pieterh since what I really like doing is writing beautiful C code
[20:57] mikko pieterh: yes, i think the build can be simplified a lot
[20:57] pieterh mato yells from the back of the room, "keep trying old man, one day you'll get it right!"
[20:58] mikko i'll take a poke at it
[20:58] pieterh yay!
[20:59] pieterh i doubt we'll have more C/C++ libraries but it's always possible
[21:03] Guthur pieterh, It's ok there is probably only a handful of people how can write beautiful C code, and even less than that for C++ (probably none)
[21:03] Guthur how/who
[21:08] pieterh Guthur, I wasn't being modest :-)
[22:28] Luke234 Hey I'm trying to build and install the ZMQ java bindings for windows but can't locate the java class files the docs mention
[22:29] Luke234
[22:29] Luke234 "Secondly, make sure that you have set the Java classpath to the directory where ØMQ classes reside." anyone know where I can get those classes?
[22:40] mikko Luke234: iirc you build them with ant
[23:18] Guthur sustrik: will it be possible for 0MQ to pass in an extended OVERLAPPED struct to pipe ops for use with IOCP, where the OVERLAPPED struct basically has the standard content plus what would usually be in poll_entry_t
[23:19] Guthur there is other possibilities though
[23:20] Guthur we could just pass a generic extend OVERLAPPED struct with the OP set, and use the completion key to get the poll_entry_t
[23:20] Guthur which might be neater