{"action":"created","issue":{"url":"https://api.github.com/repos/Shoes3/shoes3/issues/352","repository_url":"https://api.github.com/repos/Shoes3/shoes3","labels_url":"https://api.github.com/repos/Shoes3/shoes3/issues/352/labels{/name}","comments_url":"https://api.github.com/repos/Shoes3/shoes3/issues/352/comments","events_url":"https://api.github.com/repos/Shoes3/shoes3/issues/352/events","html_url":"https://github.com/Shoes3/shoes3/issues/352","id":222293267,"number":352,"title":"Include ffi gem ","user":{"login":"ccoupe","id":222691,"avatar_url":"https://avatars0.githubusercontent.com/u/222691?v=3","gravatar_id":"","url":"https://api.github.com/users/ccoupe","html_url":"https://github.com/ccoupe","followers_url":"https://api.github.com/users/ccoupe/followers","following_url":"https://api.github.com/users/ccoupe/following{/other_user}","gists_url":"https://api.github.com/users/ccoupe/gists{/gist_id}","starred_url":"https://api.github.com/users/ccoupe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ccoupe/subscriptions","organizations_url":"https://api.github.com/users/ccoupe/orgs","repos_url":"https://api.github.com/users/ccoupe/repos","events_url":"https://api.github.com/users/ccoupe/events{/privacy}","received_events_url":"https://api.github.com/users/ccoupe/received_events","type":"User","site_admin":false},"labels":[{"id":164486882,"url":"https://api.github.com/repos/Shoes3/shoes3/labels/Normal","name":"Normal","color":"C0C0C0","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/Shoes3/shoes3/milestones/9","html_url":"https://github.com/Shoes3/shoes3/milestone/9","labels_url":"https://api.github.com/repos/Shoes3/shoes3/milestones/9/labels","id":1924698,"number":9,"title":"3.3.3","description":"Add graph widget","creator":{"login":"ccoupe","id":222691,"avatar_url":"https://avatars0.githubusercontent.com/u/222691?v=3","gravatar_id":"","url":"https://api.github.com/users/ccoupe","html_url":"https://github.com/ccoupe","followers_url":"https://api.github.com/users/ccoupe/followers","following_url":"https://api.github.com/users/ccoupe/following{/other_user}","gists_url":"https://api.github.com/users/ccoupe/gists{/gist_id}","starred_url":"https://api.github.com/users/ccoupe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ccoupe/subscriptions","organizations_url":"https://api.github.com/users/ccoupe/orgs","repos_url":"https://api.github.com/users/ccoupe/repos","events_url":"https://api.github.com/users/ccoupe/events{/privacy}","received_events_url":"https://api.github.com/users/ccoupe/received_events","type":"User","site_admin":false},"open_issues":21,"closed_issues":11,"state":"open","created_at":"2016-08-05T03:39:01Z","updated_at":"2017-04-18T03:43:55Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2017-04-18T03:43:55Z","updated_at":"2017-04-18T06:40:01Z","closed_at":null,"body":"Now that I have looked at fiddle - built into Shoes,  and the [ffi gem,](https://github.com/ffi/ffi).  I prefer the ffi gem's api for any future work. I'm thinking should be part of Shoes download. It can coexist with fiddle so it's not a a one versus the other.  Why do I like ffi? - here's a test for fiddle to get the gtk version number: \r\n```ruby\r\nrequire 'fiddle'\r\nrequire 'fiddle/import'\r\nmodule GtkVer\r\n  extend Fiddle::Importer\r\n  dlload '/usr/lib/x86_64-linux-gnu/libgtk-3.so'\r\n  extern 'int gtk_get_major_version ()'\r\n  extern 'int gtk_get_minor_version ()'\r\nend\r\nputs \"#{GtkVer.gtk_get_major_version()}.#{GtkVer.gtk_get_minor_version()}\"\r\n```\r\nand using ffi\r\n```ruby\r\nrequire 'ffi'\r\nmodule GtkFun\r\n  extend FFI::Library\r\n  ffi_lib_flags :now, :global\r\n  ffi_lib [FFI::CURRENT_PROCESS, 'gtk-3']\r\n  attach_function :gtk_get_major_version, [], :int\r\n  attach_function :gtk_get_minor_version, [], :int\r\n  attach_funttion :gtk_window_get_opacity [ :pointer ], :double\r\nend\r\nputs \"#{GtkFun.gtk_get_major_version()}.#{GtkFun.gtk_get_minor_version()}\"\r\n```\r\nIn my small, limited world view ;-),  I really like that `ffi_lib [FFI::CURRENT_PROCESS, 'gtk-3']` ability to only look for functions in a certain, already loaded library.  It doesn't require any guessing or path testing  of where the gtk-3 so/dll lives and is noticeably faster. On the downside it's less DSL. \r\n\r\nOpinions?  It's not going t change videoffi.rb (still works and does have to search paths)"},"comment":{"url":"https://api.github.com/repos/Shoes3/shoes3/issues/comments/294703049","html_url":"https://github.com/Shoes3/shoes3/issues/352#issuecomment-294703049","issue_url":"https://api.github.com/repos/Shoes3/shoes3/issues/352","id":294703049,"user":{"login":"ccoupe","id":222691,"avatar_url":"https://avatars0.githubusercontent.com/u/222691?v=3","gravatar_id":"","url":"https://api.github.com/users/ccoupe","html_url":"https://github.com/ccoupe","followers_url":"https://api.github.com/users/ccoupe/followers","following_url":"https://api.github.com/users/ccoupe/following{/other_user}","gists_url":"https://api.github.com/users/ccoupe/gists{/gist_id}","starred_url":"https://api.github.com/users/ccoupe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ccoupe/subscriptions","organizations_url":"https://api.github.com/users/ccoupe/orgs","repos_url":"https://api.github.com/users/ccoupe/repos","events_url":"https://api.github.com/users/ccoupe/events{/privacy}","received_events_url":"https://api.github.com/users/ccoupe/received_events","type":"User","site_admin":false},"created_at":"2017-04-18T06:40:01Z","updated_at":"2017-04-18T06:40:01Z","body":"Moments of levity. Who knew about [Pity Party Clown](https://www.youtube.com/watch?v=DwSeXU1gLfc)"}}
{"actor":{"display_login":"ccoupe"}}