{"action":"created","issue":{"url":"https://api.github.com/repos/zeromq/czmq/issues/930","labels_url":"https://api.github.com/repos/zeromq/czmq/issues/930/labels{/name}","comments_url":"https://api.github.com/repos/zeromq/czmq/issues/930/comments","events_url":"https://api.github.com/repos/zeromq/czmq/issues/930/events","html_url":"https://github.com/zeromq/czmq/pull/930","id":58341088,"number":930,"title":"Problem: Unable to access zhash via other language bindings","user":{"login":"twhittock","id":6341639,"avatar_url":"https://avatars.githubusercontent.com/u/6341639?v=3","gravatar_id":"","url":"https://api.github.com/users/twhittock","html_url":"https://github.com/twhittock","followers_url":"https://api.github.com/users/twhittock/followers","following_url":"https://api.github.com/users/twhittock/following{/other_user}","gists_url":"https://api.github.com/users/twhittock/gists{/gist_id}","starred_url":"https://api.github.com/users/twhittock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twhittock/subscriptions","organizations_url":"https://api.github.com/users/twhittock/orgs","repos_url":"https://api.github.com/users/twhittock/repos","events_url":"https://api.github.com/users/twhittock/events{/privacy}","received_events_url":"https://api.github.com/users/twhittock/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-02-20T11:40:10Z","updated_at":"2015-02-21T05:41:45Z","closed_at":"2015-02-20T14:44:26Z","pull_request":{"url":"https://api.github.com/repos/zeromq/czmq/pulls/930","html_url":"https://github.com/zeromq/czmq/pull/930","diff_url":"https://github.com/zeromq/czmq/pull/930.diff","patch_url":"https://github.com/zeromq/czmq/pull/930.patch"},"body":"Solution: Generate zhash public API via zproject CLASS api"},"comment":{"url":"https://api.github.com/repos/zeromq/czmq/issues/comments/75357282","html_url":"https://github.com/zeromq/czmq/pull/930#issuecomment-75357282","issue_url":"https://api.github.com/repos/zeromq/czmq/issues/930","id":75357282,"user":{"login":"twhittock","id":6341639,"avatar_url":"https://avatars.githubusercontent.com/u/6341639?v=3","gravatar_id":"","url":"https://api.github.com/users/twhittock","html_url":"https://github.com/twhittock","followers_url":"https://api.github.com/users/twhittock/followers","following_url":"https://api.github.com/users/twhittock/following{/other_user}","gists_url":"https://api.github.com/users/twhittock/gists{/gist_id}","starred_url":"https://api.github.com/users/twhittock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twhittock/subscriptions","organizations_url":"https://api.github.com/users/twhittock/orgs","repos_url":"https://api.github.com/users/twhittock/repos","events_url":"https://api.github.com/users/twhittock/events{/privacy}","received_events_url":"https://api.github.com/users/twhittock/received_events","type":"User","site_admin":false},"created_at":"2015-02-21T05:41:45Z","updated_at":"2015-02-21T05:41:45Z","body":"@jemc Yes this was why I started wrapping CZMQ types - zyre bindings are unusable at the moment because there's no zhash, zlist or zmsg class available.\r\nI was thinking once I got those classes exported from CZMQ I'd focus on the import problem. A couple of thoughts as to the design:\r\n\r\n1. Leave it as it is, and provide cast operations to the user. This is pretty unpleasant, and loses vital memory management information regarding 'fresh' versus references as return values and arguments which delete the input parameter. I'm not in favour of this at all.\r\n2. Install the (possibly preprocessed with api nodes) project.xml for each class somewhere in /usr/local - then the build system could find these, somehow (configure --prefix notwithstanding, platform independence notwithstanding)\r\n3. Extend `uses` to specify the classes imported from that library, as forward declarations. It becomes an error to refer to a type which has not been imported explicitly from a library. The classes exist only as the equivalent of a forward declaration, but this is enough I think to rely on it in most languages. This was my first idea, and still my favourite - it makes everything explicit, and very clear from a high level who uses which facilities of what libraries. It is more restrictive, however."}}