{"action":"created","issue":{"url":"https://api.github.com/repos/fluent/fluentd/issues/563","labels_url":"https://api.github.com/repos/fluent/fluentd/issues/563/labels{/name}","comments_url":"https://api.github.com/repos/fluent/fluentd/issues/563/comments","events_url":"https://api.github.com/repos/fluent/fluentd/issues/563/events","html_url":"https://github.com/fluent/fluentd/issues/563","id":63636259,"number":563,"title":"[PROPOSAL] Supported Ruby versions: 2.1 or later","user":{"login":"tagomoris","id":230654,"avatar_url":"https://avatars.githubusercontent.com/u/230654?v=3","gravatar_id":"","url":"https://api.github.com/users/tagomoris","html_url":"https://github.com/tagomoris","followers_url":"https://api.github.com/users/tagomoris/followers","following_url":"https://api.github.com/users/tagomoris/following{/other_user}","gists_url":"https://api.github.com/users/tagomoris/gists{/gist_id}","starred_url":"https://api.github.com/users/tagomoris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tagomoris/subscriptions","organizations_url":"https://api.github.com/users/tagomoris/orgs","repos_url":"https://api.github.com/users/tagomoris/repos","events_url":"https://api.github.com/users/tagomoris/events{/privacy}","received_events_url":"https://api.github.com/users/tagomoris/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/fluent/fluentd/labels/v0.14","name":"v0.14","color":"009800"},{"url":"https://api.github.com/repos/fluent/fluentd/labels/v1","name":"v1","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-03-23T06:17:05Z","updated_at":"2015-03-23T07:10:39Z","closed_at":null,"body":"I propose that we should be going to define **Supported Ruby Versions** explicitly, and to decide it for v0.14 as **Ruby 2.1 or later**.\r\n\r\nPros:\r\n* Ruby 2.0 requires default value for method keyword arguments\r\n  * This specification requires programmers to check method values are specified or not in all methods\r\n  * This requirements brings many terrible code and bugs\r\n  * Ruby 2.1 allows to use keyword arguments without default values (and raises ArgumentError if not specified)\r\n* At Ruby 2.1, `def` returns symbol\r\n  * This allows to write `private def private_method_name()`, and this method signature makes code clear\r\n* Ruby 2.1 `String` has `#scrub`\r\n  * Invalid bytes of UTF-8 brings tons of clashes\r\n* Ruby 2.1 `Socket#getifaddrs`\r\n  * Networking is very important for fluentd, and this method make it better\r\n\r\nCons:\r\n* Supported versions of ruby is Ruby2.0 in both of RHEL/CentOS7 and Ubuntu LTS\r\n  * But these ruby packages has dead-lock bug of `require`\r\n  * Many fluentd users don't use system ruby for fluentd now\r\n\r\nToday (March 2015), Ruby 1.9.x is not maintained. So we don't support Fluentd on ruby 1.9.x even in Fluentd v0.12.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/fluent/fluentd/issues/comments/84848370","html_url":"https://github.com/fluent/fluentd/issues/563#issuecomment-84848370","issue_url":"https://api.github.com/repos/fluent/fluentd/issues/563","id":84848370,"user":{"login":"repeatedly","id":16928,"avatar_url":"https://avatars.githubusercontent.com/u/16928?v=3","gravatar_id":"","url":"https://api.github.com/users/repeatedly","html_url":"https://github.com/repeatedly","followers_url":"https://api.github.com/users/repeatedly/followers","following_url":"https://api.github.com/users/repeatedly/following{/other_user}","gists_url":"https://api.github.com/users/repeatedly/gists{/gist_id}","starred_url":"https://api.github.com/users/repeatedly/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/repeatedly/subscriptions","organizations_url":"https://api.github.com/users/repeatedly/orgs","repos_url":"https://api.github.com/users/repeatedly/repos","events_url":"https://api.github.com/users/repeatedly/events{/privacy}","received_events_url":"https://api.github.com/users/repeatedly/received_events","type":"User","site_admin":false},"created_at":"2015-03-23T07:10:39Z","updated_at":"2015-03-23T07:10:39Z","body":"From td-agent view, td-agent 2 already uses Ruby 2.1.\r\nOlder td-agent 1 uses Ruby 1.9 and td-agent 1 never update Ruby and Fluentd major versions.\r\nSo dropping Ruby 2.0 is no impact in td-agent world."}}