{"action":"created","issue":{"url":"https://api.github.com/repos/pure-data/pure-data/issues/300","repository_url":"https://api.github.com/repos/pure-data/pure-data","labels_url":"https://api.github.com/repos/pure-data/pure-data/issues/300/labels{/name}","comments_url":"https://api.github.com/repos/pure-data/pure-data/issues/300/comments","events_url":"https://api.github.com/repos/pure-data/pure-data/issues/300/events","html_url":"https://github.com/pure-data/pure-data/pull/300","id":293177401,"node_id":"MDExOlB1bGxSZXF1ZXN0MTY2Mjc0MzM1","number":300,"title":"prevent double-precision externals from crashing a single-precision Pd (and vice versa)","user":{"login":"umlaeute","id":214034,"node_id":"MDQ6VXNlcjIxNDAzNA==","avatar_url":"https://avatars1.githubusercontent.com/u/214034?v=4","gravatar_id":"","url":"https://api.github.com/users/umlaeute","html_url":"https://github.com/umlaeute","followers_url":"https://api.github.com/users/umlaeute/followers","following_url":"https://api.github.com/users/umlaeute/following{/other_user}","gists_url":"https://api.github.com/users/umlaeute/gists{/gist_id}","starred_url":"https://api.github.com/users/umlaeute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/umlaeute/subscriptions","organizations_url":"https://api.github.com/users/umlaeute/orgs","repos_url":"https://api.github.com/users/umlaeute/repos","events_url":"https://api.github.com/users/umlaeute/events{/privacy}","received_events_url":"https://api.github.com/users/umlaeute/received_events","type":"User","site_admin":false},"labels":[{"id":122642816,"node_id":"MDU6TGFiZWwxMjI2NDI4MTY=","url":"https://api.github.com/repos/pure-data/pure-data/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":{"login":"millerpuckette","id":2308323,"node_id":"MDQ6VXNlcjIzMDgzMjM=","avatar_url":"https://avatars2.githubusercontent.com/u/2308323?v=4","gravatar_id":"","url":"https://api.github.com/users/millerpuckette","html_url":"https://github.com/millerpuckette","followers_url":"https://api.github.com/users/millerpuckette/followers","following_url":"https://api.github.com/users/millerpuckette/following{/other_user}","gists_url":"https://api.github.com/users/millerpuckette/gists{/gist_id}","starred_url":"https://api.github.com/users/millerpuckette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/millerpuckette/subscriptions","organizations_url":"https://api.github.com/users/millerpuckette/orgs","repos_url":"https://api.github.com/users/millerpuckette/repos","events_url":"https://api.github.com/users/millerpuckette/events{/privacy}","received_events_url":"https://api.github.com/users/millerpuckette/received_events","type":"User","site_admin":false},"assignees":[{"login":"millerpuckette","id":2308323,"node_id":"MDQ6VXNlcjIzMDgzMjM=","avatar_url":"https://avatars2.githubusercontent.com/u/2308323?v=4","gravatar_id":"","url":"https://api.github.com/users/millerpuckette","html_url":"https://github.com/millerpuckette","followers_url":"https://api.github.com/users/millerpuckette/followers","following_url":"https://api.github.com/users/millerpuckette/following{/other_user}","gists_url":"https://api.github.com/users/millerpuckette/gists{/gist_id}","starred_url":"https://api.github.com/users/millerpuckette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/millerpuckette/subscriptions","organizations_url":"https://api.github.com/users/millerpuckette/orgs","repos_url":"https://api.github.com/users/millerpuckette/repos","events_url":"https://api.github.com/users/millerpuckette/events{/privacy}","received_events_url":"https://api.github.com/users/millerpuckette/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/pure-data/pure-data/milestones/4","html_url":"https://github.com/pure-data/pure-data/milestone/4","labels_url":"https://api.github.com/repos/pure-data/pure-data/milestones/4/labels","id":3022430,"node_id":"MDk6TWlsZXN0b25lMzAyMjQzMA==","number":4,"title":"0.49","description":"Release 0.49","creator":{"login":"umlaeute","id":214034,"node_id":"MDQ6VXNlcjIxNDAzNA==","avatar_url":"https://avatars1.githubusercontent.com/u/214034?v=4","gravatar_id":"","url":"https://api.github.com/users/umlaeute","html_url":"https://github.com/umlaeute","followers_url":"https://api.github.com/users/umlaeute/followers","following_url":"https://api.github.com/users/umlaeute/following{/other_user}","gists_url":"https://api.github.com/users/umlaeute/gists{/gist_id}","starred_url":"https://api.github.com/users/umlaeute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/umlaeute/subscriptions","organizations_url":"https://api.github.com/users/umlaeute/orgs","repos_url":"https://api.github.com/users/umlaeute/repos","events_url":"https://api.github.com/users/umlaeute/events{/privacy}","received_events_url":"https://api.github.com/users/umlaeute/received_events","type":"User","site_admin":false},"open_issues":17,"closed_issues":8,"state":"open","created_at":"2018-01-09T10:33:01Z","updated_at":"2018-09-09T04:04:37Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2018-01-31T14:28:32Z","updated_at":"2018-09-09T20:35:40Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/pure-data/pure-data/pulls/300","html_url":"https://github.com/pure-data/pure-data/pull/300","diff_url":"https://github.com/pure-data/pure-data/pull/300.diff","patch_url":"https://github.com/pure-data/pure-data/pull/300.patch"},"body":"this implements a simple, API-compatible mechanism to prevent double-precision externals from being loaded into a single-precision Pd and vice versa, as [proposed on the mailnglist](https://lists.puredata.info/pipermail/pd-dev/2015-02/020073.html) and mentioned in #299 \r\n\r\n## how it works\r\n- single-precision (`PD_FLOATTYPE==32`) externals use `class_new()` to register new classes\r\n- double-precision (`PD_FLOATTYPE==64`) externals use `class_new64()` to register new classes\r\n\r\nif an external uses the wrong variant of `class_new` (e.g. `class_new64()` on a single-precision Pd host) will yield an error message and the class will not be registered (with `class_new` returning `NULL`).\r\n\r\nAPI compatibility is kept by using a pre-processor define, so externals keep using `class_new` in their code, but it gets magically replaced with `class_new64`, if `PD_FLOATTYPE==64`.\r\n\r\nABI (binary) compatibility is retained for single-precision externals (since we still use `class_new()`), but not for double-precision externals.\r\n\r\nthis also adds some NULL-pointer checks to functions with a `t_class*` argument, since practically all externals do not check whether `class_new` returns *NULL*."},"comment":{"url":"https://api.github.com/repos/pure-data/pure-data/issues/comments/419743195","html_url":"https://github.com/pure-data/pure-data/pull/300#issuecomment-419743195","issue_url":"https://api.github.com/repos/pure-data/pure-data/issues/300","id":419743195,"node_id":"MDEyOklzc3VlQ29tbWVudDQxOTc0MzE5NQ==","user":{"login":"millerpuckette","id":2308323,"node_id":"MDQ6VXNlcjIzMDgzMjM=","avatar_url":"https://avatars2.githubusercontent.com/u/2308323?v=4","gravatar_id":"","url":"https://api.github.com/users/millerpuckette","html_url":"https://github.com/millerpuckette","followers_url":"https://api.github.com/users/millerpuckette/followers","following_url":"https://api.github.com/users/millerpuckette/following{/other_user}","gists_url":"https://api.github.com/users/millerpuckette/gists{/gist_id}","starred_url":"https://api.github.com/users/millerpuckette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/millerpuckette/subscriptions","organizations_url":"https://api.github.com/users/millerpuckette/orgs","repos_url":"https://api.github.com/users/millerpuckette/repos","events_url":"https://api.github.com/users/millerpuckette/events{/privacy}","received_events_url":"https://api.github.com/users/millerpuckette/received_events","type":"User","site_admin":false},"created_at":"2018-09-09T20:35:40Z","updated_at":"2018-09-09T20:35:40Z","author_association":"CONTRIBUTOR","body":"I think this can be done better by having 64-bit-float versions of Pd call xxx_setup64().  That way,\r\na single object file could have both 32 and 64 bit code."}}
{"actor":{"display_login":"millerpuckette"}}