From e9d6c7f949df32300bc052e6136d26308ec6e70e Mon Sep 17 00:00:00 2001 From: Goudarz <goudarz.jafari@gmail.com> Date: Fri, 31 May 2019 15:17:11 +0430 Subject: [PATCH 01/10] Added Persian translation --- .github/CODEOWNERS | 2 + _config.yml | 111 ++++ _includes/languages.html | 1 + _layouts/default.html | 8 +- fa/about/index.md | 240 ++++++++ fa/about/license.txt | 56 ++ fa/about/logo/index.md | 22 + fa/about/website/index.md | 60 ++ fa/community/conferences/index.md | 92 +++ fa/community/index.md | 59 ++ fa/community/mailing-lists/index.md | 49 ++ .../manual-instructions/index.md | 63 ++ .../ruby-talk-guidelines/index.md | 82 +++ fa/community/podcasts/index.md | 18 + fa/community/ruby-core/index.md | 166 ++++++ .../ruby-core/writing-patches/index.md | 52 ++ fa/community/user-groups/index.md | 44 ++ fa/community/weblogs/index.md | 48 ++ fa/conduct/index.md | 22 + fa/documentation/faq/1/index.md | 344 +++++++++++ fa/documentation/faq/10/index.md | 145 +++++ fa/documentation/faq/11/index.md | 192 +++++++ fa/documentation/faq/2/index.md | 102 ++++ fa/documentation/faq/3/index.md | 212 +++++++ fa/documentation/faq/4/index.md | 428 ++++++++++++++ fa/documentation/faq/5/index.md | 237 ++++++++ fa/documentation/faq/6/index.md | 293 ++++++++++ fa/documentation/faq/7/index.md | 442 ++++++++++++++ fa/documentation/faq/8/index.md | 378 ++++++++++++ fa/documentation/faq/9/index.md | 372 ++++++++++++ fa/documentation/faq/index.md | 62 ++ fa/documentation/index.md | 175 ++++++ fa/documentation/installation/index.md | 355 ++++++++++++ fa/documentation/quickstart/2/index.md | 126 ++++ fa/documentation/quickstart/3/index.md | 230 ++++++++ fa/documentation/quickstart/4/index.md | 156 +++++ fa/documentation/quickstart/index.md | 144 +++++ .../ruby-from-other-languages/index.md | 426 ++++++++++++++ .../to-ruby-from-c-and-cpp/index.md | 149 +++++ .../to-ruby-from-java/index.md | 60 ++ .../to-ruby-from-perl/index.md | 68 +++ .../to-ruby-from-php/index.md | 51 ++ .../to-ruby-from-python/index.md | 83 +++ fa/documentation/success-stories/index.md | 88 +++ fa/downloads/branches/index.md | 43 ++ fa/downloads/index.md | 80 +++ fa/downloads/mirrors/index.md | 67 +++ fa/downloads/releases/index.md | 38 ++ fa/examples/cities.md | 21 + fa/examples/greeter.md | 22 + fa/examples/hello_world.md | 17 + fa/examples/i_love_ruby.md | 17 + fa/feeds/news.rss | 4 + fa/index.html | 38 ++ fa/libraries/index.md | 135 +++++ ...2001-01-18-stable-snapshot-is-available.md | 13 + .../2001-04-19-ruby-pocket-reference.md | 13 + fa/news/_posts/2001-06-20-ruby-garden.md | 12 + ...-07-10-removed-language-comparison-page.md | 15 + ...01-07-13-ruby-introduction-presentation.md | 13 + .../2002-01-06-ruby-cvs-repository-guide.md | 39 ++ .../2002-02-01-report-security-issues.md | 11 + fa/news/_posts/2002-03-01-167-is-released.md | 12 + ...18-dutch-translation-of-wwwruby-langorg.md | 13 + fa/news/_posts/2002-10-24-raa-replaced.md | 44 ++ ...2-11-01-my20021101-ruby-conference-2002.md | 22 + ...by-installer-for-windows-at-sourceforge.md | 28 + ...002-12-05-matzs-slides-at-4-conferences.md | 30 + fa/news/_posts/2002-12-07-raa-2-1-0.md | 50 ++ ...02-12-09-raa-xml-interfaces-are-updated.md | 33 ++ .../_posts/2002-12-11-ruby-hacking-guide.md | 539 ++++++++++++++++++ ...y-langorg-renewal-trial-website-offered.md | 36 ++ ...2-12-18-color-scheme-of-wwwruby-langorg.md | 19 + ...02-12-24-ruby-1-6-8-and-1-8-0-preview-1.md | 24 + ...2003-01-07-ruby-in-2002-contents-wanted.md | 24 + fa/news/_posts/2003-01-31-raa-2-3-0.md | 21 + ...03-02-21-first-europeen-ruby-conference.md | 21 + .../_posts/2003-02-24-happy-birthday-ruby.md | 20 + .../_posts/2003-08-04-ruby-180-released.md | 32 ++ .../_posts/2003-10-01-ruby-conference-2003.md | 21 + .../_posts/2003-10-30-ruby-181-preview2.md | 17 + ...-23-ruby-standard-library-documentation.md | 11 + .../_posts/2003-12-05-ruby-181-preview3.md | 14 + ...-19-new-ruby-change-request-rcr-process.md | 24 + .../2003-12-20-oreilly-onlamp-ruby-article.md | 20 + fa/news/_posts/2003-12-25-ruby-181-is-out.md | 24 + .../2004-01-07-matz-on-craftsmanship.md | 15 + fa/news/_posts/2004-01-17-rss-feed-started.md | 10 + .../_posts/2004-01-29-how-to-write-an-rcr.md | 15 + ...ruby-talk-mailing-posting-policy-change.md | 14 + ...004-02-16-ruby-article-in-linux-journal.md | 16 + ...04-12-ruby-track-and-tutorials-at-oscon.md | 17 + ...-rubyconf-2004-pre-registration-is-open.md | 17 + ...04-05-29-heliumruby-langorg-was-cracked.md | 27 + ...by-langorg-mailing-list-service-restart.md | 35 ++ .../2004-06-15-wwwftp-service-restart.md | 15 + ...004-06-22-anonymous-cvs-service-restart.md | 26 + .../2004-06-24-cvsweb-service-restart.md | 13 + ...s-added-to-the-anonymous-cvs-repository.md | 19 + ...oap4rlibcsvmodruby-old-to-anonymous-cvs.md | 11 + ...06-suspended-libsoap4r-and-libcsv-again.md | 18 + .../2004-07-21-ruby-182-preview1-released.md | 18 + ...-of-the-intrusion-on-heliumruby-langorg.md | 428 ++++++++++++++ .../2004-07-30-ruby-182-preview2-released.md | 18 + ...-31-rubyconf-2004-registration-now-open.md | 18 + ...08-08-brad-cox-to-keynote-rubyconf-2004.md | 17 + ...8-korean-translation-of-wwwruby-langorg.md | 13 + fa/news/_posts/2004-09-22-ruby-forum.md | 17 + .../2004-09-29-rsync-service-restart.md | 10 + .../2004-11-08-182-preview3-released.md | 19 + ...t-program-announced-by-ruby-central-inc.md | 18 + ...okshelf-planning-a-series-of-ruby-books.md | 20 + .../2004-12-22-182-preview4-released.md | 19 + ...-chinese-translation-of-wwwruby-langorg.md | 13 + .../_posts/2004-12-26-ruby-182-released.md | 22 + fa/news/_posts/2005-02-20-ruby-weekly-news.md | 19 + ...1-rubycentral-codefest-grants-announced.md | 17 + ...-rubyconf-2005-preregistration-now-open.md | 16 + .../_posts/2005-04-14-server-maintenance.md | 10 + ...005-04-19-anonymous-cvs-service-stopped.md | 13 + ...005-04-27-anonymous-cvs-service-restart.md | 9 + ...005-06-22-upgrade-to-debian-gnulinux-31.md | 11 + ...05-07-01-xmlrpcipimethods-vulnerability.md | 37 ++ .../_posts/2005-07-02-securityruby-langorg.md | 12 + ...-20-rubyconf-2005-registration-tops-100.md | 14 + ...f-2005-registration-time-is-running-out.md | 17 + ...ation-for-rubyconf-2005-is-closing-soon.md | 18 + .../_posts/2005-09-21-ruby-183-released.md | 13 + ...ulnerability-in-the-safe-level-settings.md | 61 ++ fa/news/_posts/2005-10-10-euruko-2005.md | 18 + ...5-10-11-new-ruby-web-magazine-goes-live.md | 27 + .../2005-12-14-ruby-184-preview-2-released.md | 13 + .../_posts/2005-12-24-ruby-184-released.md | 14 + .../2006-02-09-conference-season-is-here.md | 31 + ...006-04-19-ruby-in-google-summer-of-code.md | 17 + .../_posts/2006-06-20-the-future-of-ruby.md | 23 + .../_posts/2006-08-29-ruby-1-8-5-released.md | 19 + .../2006-08-30-server-maintenance-20060830.md | 11 + .../_posts/2006-09-12-site-launch-at-last.md | 57 ++ ...2006-10-18-rubyconf-2006-almost-upon-us.md | 33 ++ .../_posts/2006-10-26-rubyconf-2006-recap.md | 53 ++ fa/news/_posts/2006-11-03-CVE-2006-5467.md | 49 ++ ...nother-dos-vulnerability-in-cgi-library.md | 51 ++ ...12-20-ruby-on-rails-bootcamp-in-germany.md | 15 + .../2006-12-22-cvs-repository-moved-to-svn.md | 21 + ...12-27-ruby-on-rails-bootcamp-in-georgia.md | 15 + ...est-rubyconf-2007-registration-now-open.md | 18 + ...-01-26-mountainwest-speaker-list-posted.md | 16 + .../_posts/2007-02-21-ip-address-change.md | 13 + ...ervices-will-be-permanently-unavailable.md | 13 + .../_posts/2007-03-12-ruby-1-8-6-released.md | 42 ++ ...ccepted-for-rubyconf-2007-presentations.md | 20 + .../_posts/2007-09-01-ruby-logo-contest.md | 13 + ...-06-rubyconf-2007-registration-now-open.md | 15 + ...uruko-2007-the-european-ruby-conference.md | 19 + .../2007-10-04-net-https-vulnerability.md | 72 +++ .../_posts/2007-12-25-ruby-1-9-0-released.md | 28 + .../_posts/2008-01-09-ruby-logo-available.md | 14 + .../2008-01-24-ruby-fools-conference.md | 15 + .../2008-02-04-mountainwest-rubyconf-2008.md | 19 + ...25-european-ruby-conference-2008-euruko.md | 15 + .../2008-02-27-scotland-on-rails-2008.md | 29 + ...03-03-webrick-file-access-vulnerability.md | 83 +++ .../_posts/2008-04-11-tulsa-ruby-workshop.md | 32 ++ .../2008-05-22-server-maintenance-20080523.md | 10 + ...2008-05-31-ruby-1-8-7-has-been-released.md | 53 ++ fa/news/_posts/2008-06-16-rubynation-2008.md | 15 + ...rbitrary-code-execution-vulnerabilities.md | 78 +++ ...yconf-2008-proposals-now-being-accepted.md | 17 + ...-08-08-multiple-vulnerabilities-in-ruby.md | 173 ++++++ ...-ruby-1-8-7-p72-and-1-8-6-p287-released.md | 63 ++ .../2008-08-23-dos-vulnerability-in-rexml.md | 103 ++++ .../2008-09-09-voices-that-matter-2008.md | 16 + .../2008-10-02-rubyconf-2008-is-sold-out.md | 16 + ...008-10-28-ruby-1-9-1-preview-1-released.md | 43 ++ ...ountainwest-rubyconf-2009-dates-and-cfp.md | 24 + .../2008-11-10-scotland-on-rails-2009.md | 29 + .../2008-11-27-rubyconf-2008-summary-video.md | 16 + ...conf-2009-proposal-deadline-approaching.md | 20 + .../2009-01-28-20090131-server-maintenance.md | 8 + .../_posts/2009-01-30-ruby-1-9-1-released.md | 61 ++ ...09-02-25-mountainwest-rubyconf-schedule.md | 21 + ...ruby-1-8-7-p160-and-1-8-6-p368-released.md | 71 +++ .../2009-05-12-ruby-1-9-1-p129-released.md | 13 + ...-1-8-6-maintenance-moved-to-engine-yard.md | 24 + ...9-06-09-dos-vulnerability-in-bigdecimal.md | 52 ++ .../2009-07-20-ruby-1-9-1-p243-released.md | 52 ++ ...009-07-20-ruby-1-9-2-preview-1-released.md | 60 ++ ...03-call-for-proposals-for-rubyconf-2009.md | 20 + .../_posts/2009-09-04-rubyworld-conference.md | 20 + .../2009-12-03-mountainwest-rubyconf-2010.md | 23 + .../2009-12-07-heap-overflow-in-string.md | 39 ++ .../2009-12-07-ruby-1-9-1-p376-is-released.md | 73 +++ .../2009-12-25-ruby-1-8-7-p248-released.md | 37 ++ ...01-10-webrick-escape-sequence-injection.md | 84 +++ fa/news/_posts/2010-03-06-rubynation-2010.md | 17 + .../2010-03-17-red-dirt-rubyconf-2010.md | 115 ++++ .../2010-03-26-ruby-summer-of-code-2010.md | 32 ++ .../2010-06-23-ruby-1-8-7-p299-released.md | 33 ++ .../2010-07-02-ruby-1-9-1-p429-is-released.md | 55 ++ .../2010-07-02-ruby-1-9-2-rc1-is-released.md | 61 ++ .../2010-07-11-ruby-1-9-2-rc2-is-released.md | 62 ++ .../2010-08-16-ruby-1-8-7-p302-is-released.md | 55 ++ .../2010-08-16-ruby-1-9-1-p430-is-released.md | 50 ++ ...2010-08-16-xss-in-webrick-cve-2010-0541.md | 79 +++ .../_posts/2010-08-18-ruby-1-9-2-released.md | 106 ++++ ...matz-in-san-francisco-or-silicon-valley.md | 23 + .../2010-11-17-fukuoka-ruby-award-2011.md | 23 + .../2010-12-25-ruby-1-8-7-p330-released.md | 42 ++ .../2010-12-25-ruby-1-9-2-p136-is-released.md | 48 ++ ...02-18-exception-methods-can-bypass-safe.md | 59 ++ ...s-is-vulnerable-to-symlink-race-attacks.md | 66 +++ ...ed-maintenance-of-redmine-ruby-lang-org.md | 17 + .../2011-07-02-ruby-1-8-7-p352-released.md | 36 ++ .../2011-07-15-ruby-1-9-2-p290-is-released.md | 52 ++ ...1-ruby-1-9-3-preview1-has-been-released.md | 61 ++ ...confoo-2012-call-for-papers-is-now-open.md | 33 ++ ...-09-24-ruby-1-9-3-rc1-has-been-released.md | 37 ++ fa/news/_posts/2011-10-06-plans-for-1-8-7.md | 38 ++ ...0-12-programming-competitions-with-matz.md | 51 ++ .../2011-10-31-ruby-1-9-3-p0-is-released.md | 36 ++ ...-for-rubys-hash-algorithm-cve-2011-4815.md | 89 +++ .../2012-02-16-ruby-1-9-3-p125-is-released.md | 55 ++ ...16-security-fix-for-ruby-openssl-module.md | 50 ++ ...earns-the-fsfs-2011-free-software-award.md | 21 + fa/news/_posts/2012-04-10-rubyteach-2012.md | 22 + .../2012-04-20-ruby-1-9-3-p194-is-released.md | 76 +++ .../2012-04-21-ruby-1-9-2-p320-is-released.md | 76 +++ .../2012-05-30-server-maintenance-20120606.md | 8 + fa/news/_posts/2012-06-02-a-facebook-group.md | 21 + .../2012-06-29-ruby-1-8-7-p370-released.md | 39 ++ ...-confoo-2013call-for-papers-is-now-open.md | 34 ++ .../2012-10-12-cve-2012-4464-cve-2012-4466.md | 50 ++ ...2-10-12-poisoned-NUL-byte-vulnerability.md | 46 ++ .../2012-10-12-ruby-1-9-3-p286-is-released.md | 45 ++ .../2012-10-22-rupy-2012-coming-very-soon.md | 18 + .../2012-11-09-ruby-1-9-3-p327-is-released.md | 41 ++ ...2012-11-09-ruby19-hashdos-cve-2012-5371.md | 61 ++ .../2012-11-10-fukuoka-ruby-award-2013.md | 58 ++ .../2012-12-25-ruby-1-9-3-p362-is-released.md | 52 ++ .../2013-01-17-ruby-1-9-3-p374-is-released.md | 53 ++ ...2013-01-23-confoo-with-ruby-in-montreal.md | 30 + .../2013-02-06-rdoc-xss-cve-2013-0256.md | 88 +++ .../2013-02-06-ruby-1-9-3-p385-is-released.md | 54 ++ .../2013-02-08-ruby-2-0-0-rc2-is-released.md | 120 ++++ .../2013-02-15-the-2013-ruby-hero-awards.md | 25 + ...ruby-conference-call-for-papers-is-open.md | 29 + .../2013-02-22-json-dos-cve-2013-0269.md | 104 ++++ .../_posts/2013-02-22-rexml-dos-2013-02-22.md | 108 ++++ .../2013-02-22-ruby-1-9-3-p392-is-released.md | 58 ++ .../2013-02-24-ruby-2-0-0-p0-is-released.md | 191 +++++++ .../2013-05-14-ruby-1-9-3-p429-is-released.md | 47 ++ .../2013-05-14-ruby-2-0-0-p195-is-released.md | 109 ++++ ...14-taint-bypass-dl-fiddle-cve-2013-2065.md | 109 ++++ .../2013-06-12-new-ruby-lang-org-released.md | 33 ++ ...ability-in-openssl-client-cve-2013-4073.md | 62 ++ .../2013-06-27-ruby-1-8-7-p374-is-released.md | 42 ++ .../2013-06-27-ruby-1-9-3-p448-is-released.md | 44 ++ .../2013-06-27-ruby-2-0-0-p247-is-released.md | 82 +++ fa/news/_posts/2013-06-30-we-retire-1-8-7.md | 45 ++ fa/news/_posts/2013-08-06-status-issue.md | 69 +++ fa/news/_posts/2013-08-08-rip-raa.md | 26 + fa/news/_posts/2013-08-29-confoo-cfp.md | 35 ++ .../2013-09-03-vietnamese-translation.md | 27 + .../_posts/2013-09-07-we-use-fastly-cdn.md | 18 + ...3-09-23-ruby-2-1-0-preview1-is-released.md | 69 +++ fa/news/_posts/2013-09-28-design-contest.md | 23 + fa/news/_posts/2013-10-04-rubyconf-au-2014.md | 31 + .../2013-11-21-fukuoka-ruby-award-2014.md | 71 +++ ...in-floating-point-parsing-cve-2013-4164.md | 64 +++ .../2013-11-22-ruby-1-9-3-p484-is-released.md | 43 ++ .../2013-11-22-ruby-2-0-0-p353-is-released.md | 46 ++ ...3-11-22-ruby-2-1-0-preview2-is-released.md | 73 +++ .../_posts/2013-11-30-russian-translation.md | 28 + .../_posts/2013-12-09-rubyconf-tw-2014-cfp.md | 31 + .../_posts/2013-12-14-rubyconf-india-2014.md | 26 + ...13-12-17-maintenance-of-1-8-7-and-1-9-2.md | 75 +++ .../2013-12-20-ruby-2-1-0-rc1-is-released.md | 68 +++ ...-ruby-version-policy-changes-with-2-1-0.md | 64 +++ .../2013-12-25-ruby-2-1-0-is-released.md | 52 ++ .../2014-01-10-ruby-1-9-3-will-end-on-2015.md | 18 + .../_posts/2014-01-20-abril-pro-ruby-2014.md | 24 + .../2014-02-12-the-2014-ruby-hero-awards.md | 20 + .../2014-02-24-ruby-1-9-3-p545-is-released.md | 51 ++ .../2014-02-24-ruby-2-0-0-p451-is-released.md | 41 ++ .../2014-02-24-ruby-2-1-1-is-released.md | 40 ++ ...regression-of-hash-reject-in-ruby-2-1-1.md | 45 ++ .../_posts/2014-03-14-rubyconf-taiwan-2014.md | 16 + fa/news/_posts/2014-03-15-eurucamp-2014.md | 42 ++ ...n-yaml-uri-escape-parsing-cve-2014-2525.md | 65 +++ ...2014-04-10-severe-openssl-vulnerability.md | 76 +++ ...-dispute-of-vulnerability-cve-2014-2734.md | 107 ++++ .../2014-05-09-ruby-2-0-0-p481-is-released.md | 45 ++ .../2014-05-09-ruby-2-1-2-is-released.md | 45 ++ .../2014-05-16-ruby-1-9-3-p547-released.md | 54 ++ ...-05-31-stopped-mailing-list-temporarily.md | 30 + ...ubyworld-conference-2014-speaker-invite.md | 17 + .../2014-07-01-eol-for-1-8-7-and-1-9-2.md | 34 ++ ...7-26-rubykaigi-2014-registration-online.md | 63 ++ .../2014-08-19-ruby-1-9-2-p330-released.md | 55 ++ fa/news/_posts/2014-09-10-confoo-cfp.md | 29 + ...2014-09-18-ruby-2-2-0-preview1-released.md | 80 +++ .../2014-09-19-ruby-2-0-0-p576-is-released.md | 55 ++ .../2014-09-19-ruby-2-1-3-is-released.md | 54 ++ ...hanging-default-settings-of-ext-openssl.md | 126 ++++ .../2014-10-27-rexml-dos-cve-2014-8080.md | 109 ++++ .../2014-10-27-ruby-1-9-3-p550-is-released.md | 65 +++ .../2014-10-27-ruby-2-0-0-p594-is-released.md | 58 ++ .../_posts/2014-10-27-ruby-2-1-4-released.md | 71 +++ .../_posts/2014-11-03-tropicalrb-2015-cfp.md | 20 + .../2014-11-13-rexml-dos-cve-2014-8090.md | 74 +++ .../2014-11-13-ruby-1-9-3-p551-is-released.md | 63 ++ .../2014-11-13-ruby-2-0-0-p598-is-released.md | 59 ++ .../2014-11-13-ruby-2-1-5-is-released.md | 58 ++ ...2014-11-28-ruby-2-2-0-preview2-released.md | 94 +++ .../2014-12-18-ruby-2-2-0-rc1-released.md | 91 +++ .../_posts/2014-12-25-ruby-2-2-0-released.md | 101 ++++ ...-02-23-support-for-ruby-1-9-3-has-ended.md | 15 + .../2015-02-25-ruby-2-0-0-p643-is-released.md | 57 ++ .../_posts/2015-03-03-ruby-2-2-1-released.md | 52 ++ .../2015-03-06-google-summer-of-code-2015.md | 33 ++ .../2015-04-13-ruby-2-0-0-p645-released.md | 57 ++ .../_posts/2015-04-13-ruby-2-1-6-released.md | 56 ++ .../_posts/2015-04-13-ruby-2-2-2-released.md | 54 ++ ...openssl-hostname-matching-vulnerability.md | 53 ++ fa/news/_posts/2015-06-30-ruby-prize-2015.md | 25 + ...7-14-rubyconftw-2015-call-for-proposals.md | 23 + ...04-rubyconf-taiwan-registration-is-open.md | 16 + .../2015-08-18-ruby-2-0-0-p647-released.md | 57 ++ .../_posts/2015-08-18-ruby-2-1-7-released.md | 56 ++ .../_posts/2015-08-18-ruby-2-2-3-released.md | 54 ++ fa/news/_posts/2015-08-31-confoo-cfp.md | 19 + .../2015-10-13-fukuoka-ruby-award-2016.md | 61 ++ ...2015-11-11-ruby-2-3-0-preview1-released.md | 81 +++ ...2015-12-11-ruby-2-3-0-preview2-released.md | 91 +++ .../2015-12-16-ruby-2-0-0-p648-released.md | 53 ++ .../_posts/2015-12-16-ruby-2-1-8-released.md | 55 ++ .../_posts/2015-12-16-ruby-2-2-4-released.md | 53 ++ ...ng-usage-in-fiddle-and-dl-cve-2015-7551.md | 82 +++ .../_posts/2015-12-25-ruby-2-3-0-released.md | 83 +++ ...2-24-support-plan-of-ruby-2-0-0-and-2-1.md | 42 ++ .../_posts/2016-03-30-ruby-2-1-9-released.md | 58 ++ .../_posts/2016-04-01-ruby-2-1-10-released.md | 49 ++ .../_posts/2016-04-26-ruby-2-2-5-released.md | 56 ++ .../_posts/2016-04-26-ruby-2-3-1-released.md | 51 ++ fa/news/_posts/2016-05-16-confoo-cfp.md | 19 + ...2016-06-20-ruby-2-4-0-preview1-released.md | 115 ++++ fa/news/_posts/2016-07-25-ruby-prize-2016.md | 31 + fa/news/_posts/2016-08-26-confoo-cfp.md | 20 + ...2016-09-08-ruby-2-4-0-preview2-released.md | 121 ++++ .../2016-10-20-fukuoka-ruby-award-2017.md | 66 +++ ...2016-11-09-ruby-2-4-0-preview3-released.md | 136 +++++ .../_posts/2016-11-15-ruby-2-2-6-released.md | 53 ++ .../_posts/2016-11-15-ruby-2-3-2-released.md | 54 ++ .../_posts/2016-11-21-ruby-2-3-3-released.md | 55 ++ .../2016-12-12-ruby-2-4-0-rc1-released.md | 135 +++++ .../_posts/2016-12-25-ruby-2-4-0-released.md | 125 ++++ .../_posts/2017-03-22-ruby-2-4-1-released.md | 50 ++ .../_posts/2017-03-28-ruby-2-2-7-released.md | 61 ++ .../_posts/2017-03-30-ruby-2-3-4-released.md | 66 +++ ...017-04-01-support-of-ruby-2-1-has-ended.md | 43 ++ fa/news/_posts/2017-07-21-ruby-prize-2017.md | 29 + ...29-multiple-vulnerabilities-in-rubygems.md | 59 ++ ...09-14-json-heap-exposure-cve-2017-14064.md | 39 ++ ...ssl-asn1-buffer-underrun-cve-2017-14033.md | 40 ++ .../_posts/2017-09-14-ruby-2-2-8-released.md | 57 ++ .../_posts/2017-09-14-ruby-2-3-5-released.md | 68 +++ .../_posts/2017-09-14-ruby-2-4-2-released.md | 67 +++ ...4-sprintf-buffer-underrun-cve-2017-0898.md | 34 ++ ...scape-sequence-injection-cve-2017-10784.md | 36 ++ ...2017-10-10-ruby-2-5-0-preview1-released.md | 79 +++ ...et-ftp-command-injection-cve-2017-17405.md | 40 ++ .../_posts/2017-12-14-ruby-2-2-9-released.md | 53 ++ .../_posts/2017-12-14-ruby-2-3-6-released.md | 54 ++ .../_posts/2017-12-14-ruby-2-4-3-released.md | 53 ++ .../2017-12-14-ruby-2-5-0-rc1-released.md | 90 +++ .../_posts/2017-12-25-ruby-2-5-0-released.md | 130 +++++ .../2017-12-27-fukuoka-ruby-award-2018.md | 75 +++ ...17-multiple-vulnerabilities-in-rubygems.md | 61 ++ ...2018-02-24-ruby-2-6-0-preview1-released.md | 106 ++++ ...-buffer-under-read-unpack-cve-2018-8778.md | 37 ++ ...nse-splitting-in-webrick-cve-2017-17742.md | 35 ++ ...ge-request-dos-in-webrick-cve-2018-8777.md | 35 ++ ...-28-poisoned-nul-byte-dir-cve-2018-8780.md | 37 ++ ...soned-nul-byte-unixsocket-cve-2018-8779.md | 40 ++ .../_posts/2018-03-28-ruby-2-2-10-released.md | 60 ++ .../_posts/2018-03-28-ruby-2-3-7-released.md | 67 +++ .../_posts/2018-03-28-ruby-2-4-4-released.md | 60 ++ .../_posts/2018-03-28-ruby-2-5-1-released.md | 60 ++ ...-with-directory-traversal-cve-2018-6914.md | 38 ++ ...2018-05-31-ruby-2-6-0-preview2-released.md | 127 +++++ ...018-06-20-support-of-ruby-2-2-has-ended.md | 43 ++ ...-in-some-formats-of-pack-cve-2018-16396.md | 45 ++ ...-does-not-work-correctly-cve-2018-16395.md | 60 ++ .../_posts/2018-10-17-ruby-2-3-8-released.md | 58 ++ .../_posts/2018-10-17-ruby-2-4-5-released.md | 57 ++ .../_posts/2018-10-17-ruby-2-5-2-released.md | 55 ++ .../_posts/2018-10-18-ruby-2-5-3-released.md | 55 ++ ...2018-11-06-ruby-2-6-0-preview3-released.md | 130 +++++ fa/news/_posts/2018-11-08-snap.md | 63 ++ .../2018-11-29-fukuoka-ruby-award-2019.md | 63 ++ .../2018-12-06-ruby-2-6-0-rc1-released.md | 140 +++++ .../2018-12-15-ruby-2-6-0-rc2-released.md | 144 +++++ .../_posts/2018-12-25-ruby-2-6-0-released.md | 150 +++++ .../_posts/2019-01-30-ruby-2-6-1-released.md | 51 ++ ...05-multiple-vulnerabilities-in-rubygems.md | 57 ++ .../_posts/2019-03-13-ruby-2-5-4-released.md | 49 ++ .../_posts/2019-03-13-ruby-2-6-2-released.md | 49 ++ .../_posts/2019-03-15-ruby-2-5-5-released.md | 48 ++ fa/security/index.md | 122 ++++ stylesheets/fonts/LICENSE | 51 ++ stylesheets/fonts/Vazir-Black.eot | Bin 0 -> 93214 bytes stylesheets/fonts/Vazir-Black.ttf | Bin 0 -> 93044 bytes stylesheets/fonts/Vazir-Black.woff | Bin 0 -> 53616 bytes stylesheets/fonts/Vazir-Black.woff2 | Bin 0 -> 42408 bytes stylesheets/fonts/Vazir-Bold.eot | Bin 0 -> 91930 bytes stylesheets/fonts/Vazir-Bold.ttf | Bin 0 -> 91764 bytes stylesheets/fonts/Vazir-Bold.woff | Bin 0 -> 52808 bytes stylesheets/fonts/Vazir-Bold.woff2 | Bin 0 -> 42076 bytes stylesheets/fonts/Vazir-Light.eot | Bin 0 -> 101214 bytes stylesheets/fonts/Vazir-Light.ttf | Bin 0 -> 101044 bytes stylesheets/fonts/Vazir-Light.woff | Bin 0 -> 60076 bytes stylesheets/fonts/Vazir-Light.woff2 | Bin 0 -> 48616 bytes stylesheets/fonts/Vazir-Medium.eot | Bin 0 -> 107958 bytes stylesheets/fonts/Vazir-Medium.ttf | Bin 0 -> 107784 bytes stylesheets/fonts/Vazir-Medium.woff | Bin 0 -> 63400 bytes stylesheets/fonts/Vazir-Medium.woff2 | Bin 0 -> 51436 bytes stylesheets/fonts/Vazir-Thin.eot | Bin 0 -> 90746 bytes stylesheets/fonts/Vazir-Thin.ttf | Bin 0 -> 90580 bytes stylesheets/fonts/Vazir-Thin.woff | Bin 0 -> 52052 bytes stylesheets/fonts/Vazir-Thin.woff2 | Bin 0 -> 41580 bytes stylesheets/fonts/Vazir.eot | Bin 0 -> 85414 bytes stylesheets/fonts/Vazir.ttf | Bin 0 -> 85252 bytes stylesheets/fonts/Vazir.woff | Bin 0 -> 47988 bytes stylesheets/fonts/Vazir.woff2 | Bin 0 -> 38020 bytes stylesheets/rtl.css | 109 ++++ 436 files changed, 24243 insertions(+), 2 deletions(-) create mode 100644 fa/about/index.md create mode 100644 fa/about/license.txt create mode 100644 fa/about/logo/index.md create mode 100644 fa/about/website/index.md create mode 100644 fa/community/conferences/index.md create mode 100644 fa/community/index.md create mode 100644 fa/community/mailing-lists/index.md create mode 100644 fa/community/mailing-lists/manual-instructions/index.md create mode 100644 fa/community/mailing-lists/ruby-talk-guidelines/index.md create mode 100644 fa/community/podcasts/index.md create mode 100644 fa/community/ruby-core/index.md create mode 100644 fa/community/ruby-core/writing-patches/index.md create mode 100644 fa/community/user-groups/index.md create mode 100644 fa/community/weblogs/index.md create mode 100644 fa/conduct/index.md create mode 100644 fa/documentation/faq/1/index.md create mode 100644 fa/documentation/faq/10/index.md create mode 100644 fa/documentation/faq/11/index.md create mode 100644 fa/documentation/faq/2/index.md create mode 100644 fa/documentation/faq/3/index.md create mode 100644 fa/documentation/faq/4/index.md create mode 100644 fa/documentation/faq/5/index.md create mode 100644 fa/documentation/faq/6/index.md create mode 100644 fa/documentation/faq/7/index.md create mode 100644 fa/documentation/faq/8/index.md create mode 100644 fa/documentation/faq/9/index.md create mode 100644 fa/documentation/faq/index.md create mode 100644 fa/documentation/index.md create mode 100644 fa/documentation/installation/index.md create mode 100644 fa/documentation/quickstart/2/index.md create mode 100644 fa/documentation/quickstart/3/index.md create mode 100644 fa/documentation/quickstart/4/index.md create mode 100644 fa/documentation/quickstart/index.md create mode 100644 fa/documentation/ruby-from-other-languages/index.md create mode 100644 fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md create mode 100644 fa/documentation/ruby-from-other-languages/to-ruby-from-java/index.md create mode 100644 fa/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md create mode 100644 fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md create mode 100644 fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md create mode 100644 fa/documentation/success-stories/index.md create mode 100644 fa/downloads/branches/index.md create mode 100644 fa/downloads/index.md create mode 100644 fa/downloads/mirrors/index.md create mode 100644 fa/downloads/releases/index.md create mode 100644 fa/examples/cities.md create mode 100644 fa/examples/greeter.md create mode 100644 fa/examples/hello_world.md create mode 100644 fa/examples/i_love_ruby.md create mode 100644 fa/feeds/news.rss create mode 100644 fa/index.html create mode 100644 fa/libraries/index.md create mode 100644 fa/news/_posts/2001-01-18-stable-snapshot-is-available.md create mode 100644 fa/news/_posts/2001-04-19-ruby-pocket-reference.md create mode 100644 fa/news/_posts/2001-06-20-ruby-garden.md create mode 100644 fa/news/_posts/2001-07-10-removed-language-comparison-page.md create mode 100644 fa/news/_posts/2001-07-13-ruby-introduction-presentation.md create mode 100644 fa/news/_posts/2002-01-06-ruby-cvs-repository-guide.md create mode 100644 fa/news/_posts/2002-02-01-report-security-issues.md create mode 100644 fa/news/_posts/2002-03-01-167-is-released.md create mode 100644 fa/news/_posts/2002-09-18-dutch-translation-of-wwwruby-langorg.md create mode 100644 fa/news/_posts/2002-10-24-raa-replaced.md create mode 100644 fa/news/_posts/2002-11-01-my20021101-ruby-conference-2002.md create mode 100644 fa/news/_posts/2002-11-25-ruby-installer-for-windows-at-sourceforge.md create mode 100644 fa/news/_posts/2002-12-05-matzs-slides-at-4-conferences.md create mode 100644 fa/news/_posts/2002-12-07-raa-2-1-0.md create mode 100644 fa/news/_posts/2002-12-09-raa-xml-interfaces-are-updated.md create mode 100644 fa/news/_posts/2002-12-11-ruby-hacking-guide.md create mode 100644 fa/news/_posts/2002-12-16-toward-ruby-langorg-renewal-trial-website-offered.md create mode 100644 fa/news/_posts/2002-12-18-color-scheme-of-wwwruby-langorg.md create mode 100644 fa/news/_posts/2002-12-24-ruby-1-6-8-and-1-8-0-preview-1.md create mode 100644 fa/news/_posts/2003-01-07-ruby-in-2002-contents-wanted.md create mode 100644 fa/news/_posts/2003-01-31-raa-2-3-0.md create mode 100644 fa/news/_posts/2003-02-21-first-europeen-ruby-conference.md create mode 100644 fa/news/_posts/2003-02-24-happy-birthday-ruby.md create mode 100644 fa/news/_posts/2003-08-04-ruby-180-released.md create mode 100644 fa/news/_posts/2003-10-01-ruby-conference-2003.md create mode 100644 fa/news/_posts/2003-10-30-ruby-181-preview2.md create mode 100644 fa/news/_posts/2003-11-23-ruby-standard-library-documentation.md create mode 100644 fa/news/_posts/2003-12-05-ruby-181-preview3.md create mode 100644 fa/news/_posts/2003-12-19-new-ruby-change-request-rcr-process.md create mode 100644 fa/news/_posts/2003-12-20-oreilly-onlamp-ruby-article.md create mode 100644 fa/news/_posts/2003-12-25-ruby-181-is-out.md create mode 100644 fa/news/_posts/2004-01-07-matz-on-craftsmanship.md create mode 100644 fa/news/_posts/2004-01-17-rss-feed-started.md create mode 100644 fa/news/_posts/2004-01-29-how-to-write-an-rcr.md create mode 100644 fa/news/_posts/2004-02-15-ruby-talk-mailing-posting-policy-change.md create mode 100644 fa/news/_posts/2004-02-16-ruby-article-in-linux-journal.md create mode 100644 fa/news/_posts/2004-04-12-ruby-track-and-tutorials-at-oscon.md create mode 100644 fa/news/_posts/2004-05-23-rubyconf-2004-pre-registration-is-open.md create mode 100644 fa/news/_posts/2004-05-29-heliumruby-langorg-was-cracked.md create mode 100644 fa/news/_posts/2004-06-01-notice-on-ruby-langorg-mailing-list-service-restart.md create mode 100644 fa/news/_posts/2004-06-15-wwwftp-service-restart.md create mode 100644 fa/news/_posts/2004-06-22-anonymous-cvs-service-restart.md create mode 100644 fa/news/_posts/2004-06-24-cvsweb-service-restart.md create mode 100644 fa/news/_posts/2004-06-29-modules-added-to-the-anonymous-cvs-repository.md create mode 100644 fa/news/_posts/2004-07-05-added-libsoap4rlibcsvmodruby-old-to-anonymous-cvs.md create mode 100644 fa/news/_posts/2004-07-06-suspended-libsoap4r-and-libcsv-again.md create mode 100644 fa/news/_posts/2004-07-21-ruby-182-preview1-released.md create mode 100644 fa/news/_posts/2004-07-22-incident-analysis-of-the-intrusion-on-heliumruby-langorg.md create mode 100644 fa/news/_posts/2004-07-30-ruby-182-preview2-released.md create mode 100644 fa/news/_posts/2004-07-31-rubyconf-2004-registration-now-open.md create mode 100644 fa/news/_posts/2004-08-08-brad-cox-to-keynote-rubyconf-2004.md create mode 100644 fa/news/_posts/2004-09-18-korean-translation-of-wwwruby-langorg.md create mode 100644 fa/news/_posts/2004-09-22-ruby-forum.md create mode 100644 fa/news/_posts/2004-09-29-rsync-service-restart.md create mode 100644 fa/news/_posts/2004-11-08-182-preview3-released.md create mode 100644 fa/news/_posts/2004-12-02-ruby-codefest-grant-program-announced-by-ruby-central-inc.md create mode 100644 fa/news/_posts/2004-12-19-pragmatic-bookshelf-planning-a-series-of-ruby-books.md create mode 100644 fa/news/_posts/2004-12-22-182-preview4-released.md create mode 100644 fa/news/_posts/2004-12-25-chinese-translation-of-wwwruby-langorg.md create mode 100644 fa/news/_posts/2004-12-26-ruby-182-released.md create mode 100644 fa/news/_posts/2005-02-20-ruby-weekly-news.md create mode 100644 fa/news/_posts/2005-03-11-rubycentral-codefest-grants-announced.md create mode 100644 fa/news/_posts/2005-03-23-rubyconf-2005-preregistration-now-open.md create mode 100644 fa/news/_posts/2005-04-14-server-maintenance.md create mode 100644 fa/news/_posts/2005-04-19-anonymous-cvs-service-stopped.md create mode 100644 fa/news/_posts/2005-04-27-anonymous-cvs-service-restart.md create mode 100644 fa/news/_posts/2005-06-22-upgrade-to-debian-gnulinux-31.md create mode 100644 fa/news/_posts/2005-07-01-xmlrpcipimethods-vulnerability.md create mode 100644 fa/news/_posts/2005-07-02-securityruby-langorg.md create mode 100644 fa/news/_posts/2005-08-20-rubyconf-2005-registration-tops-100.md create mode 100644 fa/news/_posts/2005-08-31-rubyconf-2005-registration-time-is-running-out.md create mode 100644 fa/news/_posts/2005-09-07-registration-for-rubyconf-2005-is-closing-soon.md create mode 100644 fa/news/_posts/2005-09-21-ruby-183-released.md create mode 100644 fa/news/_posts/2005-10-03-ruby-vulnerability-in-the-safe-level-settings.md create mode 100644 fa/news/_posts/2005-10-10-euruko-2005.md create mode 100644 fa/news/_posts/2005-10-11-new-ruby-web-magazine-goes-live.md create mode 100644 fa/news/_posts/2005-12-14-ruby-184-preview-2-released.md create mode 100644 fa/news/_posts/2005-12-24-ruby-184-released.md create mode 100644 fa/news/_posts/2006-02-09-conference-season-is-here.md create mode 100644 fa/news/_posts/2006-04-19-ruby-in-google-summer-of-code.md create mode 100644 fa/news/_posts/2006-06-20-the-future-of-ruby.md create mode 100644 fa/news/_posts/2006-08-29-ruby-1-8-5-released.md create mode 100644 fa/news/_posts/2006-08-30-server-maintenance-20060830.md create mode 100644 fa/news/_posts/2006-09-12-site-launch-at-last.md create mode 100644 fa/news/_posts/2006-10-18-rubyconf-2006-almost-upon-us.md create mode 100644 fa/news/_posts/2006-10-26-rubyconf-2006-recap.md create mode 100644 fa/news/_posts/2006-11-03-CVE-2006-5467.md create mode 100644 fa/news/_posts/2006-12-04-another-dos-vulnerability-in-cgi-library.md create mode 100644 fa/news/_posts/2006-12-20-ruby-on-rails-bootcamp-in-germany.md create mode 100644 fa/news/_posts/2006-12-22-cvs-repository-moved-to-svn.md create mode 100644 fa/news/_posts/2006-12-27-ruby-on-rails-bootcamp-in-georgia.md create mode 100644 fa/news/_posts/2007-01-24-mountainwest-rubyconf-2007-registration-now-open.md create mode 100644 fa/news/_posts/2007-01-26-mountainwest-speaker-list-posted.md create mode 100644 fa/news/_posts/2007-02-21-ip-address-change.md create mode 100644 fa/news/_posts/2007-03-01-cvs-services-will-be-permanently-unavailable.md create mode 100644 fa/news/_posts/2007-03-12-ruby-1-8-6-released.md create mode 100644 fa/news/_posts/2007-07-27-proposals-now-being-accepted-for-rubyconf-2007-presentations.md create mode 100644 fa/news/_posts/2007-09-01-ruby-logo-contest.md create mode 100644 fa/news/_posts/2007-09-06-rubyconf-2007-registration-now-open.md create mode 100644 fa/news/_posts/2007-09-18-euruko-2007-the-european-ruby-conference.md create mode 100644 fa/news/_posts/2007-10-04-net-https-vulnerability.md create mode 100644 fa/news/_posts/2007-12-25-ruby-1-9-0-released.md create mode 100644 fa/news/_posts/2008-01-09-ruby-logo-available.md create mode 100644 fa/news/_posts/2008-01-24-ruby-fools-conference.md create mode 100644 fa/news/_posts/2008-02-04-mountainwest-rubyconf-2008.md create mode 100644 fa/news/_posts/2008-02-25-european-ruby-conference-2008-euruko.md create mode 100644 fa/news/_posts/2008-02-27-scotland-on-rails-2008.md create mode 100644 fa/news/_posts/2008-03-03-webrick-file-access-vulnerability.md create mode 100644 fa/news/_posts/2008-04-11-tulsa-ruby-workshop.md create mode 100644 fa/news/_posts/2008-05-22-server-maintenance-20080523.md create mode 100644 fa/news/_posts/2008-05-31-ruby-1-8-7-has-been-released.md create mode 100644 fa/news/_posts/2008-06-16-rubynation-2008.md create mode 100644 fa/news/_posts/2008-06-20-arbitrary-code-execution-vulnerabilities.md create mode 100644 fa/news/_posts/2008-08-04-rubyconf-2008-proposals-now-being-accepted.md create mode 100644 fa/news/_posts/2008-08-08-multiple-vulnerabilities-in-ruby.md create mode 100644 fa/news/_posts/2008-08-11-ruby-1-8-7-p72-and-1-8-6-p287-released.md create mode 100644 fa/news/_posts/2008-08-23-dos-vulnerability-in-rexml.md create mode 100644 fa/news/_posts/2008-09-09-voices-that-matter-2008.md create mode 100644 fa/news/_posts/2008-10-02-rubyconf-2008-is-sold-out.md create mode 100644 fa/news/_posts/2008-10-28-ruby-1-9-1-preview-1-released.md create mode 100644 fa/news/_posts/2008-11-08-mountainwest-rubyconf-2009-dates-and-cfp.md create mode 100644 fa/news/_posts/2008-11-10-scotland-on-rails-2009.md create mode 100644 fa/news/_posts/2008-11-27-rubyconf-2008-summary-video.md create mode 100644 fa/news/_posts/2008-12-23-mountainwest-rubyconf-2009-proposal-deadline-approaching.md create mode 100644 fa/news/_posts/2009-01-28-20090131-server-maintenance.md create mode 100644 fa/news/_posts/2009-01-30-ruby-1-9-1-released.md create mode 100644 fa/news/_posts/2009-02-25-mountainwest-rubyconf-schedule.md create mode 100644 fa/news/_posts/2009-04-18-ruby-1-8-7-p160-and-1-8-6-p368-released.md create mode 100644 fa/news/_posts/2009-05-12-ruby-1-9-1-p129-released.md create mode 100644 fa/news/_posts/2009-05-23-ruby-1-8-6-maintenance-moved-to-engine-yard.md create mode 100644 fa/news/_posts/2009-06-09-dos-vulnerability-in-bigdecimal.md create mode 100644 fa/news/_posts/2009-07-20-ruby-1-9-1-p243-released.md create mode 100644 fa/news/_posts/2009-07-20-ruby-1-9-2-preview-1-released.md create mode 100644 fa/news/_posts/2009-08-03-call-for-proposals-for-rubyconf-2009.md create mode 100644 fa/news/_posts/2009-09-04-rubyworld-conference.md create mode 100644 fa/news/_posts/2009-12-03-mountainwest-rubyconf-2010.md create mode 100644 fa/news/_posts/2009-12-07-heap-overflow-in-string.md create mode 100644 fa/news/_posts/2009-12-07-ruby-1-9-1-p376-is-released.md create mode 100644 fa/news/_posts/2009-12-25-ruby-1-8-7-p248-released.md create mode 100644 fa/news/_posts/2010-01-10-webrick-escape-sequence-injection.md create mode 100644 fa/news/_posts/2010-03-06-rubynation-2010.md create mode 100644 fa/news/_posts/2010-03-17-red-dirt-rubyconf-2010.md create mode 100644 fa/news/_posts/2010-03-26-ruby-summer-of-code-2010.md create mode 100644 fa/news/_posts/2010-06-23-ruby-1-8-7-p299-released.md create mode 100644 fa/news/_posts/2010-07-02-ruby-1-9-1-p429-is-released.md create mode 100644 fa/news/_posts/2010-07-02-ruby-1-9-2-rc1-is-released.md create mode 100644 fa/news/_posts/2010-07-11-ruby-1-9-2-rc2-is-released.md create mode 100644 fa/news/_posts/2010-08-16-ruby-1-8-7-p302-is-released.md create mode 100644 fa/news/_posts/2010-08-16-ruby-1-9-1-p430-is-released.md create mode 100644 fa/news/_posts/2010-08-16-xss-in-webrick-cve-2010-0541.md create mode 100644 fa/news/_posts/2010-08-18-ruby-1-9-2-released.md create mode 100644 fa/news/_posts/2010-10-01-see-matz-in-san-francisco-or-silicon-valley.md create mode 100644 fa/news/_posts/2010-11-17-fukuoka-ruby-award-2011.md create mode 100644 fa/news/_posts/2010-12-25-ruby-1-8-7-p330-released.md create mode 100644 fa/news/_posts/2010-12-25-ruby-1-9-2-p136-is-released.md create mode 100644 fa/news/_posts/2011-02-18-exception-methods-can-bypass-safe.md create mode 100644 fa/news/_posts/2011-02-18-fileutils-is-vulnerable-to-symlink-race-attacks.md create mode 100644 fa/news/_posts/2011-02-22-planned-maintenance-of-redmine-ruby-lang-org.md create mode 100644 fa/news/_posts/2011-07-02-ruby-1-8-7-p352-released.md create mode 100644 fa/news/_posts/2011-07-15-ruby-1-9-2-p290-is-released.md create mode 100644 fa/news/_posts/2011-08-01-ruby-1-9-3-preview1-has-been-released.md create mode 100644 fa/news/_posts/2011-08-11-confoo-2012-call-for-papers-is-now-open.md create mode 100644 fa/news/_posts/2011-09-24-ruby-1-9-3-rc1-has-been-released.md create mode 100644 fa/news/_posts/2011-10-06-plans-for-1-8-7.md create mode 100644 fa/news/_posts/2011-10-12-programming-competitions-with-matz.md create mode 100644 fa/news/_posts/2011-10-31-ruby-1-9-3-p0-is-released.md create mode 100644 fa/news/_posts/2011-12-28-denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815.md create mode 100644 fa/news/_posts/2012-02-16-ruby-1-9-3-p125-is-released.md create mode 100644 fa/news/_posts/2012-02-16-security-fix-for-ruby-openssl-module.md create mode 100644 fa/news/_posts/2012-03-29-matz-earns-the-fsfs-2011-free-software-award.md create mode 100644 fa/news/_posts/2012-04-10-rubyteach-2012.md create mode 100644 fa/news/_posts/2012-04-20-ruby-1-9-3-p194-is-released.md create mode 100644 fa/news/_posts/2012-04-21-ruby-1-9-2-p320-is-released.md create mode 100644 fa/news/_posts/2012-05-30-server-maintenance-20120606.md create mode 100644 fa/news/_posts/2012-06-02-a-facebook-group.md create mode 100644 fa/news/_posts/2012-06-29-ruby-1-8-7-p370-released.md create mode 100644 fa/news/_posts/2012-09-07-confoo-2013call-for-papers-is-now-open.md create mode 100644 fa/news/_posts/2012-10-12-cve-2012-4464-cve-2012-4466.md create mode 100644 fa/news/_posts/2012-10-12-poisoned-NUL-byte-vulnerability.md create mode 100644 fa/news/_posts/2012-10-12-ruby-1-9-3-p286-is-released.md create mode 100644 fa/news/_posts/2012-10-22-rupy-2012-coming-very-soon.md create mode 100644 fa/news/_posts/2012-11-09-ruby-1-9-3-p327-is-released.md create mode 100644 fa/news/_posts/2012-11-09-ruby19-hashdos-cve-2012-5371.md create mode 100644 fa/news/_posts/2012-11-10-fukuoka-ruby-award-2013.md create mode 100644 fa/news/_posts/2012-12-25-ruby-1-9-3-p362-is-released.md create mode 100644 fa/news/_posts/2013-01-17-ruby-1-9-3-p374-is-released.md create mode 100644 fa/news/_posts/2013-01-23-confoo-with-ruby-in-montreal.md create mode 100644 fa/news/_posts/2013-02-06-rdoc-xss-cve-2013-0256.md create mode 100644 fa/news/_posts/2013-02-06-ruby-1-9-3-p385-is-released.md create mode 100644 fa/news/_posts/2013-02-08-ruby-2-0-0-rc2-is-released.md create mode 100644 fa/news/_posts/2013-02-15-the-2013-ruby-hero-awards.md create mode 100644 fa/news/_posts/2013-02-16-the-barcelona-ruby-conference-call-for-papers-is-open.md create mode 100644 fa/news/_posts/2013-02-22-json-dos-cve-2013-0269.md create mode 100644 fa/news/_posts/2013-02-22-rexml-dos-2013-02-22.md create mode 100644 fa/news/_posts/2013-02-22-ruby-1-9-3-p392-is-released.md create mode 100644 fa/news/_posts/2013-02-24-ruby-2-0-0-p0-is-released.md create mode 100644 fa/news/_posts/2013-05-14-ruby-1-9-3-p429-is-released.md create mode 100644 fa/news/_posts/2013-05-14-ruby-2-0-0-p195-is-released.md create mode 100644 fa/news/_posts/2013-05-14-taint-bypass-dl-fiddle-cve-2013-2065.md create mode 100644 fa/news/_posts/2013-06-12-new-ruby-lang-org-released.md create mode 100644 fa/news/_posts/2013-06-27-hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073.md create mode 100644 fa/news/_posts/2013-06-27-ruby-1-8-7-p374-is-released.md create mode 100644 fa/news/_posts/2013-06-27-ruby-1-9-3-p448-is-released.md create mode 100644 fa/news/_posts/2013-06-27-ruby-2-0-0-p247-is-released.md create mode 100644 fa/news/_posts/2013-06-30-we-retire-1-8-7.md create mode 100644 fa/news/_posts/2013-08-06-status-issue.md create mode 100644 fa/news/_posts/2013-08-08-rip-raa.md create mode 100644 fa/news/_posts/2013-08-29-confoo-cfp.md create mode 100644 fa/news/_posts/2013-09-03-vietnamese-translation.md create mode 100644 fa/news/_posts/2013-09-07-we-use-fastly-cdn.md create mode 100644 fa/news/_posts/2013-09-23-ruby-2-1-0-preview1-is-released.md create mode 100644 fa/news/_posts/2013-09-28-design-contest.md create mode 100644 fa/news/_posts/2013-10-04-rubyconf-au-2014.md create mode 100644 fa/news/_posts/2013-11-21-fukuoka-ruby-award-2014.md create mode 100644 fa/news/_posts/2013-11-22-heap-overflow-in-floating-point-parsing-cve-2013-4164.md create mode 100644 fa/news/_posts/2013-11-22-ruby-1-9-3-p484-is-released.md create mode 100644 fa/news/_posts/2013-11-22-ruby-2-0-0-p353-is-released.md create mode 100644 fa/news/_posts/2013-11-22-ruby-2-1-0-preview2-is-released.md create mode 100644 fa/news/_posts/2013-11-30-russian-translation.md create mode 100644 fa/news/_posts/2013-12-09-rubyconf-tw-2014-cfp.md create mode 100644 fa/news/_posts/2013-12-14-rubyconf-india-2014.md create mode 100644 fa/news/_posts/2013-12-17-maintenance-of-1-8-7-and-1-9-2.md create mode 100644 fa/news/_posts/2013-12-20-ruby-2-1-0-rc1-is-released.md create mode 100644 fa/news/_posts/2013-12-21-ruby-version-policy-changes-with-2-1-0.md create mode 100644 fa/news/_posts/2013-12-25-ruby-2-1-0-is-released.md create mode 100644 fa/news/_posts/2014-01-10-ruby-1-9-3-will-end-on-2015.md create mode 100644 fa/news/_posts/2014-01-20-abril-pro-ruby-2014.md create mode 100644 fa/news/_posts/2014-02-12-the-2014-ruby-hero-awards.md create mode 100644 fa/news/_posts/2014-02-24-ruby-1-9-3-p545-is-released.md create mode 100644 fa/news/_posts/2014-02-24-ruby-2-0-0-p451-is-released.md create mode 100644 fa/news/_posts/2014-02-24-ruby-2-1-1-is-released.md create mode 100644 fa/news/_posts/2014-03-10-regression-of-hash-reject-in-ruby-2-1-1.md create mode 100644 fa/news/_posts/2014-03-14-rubyconf-taiwan-2014.md create mode 100644 fa/news/_posts/2014-03-15-eurucamp-2014.md create mode 100644 fa/news/_posts/2014-03-29-heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525.md create mode 100644 fa/news/_posts/2014-04-10-severe-openssl-vulnerability.md create mode 100644 fa/news/_posts/2014-05-09-dispute-of-vulnerability-cve-2014-2734.md create mode 100644 fa/news/_posts/2014-05-09-ruby-2-0-0-p481-is-released.md create mode 100644 fa/news/_posts/2014-05-09-ruby-2-1-2-is-released.md create mode 100644 fa/news/_posts/2014-05-16-ruby-1-9-3-p547-released.md create mode 100644 fa/news/_posts/2014-05-31-stopped-mailing-list-temporarily.md create mode 100644 fa/news/_posts/2014-06-16-rubyworld-conference-2014-speaker-invite.md create mode 100644 fa/news/_posts/2014-07-01-eol-for-1-8-7-and-1-9-2.md create mode 100644 fa/news/_posts/2014-07-26-rubykaigi-2014-registration-online.md create mode 100644 fa/news/_posts/2014-08-19-ruby-1-9-2-p330-released.md create mode 100644 fa/news/_posts/2014-09-10-confoo-cfp.md create mode 100644 fa/news/_posts/2014-09-18-ruby-2-2-0-preview1-released.md create mode 100644 fa/news/_posts/2014-09-19-ruby-2-0-0-p576-is-released.md create mode 100644 fa/news/_posts/2014-09-19-ruby-2-1-3-is-released.md create mode 100644 fa/news/_posts/2014-10-27-changing-default-settings-of-ext-openssl.md create mode 100644 fa/news/_posts/2014-10-27-rexml-dos-cve-2014-8080.md create mode 100644 fa/news/_posts/2014-10-27-ruby-1-9-3-p550-is-released.md create mode 100644 fa/news/_posts/2014-10-27-ruby-2-0-0-p594-is-released.md create mode 100644 fa/news/_posts/2014-10-27-ruby-2-1-4-released.md create mode 100644 fa/news/_posts/2014-11-03-tropicalrb-2015-cfp.md create mode 100644 fa/news/_posts/2014-11-13-rexml-dos-cve-2014-8090.md create mode 100644 fa/news/_posts/2014-11-13-ruby-1-9-3-p551-is-released.md create mode 100644 fa/news/_posts/2014-11-13-ruby-2-0-0-p598-is-released.md create mode 100644 fa/news/_posts/2014-11-13-ruby-2-1-5-is-released.md create mode 100644 fa/news/_posts/2014-11-28-ruby-2-2-0-preview2-released.md create mode 100644 fa/news/_posts/2014-12-18-ruby-2-2-0-rc1-released.md create mode 100644 fa/news/_posts/2014-12-25-ruby-2-2-0-released.md create mode 100644 fa/news/_posts/2015-02-23-support-for-ruby-1-9-3-has-ended.md create mode 100644 fa/news/_posts/2015-02-25-ruby-2-0-0-p643-is-released.md create mode 100644 fa/news/_posts/2015-03-03-ruby-2-2-1-released.md create mode 100644 fa/news/_posts/2015-03-06-google-summer-of-code-2015.md create mode 100644 fa/news/_posts/2015-04-13-ruby-2-0-0-p645-released.md create mode 100644 fa/news/_posts/2015-04-13-ruby-2-1-6-released.md create mode 100644 fa/news/_posts/2015-04-13-ruby-2-2-2-released.md create mode 100644 fa/news/_posts/2015-04-13-ruby-openssl-hostname-matching-vulnerability.md create mode 100644 fa/news/_posts/2015-06-30-ruby-prize-2015.md create mode 100644 fa/news/_posts/2015-07-14-rubyconftw-2015-call-for-proposals.md create mode 100644 fa/news/_posts/2015-08-04-rubyconf-taiwan-registration-is-open.md create mode 100644 fa/news/_posts/2015-08-18-ruby-2-0-0-p647-released.md create mode 100644 fa/news/_posts/2015-08-18-ruby-2-1-7-released.md create mode 100644 fa/news/_posts/2015-08-18-ruby-2-2-3-released.md create mode 100644 fa/news/_posts/2015-08-31-confoo-cfp.md create mode 100644 fa/news/_posts/2015-10-13-fukuoka-ruby-award-2016.md create mode 100644 fa/news/_posts/2015-11-11-ruby-2-3-0-preview1-released.md create mode 100644 fa/news/_posts/2015-12-11-ruby-2-3-0-preview2-released.md create mode 100644 fa/news/_posts/2015-12-16-ruby-2-0-0-p648-released.md create mode 100644 fa/news/_posts/2015-12-16-ruby-2-1-8-released.md create mode 100644 fa/news/_posts/2015-12-16-ruby-2-2-4-released.md create mode 100644 fa/news/_posts/2015-12-16-unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551.md create mode 100644 fa/news/_posts/2015-12-25-ruby-2-3-0-released.md create mode 100644 fa/news/_posts/2016-02-24-support-plan-of-ruby-2-0-0-and-2-1.md create mode 100644 fa/news/_posts/2016-03-30-ruby-2-1-9-released.md create mode 100644 fa/news/_posts/2016-04-01-ruby-2-1-10-released.md create mode 100644 fa/news/_posts/2016-04-26-ruby-2-2-5-released.md create mode 100644 fa/news/_posts/2016-04-26-ruby-2-3-1-released.md create mode 100644 fa/news/_posts/2016-05-16-confoo-cfp.md create mode 100644 fa/news/_posts/2016-06-20-ruby-2-4-0-preview1-released.md create mode 100644 fa/news/_posts/2016-07-25-ruby-prize-2016.md create mode 100644 fa/news/_posts/2016-08-26-confoo-cfp.md create mode 100644 fa/news/_posts/2016-09-08-ruby-2-4-0-preview2-released.md create mode 100644 fa/news/_posts/2016-10-20-fukuoka-ruby-award-2017.md create mode 100644 fa/news/_posts/2016-11-09-ruby-2-4-0-preview3-released.md create mode 100644 fa/news/_posts/2016-11-15-ruby-2-2-6-released.md create mode 100644 fa/news/_posts/2016-11-15-ruby-2-3-2-released.md create mode 100644 fa/news/_posts/2016-11-21-ruby-2-3-3-released.md create mode 100644 fa/news/_posts/2016-12-12-ruby-2-4-0-rc1-released.md create mode 100644 fa/news/_posts/2016-12-25-ruby-2-4-0-released.md create mode 100644 fa/news/_posts/2017-03-22-ruby-2-4-1-released.md create mode 100644 fa/news/_posts/2017-03-28-ruby-2-2-7-released.md create mode 100644 fa/news/_posts/2017-03-30-ruby-2-3-4-released.md create mode 100644 fa/news/_posts/2017-04-01-support-of-ruby-2-1-has-ended.md create mode 100644 fa/news/_posts/2017-07-21-ruby-prize-2017.md create mode 100644 fa/news/_posts/2017-08-29-multiple-vulnerabilities-in-rubygems.md create mode 100644 fa/news/_posts/2017-09-14-json-heap-exposure-cve-2017-14064.md create mode 100644 fa/news/_posts/2017-09-14-openssl-asn1-buffer-underrun-cve-2017-14033.md create mode 100644 fa/news/_posts/2017-09-14-ruby-2-2-8-released.md create mode 100644 fa/news/_posts/2017-09-14-ruby-2-3-5-released.md create mode 100644 fa/news/_posts/2017-09-14-ruby-2-4-2-released.md create mode 100644 fa/news/_posts/2017-09-14-sprintf-buffer-underrun-cve-2017-0898.md create mode 100644 fa/news/_posts/2017-09-14-webrick-basic-auth-escape-sequence-injection-cve-2017-10784.md create mode 100644 fa/news/_posts/2017-10-10-ruby-2-5-0-preview1-released.md create mode 100644 fa/news/_posts/2017-12-14-net-ftp-command-injection-cve-2017-17405.md create mode 100644 fa/news/_posts/2017-12-14-ruby-2-2-9-released.md create mode 100644 fa/news/_posts/2017-12-14-ruby-2-3-6-released.md create mode 100644 fa/news/_posts/2017-12-14-ruby-2-4-3-released.md create mode 100644 fa/news/_posts/2017-12-14-ruby-2-5-0-rc1-released.md create mode 100644 fa/news/_posts/2017-12-25-ruby-2-5-0-released.md create mode 100644 fa/news/_posts/2017-12-27-fukuoka-ruby-award-2018.md create mode 100644 fa/news/_posts/2018-02-17-multiple-vulnerabilities-in-rubygems.md create mode 100644 fa/news/_posts/2018-02-24-ruby-2-6-0-preview1-released.md create mode 100644 fa/news/_posts/2018-03-28-buffer-under-read-unpack-cve-2018-8778.md create mode 100644 fa/news/_posts/2018-03-28-http-response-splitting-in-webrick-cve-2017-17742.md create mode 100644 fa/news/_posts/2018-03-28-large-request-dos-in-webrick-cve-2018-8777.md create mode 100644 fa/news/_posts/2018-03-28-poisoned-nul-byte-dir-cve-2018-8780.md create mode 100644 fa/news/_posts/2018-03-28-poisoned-nul-byte-unixsocket-cve-2018-8779.md create mode 100644 fa/news/_posts/2018-03-28-ruby-2-2-10-released.md create mode 100644 fa/news/_posts/2018-03-28-ruby-2-3-7-released.md create mode 100644 fa/news/_posts/2018-03-28-ruby-2-4-4-released.md create mode 100644 fa/news/_posts/2018-03-28-ruby-2-5-1-released.md create mode 100644 fa/news/_posts/2018-03-28-unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914.md create mode 100644 fa/news/_posts/2018-05-31-ruby-2-6-0-preview2-released.md create mode 100644 fa/news/_posts/2018-06-20-support-of-ruby-2-2-has-ended.md create mode 100644 fa/news/_posts/2018-10-17-not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396.md create mode 100644 fa/news/_posts/2018-10-17-openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395.md create mode 100644 fa/news/_posts/2018-10-17-ruby-2-3-8-released.md create mode 100644 fa/news/_posts/2018-10-17-ruby-2-4-5-released.md create mode 100644 fa/news/_posts/2018-10-17-ruby-2-5-2-released.md create mode 100644 fa/news/_posts/2018-10-18-ruby-2-5-3-released.md create mode 100644 fa/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md create mode 100644 fa/news/_posts/2018-11-08-snap.md create mode 100644 fa/news/_posts/2018-11-29-fukuoka-ruby-award-2019.md create mode 100644 fa/news/_posts/2018-12-06-ruby-2-6-0-rc1-released.md create mode 100644 fa/news/_posts/2018-12-15-ruby-2-6-0-rc2-released.md create mode 100644 fa/news/_posts/2018-12-25-ruby-2-6-0-released.md create mode 100644 fa/news/_posts/2019-01-30-ruby-2-6-1-released.md create mode 100644 fa/news/_posts/2019-03-05-multiple-vulnerabilities-in-rubygems.md create mode 100644 fa/news/_posts/2019-03-13-ruby-2-5-4-released.md create mode 100644 fa/news/_posts/2019-03-13-ruby-2-6-2-released.md create mode 100644 fa/news/_posts/2019-03-15-ruby-2-5-5-released.md create mode 100644 fa/security/index.md create mode 100644 stylesheets/fonts/LICENSE create mode 100644 stylesheets/fonts/Vazir-Black.eot create mode 100644 stylesheets/fonts/Vazir-Black.ttf create mode 100644 stylesheets/fonts/Vazir-Black.woff create mode 100644 stylesheets/fonts/Vazir-Black.woff2 create mode 100644 stylesheets/fonts/Vazir-Bold.eot create mode 100644 stylesheets/fonts/Vazir-Bold.ttf create mode 100644 stylesheets/fonts/Vazir-Bold.woff create mode 100644 stylesheets/fonts/Vazir-Bold.woff2 create mode 100644 stylesheets/fonts/Vazir-Light.eot create mode 100644 stylesheets/fonts/Vazir-Light.ttf create mode 100644 stylesheets/fonts/Vazir-Light.woff create mode 100644 stylesheets/fonts/Vazir-Light.woff2 create mode 100644 stylesheets/fonts/Vazir-Medium.eot create mode 100644 stylesheets/fonts/Vazir-Medium.ttf create mode 100644 stylesheets/fonts/Vazir-Medium.woff create mode 100644 stylesheets/fonts/Vazir-Medium.woff2 create mode 100644 stylesheets/fonts/Vazir-Thin.eot create mode 100644 stylesheets/fonts/Vazir-Thin.ttf create mode 100644 stylesheets/fonts/Vazir-Thin.woff create mode 100644 stylesheets/fonts/Vazir-Thin.woff2 create mode 100644 stylesheets/fonts/Vazir.eot create mode 100644 stylesheets/fonts/Vazir.ttf create mode 100644 stylesheets/fonts/Vazir.woff create mode 100644 stylesheets/fonts/Vazir.woff2 create mode 100644 stylesheets/rtl.css diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8723f37b14..40ebcb3c38 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,6 +12,8 @@ en/ @ruby/www-ruby-lang-org-editorial es/ @ruby/www-ruby-lang-org-i18n-es +fa/ @ruby/www-ruby-lang-org-i18n-fa + fr/ @ruby/www-ruby-lang-org-i18n-fr id/ @ruby/www-ruby-lang-org-i18n-id diff --git a/_config.yml b/_config.yml index 1004b1bfe1..05253cd35e 100644 --- a/_config.yml +++ b/_config.yml @@ -99,6 +99,21 @@ locales: url: /es/security - text: Acerca de Ruby url: /es/about + fa: + - text: دانلودها + url: /fa/downloads + - text: مستندات + url: /fa/documentation + - text: کتابخانهها + url: /fa/libraries + - text: جامعه + url: /fa/community + - text: اخبار + url: /fa/news + - text: امنیت + url: /fa/security + - text: درباره روبی + url: /fa/about fr: - text: Téléchargements url: /fr/downloads @@ -293,6 +308,8 @@ locales: cx_id: "013598269713424429640:g5orptiw95w" es: text: Buscar + fa: + text: جستجو fr: text: Recherche cx_id: "016749562256550695330:efcmgh3a1ac" @@ -325,6 +342,7 @@ locales: de: "Der beste Freund eines Programmierers" en: "A Programmer's Best Friend" es: "El mejor amigo de un desarrollador" + fa: "بهترین دوست یک برنامه نویس" fr: "A Programmer's Best Friend" id: "Sahabat Terbaik Programmer" it: "Il migliore amico dei programmatori" @@ -343,6 +361,7 @@ locales: de: "Ruby" en: "Ruby" es: "Ruby" + fa: "روبی" fr: "Ruby" id: "Ruby" it: "Ruby" @@ -361,6 +380,7 @@ locales: de: [Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] en: [January, February, March, April, May, June, July, August, September, October, November, December] es: [Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] + fa: [ژانویه, فوریه, مارس, آوریل, مه, ژوئن, جولای, اوت, سپتامبر, اکتبر, نوامبر, دسامبر] fr: [Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre] id: [Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember] it: [Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre] @@ -375,6 +395,7 @@ locales: de: "Geschrieben von AUTHOR am %-d.%-m.%Y" en: "Posted by AUTHOR on %-d %b %Y" es: "Publicado por AUTHOR el %Y-%m-%d" + fa: "ارسال شده توسط AUTHOR در تاریخ %-d %b %Y" fr: "Posté par AUTHOR le %Y-%m-%d" id: "Ditulis oleh AUTHOR tanggal %Y-%m-%d" it: "Inserito da AUTHOR il %Y-%m-%d" @@ -393,6 +414,7 @@ locales: de: "Übersetzt von" en: "Translated by" es: "Traducción de" + fa: "ترجمه شده توسط" fr: "Traduit par" id: "Diterjemahkan oleh" it: "Tradotto da" @@ -423,6 +445,10 @@ locales: title: Noticias de Ruby por RSS description: Las últimas noticias de ruby-lang.org en español. lang_code: es-ES + fa: + title: اخبار روبی + description: آخرین اخبار از ruby-lang.org. + lang_code: fa-IR fr: title: Actualités de Ruby-lang description: Les dernières news sur ruby-lang.org. @@ -521,6 +547,18 @@ locales: monthly_archives: Noticias por mes yearly_archive_link: "Noticias de %Y" monthly_archive_link: "%B %Y" + fa: + other_news: سایر اخبار + more_news: اخبار بیشتر... + continue: در ادامه بخوانید... + back_to_year: "بازگشت به بایگانی %Y" + recent_news: آخرین اخبار + yearly_archive_title: "بایگانی %Y" + monthly_archive_title: "بایگانی %Y %B" + yearly_archives: بایگانی سالیانه + monthly_archives: بایگانی ماهانه + yearly_archive_link: "بایگانی %Y" + monthly_archive_link: "%B %Y" fr: other_news: Autres actualités more_news: Plus d’actualités... @@ -903,6 +941,66 @@ locales: recent_news: text: En español url: /es/feeds/news.rss + fa: + get_started: + text: <strong>شروع کنید</strong>، آسان است! + try_ruby: + text: روبی را امتحان کن! (در مرورگر خود) + <<: *try_ruby + quickstart: + text: روبی در ۲۰ دقیقه + url: /fa/documentation/quickstart/ + ruby_from_other_languages: + text: روبی از زبانهای دیگر + url: /fa/documentation/ruby-from-other-languages/ + explore: + text: <strong>کاوش</strong> در دنیای جدید… + documentation: + text: مستندات + url: /fa/documentation/ + # books: + # text: کتابها + rubybib: + text: تحقیقات دانشگاهی + <<: *rubybib + libraries: + text: کتابخانهها + url: /fa/libraries/ + success_stories: + text: داستانهای موفقیت + url: /fa/documentation/success-stories/ + participate: + text: <strong>مشارکت</strong> در یک جامعه دوستانه و رو به رشد. + mailing_lists: + text: فهرستهای ایمیل + url: /fa/community/mailing-lists/ + description: | + در مورد روبی با برنامه نویسان سراسر جهان صحبت کنید. + user_groups: + text: گروههای کاربری + url: /fa/community/user-groups/ + description: | + با Rubyists در منطقه خود تماس بگیرید. + weblogs: + text: وبلاگها + url: /fa/community/weblogs/ + description: | + اطلاعات بیشتر در مورد آنچه که الان در جامعه روبی اتفاق میافتد. + ruby_core: + text: هسته روبی + url: /fa/community/ruby-core/ + description: | + Help polish the rough edges of the latest Ruby. + issue_tracking: + text: ردیابی موضوع + url: https://bugs.ruby-lang.org/ + description: | + گزارش یا کمک به حل مسائل در روبی. + syndicate: + text: سندیکا + recent_news: + text: آخرین اخبار (آراساس) + url: /fa/feeds/news.rss fr: get_started: text: <strong>Lancez-vous</strong>, c’est facile ! @@ -1640,6 +1738,15 @@ locales: subscribe: Subscribe unsubscribe: Unsubscribe submit: Enviar + fa: + list: Mailing List + first_name: نام + last_name: نام خانوادگی + email: آدرس ایمیل + action: عمل + subscribe: اشتراک + unsubscribe: لغو اشتراک + submit: ثبت فرم fr: list: Liste de diffusion first_name: Prénom @@ -1753,6 +1860,7 @@ locales: bg: "Този сайт на други езици:" de: "Diese Website in anderen Sprachen:" en: "This site in other languages:" + fa: "این سایت به زبانهای دیگر:" fr: "Autres langues disponibles :" id: "Situs ini dalam bahasa lain:" it: "Questo sito in altre lingue:" @@ -1778,6 +1886,9 @@ locales: Si quieres contribuir, por favor hazlo en <a href="https://github.com/ruby/www.ruby-lang.org/">GitHub</a> o contacta a nuestro <a href="mailto:webmaster@ruby-lang.org">webmaster</a> si tienes preguntas o comentarios. + fa: | + <a href="/fa/about/website/">این وبسایت</a> + با افتخار توسط اعضای جامعه روبی نگهداری میشود. fr: | Ce site est propulsé par Ruby et <a href="http://www.jekyllrb.com/">Jekyll</a>. Il est fièrement maintenu par des membres de la communauté Ruby. diff --git a/_includes/languages.html b/_includes/languages.html index 7fb863ca8a..980ce0c817 100644 --- a/_includes/languages.html +++ b/_includes/languages.html @@ -8,6 +8,7 @@ <a href="/de/">Deutsch</a>, <a href="/en/">English</a>, <a href="/es/">Español</a>, +<a href="/fa/">فارسی</a>, <a href="/fr/">Français</a>, <a href="/id/">Bahasa Indonesia</a>, <a href="/it/">Italiano</a>, diff --git a/_layouts/default.html b/_layouts/default.html index 603c5eea3c..0012312d41 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -19,10 +19,13 @@ <link rel="stylesheet" type="text/css" href="/stylesheets/print.css"> <link href='https://fonts.googleapis.com/css?family=Noto+Sans:400,700,400italic,700italic&subset=latin,cyrillic,greek,vietnamese' rel='stylesheet' type='text/css'> <link rel="canonical" href="{{ site.url }}{{ page.url | replace: 'index.html', '' }}"> - + {% if page.lang == "fa" %} + <link rel="stylesheet" type="text/css" href="/stylesheets/rtl.css"> + {% endif %} + <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico"> {% include rss_discovery.html %} - + <script type="text/javascript" src="/javascripts/jquery.min.js"></script> <script type="text/javascript" src="/javascripts/page.js"></script> {% if layout.javascript != null %} @@ -30,6 +33,7 @@ <script type="text/javascript" src="/javascripts/{{ javascript }}.js"></script> {% endfor %} {% endif %} + </head> {% capture homepage_url %}/{{ page.lang }}/{% endcapture %} diff --git a/fa/about/index.md b/fa/about/index.md new file mode 100644 index 0000000000..3cc558561e --- /dev/null +++ b/fa/about/index.md @@ -0,0 +1,240 @@ +--- +layout: page +title: "درباره روبی" +lang: fa +--- + +Wondering why Ruby is so popular? Its fans call it a beautiful, artful +language. And yet, they say it’s handy and practical. What gives? +{: .summary} + +### The Ideals of Ruby’s Creator + +Ruby is a language of careful balance. Its creator, [Yukihiro “Matz” +Matsumoto][matz], blended parts of his favorite languages (Perl, Smalltalk, +Eiffel, Ada, and Lisp) to form a new language that balanced functional +programming with imperative programming. + +He has often said that he is “trying to make Ruby natural, not simple,” +in a way that mirrors life. + +Building on this, he adds: + +> Ruby is simple in appearance, but is very complex inside, just like +> our human body<sup>[1](#fn1)</sup>. + +### About Ruby’s Growth + +Since its public release in 1995, Ruby has drawn devoted coders +worldwide. In 2006, Ruby achieved mass acceptance. With active user +groups formed in the world’s major cities and Ruby-related conferences +filled to capacity. + +Ruby-Talk, the primary [mailing list](/en/community/mailing-lists/) for +discussion of the Ruby language, climbed to an average of 200 messages +per day in 2006. It has dropped in recent years as the size of the +community pushed discussion from one central list into many smaller +groups. + +Ruby is ranked among the top 10 on most of the indices that measure +the growth and popularity of programming languages worldwide +(such as the [TIOBE index][tiobe]). Much of the growth is attributed to the +popularity of software written in Ruby, particularly the +[Ruby on Rails][ror] web framework. + +Ruby is also [completely free]({{ site.license.url }}). Not only free of charge, but +also free to use, copy, modify, and distribute. + +### Seeing Everything as an Object + +Initially, Matz looked at other languages to find an ideal syntax. +Recalling his search, he said, “I wanted a scripting language that was +more powerful than Perl, and more object-oriented than +Python<sup>[2](#fn2)</sup>.” + +In Ruby, everything is an object. Every bit of information and code can +be given their own properties and actions. Object-oriented programming +calls properties by the name *instance variables* and actions are known +as *methods*. Ruby’s pure object-oriented approach is most commonly +demonstrated by a bit of code which applies an action to a number. + +{% highlight ruby %} +5.times { print "We *love* Ruby -- it's outrageous!" } +{% endhighlight %} + +In many languages, numbers and other primitive types are not objects. +Ruby follows the influence of the Smalltalk language by giving methods +and instance variables to all of its types. This eases one’s use of +Ruby, since rules applying to objects apply to all of Ruby. + +### Ruby’s Flexibility + +Ruby is seen as a flexible language, since it allows its users to freely +alter its parts. Essential parts of Ruby can be removed or redefined, at +will. Existing parts can be added upon. Ruby tries not to restrict the +coder. + +For example, addition is performed with the plus (`+`) operator. But, if +you’d rather use the readable word `plus`, you could add such a method +to Ruby’s builtin `Numeric` class. + +{% highlight ruby %} +class Numeric + def plus(x) + self.+(x) + end +end + +y = 5.plus 6 +# y is now equal to 11 +{% endhighlight %} + +Ruby’s operators are syntactic sugar for methods. You can redefine them +as well. + +### Blocks: a Truly Expressive Feature + +Ruby’s block are also seen as a source of great flexibility. A +programmer can attach a closure to any method, describing how that +method should act. The closure is called a *block* and has become one of +the most popular features for newcomers to Ruby from other imperative +languages like PHP or Visual Basic. + +Blocks are inspired by functional languages. Matz said, “in Ruby +closures, I wanted to respect the Lisp culture<sup>[3](#fn3)</sup>.” + +{% highlight ruby %} +search_engines = + %w[Google Yahoo MSN].map do |engine| + "http://www." + engine.downcase + ".com" + end +{% endhighlight %} + +In the above code, the block is described inside the `do ... end` +construct. The `map` method applies the block to the provided list of +words. Many other methods in Ruby leave a hole open for a coder to write +their own block to fill in the details of what that method should do. + +### Ruby and the Mixin + +Unlike many object-oriented languages, Ruby features single inheritance +only, **on purpose**. But Ruby knows the concept of modules (called +Categories in Objective-C). Modules are collections of methods. + +Classes can mixin a module and receive all its methods for free. For +example, any class which implements the `each` method can mixin the +`Enumerable` module, which adds a pile of methods that use `each` for +looping. + +{% highlight ruby %} +class MyArray + include Enumerable +end +{% endhighlight %} + +Generally, Rubyists see this as a much clearer way than multiple +inheritance, which is complex and can be too restrictive. + +### Ruby’s Visual Appearance + +While Ruby often uses very limited punctuation and usually prefers +English keywords, some punctuation is used to decorate Ruby. Ruby needs +no variable declarations. It uses simple naming conventions to denote +the scope of variables. + +* `var` could be a local variable. +* `@var` is an instance variable. +* `$var` is a global variable. + +These sigils enhance readability by allowing the programmer to easily +identify the roles of each variable. It also becomes unnecessary to use +a tiresome `self.` prepended to every instance member. + +### Beyond the Basics + +Ruby has a wealth of other features, among which are the following: + +* Ruby has exception handling features, like Java or Python, to make it + easy to handle errors. + +* Ruby features a true mark-and-sweep garbage collector for all Ruby + objects. No need to maintain reference counts in extension libraries. + As Matz says, “This is better for your health.” + +* Writing C extensions in Ruby is easier than in Perl or Python, with a + very elegant API for calling Ruby from C. This includes calls for + embedding Ruby in software, for use as a scripting language. A SWIG + interface is also available. + +* Ruby can load extension libraries dynamically if an OS allows. + +* Ruby features OS independent threading. Thus, for all platforms on + which Ruby runs, you also have multithreading, regardless of if the OS + supports it or not, even on MS-DOS! + +* Ruby is highly portable: it is developed mostly on GNU/Linux, but + works on many types of UNIX, macOS, Windows, DOS, BeOS, OS/2, etc. + +### Other Implementations of Ruby + +Ruby, as a language, has a few different implementations. +This page has been discussing the reference implementation, in the +community often referred to as **MRI** (“Matz’s Ruby Interpreter”) +or **CRuby** (since it is written in C), but there are also others. +They are often useful in certain situations, provide extra +integration to other languages or environments, or have special features +that MRI doesn’t. + +Here’s a list: + +* [JRuby][jruby] is Ruby atop the JVM (Java Virtual Machine), utilizing the + JVM’s optimizing JIT compilers, garbage collectors, concurrent + threads, tool ecosystem, and vast collection of libraries. +* [Rubinius][rubinius] is ‘Ruby written in Ruby’. Built on top of LLVM, + Rubinius sports a nifty virtual machine that other languages are being + built on top of, too. +* [TruffleRuby][truffleruby] is a high performance Ruby implementation on top of + GraalVM. +* [mruby][mruby] is a lightweight implementation of the Ruby language + that can be linked and embedded within an application. + Its development is led by Ruby’s creator Yukihiro “Matz” Matsumoto. +* [IronRuby][ironruby] is an implementation “tightly integrated with the .NET + Framework”. +* [MagLev][maglev] is “a fast, stable, Ruby implementation with integrated + object persistence and distributed shared cache”. +* [Cardinal][cardinal] is a “Ruby compiler for [Parrot][parrot] Virtual Machine” + (Perl 6). + +For a more complete list, see [Awesome Rubies][awesome-rubies]. + +### References + +<sup>1</sup> Matz, speaking on the Ruby-Talk mailing list, [May 12th, +2000][blade]. +{: #fn1} + +<sup>2</sup> Matz, in [An Interview with the Creator of Ruby][linuxdevcenter], Nov. +29th, 2001. +{: #fn2} + +<sup>3</sup> Matz, in [Blocks and Closures in Ruby][artima], December 22nd, +2003. +{: #fn3} + + + +[matz]: http://www.rubyist.net/~matz/ +[blade]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/2773 +[ror]: http://rubyonrails.org/ +[linuxdevcenter]: http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html +[artima]: http://www.artima.com/intv/closures2.html +[tiobe]: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html +[jruby]: http://jruby.org +[rubinius]: http://rubini.us +[truffleruby]: https://github.com/oracle/truffleruby +[mruby]: http://www.mruby.org/ +[ironruby]: http://www.ironruby.net +[maglev]: http://maglev.github.io +[cardinal]: https://github.com/parrot/cardinal +[parrot]: http://parrot.org +[awesome-rubies]: https://github.com/planetruby/awesome-rubies diff --git a/fa/about/license.txt b/fa/about/license.txt new file mode 100644 index 0000000000..426810a7fb --- /dev/null +++ b/fa/about/license.txt @@ -0,0 +1,56 @@ +Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>. +You can redistribute it and/or modify it under either the terms of the +2-clause BSDL (see the file BSDL), or the conditions below: + + 1. You may make and give away verbatim copies of the source form of the + software without restriction, provided that you duplicate all of the + original copyright notices and associated disclaimers. + + 2. You may modify your copy of the software in any way, provided that + you do at least ONE of the following: + + a) place your modifications in the Public Domain or otherwise + make them Freely Available, such as by posting said + modifications to Usenet or an equivalent medium, or by allowing + the author to include your modifications in the software. + + b) use the modified software only within your corporation or + organization. + + c) give non-standard binaries non-standard names, with + instructions on where to get the original software distribution. + + d) make other distribution arrangements with the author. + + 3. You may distribute the software in object code or binary form, + provided that you do at least ONE of the following: + + a) distribute the binaries and library files of the software, + together with instructions (in the manual page or equivalent) + on where to get the original distribution. + + b) accompany the distribution with the machine-readable source of + the software. + + c) give non-standard binaries non-standard names, with + instructions on where to get the original software distribution. + + d) make other distribution arrangements with the author. + + 4. You may modify and include the part of the software into any other + software (possibly commercial). But some files in the distribution + are not written by the author, so that they are not under these terms. + + For the list of those files and their copying conditions, see the + file LEGAL. + + 5. The scripts and library files supplied as input to or produced as + output from the software do not automatically fall under the + copyright of the software, but belong to whomever generated them, + and may be sold commercially, and may be aggregated with this + software. + + 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. diff --git a/fa/about/logo/index.md b/fa/about/logo/index.md new file mode 100644 index 0000000000..c9505d798c --- /dev/null +++ b/fa/about/logo/index.md @@ -0,0 +1,22 @@ +--- +layout: page +title: "لوگوی روبی" +lang: fa +--- + +![لوگوی روبی][logo] + +کپیرایت لوگوی روبی © ۲۰۰۶، یوکیهیرو ماتسوموتو. + +این مجوز تحت شرایط +[مجوز کرییتیو کامنز اشتراک همسان ۲٫۵][cc-by-sa] است. + + +## دانلود + +[کیت لوگوی روبی][logo-kit] شامل لوگو روبی در فرمتهای مختلف (PNG, JPG, PDF, AI, SWF, XAR). + + +[logo]: /images/header-ruby-logo.png +[logo-kit]: https://cache.ruby-lang.org/pub/misc/logo/ruby-logo-kit.zip +[cc-by-sa]: https://creativecommons.org/licenses/by-sa/2.5/deed.fa diff --git a/fa/about/website/index.md b/fa/about/website/index.md new file mode 100644 index 0000000000..39f6ca51a6 --- /dev/null +++ b/fa/about/website/index.md @@ -0,0 +1,60 @@ +--- +layout: page +title: "درباره وبسایت روبی" +lang: fa +--- + +این وبسایت توسط روبی با استفاده از [جکیل][jekyll] تولید شده است،<br> +سورس آن در [گیتهاب][github-repo] میزبانی میشود. + +طراحی بصری توسط [جیسون زیمدرس][jzimdars].<br> +براساس طراحی قبلی توسط تیم هویت بصری روبی. + +کپی رایت [لوگوی روبی][logo] © ۲۰۰۶، یوکیهیرو ماتسوموتو. + + +## گزارش مشکلات ## + + برای گزارش مشکل، از سیستم [ردیاب موضوع][github-issues] استفاده کنید یا با [مدیر وبسایت][webmaster] ما تماس بگیرید (به زبان انگلیسی). + + +## چگونه مشارکت کنیم ## + +این وبسایت با افتخار توسط اعضای جامعه روبی نگهداری میشود. + +اگر میخواهید مشارکت کنید، [دستورالعملهای مشارکت][github-wiki] را بخوانید و فقط شروع به باز کردن issue یا pull request کنید! + + +## تقدیرنامهها ## + +ما از همه متعهدین، نویسندگان، مترجمان و دیگر مشارکت کنندگان این وبسایت سپاسگزاریم. + +همچنین از سازمانهایی که از ما حمایت میکنند سپاسگزاریم: + + * [Ruby Association][rubyassociation] (میزبانی) + * [Heroku][heroku] (میزبانی) + * [IIJ][iij] (میزبانی) + * [GlobalSign][globalsign] (گواهینامه SSL) + * [Fastly][fastly] (CDN) + * [Hatena][hatena] ([mackerel][mackerel]، نظارت بر سرور) + * [![CloudCore][cloudcore-logo] CloudCore][cloudcore] (ساخت سرور) + * [Ruby no Kai][rubynokai] (ساخت سرور) + + +[logo]: /fa/about/logo/ +[webmaster]: mailto:webmaster@ruby-lang.org +[jekyll]: http://www.jekyllrb.com/ +[jzimdars]: https://twitter.com/jasonzimdars +[github-repo]: https://github.com/ruby/www.ruby-lang.org/ +[github-issues]: https://github.com/ruby/www.ruby-lang.org/issues +[github-wiki]: https://github.com/ruby/www.ruby-lang.org/wiki +[rubyassociation]: http://www.ruby.or.jp +[heroku]: https://www.heroku.com/ +[iij]: http://www.iij.ad.jp +[globalsign]: https://www.globalsign.com +[fastly]: http://www.fastly.com +[hatena]: http://hatenacorp.jp/ +[mackerel]: https://mackerel.io/ +[cloudcore]: http://www.cloudcore.jp/?utm_source=ad&utm_medium=ad&utm_content=dev&utm_campaign=vps +[cloudcore-logo]: http://www.cloudcore.jp/develop/links/images/74x36_white.gif +[rubynokai]: http://ruby-no-kai.org/ diff --git a/fa/community/conferences/index.md b/fa/community/conferences/index.md new file mode 100644 index 0000000000..227d37bbc2 --- /dev/null +++ b/fa/community/conferences/index.md @@ -0,0 +1,92 @@ +--- +layout: page +title: "Ruby Conferences" +lang: en +--- + +Ruby programmers around the world are getting involved in more and more +conferences, where they get together to share reports on +work-in-progress, discuss the future of Ruby, and welcome newcomers to +the Ruby community. + +[RubyConferences.org][rc] is a simple list of Ruby-specific conferences, +published collaboratively with the Ruby community. There you will find +event dates, location, CFP (Call For Proposals) and Registration information. + + +### Major Ruby Conferences + +[RubyConf][1] +: Every year since 2001, [Ruby Central, Inc.][2] has produced RubyConf, + the International Ruby conference. Attendance grew by a factor of ten + between 2001 and 2006. RubyConf has provided a forum for presentations + about Ruby technologies by their creators, including talks by + Nathaniel Talbot on Test Unit, Jim Weirich on Rake, David Heinemeier + Hansson on Ruby on Rails, Why the Lucky Stiff on the YAML library, and + Sasada Koichi on YARV. Matz has attended, and spoken at, all the + RubyConfs but one. + +[RubyKaigi][3] +: The first Japanese Ruby conference, RubyKaigi 2006, took place in + Odaiba. RubyKaigi provides many new and exciting talks by Matz and + other Rubyists in every year. + +[EuRuKo <small>(European Ruby Conference)</small>][4] +: The first annual European Ruby Conference (EuRuKo) was held in + Karlsruhe, Germany, in 2003. Organized by a team of German Rubyists + including Armin Roehrl and Michael Neumann, EuRuKo emerged as the + second annual Ruby event, starting two years after RubyConf. + +### Regional Ruby Conferences + +[Ruby Central][2] administers a [Regional Conference Grant Program][6], +to offset expenses for local and regional groups wanting to organize +events. + +Ruby Central has also teamed up with [SVForum][7] (previously known as SDForum) +to produce the Silicon Valley Ruby Conference, entering its second year in 2007. + +[RubyNation][8] is an annual Ruby conference serving the Virginia, West +Virginia, Maryland, and Washington, DC areas. + +[WindyCityRails][9] is an annual gathering for all who are passionate about +Ruby on Rails. The Chicago-based conference has served the Ruby +community since 2008. + +[Steel City Ruby][16]: Pittsburg, PA + +[GoRuCo][19]: New York City's annual Ruby conference. A one-day single-track conference. + +[DeccanRubyConf][20]: Pune's (India) annual Ruby conference, +themed around fun activities filled around the day. +It is a single-day single-track conference. + +### Ruby At Other Conferences + +There has been a Ruby track at the [O’Reilly Open Source Conference][10] +(OSCON) since 2004, and an increasing presence on the part of Ruby and +Rubyists at other non-Ruby-specific gatherings. A number of conferences +have also been devoted to [Ruby on Rails][11], including Ruby Central’s +[RailsConf][12], [RailsConf Europe][13] (co-produced in 2006 by Ruby +Central and [Skills Matter][14], and in 2007 by Ruby Central and +O’Reilly), and Canada on Rails. + + + +[rc]: http://rubyconferences.org/ +[1]: http://rubyconf.org/ +[2]: http://rubycentral.org +[3]: http://rubykaigi.org/ +[4]: http://euruko.org +[6]: http://rubycentral.org/community/grant +[7]: http://www.svforum.org +[8]: http://rubynation.org/ +[9]: http://windycityrails.org +[10]: http://conferences.oreillynet.com/os2006/ +[11]: http://www.rubyonrails.org +[12]: http://www.railsconf.org +[13]: http://europe.railsconf.org +[14]: http://www.skillsmatter.com +[16]: http://steelcityruby.org/ +[19]: http://goruco.com/ +[20]: http://www.deccanrubyconf.org/ diff --git a/fa/community/index.md b/fa/community/index.md new file mode 100644 index 0000000000..2c2fc2a80d --- /dev/null +++ b/fa/community/index.md @@ -0,0 +1,59 @@ +--- +layout: page +title: "Community" +lang: en +--- + +The community that grows up around a programming language is one of its +most important strengths. Ruby has a vibrant and growing community that +is friendly towards people of all skill levels. +{: .summary} + +If you are interested in getting involved, here are a couple of places +to start: + +[Ruby User Groups](user-groups/) +: Your local Ruby user group is a great place to network with other Ruby + programmers. Ruby user groups are self-organizing and typically + feature monthly meetings, a mailing list, a Web site, and if you are + lucky, frequent codefests. + +[Ruby Mailing Lists and Newsgroups](mailing-lists/) +: Ruby has an assortment of lists on different topics and in several + languages. If you have questions about Ruby, asking them on a mailing + list is a great way to get answers. + +[Ruby on IRC (#ruby)](irc://irc.freenode.net/ruby) +: The Ruby Language IRC Channel is a wonderful way to chat with fellow + Rubyists. + +[Ruby Core](ruby-core/) +: Now is a fantastic time to follow Ruby’s development. + If you are interested in helping with Ruby, start here. + +[Ruby Blogs](weblogs/) +: Very little happens in the Ruby community that is not talked about on + the blogs. We’ve got a nice list of suggestions for you here for + getting plugged in. + +[Ruby Conferences](conferences/) +: Ruby programmers around the world are getting involved in more and + more conferences, where they get together to share reports on + work-in-progress, discuss the future of Ruby, and welcome newcomers to + the Ruby community. + +[Podcasts](podcasts/) +: If you like to hear about Ruby rather than read about you can listen + to podcasts which cover new Ruby or gem releases, interviews and + discussions between Ruby programmers, contributors, and maintainers. + +General Ruby Information +: * [Ruby Central][ruby-central] + * [Ruby at Open Directory Project][ruby-opendir] + * [Rails at Open Directory Project][rails-opendir] + + + +[ruby-central]: http://rubycentral.org/ +[ruby-opendir]: https://dmoztools.net/Computers/Programming/Languages/Ruby/ +[rails-opendir]: https://dmoztools.net/Computers/Programming/Languages/Ruby/Software/Frameworks/Rails/ diff --git a/fa/community/mailing-lists/index.md b/fa/community/mailing-lists/index.md new file mode 100644 index 0000000000..8b67cde270 --- /dev/null +++ b/fa/community/mailing-lists/index.md @@ -0,0 +1,49 @@ +--- +layout: page +title: "Mailing Lists" +lang: en +--- + +Mailing-lists are a great way to keep your finger on the pulse of the +Ruby community. +{: .summary} + +Ruby has four primary English speaking mailing lists: + +Ruby-Talk +: This is the most popular mailing-list and deals with general topics + about Ruby. ([Archives][3], [Posting Guidelines][guidelines]) + +Ruby-Core +: This list deals with core and implementation topics about Ruby, often + used to run patches for review. ([Archives][4]) + +Ruby-Doc +: This list is for discussing documentation standards and tools for + Ruby. ([Archives][5]) + +Ruby-CVS +: This list reports all commits to Ruby’s Subversion repository. + +The comp.lang.ruby Newsgroup +: Those who prefer Usenet over mailing lists will want to checkout the + [comp.lang.ruby](news:comp.lang.ruby) newsgroup. ([FAQ][clrFAQ]) + +See [lists.ruby-lang.org](http://lists.ruby-lang.org) +for more information about all mailing lists on ruby-lang.org, +including the lists in Japanese language. + +## Subscribe or Unsubscribe + +{% include subscription-form.html %} + +If you fail to receive a confirmation e-mail using the form, try +subscribing the [manual way](manual-instructions/). + + + +[guidelines]: ruby-talk-guidelines/ +[clrFAQ]: http://rubyhacker.com/clrFAQ.html +[3]: http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml +[4]: http://blade.nagaokaut.ac.jp/ruby/ruby-core/index.shtml +[5]: http://lists.ruby-lang.org/pipermail/ruby-doc/ diff --git a/fa/community/mailing-lists/manual-instructions/index.md b/fa/community/mailing-lists/manual-instructions/index.md new file mode 100644 index 0000000000..e60d18366f --- /dev/null +++ b/fa/community/mailing-lists/manual-instructions/index.md @@ -0,0 +1,63 @@ +--- +layout: page +title: "Manual Mailing List Instructions" +lang: en +--- + +NOTE: If you cannot subscribe, please refer to +[lists.ruby-lang.org](http://lists.ruby-lang.org). + +To subscribe to a mailing list, please send a plain text mail +with the following mail body (not the subject) to the automated +“controller” address: + + subscribe +{: .code} + +Ruby-Talk +: For the Ruby-Talk list, the controller address is + [ruby-talk-request@ruby-lang.org](mailto:ruby-talk-request@ruby-lang.org), the + posting address is + [ruby-talk@ruby-lang.org](mailto:ruby-talk@ruby-lang.org), and the + human administrator address is + [ruby-talk-owner@ruby-lang.org](mailto:ruby-talk-owner@ruby-lang.org). + +Ruby-Core +: For the Ruby-Core list, the controller address is + [ruby-core-request@ruby-lang.org](mailto:ruby-core-request@ruby-lang.org), the + posting address is + [ruby-core@ruby-lang.org](mailto:ruby-core@ruby-lang.org), and the + “human” administrator address is + [ruby-core-owner@ruby-lang.org](mailto:ruby-core-owner@ruby-lang.org). + +Ruby-Doc +: For the Ruby-Doc list, the controller address is + [ruby-doc-request@ruby-lang.org](mailto:ruby-doc-request@ruby-lang.org), the + posting address is + [ruby-doc@ruby-lang.org](mailto:ruby-doc@ruby-lang.org), and the + “human” administrator address is + [ruby-doc-owner@ruby-lang.org](mailto:ruby-doc-owner@ruby-lang.org). + +Ruby-CVS +: For the Ruby-CVS list, the controller address is + [ruby-cvs-request@ruby-lang.org](mailto:ruby-cvs-request@ruby-lang.org), the + posting address is + [ruby-cvs@ruby-lang.org](mailto:ruby-cvs@ruby-lang.org), and the + “human” administrator address is + [ruby-cvs-owner@ruby-lang.org](mailto:ruby-cvs-owner@ruby-lang.org). + +### Unsubscribing + +To unsubscribe from a list, send a mail which body is “unsubscribe” to +the **controller address**: + + unsubscribe +{: .code} + +Make sure to send a plain text mail, an HTML mail might not work. + +### Getting Help + +To see the list of commands, send a mail which body is “help” to the +controller address. + diff --git a/fa/community/mailing-lists/ruby-talk-guidelines/index.md b/fa/community/mailing-lists/ruby-talk-guidelines/index.md new file mode 100644 index 0000000000..a9879ea121 --- /dev/null +++ b/fa/community/mailing-lists/ruby-talk-guidelines/index.md @@ -0,0 +1,82 @@ +--- +layout: page +title: "Posting Guidelines for the Ruby-Talk Mailing List" +lang: en +--- + +You should follow these guidelines when posting to the ruby-talk mailing list. +{: .summary} + + +1. **Always** be friendly, considerate, tactful, and tasteful. We want to + keep this list hospitable to the growing ranks of newbies, very + young people, and their teachers, as well as cater to fire breathing + wizards. :-) + +2. Keep your content relevant and easy to follow. Try to keep your + content brief and to the point, but also try to include all relevant + information. + + 1. The general format guidelines (aka Netiquette) are + matters of common sense and common courtesy that make life + easier for third parties to follow along (in real time or when + perusing archives): + + * **Please note:** + Include quoted text from previous posts **before** your responses + and **selectively** quote as much as is relevant. + * Use **plain text**; don't use HTML, RTF, or Word. + Most email programs have an option for this; if yours doesn't, + get a (free) program or use a web-based service that does. + * Include examples from files as **in-line** text; don't use + attachments. + + 2. If reporting a problem, give **all** the relevant information + the first time; this isn't the psychic friends newsgroup. :-) + + When appropriate, include: + + * an example (preferably simple) that produces the problem + * the actual error messages + * the version of Ruby (`ruby -v`) + * the OS type and version (`uname -a`) + * the compiler name and version used to build Ruby + +3. Make the subject line maximally informative, so that people who + should be interested will read your post and so that people who + wouldn't be interested can easily avoid it. + + **Usefully** describe the contents of your post. + + This is OK: + + * "How can I do x with y on z?" + * "Problem: did x, expected y, got z." + * "BUG: doing x with module y crashed z." + + This is **not** OK: + + * "Please help!!!" + * "Newbie question" + * "Need Ruby guru to tell me what's wrong" + + These prefixes have become common for subject lines: + + * `[ANN]` (for announcements) + * `[BUG]` (for bug reports) + * `[OT]` (for off-topic, if you must post off-topic) + +4. Finally, be considerate: Don't be too lazy. If you are seeking + information, first make a reasonable effort to look it up. As + appropriate, check the [Ruby home page][ruby-lang], + check the [Ruby FAQ][faq] and other documentation, + use a search engine to search past postings, and so on. + + +_These guidelines where adopted from the [comp.lang.ruby FAQ][clrFAQ]._ + + + +[ruby-lang]: /en/ +[faq]: /en/documentation/faq/ +[clrFAQ]: http://rubyhacker.com/clrFAQ.html diff --git a/fa/community/podcasts/index.md b/fa/community/podcasts/index.md new file mode 100644 index 0000000000..187c76cafe --- /dev/null +++ b/fa/community/podcasts/index.md @@ -0,0 +1,18 @@ +--- +layout: page +title: "Podcasts" +lang: en +--- + +Listen to news, interviews, and discussions about Ruby and its community. + +[Ruby Rogues][rogues] +: The Ruby Rogues podcast is a panel discussion about topics relating to + programming, careers, community, and Ruby. + +[Ruby on Rails Podcast][rorpodcast] +: The Ruby on Rails Podcast, a weekly conversation about Ruby on Rails, + open source software, and the programming profession. + +[rorpodcast]: http://5by5.tv/rubyonrails +[rogues]: https://devchat.tv/ruby-rogues diff --git a/fa/community/ruby-core/index.md b/fa/community/ruby-core/index.md new file mode 100644 index 0000000000..d12fd8e2bb --- /dev/null +++ b/fa/community/ruby-core/index.md @@ -0,0 +1,166 @@ +--- +layout: page +title: "Ruby Core" +lang: en +--- + +Now is a fantastic time to follow Ruby’s development. With the increased +attention Ruby has received in the past few years, there’s a growing need +for good talent to help enhance Ruby and document its parts. +So, where do you start? +{: .summary} + +The topics related to Ruby development covered here are: + +* [Using Subversion to Track Ruby Development](#following-ruby) +* [How to Use Git With the Main Ruby Repository](#git-ruby) +* [Improving Ruby, Patch by Patch](#patching-ruby) +* [Rules for Core Developers](#coding-standards) + +### Using Subversion to Track Ruby Development +{: #following-ruby} + +Getting the latest Ruby source code is a matter of an anonymous checkout +from the [Subversion][1] repository. From your command line: + +{% highlight sh %} +$ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby +{% endhighlight %} + +The `ruby` directory will now contain the latest source code +for the development version of Ruby (ruby-trunk). +Currently patches applied to the trunk are backported to the stable +{{ site.svn.stable.version }}, {{ site.svn.previous.version }}, +and {{ site.svn.old.version }} branches (see below). + +If you’d like to follow patching of Ruby {{ site.svn.stable.version }}, +you should use the `{{ site.svn.stable.branch }}` branch when checking out: + +{% highlight sh %} +$ svn co https://svn.ruby-lang.org/repos/ruby/branches/{{ site.svn.stable.branch }} +{% endhighlight %} + +Similarly for Ruby {{ site.svn.previous.version }}: + +{% highlight sh %} +$ svn co https://svn.ruby-lang.org/repos/ruby/branches/{{ site.svn.previous.branch }} +{% endhighlight %} + +This will check out the respective development tree into a +`{{ site.svn.stable.branch }}` or `{{ site.svn.previous.branch }}` directory. +Developers working on the maintenance branches are expected to migrate +their changes to Ruby’s trunk, so often the branches are very similar, +with the exception of improvements made by Matz and Nobu to the language +itself. + +If you prefer, you may browse [Ruby’s Subversion repository via the web][2]. + +For information about Subversion, please see the [Subversion FAQ][3] +and the [Subversion book][4]. Alternatively, you may find +[Pragmatic Version Control with Subversion][5] to be a useful introductory book. + +### How to Use Git With the Main Ruby Repository +{: #git-ruby} + +Those who prefer to use [Git][6] over Subversion can find instructions +with the [mirror on GitHub][7], both for [those with commit access][8] +and [everybody else][9]. + +### Improving Ruby, Patch by Patch +{: #patching-ruby} + +The core team maintains an [issue tracker][10] for submitting patches and +bug reports to Matz and the gang. These reports also get submitted to +the [Ruby-Core mailing list][mailing-lists] for discussion, +so you can be sure your request won’t go unnoticed. You can +also send your patches straight to the mailing list. Either way, you are +encouraged to take part in the discussion that ensues. + +Please look over the [Patch Writer’s Guide][writing-patches] for some tips, +straight from Matz, on how to get your patches considered. + +To summarize, the steps for building a patch are: + +1. Check out a copy of the Ruby source code from Subversion. + Usually patches for bugfixes or new features should be submitted + for the trunk of Ruby’s source. Even if you wish to add a feature + to Ruby {{ site.svn.previous.version }}, it has to be proven in + the trunk first. + + $ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby + + If you are fixing a bug that is specific to only one maintenance branch, + check out a copy of the respective branch, + e.g. `{{ site.svn.previous.branch }}`. + + $ svn co https://svn.ruby-lang.org/repos/ruby/branches/{{ site.svn.previous.branch }} + +2. Add your improvements to the code. + +3. Create a patch. + + $ svn diff > ruby-changes.patch + +4. Create a ticket in the [issue tracker][10] or email your patch to + the [Ruby-Core mailing list][mailing-lists] with a ChangeLog entry + describing the patch. + +5. If there are no issues raised about the patch, committers will be + given the approval to apply it. + +**Please note:** patches should be submitted as a [unified diff][12]. +For more on how patches are merged, see [the diffutils reference][13]. + +Discussion of Ruby’s development converges on the +[Ruby-Core mailing list][mailing-lists]. So, if you are curious +about whether your patch is worthwhile or you want to spark a discussion +about Ruby’s future, don’t hesitate to come aboard. Be warned that +off-topic discussions are not tolerated on this list, the noise level +should be very low, topics should be pointed, well-conceived and +well-written. Since we’re addressing Ruby’s creator, let’s have some +reverence. + +Keep in mind that Ruby’s core developers live in Japan and, while many +speak very good English, there is a significant timezone difference. +They also have an entire body of Japanese development lists happening +alongside the English counterparts. Be patient, if your claim isn’t +resolved, be persistent—give it another shot a few days later. + +### Rules for Core Developers +{: #coding-standards} + +Generally, the developers of Ruby should be familiar with the source +code and the style of development used by the team. To be clear, the +following guidelines should be honored when checking into Subversion: + +* All check-ins should be described in the `ChangeLog`, following the + [GNU conventions][14]. (Many Ruby core developers use Emacs `add-log` + mode, which can be accessed with the command `C-x 4 a`.) +* Check-in dates should be given in Japan Standard Time (UTC+9). +* The bulleted points from your ChangeLog should also be placed in the + Subversion commit message. This message will be automatically mailed + to the Ruby-CVS list after you commit. +* Function prototypes are used throughout Ruby’s source code and its + packaged extensions. +* Please, do not use C++-style comments (`//`), Ruby’s maintainers + instead prefer the standard C multi-line comment (`/* .. */`). + +See also the information in [Ruby’s issue tracker][10]. + + + +[mailing-lists]: /en/community/mailing-lists/ +[writing-patches]: /en/community/ruby-core/writing-patches/ +[1]: http://subversion.apache.org/ +[2]: https://svn.ruby-lang.org/cgi-bin/viewvc.cgi/ +[3]: http://subversion.apache.org/faq.html +[4]: http://svnbook.org +[5]: http://www.pragmaticprogrammer.com/titles/svn/ +[6]: http://git-scm.com/ +[7]: https://github.com/ruby/ruby +[8]: https://github.com/shyouhei/ruby/wiki/committerhowto +[9]: https://github.com/shyouhei/ruby/wiki/noncommitterhowto +[10]: https://bugs.ruby-lang.org/ +[12]: http://www.gnu.org/software/diffutils/manual/html_node/Unified-Format.html +[13]: http://www.gnu.org/software/diffutils/manual/html_node/Merging-with-patch.html#Merging%20with%20patch +[14]: http://www.gnu.org/prep/standards/standards.html#Change-Logs diff --git a/fa/community/ruby-core/writing-patches/index.md b/fa/community/ruby-core/writing-patches/index.md new file mode 100644 index 0000000000..da58f110a8 --- /dev/null +++ b/fa/community/ruby-core/writing-patches/index.md @@ -0,0 +1,52 @@ +--- +layout: page +title: "Patch Writer’s Guide" +lang: en +--- + +Here follow some tips, straight from Matz, on how to get +your patches considered. +{: .summary} + +These guidelines were adopted from a [post by Matz][ruby-core-post] +on the Ruby-Core mailing list: + +* Implement one modification per patch + + This is the biggest issue for most deferred patches. When you + submit a patch that fixes multiple bugs (and adds features) at once, + we have to separate them before applying it. It is a rather hard task + for us busy developers, so this kind of patches tends to be deferred. + No big patches please. + +* Provide descriptions + + Sometimes a mere patch does not sufficiently describe the problem it fixes. + A better description (the problem it fixes, preconditions, platform, etc.) + would help a patch to be merged earlier. + +* Diff to the latest revision + + Your problem might have been fixed in the latest revision. Or the code + might be totally different by now. Before submitting a patch, try to fetch + the latest version (the `trunk` branch for the latest development version, + `{{ site.svn.stable.branch }}` for {{ site.svn.stable.version }}) + from the Subversion repository, please. + +* Use `diff -u` + + We prefer `diff -u` style unified diff patches to `diff -c` + or any other style of patches. They are far easier to review. + Do not send modified files, we do not want to make a diff by ourselves. + +* Provide test cases (optional) + + A patch providing test cases (preferably a patch to `test/*/test_*.rb`) + would help us understand the patch and your intention. + +We might move to a Git style push/pull workflow in the future. +But until then, following the above guidelines would help you to avoid +frustration. + + +[ruby-core-post]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/25139 diff --git a/fa/community/user-groups/index.md b/fa/community/user-groups/index.md new file mode 100644 index 0000000000..3788b4fce0 --- /dev/null +++ b/fa/community/user-groups/index.md @@ -0,0 +1,44 @@ +--- +layout: page +title: "User Groups" +lang: en +--- + +In the programming community, user groups form support networks for +people interested in certain topics. They are a great place to increase +your skills and network with other programmers. User groups are informal +and their structure varies from group to group. Anyone can form their +own group and set their own rules and schedule. +{: .summary} + +### Ruby User Groups + +If you want to get together with other Ruby programmers, a local user +group may be just the thing. Ruby user groups are entirely devoted to +Ruby. They typically feature monthly meetings, a mailing list, a website, +and if you're lucky, frequent hacking sessions (meetings devoted +to giving people a chance to write Ruby code). + +Information about Ruby user groups can be found on various websites: + +[rubyusergroups.org][1] +: A public listing of Ruby groups throughout the world. Also allows + Rubyists to place themselves on a map of the world. + +[Ruby Meetup Groups][2] +: A substantial number of Ruby User Groups have chosen to make Meetup + their home. Meetup provides a number of tools for user groups, + including: private forums, a place for announcements, automated + meeting reminders, and a nice RSVP system. + +### Organizing Your Own Group + +If you are interested in forming your own group, be sure to find out if +there is already a Ruby user group in your area. Larger meetings are +usually much more fun, so starting your own group may not be the best +option if there is already one nearby. + + + +[1]: http://www.rubyusergroups.org/ +[2]: http://ruby.meetup.com diff --git a/fa/community/weblogs/index.md b/fa/community/weblogs/index.md new file mode 100644 index 0000000000..5acfeb5ea2 --- /dev/null +++ b/fa/community/weblogs/index.md @@ -0,0 +1,48 @@ +--- +layout: page +title: "Blogs" +lang: en +--- + +Ruby blogs have exploded over the past years and given sufficient +hunting, you can unearth hundreds of blogs sharing bits of Ruby code, +describing new techniques, or speculating on Ruby’s future. +{: .summary} + +### Mining for Ruby Blogs + +* [**RubyFlow**][rubyflow], “the Ruby and Rails community linklog”, + is a Ruby news site with links to libraries, blog posts, tutorials, + and other Ruby resources. +* [**Rubyland**][rubyland] aggregates news and blog posts about Ruby + from RSS feeds. + +### Blogs of Note + +A few notable blogs stand out for the frequency and immediacy of their +updates. + +* [**Ruby Weekly**][ruby-weekly]: Although more of a newsletter than a + blog, Ruby Weekly is a distillation of the most interesting Ruby + articles and news each week. +* [**Riding Rails**][riding-rails] is the official group blog of the + Ruby on Rails team. If you are running Rails, this blog is essential + for notification of security updates and an overall view of the wide + Rails community. + +### Spreading the Word + +If you're interested in writing for any of the above blogs, you should +contact the authors. + +Ruby is also a common topic on [reddit][reddit] and [Hacker News][hn], +in their respective programming news. If you find some brilliant code +out there, be sure to share! + + +[rubyflow]: http://www.rubyflow.com/ +[rubyland]: http://rubyland.news/ +[ruby-weekly]: https://rubyweekly.com/ +[riding-rails]: http://weblog.rubyonrails.org/ +[reddit]: http://www.reddit.com/r/ruby +[hn]: http://news.ycombinator.com/ diff --git a/fa/conduct/index.md b/fa/conduct/index.md new file mode 100644 index 0000000000..7dbdc22974 --- /dev/null +++ b/fa/conduct/index.md @@ -0,0 +1,22 @@ +--- +layout: page +title: "The Ruby Community Conduct Guideline" +lang: en +--- + +We have picked the following conduct guideline based on an early proposed draft +of the PostgreSQL CoC, for Ruby developers community for safe, productive +collaboration. +Each Ruby related community (conference etc.) may pick their own Code of Conduct. +{: .summary} + +This document provides community guidelines for a safe, respectful, productive, +and collaborative place for any person who is willing to contribute to the Ruby +community. It applies to all "collaborative space", which is defined as +community communications channels (such as mailing lists, submitted patches, +commit comments, etc.). + + * Participants will be tolerant of opposing views. + * Participants must ensure that their language and actions are free of personal attacks and disparaging personal remarks. + * When interpreting the words and actions of others, participants should always assume good intentions. + * Behaviour which can be reasonably considered harassment will not be tolerated. diff --git a/fa/documentation/faq/1/index.md b/fa/documentation/faq/1/index.md new file mode 100644 index 0000000000..f12ebf27f5 --- /dev/null +++ b/fa/documentation/faq/1/index.md @@ -0,0 +1,344 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <strong>1</strong> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## General questions + +### What is Ruby? + +Ruby is a simple and powerful object-oriented programming language, created by +Yukihiro Matsumoto (who goes by the handle "Matz" in this document and on the +mailing lists). + +Like Perl, Ruby is good at text processing. Like Smalltalk, everything in Ruby +is an object, and Ruby has blocks, iterators, meta-classes and other good +stuff. + +You can use Ruby to write servers, experiment with prototypes, and for +everyday programming tasks. As a fully-integrated object-oriented language, +Ruby scales well. + +Ruby features: + +* Simple syntax, +* Basic OO features (classes, methods, objects, and so on), +* Special OO features (mixins, singleton methods, renaming, and so on), +* Operator overloading, +* Exception handling, +* Iterators and closures, +* Garbage collection, +* Dynamic loading (depending on the architecture), +* High transportability (runs on various Unices, Windows, DOS, macOS, OS/2, + Amiga, and so on). + +### Show me some Ruby code! + +Let's define a class called `Person`, with a name and an age. We'll test our +code by creating a few people and examining them. + +~~~ +class Person + attr_accessor :name, :age + + def initialize(name, age) + @name = name + @age = age.to_i + end + + def inspect + "#{name} (#{age})" + end +end + +p1 = Person.new("Elmo", 4) +p2 = Person.new("Zoe", 7) + +p1 # => Elmo (4) +p2 # => Zoe (7) +~~~ + +Now let's populate an array of people by reading their names and ages from a +file `ages` containing lines like: + +~~~ +Bert: 8 +Cookie: 11 +Elmo: 4 +Ernie: 8 +Zoe: 7 +~~~ + +The code uses regular expressions to parse successive lines from the input +file, creating a new `Person` object for each match and pushing it onto the +end of the array `people`. + +~~~ +people = Array.new + +File.foreach("ages") do |line| + people << Person.new($1, $2) if line =~ /(.*):\s+(\d+)/ +end + +people # => [Bert (8), Cookie (11), Elmo (4), Ernie (8), Zoe (7)] +~~~ + +Now, let's sort the result based on the person's age. There are many ways to +do this. We can define a sort block, which tells Ruby how to do the comparison +of two people: + +~~~ +sorted = people.sort {|a, b| a.age <=> b.age } +sorted # => [Elmo (4), Zoe (7), Bert (8), Ernie (8), Cookie (11)] +~~~ + +Another way would be to change the comparison method for class `Person`: + +~~~ +class Person + def <=>(other) + age <=> other.age + end +end +people.sort # => [Elmo (4), Zoe (7), Bert (8), Ernie (8), Cookie (11)] +~~~ + +### Why the name “Ruby”? + +Influenced by Perl, Matz wanted to use a jewel name for his new language, so +he named Ruby after a colleague's birthstone. + +Later, he realized that Ruby comes right after Perl in several situations. +In birthstones, pearl is June, ruby is July. When measuring font sizes, +pearl is 5pt, ruby is 5.5pt. He thought Ruby was a good name for a +programming language newer (and hopefully better) than Perl. + +(Based on an explanation from Matz in [\[ruby-talk:00394\]][ruby-talk:00394] +on June 11, 1999.) + +[ruby-talk:00394]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/394 + +### What is the history of Ruby? + +The following is a summary of a posting made by Matz in +[\[ruby-talk:00382\]][ruby-talk:00382] on June 4, 1999. +(The birthday of Ruby has been corrected in +[\[ruby-list:15977\]][ruby-list:15977].) + +> Well, Ruby was born on February 24, 1993. I was talking with my colleague +> about the possibility of an object-oriented scripting language. I knew Perl +> (Perl4, not Perl5), but I didn't like it really, because it had the smell of +> a toy language (it still has). The object-oriented scripting language seemed +> very promising. + +> I knew Python then. But I didn't like it, because I didn't think it was a +> true object-oriented language---OO features appeared to be an add-on to the +> language. As a language manic and OO fan for 15 years, I really wanted a +> genuine object-oriented, easy-to-use scripting language. I looked for, but +> couldn't find one. + +> So, I decided to make it. It took several months to make the interpreter +> run. I put into it the features I love to have in my language, such as +> iterators, exception handling, garbage collection. + +> Then, I reorganized the features of Perl into a class library, and +> implemented them. I posted Ruby 0.95 to the Japanese domestic newsgroups +> in Dec. 1995. + +> Since then, highly active mailing lists have been established and +> web pages formed. + +[ruby-talk:00382]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/382 +[ruby-list:15977]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/15977 + +### Where is the Ruby Home Page? + +The official Ruby Home Page is [www.ruby-lang.org](https://www.ruby-lang.org). +Besides the English and Japanese versions, there exist translations +into various other languages. + +Good starting points for finding Ruby information are the +[Documentation](/en/documentation/) and [Community](/en/community/) +pages. + +### Is there a Ruby newsgroup? + +comp.lang.ruby was established in May, 2000 (thanks to the efforts of +[Conrad Schneiker](mailto:schneiker@jump.net)). + +### Is there a Ruby mailing list? + +There are several mailing lists talking about Ruby. See the +[Mailing Lists](/en/community/mailing-lists/) +page for more information. + +You can search the mailing list archives using +[http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml](http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml). +(This is the URL for the ruby-talk list, munge as required for the others). + +### How can I thread the mailing list in mutt? + +{% include faq-out-of-date.html %} + +For some of the Ruby mailing lists, the mailing list software adds a prefix +to the subject lines, for example `ruby-core:1234`. This can confuse the +threading in some mail user agents. + +In mutt, you can get threading to work using the following variable setting. + +~~~ +# reply regexp, to support MLs like ruby-talk. +set reply_regexp="^(\[[a-z0-9:-]+\][[:space:]]*)?(re([\[0-9\]+])*|aw):[[:space:]]*" +~~~ + +### Which is correct, “Ruby” or “ruby”? + +Officially, the language is called “Ruby”. On most systems, it is invoked +using the command `ruby`. It's OK to use “ruby” instead of “Ruby”. + +Please don't use “RUBY” as the language name. + +Originally, or historically, it was called “ruby”. + +### Are there any Ruby books? + +{% include faq-out-of-date.html %} + +* Programming Ruby: The Pragmatic Programmer's Guide, + (the Pickaxe Book) by David Thomas and Andrew Hunt: ISBN 0-20171-089-7, + Addison-Wesley, October 2000. + +* A Japanese language Ruby reference book by Matz et al. and published by + ASCII is available in Japan (ISBN 4-7561-3254-5). An English translation, + “The Ruby Programming Language”, is available from O'Reilly & Associates + (ISBN 978-0596516178). + +* A Japanese language “Ruby Pocket Reference” is published by O'Reilly Japan + (ISBN 4-87311-023-8). Let O'Reilly in the US know if you'd like to see a + translation. + +* In addition, “Mastering Regular Expressions”, by Jeffrey Friedl, + (the Hip Owl Book): ISBN 1-56592-257-3 from O'Reilly & Associates, + is a reference work that covers the art and implementation of regular + expressions in various programming languages. Most of it is highly + relevant to Ruby regular expressions. + +### Which editors provide support for Ruby? + +{% include faq-out-of-date.html %} + +* [Emacs](http://www.gnu.org/software/emacs/emacs.html) + or [XEmacs](http://www.xemacs.org/): `ruby-mode.el` is supplied in the Ruby + distribution. With some versions of XEmacs, you may need to add + `(load "font-lock")` to your `.emacs` file to allow `ruby-mode.el` to detect + the syntax highlighting package you are using. +* [Vim](http://www.vim.org/): Vim 5.7 and later have Ruby syntax files as + standard in the runtime package. For prior versions, a syntax file for Ruby + is available at + [http://www.xs4all.nl/~hipster/lib/ruby/ruby.vim](http://www.xs4all.nl/~hipster/lib/ruby/ruby.vim). +* [Jedit](http://jedit.sourceforge.net/): A portable editor written in Java, + comes with support for Ruby. +* [Nedit](http://www.nedit.org): Eric Santonacci has written Ruby support for + Nedit, available from + [ftp://ftp.talc.fr/pub/ruby/ruby.nedit-0.1.tar.gz](ftp://ftp.talc.fr/pub/ruby/ruby.nedit-0.1.tar.gz). +* Barry Shultz has written a Ruby definition file for TextPad, available at + [https://www.textpad.com/add-ons/synn2t.html](https://www.textpad.com/add-ons/synn2t.html). + +### How can I annotate Ruby code with its results? + +{% include faq-out-of-date.html %} + +People commonly annotate Ruby code by showing the results of executing each +statement as a comment attached to that statement. For example, in the +following code, we show that the assignment generates the string "Billy Bob", +and then the result of extracting some substrings. + +~~~ +str = "Billy" + " Bob" # => "Billy Bob" +str[0,1] + str[2,1] + str[-2,2] # => "Blob" +~~~ + +Gotoken's `xmp` package, available from +[http://www.ruby-lang.org/en/raa-list.rhtml?name=xmp](http://www.ruby-lang.org/en/raa-list.rhtml?name=xmp) +is a utility that annotates Ruby source code this way. + +Emacs and vim users can integrate this with their editing environments, which +is useful if you want to send people e-mail with annotated Ruby code. Having +installed `xmp`, Emacs users can add the following to their `.emacs` file: + +~~~ +(defun ruby-xmp-region (reg-start reg-end) + "Pipe the region through Ruby's xmp utility and replace the region with + the result." + (interactive "r") + (shell-command-on-region reg-start reg-end + "ruby -r xmp -n -e 'xmp($_, \"%l\t\t# %r\n\")'" + t)) +(global-set-key [(meta f10)] 'ruby-xmp-region) +~~~ + +Vim users can use the mapping (thanks to hipster): + +~~~ +map <M-F10> :!ruby -r xmp -n -e 'xmp($_, "\%l\t\t\# \%r\n")'<CR> +~~~ + +In both cases, highlight a region of code and hit Meta-F10 to annotate it. + +### I can't understand Ruby even after reading the manual! + +{% include faq-out-of-date.html %} + +The syntax of Ruby has been fairly stable since Ruby 1.0, but new features are +added every now and then. So, the books and the online documentation can get +behind. + +If you have a problem, feel free to ask in the mailing list +(see the [Mailing Lists page](/en/community/mailing-lists/)). +Generally you'll get timely answers from Matz himself, the +author of the language, from other gurus, and from those who have solved +problems similar to your own. + +Please include the output of `ruby -v` along with any problematic +source code. + +If you have a problem using [`irb`](../10/#irb), +be aware that it has some limitations. +Try the script using `irb --single-irb`, or directly using the +`ruby` command. + +There might be similar questions in the mailing list, and it is good +netiquette to read through recent mails (RFC1855:3.1.1, 3.1.2) before asking. +But do ask on the list, and a correct answer will be forthcoming. diff --git a/fa/documentation/faq/10/index.md b/fa/documentation/faq/10/index.md new file mode 100644 index 0000000000..d361458b60 --- /dev/null +++ b/fa/documentation/faq/10/index.md @@ -0,0 +1,145 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <strong>10</strong> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## Extension library + +### How can I use Ruby interactively? +{: #irb} + +{% include faq-out-of-date.html %} + +You can try using `irb`. The following is paraphrased from Kentaro Goto +(Gotoken), and originally appeared in [\[ruby-talk:444\]][ruby-talk:444]. + +1. Get the latest tarball of `irb` from the + [contrib directory](ftp://ftp.netlab.co.jp/pub/lang/ruby/contrib/) + in the Ruby archive. +2. Extract the `irb` directory tree. +3. Add the location of the `irb/` directory to the `$RUBYLIB` + environment variable. +4. Make a symbolic link from `$RUBYLIB/irb/irb.rb` to a file called `irb` + somewhere in your path. +5. `chmod +x $RUBYLIB/irb/irb.rb` +6. Possibly use `rehash` to tell your login shell about the new command. +7. Type `irb`. + +If the readline extension module works with your interpreter, it makes `irb` +a lot more fun to use. + +There is also a simple program, `eval`, in the `samples/` directory of the +Ruby distribution. It lets you enter expressions and view their values. +You can copy `eval` into the `site_ruby` directory in the Ruby tree, and +then invoke it using: + +~~~ +ruby -r eval -e0 +~~~ + +[ruby-talk:444]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/444 + +### Is there a debugger for Ruby? + +There is a gdb-like debugger for Ruby. + +~~~ +ruby -r debug your_program +~~~ + +### How can I use a library written in C from Ruby? + +Of all the scripting languages, Ruby is probably the easiest to extend. +There are no problems with reference counting and variable types, and very +few interfaces to learn. In fact, C code used to extend Ruby often ends up +looking surprisingly like Ruby code itself. + +First, read the `doc/extension.rdoc` file in the Ruby source, +or read [extension.rdoc on docs.ruby-lang.org][extension-rdoc]. +This is a good document, not only if you are writing an extension library, +but also if you want to understand Ruby more deeply. + +Then, the RubyGems site provides a +[guide on creating gems with extensions][rubygems-guide]. +It shows how to setup a gem with C extensions that are built at install time. +It has also links to some existing gems that wrap C libraries and +to further reading. + +You might also want to have a look at the source of the interpreter itself, +and at the various supplied extensions in the `ext/` directory +(you can browse the [Ruby repository on GiHub][ruby-github]). + +[extension-rdoc]: http://docs.ruby-lang.org/en/trunk/extension_rdoc.html +[rubygems-guide]: http://guides.rubygems.org/gems-with-extensions/ +[ruby-github]: https://github.com/ruby/ruby + +### Can I use Tcl/Tk in Ruby? + +{% include faq-out-of-date.html %} + +There are two interfaces to Tcl/Tk included in the standard distribution. +One is under `ext/tcltk/` and loaded with `require "tcltk"`. The syntax is +very close to that Tcl which is passed on to the Tcl interpreter. +Unfortunately, the description for this library is written in Japanese. + +The other is under `ext/tk/` and loaded with `require "tk"`. Its syntax +is closer to the style of the Tk interface provided by the Perl and Python +interfaces. + +### Tk won't work. Why? + +{% include faq-out-of-date.html %} + +Your Tk version may be old, try a newer version. + +### Can I use gtk+ or xforms interfaces in Ruby? + +{% include faq-out-of-date.html %} + +You will find `ruby-gtk-x.xx.tar.gz` and `ruby-forms-x.x.tar.gz` +under `contrib/` on the Ruby ftp sites. + +### How can I do date arithmetic? + +{% include faq-out-of-date.html %} + +A `Time` object can express only the dates between Jan 1, 1970 and +Jan 19, 2038. + +Two standard extension library modules are provided: +`require "date"`, which is simple and uses the English calendar, +and `require "date2"`, which is more general purpose. + +Also see `sample/cal.rb`. diff --git a/fa/documentation/faq/11/index.md b/fa/documentation/faq/11/index.md new file mode 100644 index 0000000000..4e87342532 --- /dev/null +++ b/fa/documentation/faq/11/index.md @@ -0,0 +1,192 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <strong>11</strong> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## Other features + +### What does `a ? b : c` mean? + +This is the so-called “ternary operator” and is the same as saying +`if a then b else c end`. + +### How can I count the number of lines in a file? + +The following code may give the fastest result. + +~~~ +File.readlines("example").size # => 3 +~~~ + +### What do `MatchData#begin` and `MatchData#end` return? + +They act with `$~`, and return the start index and the end index of +the matched data in the original string. See an example in +[tab expansion](../9/#tab-expansion). + +### How can I sum the elements in an array? + +{% include faq-out-of-date.html %} + +Rather than solve the specific problem, let's solve the general case. +The first thing we will do is produce a method that will iterate over +an `Enumerable` object and collect a single result. Smalltalk calls that +method inject, so we will too: + +~~~ +module Enumerable + + # inject(n) {|n, i| ...} + def inject(n) + each {|i| n = yield(n, i) } + + n + end +end +~~~ + +Notice how we have added the method to `Enumerable`. This means that anything +that includes Enumerable can now use `inject`. But how do we use it? It takes +a single argument `n` and a block. For each element in the thing being +enumerated, it calls the block, passing in `n` and the element itself. +The result of the block is assigned back to `n`. So, to define `sum`, +we could write: + +~~~ +module Enumerable + def sum + inject(0) {|n, i| n + i } + end +end + +[1,3,5,7,9].sum # => 25 +(1..100).sum # => 5050 +~~~ + +### How can I use continuations? + +{% include faq-out-of-date.html %} + +Ruby's continuations allow you to create an object representing a place in a +Ruby program, and then return to that place at any time (even if it has +apparently gone out of scope). Continuations can be used to implement complex +control structures, but are typically more useful as ways of confusing people. + +In [\[ruby-talk:4482\]][ruby-talk:4482], Jim Weirich posted the following +examples of continuations: + +~~~ +# -------------------------------------------------------------------- +# Simple Producer/Consumer +# -------------------------------------------------------------------- +# Connect a simple counting task and a printing task together using +# continuations. +# +# Usage: count(limit) + +def count_task(count, consumer) + (1..count).each do |i| + callcc {|cc| consumer.call cc, i } + end + nil +end + +def print_task() + producer, i = callcc { |cc| return cc } + print "#{i} " + callcc { |cc| producer.call } +end + +def count(limit) + count_task(limit, print_task()) + print "\n" +end +~~~ + + +~~~ +# -------------------------------------------------------------------- +# Filtering Out Multiples of a Given Number +# -------------------------------------------------------------------- +# Create a filter that is both a consumer and producer. Insert it +# between the counting task and the printing task. +# +# Usage: omit(2, limit) + +def filter_task(factor, consumer) + producer, i = callcc { |cc| return cc } + if (i%factor) != 0 then + callcc { |cc| consumer.call cc, i } + end + producer.call +end + +def omit(factor, limit) + printer = print_task() + filter = filter_task(factor, printer) + count_task(limit, filter) + print "\n" +end +~~~ + + +~~~ +# -------------------------------------------------------------------- +# Prime Number Generator +# -------------------------------------------------------------------- +# Create a prime number generator. When a new prime number is +# discovered, dynamically add a new multiple filter to the chain of +# producers and consumers. +# +# Usage: primes(limit) + +def prime_task(consumer) + producer, i = callcc { |cc| return cc } + if i >= 2 then + callcc { |cc| consumer.call cc, i } + consumer = filter_task(i, consumer) + end + producer.call +end + +def primes(limit) + printer = print_task() + primes = prime_task(printer) + count_task(limit, primes) + print "\n" +end +~~~ + +[ruby-talk:4482]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/4482 diff --git a/fa/documentation/faq/2/index.md b/fa/documentation/faq/2/index.md new file mode 100644 index 0000000000..eda470ace3 --- /dev/null +++ b/fa/documentation/faq/2/index.md @@ -0,0 +1,102 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <strong>2</strong> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## How does Ruby stack up against...? + +### How does Ruby compare with Python? + +Python and Ruby are both object oriented languages that provide a smooth +transition from procedural to OO programming styles. Smalltalk, by contrast, +is object only---you can't do anything until you understand objects, +inheritance and the sizable Smalltalk class hierarchy. By providing procedural +training wheels, Python and Ruby “fix” one of the features that may have +kept Smalltalk out of the mainstream. The two languages differ by approaching +this solution from opposite directions. + +Python is a hybrid language. It has functions for procedural programming and +objects for OO programming. Python bridges the two worlds by allowing +functions and methods to interconvert using the explicit `self` parameter +of every method def. When a function is inserted into an object, the first +argument automagically becomes a reference to the receiver. + +Ruby is a pure OO language that can masquerade as a procedural one. It has no +functions, only method calls. In a Ruby method the receiver, also called +`self`, is a hidden argument like `this` in C++. A `def` statement outside of +a class definition, which is a function in Python, is actually a method call +in Ruby. These ersatz functions become private methods of class Object, the +root of the Ruby class hierarchy. Procedural programming is neatly solved from +the other direction---everything is an object. If the user doesn't grok +objects yet, they can just pretend that `def` is a function definition and +still get useful work done. + +Ruby's OO purity provides a number features that Python lacks or is still +working toward: a unified type/class hierarchy, metaclasses, the ability to +subclass everything, and uniform method invocation (none of this `len()` is a +function but `items()` is a method rubbish). Ruby, like Smalltalk, only +supports single inheritance, but it does have a very powerful mixin concept: +a class definition may include a module, which inserts that module's methods, +constants, etc. into the class. + +Ruby, again like Smalltalk, provides closures and code blocks and uses them +to the same good effect. The Ruby collection classes and iterators are +outstanding, much more powerful and elegant than the ad hoc solutions that +Python is sprouting (lambdas and list comprehensions). + +Ruby's syntax and design philosophy are heavily influenced by Perl. It has a +lot of syntactic variability. Statement modifiers (`if`, `unless`, `while`, +`until`, etc.) may appear at the end of any statement. Some key words are +optional (the `then` in an `if` statement for example). Parentheses may +sometimes be elided in method calls. The receiver of a method may usually be +elided. +Many, many things are lifted directly from Perl. +Built in regular expressions, `$_` and friends, here documents, the +single-quoted / double-quoted string distinction, `$` and `@` prefixes to +distinguish different kinds of names and so forth. + +If you like Perl, you will like Ruby and be right at home with its syntax. +If you like Smalltalk, you will like Ruby and be right at home with its +semantics. If you like Python, you may or may not be put off by the huge +difference in design philosophy between Python and Ruby/Perl. + +Ruby is much more complex than Python but its features, for the most part, +hang together well. Ruby is well designed and full of neat ideas that might be +mined for P3K. I'm not sure how many Python programmers will be attracted to +it though---it hasn't won me over (yet). But it is worthy of serious study and +could be a real threat to Perl. + +Posted by [John Dell'Aquila](mailto:jbd@alum.mit.edu) in comp.lang.python, +11/17/2000. Reproduced with permission. diff --git a/fa/documentation/faq/3/index.md b/fa/documentation/faq/3/index.md new file mode 100644 index 0000000000..d2a7f82f41 --- /dev/null +++ b/fa/documentation/faq/3/index.md @@ -0,0 +1,212 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <strong>3</strong> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## Installing Ruby + +For current information on downloading and installing Ruby +see the [Installation](/en/documentation/installation/) +or [Downloads](/en/downloads/) page. + +### What operating systems support Ruby? + +{% include faq-out-of-date.html %} + +Ruby is developed under Linux, and is written in fairly straightforward C. +It runs under Linux and other UNIX-like operating systems, macOS, +Windows, DOS, BeOS, Amiga, Acorn Risc OS, and OS/2. + +### Where can I get Ruby sources? + +The latest version of Ruby can be downloaded from: +[www.ruby-lang.org/en/downloads/](/en/downloads/). +Mirror sites are also listed on this page. + +Also on this page is a link to a nightly snapshot of the development tree. + +### Can I get to the development source tree? + +{% include faq-out-of-date.html %} + +If you have a CVS client, you can check out the current source tree using: + +~~~ +$ cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs login +(Logging in to anonymous@cvs.netlab.co.jp) +CVS password: guest +$ cvs -d :pserver:anonymous@cvs.netlab.co.jp:/home/cvs co ruby +~~~ + +If you do not have CVS you can get a nightly snapshot of the development +source from +[https://cache.ruby-lang.org/pub/ruby/snapshot.tar.gz](https://cache.ruby-lang.org/pub/ruby/snapshot.tar.gz). + +### How do I compile Ruby? + +Under Unix, Ruby uses the `autoconf` system to configure the build +environment. You don't need the `autoconf` command on your box to build Ruby +from a distribution; just use the commands: + +~~~ +$ ./configure [configure options] +$ make +$ make test +$ make install +~~~ + +You may need superuser privileges to install Ruby if you don't override the +default installation location (`/usr/local`). You can get a full list of +`configure` options using: + +~~~ +$ ./configure --help +~~~ + +If you are working from the source repository, you may need to run +`autoconf` before running `configure`. + +### How do I tell Ruby where my libraries are? + +{% include faq-out-of-date.html %} + +On some systems, the build process may fail to find libraries used by +extension modules (for example the `dbm` libraries). + +You can tell Ruby where to find libraries using options to `configure`. +From [\[ruby-talk:5041\]][ruby-talk:5041]: + +~~~ +$ ./configure --with-xxx-yyy=DIR +~~~ + +where xxx is either + +~~~ +opt extra software path in general +dbm path for dbm library +gdbm path for gdbm library +x11 ...for X11.. +tk ...for Tk... +tcl ...for Tcl... +~~~ + +and yyy is either + +~~~ +dir specifies -I DIR/include -L DIR/lib +include specifies -I DIR +lib specifies -L DIR +~~~ + +On HP-UX, there may be problems building with `gcc`. Try using the native +compiler instead. WATANABE Tetsuya recommends: + +~~~ +$ CC="cc -Ae" CFLAGS=-O ./configure --prefix=/opt/gnu +~~~ + +There may also be problems with HP's native `sed`. +He recommends installing the GNU equivalent. + +[ruby-talk:5041]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/5401 + +### Are precompiled binaries available? + +{% include faq-out-of-date.html %} + +A single download that contains everything you need to run Ruby under various +Windows operating systems is available from +[RubyCentral's One-click Windows installer](http://www.rubycentral.com/downloads/ruby-install.html). +This installation uses cygwin, and includes Tk support. + +If you want other installation options, precompiled binaries for Windows are +also available from +[http://www.os.rim.or.jp/~eban/](http://www.os.rim.or.jp/~eban/). +If you download the `ruby-1.x.y-yyyymmdd-i386-cygwin.tar.gz` package +(which is a good choice), you'll also need to download the cygwin DLL, +available from the same page. + +[Reuben Thomas](mailto:Reuben.Thomas@cl.cam.ac.uk) writes: + +> You could mention that there's a port to Acorn RISC OS, currently of v1.4.3. +> I made the port, and have no plans to maintain it, but I did send the +> patches to matz, so newer versions may well compile too. + +> I do provide a binary distribution of 1.4.3 for the Acorn at +> [http://www.cl.cam.ac.uk/users/rrt1001/ruby.zip](http://www.cl.cam.ac.uk/users/rrt1001/ruby.zip). + +### What's all this “cygwin”, “mingw”, and “djgpp” stuff? + +{% include faq-out-of-date.html %} + +Ruby is written to take advantage of the rich feature set of a Unix +environment. Unfortunately, Windows is missing some of the functions, and +implements others differently. As a result, some kind of mapping layer is +needed to run Ruby (and other Unix-based programs) under Windows. + +You may come across different versions of the Ruby executable that use +different wrapper mapping layers. + +The rbdj version is a stand-alone version of the Windows binary of Ruby. +It uses the DJ Delorie tools +([http://www.delorie.com](http://www.delorie.com)). + +The rbcw version is a Windows binary of Ruby that requires the cygwin library, +available at [http://www.cygwin.com](http://www.cygwin.com) or from the +Ruby download pages. Cygwin is both an emulation layer and a set of +utilities initially produced by Cygnus Solutions (now part of Redhat). +The cygwin version of Ruby probably has the fullest set of features under +Windows, so most programmers will want to use it. + +To use the rbcw version, you will need to install the cygwin .dll separately. +Once you have installed cygwin on your computer, copy `cygwin1.dll` (which +is found in the `bin` subdirectory of the cygwin distribution) to your +`Windows\System32` folder (or somewhere else on your path). + +Thanks to Anders Schneiderman for the basis of this description. + +### Why doesn't Tk graphics work under Windows? + +{% include faq-out-of-date.html %} + +Is Tk installed correctly on your Windows box? Go to +[http://dev.scriptics.com/software/tcltk/](http://dev.scriptics.com/software/tcltk/) +to find a precompiled binary Tcl/Tk distribution for your box. + +Are the environment variables `TCL_LIBRARY` and `TK_LIBRARY` pointing to the +directories containing tcl and tk? + +Is the tk library in your path? diff --git a/fa/documentation/faq/4/index.md b/fa/documentation/faq/4/index.md new file mode 100644 index 0000000000..800c496e45 --- /dev/null +++ b/fa/documentation/faq/4/index.md @@ -0,0 +1,428 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <strong>4</strong> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## Variables, constants, and arguments + +### Does assignment generate a new copy of an object? +{: #assignment} + +All variables and constants reference (point at) some object. (With the +exception of uninitialized local variables, which reference nothing. +These raise a `NameError` exception if used). When you assign to a variable, +or initialize a constant, you set the object that the variable or constant +references. + +Assignment on its own therefore never creates a new copy of an object. + +There's a slightly deeper explanation in certain special cases. Instances of +`Fixnum`, `NilClass`, `TrueClass`, and `FalseClass` are contained directly in +variables or constants---there is no reference involved. A variable holding +the number `42` or the constant `true` actually holds the value, and not a +reference to it. Assignment therefore physically produces a copy of objects +of these types. We discuss this more in +[Immediate and Reference Objects](../6/#immediate). + +### What is the scope of a local variable? + +A new scope for a local variable is introduced in (1) the toplevel (main), +(2) a class (or module) definition, or (3) a method definition. + +~~~ +var = 1 # (1) +class Demo + var = 2 # (2) + def method + var = 3 # (3) + puts "in method: var = #{var}" + end + puts "in class: var = #{var}" +end +puts "at top level: var = #{var}" +Demo.new.method +~~~ + +Produces: + +~~~ +in class: var = 2 +at top level: var = 1 +in method: var = 3 +~~~ + +(Note that the class definition is executable code: the trace message it +contains is written as the class is defined). + +A block (`{ ... }` or `do ... end`) almost introduces a new scope ;-) +Local variables created within a block are not accessible outside the block. +However, if a local variable within the block has the same name as an existing +local variable in the caller's scope, then no new local variable is created, +and you can subsequently access that variable outside the block. + +~~~ +a = 0 +1.upto(3) do |i| + a += i + b = i*i +end +a # => 6 +# b is not defined here +~~~ + +This becomes significant when you use threading---each thread receives its +own copy of the variables local to the thread's block: + +~~~ +threads = [] + +["one", "two"].each do |name| + threads << Thread.new do + local_name = name + a = 0 + 3.times do |i| + Thread.pass + a += i + puts "#{local_name}: #{a}" + end + end +end + +threads.each {|t| t.join } +~~~ + +Might produce (in case the scheduler switches threads as hinted +by `Thread.pass`; this depends on OS and processor): + +~~~ +one: 0 +two: 0 +one: 1 +two: 1 +one: 3 +two: 3 +~~~ + +`while`, `until`, and `for` are control structures, not blocks, so local +variables within them will be accessible in the enclosing environment. +`loop`, however, is a method and the associated block introduces a new scope. + +### When does a local variable become accessible? + +Actually, the question may be better asked as: “at what point does Ruby work +out that something is a variable?” The problem arises because the simple +expression `a` could be either a variable or a call to a method with no +parameters. To decide which is the case, Ruby looks for assignment statements. +If at some point in the source prior to the use of `a` it sees it being +assigned to, it decides to parse `a` as a variable, otherwise it treats it +as a method. As a somewhat pathological case of this, consider this code +fragment, originally submitted by Clemens Hintze: + +~~~ +def a + puts "method `a' called" + + 99 +end + +[1, 2].each do |i| + if i == 2 + puts "a = #{a}" + else + a = 1 + puts "a = #{a}" + end +end +~~~ + +Produces: + +~~~ +a = 1 +method `a' called +a = 99 +~~~ + +During the parse, Ruby sees the use of `a` in the first `puts` statement +and, as it hasn't yet seen any assignment to `a`, assumes that it is a method +call. By the time it gets to the second `puts` statement, though, it has seen +an assignment, and so treats `a` as a variable. + +Note that the assignment does not have to be executed---Ruby just has to have +seen it. This program does not raise an error: + +~~~ +a = 1 if false; a # => nil +~~~ + +This issue with variables is not normally a problem. If you do bump into it, +try putting an assignment such as `a = nil` before the first access to the +variable. This has the additional benefit of speeding up the access time to +local variables that subsequently appear in loops. + +### What is the scope of a constant? + +A constant defined in a class or module definition can be accessed directly +within that class's or module's definition. + +You can directly access the constants in outer classes and modules from +within nested classes and modules. + +You can also directly access constants in superclasses and included modules. + +Apart from these cases, you can access class and module constants using +the `::` operator, `ModuleName::CONST1` or `ClassName::CONST2`. + +### How are arguments passed? + +The actual argument is assigned to the formal argument when the method is +invoked. +(See [assignment](#assignment) for more on the semantics of assignment.) + +~~~ +def add_one(number) + number += 1 +end + +a = 1 +add_one(a) # => 2 +a # => 1 +~~~ + +As you are passing object references, it is possible that a method may modify +the contents of a mutable object passed into it. + +~~~ +def downer(string) + string.downcase! +end + +a = "HELLO" # => "HELLO" +downer(a) # => "hello" +a # => "hello" +~~~ + +There is no equivalent of other language's pass-by-reference semantics. + +### Does assignment to a formal argument influence the actual argument? + +A formal argument is a local variable. Within a method, assigning to a formal +argument simply changes the argument to reference another object. + +### What happens when I invoke a method via a formal argument? + +All Ruby variables (including method arguments) act as references to objects. +You can invoke methods in these objects to get or change the object's state +and to make the object do something. You can do this with objects passed to +methods. You need to be careful when doing this, as these kinds of side +effects can make programs hard to follow. + +### What does `*` prepended to an argument mean? + +When used as part of a formal parameter list, the asterisk allows arbitrary +numbers of arguments to be passed to a method by collecting them into an +array, and assigning that array to the starred parameter. + +~~~ +def foo(prefix, *all) + all.each do |element| + puts "#{prefix}#{element}" + end +end + +foo("val = ", 1, 2, 3) +~~~ + +Produces: + +~~~ +val = 1 +val = 2 +val = 3 +~~~ + +When used in a method call, `*` expands an array, passing its individual +elements as arguments. + +~~~ +a = [1, 2, 3] +foo(*a) +~~~ + +You can prepend `*` to the last argument of + +1. Left hand side of a multiple assignment. +2. Right hand side of a multiple assignment. +3. Definition of method formal arguments. +4. Actual arguments in a method call. +5. In `when` clause of `case` structure. + +For example: + +~~~ +x, *y = [7, 8, 9] +x # => 7 +y # => [8, 9] +x, = [7, 8, 9] +x # => 7 +x = [7, 8, 9] +x # => [7, 8, 9] +~~~ + +### What does `&` prepended to an argument mean? + +If the last formal argument of a method is preceded with an ampersand (`&`), +a block following the method call will be converted into a `Proc` object +and assigned to the formal parameter. + +If the last actual argument in a method invocation is a `Proc` object, +you can precede its name with an ampersand to convert in into a block. +The method may then use `yield` to call it. + +~~~ +def meth1(&b) + puts b.call(9) +end + +meth1 {|i| i + i } + +def meth2 + puts yield(8) +end + +square = proc {|i| i * i } + +meth2 {|i| i + i } +meth2 &square +~~~ + +Produces: + +~~~ +18 +16 +64 +~~~ + +### How can I specify a default value for a formal argument? + +~~~ +def greet(p1="hello", p2="world") + puts "#{p1} #{p2}" +end + +greet +greet("hi") +greet("morning", "mom") +~~~ + +Produces: + +~~~ +hello world +hi world +morning mom +~~~ + +The default value (which can be an arbitrary expression) is evaluated when +the method is invoked. It is evaluated using the scope of the method. + +### How do I pass arguments to a block? + +The formal parameters of a block appear between vertical bars at the start +of the block: + +~~~ +proc {|a, b| a <=> b } +~~~ + +These parameters are actually local variables. If an existing local variable +of the same name exists when the block executes, that variable will be +modified by the call to the block. This may or may not be a good thing. + +Typically, arguments are passed to a block using `yield` (or an iterator that +calls `yield`), or by using the `Proc.call` method. + +### Why did my object change unexpectedly? + +~~~ +A = a = b = "abc" +b.concat("d") # => "abcd" +a # => "abcd" +A # => "abcd" +~~~ + +Variables hold references to objects. The assignment `A = a = b = "abc"` puts +a reference to the string `"abc"` into `A`, `a`, and `b`. + +When you call `b.concat("d")`, you invoke the concat method on that object, +changing it from `"abc"` to `"abcd"`. Because `a` and `A` also reference that +same object, their apparent values change too. + +This is less of a problem in practice than it might appear. + +In addition, all objects may be frozen, protecting them from change. + +### Does the value of a constant ever change? + +A constant is a variable whose name starts with an upper case letter. +Constants may not be reassigned from within instance methods, +but can otherwise be changed at will. +When a constant is assigned a new value, a warning is issued. + +### Why can't I load variables from a separate file? + +Say `file1.rb` contains: + +~~~ +var1 = 99 +~~~ + +and some other file loads it in: + +~~~ +require_relative "file1" +puts var1 +~~~ + +Produces: + +~~~ +prog.rb:2:in `<main>': undefined local variable or method `var1' for main:Object (NameError) +~~~ + +You get an error because `load` and `require` arrange for local variables to +be stored into a separate, anonymous namespace, effectively discarding them. +This is designed to protect your code from being polluted. diff --git a/fa/documentation/faq/5/index.md b/fa/documentation/faq/5/index.md new file mode 100644 index 0000000000..566518ee56 --- /dev/null +++ b/fa/documentation/faq/5/index.md @@ -0,0 +1,237 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <strong>5</strong> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## Iterators + +### What is an iterator? + +An iterator is a method which accepts a block or a `Proc` object. In the +source file, the block is placed immediately after the invocation of the +method. Iterators are used to produce user-defined control +structures---especially loops. + +Let's look at an example to see how this works. Iterators are often used to +repeat the same action on each element of a collection, like this: + +~~~ +data = [1, 2, 3] +data.each do |i| + puts i +end +~~~ + +Produces: + +~~~ +1 +2 +3 +~~~ + +The each method of the array `data` is passed the `do ... end` block, +and executes it repeatedly. On each call, the block is passed successive +elements of the array. + +You can define blocks with `{ ... }` in place of `do ... end`. + +~~~ +data = [1, 2, 3] +data.each { |i| + puts i +} +~~~ + +Produces: + +~~~ +1 +2 +3 +~~~ + +This code has the same meaning as the last example. However, in some cases, +precedence issues cause `do ... end` and `{ ... }` to act differently. + +~~~ +foobar a, b do ... end # foobar is the iterator. +foobar a, b { ... } # b is the iterator. +~~~ + +This is because `{ ... }` binds more tightly to the preceding expression +than does a `do ... end` block. The first example is equivalent to +`foobar(a, b) do ... end`, while the second is `foobar(a, b { ... })`. + +### How can I pass a block to an iterator? + +You simply place the block after the iterator call. You can also pass a +`Proc` object by prepending `&` to the variable or constant name that refers +to the `Proc`. + +### How is a block used in an iterator? + +{% include faq-out-of-date.html %} + +There are three ways to execute a block from an iterator method: +(1) the `yield` control structure; (2) calling a `Proc` argument +(made from a block) with `call`; and (3) using `Proc.new` followed by a call. + +The `yield` statement calls the block, optionally passing it one or more +arguments. + +~~~ +def my_iterator + yield 1, 2 +end + +my_iterator {|a, b| puts a, b } +~~~ + +Produces: + +~~~ +1 +2 +~~~ + +If a method definition has a block argument (the last formal parameter has +an ampersand (`&`) prepended), it will receive the attached block, converted +to a `Proc` object. This may be called using `prc.call(args)`. + +~~~ +def my_iterator(&b) + b.call(1, 2) +end + +my_iterator {|a, b| puts a, b } +~~~ + +Produces: + +~~~ +1 +2 +~~~ + +`Proc.new` (or the equivalent `proc` or `lambda` calls), when used in an +iterator definition, takes the block which is given to the method as its +argument and generates a procedure object from it. +(`proc` and `lambda` are effectively synonyms.) + +_[Update needed: `lambda` behaves in a slightly different way and +produces a warning `tried to create Proc object without a block`.]_ + +~~~ +def my_iterator + Proc.new.call(3, 4) + proc.call(5, 6) + lambda.call(7, 8) +end + +my_iterator {|a, b| puts a, b } +~~~ + +Produces: + +~~~ +3 +4 +5 +6 +7 +8 +~~~ + +Perhaps surprisingly, `Proc.new` and friends do not in any sense consume +the block attached to the method---each call to `Proc.new` generates a new +procedure object out of the same block. + +You can tell if there is a block associated with a method by calling +`block_given?`. + +### What does `Proc.new` without a block do? + +`Proc.new` without a block cannot generate a procedure object and an error +occurs. In a method definition, however, `Proc.new` without a block implies +the existence of a block at the time the method is called, and so no error +will occur. + +### How can I run iterators in parallel? + +Here an adoption of a solution by Matz, in +[\[ruby-talk:5252\]][ruby-talk:5252], that uses threads: + +~~~ +require "thread" + +def combine(*iterators) + queues = [] + threads = [] + + iterators.each do |it| + queue = SizedQueue.new(1) + th = Thread.new(it, queue) do |i, q| + send(i) {|x| q << x } + end + queues << queue + threads << th + end + + loop do + ary = [] + queues.each {|q| ary << q.pop } + yield ary + + iterators.size.times do |i| + return if !threads[i].status && queues[i].empty? + end + end +end + +def it1 + yield 1; yield 2; yield 3 +end + +def it2 + yield 4; yield 5; yield 6 +end + +combine(:it1, :it2) do |x| + # x is [1, 4], then [2, 5], then [3, 6] +end +~~~ + +[ruby-talk:5252]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/5252 diff --git a/fa/documentation/faq/6/index.md b/fa/documentation/faq/6/index.md new file mode 100644 index 0000000000..c37ed43051 --- /dev/null +++ b/fa/documentation/faq/6/index.md @@ -0,0 +1,293 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <strong>6</strong> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## Syntax + +### What is the difference between an immediate value and a reference? +{: #immediate} + +{% include faq-out-of-date.html %} + +`Fixnum`, `true`, `nil`, and `false` are implemented as immediate values. +With immediate values, variables hold the objects themselves, rather than +references to them. + +Singleton methods cannot be defined for such objects. Two `Fixnums` of the +same value always represent the same object instance, so (for example) +instance variables for the `Fixnum` with the value `1` are shared between +all the `1`'s in the system. This makes it impossible to define a singleton +method for just one of these. + +### What is the difference between `nil` and `false`? + +First the similarity: `nil` and `false` are the only two objects +that evaluate to `false` in a boolean context. +(In other words: they are the only “falsy” values, all other +objects are “truthy”.) + +However, `nil` and `false` are instances of different classes +(`NilClass` and `FalseClass`), and have different behavior elsewhere. + +We recommend that predicate methods (those whose name ends with a question +mark) return `true` or `false`. Other methods that need to indicate failure +should return `nil`. + +### Why is an empty string not `false`? + +Q: An empty string (`""`) returns `true` in a conditional expression! +In Perl, it's `false`. + +A: But Ruby is not Perl ;-). It's very simple: in Ruby, only `nil` +and `false` are false in conditional contexts. + +You can use `empty?`, compare the string to `""`, or compare the string's +`size` or `length` to `0` to find out if a string is empty. + +### What does `:name` mean? + +A colon followed by a name generates a Symbol object which corresponds +one to one with the identifier. During the duration of a program's +execution the same Symbol object will be created for a given name or string. +Symbols can also be created with `"name".intern` or `"name".to_sym`. + +Symbol objects can represent identifiers for methods, variables, and so on. +Some methods, like `define_method`, `method_missing`, or `trace_var`, +require a symbol. Other methods, e.g. `attr_accessor`, `send`, or `autoload`, +also accept a string. + +Due to the fact that they are created only once, Symbols are often used as +hash keys. String hash keys would create a new object for every single use, +thereby causing some memory overhead. +There is even a special syntax for symbol hash keys: + +~~~ +person_1 = { :name => "John", :age => 42 } +person_2 = { name: "Jane", age: 24 } # alternate syntax +~~~ + +Symbols can also be used as enumeration values +or to assign unique values to constants: + +~~~ +status = :open # :closed, ... + +NORTH = :NORTH +SOUTH = :SOUTH +~~~ + +### How can I access the value of a symbol? + +To get the value of the variable corresponding to a symbol, you can use +`symbol.to_s` or `"#{symbol}"` to get the name of the variable, and then +eval that in the scope of the symbol to get the variable's contents: + +~~~ +a = "This is the content of `a'" +b = eval("#{:a}") +a.object_id == b.object_id # => true +~~~ + +You can also use + +~~~ +b = binding.local_variable_get(:a) +~~~ + +If your symbol corresponds to the name of a method, you can use `send`: + +~~~ +class Demo + def hello + "Hello, world" + end +end + +demo = Demo.new +demo.send(:hello) +~~~ + +Or you can use `Object#method` to return a corresponding `Method` object, +which you may then call: + +~~~ +m = demo.method(:hello) # => #<Method: Demo#hello> +m.call # => "Hello, world" +~~~ + +### Is `loop` a control structure? + +Although `loop` looks like a control structure, it is actually a method +defined in `Kernel`. The block which follows introduces a new scope for +local variables. + +### Ruby doesn't have a post-test loop + +Q: Ruby does not have a `do { ... } while` construct, so how can I implement +loops that test the condition at the end? + +Clemens Hintze says: You can use a combination of Ruby's `begin ... end` +and the `while` or `until` statement modifiers to achieve the same effect: + +~~~ +i = 0 +begin + puts "i = #{i}" + i += 1 +end until i > 4 +~~~ + +Produces: + +~~~ +i = 0 +i = 1 +i = 2 +i = 3 +i = 4 +~~~ + +### Why can't I pass a hash literal to a method: `p {}`? + +The `{}` is parsed as a block, not a `Hash` constructor. You can force the +`{}` to be treated as an expression by making the fact that it's a parameter +explicit: `p({})`. + +### I can't get `def pos=(val)` to work! + +I have the following code, but I cannot use the method `pos = 1`. + +~~~ +def pos=(val) + @pos = val + puts @pos +end +~~~ + +Methods with `=` appended must be called with an explicit receiver +(without the receiver, you are just assigning to a local variable). +Invoke it as `self.pos = 1`. + +### What is the difference between `'\1'` and `'\\1'`? + +They have the same meaning. In a single quoted string, only `\'` and `\\` +are transformed and other combinations remain unchanged. + +However, in a double quoted string, `"\1"` is the byte `\001` +(an octal bit pattern), while `"\\1"` is the two character string +containing a backslash and the character `"1"`. + +### What is the difference between `..` and `...`? + +`..` includes the right hand side in the range, `...` does not: + +~~~ +(5..8).to_a # => [5, 6, 7, 8] +(5...8).to_a # => [5, 6, 7] +~~~ + +### What is the difference between `or` and `||`? + +Q: `p(nil || "Hello")` prints `"Hello"`, while `p(nil or "Hello")` gives a +parse error. Why? + +A: `or` has a very low precedence, `p( (nil or "Hello") )` will work. + +The precedence of `or` is for instance also lower than that of `=`, +whereas `||` has a higher precedence: + +~~~ +foo = nil || "Hello" # parsed as: foo = (nil || "Hello") +foo # => "Hello" + +# but perhaps surprisingly: + +foo = nil or "Hello" # parsed as: (foo = nil) or "Hello" +foo # => nil +~~~ + +`or` (and similarly `and`) is best used **not** for combining +boolean expressions, but for control flow, like in + +~~~ +do_something or raise "some error!" +~~~ + +where `do_something` returns `false` or `nil` when an error occurs. + +### Does Ruby have function pointers? + +A `Proc` object generated by `Proc.new`, `proc`, or `lambda` can be referenced +from a variable, so that variable could be said to be a function pointer. You +can also get references to methods within a particular object instance using +`object.method`. + +### What is the difference between `load` and `require`? + +`load` will load and execute a Ruby program (`*.rb`). + +`require` loads Ruby programs as well, but will also load binary Ruby +extension modules (shared libraries or DLLs). In addition, +`require` ensures that a feature is never loaded more than once. + +### Does Ruby have exception handling? + +Ruby supports a flexible exception handling scheme: + +~~~ +begin + statements which may raise exceptions +rescue [exception class names] + statements when an exception occurred +rescue [exception class names] + statements when an exception occurred +ensure + statements that will always run +end +~~~ + +If an exception occurs in the `begin` clause, the `rescue` clause with the +matching exception name is executed. The `ensure` clause is executed whether +an exception occurred or not. `rescue` and `ensure` clauses may be omitted. + +If no exception class is designated for a `rescue` clause, `StandardError` +exception is implied, and exceptions which are in a `is_a?` relation to +`StandardError` are captured. + +This expression returns the value of the `begin` clause. + +The latest exception is accessed by the global variable `$!` +(and so its type can be determined using `$!.type`). diff --git a/fa/documentation/faq/7/index.md b/fa/documentation/faq/7/index.md new file mode 100644 index 0000000000..5524ec547a --- /dev/null +++ b/fa/documentation/faq/7/index.md @@ -0,0 +1,442 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <strong>7</strong> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## Methods + +### How does Ruby choose which method to invoke? + +Ruby binds all messages to methods dynamically. It searches first for +singleton methods in the receiver, then for methods defined in the receiver's +own class, and finally for methods defined in the receiver's superclasses +(including any modules which may have been mixed in). You can see the order +of searching by displaying `ClassName.ancestors`, which shows the ancestor +classes and modules of `ClassName`. + +If after searching the alternatives a matching method could not be found, +Ruby tries to invoke a method called `method_missing`, repeating the same +search procedure to find it. This allows you to handle messages to unknown +methods, and is often used to provide dynamic interfaces to classes. + +~~~ +module Emphasizable + def emphasize + "**#{self}**" + end +end + +class String + include Emphasizable +end + +String.ancestors + # => [String, Emphasizable, Comparable, Object, Kernel, BasicObject] + +"Wow!".emphasize # => "**Wow!**" +~~~ + +When the method `emphasize` is searched for, it is not found in class +`String`, so Ruby searches next in the module `Emphasizable`. + +In order to override a method that already exists in the receiver's class, +e.g. `String#capitalize`, you need to insert the module into the +ancestor chain in front of that class, by using `prepend`: + +~~~ +module PrettyCapitalize + def capitalize + "**#{super}**" + end +end + +class String + prepend PrettyCapitalize +end + +String.ancestors + # => [PrettyCapitalize, String, Comparable, Object, Kernel, BasicObject] + +"hello".capitalize # => "**Hello**" +~~~ + +### Are `+`, `-`, `*`, ... operators? + +`+`, `-`, and the like are not operators but method calls. +They can, therefore, be overloaded by new definitions. + +~~~ +class MyString < String + def -(other) + self[0...other.size] # self truncated to other's size + end +end +~~~ + +However, the following are built-in control structures, not methods, +which cannot be overridden: + +~~~ +=, .., ..., not, ||, &&, and, or, :: +~~~ + +To overload or to define the unary `+` and `-` operators, +you need to use `+@` and `-@` as the method names. + +`=` is used to define a method to set an attribute of the object: + +~~~ +class Test + def attribute=(val) + @attribute = val + end +end + +t = Test.new +t.attribute = 1 +~~~ + +If operators such as `+` and `-` are defined, Ruby automatically handles +the self assignment forms (`+=`, `-=`, and so on). + +### Where are `++` and `--` ? + +Ruby does not have the autoincrement and autodecrement operators. +You can use `+= 1` and `-= 1` instead. + +### What is a singleton method? +{: #singleton-method} + +A singleton method is an instance method associated with one specific object. + +You create a singleton method by including the object in the definition: + +~~~ +class Foo; end + +foo = Foo.new +bar = Foo.new + +def foo.hello + puts "Hello" +end + +foo.hello +bar.hello +~~~ + +Produces: + +~~~ +Hello +prog.rb:11:in `<main>': undefined method `hello' for #<Foo:0x000000010f5a40> (NoMethodError) +~~~ + +Singleton methods are useful when you want to add a method to an object and +creating a new subclass is not appropriate. + +### All these objects are fine, but does Ruby have any simple functions? + +Yes and no. Ruby has methods that look like functions in languages such +as C or Perl: + +~~~ +def hello(name) + puts "Hello, #{name}!" +end + +hello("World") +~~~ + +Produces: + +~~~ +Hello, World! +~~~ + +However, they are actually method calls with the receiver omitted. +In this case, Ruby assumes the receiver is self. + +So, `hello` resembles a function but it's actually a method belonging to +class `Object` and sent as a message to the hidden receiver self. +Ruby is a pure object-oriented language. + +Of course you can use such methods as if they were functions. + +### So where do all these function-like methods come from? + +Almost all classes in Ruby are derived from class `Object`. The definition +of class `Object` mixes in the methods defined in the `Kernel` module. +These methods are therefore available within every object in the system. + +Even if you are writing a simple Ruby program without classes, you are +actually working inside class `Object`. + +### Can I access an object's instance variables? + +An object's instance variables (those variables starting with `@`) are not +directly accessible outside the object. This promotes good encapsulation. +However, Ruby makes it easy for you to define accessors to these instance +variables in such a way that users of your class can treat instance variables +just like attributes. Just use one or more of `attr_reader`, `attr_writer`, +or `attr_accessor`. + +~~~ +class Person + attr_reader :name # read only + attr_accessor :wearing_a_hat # read/write + + def initialize(name) + @name = name + end +end + +p = Person.new("Dave") +p.name # => "Dave" +p.wearing_a_hat # => nil +p.wearing_a_hat = true +p.wearing_a_hat # => true +~~~ + +You can also define your own accessor functions (perhaps to perform +validation, or to handle derived attributes). The read accessor is simply a +method that takes no parameters, and the assignment accessor is a method name +ending in `=` that takes a single parameter. Although there can be no space +between the method name and the `=` in the method definition, you can insert +spaces there when you call the method, making it look like any other +assignment. You can also utilize self assignments such as `+=` and `-=`, +as long as the corresponding `+` or `-` methods are defined. + +### What's the difference between `private` and `protected`? + +The visibility keyword `private` makes a method callable only in a function +form, without an explicit receiver, and so it can only have `self` as its +receiver. A private method is callable only within the class in which the +method was defined or in its subclasses. + +~~~ +class Test + def foo + 99 + end + + def test(other) + p foo + p other.foo + end +end + +t1 = Test.new +t2 = Test.new + +t1.test(t2) + +# Now make `foo' private + +class Test + private :foo +end + +t1.test(t2) +~~~ + +Produces: + +~~~ +99 +99 +99 +prog.rb:8:in `test': private method `foo' called for #<Test:0x00000000b57a48> (NoMethodError) + from prog.rb:23:in `<main>' +~~~ + +Protected methods are also callable only from within their own class or +its subclasses, but they can be called both in function form and using +a receiver. For example: + +~~~ +def <=>(other) + age <=> other.age +end +~~~ + +Will compile if `age` is a protected method, but not if it is private. + +These features help you control access to your class's internals. + +### How can I change the visibility of a method? + +You change the visibility of methods using `private`, `protected`, and +`public`. When used without parameters during a class definition, they affect +the visibility of subsequent methods. When used with parameters, they change +the visibility of the named methods. + +~~~ +class Foo + def test + puts "hello" + end + private :test +end + +foo = Foo.new +foo.test +~~~ + +Produces: + +~~~ +prog.rb:9:in `<main>': private method `test' called for #<Foo:0x0000000284dda0> (NoMethodError) +~~~ + +You can make a class method private using `private_class_method`. + +~~~ +class Foo + def self.test + puts "hello" + end + private_class_method :test +end + +Foo.test +~~~ + +Produces: + +~~~ +prog.rb:8:in `<main>': private method `test' called for Foo:Class (NoMethodError) +~~~ + +The default visibility for the methods defined in a class is public. +The exception is the instance initializing method, `initialize`. + +Methods defined at the toplevel are also public by default. + +### Can an identifier beginning with a capital letter be a method name? + +Yes, it can, but we don't do it lightly! If Ruby sees a capitalized name +followed by a space, it will probably (depending on the context) assume it's +a constant, not a method name. So, if you use capitalized method names, +always remember to put parameter lists in parentheses, and always put the +parentheses next to the method name with no intervening spaces. +(This last suggestion is a good idea anyway!) + +### Calling `super` gives an `ArgumentError`. + +Invoking `super` with no parameters in a method passes all the arguments of +that method to a method of the same name in a superclass. If the number of +arguments to the original method disagrees with that of the higher-level +method, an `ArgumentError` is raised. To get around this, simply call `super` +and pass a suitable number of arguments. + +### How can I call the method of the same name two levels up? + +`super` invokes the same named method one level up. If you are overloading a +method in a more distant ancestor, use `alias` to give it a new name before +masking it with your method definition. You can then call it using that +aliased name. + +### How can I invoke an original built-in method after redefining it? + +Within the method definition, you can use `super`. You can also use `alias` +to give it an alternative name. Finally, you can call the original method as +a singleton method of `Kernel`. + +### What is a destructive method? +{: #destructive-method} + +A destructive method is one which alters the state of an object. `String`, +`Array`, `Hash`, and others have such methods. Often there are two +versions of a method, one with a plain name, the other with the same name, +but followed by `!`. The plain version creates a copy of the receiver, makes +its change to it, and returns the copy. The “bang” version (with the `!`) +modifies the receiver in place. + +Beware, however, that there are a fair number of destructive methods that +do not have an `!`, including assignment methods (`name=`), array assignment +(`[]=`), and methods such as `Array.delete`. + +### Why can destructive methods be dangerous? + +Remember that assignment in most cases just copies object references, and that +parameter passing is equivalent to assignment. This means you can end up with +multiple variables referencing the same object. If one of those variables is +used to invoke a destructive method, the object referenced by all of them will +be changed. + +~~~ +def foo(str) + str.sub!(/foo/, "baz") +end + +obj = "foo" +foo(obj) # => "baz" +obj # => "baz" +~~~ + +In this case the actual argument is altered. + +### Can I return multiple values from a method? + +Yes and no. + +~~~ +def m1 + return 1, 2, 3 +end + +def m2 + [1, 2, 3] +end + +m1 # => [1, 2, 3] +m2 # => [1, 2, 3] +~~~ + +So, only one thing is returned, but that thing can be an arbitrarily complex +object. In the case of arrays, you can use multiple assignment to get the +effect of multiple return values. For example: + +~~~ +def foo + [20, 4, 17] +end + +a, b, c = foo +a # => 20 +b # => 4 +c # => 17 +~~~ diff --git a/fa/documentation/faq/8/index.md b/fa/documentation/faq/8/index.md new file mode 100644 index 0000000000..7d79609d38 --- /dev/null +++ b/fa/documentation/faq/8/index.md @@ -0,0 +1,378 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <strong>8</strong> + <span class="separator"> | </span> + <a href="../9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## Classes and modules + +### Can a class definition be repeated? + +A class can be defined repeatedly. Each definition is added to the last +definition. If a method is redefined, the former one is overridden and lost. + +### Are there class variables? + +There are. A variable prefixed with two at signs (`@@`) is a class variable, +accessible within both instance and class methods of the class. + +~~~ +class Entity + + @@instances = 0 + + def initialize + @@instances += 1 + @number = @@instances + end + + def who_am_i + "I'm #{@number} of #{@@instances}" + end + + def self.total + @@instances + end +end + +entities = Array.new(9) { Entity.new } + +entities[6].who_am_i # => "I'm 7 of 9" +Entity.total # => 9 +~~~ + +However, you probably should use _class instance variables_ instead. + +### What is a class instance variable? + +Here the example of the previous section rewritten +using a class instance variable: + +~~~ +class Entity + + @instances = 0 + + class << self + attr_accessor :instances # provide class methods for reading/writing + end + + def initialize + self.class.instances += 1 + @number = self.class.instances + end + + def who_am_i + "I'm #{@number} of #{self.class.instances}" + end + + def self.total + @instances + end +end + +entities = Array.new(9) { Entity.new } + +entities[6].who_am_i # => "I'm 7 of 9" +Entity.instances # => 9 +Entity.total # => 9 +~~~ + +Here, `@instances` is a _class_ instance variable. It does not belong +to an instance of class `Entity`, but to the class object `Entity`, +which is an instance of class `Class`. + +Class instance variables are directly accessible only within class methods +of the class. + +### What is the difference between class variables and class instance variables? + +The main difference is the behavior concerning inheritance: +class variables are shared between a class and all its subclasses, +while class instance variables only belong to one specific class. + +Class variables in some way can be seen as global variables within +the context of an inheritance hierarchy, with all the problems +that come with global variables. +For instance, a class variable might (accidentally) be reassigned +by any of its subclasses, affecting all other classes: + +~~~ +class Woof + + @@sound = "woof" + + def self.sound + @@sound + end +end + +Woof.sound # => "woof" + +class LoudWoof < Woof + @@sound = "WOOF" +end + +LoudWoof.sound # => "WOOF" +Woof.sound # => "WOOF" (!) +~~~ + +Or, an ancestor class might later be reopened and changed, +with possibly surprising effects: + +~~~ +class Foo + + @@var = "foo" + + def self.var + @@var + end +end + +Foo.var # => "foo" (as expected) + +class Object + @@var = "object" +end + +Foo.var # => "object" (!) +~~~ + +So, unless you exactly know what you are doing and explicitly need +this kind of behavior, you better should use class instance variables. + +### Does Ruby have class methods? +{: #class-method} + +A [singleton method](../7/#singleton-method) of a class object is called a +class method. +(Actually, the class method is defined in the metaclass, but that is pretty +much transparent). Another way of looking at it is to say that a class method +is a method whose receiver is a class. + +It all comes down to the fact that you can call class methods without having +to have instances of that class (objects) as the receiver. + +Let's create a singleton method of class `Foo`: + +~~~ +class Foo + def self.test + "this is foo" + end +end + +# It is invoked this way. + +Foo.test # => "this is foo" +~~~ + +In this example, `Foo.test` is a class method. + +Instance methods which are defined in class `Class` can be used +as class methods for every(!) class. + +### What is a singleton class? + +A singleton class is an anonymous class that is created by subclassing the +class associated with a particular object. Singleton classes are another +way of extending the functionality associated with just one object. + +Take the lowly `Foo`: + +~~~ +class Foo + def hello + "hello" + end +end + +foo = Foo.new +foo.hello # => "hello" +~~~ + +Now let's say we need to add class-level functionality to just this one +instance: + +~~~ +class << foo + attr_accessor :name + + def hello + "hello, I'm #{name}" + end +end + +foo.name = "Tom" +foo.hello # => "hello, I'm Tom" +Foo.new.hello # => "hello" +~~~ + +We've customized `foo` without changing the characteristics of `Foo`. + +### What is a module function? + +{% include faq-out-of-date.html %} + +A module function is a private, singleton method defined in a module. +In effect, it is similar to a [class method](#class-method), +in that it can be called using the `Module.method` notation: + +~~~ +Math.sqrt(2) # => 1.414213562 +~~~ + +However, because modules can be mixed in to classes, module functions can +also be used without the prefix (that's how all those `Kernel` functions are +made available to objects): + +~~~ +include Math +sqrt(2) # => 1.414213562 +~~~ + +Use `module_function` to make a method a module function. + +~~~ +module Test + def thing + # ... + end + module_function :thing +end +~~~ + +### What is the difference between a class and a module? + +Modules are collections of methods and constants. They cannot generate +instances. Classes may generate instances (objects), and have per-instance +state (instance variables). + +Modules may be mixed in to classes and other modules. The mixed in module's +constants and methods blend into that class's own, augmenting the class's +functionality. Classes, however, cannot be mixed in to anything. + +A class may inherit from another class, but not from a module. + +A module may not inherit from anything. + +### Can you subclass modules? + +No. However, a module may be included in a class or another module to mimic +multiple inheritance (the mixin facility). + +This does not generate a subclass (which would require inheritance), but does +generate an `is_a?` relationship between the class and the module. + +### Give me an example of a mixin + +The module `Comparable` provides a variety of comparison operators +(`<`, `<=`, `==`, `>=`, `>`, `between?`). It defines these in terms +of calls to the general comparison method, `<=>`. However, it does +not itself define `<=>`. + +Say you want to create a class where comparisons are based on the number of +legs an animal has: + +~~~ +class Animal + include Comparable + + attr_reader :legs + + def initialize(name, legs) + @name, @legs = name, legs + end + + def <=>(other) + legs <=> other.legs + end + + def inspect + @name + end +end + +c = Animal.new("cat", 4) +s = Animal.new("snake", 0) +p = Animal.new("parrot", 2) + +c < s # => false +s < c # => true +p >= s # => true +p.between?(s, c) # => true +[p, s, c].sort # => [snake, parrot, cat] +~~~ + +All `Animal` must do is define its own semantics for the operator `<=>`, +and mix in the `Comparable` module. `Comparable`'s methods now become +indistinguishable from `Animal`'s and your class suddenly sprouts new +functionality. And because the same `Comparable` module is used by many +classes, your new class will share a consistent and well understood semantics. + +### Why are there two ways of defining class methods? + +You can define a class method in the class definition, and you can define +a class method at the top level. + +~~~ +class Demo + def self.class_method + end +end + +def Demo.another_class_method +end +~~~ + +There is only one significant difference between the two. +In the class definition you can refer to the class's constants directly, +as the constants are within scope. At the top level, you have to use the +`Class::CONST` notation. + +### What is the difference between `include` and `extend`? + +{% include faq-out-of-date.html %} + +`include` mixes a module into a class or another module. Methods from that +module are called function-style (without a receiver). + +`extend` is used to include a module in an object (instance). +Methods in the module become methods in the object. + +### What does `self` mean? + +`self` is the currently executing receiver, the object to which a method +is applied. A function-style method call implies `self` as the receiver. diff --git a/fa/documentation/faq/9/index.md b/fa/documentation/faq/9/index.md new file mode 100644 index 0000000000..c89a09b315 --- /dev/null +++ b/fa/documentation/faq/9/index.md @@ -0,0 +1,372 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <a href="../" title="Content">Content</a> + <span class="separator"> | </span> + <a href="../1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="../2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="../3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="../4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="../5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="../6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="../7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="../8/" title="Part 8">8</a> + <span class="separator"> | </span> + <strong>9</strong> + <span class="separator"> | </span> + <a href="../10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="../11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +{% include faq-notice.md %} + +## Built-in libraries + +### What does `instance_methods(false)` return? + +The method `instance_methods` returns an array containing the names of +instance methods in the receiving class or module. This will include +the methods in superclasses and in mixed in modules. + +`instance_methods(false)` or `instance_methods(nil)` returns the names +of just those methods which are defined in the receiver. + +### How do random number seeds work? + +If `rand` is called without a prior call to `srand`, +Ruby's pseudo-random number generator uses a random(ish) seed that +amongst other things uses an entropy source provided by the OS, +if available. +Successive runs of a program that does not use `srand` will generate +different sequences of random numbers. + +For testing purposes, you can get a predictable behavior with the same +series of numbers each time the program is run by calling `srand` +with a constant seed. + +### I read a file and changed it, but the file on disk has not changed. + +~~~ +File.open("example", "r+").readlines.each_with_index do |line, i| + line[0,0] = "#{i+1}: " +end +~~~ + +This program does _not_ add line numbers to the file `example`. It does read +the contents of the file, and for each line read does prepend the line number, +but the data is never written back. The code below _does_ update the file +(although somewhat dangerously, as it takes no backup before starting the +update): + +~~~ +File.open("example", "r+") do |f| + lines = f.readlines + lines.each_with_index {|line, i| line[0,0] = "#{i+1}: " } + f.rewind + f.puts lines +end +~~~ + +### How can I process a file and update its contents? + +Using the command-line option `-i`, or built-in variable `$-i`, you can read +a file and replace it. + +The code in the preceding question, which added line numbers to a file, +is probably best written using this technique: + +~~~ +$ ruby -i -ne 'print "#$.: #$_"' example +~~~ + +If you want to preserve the original file, use `-i.bak` to create a backup. + +### I wrote a file, copied it, but the end of the copy seems to be lost. + +This code will not work correctly: + +~~~ +require "fileutils" + +File.open("file", "w").puts "This is a file." +FileUtils.cp("file", "newfile") +~~~ + +Because I/O is buffered, `file` is being copied before its contents have been +written to disk. `newfile` will probably be empty. However, when the program +terminates, the buffers are flushed, and file has the expected content. + +The problem doesn't arise if you make sure that `file` is closed before +copying: + +~~~ +require "fileutils" + +File.open("file", "w") {|f| f.puts "This is a file." } +FileUtils.cp("file", "newfile") +~~~ + +### How can I get the line number in the current input file? + +As you read from a file, Ruby increments a line number counter in the global +variable `$.`. This is also available using the `lineno` attribute of the +`File` object. + +The special constant `ARGF` is a file-like object that can be used to read +all the input files specified on the command line (or standard input if there +are no files). `ARGF` is used implicitly by code such as: + +~~~ +while gets + print $_ +end +~~~ + +In this case, `$.` will be the cumulative number of lines read across all +input files. To get the line number in the current file, use + +~~~ +ARGF.file.lineno +~~~ + +You can also get the name of the current file using `ARGF.file.path`. + +### How can I use `less` to display my program's output? + +I tried the following, but nothing came out: + +~~~ +open("|less", "w").puts "abc" +~~~ + +That's because the program ends immediately, and `less` never gets a chance +to see the stuff you've written to it, never mind to display it. +Make sure that the IO is properly closed and it will wait until `less` ends. + +~~~ +open("|less", "w") {|f| f.puts "abc" } +~~~ + +### What happens to a `File` object which is no longer referenced? + +A `File` object which is no longer referenced becomes eligible for garbage +collection. The file will be closed automatically when the `File` object is +garbage collected. + +### I feel uneasy if I don't close a file. + +There are at least four good ways of ensuring that you do close a file: + +~~~ +# (1) +f = File.open("file") +begin + f.each {|line| print line } +ensure + f.close +end + +# (2) +File.open("file") do |f| + f.each {|line| print line } +end + +# (3) +File.foreach("file") {|line| print line } + +# (4) +File.readlines("file").each {|line| print line } +~~~ + +### How can I sort files by their modification time? + +~~~ +Dir.glob("*").sort {|a, b| File.mtime(b) <=> File.mtime(a) } +~~~ + +Although this works (returning a list in reverse chronological order) it +isn't very efficient, as it fetches the files' modification times from the +operating system on every comparison. + +More efficiency can be bought with some extra complexity: + +~~~ +Dir.glob("*").map {|f| [File.mtime(f), f] }. + sort {|a, b| b[0] <=> a[0] }.map(&:last) +~~~ + +### How can I count the frequency of words in a file? + +~~~ +freq = Hash.new(0) +File.read("example").scan(/\w+/) {|word| freq[word] += 1 } +freq.keys.sort.each {|word| puts "#{word}: #{freq[word]}" } +~~~ + +Produces: + +~~~ +and: 1 +is: 3 +line: 3 +one: 1 +this: 3 +three: 1 +two: 1 +~~~ + +### How can I sort strings in alphabetical order? + +If you want your strings to sort 'AAA', 'BBB', ..., 'ZZZ', 'aaa', 'bbb', +then the built-in comparison will work just fine. + +If you want to sort ignoring case distinctions, compare downcased versions of +the strings in the sort block: + +~~~ +array = %w( z bB Bb bb Aa BB aA AA aa a A ) +array.sort {|a, b| a.downcase <=> b.downcase } + # => ["a", "A", "Aa", "aA", "AA", "aa", "bB", "Bb", "bb", "BB", "z"] +~~~ + +If you want to sort so that the 'A's and 'a's come together, but 'a' is +considered greater than 'A' (so 'Aa' comes after 'AA' but before 'AB'), use: + +~~~ +array.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b } + # => ["A", "a", "AA", "Aa", "aA", "aa", "BB", "Bb", "bB", "bb", "z"] +~~~ + +### How can I expand tabs to spaces? +{: #tab-expansion} + +If `a` holds the string to be expanded, you could use one of: + +~~~ +1 while a.sub!(/(^[^\t]*)\t(\t*)/){$1+" "*(8-$1.size%8+8*$2.size)} +# or +1 while a.sub!(/\t(\t*)/){" "*(8-$~.begin(0)%8+8*$1.size)} +# or +a.gsub!(/([^\t]{8})|([^\t]*)\t/n){[$+].pack("A8")} +~~~ + +### How can I escape a backslash in a regular expression? + +`Regexp.quote('\\')` escapes a backslash. + +It gets trickier if you are using `sub` and `gsub`. Say you write +`gsub(/\\/, '\\\\')`, hoping to replace each backslash with two. +The second argument is converted to `'\\'` in syntax analysis. When the +substitution occurs, the regular expression engine converts this to `'\'`, +so the net effect is to replace each single backslash with another single +backslash. You need to write `gsub(/\\/, '\\\\\\')`! + +However, using the fact that `\&` contains the matched string, you could also +write `gsub(/\\/, '\&\&')`. + +If you use the block form of `gsub`, i.e. `gsub(/\\/) { '\\\\' }`, the string +for substitution is analyzed only once (during the syntax pass) and the +result is what you intended. + +### What is the difference between `sub` and `sub!`? + +In `sub`, a copy of the receiver is generated, substituted, and returned. + +In `sub!`, the receiver is altered and returned if any match was found. +Otherwise, `nil` is returned. + +Methods like `sub!`, which alter the attribute of the receiver, +are called [destructive methods](../7/#destructive-method). +Usually, if there are two similar methods and one is destructive, +the destructive one has a suffix `!`. + +~~~ +def foo(str) + str.sub(/foo/, "baz") +end + +obj = "foo" +foo(obj) # => "baz" +obj # => "foo" + +def foo(str) + str.sub!(/foo/, "baz") +end + +foo(obj) # => "baz" +obj # => "baz" +~~~ + +### Where does `\Z` match? + +`\Z` matches just before the last `\n` (newline) if the string ends +with a `\n`, otherwise it matches at the end of a string. + +### What is the difference between `thread` and `fork`? + +{% include faq-out-of-date.html %} + +Ruby threads are implemented within the interpreter, while `fork` invokes the +operating system to create a separately executing subprocess. + +Thread and fork have the following characteristics: + +* `fork` is slow, `thread` is not. +* `fork` does not share the memory space. +* `thread` does not cause thrashing. +* `thread` works on DOS. +* When `thread` gets in a deadlock, the whole process stops. +* `fork` can take advantage of pauses waiting for I/O to complete, + `thread` does not (at least not without some help). + +You probably shouldn't mix `fork` and `thread`. + +### How can I use `Marshal`? + +`Marshal` is used to store an object in a file or a string, and later +reconstitute it. Objects may be stored using: + +~~~ +Marshal.dump( obj [, io ] [, lev] ) +~~~ + +`io` is a writable `IO` object, `lev` designates the level to which objects +are dereferred and stored. If `lev` levels of dereferring are done and object +references still exist, then `dump` stores just the reference, not the object +referenced. This is not good, as these referenced objects cannot be +subsequently reconstructed. + +If `io` is omitted, the marshaled objects are returned in a string. + +You can load objects back using: + +~~~ +obj = Marshal.load(io) +# or +obj = Marshal.load(str) +~~~ + +where `io` is a readable `IO` object, `str` is the dumped string. + +### How can I use `trap`? + +`trap` associates code blocks with external events (signals). + +~~~ +trap("PIPE") { raise "SIGPIPE" } +~~~ diff --git a/fa/documentation/faq/index.md b/fa/documentation/faq/index.md new file mode 100644 index 0000000000..cc2c6f6947 --- /dev/null +++ b/fa/documentation/faq/index.md @@ -0,0 +1,62 @@ +--- +layout: page +title: "Official Ruby FAQ" +lang: en + +header: | + <div class="multi-page"> + <strong>Content</strong> + <span class="separator"> | </span> + <a href="1/" title="Part 1">1</a> + <span class="separator"> | </span> + <a href="2/" title="Part 2">2</a> + <span class="separator"> | </span> + <a href="3/" title="Part 3">3</a> + <span class="separator"> | </span> + <a href="4/" title="Part 4">4</a> + <span class="separator"> | </span> + <a href="5/" title="Part 5">5</a> + <span class="separator"> | </span> + <a href="6/" title="Part 6">6</a> + <span class="separator"> | </span> + <a href="7/" title="Part 7">7</a> + <span class="separator"> | </span> + <a href="8/" title="Part 8">8</a> + <span class="separator"> | </span> + <a href="9/" title="Part 9">9</a> + <span class="separator"> | </span> + <a href="10/" title="Part 10">10</a> + <span class="separator"> | </span> + <a href="11/" title="Part 11">11</a> + </div> + <h1>Official Ruby FAQ</h1> + +--- + +This document contains Frequently Asked Questions about Ruby with answers. +{: .summary} + +This FAQ is based on "[The Ruby Language FAQ][original-faq]" originally +compiled by Shugo Maeda and translated into English by Kentaro Goto. +Thanks to Zachary Scott and Marcus Stollsteimer for incorporating +the FAQ into the site and for a major overhaul of the content. + +The code examples in this document have been run using Ruby 2.3. + +[original-faq]: http://ruby-doc.org/docs/ruby-doc-bundle/FAQ/FAQ.html + +{% include faq-notice.md %} + +## Content + +* [General questions](1/) +* [How does Ruby stack up against...?](2/) +* [Installing Ruby](3/) +* [Variables, constants, and arguments](4/) +* [Iterators](5/) +* [Syntax](6/) +* [Methods](7/) +* [Classes and modules](8/) +* [Built-in libraries](9/) +* [Extension library](10/) +* [Other features](11/) diff --git a/fa/documentation/index.md b/fa/documentation/index.md new file mode 100644 index 0000000000..30da430601 --- /dev/null +++ b/fa/documentation/index.md @@ -0,0 +1,175 @@ +--- +layout: page +title: "مستندات" +lang: fa +--- + +Guides, tutorials, and reference material to help you learn more about Ruby +{: .summary} + +### Installing Ruby + +Although you can easily [try Ruby in your browser][1], you can also read +the [installation guide](installation/) for help on installing Ruby. + +### Getting Started + +[Official FAQ](/en/documentation/faq/) +: The official frequently asked questions. + +[Ruby Koans][2] +: The Koans walk you along the path to enlightenment in order to learn + Ruby. The goal is to learn the Ruby language, syntax, structure, and + some common functions and libraries. We also teach you culture. + +[Why’s (Poignant) Guide to Ruby][5] +: An unconventional but interesting book that will teach you Ruby + through stories, wit, and comics. Originally created by *why the lucky + stiff*, this guide remains a classic for Ruby learners. + +[Learning Ruby][6] +: A thorough collection of Ruby study notes for those who are new to the + language and in search of a solid introduction to Ruby’s concepts and + constructs. + +[Ruby Essentials][7] +: Ruby Essentials is a free on-line book designed to provide a concise + and easy to follow guide to learning Ruby. + +[Learn to Program][8] +: A wonderful little tutorial by Chris Pine for programming newbies. If + you don’t know how to program, start here. + +[Learn Ruby the Hard Way][38] +: A very good set of exercises with explanations that guide you from + the absolute basics of Ruby all the way to OOP and web development. + +### Manuals + +[Programming Ruby][9] +: The seminal work on Ruby in English, this first edition of the + [Pragmatic Programmers’ book][10] is available for free online. + +[Ruby User’s Guide][11] +: Translated from the original Japanese version written by Yukihiro + Matsumoto (the creator of Ruby), this version, by Goto Kentaro and + Mark Slagell, is a nice overview of many aspects of the Ruby language. + +[The Ruby Programming Wikibook][12] +: A free online manual with beginner and intermediate content plus a + thorough language reference. + +### Reference Documentation + +[Official API Documentation][docs-rlo-en] +: The official Ruby API documentation for different versions including + the currently unreleased (trunk) version. + +[Ruby Core Reference][13] +: Pulled straight from the source code using [RDoc][14], this reference + work documents all of the core classes and modules (like String, + Array, Symbol, etc…). + +[Ruby Standard Library Reference][15] +: Also pulled from the source code using RDoc, this reference work + documents the standard library. + +[Ruby C API Reference][extensions] +: The official introduction to Ruby's C API. + Great if you want to write C extensions + or contribute to Ruby’s development. + +[RubyDoc.info][16] +: The one-stop web site for reference documentation about Ruby gems and + GitHub-hosted Ruby projects. + +[Ruby & Rails Searchable API Docs][17] +: Rails and Ruby documentation with smart searching. + +[APIdock][18] +: Ruby, Rails and RSpec documentation with users’ notes. + +### Editors and IDEs + +For coding in Ruby you can use the default editor of your operating +system. By the way, to be more effective in coding, it is worth to +choose a source code editor with basic Ruby support (e.g. +syntax-highlighting, file browsing) or an integrated development +environment with advanced features (e.g. code completion, refactoring, +testing support). + +Here is a list of popular tools used by Rubyists: + +* Linux and cross-platform tools: + * [Aptana Studio][19] + * [Emacs][20] with [Ruby mode][21] and [Rsense][22] + * [Geany][23] + * [gedit][24] + * [Vim][25] with [vim-ruby][26] plugin and [Rsense][22] + * [RubyMine][27] + * [SciTe][28] + * [NetBeans][36] + * [Sublime Text][37] + * [Atom][atom] + * [Visual Studio Code][vscode] + +* On Windows: + * [Notepad++][29] + * [E-TextEditor][30] + * [Ruby In Steel][31] + +* On macOS: + * [TextMate][32] + * [TextWrangler][33] + * [Dash][39] (documentation browser) + +### Further Reading + +[Ruby-doc.org][34] maintains a comprehensive list of English +documentation sources. There are also plenty of [books about Ruby][35]. +If you have questions about Ruby the +[mailing list](/en/community/mailing-lists/) is a great place to start. + + + +[1]: https://ruby.github.io/TryRuby/ +[2]: http://rubykoans.com/ +[5]: http://mislav.uniqpath.com/poignant-guide/ +[6]: http://rubylearning.com/ +[7]: http://www.techotopia.com/index.php/Ruby_Essentials +[8]: http://pine.fm/LearnToProgram/ +[9]: http://www.ruby-doc.org/docs/ProgrammingRuby/ +[10]: http://pragmaticprogrammer.com/titles/ruby/index.html +[11]: http://www.rubyist.net/~slagell/ruby/ +[12]: http://en.wikibooks.org/wiki/Ruby_programming_language +[13]: http://www.ruby-doc.org/core +[14]: https://ruby.github.io/rdoc/ +[15]: http://www.ruby-doc.org/stdlib +[extensions]: https://docs.ruby-lang.org/en/trunk/extension_rdoc.html +[16]: http://www.rubydoc.info/ +[17]: http://rubydocs.org/ +[18]: http://apidock.com/ +[19]: http://www.aptana.com/ +[20]: http://www.gnu.org/software/emacs/ +[21]: http://www.emacswiki.org/emacs/RubyMode +[22]: http://rsense.github.io/ +[23]: http://www.geany.org/ +[24]: http://projects.gnome.org/gedit/screenshots.html +[25]: http://www.vim.org/ +[26]: https://github.com/vim-ruby/vim-ruby +[27]: http://www.jetbrains.com/ruby/ +[28]: http://www.scintilla.org/SciTE.html +[29]: http://notepad-plus-plus.org/ +[30]: http://www.e-texteditor.com/ +[31]: http://www.sapphiresteel.com/ +[32]: http://macromates.com/ +[33]: http://www.barebones.com/products/textwrangler/ +[34]: http://ruby-doc.org +[35]: http://www.ruby-doc.org/bookstore +[36]: https://netbeans.org/ +[37]: http://www.sublimetext.com/ +[38]: http://ruby.learncodethehardway.org/ +[39]: http://kapeli.com/dash +[docs-rlo-en]: https://docs.ruby-lang.org/en/ +[atom]: https://atom.io/ +[vscode]: https://code.visualstudio.com/ diff --git a/fa/documentation/installation/index.md b/fa/documentation/installation/index.md new file mode 100644 index 0000000000..f964b79ae1 --- /dev/null +++ b/fa/documentation/installation/index.md @@ -0,0 +1,355 @@ +--- +layout: page +title: "نصب روبی" +lang: fa +--- + +With package managers or third-party tools, you have plenty of options +to install and manage Ruby. +{: .summary} + +You may already have Ruby installed on your computer. You can check +inside a [terminal emulator][terminal] by typing: + +{% highlight sh %} +ruby -v +{% endhighlight %} + +This should output some information on the installed Ruby version. + +## Choose Your Installation Method + +There are several ways to install Ruby: + +* On a UNIX-like operating system, using your system's + **package manager** is easiest. + However, the packaged Ruby version may not be the newest one. +* **Installers** can be used to install a specific or multiple + Ruby versions. There is also an installer for Windows. +* **Managers** help you to switch between multiple Ruby versions + on your system. +* Finally, you can also **build Ruby from source**. + +Here are available installation methods: + +* [Package Management Systems](#package-management-systems) + * [Debian, Ubuntu](#apt) + * [Windows WSL Ubuntu](#apt-wsl) + * [CentOS, Fedora, RHEL](#yum) + * [Snap](#snap) + * [Gentoo](#portage) + * [Arch Linux](#pacman) + * [macOS](#homebrew) + * [FreeBSD](#freebsd) + * [OpenIndiana](#openindiana) + * [Other Distributions](#other-systems) +* [Installers](#installers) + * [ruby-build](#ruby-build) + * [ruby-install](#ruby-install) + * [RubyInstaller](#rubyinstaller) (Windows) + * [RailsInstaller and Ruby Stack](#railsinstaller) +* [Managers](#managers) + * [chruby](#chruby) + * [rbenv](#rbenv) + * [RVM](#rvm) + * [uru](#uru) +* [Building from source](#building-from-source) + + +## Package Management Systems +{: #package-management-systems} + +If you cannot compile your own Ruby, and you do not want to use a +third-party tool, you can use your system's package manager to install Ruby. + +Some members of the Ruby community feel that you should avoid package +managers to install Ruby and that you should use dedicated tools instead. + +It is possible that major package managers will install older Ruby +versions instead of the latest release. To use the latest Ruby release, +check that the package name matches its version number. Or use a +dedicated [installer][installers]. + + +### apt (Debian or Ubuntu) +{: #apt} + +Debian GNU/Linux and Ubuntu use the apt package manager. You can use it +like this: + +{% highlight sh %} +$ sudo apt-get install ruby-full +{% endhighlight %} + +### apt (Windows WSL Ubuntu) +{: #apt-wsl} + +If you use Windows 10, you can use Linux Ubuntu OS with WSL. And you can also use Ruby with apt. + +There is an information that how to install WSL in this page: + +[Windows Subsystem for Linux Installation Guide for Windows 10](https://docs.microsoft.com/en-us/windows/wsl/install-win10) + +You can use the apt same as Linux OS like this: + +{% highlight sh %} +$ sudo apt-get install ruby-full +{% endhighlight %} + +Or you can also use Ruby managers like the rbenv on WSL. + +### yum (CentOS, Fedora, or RHEL) +{: #yum} + +CentOS, Fedora, and RHEL use the yum package manager. +You can use it like this: + +{% highlight sh %} +$ sudo yum install ruby +{% endhighlight %} + +The installed version is typically the latest version of Ruby available +at the release time of the specific distribution version. + + +### snap (Ubuntu or other Linux distributions) +{: #snap} + +Snap is a package manager developed by Canonical. +It is available out-of-the-box on Ubuntu, but snap also works +on many other Linux distributions. +You can use it like this: + +{% highlight sh %} +$ sudo snap install ruby --classic +{% endhighlight %} + +We have several channels per Ruby minor series. +For instance, the following commands switch to Ruby 2.3: + +{% highlight sh %} +$ sudo snap switch ruby --channel=2.3/stable +$ sudo snap refresh +{% endhighlight %} + + +### portage (Gentoo) +{: #portage} + +Gentoo uses the portage package manager. + +{% highlight sh %} +$ sudo emerge dev-lang/ruby +{% endhighlight %} + +To install a specific version, set `RUBY_TARGETS` in your `make.conf`. +See the [Gentoo Ruby Project website][gentoo-ruby] for details. + + +### pacman (Arch Linux) +{: #pacman} + +Arch Linux uses a package manager named pacman. +To get Ruby, just do this: + +{% highlight sh %} +$ sudo pacman -S ruby +{% endhighlight %} + +This should install the latest stable Ruby version. + + +### Homebrew (macOS) +{: #homebrew} + +Ruby versions 2.0 and above are included by default in macOS releases +since at least El Capitan (10.11). + +[Homebrew][homebrew] is a commonly used package manager on macOS. +Installing Ruby using Homebrew is easy: + +{% highlight sh %} +$ brew install ruby +{% endhighlight %} + +This should install the latest Ruby version. + + +### FreeBSD +{: #freebsd} + +FreeBSD offers both pre-packaged and source-based methods to install Ruby. +Prebuilt packages can be installed via the pkg tool: + +{% highlight sh %} +$ pkg install ruby +{% endhighlight %} + +A source-based method can be used to install Ruby using the +[Ports Collection][freebsd-ports-collection]. This is useful if you want +to customize the build configuration options. + +More information about Ruby and its surrounding ecosystem on FreeBSD +can be found on the [FreeBSD Ruby Project website][freebsd-ruby]. + + +### Ruby on OpenIndiana +{: #openindiana} + +To install Ruby on [OpenIndiana][openindiana], please use the +Image Packaging System (IPS) client. +This will install the Ruby binaries and RubyGems directly +from the OpenIndiana repositories. It’s easy: + +{% highlight sh %} +$ pkg install runtime/ruby +{% endhighlight %} + +However, the third-party tools might be a good way to obtain the +latest version of Ruby. + + +### Other Distributions +{: #other-systems} + +On other systems, you can search the package repository of your Linux +distribution's manager for Ruby. Alternatively, you can use a +[third-party installer][installers]. + + +## Installers +{: #installers} + +If the version of Ruby provided by your system or package manager is out +of date, a newer one can be installed using a third-party installer. + +Some installers allow you to install multiple versions on the same +system; associated managers can help to switch between the different +Rubies. + +If you are planning to use [RVM](#rvm) as a version manager you don't +need a separate installer, it comes with its own. + + +### ruby-build +{: #ruby-build} + +[ruby-build][ruby-build] is a plugin for [rbenv](#rbenv) that allows you +to compile and install different versions of Ruby. ruby-build can also +be used as a standalone program without rbenv. It is available for macOS, +Linux, and other UNIX-like operating systems. + + +### ruby-install +{: #ruby-install} + +[ruby-install][ruby-install] allows you to compile and install different +versions of Ruby into arbitrary directories. [chruby](#chruby) is a +complimentary tool used to switch between Ruby versions. It is available +for macOS, Linux, and other UNIX-like operating systems. + + +### RubyInstaller +{: #rubyinstaller} + +On Windows, [RubyInstaller][rubyinstaller] gives you everything you need +to set up a full Ruby development environment. + +Just download it, run it, and you are done! + + +### RailsInstaller and Ruby Stack +{: #railsinstaller} + +If you are installing Ruby in order to use Ruby on Rails, +you can use the following installers: + +* [RailsInstaller][railsinstaller] uses [RubyInstaller][rubyinstaller] + but gives you extra tools that help with Rails development. It + supports macOS and Windows. +* [Bitnami Ruby Stack][rubystack] provides a complete development + environment for Rails. It supports macOS, Linux, Windows, virtual + machines, and cloud images. + + +## Managers +{: #managers} + +Many Rubyists use Ruby managers to manage multiple Rubies. They allow +easy or even automatic switching between Ruby versions depending on the +project and other advantages but are not officially supported. You can +however find support within their respective communities. + + +### chruby +{: #chruby} + +[chruby][chruby] allows you to switch between multiple Rubies. It can +manage Rubies installed by [ruby-install](#ruby-install) or even built +from source. + + +### rbenv +{: #rbenv} + +[rbenv][rbenv] allows you to manage multiple installations of Ruby. +While it can't install Ruby by default, its [ruby-build](#ruby-build) +plugin can. Both tools are available for macOS, Linux, or other +UNIX-like operating systems. + + +### RVM ("Ruby Version Manager") +{: #rvm} + +[RVM][rvm] allows you to install and manage multiple installations of +Ruby on your system. It can also manage different gemsets. It is +available for macOS, Linux, or other UNIX-like operating systems. + + +### uru +{: #uru} + +[Uru][uru] is a lightweight, multi-platform command line tool that helps you +to use multiple Rubies on macOS, Linux, or Windows systems. + + +## Building from Source +{: #building-from-source} + +Of course, you can install Ruby from source. +[Download][download] and unpack a tarball, then just do this: + +{% highlight sh %} +$ ./configure +$ make +$ sudo make install +{% endhighlight %} + +By default, this will install Ruby into `/usr/local`. +To change, pass the `--prefix=DIR` option to the `./configure` script. + +You can find more information about building from source in the +[Ruby README file][readme]. + +Using the third-party tools or package managers might be a better idea, +though, because the installed Ruby won't be managed by any tools. + + +[rvm]: http://rvm.io/ +[rbenv]: https://github.com/rbenv/rbenv#readme +[ruby-build]: https://github.com/rbenv/ruby-build#readme +[ruby-install]: https://github.com/postmodern/ruby-install#readme +[chruby]: https://github.com/postmodern/chruby#readme +[uru]: https://bitbucket.org/jonforums/uru +[rubyinstaller]: https://rubyinstaller.org/ +[railsinstaller]: http://railsinstaller.org/ +[rubystack]: http://bitnami.com/stack/ruby/installer +[openindiana]: http://openindiana.org/ +[gentoo-ruby]: http://www.gentoo.org/proj/en/prog_lang/ruby/ +[freebsd-ruby]: https://wiki.freebsd.org/Ruby +[freebsd-ports-collection]: https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html +[homebrew]: http://brew.sh/ +[terminal]: https://en.wikipedia.org/wiki/List_of_terminal_emulators +[download]: /en/downloads/ +[installers]: /en/documentation/installation/#installers +[readme]: https://github.com/ruby/ruby#how-to-compile-and-install diff --git a/fa/documentation/quickstart/2/index.md b/fa/documentation/quickstart/2/index.md new file mode 100644 index 0000000000..5a3101a82a --- /dev/null +++ b/fa/documentation/quickstart/2/index.md @@ -0,0 +1,126 @@ +--- +layout: page +title: "روبی در ۲۰ دقیقه" +lang: fa + +header: | + <div class="multi-page"> + <a href="../" title="قسمت ۱">۱</a> + <span class="separator"> | </span> + <strong>۲</strong> + <span class="separator"> | </span> + <a href="../3/" title="قسمت ۳">۳</a> + <span class="separator"> | </span> + <a href="../4/" title="قسمت ۴">۴</a> + </div> + <h1>روبی در ۲۰ دقیقه</h1> + +--- + +What if we want to say “Hello” a lot without getting our fingers all +tired? We need to define a method! + +{% highlight irb %} +irb(main):010:0> def hi +irb(main):011:1> puts "Hello World!" +irb(main):012:1> end +=> :hi +{% endhighlight %} + +The code `def hi` starts the definition of the method. It tells Ruby that +we’re defining a method, that its name is `hi`. The next line is the body +of the method, the same line we saw earlier: `puts "Hello World"`. +Finally, the last line `end` tells Ruby we’re done defining the method. +Ruby’s response `=> :hi` tells us that it knows we’re done defining the +method. This response could be `=> nil` for Ruby 2.0 and earlier versions. +But, it's not important here, so let's go on. + +## The Brief, Repetitive Lives of a Method + +Now let’s try running that method a few times: + +{% highlight irb %} +irb(main):013:0> hi +Hello World! +=> nil +irb(main):014:0> hi() +Hello World! +=> nil +{% endhighlight %} + +Well, that was easy. Calling a method in Ruby is as easy as just +mentioning its name to Ruby. If the method doesn’t take parameters +that’s all you need. You can add empty parentheses if you’d like, but +they’re not needed. + +What if we want to say hello to one person, and not the whole world? +Just redefine `hi` to take a name as a parameter. + +{% highlight irb %} +irb(main):015:0> def hi(name) +irb(main):016:1> puts "Hello #{name}!" +irb(main):017:1> end +=> :hi +irb(main):018:0> hi("Matz") +Hello Matz! +=> nil +{% endhighlight %} + +So it works… but let’s take a second to see what’s going on here. + +## Holding Spots in a String + +What’s the `#{name}` bit? That’s Ruby’s way of inserting something into +a string. The bit between the braces is turned into a string (if it +isn’t one already) and then substituted into the outer string at that +point. You can also use this to make sure that someone’s name is +properly capitalized: + +{% highlight irb %} +irb(main):019:0> def hi(name = "World") +irb(main):020:1> puts "Hello #{name.capitalize}!" +irb(main):021:1> end +=> :hi +irb(main):022:0> hi "chris" +Hello Chris! +=> nil +irb(main):023:0> hi +Hello World! +=> nil +{% endhighlight %} + +A couple of other tricks to spot here. One is that we’re calling the +method without parentheses again. If it’s obvious what you’re doing, the +parentheses are optional. The other trick is the default parameter +`World`. What this is saying is “If the name isn’t supplied, use the +default name of `"World"`”. + +## Evolving Into a Greeter + +What if we want a real greeter around, one that remembers your name and +welcomes you and treats you always with respect. You might want to use +an object for that. Let’s create a “Greeter” class. + +{% highlight irb %} +irb(main):024:0> class Greeter +irb(main):025:1> def initialize(name = "World") +irb(main):026:2> @name = name +irb(main):027:2> end +irb(main):028:1> def say_hi +irb(main):029:2> puts "Hi #{@name}!" +irb(main):030:2> end +irb(main):031:1> def say_bye +irb(main):032:2> puts "Bye #{@name}, come back soon." +irb(main):033:2> end +irb(main):034:1> end +=> :say_bye +{% endhighlight %} + +The new keyword here is `class`. This defines a new class called Greeter +and a bunch of methods for that class. Also notice `@name`. This is an +instance variable, and is available to all the methods of the class. As +you can see it’s used by `say_hi` and `say_bye`. + +So how do we get this Greeter class set in motion? +[Create an object.](../3/) + diff --git a/fa/documentation/quickstart/3/index.md b/fa/documentation/quickstart/3/index.md new file mode 100644 index 0000000000..cebce10f0e --- /dev/null +++ b/fa/documentation/quickstart/3/index.md @@ -0,0 +1,230 @@ +--- +layout: page +title: "روبی در ۲۰ دقیقه" +lang: fa + +header: | + <div class="multi-page"> + <a href="../" title="قسمت ۱">۱</a> + <span class="separator"> | </span> + <a href="../2/" title="قسمت ۲">۲</a> + <span class="separator"> | </span> + <strong>۳</strong> + <span class="separator"> | </span> + <a href="../4/" title="قسمت ۴">۴</a> + </div> + <h1>روبی در ۲۰ دقیقه</h1> + +--- + +Now let’s create a greeter object and use it: + +{% highlight irb %} +irb(main):035:0> greeter = Greeter.new("Pat") +=> #<Greeter:0x16cac @name="Pat"> +irb(main):036:0> greeter.say_hi +Hi Pat! +=> nil +irb(main):037:0> greeter.say_bye +Bye Pat, come back soon. +=> nil +{% endhighlight %} + +Once the `greeter` object is created, it remembers that the name is Pat. Hmm, +what if we want to get at the name directly? + +{% highlight irb %} +irb(main):038:0> greeter.@name +SyntaxError: (irb):38: syntax error, unexpected tIVAR, expecting '(' +{% endhighlight %} + +Nope, can’t do it. + +## Under the Object’s Skin + +Instance variables are hidden away inside the object. They’re not +terribly hidden, you see them whenever you inspect the object, and there +are other ways of accessing them, but Ruby uses the good object-oriented +approach of keeping data sort-of hidden away. + +So what methods do exist for Greeter objects? + +{% highlight irb %} +irb(main):039:0> Greeter.instance_methods +=> [:say_hi, :say_bye, :instance_of?, :public_send, + :instance_variable_get, :instance_variable_set, + :instance_variable_defined?, :remove_instance_variable, + :private_methods, :kind_of?, :instance_variables, :tap, + :is_a?, :extend, :define_singleton_method, :to_enum, + :enum_for, :<=>, :===, :=~, :!~, :eql?, :respond_to?, + :freeze, :inspect, :display, :send, :object_id, :to_s, + :method, :public_method, :singleton_method, :nil?, :hash, + :class, :singleton_class, :clone, :dup, :itself, :taint, + :tainted?, :untaint, :untrust, :trust, :untrusted?, :methods, + :protected_methods, :frozen?, :public_methods, :singleton_methods, + :!, :==, :!=, :__send__, :equal?, :instance_eval, :instance_exec, :__id__] +{% endhighlight %} + +Whoa. That’s a lot of methods. We only defined two methods. What’s going +on here? Well this is **all** of the methods for Greeter objects, a +complete list, including ones defined by ancestor classes. If we want to +just list methods defined for Greeter we can tell it to not include +ancestors by passing it the parameter `false`, meaning we don’t want +methods defined by ancestors. + +{% highlight irb %} +irb(main):040:0> Greeter.instance_methods(false) +=> [:say_hi, :say_bye] +{% endhighlight %} + +Ah, that’s more like it. So let’s see which methods our greeter object +responds to: + +{% highlight irb %} +irb(main):041:0> greeter.respond_to?("name") +=> false +irb(main):042:0> greeter.respond_to?("say_hi") +=> true +irb(main):043:0> greeter.respond_to?("to_s") +=> true +{% endhighlight %} + +So, it knows `say_hi`, and `to_s` (meaning convert something to a +string, a method that’s defined by default for every object), but it +doesn’t know `name`. + +## Altering Classes—It’s Never Too Late + +But what if you want to be able to view or change the name? Ruby +provides an easy way of providing access to an object’s variables. + +{% highlight irb %} +irb(main):044:0> class Greeter +irb(main):045:1> attr_accessor :name +irb(main):046:1> end +=> nil +{% endhighlight %} + +In Ruby, you can open a class up again and modify it. The changes will +be present in any new objects you create and even available in existing +objects of that class. So, let’s create a new object and play with its +`@name` property. + +{% highlight irb %} +irb(main):047:0> greeter = Greeter.new("Andy") +=> #<Greeter:0x3c9b0 @name="Andy"> +irb(main):048:0> greeter.respond_to?("name") +=> true +irb(main):049:0> greeter.respond_to?("name=") +=> true +irb(main):050:0> greeter.say_hi +Hi Andy! +=> nil +irb(main):051:0> greeter.name="Betty" +=> "Betty" +irb(main):052:0> greeter +=> #<Greeter:0x3c9b0 @name="Betty"> +irb(main):053:0> greeter.name +=> "Betty" +irb(main):054:0> greeter.say_hi +Hi Betty! +=> nil +{% endhighlight %} + +Using `attr_accessor` defined two new methods for us, `name` to get the +value, and `name=` to set it. + +## Greeting Anything and Everything, MegaGreeter Neglects None! + +This greeter isn’t all that interesting though, it can only deal with +one person at a time. What if we had some kind of MegaGreeter that could +either greet the world, one person, or a whole list of people? + +Let’s write this one in a file instead of directly in the interactive +Ruby interpreter IRB. + +To quit IRB, type “quit”, “exit” or just hit Control-D. + +{% highlight ruby %} +#!/usr/bin/env ruby + +class MegaGreeter + attr_accessor :names + + # Create the object + def initialize(names = "World") + @names = names + end + + # Say hi to everybody + def say_hi + if @names.nil? + puts "..." + elsif @names.respond_to?("each") + # @names is a list of some kind, iterate! + @names.each do |name| + puts "Hello #{name}!" + end + else + puts "Hello #{@names}!" + end + end + + # Say bye to everybody + def say_bye + if @names.nil? + puts "..." + elsif @names.respond_to?("join") + # Join the list elements with commas + puts "Goodbye #{@names.join(", ")}. Come back soon!" + else + puts "Goodbye #{@names}. Come back soon!" + end + end +end + + +if __FILE__ == $0 + mg = MegaGreeter.new + mg.say_hi + mg.say_bye + + # Change name to be "Zeke" + mg.names = "Zeke" + mg.say_hi + mg.say_bye + + # Change the name to an array of names + mg.names = ["Albert", "Brenda", "Charles", + "Dave", "Engelbert"] + mg.say_hi + mg.say_bye + + # Change to nil + mg.names = nil + mg.say_hi + mg.say_bye +end +{% endhighlight %} + +Save this file as “ri20min.rb”, and run it as “ruby ri20min.rb”. The +output should be: + + Hello World! + Goodbye World. Come back soon! + Hello Zeke! + Goodbye Zeke. Come back soon! + Hello Albert! + Hello Brenda! + Hello Charles! + Hello Dave! + Hello Engelbert! + Goodbye Albert, Brenda, Charles, Dave, Engelbert. Come + back soon! + ... + ... +{: .code} + +There are a lot of new things thrown into this final example that we +[can take a deeper look at.](../4/) + diff --git a/fa/documentation/quickstart/4/index.md b/fa/documentation/quickstart/4/index.md new file mode 100644 index 0000000000..a40b976ee8 --- /dev/null +++ b/fa/documentation/quickstart/4/index.md @@ -0,0 +1,156 @@ +--- +layout: page +title: "روبی در ۲۰ دقیقه" +lang: fa + +header: | + <div class="multi-page"> + <a href="../" title="قسمت ۱">۱</a> + <span class="separator"> | </span> + <a href="../2/" title="قسمت ۲">۲</a> + <span class="separator"> | </span> + <a href="../3/" title="قسمت ۳">۳</a> + <span class="separator"> | </span> + <strong>۴</strong> + </div> + <h1>روبی در ۲۰ دقیقه</h1> + +--- + +So, looking deeper at our new program, notice the initial lines, which +begin with a hash mark (#). In Ruby, anything on a line after a hash +mark is a comment and is ignored by the interpreter. The first line of +the file is a special case, and under a Unix-like operating system tells +the shell how to run the file. The rest of the comments are there just +for clarity. + +Our `say_hi` method has become a bit trickier: + +{% highlight ruby %} +# Say hi to everybody +def say_hi + if @names.nil? + puts "..." + elsif @names.respond_to?("each") + # @names is a list of some kind, iterate! + @names.each do |name| + puts "Hello #{name}!" + end + else + puts "Hello #{@names}!" + end +end +{% endhighlight %} + +It now looks at the `@names` instance variable to make decisions. If +it’s nil, it just prints out three dots. No point greeting nobody, +right? + +## Cycling and Looping—a.k.a. Iteration + +If the `@names` object responds to `each`, it is something that you can +iterate over, so iterate over it and greet each person in turn. Finally, +if `@names` is anything else, just let it get turned into a string +automatically and do the default greeting. + +Let’s look at that iterator in more depth: + +{% highlight ruby %} +@names.each do |name| + puts "Hello #{name}!" +end +{% endhighlight %} + +`each` is a method that accepts a block of code then runs that block of +code for every element in a list, and the bit between `do` and `end` is +just such a block. A block is like an anonymous function or `lambda`. +The variable between pipe characters is the parameter for this block. + +What happens here is that for every entry in a list, `name` is bound to +that list element, and then the expression `puts "Hello #{name}!"` is +run with that name. + +Most other programming languages handle going over a list using the +`for` loop, which in C looks something like: + +{% highlight c %} +for (i=0; i<number_of_elements; i++) +{ + do_something_with(element[i]); +} +{% endhighlight %} + +This works, but isn’t very elegant. You need a throw-away variable like +`i`, have to figure out how long the list is, and have to explain how to +walk over the list. The Ruby way is much more elegant, all the +housekeeping details are hidden within the `each` method, all you need +to do is to tell it what to do with each element. Internally, the `each` +method will essentially call `yield "Albert"`, then `yield "Brenda"` and +then `yield "Charles"`, and so on. + +## Blocks, the Highly Sparkling Glint on the Edge of Ruby + +The real power of blocks is when dealing with things that are more +complicated than lists. Beyond handling simple housekeeping details +within the method, you can also handle setup, teardown, and errors—all +hidden away from the cares of the user. + +{% highlight ruby %} +# Say bye to everybody +def say_bye + if @names.nil? + puts "..." + elsif @names.respond_to?("join") + # Join the list elements with commas + puts "Goodbye #{@names.join(", ")}. Come back soon!" + else + puts "Goodbye #{@names}. Come back soon!" + end +end +{% endhighlight %} + +The `say_bye` method doesn’t use `each`, instead it checks to see if +`@names` responds to the `join` method, and if so, uses it. Otherwise, +it just prints out the variable as a string. This method of not caring +about the actual *type* of a variable, just relying on what methods it +supports is known as “Duck Typing”, as in “if it walks like a duck and +quacks like a duck…”. The benefit of this is that it doesn’t +unnecessarily restrict the types of variables that are supported. If +someone comes up with a new kind of list class, as long as it implements +the `join` method with the same semantics as other lists, everything +will work as planned. + +## Kicking Off the Script + +So, that’s the MegaGreeter class, the rest of the file just calls +methods on that class. There’s one final trick to notice, and that’s the +line: + +{% highlight ruby %} +if __FILE__ == $0 +{% endhighlight %} + +`__FILE__` is the magic variable that contains the name of the current +file. `$0` is the name of the file used to start the program. This check +says “If this is the main file being used…” This allows a file to be +used as a library, and not to execute code in that context, but if the +file is being used as an executable, then execute that code. + +## Consider Yourself Introduced + +So that’s it for the quick tour of Ruby. There’s a lot more to explore, +the different control structures that Ruby offers; the use of blocks and +`yield`; modules as mixins; and more. I hope this taste of Ruby has left +you wanting to learn more. + +If so, please head on over to our [Documentation](/en/documentation/) +area, which rounds up links to manuals and tutorials, all freely +available online. + +Or, if you’d really like to dig into a book, check the [book list][1] +(off-site link) for titles available for sale online or at your local +bookseller. + + + +[1]: http://www.ruby-doc.org/bookstore diff --git a/fa/documentation/quickstart/index.md b/fa/documentation/quickstart/index.md new file mode 100644 index 0000000000..c1c014ba7b --- /dev/null +++ b/fa/documentation/quickstart/index.md @@ -0,0 +1,144 @@ +--- +layout: page +title: "روبی در ۲۰ دقیقه" +lang: fa + +header: | + <div class="multi-page"> + <strong>۱</strong> + <span class="separator"> | </span> + <a href="2/" title="قسمت ۲">۲</a> + <span class="separator"> | </span> + <a href="3/" title="قسمت ۳">۳</a> + <span class="separator"> | </span> + <a href="4/" title="قسمت ۴">۴</a> + </div> + <h1>روبی در ۲۰ دقیقه</h1> + +--- + +## معرفی + +This is a small Ruby tutorial that should take no more than 20 minutes +to complete. It makes the assumption that you already have Ruby installed. +(If you do not have Ruby on your computer [install][installation] it +before you get started.) + +## Interactive Ruby + +Ruby comes with a program that will show the results of any Ruby +statements you feed it. Playing with Ruby code in interactive sessions +like this is a terrific way to learn the language. + +Open up IRB (which stands for Interactive Ruby). + +* If you’re using **macOS** open up `Terminal` and type `irb`, then + hit enter. +* If you’re using **Linux**, open up a shell and type `irb` and hit + enter. +* If you’re using **Windows**, open `Interactive Ruby` from the + Ruby section of your Start Menu. + +{% highlight irb %} +irb(main):001:0> +{% endhighlight %} + +Ok, so it’s open. Now what? + +Type this: `"Hello World"` + +{% highlight irb %} +irb(main):001:0> "Hello World" +=> "Hello World" +{% endhighlight %} + +## Ruby Obeyed You! + +What just happened? Did we just write the world’s shortest “Hello World” +program? Not exactly. The second line is just IRB’s way of telling us +the result of the last expression it evaluated. If we want to print out +“Hello World” we need a bit more: + +{% highlight irb %} +irb(main):002:0> puts "Hello World" +Hello World +=> nil +{% endhighlight %} + +`puts` is the basic command to print something out in Ruby. But then +what’s the `=> nil` bit? That’s the result of the expression. `puts` +always returns nil, which is Ruby’s absolutely-positively-nothing value. + +## Your Free Calculator is Here + +Already, we have enough to use IRB as a basic calculator: + +{% highlight irb %} +irb(main):003:0> 3+2 +=> 5 +{% endhighlight %} + +Three plus two. Easy enough. What about three *times* two? You could +type it in, it’s short enough, but you may also be able to go up and +change what you just entered. Try hitting the **up-arrow** on your +keyboard and see if it brings up the line with `3+2` on it. If it does, +you can use the left arrow key to move just after the `+` sign and then +use backspace to change it to a `*` sign. + +{% highlight irb %} +irb(main):004:0> 3*2 +=> 6 +{% endhighlight %} + +Next, let’s try three squared: + +{% highlight irb %} +irb(main):005:0> 3**2 +=> 9 +{% endhighlight %} + +In Ruby `**` is the way you say “to the power of”. But what if you want +to go the other way and find the square root of something? + +{% highlight irb %} +irb(main):006:0> Math.sqrt(9) +=> 3.0 +{% endhighlight %} + +Ok, wait, what was that last one? If you guessed, “it was figuring out +the square root of nine,” you’re right. But let’s take a closer look at +things. First of all, what’s `Math`? + +## Modules Group Code by Topic + +`Math` is a built-in module for mathematics. Modules serve two roles in +Ruby. This shows one role: grouping similar methods together under a +familiar name. `Math` also contains methods like `sin()` and `tan()`. + +Next is a dot. What does the dot do? The dot is how you identify the +receiver of a message. What’s the message? In this case it’s `sqrt(9)`, +which means call the method `sqrt`, shorthand for “square root” with the +parameter of `9`. + +The result of this method call is the value `3.0`. You might notice it’s +not just `3`. That’s because most of the time the square root of a +number won’t be an integer, so the method always returns a +floating-point number. + +What if we want to remember the result of some of this math? Assign the +result to a variable. + +{% highlight irb %} +irb(main):007:0> a = 3 ** 2 +=> 9 +irb(main):008:0> b = 4 ** 2 +=> 16 +irb(main):009:0> Math.sqrt(a+b) +=> 5.0 +{% endhighlight %} + +As great as this is for a calculator, we’re getting away from the +traditional `Hello World` message that beginning tutorials are supposed +to focus on… [so let’s go back to that.](2/) + +[installation]: /fa/documentation/installation/ diff --git a/fa/documentation/ruby-from-other-languages/index.md b/fa/documentation/ruby-from-other-languages/index.md new file mode 100644 index 0000000000..832a81fef7 --- /dev/null +++ b/fa/documentation/ruby-from-other-languages/index.md @@ -0,0 +1,426 @@ +--- +layout: page +title: "Ruby From Other Languages" +lang: fa +--- + +When you first look at some Ruby code, it will likely remind you of +other programming languages you’ve used. This is on purpose. Much of the +syntax is familiar to users of Perl, Python, and Java (among other +languages), so if you’ve used those, learning Ruby will be a piece of +cake. +{: .summary} + +This document contains two major sections. The first attempts to be a +rapid-fire summary of what you can expect to see when going from +language *X* to Ruby. The second section tackles the major language +features and how they might compare to what you’re already familiar +with. + +## What to Expect: *Language X* to Ruby + +* [To Ruby From C and C++](to-ruby-from-c-and-cpp/) +* [To Ruby From Java](to-ruby-from-java/) +* [To Ruby From Perl](to-ruby-from-perl/) +* [To Ruby From PHP](to-ruby-from-php/) +* [To Ruby From Python](to-ruby-from-python/) + +## Important Language Features And Some Gotchas + +Here are some pointers and hints on major Ruby features you’ll see while +learning Ruby. + +### Iteration + +Two Ruby features that are a bit unlike what you may have seen before, +and which take some getting used to, are “blocks” and iterators. Instead +of looping over an index (like with C, C++, or pre-1.5 Java), or looping +over a list (like Perl’s `for (@a) {...}`, or Python’s +`for i in aList: ...`), with Ruby you’ll very often instead see + +{% highlight ruby %} +some_list.each do |this_item| + # We're inside the block. + # deal with this_item. +end +{% endhighlight %} + +For more info on `each` (and its friends `collect`, `find`, `inject`, +`sort`, etc.), see `ri Enumerable` (and then `ri Enumerable#some_method`). + +### Everything has a value + +There’s no difference between an expression and a statement. Everything +has a value, even if that value is `nil`. This is possible: + +{% highlight ruby %} +x = 10 +y = 11 +z = if x < y + true + else + false + end +z # => true +{% endhighlight %} + +### Symbols are not lightweight Strings + +Many Ruby newbies struggle with understanding what Symbols are, and what +they can be used for. + +Symbols can best be described as identities. A symbol is all about +**who** it is, not **what** it is. Fire up `irb` and see the difference: + +{% highlight irb %} +irb(main):001:0> :george.object_id == :george.object_id +=> true +irb(main):002:0> "george".object_id == "george".object_id +=> false +irb(main):003:0> +{% endhighlight %} + +The `object_id` methods returns the identity of an Object. If two +objects have the same `object_id`, they are the same (point to the same +Object in memory). + +As you can see, once you have used a Symbol once, any Symbol with the +same characters references the same Object in memory. For any given two +Symbols that represent the same characters, the `object_id`s match. + +Now take a look at the String (“george”). The `object_id`s don’t match. +That means they’re referencing two different objects in memory. Whenever +you use a new String, Ruby allocates memory for it. + +If you’re in doubt whether to use a Symbol or a String, consider what’s +more important: the identity of an object (i.e. a Hash key), or the +contents (in the example above, “george”). + +### Everything is an Object + +“Everything is an object” isn’t just hyperbole. Even classes and +integers are objects, and you can do the same things with them as with +any other object: + +{% highlight ruby %} +# This is the same as +# class MyClass +# attr_accessor :instance_var +# end +MyClass = Class.new do + attr_accessor :instance_var +end +{% endhighlight %} + +### Variable Constants + +Constants are not really constant. If you modify an already initialized +constant, it will trigger a warning, but not halt your program. That +isn’t to say you **should** redefine constants, though. + +### Naming conventions + +Ruby enforces some naming conventions. If an identifier starts with a +capital letter, it is a constant. If it starts with a dollar sign (`$`), +it is a global variable. If it starts with `@`, it is an instance +variable. If it starts with `@@`, it is a class variable. + +Method names, however, are allowed to start with capital letters. This +can lead to confusion, as the example below shows: + +{% highlight ruby %} +Constant = 10 +def Constant + 11 +end +{% endhighlight %} + +Now `Constant` is 10, but `Constant()` is 11. + +### Keyword arguments + +Like in Python, since Ruby 2.0 methods can be defined +using keyword arguments: + +{% highlight ruby %} +def deliver(from: "A", to: nil, via: "mail") + "Sending from #{from} to #{to} via #{via}." +end + +deliver(to: "B") +# => "Sending from A to B via mail." +deliver(via: "Pony Express", from: "B", to: "A") +# => "Sending from B to A via Pony Express." +{% endhighlight %} + +### The universal truth + +In Ruby, everything except `nil` and `false` is considered true. In +C, Python and many other languages, 0 and possibly other values, such as +empty lists, are considered false. Take a look at the following Python +code (the example applies to other languages, too): + +{% highlight python %} +# in Python +if 0: + print("0 is true") +else: + print("0 is false") +{% endhighlight %} + +This will print “0 is false”. The equivalent Ruby: + +{% highlight ruby %} +# in Ruby +if 0 + puts "0 is true" +else + puts "0 is false" +end +{% endhighlight %} + +Prints “0 is true”. + +### Access modifiers apply until the end of scope + +In the following Ruby code, + +{% highlight ruby %} +class MyClass + private + def a_method; true; end + def another_method; false; end +end +{% endhighlight %} + +You might expect `another_method` to be public. Not so. The `private` +access modifier continues until the end of the scope, or until another +access modifier pops up, whichever comes first. By default, methods are +public: + +{% highlight ruby %} +class MyClass + # Now a_method is public + def a_method; true; end + + private + + # another_method is private + def another_method; false; end +end +{% endhighlight %} + +`public`, `private` and `protected` are really methods, so they can take +parameters. If you pass a Symbol to one of them, that method’s visibility is +altered. + +### Method access + +In Java, `public` means a method is accessible by anyone. `protected` +means the class’s instances, instances of descendant classes, and +instances of classes in the same package can access it, but not anyone +else, and `private` means nobody besides the class’s instances can +access the method. + +Ruby differs slightly. `public` is, naturally, public. `private` means +the method(s) are accessible only when they can be called without an +explicit receiver. Only `self` is allowed to be the receiver of a +private method call. + +`protected` is the one to be on the lookout for. A protected method can be +called from a class or descendant class instances, but also with another +instance as its receiver. +Here is an example (adapted from [The Ruby Language FAQ][faq]): + +{% highlight ruby %} +class Test + # public by default + def identifier + 99 + end + + def ==(other) + identifier == other.identifier + end +end + +t1 = Test.new # => #<Test:0x34ab50> +t2 = Test.new # => #<Test:0x342784> +t1 == t2 # => true + +# now make `identifier' protected; it still works +# because protected allows `other' as receiver + +class Test + protected :identifier +end + +t1 == t2 # => true + +# now make `identifier' private + +class Test + private :identifier +end + +t1 == t2 +# NoMethodError: private method `identifier' called for #<Test:0x342784> +{% endhighlight %} + +### Classes are open + +Ruby classes are open. You can open them up, add to them, and change them at +any time. Even core classes, like `Fixnum` or even `Object`, the parent of all +objects. Ruby on Rails defines a bunch of methods for dealing with time on +`Fixnum`. Watch: + +{% highlight ruby %} +class Fixnum + def hours + self * 3600 # number of seconds in an hour + end + alias hour hours +end + +# 14 hours from 00:00 January 1st +# (aka when you finally wake up ;) +Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 +{% endhighlight %} + +### Funny method names + +In Ruby, methods are allowed to end with question marks or exclamation marks. +By convention, methods that answer questions end in question marks +(e.g. `Array#empty?`, which returns `true` if the receiver is empty). +Potentially “dangerous” methods by convention end with exclamation marks +(e.g. methods that modify `self` or the arguments, `exit!`, etc.). +Not all methods that change their arguments end with exclamation marks, though. +`Array#replace` replaces the contents of an array with the contents +of another array. It doesn’t make much sense to have a method like that +that **doesn’t** modify self. + +### Singleton methods + +Singleton methods are per-object methods. They are only available on the +Object you defined it on. + +{% highlight ruby %} +class Car + def inspect + "Cheap car" + end +end + +porsche = Car.new +porsche.inspect # => Cheap car +def porsche.inspect + "Expensive car" +end + +porsche.inspect # => Expensive car + +# Other objects are not affected +other_car = Car.new +other_car.inspect # => Cheap car +{% endhighlight %} + +### Missing methods + +Ruby doesn’t give up if it can’t find a method that responds to a +particular message. It calls the `method_missing` method with the name +of the method it couldn’t find and the arguments. By default, +`method_missing` raises a NameError exception, but you can redefine it to +better fit your application, and many libraries do. Here is an example: + +{% highlight ruby %} +# id is the name of the method called, the * syntax collects +# all the arguments in an array named 'arguments' +def method_missing(id, *arguments) + puts "Method #{id} was called, but not found. It has " + + "these arguments: #{arguments.join(", ")}" +end + +__ :a, :b, 10 +# => Method __ was called, but not found. It has these +# arguments: a, b, 10 +{% endhighlight %} + +The code above just prints the details of the call, but you are free to +handle the message in any way that is appropriate. + +### Message passing, not function calls + +A method call is really a **message** to another object: + +{% highlight ruby %} +# This +1 + 2 +# Is the same as this ... +1.+(2) +# Which is the same as this: +1.send "+", 2 +{% endhighlight %} + +### Blocks are Objects, they just don’t know it yet + +Blocks (closures, really) are heavily used by the standard library. To +call a block, you can either use `yield`, or make it a `Proc` by +appending a special argument to the argument list, like so: + +{% highlight ruby %} +def block(&the_block) + # Inside here, the_block is the block passed to the method + the_block # return the block +end +adder = block { |a, b| a + b } +# adder is now a Proc object +adder.class # => Proc +{% endhighlight %} + +You can create blocks outside of method calls, too, by calling `Proc.new` +with a block or calling the `lambda` method. + +Similarly, methods are also Objects in the making: + +{% highlight ruby %} +method(:puts).call "puts is an object!" +# => puts is an object! +{% endhighlight %} + +### Operators are syntactic sugar + +Most operators in Ruby are just syntactic sugar (with some precedence +rules) for method calls. You can, for example, override Fixnum’s `+` +method: + +{% highlight ruby %} +class Fixnum + # You can, but please don't do this + def +(other) + self - other + end +end +{% endhighlight %} + +You don’t need C++’s `operator+`, etc. + +You can even have array-style access if you define the `[]` and `[]=` methods. +To define the unary + and - (think +1 and -2), you must define the `+@` and +`-@` methods, respectively. The operators below are **not** syntactic sugar, +though. They are not methods, and cannot be redefined: + +{% highlight ruby %} +=, .., ..., not, &&, and, ||, or, :: +{% endhighlight %} + +In addition, `+=`, `*=` etc. are just abbreviations for `var = var + other_var`, +`var = var * other_var`, etc. and therefore cannot be redefined. + +## Finding Out More + +When you are ready for more Ruby knowledge, see our +[Documentation](/en/documentation/) section. + + + +[faq]: http://ruby-doc.org/docs/ruby-doc-bundle/FAQ/FAQ.html diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md new file mode 100644 index 0000000000..222a3b119c --- /dev/null +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md @@ -0,0 +1,149 @@ +--- +layout: page +title: "To Ruby From C and C++" +lang: en +--- + +It’s difficult to write a bulleted list describing how your code will be +different in Ruby from C or C++ because it’s quite a large difference. +One reason is that the Ruby runtime does so much for you. Ruby seems +about as far as you can get from C’s “no hidden mechanism” principle—the +whole point of Ruby is to make the human’s job easier at the expense of +making the runtime shoulder more of the work. Unless or until you +profile your code for optimization, you don’t need to care one whit +about “keeping your compiler happy” when using Ruby. + +That said, for one thing, you can expect your Ruby code to execute much +more slowly than “equivalent” C or C++ code. At the same time, your head +will spin at how rapidly you can get a Ruby program up and running, as +well as at how few lines of code it will take to write it. Ruby is much +much simpler than C++—it will spoil you rotten. + +Ruby is dynamically typed, rather than statically typed—the runtime does +as much as possible at run-time. For example, you don’t need to know +what modules your Ruby program will “link to” (that is, load and use) or +what methods it will call ahead of time. + +Happily, it turns out that Ruby and C have a healthy symbiotic +relationship. Ruby supports so-called “extension modules”. These are +modules that you can use from your Ruby programs (and which, from the +outside, will look and act just like any other Ruby module), but which +are written in C. In this way, you can compartmentalize the +performance-critical parts of your Ruby software, and smelt those down +to pure C. + +And, of course, Ruby itself is written in C. + +### Similarities with C + +As with C, in Ruby,... + +* You may program procedurally if you like (but it will still be + object-oriented behind the scenes). +* Most of the operators are the same (including the compound assignment + and also bitwise operators). Though, Ruby doesn’t have `++` or `--`. +* You’ve got `__FILE__` and `__LINE__`. +* You can also have constants, though there’s no special `const` + keyword. Const-ness is enforced by a naming convention instead— names + starting with a capital letter are for constants. +* Strings go in double-quotes. +* Strings are mutable. +* Just like man pages, you can read most docs in your terminal + window—though using the `ri` command. +* You’ve got the same sort of command-line debugger available. + +### Similarities with C++ + +As with C++, in Ruby,... + +* You’ve got mostly the same operators (even `::`). `<<` is often used + for appending elements to a list. One note though: with Ruby you never + use `->`—it’s always just `.`. +* `public`, `private`, and `protected` do similar jobs. +* Inheritance syntax is still only one character, but it’s `<` instead + of `:`. +* You may put your code into “modules”, similar to how `namespace` in + C++ is used. +* Exceptions work in a similar manner, though the keyword names have + been changed to protect the innocent. + +### Differences from C + +Unlike C, in Ruby,... + +* You don’t need to compile your code. You just run it directly. +* Objects are strongly typed (and variable names themselves have no type + at all). +* There’s no macros or preprocessor. No casts. No pointers (nor pointer + arithmetic). No typedefs, sizeof, nor enums. +* There are no header files. You just define your functions (usually + referred to as “methods”) and classes in the main source code files. +* There’s no `#define`. Just use constants instead. +* All variables live on the heap. Further, you don’t need to free them + yourself—the garbage collector takes care of that. +* Arguments to methods (i.e. functions) are passed by value, where the + values are always object references. +* It’s `require 'foo'` instead of `#include <foo>` or `#include "foo"`. +* You cannot drop down to assembly. +* There’s no semicolons ending lines. +* You go without parentheses for `if` and `while` condition expressions. +* Parentheses for method (i.e. function) calls are often optional. +* You don’t usually use braces—just end multi-line constructs (like + `while` loops) with an `end` keyword. +* The `do` keyword is for so-called “blocks”. There’s no “do statement” + like in C. +* The term “block” means something different. It’s for a block of code + that you associate with a method call so the method body can call out + to the block while it executes. +* There are no variable declarations. You just assign to new names + on-the-fly when you need them. +* When tested for truth, only `false` and `nil` evaluate to a false + value. Everything else is true (including `0`, `0.0`, and `"0"`). +* There is no `char`—they are just 1-letter strings. +* Strings don’t end with a null byte. +* Array literals go in brackets instead of braces. +* Arrays just automatically get bigger when you stuff more elements into + them. +* If you add two arrays, you get back a new and bigger array (of course, + allocated on the heap) instead of doing pointer arithmetic. +* More often than not, everything is an expression (that is, things like + `while` statements actually evaluate to an rvalue). + +### Differences from C++ + +Unlike C++, in Ruby,... + +* There’s no explicit references. That is, in Ruby, every variable is + just an automatically dereferenced name for some object. +* Objects are strongly but *dynamically* typed. The runtime discovers + *at runtime* if that method call actually works. +* The “constructor” is called `initialize` instead of the class name. +* All methods are always virtual. +* “Class” (static) variable names always begin with `@@` (as in + `@@total_widgets`). +* You don’t directly access member variables—all access to public member + variables (known in Ruby as attributes) is via methods. +* It’s `self` instead of `this`. +* Some methods end in a ’?’ or a ’!’. It’s actually part of the method + name. +* There’s no multiple inheritance per se. Though Ruby has “mixins” (i.e. + you can “inherit” all instance methods of a module). +* There are some enforced case-conventions (ex. class names start with a + capital letter, variables start with a lowercase letter). +* Parentheses for method calls are usually optional. +* You can re-open a class anytime and add more methods. +* There’s no need of C++ templates (since you can assign any kind of + object to a given variable, and types get figured out at runtime + anyway). No casting either. +* Iteration is done a bit differently. In Ruby, you don’t use a separate + iterator object (like `vector<T>::const_iterator iter`). + Instead you use an iterator method of the container object (like `each`) + that takes a block of code to which it passes successive elements. +* There’s only two container types: `Array` and `Hash`. +* There’s no type conversions. With Ruby though, you’ll probably find + that they aren’t necessary. +* Multithreading is built-in, but as of Ruby 1.8 they are “green + threads” (implemented only within the interpreter) as opposed to + native threads. +* A unit testing lib comes standard with Ruby. + diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-java/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-java/index.md new file mode 100644 index 0000000000..eb4dc12ff5 --- /dev/null +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-java/index.md @@ -0,0 +1,60 @@ +--- +layout: page +title: "To Ruby From Java" +lang: en +--- + +Java is mature. It’s tested. And it’s fast (contrary to what the +anti-Java crowd may still claim). It’s also quite verbose. Going from +Java to Ruby, expect your code size to shrink down considerably. You can +also expect it to take less time to knock together quick prototypes. + +### Similarities + +As with Java, in Ruby,... + +* Memory is managed for you via a garbage collector. +* Objects are strongly typed. +* There are public, private, and protected methods. +* There are embedded doc tools (Ruby’s is called RDoc). The docs + generated by rdoc look very similar to those generated by javadoc. + +### Differences + +Unlike Java, in Ruby,... + +* You don’t need to compile your code. You just run it directly. +* There are several different popular third-party GUI toolkits. Ruby + users can try [WxRuby][1], [FXRuby][2], [Ruby-GNOME2][3], + [Qt][4], or the bundled-in Ruby Tk for example. +* You use the `end` keyword after defining things like classes, instead + of having to put braces around blocks of code. +* You have `require` instead of `import`. +* All member variables are private. From the outside, you access + everything via methods. +* Parentheses in method calls are usually optional and often omitted. +* Everything is an object, including numbers like 2 and 3.14159. +* There’s no static type checking. +* Variable names are just labels. They don’t have a type associated with + them. +* There are no type declarations. You just assign to new variable names + as-needed and they just “spring up” (i.e. `a = [1,2,3]` rather than + `int[] a = {1,2,3};`). +* There’s no casting. Just call the methods. Your unit tests should tell + you before you even run the code if you’re going to see an exception. +* It’s `foo = Foo.new("hi")` instead of `Foo foo = new Foo("hi")`. +* The constructor is always named “initialize” instead of the name of + the class. +* You have “mixins” instead of interfaces. +* YAML tends to be favored over XML. +* It’s `nil` instead of `null`. +* `==` and `equals()` are handled differently in Ruby. Use `==` when you + want to test equivalence in Ruby (`equals()` in Java). Use `equal?()` + when you want to know if two objects are the same (`==` in Java). + + + +[1]: http://wxruby.rubyforge.org/wiki/wiki.pl +[2]: http://www.fxruby.org/ +[3]: https://ruby-gnome2.osdn.jp/ +[4]: https://github.com/ryanmelt/qtbindings/ diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md new file mode 100644 index 0000000000..e5f9eda7b1 --- /dev/null +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md @@ -0,0 +1,68 @@ +--- +layout: page +title: "To Ruby From Perl" +lang: en +--- + +Perl is awesome. Perl’s docs are awesome. The Perl community is … +awesome. However, the language is fairly large and arguably complex. For +those Perlers who long for a simpler time, a more orthogonal language, +and elegant OO features built-in from the beginning, Ruby may be for +you. + +### Similarities + +As with Perl, in Ruby,... + +* You’ve got a package management system, somewhat like CPAN (though + it’s called [RubyGems][1]). +* Regexes are built right in. Bon appétit! +* There’s a fairly large number of commonly-used built-ins. +* Parentheses are often optional. +* Strings work basically the same. +* There’s a general delimited string and regex quoting syntax similar to + Perl’s. It looks like `%q{this}` (single-quoted), or + `%Q{this}` (double-quoted), and `%w{this for a single-quoted list of words}`. + You `%Q|can|` `%Q(use)` `%Q^other^` delimiters if you like. +* You’ve got double-quotish variable interpolation, though it `"looks + #{like} this"` (and you can put any Ruby code you like inside that + `#{}`). +* Shell command expansion uses `` `backticks` ``. +* You’ve got embedded doc tools (Ruby’s is called rdoc). + +### Differences + +Unlike Perl, in Ruby,... + +* You don’t have the context-dependent rules like with Perl. +* A variable isn’t the same as the object to which it refers. Instead, + it’s always just a reference to an object. +* Although `$` and `@` are used as the first character in + variable names sometimes, rather than indicating type, they indicate + scope (`$` for globals, `@` for object instance, and + `@@` for class attributes). +* Array literals go in brackets instead of parentheses. +* Composing lists of other lists does not flatten them into one big + list. Instead you get an array of arrays. +* It’s `def` instead of `sub`. +* There’s no semicolons needed at the end of each line. Incidentally, + you end things like function definitions, class definitions, and case + statements with the `end` keyword. +* Objects are strongly typed. You’ll be manually calling `foo.to_i`, + `foo.to_s`, etc., if you need to convert between types. +* There’s no `eq`, `ne`, `lt`, `gt`, `ge`, nor `le`. +* There’s no diamond operator (`<>`). + You usually use `IO.some_method` instead. +* The fat comma `=>` is only used for hash literals. +* There’s no `undef`. In Ruby you have `nil`. `nil` is an object (like + anything else in Ruby). It’s not the same as an undefined variable. It + evaluates to `false` if you treat it like a boolean. +* When tested for truth, only `false` and `nil` evaluate to a false + value. Everything else is true (including `0`, `0.0`, and `"0"`). +* There’s no [PerlMonks][2]. Though the ruby-talk mailing list is a very + helpful place. + + + +[1]: http://guides.rubygems.org +[2]: http://www.perlmonks.org/ diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md new file mode 100644 index 0000000000..5d2bb3afa7 --- /dev/null +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md @@ -0,0 +1,51 @@ +--- +layout: page +title: "To Ruby From PHP" +lang: en +--- + +PHP is in widespread use for web applications, but if you want to use +Ruby on Rails or just want a language that’s more tailored for general +use, Ruby is worth a look. + +### Similarities + +As in PHP, in Ruby… + +* Ruby is dynamically typed, like in PHP, so you don’t need to worry + about having to declare variables. +* There are classes, and you can control access to them like in PHP 5 + (`public`, `protected` and `private`). +* Some variables start with $, like in PHP (but not all). +* There’s `eval`, too. +* You can use string interpolation. Instead of doing `"$foo is a $bar"`, + you can do `"#{foo} is a #{bar}"`—like in PHP, this doesn’t apply for + single-quoted strings. +* There’s heredocs. +* Ruby has exceptions, like PHP 5. +* There’s a fairly large standard library. +* Arrays and hashes work like expected, if you exchange `array()` for + `{` and `}`\: `array('a' => 'b')` becomes `{'a' => 'b'}`. +* `true` and `false` behave like in PHP, but `null` is called `nil`. + +### Differences + +Unlike in PHP, in Ruby… + +* There’s strong typing. You’ll need to call `to_s`, `to_i` etc. to + convert between strings, integers and so on, instead of relying on the + language to do it. +* Strings, numbers, arrays, hashes, etc. are objects. Instead of calling + abs(-1) it’s -1.abs. +* Parentheses are optional in method calls, except to clarify which + parameters go to which method calls. +* The standard library and extensions are organized in modules and classes. +* Reflection is an inherent capability of objects, you don’t need to use + `Reflection` classes like in PHP 5. +* Variables are references. +* There’s no `abstract` classes or `interface`s. +* Hashes and arrays are not interchangeable. +* Only `false` and `nil` are false: `0`, `array()` and `""` are all true + in conditionals. +* Almost everything is a method call, even `raise` (`throw` in PHP). + diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md new file mode 100644 index 0000000000..55509c296f --- /dev/null +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md @@ -0,0 +1,83 @@ +--- +layout: page +title: "To Ruby From Python" +lang: en +--- + +Python is another very nice general purpose programming language. Going +from Python to Ruby, you’ll find that there’s a little bit more syntax +to learn than with Python. + +### Similarities + +As with Python, in Ruby,... + +* There’s an interactive prompt (called `irb`). +* You can read docs on the command line (with the `ri` command instead + of `pydoc`). +* There are no special line terminators (except the usual newline). +* String literals can span multiple lines like Python’s triple-quoted + strings. +* Brackets are for lists, and braces are for dicts (which, in Ruby, are + called “hashes”). +* Arrays work the same (adding them makes one long array, but composing + them like this `a3 = [ a1, a2 ]` gives you an array of arrays). +* Objects are strongly and dynamically typed. +* Everything is an object, and variables are just references to objects. +* Although the keywords are a bit different, exceptions work about the + same. +* You’ve got embedded doc tools (Ruby’s is called rdoc). +* There is good support for functional programming with first-class + functions, anonymous functions, and closures. + +### Differences + +Unlike Python, in Ruby,... + +* Strings are mutable. +* You can make constants (variables whose value you don’t intend to + change). +* There are some enforced case-conventions (ex. class names start with a + capital letter, variables start with a lowercase letter). +* There’s only one kind of list container (an Array), and it’s mutable. +* Double-quoted strings allow escape sequences (like `\t`) and a special + “expression substitution” syntax (which allows you to insert the + results of Ruby expressions directly into other strings without having + to `"add " + "strings " + "together"`). Single-quoted strings are like + Python’s `r"raw strings"`. +* There are no “new style” and “old style” classes. Just one kind. + (Python 3+ doesn’t have this issue, but it isn’t fully backward + compatible with Python 2.) +* You never directly access attributes. With Ruby, it’s all method + calls. +* Parentheses for method calls are usually optional. +* There’s `public`, `private`, and `protected` to enforce access, + instead of Python’s `_voluntary_` underscore `__convention__`. +* “mixins” are used instead of multiple inheritance. +* You can add or modify the methods of built-in classes. Both languages + let you open up and modify classes at any point, but Python prevents + modification of built-ins — Ruby does not. +* You’ve got `true` and `false` instead of `True` and `False` (and `nil` + instead of `None`). +* When tested for truth, only `false` and `nil` evaluate to a false + value. Everything else is true (including `0`, `0.0`, `""`, and `[]`). +* It’s `elsif` instead of `elif`. +* It’s `require` instead of `import`. Otherwise though, usage is the + same. +* The usual-style comments on the line(s) *above* things (instead of + docstrings below them) are used for generating docs. +* There are a number of shortcuts that, although give you more to + remember, you quickly learn. They tend to make Ruby fun and very + productive. +* There’s no way to unset a variable once set (like Python’s `del` + statement). You can reset a variable to `nil`, allowing the old + contents to be garbage collected, but the variable will remain in the + symbol table as long as it is in scope. +* The `yield` keyword behaves differently. In Python it will return + execution to the scope outside the function's invocation. External + code is responsible for resuming the function. In Ruby `yield` will + execute another function that has been passed as the final argument, + then immediately resume. +* Python supports just one kind of anonymous functions, lambdas, while + Ruby contains blocks, Procs, and lambdas. + diff --git a/fa/documentation/success-stories/index.md b/fa/documentation/success-stories/index.md new file mode 100644 index 0000000000..5d8d4454ab --- /dev/null +++ b/fa/documentation/success-stories/index.md @@ -0,0 +1,88 @@ +--- +layout: page +title: "Success Stories" +lang: en +--- + +Many people use Ruby in their daily jobs. Others just as a hobby. Here +you’ll find a small sample of real world usage of Ruby. +{: .summary} + +#### Simulations + +* [NASA Langley Research Center][1] uses Ruby to conduct simulations. + +* A research group in [Motorola][2] uses Ruby to script a simulator, + both to generate scenarios and to post process the data. + +#### 3D Modeling + +* [Google SketchUp][3] is a 3D modeling application that uses Ruby for + its macro scripting API. + +#### Business + +* [Toronto Rehab][4] uses a RubyWebDialogs-based app to manage and track + on-call and on-site support for the IT help desk and IT operations + teams. + +#### Robotics + +* At MORPHA project, Ruby was used to implement the reactive + control part for the Siemens service robot. + +#### Networking + +* [Open Domain Server][6] uses Ruby to allow people using Dynamic DNS + clients to update in real time their IP configuration so that it can + be mapped to static domains. + +#### Telephony + +* Ruby is being used within [Lucent][7] on a 3G wireless telephony + product. + +#### System Administration + +* Ruby was used to write the central data collection portion of [Level 3 + Communications][8] Unix Capacity and Planning system that gathers + performance statistics from over 1700 Unix (Solaris and Linux) servers + scattered around the globe. + +#### Web Applications + +* [Basecamp][9], a web-based project management application developed by + [37signals][10], is programmed entirely in Ruby. + +* [A List Apart][11], a magazine for people who make websites that has + been around since 1997, has recently been revamped and uses a custom + application built with Ruby on Rails. + +#### Security + +* The [Metasploit Framework][metasploit], a community open source project + managed by [Rapid7][rapid7], is a free penetration testing platform that + helps IT professionals assess the security of their networks and + applications. The Metasploit Project consists of over 700,000 lines of + code and has been downloaded over a million times in 2010. + The commercial editions developed by Rapid7 are also based on Ruby. + +* The [Arachni Web Application Security Scanner][arachni] is a free, modular, + high-performance Ruby framework aimed towards helping penetration testers + and administrators evaluate the security of modern web applications. + + + +[1]: http://www.larc.nasa.gov/ +[2]: http://www.motorola.com +[3]: http://www.sketchup.com/ +[4]: https://www.uhn.ca/TorontoRehab +[6]: http://ods.org/ +[7]: http://www.lucent.com/ +[8]: http://www.level3.com/ +[9]: http://www.basecamphq.com +[10]: http://www.37signals.com +[11]: http://www.alistapart.com +[metasploit]: http://www.metasploit.com +[rapid7]: http://www.rapid7.com +[arachni]: http://www.arachni-scanner.com/ diff --git a/fa/downloads/branches/index.md b/fa/downloads/branches/index.md new file mode 100644 index 0000000000..7f39e85866 --- /dev/null +++ b/fa/downloads/branches/index.md @@ -0,0 +1,43 @@ +--- +layout: page +title: "Ruby Maintenance Branches" +lang: en +--- + +{% comment %} +In development. Not to be translated yet. +{% endcomment %} + +This page lists the current maintenance status of the various Ruby branches. +{: .summary} + +For more information about specific releases see the +[Releases page](../releases/). + +This is a preliminary list of Ruby branches and their maintenance status. +The shown dates are inferred from the English versions of release posts +or EOL announcements. + +The Ruby branches or release series are categorized below into +the following phases: + +* **normal maintenance** (bug fix): + Branch receives general bug fixes and security fixes. +* **security maintenance** (security fix): + Only security fixes are backported to this branch. +* **eol** (end-of-life): + Branch is not supported by the ruby-core team any longer and does + not receive any fixes. No further patch release will be released. +* **preview**: + Only previews or release candidates have been released for + this branch so far. + +{% for branch in site.data.branches %} +### Ruby {{ branch.name }} + +status: {{ branch.status }}<br> +release date: {{ branch.date }}{% if branch.eol_date %}<br> +EOL date: {{ branch.eol_date }} +{% endif %} + +{% endfor %} diff --git a/fa/downloads/index.md b/fa/downloads/index.md new file mode 100644 index 0000000000..073e526e18 --- /dev/null +++ b/fa/downloads/index.md @@ -0,0 +1,80 @@ +--- +layout: page +title: "دانلود روبی" +lang: fa +--- + +در اینجا شما میتوانید آخرین توزیع روبی را در طعم مورد علاقه خود دریافت کنید. +نسخه پایدار فعلی {{ site.data.downloads.stable[0] }} است. +لطفا حتما [مجوز روبی][license] را بخوانید. +{: .summary} + +### راههای نصب روبی + +ما برای نصب روبی چندین ابزار در هر پلتفرم اصلی داریم: + +* برای لینوکس/یونیکس، میتوانید از سیستمهای مدیریت بسته یا ابزارهای شخص ثالث ([rbenv][rbenv] و [RVM][rvm]) استفاده کنید. +* برای سیستمعاملهای macOS، شما میتوانید از ابزارهای شخص ثالث ([rbenv][rbenv] و [RVM][rvm]) استفاده کنید. +* برای سیستمعاملهای ویندوز، شما میتوانید از [RubyInstaller][rubyinstaller] استفاده کنید. + +برای اطلاعات بیشتر در مورد استفاده از سیستمهای مدیریت بسته یا ابزارهای شخص ثالث، صفحه [نصب و راهاندازی][installation] را ببینید. + +البته، شما میتوانید روبی را از منبع در همه سیستمعاملها نصب کنید. + +### کامپایل روبی - سورس کد + +نصب از روی سورس کد، یک راه حل عالی برای زمانی است که شما به اندازه کافی با پلتفرم خود راحت هستید و شاید هم محیط شما به تنظیمات خاصی نیاز دارد. همچنین راه حل خوبی برای وقتی است که شما هیچ پکیج از پیش ساخته شدهای برای پلتفرم خود ندارید. + +برای اطلاعات بیشتر درباره کامپایل روبی از سورس کد، صفحه [نصب و راهاندازی][installation] را ببینید. اگر مشکلی در کامپایل روبی دارید، از یکی از ابزارهای شخصثالث بالا استفاده کنید. آنها ممکن است به شما کمک کنند. + +* **انتشارهای پایدار:**{% for version in site.data.downloads.stable %}{% assign release = site.data.releases | where: "version", version | first %} + * [Ruby {{ release.version }}]({{ release.url.gz }})<br> + sha256: {{ release.sha256.gz }}{% endfor %} + +{% if site.data.downloads.preview %} +* **انتشارهای پیشنمایش:**{% for version in site.data.downloads.preview %}{% assign release = site.data.releases | where: "version", version | first %} + * [Ruby {{ release.version }}]({{ release.url.gz }})<br> + sha256: {{ release.sha256.gz }}{% endfor %} +{% endif %} + +{% if site.data.downloads.security_maintenance %} +* **در مرحله نگهداری امنیتی (به زودی EOL!):**{% for version in site.data.downloads.security_maintenance %}{% assign release = site.data.releases | where: "version", version | first %} + * [Ruby {{ release.version }}]({{ release.url.gz }})<br> + sha256: {{ release.sha256.gz }}{% endfor %} +{% endif %} + +{% if site.data.downloads.eol %} +* **دیگر نگهداری نمیشود (EOL):**{% for version in site.data.downloads.eol %}{% assign release = site.data.releases | where: "version", version | first %} + * [Ruby {{ release.version }}]({{ release.url.gz }})<br> + sha256: {{ release.sha256.gz }}{% endfor %} +{% endif %} + +* **اسنپشاتها:** + * [اسنپشات پایدار]({{ site.data.downloads.stable_snapshot.url.gz }}): + این یک فایل از آخرین اسنپشات شاخه پایدار فعلی است. + * [اسنپشات شبانه]({{ site.data.downloads.nightly_snapshot.url.gz }}): + This is a tarball of whatever is in SVN, made nightly. + This may contain bugs or other issues, use at your own risk! + +For more information about specific releases, particularly older releases +or previews, see the [Releases page][releases]. +Information about the current maintenance status of the various +Ruby branches can be found on the [Branches page][branches]. + +For information about the Ruby Subversion and Git repositories, see our +[Ruby Core](/fa/community/ruby-core/) page. + +The Ruby source is available from a worldwide set of +[Mirror Sites][mirrors]. +Please try to use a mirror that is near you. + + + +[license]: {{ site.license.url }} +[installation]: /fa/documentation/installation/ +[releases]: /fa/downloads/releases/ +[branches]: /fa/downloads/branches/ +[mirrors]: /fa/downloads/mirrors/ +[rvm]: http://rvm.io/ +[rbenv]: https://github.com/rbenv/rbenv +[rubyinstaller]: https://rubyinstaller.org/ diff --git a/fa/downloads/mirrors/index.md b/fa/downloads/mirrors/index.md new file mode 100644 index 0000000000..8111c87bb3 --- /dev/null +++ b/fa/downloads/mirrors/index.md @@ -0,0 +1,67 @@ +--- +layout: page +title: "Mirror Sites" +lang: fa +--- + +{% comment %} +Not to be translated. Link to this page (/en/downloads/mirrors/) instead. +{% endcomment %} + +The Ruby source is available from a worldwide set of mirror sites. +Please try to use a mirror that is near you. +{: .summary} + +### Mirror sites via HTTP + +* [CDN][mirror-https-cdn] (fastly.com) +* Japan (RingServer) + * [shibaura-it.ac.jp][mirror-http-jp-ring-shibaura-it] + * [u-toyama.ac.jp][mirror-http-jp-ring-u-toyama] + * [airnet.ne.jp][mirror-http-jp-ring-airnet] + * [maffin.ad.jp][mirror-http-jp-ring-maffin] +* [Germany][mirror-http-de] (AmbiWeb GmbH) +* [Holland][mirror-http-nl] (XS4ALL) - only release packages +* [Austria][mirror-http-at] (tuwien.ac.at) +* [France][mirror-http-fr] (cyberbits.eu) +* [China 1][mirror-http-cn1] (ruby.taobao.org) +* [China 2][mirror-http-cn2] (Ruby China) + +### Mirror sites via FTP + +* Japan (RingServer) + * [shibaura-it.ac.jp][mirror-ftp-jp-ring-shibaura-it] + * [u-toyama.ac.jp][mirror-ftp-jp-ring-u-toyama] + * [airnet.ne.jp][mirror-ftp-jp-ring-airnet] + * [maffin.ad.jp][mirror-ftp-jp-ring-maffin] +* [Japan 3][mirror-ftp-jp3] (IIJ) +* [South Korea][mirror-ftp-kr] (Korea FreeBSD Users Group) +* [Germany][mirror-ftp-de] (FU Berlin) +* [Greece][mirror-ftp-gr] (ntua.gr) +* [Austria][mirror-ftp-at] (tuwien.ac.at) + +### Mirror sites via rsync + +* [France][mirror-rsync-fr] (cyberbits.eu) + +[mirror-https-cdn]: https://cache.ruby-lang.org/pub/ruby/ +[mirror-http-jp-ring-shibaura-it]: http://ring.shibaura-it.ac.jp/archives/lang/ruby/ +[mirror-http-jp-ring-u-toyama]: http://ring.u-toyama.ac.jp/archives/lang/ruby/ +[mirror-http-jp-ring-airnet]: http://ring.airnet.ne.jp/archives/lang/ruby/ +[mirror-http-jp-ring-maffin]: http://ring.maffin.ad.jp/archives/lang/ruby/ +[mirror-http-de]: http://dl.ambiweb.de/mirrors/ftp.ruby-lang.org/ +[mirror-http-nl]: http://www.xs4all.nl/~hipster/lib/mirror/ruby/ +[mirror-http-at]: http://gd.tuwien.ac.at/languages/ruby/ +[mirror-http-fr]: https://mirror.cyberbits.eu/ruby/ +[mirror-http-cn1]: https://ruby.taobao.org/mirrors/ruby/ +[mirror-http-cn2]: https://cache.ruby-china.com/pub/ruby/ +[mirror-ftp-jp-ring-shibaura-it]: ftp://ring.shibaura-it.ac.jp/pub/lang/ruby/ +[mirror-ftp-jp-ring-u-toyama]: ftp://ring.u-toyama.ac.jp/pub/lang/ruby/ +[mirror-ftp-jp-ring-airnet]: ftp://ring.airnet.ne.jp/pub/lang/ruby/ +[mirror-ftp-jp-ring-maffin]: ftp://ring.maffin.ad.jp/pub/lang/ruby/ +[mirror-ftp-jp3]: ftp://ftp.iij.ad.jp/pub/lang/ruby/ +[mirror-ftp-kr]: ftp://ftp.kr.freebsd.org/pub/ruby/ +[mirror-ftp-de]: ftp://ftp.fu-berlin.de/unix/languages/ruby/ +[mirror-ftp-gr]: ftp://ftp.ntua.gr/pub/lang/ruby/ +[mirror-ftp-at]: ftp://gd.tuwien.ac.at/languages/ruby/ +[mirror-rsync-fr]: rsync://rsync.cyberbits.eu/ruby/ diff --git a/fa/downloads/releases/index.md b/fa/downloads/releases/index.md new file mode 100644 index 0000000000..4385de0419 --- /dev/null +++ b/fa/downloads/releases/index.md @@ -0,0 +1,38 @@ +--- +layout: page +title: "Ruby Releases" +lang: en +--- + +{% comment %} +In development. Not to be translated yet. +{% endcomment %} + +This page lists individual Ruby releases. +{: .summary} + +For information about the current maintenance status of the various +Ruby branches see the +[Branches page](../branches/). + +### Ruby releases by version number + +This is a preliminary list of Ruby releases. +The shown dates correspond to the publication dates of the +English versions of release posts and may differ from the +actual creation dates of the source tarballs. + +<table class="release-list"> +<tr> +<th>Release Version</th> +<th>Release Date</th> +<th>Release Notes</th> +</tr> +{% assign releases = site.data.releases | reverse | sort: "date" | reverse %} +{% for release in releases %} +<tr> +<td>Ruby {{ release.version }}</td> +<td>{{ release.date }}</td> +<td><a href="{{ release.post }}">more...</a></td> +</tr>{% endfor %} +</table> diff --git a/fa/examples/cities.md b/fa/examples/cities.md new file mode 100644 index 0000000000..11977e7ef7 --- /dev/null +++ b/fa/examples/cities.md @@ -0,0 +1,21 @@ +--- +layout: null +--- + +{% highlight ruby %} +# Ruby knows what you +# mean, even if you +# want to do math on +# an entire Array +cities = %w[ London + Shiraz + Paris + Amsterdam + Berlin ] +visited = %w[Berlin Shiraz] + +puts "I still need " + + "to visit the " + + "following cities:", + cities - visited +{% endhighlight %} diff --git a/fa/examples/greeter.md b/fa/examples/greeter.md new file mode 100644 index 0000000000..5b3f830242 --- /dev/null +++ b/fa/examples/greeter.md @@ -0,0 +1,22 @@ +--- +layout: null +--- + +{% highlight ruby %} +# The Greeter class +class Greeter + def initialize(name) + @name = name.capitalize + end + + def salute + puts "Hello #{@name}!" + end +end + +# Create a new object +g = Greeter.new("world") + +# Output "Hello World!" +g.salute +{% endhighlight %} diff --git a/fa/examples/hello_world.md b/fa/examples/hello_world.md new file mode 100644 index 0000000000..f34e698c53 --- /dev/null +++ b/fa/examples/hello_world.md @@ -0,0 +1,17 @@ +--- +layout: null +--- + +{% highlight ruby %} +# The famous Hello World +# Program is trivial in +# Ruby. Superfluous: +# +# * A "main" method +# * Newline +# * Semicolons +# +# Here is the Code: + +puts "Hello World!" +{% endhighlight %} diff --git a/fa/examples/i_love_ruby.md b/fa/examples/i_love_ruby.md new file mode 100644 index 0000000000..eb6b1c74d2 --- /dev/null +++ b/fa/examples/i_love_ruby.md @@ -0,0 +1,17 @@ +--- +layout: null +--- + +{% highlight ruby %} +# Output "I love Ruby" +say = "I love Ruby" +puts say + +# Output "I *LOVE* RUBY" +say['love'] = "*love*" +puts say.upcase + +# Output "I *love* Ruby" +# five times +5.times { puts say } +{% endhighlight %} diff --git a/fa/feeds/news.rss b/fa/feeds/news.rss new file mode 100644 index 0000000000..037150b13d --- /dev/null +++ b/fa/feeds/news.rss @@ -0,0 +1,4 @@ +--- +layout: news_feed +lang: fa +--- diff --git a/fa/index.html b/fa/index.html new file mode 100644 index 0000000000..2b5b82d754 --- /dev/null +++ b/fa/index.html @@ -0,0 +1,38 @@ +--- +layout: homepage +title: روبی زبان برنامه نویسی +lang: fa + +header: | + <!-- //--> + +intro: | + <div id="intro-wrapper"> + <div id="intro"> + <h1>روبی هست...</h1> + + <p> + یک زبان برنامه نویسی پویا و متنباز، که روی سادگی و بهرهوری تمرکز دارد. این زبان دارای دستور زبانی زیبا میباشد که باعث میشود به صورت طبیعی خوانا شود و به سادگی قابل برنامه نویسی باشد. + </p> + + <a href="downloads/" class="download-link">دانلود روبی</a> + یا + <a href="about/">ادامه مطلب...</a> + + </div> + <div id="code"><noscript><div class="highlight"><pre><code class="ruby"> + <span class="c1"># The famous Hello World</span> + <span class="c1"># Program is trivial in</span> + <span class="c1"># Ruby. Superfluous:</span> + <span class="c1">#</span> + <span class="c1"># * A "main" method</span> + <span class="c1"># * Newline</span> + <span class="c1"># * Semicolons</span> + <span class="c1">#</span> + <span class="c1"># Here is the Code:</span> + + <span class="nb">puts</span> <span class="s2">"Hello World!"</span> + </code></pre></div></noscript></div> + </div> + +--- diff --git a/fa/libraries/index.md b/fa/libraries/index.md new file mode 100644 index 0000000000..68e82a61a3 --- /dev/null +++ b/fa/libraries/index.md @@ -0,0 +1,135 @@ +--- +layout: page +title: "کتابخانهها" +lang: fa +--- + +همانطور که بیشتر زبانهای برنامه نویسی، روبی مجموعه گستردهای از کتابخانههای شخصثالث را در اختیار دارد. +{: .summary} + +Nearly all of these libraries are released in the form of a **gem**, +a packaged library or application that can be installed with a tool +called [**RubyGems**][1]. + +RubyGems is a Ruby packaging system designed to facilitate the creation, +sharing and installation of libraries (in some ways, it is a distribution +packaging system similar to, say, `apt-get`, but targeted at Ruby software). +Ruby comes with RubyGems by default since version 1.9, previous +Ruby versions require RubyGems to be [installed by hand][2]. + +Some other libraries are released as archived (.zip or .tar.gz) +directories of **source code**. Installation processes may vary, +typically a `README` or `INSTALL` file is available with instructions. + +Let’s take a look at finding libraries and installing them for your own +use. + +### Finding libraries + +The main place where libraries are hosted is [**RubyGems.org**][1], a public +repository of gems that can be searched and installed onto your machine. +You may browse and search for gems using the RubyGems website, +or use the `gem` command. + +Using `gem search -r`, you can search RubyGems' repository. For +instance, `gem search -r rails` will return a list of Rails-related +gems. With the `--local` (`-l`) option, you would perform a local search +through your installed gems. To install a gem, use `gem install [gem]`. +Browsing installed gems is done with `gem list`. For more +information about the `gem` command, see below or head to +[RubyGems’ docs][3]. + +There are other sources of libraries though. +[**GitHub**][5] is the main Ruby-related content repository. +Most often a gem source code will be hosted on GitHub while being +published as a fully-fledged gem to RubyGems.org. + +[**The Ruby Toolbox**][6] is a project that makes it easy to explore open +source Ruby projects. It has categories for various common development tasks, +collects a lot of information about the projects like release and commit +activity or dependencies and rates projects based on their popularity on +RubyGems.org and GitHub. This makes it easy to find a gem which solves +a particular problem such as web frameworks, documentation tools and +code quality libraries. + +### A few more words about RubyGems + +Here is a quick review of the `gem` command for your daily use. +[More detailed documentation][7] is available, covering all aspects +of this packaging system. + +#### Searching among available gems + +The **search** command can be used to look for gems, based on a string. +Gems which names start with the specified string will be listed in return. +For instance, to search for the “html”-related gems: + +{% highlight sh %} +$ gem search -r html + +*** REMOTE GEMS *** + +html-sample (1.0, 1.1) +{% endhighlight %} + +The `--remote` / `-r` flag indicates that we want to inspect the +official RubyGems.org repository (default behaviour). +With the `--local` / `-l` flag you would perform a local search +among your installed gems. + +#### Installing a gem + +Once you know which gem you would like to **install**, for instance the +popular Ruby on Rails framework: + +{% highlight sh %} +$ gem install rails +{% endhighlight %} + +You can even install just a specific version of the library, using the +`--version` / `-v` flag: + +{% highlight sh %} +$ gem install rails --version 5.0 +{% endhighlight %} + +#### Listing all gems + +For a **list** of all locally installed gems: + +{% highlight sh %} +$ gem list +{% endhighlight %} + +To obtain a (very long) list of all gems available on RubyGems.org: + +{% highlight sh %} +$ gem list -r +{% endhighlight %} + +#### Help! + +Documentation is available inside your terminal: + +{% highlight sh %} +$ gem help +{% endhighlight %} + +For instance, `gem help commands` is very useful as it outputs a list of +all `gem`’s commands. + +#### Crafting your own gems + +RubyGems.org has [several guides][3] about this topic. You may also want +to investigate [Bundler][9], a generic tool which helps you manage an +application’s dependencies and may be used along RubyGems. + + + +[1]: https://rubygems.org/ +[2]: https://rubygems.org/pages/download/ +[3]: http://guides.rubygems.org/ +[5]: https://github.com/ +[6]: https://www.ruby-toolbox.com/ +[7]: http://guides.rubygems.org/command-reference/ +[9]: http://bundler.io/ diff --git a/fa/news/_posts/2001-01-18-stable-snapshot-is-available.md b/fa/news/_posts/2001-01-18-stable-snapshot-is-available.md new file mode 100644 index 0000000000..010fa3889b --- /dev/null +++ b/fa/news/_posts/2001-01-18-stable-snapshot-is-available.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Stable snapshot is available" +author: "Matz" +lang: en +--- + +[Stable snapshot][1] is available. This is tar’ed and gzip’ed file of +the latest stable CVS. It should be better than the last release. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/stable-snapshot.tar.gz diff --git a/fa/news/_posts/2001-04-19-ruby-pocket-reference.md b/fa/news/_posts/2001-04-19-ruby-pocket-reference.md new file mode 100644 index 0000000000..b76fbce42b --- /dev/null +++ b/fa/news/_posts/2001-04-19-ruby-pocket-reference.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Ruby Pocket Reference" +author: "Matz" +lang: en +--- + +O’Reilly finally decided to publish translation of Ruby Pocket +Reference. It will be [full-sized book titled “Ruby in a Nutshell”][1]. + + + +[1]: http://www.ora.com/catalog/ruby diff --git a/fa/news/_posts/2001-06-20-ruby-garden.md b/fa/news/_posts/2001-06-20-ruby-garden.md new file mode 100644 index 0000000000..0734b285d5 --- /dev/null +++ b/fa/news/_posts/2001-06-20-ruby-garden.md @@ -0,0 +1,12 @@ +--- +layout: news_post +title: "Ruby Garden" +author: "Matz" +lang: en +--- + +[Ruby Garden][1] – News Portal for Ruby. + + + +[1]: http://www.rubygarden.org/ diff --git a/fa/news/_posts/2001-07-10-removed-language-comparison-page.md b/fa/news/_posts/2001-07-10-removed-language-comparison-page.md new file mode 100644 index 0000000000..c4b16d05a8 --- /dev/null +++ b/fa/news/_posts/2001-07-10-removed-language-comparison-page.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "Removed language comparison page" +author: "NaHi" +lang: en +--- + +Matz desided to remove the page. + + + + + "I removed the link to the language comparison page, + because there're too many people to take it too serious. + It was supposed to be funny." diff --git a/fa/news/_posts/2001-07-13-ruby-introduction-presentation.md b/fa/news/_posts/2001-07-13-ruby-introduction-presentation.md new file mode 100644 index 0000000000..d12b7a5c46 --- /dev/null +++ b/fa/news/_posts/2001-07-13-ruby-introduction-presentation.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Ruby introduction presentation" +author: "Matz" +lang: en +--- + +[Ruby introduction presentation at New York City CTO club][1] by Jim +Menard on July 10, 2001. + + + +[1]: http://www.io.com/~jimm/downloads/rubytalk/ diff --git a/fa/news/_posts/2002-01-06-ruby-cvs-repository-guide.md b/fa/news/_posts/2002-01-06-ruby-cvs-repository-guide.md new file mode 100644 index 0000000000..1c08d6a908 --- /dev/null +++ b/fa/news/_posts/2002-01-06-ruby-cvs-repository-guide.md @@ -0,0 +1,39 @@ +--- +layout: news_post +title: "Ruby CVS Repository Guide" +author: "Unknown Author" +lang: en +--- + +The source code of Ruby is stored in CVS repositories. You can walk them +around by CVSweb: + +* https://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ + +Anonymous CVS is also available: + + $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src login + (Logging in to anonymous@cvs.ruby-lang.org) + CVS password: + $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/src co ruby + + $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/doc login + (Logging in to anonymous@cvs.ruby-lang.org) + CVS password: + $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/doc co doc + + $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/www login + (Logging in to anonymous@cvs.ruby-lang.org) + CVS password: + $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/www co www + +No password is required. Please just press Enter. + +In addition, CVSup is also available: + +* http://cvs.ruby-lang.org/cvsup/ + +You’ll find “supfiles” here. With them, you can get a part of or a whole +repository by means of CVSup. + +That’s all, folks! Happy hacking! diff --git a/fa/news/_posts/2002-02-01-report-security-issues.md b/fa/news/_posts/2002-02-01-report-security-issues.md new file mode 100644 index 0000000000..bc6d2f9f27 --- /dev/null +++ b/fa/news/_posts/2002-02-01-report-security-issues.md @@ -0,0 +1,11 @@ +--- +layout: news_post +title: "Report Security Issues" +author: "Unknown Author" +lang: en +--- + +Please send a mail to +[security@ruby-lang.org](mailto:security@ruby-lang.org) to report +security issues. Reported problems will be published after fixes. + diff --git a/fa/news/_posts/2002-03-01-167-is-released.md b/fa/news/_posts/2002-03-01-167-is-released.md new file mode 100644 index 0000000000..022939daaa --- /dev/null +++ b/fa/news/_posts/2002-03-01-167-is-released.md @@ -0,0 +1,12 @@ +--- +layout: news_post +title: "1.6.7 is released" +author: "Unknown Author" +lang: en +--- + +The new stable version [1.6.7][1] is released. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.6.7.tar.gz diff --git a/fa/news/_posts/2002-09-18-dutch-translation-of-wwwruby-langorg.md b/fa/news/_posts/2002-09-18-dutch-translation-of-wwwruby-langorg.md new file mode 100644 index 0000000000..9c71324086 --- /dev/null +++ b/fa/news/_posts/2002-09-18-dutch-translation-of-wwwruby-langorg.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Dutch translation of www.ruby-lang.org" +author: "Unknown Author" +lang: en +--- + +[Dutch translation of www.ruby-lang.org][1] is available. Thanks to John +Jacobs. + + + +[1]: http://www.xs4all.nl/~jjacobs/index.html diff --git a/fa/news/_posts/2002-10-24-raa-replaced.md b/fa/news/_posts/2002-10-24-raa-replaced.md new file mode 100644 index 0000000000..fbed2daa68 --- /dev/null +++ b/fa/news/_posts/2002-10-24-raa-replaced.md @@ -0,0 +1,44 @@ +--- +layout: news_post +title: "RAA replaced" +author: "Unknown Author" +lang: en +--- + +We www-admin@ruby-lang.org rewrote current [RAA][1] which got a little +old and rickety. + +Changes: + +* lightweight top page +* iso8859-1 => UTF-8 +* added simple keyword search +* show projects by the specified owner + +SOAP and XML-RPC interfaces will be updated, too. Users of RAA SOAP and +XML-RPC interfaces, please tell me if the problem occurred. I changed +wire format a little. See below; + +* id and owner\_id element are added to each entry. Those two elements + contain positive integer. +* For SOAP interface users only: element url, download and email are + marked as xsd:anyURI type. Those elements will be unmarshalled as a + URI object at client side, not a String object. + +Except SOAP and XML-RPC we are offering a plain XML or RDF file of RAA +information. Those are at http://raa.ruby-lang.org/xml.xml and +http://raa.ruby-lang.org/rdf.xml. You can also get recent information in +RDF format from http://raa.ruby-lang.org/since.mrb + +Users of pragdave’s XML/RDF feed interfaces should use above for a +while. Pragdave’s former interfaces are not updated now because of +replacing RAA DB. Bare in mind some changes are made to these +interfaces, too. See below; + +* \*.xml files are updated in each 15 minutes, not on the fly. +* Charset encoding scheme was changed from iso-8859-1 to UTF-8. +* XML instance format is changed for user’s convenience. + + + +[1]: http://raa.ruby-lang.org/ diff --git a/fa/news/_posts/2002-11-01-my20021101-ruby-conference-2002.md b/fa/news/_posts/2002-11-01-my20021101-ruby-conference-2002.md new file mode 100644 index 0000000000..a95694868e --- /dev/null +++ b/fa/news/_posts/2002-11-01-my20021101-ruby-conference-2002.md @@ -0,0 +1,22 @@ +--- +layout: news_post +title: "Ruby Conference 2002" +author: "NaHi" +lang: en +--- + +(Excerpted from [http://www.rubygarden.org/ruby?RubyIn2002][1].) + +The second annual Ruby Conference was held in November 2002 in Seattle, +WA, USA. + +There were about fifteen presentations, as well as a keynote speech by +Matz. + +Slides of the talks are available at +[http://www.zenspider.com/Languages/Ruby/RubyConf2002/][2]. + + + +[1]: http://www.rubygarden.org/ruby?RubyIn2002 +[2]: http://www.zenspider.com/Languages/Ruby/RubyConf2002/ diff --git a/fa/news/_posts/2002-11-25-ruby-installer-for-windows-at-sourceforge.md b/fa/news/_posts/2002-11-25-ruby-installer-for-windows-at-sourceforge.md new file mode 100644 index 0000000000..58910ce209 --- /dev/null +++ b/fa/news/_posts/2002-11-25-ruby-installer-for-windows-at-sourceforge.md @@ -0,0 +1,28 @@ +--- +layout: news_post +title: "Ruby Installer For Windows at sourceforge" +author: "NaHi" +lang: en +--- + +Now you can get Ruby Installer For Windows from +[http://rubyinstaller.sourceforge.net/][1]. + +Excerpted from the site. + + This is a "one-click", self-contained installer that + comprises the Ruby language itself, dozens of popular + extensions and packages, a syntax-highlighting editor + and execution environment, and a Windows help file that + contains the full text of the book, "Programming Ruby: + The Pragmatic Programmer's Guide". + +It’s a must item for Ruby users on Win32 box. Check also +[usa’s binaries][2] and [eban’s win32 binaries][3] to get +Win32 binaries with dozens of popular extensions. + + + +[1]: http://rubyinstaller.sourceforge.net/ +[2]: http://www.dm4lab.to/~usa/ruby/index_en.html#download +[3]: https://www.ruby-lang.org/~eban/ruby/binaries/ diff --git a/fa/news/_posts/2002-12-05-matzs-slides-at-4-conferences.md b/fa/news/_posts/2002-12-05-matzs-slides-at-4-conferences.md new file mode 100644 index 0000000000..80d28a3a0d --- /dev/null +++ b/fa/news/_posts/2002-12-05-matzs-slides-at-4-conferences.md @@ -0,0 +1,30 @@ +--- +layout: news_post +title: "Matz's Slides at 4 conferences" +author: "NaHi" +lang: en +--- + +Matz’s Slides at Ruby Conference 2002, OOPSLA2002, LL2 and +O+F Kansai (Japanese) are available. + +[Ruby Conference 2002][1] +: Slides: [http://www.rubyist.net/~matz/slides/rc2002/](http://www.rubyist.net/~matz/slides/rc2002/) + +[OOPSLA 2002][2] +: Slides: [http://www.rubyist.net/~matz/slides/oopsla2002/](http://www.rubyist.net/~matz/slides/oopsla2002/) + +[LL2][3] +: Slides: [http://www.rubyist.net/~matz/slides/ll2/](http://www.rubyist.net/~matz/slides/ll2/) + +[KANSAI OPENSOURCE+FREEWARE 2002][4] +: Slides: [http://www.rubyist.net/~matz/slides/of-kansai2002/](http://www.rubyist.net/~matz/slides/of-kansai2002/) + +Last item is in Japanese. +Compare it with LL2 slides in English to learn Japanese. :) + + +[1]: http://www.rubyconf.org/index.php +[2]: http://oopsla.acm.org/ +[3]: http://ll2.ai.mit.edu/ +[4]: http://of.good-day.net/ diff --git a/fa/news/_posts/2002-12-07-raa-2-1-0.md b/fa/news/_posts/2002-12-07-raa-2-1-0.md new file mode 100644 index 0000000000..351fa341e7 --- /dev/null +++ b/fa/news/_posts/2002-12-07-raa-2-1-0.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "RAA.succ!.version #=> 2.1.0" +author: "NaHi" +lang: en +--- + +RAA is upgraded. + +Changes: + +* URL was changed. RAA is at [http://raa.ruby-lang.org/][1] now. Former + URL https://www.ruby-lang.org/en/raa.html is redirected to the new URL. +* Add new page “All” that lists all RAA entries by alphabetical order. +* Show number of projects in each major\_category or minor category in + listing view. We have 753 projects now. Is your stomach full? +* Add AND/OR search option. RAA search is substring search, not a word + search. +* Project’s “name” field is restricted to match + /\\A\[a-z0-9\_-\]\{2,15}\\z/ . + * RAA users can refer a project with a simple name like “druby”. They + don’t have to remember the ID number or a long name like “druby – + distributed ruby”. + * Application owner must specify canonical name(s) of his/her + project(s). + + This field is a freezed (static, const) field. For each existing + entries, I prepared a canonical name created from former name, Project + UNIX Name in sourceforge or filename of its download item. See + [\[ruby-talk:58018\]][2] for your entry. Since I created canonical + names automatically with a script<sup>[1](#fn1)</sup>, some owners + would think that it isn’t a suitable name for their project. So UNTIL + THE END OF THIS <abbr title="2002">YEAR</abbr> owner can change + this “name” field of his/her entry. +* Add new field “short description”. Owners can describe short(63 bytes + or shorter) description here. At now, this field is filled with former + “name” field. Feel free to change this field anytime. +* To add an application entry, you must type pass phrase twice. Don’t + forget your pass phrase. + +\[1\] canonical name generation tool; +https://www.ruby-lang.org/cgi-bin/cvsweb.cgi/app/raa/tool/name\_conv.rb +{: #fn1} + +RAA development team:<br> +NAKAMURA, Hiroshi aka NaHi and U.Nakamura aka usa. + + +[1]: http://raa.ruby-lang.org/ +[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/58018 diff --git a/fa/news/_posts/2002-12-09-raa-xml-interfaces-are-updated.md b/fa/news/_posts/2002-12-09-raa-xml-interfaces-are-updated.md new file mode 100644 index 0000000000..bfabcb8197 --- /dev/null +++ b/fa/news/_posts/2002-12-09-raa-xml-interfaces-are-updated.md @@ -0,0 +1,33 @@ +--- +layout: news_post +title: "RAA XML Interfaces are updated" +author: "NaHi" +lang: en +--- + +Following RAA/2.1, RAA XML Interfaces are updated. + +* SOAP & XML-RPC interface You can get “short\_description” from + Project object. +* plain XML URLs are changed. + * [http://raa.ruby-lang.org/raa-xml.xml][1] + * [http://raa.ruby-lang.org/raa-xml10.xml][2] + + Latter only includes 10 recently updated items. +* RSS/0.91 URLs are changed. + * [http://raa.ruby-lang.org/raa-rdf.xml][3] + * [http://raa.ruby-lang.org/raa-rdf10.xml][4] + + Is there anyone who can help us to serve RSS/1.0 file? +* YAML (not a XML!) + * [http://raa.ruby-lang.org/raa-yaml.yml][5] + * [http://raa.ruby-lang.org/raa-yaml10.yml][6] + + + +[1]: http://raa.ruby-lang.org/raa-xml.xml +[2]: http://raa.ruby-lang.org/raa-xml10.xml +[3]: http://raa.ruby-lang.org/raa-rdf.xml +[4]: http://raa.ruby-lang.org/raa-rdf10.xml +[5]: http://raa.ruby-lang.org/raa-yaml.yml +[6]: http://raa.ruby-lang.org/raa-yaml10.yml diff --git a/fa/news/_posts/2002-12-11-ruby-hacking-guide.md b/fa/news/_posts/2002-12-11-ruby-hacking-guide.md new file mode 100644 index 0000000000..d238a714a2 --- /dev/null +++ b/fa/news/_posts/2002-12-11-ruby-hacking-guide.md @@ -0,0 +1,539 @@ +--- +layout: news_post +title: "\"Ruby Hacking Guide\" is out though ..." +author: "NaHi" +lang: en +--- + +[{: +.icon width="70" height="88"}][cover] A book named “Ruby source code Kanzen +Kaisetsu – Ruby Hacking Guide” by Aoki-san is out though it’s written in +Japanese… + +It’s a must-buy item for Ruby hacker, who can read Japanese. :( + +* Publisher: Impress +* Author: AOKI, Minero under the editorship of MATSUMOTO, Yukihiro +* ISBN: 4-8443-1721-0 + +[cover]: http://direct.ips.co.jp/book/Template/Goods/go_BookstempGR.cfm?GM_ID=1721&SPM_ID=1&CM_ID=004000G20&PM_No=&PM_Class=&HN_NO=00420 + +I tried to translate the table of contents. +Bear in mind that it’s an unofficial translation. + + Preface + i Target reader + ii Construction of this book + iii Environment + ix Web site + x Thanks + 0 Preface + 0.1 The characteristics of Ruby + 0.2 How to hack source code + 0.2.1 Principle + 0.2.2 Analytic technique + 0.2.3 Dynamic analysis + 0.2.4 Static analysis + 0.2.5 History knows everything + 0.2.6 Tool for static analysis + 0.3 Build + 0.3.1 Version + 0.3.2 Getting the source code + 0.3.3 Compile + 0.4 Build details + 0.4.1 configure + 0.4.2 autoconf + 0.4.3 make + 0.5 CVS + 0.5.1 Teach yourself CVS in 50 lines + 0.6 The construction of ruby source code + 0.6.1 Physical structure + 0.6.2 Dividing the source code + 0.6.3 Logical structure + Chapter I: Object + 1. Ruby language minimum + 1.1 Object + 1.1.1 String + 1.1.2 Various literals + 1.1.3 Method call + 1.2 Program + 1.2.1 Top-level + 1.2.2 Local variable + 1.2.3 Constant variable + 1.2.4 Control structure + 1.3 Class and method + 1.3.1 Class + 1.3.2 Class definition + 1.3.3 Method definition + 1.3.4 self + 1.3.5 Instance variable + 1.3.6 Initialize + 1.3.7 Inheritance + 1.3.8 Variable inheritance ... ? + 1.3.9 Module + 1.4 Program II + 1.4.1 Nested constant + 1.4.2 Everything is evaluated + 1.4.3 Scope of local variable + 1.4.4 self as a context + 1.4.5 Loading + 1.5 About the class, more + 1.5.1 About constant continues + 1.5.2 Meta-class + 1.5.3 Meta-object + 1.5.4 Singleton method + 1.5.5 Class variable + 1.6 Global variable + 2. Object + 2.1 The structure of the Ruby object + 2.1.1 Guidelines + 2.1.2 VALUE and object structure + 2.1.3 Embedded objects in VALUE + 2.2 Method + 2.2.1 struct RClass + 2.2.2 Method search + 2.3 Instance variable + 2.3.1 rb_ivar_set() + 2.3.2 generic_ivar_set() + 2.3.3 Gap in the structure + 2.3.4 rb_ivar_get() + 2.4 Object structure + 2.4.1 struct RString + 2.4.2 struct RArray + 2.4.3 struct RRegexp + 2.4.4 struct RHash + 2.4.5 struct RFile + 2.4.6 struct RData + 3. Name and name table + 3.1 st_table + 3.1.1 Outline + 3.1.2 Data structure + 3.1.3 Example of st_hash_type + 3.1.4 st_lookup() + 3.1.5 st_add_direct() + 3.1.6 st_insert() + 3.2 ID and symbol + 3.2.1 From char* to ID + 3.2.2 From ID to char* + 3.2.3 Conversion between VALUE and ID + 4. Class and module + 4.1 Definition of class and method + 4.1.1 Definition of class + 4.1.2 Definition of nested class + 4.1.3 Definition of module + 4.1.4 Definition of method + 4.1.5 Definition of singleton method + 4.1.6 Entry point + 4.2 Singleton class + 4.2.1 rb_define_singleton_method() + 4.2.2 rb_singleton_class() + 4.2.3 Usual class and singleton class + 4.2.4 Compression of rb_singleton_class() + 4.2.5 Compression of rb_make_metaclass() + 4.2.6 What is the singleton class + 4.2.7 Singleton class and instance + 4.2.8 Summary + 4.3 Meta-class + 4.3.1 Inheritance of singleton method + 4.3.2 Singleton class of a class + 4.3.3 The class of the class of the class + 4.3.4 Singleton class and meta-class + 4.3.5 Bootstrap + 4.4 Class name + 4.4.1 Name to class + 4.4.2 Class to name + 4.4.3 Nest level 2 or more + 4.4.4 Anonymous class + 4.5 Include + 4.5.1 rb_include_module (1) + 4.5.2 include_class_new() + 4.5.3 Simulation + 4.5.4 rb_include_module (2) + 5. Garbage Collection + 5.1 Memory image at runtime + 5.1.1 Segment + 5.1.2 alloca() + 5.2 Outline + 5.2.1 What's GC + 5.2.2 What's done in GC + 5.2.3 Mark & sweep + 5.2.4 Stop & copy + 5.2.5 Reference count + 5.3 Object management + 5.3.1 struct RVALUE + 5.3.2 Object heap + 5.3.3 freelist + 5.3.4 add_heap() + 5.3.5 rb_newobj() + 5.4 Mark + 5.4.1 rb_gc_mark() + 5.4.2 rb_gc_mark_children() + 5.4.3 rb_gc() + 5.4.4 Ruby stack + 5.4.5 Register + 5.4.6 Machine stack + 5.4.7 Other root objects + 5.5 Sweep + 5.5.1 Special treatment for NODE + 5.5.2 Finalizer + 5.5.3 rb_gc_force_recycle() + 5.6 Consideration + 5.6.1 Freeing the memory space + 5.6.2 Generational GC + 5.6.3 Compaction + 5.6.4 volatile, countermeasure for GC + 5.7 The timing of the start + 5.7.1 gc.c inside + 5.7.2 In the interpreter + 5.8 Object allocation + 5.8.1 Allocation framework + 5.8.2 Allocation of user defined object + 5.8.3 The problem of the allocation framework + 6. Variable and constant + 6.1 Outline of this section + 6.1.1 Variable of Ruby + 6.1.2 Ruby API for the variable + 6.1.3 The point of this section + 6.2 Class variable + 6.2.1 Reference + 6.3 Constant + 6.3.1 Assignment + 6.3.2 Reference + 6.4 Global variable + 6.4.1 General remarks + 6.4.2 Data structure + 6.4.3 Reference + 7. Security + 7.1 Principle + 7.2 Implementation + Chapter II: Syntactic analysis + 8. Ruby language detailed + 8.1 Literal + 8.1.1 String + 8.1.2 Character + 8.1.3 Regular expression + 8.1.4 Array + 8.1.5 Hash + 8.1.6 Range + 8.1.7 Symbol + 8.1.8 Numerical value + 8.2 Method + 8.2.1 Definition and call + 8.2.2 Value of the method + 8.2.3 Omissible argument + 8.2.4 Omission of parenthesis for argument + 8.2.5 Argument and array + 8.2.6 Various call forms + 8.2.7 super + 8.3 Iterator + 8.3.1 Comparison with the higher order function + 8.3.2 Block local variable + 8.3.3 Iterator syntax + 8.3.4 yield + 8.3.5 Proc + 8.4 Expression + 8.4.1 if + 8.4.2 unless + 8.4.3 and && or || + 8.4.4 Condition arithmetic operator + 8.4.5 while until + 8.4.6 case + 8.4.7 Exception + 8.4.8 Variable and constant + 8.4.9 Assignment + 8.4.10 Self-assignment + 8.4.11 defined? + 8.5 Sentence + 8.5.1 Terminal of the sentence + 8.5.2 if/unless modifier + 8.5.3 while/until modifier + 8.5.4 Class definition + 8.5.5 Method definition + 8.5.6 Singleton method definition + 8.5.7 Singleton class definition + 8.5.8 Multiple assignment + 8.5.9 alias + 8.5.10 undef + 8.6 Others + 8.6.1 Comment + 8.6.2 Embedded document + 8.6.3 Multibyte character + 9. yacc in a day + 9.1 Outline + 9.1.1 Parser and scanner + 9.1.2 Symbol sequence + 9.1.3 Parser generator + 9.2 Grammar + 9.2.1 Grammar file + 9.2.2 What yacc does + 9.2.3 BNF + 9.2.4 Terminal and non-terminal symbol + 9.2.5 Test method + 9.2.6 Empty rule + 9.2.7 Recursive definition + 9.3 Building of the value + 9.3.1 Shift and reduce + 9.3.2 Action + 9.3.3 The value of symbol + 9.3.4 yacc and type + 9.3.5 Connecting the parser and the scanner + 9.3.6 Embedded action + 9.4 Realistic topic + 9.4.1 Collision + 9.4.2 Lookahead + 9.4.3 Operator priority order + 10. Parser + 10.1 Guidelines + 10.1.1 Building of a parser + 10.1.2 Dividing parse.y + 10.2 Grammar rule general remarks + 10.2.1 Coding rule + 10.2.2 Important symbol + 10.2.3 Whole structure + 10.2.4 program + 10.2.5 stmt + 10.2.6 expr + 10.2.7 arg + 10.2.8 primary + 10.2.9 Collision of list + 10.3 Scanner + 10.3.1 Parser rough sketch + 10.3.2 Input buffer + 10.3.3 Token buffer + 10.3.4 yylex() + 10.3.5 String kind + 11. State scanner + 11.1 Outline + 11.1.1 Concrete example + 11.1.2 lex_state + 11.1.3 Reading state scanner + 11.1.4 About the each state + 11.2 Controlling line feed + 11.2.1 Problem + 11.2.2 Implementation + 11.3 Method name which is in reserved word + 11.3.1 Problem + 11.3.2 Method definition + 11.3.3 Method call + 11.3.4 Symbol + 11.4 Modifier + 11.4.1 Problem + 11.4.2 Implementation + 11.5 The collision of do + 11.5.1 Problem + 11.5.2 The solution at the rule level + 11.5.3 The solution at the symbol level + 11.5.4 COND_P() + 11.6 tLPAREN_ARG (1) + 11.6.1 Problem + 11.6.2 Investigation + 11.6.3 In case of 1 argument + 11.6.4 Case 2 or more arguments + 11.7 tLPAREN_ARG (2) + 11.7.1 Problem + 11.7.2 The solution at the rule level + 11.7.3 {} iterator + 11.7.4 do end iterator + 11.7.5 The fact and truth + 12. Building of syntax tree + 12.1 Node + 12.1.1 NODE + 12.1.2 Node type + 12.1.3 File name and line number + 12.1.4 rb_node_newnode() + 12.2 Building of syntax tree + 12.2.1 YYSTYPE + 12.2.2 Scenery with a syntax tree + 12.2.3 Leaf + 12.2.4 Branch + 12.2.5 Trunk + 12.2.6 Two lists + 12.3 Semantic analysis + 12.3.1 Error in action + 12.3.2 value_expr() + 12.3.3 The global image of the value check + 12.4 Local variable + 12.4.1 Definition of the local variable + 12.4.2 Block local variable + 12.4.3 Data structure + 12.4.4 Scope of local variable + 12.4.5 push and pop + 12.4.6 Adding a variable + 12.4.7 Summary of local variable + 12.4.8 Block local variable + 12.4.9 ruby_dyna_vars in the parser + Chapter III: Evaluation + 13. The structure of the evaluator + 13.1 Outline of Chapter III + 13.1.1 What's evaluator + 13.1.2 The characteristics of the ruby evaluator + 13.1.3 eval.c + 13.2 Going from main through ruby_run to rb_eval + 13.2.1 Call graph + 13.2.2 main() + 13.2.3 ruby_init() + 13.2.4 ruby_options() + 13.2.5 ruby_run() + 13.3 rb_eval() + 13.3.1 Outline + 13.3.2 NODE_IF + 13.3.3 NODE_NEWLINE + 13.3.4 Pseudo local variable + 13.3.5 Jump tag + 13.3.6 NODE_WHILE + 13.3.7 Evaluating value of while + 13.4 Exception + 13.4.1 raise + 13.4.2 Global image + 13.4.3 ensure + 13.4.4 rescue + 14. Context + 14.1 Ruby stack + 14.1.1 Context and stack + 14.1.2 ruby_frame + 14.1.3 ruby_scope + 14.1.4 ruby_block + 14.1.5 ruby_iter + 14.1.6 ruby_dyna_vars + 14.1.7 ruby_class + 14.1.8 ruby_cref + 14.1.9 PUSH/POP macros + 14.1.10 Other condition + 14.2 Module definition + 14.2.1 Investigation + 14.2.2 NODE_MODULE + 14.2.3 module_setup() + 14.2.4 Building local variable scope + 14.2.5 Allocating local variable memory space + 14.2.6 TMP_ALLOC() + 14.2.7 Changing target of method definition + 14.2.8 Nested class + 14.2.9 Replacing frames + 14.3 Method definition + 14.3.1 Investigation + 14.3.2 NODE_DEFN + 14.3.3 copy_node_scope() + 14.3.4 rb_add_method() + 14.4 Assignment and reference + 14.4.1 Local variable + 14.4.2 Constant + 14.4.3 Class variable + 14.4.4 Multiple assignment + 15. Method + 15.1 Searching method + 15.1.1 Terminology + 15.1.2 Investigation + 15.1.3 SETUP_ARGS() + 15.1.4 rb_call() + 15.1.5 Method cash + 15.2 Invocation + 15.2.1 rb_call0() + 15.2.2 PUSH_FRAME() + 15.2.3 rb_call0() -- NODE_CFUNC + 15.2.4 rb_call0() -- NODE_SCOPE + 15.2.5 Setting argument + 15.2.6 super + 16. Block + 16.1 Iterator + 16.1.1 Global image + 16.1.2 Push block + 16.1.3 Calling iterator method + 16.1.4 Block invocation + 16.1.5 Target designated jump + 16.1.6 Check of block + 16.2 Proc + 16.2.1 Allocating Proc object + 16.2.2 Copying frames + 16.2.3 Proc invocation + 16.2.4 Block and Proc + 17. Dynamic evaluation + 17.1 Outline + 17.1.1 eval + 17.1.2 module_eval and instance_eval + 17.2 eval + 17.2.1 eval() + 17.2.2 top_local + 17.2.3 Block local variable + 17.3 instance_eval + 17.3.1 Global image + 17.3.2 After inlining + 17.3.3 Before inlining + Chapter IV: Fringes of the evaluator + 18. Loading + 18.1 Outline + 18.1.1 Interface + 18.1.2 Flow of the whole management + 18.1.3 Target of this section + 18.2 Library search + 18.2.1 rb_f_require() + 18.2.2 rb_find_file() + 18.2.3 Load wait + 18.3 Loading Ruby program + 18.3.1 rb_load() + 18.3.2 rb_load_file() + 18.4 Loading extension library + 18.4.1 rb_f_require() -- load_dyna + 18.4.2 Review of linking + 18.4.3 Really dynamic linking + 18.4.4 Dynamic loading API + 18.4.5 dln_load() + 18.4.6 dln_load() -- dlopen() + 18.4.7 dln_load()-- Win32 + 19. Thread + 19.1 Outline + 19.1.1 Ruby interface + 19.1.2 ruby thread + 19.1.3 Is it preemptive? + 19.1.4 Control system + 19.1.5 What is thread switch? + 19.1.6 Method of context switch + 19.1.7 Plan of explanation + 19.2 Trigger + 19.2.1 I/O wait + 19.2.2 Waiting other threads + 19.2.3 Time wait + 19.2.4 Switching due to the time expire + 19.3 Scheduling + 19.3.1 rb_thread_schedule() + 19.3.2 select + 19.3.3 Preparation for select + 19.3.4 Calling select + 19.3.5 Deciding the next thread + 19.3.6 Switching thread + 19.4 Context switch + 19.4.1 Basic line + 19.4.2 rb_thread_save_context() + 19.4.3 rb_thread_restore_context() + 19.4.4 Problem + Final chapter: The future of Ruby + 20.1 Problems to be solved + 20.1.1 Performance of GC + 20.1.2 Parser implementation + 20.1.3 Reusable parser + 20.1.4 Code hiding + 20.1.5 Interpreter object + 20.1.6 Structure of evaluator + 20.1.7 Speed of the evaluator + 20.1.8 Thread implementation + 20.2 ruby2 + 20.2.1 Rite + 20.2.2 Description language + 20.2.3 GC + 20.2.4 Parser + 20.2.5 Evaluator + 20.2.6 Thread + 20.2.7 M17N + 20.2.8 IO + 20.3 Ruby Hacking Guide + 20.3.1 Generational GC + 20.3.2 Oniguruma + 20.3.3 ripper + 20.3.4 Substitutive parser + 20.3.5 JRuby + 20.3.6 NETRuby + 20.3.7 How to participate the development of Ruby + 20.3.8 At the end + Appendix A: Function and macros reference + Appendix B: References + Index + diff --git a/fa/news/_posts/2002-12-16-toward-ruby-langorg-renewal-trial-website-offered.md b/fa/news/_posts/2002-12-16-toward-ruby-langorg-renewal-trial-website-offered.md new file mode 100644 index 0000000000..7e0926390d --- /dev/null +++ b/fa/news/_posts/2002-12-16-toward-ruby-langorg-renewal-trial-website-offered.md @@ -0,0 +1,36 @@ +--- +layout: news_post +title: "Toward ruby-lang.org renewal; trial website offered" +author: "Unknown Author" +lang: en +--- + +We webmasters’ team of ruby-lang.org have reformed our official site +design, so that we can provide natural contents navigation and +just-in-time information about Ruby. + +Now we can offer a trial for a future official site. Here we are: + +> [http://dev.ruby-lang.org/en/][1] + +And here is Japanese site: + +> [http://dev.ruby-lang.org/ja/][2] + +Have a go and look at it. + +Our scheme is a double release with ruby 1.6.8; the switchover of the +site will be in the end of this year, if no critical problems are found. +If you find them, feel free to tell us via this list, or mail directly +to the address below. + +Cheers, + +—ruby-lang.org webmaster team<br> +[webmaster@ruby-lang.org](mailto:webmaster@ruby-lang.org) +{: style="text-align: right"} + + + +[1]: http://dev.ruby-lang.org/en/ +[2]: http://dev.ruby-lang.org/ja/ diff --git a/fa/news/_posts/2002-12-18-color-scheme-of-wwwruby-langorg.md b/fa/news/_posts/2002-12-18-color-scheme-of-wwwruby-langorg.md new file mode 100644 index 0000000000..63ec3ede7a --- /dev/null +++ b/fa/news/_posts/2002-12-18-color-scheme-of-wwwruby-langorg.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "Color scheme of www.ruby-lang.org" +author: "NaHi" +lang: en +--- + +We webmasters decided to change the red only color scheme of this site +following a recommendation in [\[ruby-talk:59202\]][1]. + +You may see somewhat strange color scheme while our CSS development. +Thank you for your kind corporation. + +And we also thank people who are discussing about color scheme on +ruby-talk. + + + +[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/59202 diff --git a/fa/news/_posts/2002-12-24-ruby-1-6-8-and-1-8-0-preview-1.md b/fa/news/_posts/2002-12-24-ruby-1-6-8-and-1-8-0-preview-1.md new file mode 100644 index 0000000000..c72e99a6d4 --- /dev/null +++ b/fa/news/_posts/2002-12-24-ruby-1-6-8-and-1-8-0-preview-1.md @@ -0,0 +1,24 @@ +--- +layout: news_post +title: "Ruby 1.6.8 and 1.8.0 preview 1" +author: "Matz" +lang: en +--- + +I just put the 1.6.8 release package on the ftp. 1.6.8 should be the +last release in the 1.6.x series. Check out + +* [https://cache.ruby-lang.org/pub/ruby/ruby-1.6.8.tar.gz][1] + +I also put the first preview of 1.8.0 at + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.0-preview1.tar.gz][2] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.0-preview1-errata.diff][3] + +Merry Christmas! + + + +[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.6.8.tar.gz +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.0-preview1.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.0-preview1-errata.diff diff --git a/fa/news/_posts/2003-01-07-ruby-in-2002-contents-wanted.md b/fa/news/_posts/2003-01-07-ruby-in-2002-contents-wanted.md new file mode 100644 index 0000000000..99fb9dce4e --- /dev/null +++ b/fa/news/_posts/2003-01-07-ruby-in-2002-contents-wanted.md @@ -0,0 +1,24 @@ +--- +layout: news_post +title: "Ruby In 2002: Contents Wanted" +author: "tamura" +lang: en +--- + +Here on the Ruby Garden Wiki comes [a page][1] to compile Ruby’s year +2002 and plans on 2003. The deadline is January 9. RubyIn2002 +[http://www.rubygarden.org/ruby?RubyIn2002][1] This page supports a +following plan: “The Year in Scripting +Languages(Lua/Perl/Python/Ruby/Tcl)”. The aim of that is to encourage +these scripting language communities to collaborate with each other; its +first step is to know neighbors, which will lead us to be able to share +our efforts on scriptings. The chair person is Mitchell N. Charity. see +also: [\[ruby-talk:60604\]][2], [\[ruby-talk:60731\]][3] Final result +can be seen at [http://www.vendian.org/language\_year/][4]. + + + +[1]: http://www.rubygarden.org/ruby?RubyIn2002 +[2]: http://www.ruby-talk.com/60604 +[3]: http://www.ruby-talk.com/60731 +[4]: http://www.vendian.org/language_year/ diff --git a/fa/news/_posts/2003-01-31-raa-2-3-0.md b/fa/news/_posts/2003-01-31-raa-2-3-0.md new file mode 100644 index 0000000000..ec1eae2c80 --- /dev/null +++ b/fa/news/_posts/2003-01-31-raa-2-3-0.md @@ -0,0 +1,21 @@ +--- +layout: news_post +title: "RAA.succ!.version #=> 2.3.0" +author: "usa" +lang: en +--- + +RAA [Ruby Application Archive][1] has been updated. (see [\[ruby-talk:63170\]][2]) Changes: + +* Change URL: www.ruby-lang.org/raa -> raa.ruby-lang.org. + Access to old URLs should be redirected. +* Add the page to show projects sort by chronologically. +* Introduce “What’s updated” table at the top page. +* Add shortcut search box at top right of each page. +* Combine some sub-categories. [\[ruby-talk:62840\]][3] + + + +[1]: http://raa.ruby-lang.org/ +[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/63170 +[3]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/62840 diff --git a/fa/news/_posts/2003-02-21-first-europeen-ruby-conference.md b/fa/news/_posts/2003-02-21-first-europeen-ruby-conference.md new file mode 100644 index 0000000000..a7ac7db24b --- /dev/null +++ b/fa/news/_posts/2003-02-21-first-europeen-ruby-conference.md @@ -0,0 +1,21 @@ +--- +layout: news_post +title: "First Europeen Ruby Conference" +author: "NaHi" +lang: en +--- + +(MNeumann announced the first European Ruby Conference at +[\[ruby-talk:65418\]][1]. Following is excerpted from the post.) + +> The first European Ruby Conference will be held from Saturday 21th to +> Sunday 22th June at the University of Karslruhe in Germany. +> +> Everyone instested in Ruby is welcome! + +(For more detail about the entrance fee, calling for speakers, +mailing-lists, and so on, see [\[ruby-talk:65418\]][1]) + + + +[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/65418 diff --git a/fa/news/_posts/2003-02-24-happy-birthday-ruby.md b/fa/news/_posts/2003-02-24-happy-birthday-ruby.md new file mode 100644 index 0000000000..f87b500a47 --- /dev/null +++ b/fa/news/_posts/2003-02-24-happy-birthday-ruby.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "Happy Birthday, Ruby" +author: "NaHi" +lang: en +--- + +(dblack posted an article ‘Happy Birthday, Ruby, and an announcement….’ +\[ruby-talk:65632\]. Following is excerpted from the article.) + +> Today, February 24, 2003, is Ruby’s 10th birthday. Happy Birthday, +> Ruby! And congratz to Matz! + +dblack also annouces the new non-profit organization [Ruby Central, +Inc][1] and RubyConf 2003!. See [\[ruby-talk:65632\]][2]. + + + +[1]: http://rubycentral.org +[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/65632 diff --git a/fa/news/_posts/2003-08-04-ruby-180-released.md b/fa/news/_posts/2003-08-04-ruby-180-released.md new file mode 100644 index 0000000000..2dac5e8ae7 --- /dev/null +++ b/fa/news/_posts/2003-08-04-ruby-180-released.md @@ -0,0 +1,32 @@ +--- +layout: news_post +title: "ruby-1.8.0 released!" +author: "sughimsi" +lang: en +--- + +Long time no minor version-up… + +Here is an initial official release of a stable version **ruby 1.8**. + +The _download site_ will lead you to the source code +ruby-1.8.0.tar.gz. Its MD5SUM is: + +<!-- +The [download site][1] will lead you to the source code +ruby-1.8.0.tar.gz. Its MD5SUM is: +--> + +582a65e52598a4a1e9fce523e16e67d6 + +Binaries are going to be there. + +Some features are changed from previous stable version ruby 1.6.x; See +[https://cache.ruby-lang.org/pub/ruby/1.8/changes.1.8.0][2]. + +Thank you matz, and all committers, for all your trouble! + + + +[1]: {{ site.url }}/download-1.8.0.rbx +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/changes.1.8.0 diff --git a/fa/news/_posts/2003-10-01-ruby-conference-2003.md b/fa/news/_posts/2003-10-01-ruby-conference-2003.md new file mode 100644 index 0000000000..c0d79a4bc7 --- /dev/null +++ b/fa/news/_posts/2003-10-01-ruby-conference-2003.md @@ -0,0 +1,21 @@ +--- +layout: news_post +title: "Ruby Conference 2003" +author: "sughimsi" +lang: en +--- + +[Ruby Conference 2003][1] will soon be held in November 14-16, 2003, on +Austin, Texas U.S.A. + +[The registration is open][2]. Sign in! Full registration will be open +until Sunday, October 26. + +See also [\[ruby-talk:83169\]][3], and [\[ruby-talk:84427\]][4]. + + + +[1]: http://rubycentral.org/03/ +[2]: http://rubycentral.org/03/index.rb?dest=start_reg +[3]: http://www.ruby-talk.org/83169 +[4]: http://www.ruby-talk.org/84427 diff --git a/fa/news/_posts/2003-10-30-ruby-181-preview2.md b/fa/news/_posts/2003-10-30-ruby-181-preview2.md new file mode 100644 index 0000000000..35c10f3db1 --- /dev/null +++ b/fa/news/_posts/2003-10-30-ruby-181-preview2.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "ruby 1.8.1 preview2" +author: "Unknown Author" +lang: en +--- + +Today, Matz announced the availability of ruby 1.8.1 preview1 and, +subsequently, [ruby 1.8.1 preview2][1] \|\| [rubyforge mirror][2] As +always, we encourage Rubyists to download this preview release and put +it through its paces. Your testing, bug reports, and patches will lead +to a stable ruby 1.8.1. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.1-preview2.tar.gz +[2]: http://rubyforge.org/project/showfiles.php?group_id=30&release_id=152 diff --git a/fa/news/_posts/2003-11-23-ruby-standard-library-documentation.md b/fa/news/_posts/2003-11-23-ruby-standard-library-documentation.md new file mode 100644 index 0000000000..c53c1b5f28 --- /dev/null +++ b/fa/news/_posts/2003-11-23-ruby-standard-library-documentation.md @@ -0,0 +1,11 @@ +--- +layout: news_post +title: "Ruby Standard Library Documentation" +author: "Unknown Author" +lang: en +--- + +” Documentation for the Ruby 1.8 standard library”: +http://www.ruby-doc.org/stdlib/ is available. This is the HTML from the +RDoc comments resulting from Gavin Sinclair’s stdlib-doc project. + diff --git a/fa/news/_posts/2003-12-05-ruby-181-preview3.md b/fa/news/_posts/2003-12-05-ruby-181-preview3.md new file mode 100644 index 0000000000..1c217dbba8 --- /dev/null +++ b/fa/news/_posts/2003-12-05-ruby-181-preview3.md @@ -0,0 +1,14 @@ +--- +layout: news_post +title: "ruby 1.8.1 preview3" +author: "NaHi" +lang: en +--- + +Ruby 1.8.1 preview3 is out. Go get [ruby 1.8.1 preview3][1] \|\| +[rubyforge mirror][2]. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.1-preview3.tar.gz +[2]: http://rubyforge.org/project/showfiles.php?group_id=30 diff --git a/fa/news/_posts/2003-12-19-new-ruby-change-request-rcr-process.md b/fa/news/_posts/2003-12-19-new-ruby-change-request-rcr-process.md new file mode 100644 index 0000000000..4dd88b1bf5 --- /dev/null +++ b/fa/news/_posts/2003-12-19-new-ruby-change-request-rcr-process.md @@ -0,0 +1,24 @@ +--- +layout: news_post +title: "New Ruby Change Request (RCR) process" +author: "Unknown Author" +lang: en +--- + +In [\[ruby-talk:88503\]][1], David Alan Black announced the launch of +the new official process for RCRs. The new process is the result of +matz’s desire to further formalize the process, as expressed in his +[RubyConf 2003][2] [presentation][3]. + +The new site for Ruby Change Requests is [rcrchive.net][4]. + +Many thanks to [Dave Thomas][5], who facilitated the creation of the RCR +process 3 years ago. + + + +[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/88503 +[2]: http://www.rubyconf.org +[3]: http://www.rubyist.net/%7Ematz/slides/rc2003 +[4]: http://rcrchive.net +[5]: http://pragprog.com/pragdave diff --git a/fa/news/_posts/2003-12-20-oreilly-onlamp-ruby-article.md b/fa/news/_posts/2003-12-20-oreilly-onlamp-ruby-article.md new file mode 100644 index 0000000000..bae9c3f092 --- /dev/null +++ b/fa/news/_posts/2003-12-20-oreilly-onlamp-ruby-article.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "O'Reilly ONLamp Ruby article" +author: "Unknown Author" +lang: en +--- + +Mike Stok has written an excellent [ recap][1] of the 3rd International +Ruby Conference, featured on the front page of O’Reilly’s [ ONLamp][2] +site, entitled “Ruby’s Present and Future”. + +For additional post-conference information, see Jim Weirich’s [ site][3] +or Ryan Davis’s [ Archive][4] of the RubyConf presentations. + + + +[1]: http://www.onlamp.com/pub/a/onlamp/2003/12/18/ruby_con.html +[2]: http://www.onlamp.com +[3]: http://onestepback.org/index.cgi/Tech/Conferences/RubyConf2003 +[4]: http://www.zenspider.com/Languages/Ruby/RubyConf2003.html diff --git a/fa/news/_posts/2003-12-25-ruby-181-is-out.md b/fa/news/_posts/2003-12-25-ruby-181-is-out.md new file mode 100644 index 0000000000..6b19f5a6ee --- /dev/null +++ b/fa/news/_posts/2003-12-25-ruby-181-is-out.md @@ -0,0 +1,24 @@ +--- +layout: news_post +title: "ruby 1.8.1 is out" +author: "sughimsi" +lang: en +--- + +Latest stable release _ruby 1.8.1_ is finally announced: This is +mainly a bug fix release. + +<!-- +Latest stable release [ruby 1.8.1][1] is finally announced: This is +mainly a bug fix release. +--> + +Mirroring volunteers are welcome. The Md5 check sum is + +5d52c7d0e6a6eb6e3bc68d77e794898e ruby-1.8.1.tar.gz + +Thank you matz and all committers. Happy Hacking Holidays. + + + +[1]: {{ site.url }}/cgi-bin/download-1.8.1.mrb diff --git a/fa/news/_posts/2004-01-07-matz-on-craftsmanship.md b/fa/news/_posts/2004-01-07-matz-on-craftsmanship.md new file mode 100644 index 0000000000..82263e3a22 --- /dev/null +++ b/fa/news/_posts/2004-01-07-matz-on-craftsmanship.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "Matz on Craftsmanship" +author: "Unknown Author" +lang: en +--- + +Artima.com is running another [segment][1], (part four) of Bill Venners’ +interview with Matz. Matz talks about becoming a better programmer +through reading code, learning languages, focusing on fundamentals, +being lazy, and considering interfaces. + + + +[1]: http://www.artima.com/intv/craft.html diff --git a/fa/news/_posts/2004-01-17-rss-feed-started.md b/fa/news/_posts/2004-01-17-rss-feed-started.md new file mode 100644 index 0000000000..7845783205 --- /dev/null +++ b/fa/news/_posts/2004-01-17-rss-feed-started.md @@ -0,0 +1,10 @@ +--- +layout: news_post +title: "RSS feed started" +author: "sho" +lang: en +--- + +We just started RSS feed in this site. Check it. +https://www.ruby-lang.org/en/index.rdf + diff --git a/fa/news/_posts/2004-01-29-how-to-write-an-rcr.md b/fa/news/_posts/2004-01-29-how-to-write-an-rcr.md new file mode 100644 index 0000000000..48a886d320 --- /dev/null +++ b/fa/news/_posts/2004-01-29-how-to-write-an-rcr.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "How to write an RCR" +author: "Unknown Author" +lang: en +--- + +For those interested in submitting a [Ruby Change Request][1], Jim +Weirich has written an article on [How to write an RCR][2]. Future RCR +authors should consider it required reading. + + + +[1]: http://rcrchive.net +[2]: http://onestepback.org/index.cgi/Tech/Ruby/WritingRcrs.rdoc diff --git a/fa/news/_posts/2004-02-15-ruby-talk-mailing-posting-policy-change.md b/fa/news/_posts/2004-02-15-ruby-talk-mailing-posting-policy-change.md new file mode 100644 index 0000000000..fb593a5a72 --- /dev/null +++ b/fa/news/_posts/2004-02-15-ruby-talk-mailing-posting-policy-change.md @@ -0,0 +1,14 @@ +--- +layout: news_post +title: "Ruby-talk Mailing Posting Policy Change" +author: "Unknown Author" +lang: en +--- + +The ruby-talk mailing has changed its posting policy. The list now +requires one to be a member before posting a message. This is a change +from the previous “anyone may post” policy. If you’ve sent some recent +list messages, but have not seen them on the list, check if you’re using +an appropriate “from” address, and look for any automated list admin +messages coming back. + diff --git a/fa/news/_posts/2004-02-16-ruby-article-in-linux-journal.md b/fa/news/_posts/2004-02-16-ruby-article-in-linux-journal.md new file mode 100644 index 0000000000..8fb2008c8f --- /dev/null +++ b/fa/news/_posts/2004-02-16-ruby-article-in-linux-journal.md @@ -0,0 +1,16 @@ +--- +layout: news_post +title: "Ruby Article in Linux Journal" +author: "Unknown Author" +lang: en +--- + +The March issue of [Linux Journal][1] has an article by James Britt on +manipulating OpenOffice.org documents using Ruby. Please note that the +article has at least one error: James, who, honestly, really does know +better, incorrectly attributed REXML. The creator/owner of REXML is Sean +Russell. + + + +[1]: http://www.linuxjournal.com/modules.php?op=modload&name=NS-lj-issues/issue119&file=index diff --git a/fa/news/_posts/2004-04-12-ruby-track-and-tutorials-at-oscon.md b/fa/news/_posts/2004-04-12-ruby-track-and-tutorials-at-oscon.md new file mode 100644 index 0000000000..85c10e24df --- /dev/null +++ b/fa/news/_posts/2004-04-12-ruby-track-and-tutorials-at-oscon.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "Ruby Track and Tutorials at OSCON" +author: "Unknown Author" +lang: en +--- + +The [O’Reilly Open Source Convention][1], taking place July 26-30 in +Portland, OR, will include both a [Ruby track][2] and a series of [Ruby +tutorials][3]. This is the first year the Conference has included a Ruby +track. + + + +[1]: http://conferences.oreilly.com/os2004 "OSCON" +[2]: http://conferences.oreillynet.com/pub/w/29/track_ruby.html +[3]: http://conferences.oreillynet.com/pub/w/29/tutorial_ruby.html diff --git a/fa/news/_posts/2004-05-23-rubyconf-2004-pre-registration-is-open.md b/fa/news/_posts/2004-05-23-rubyconf-2004-pre-registration-is-open.md new file mode 100644 index 0000000000..5c7e21d63e --- /dev/null +++ b/fa/news/_posts/2004-05-23-rubyconf-2004-pre-registration-is-open.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "RubyConf 2004 pre-registration is open" +author: "Unknown Author" +lang: en +--- + +Pre-registration is open for the Fourth Annual International Ruby +Conference, to be held in Reston, VA, USA, October 1-3 2004. You can +pre-register, and get more information about the conference, at [the +RubyConf site][1] Even if you’re new to Ruby, have a look—the conference +is designed to be as affordable as possible, and is a good place to +learn more about Ruby and meet other Ruby programmers and enthusiasts. + + + +[1]: http://www.rubycentral.org/conference diff --git a/fa/news/_posts/2004-05-29-heliumruby-langorg-was-cracked.md b/fa/news/_posts/2004-05-29-heliumruby-langorg-was-cracked.md new file mode 100644 index 0000000000..95dd316877 --- /dev/null +++ b/fa/news/_posts/2004-05-29-heliumruby-langorg-was-cracked.md @@ -0,0 +1,27 @@ +--- +layout: news_post +title: "helium.ruby-lang.org was cracked" +author: "Shugo Maeda" +lang: en +--- + +On Fri May 28, we found that someone cracked helium.ruby-lang.org +via CVS. + +Fortunately, the cvs process was running in the chroot environment, +so the affects to other services/contents were not so probable, but +we are confirming it now. +Currently there are no interpolations found out of the chroot +environment. + +The most worrisome contents are the CVS repositories, but these +distributions are not affected at least. + + 5d52c7d0e6a6eb6e3bc68d77e794898e ruby-1.8.1.tar.gz + bf48d49dbd94b5c0eda5f75b3bfbac16 ruby-1.6.8.tar.gz + +The mailing list services are restarted, but CVS/WWW/FTP/RSYNC +are stopped yet, sorry. + +Further information will be provided on https://www.ruby-lang.org/. +For more information, send mail to admin@ruby-lang.org please. diff --git a/fa/news/_posts/2004-06-01-notice-on-ruby-langorg-mailing-list-service-restart.md b/fa/news/_posts/2004-06-01-notice-on-ruby-langorg-mailing-list-service-restart.md new file mode 100644 index 0000000000..771d01c68f --- /dev/null +++ b/fa/news/_posts/2004-06-01-notice-on-ruby-langorg-mailing-list-service-restart.md @@ -0,0 +1,35 @@ +--- +layout: news_post +title: "Notice on ruby-lang.org mailing list service restart" +author: "Shugo Maeda" +lang: en +--- + +Sorry for our delayed report on restart operation on ruby-lang.org +mailing list service. We should account current management of the +lists orderly. + +As reported, we found someone's crack against helium.ruby-lang.org and +immediately stopped various services provided on the site, including +mailing list service. We then surveyed mailing system (fml and related +tools) and configuration files for each lists, and found them +credible: they don't have any sign of tampering. + +Our confirmation however does not totally cover the contents of the +messages posted on the lists before, or archived on +helium.ruby-lang.org, and member lists of the lists. + +Based on the fact, and considering the meaning of the list (as a +medium for communication), we at first filled users' convenience. If +you are reading this mail and are not a member of this 'ruby-foo' +mailing list, feel free to contact its administrator +<ruby-foo-admin@ruby-lang.org>. + +Other inquiries on the list may well accepted via the above +address. Inquiries not related to mailing list shall be referred to +the other address: <admin@ruby-lang.org>. + +A series of announcements, past and future, will continue on +http://www.ruby-lang.org. Sorry for some time inconvenient. + +ruby-lang.org administrators' group diff --git a/fa/news/_posts/2004-06-15-wwwftp-service-restart.md b/fa/news/_posts/2004-06-15-wwwftp-service-restart.md new file mode 100644 index 0000000000..709fb88f6b --- /dev/null +++ b/fa/news/_posts/2004-06-15-wwwftp-service-restart.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "WWW/FTP service restart" +author: "Shugo Maeda" +lang: en +--- + +We have finished the validation on WWW/FTP contents, so we +restarted WWW/FTP services. + +Details of the validation will be reported. + +For a while, the services are subject to pause for maintenance. + +ruby-lang.org administrators' group diff --git a/fa/news/_posts/2004-06-22-anonymous-cvs-service-restart.md b/fa/news/_posts/2004-06-22-anonymous-cvs-service-restart.md new file mode 100644 index 0000000000..536ea309b6 --- /dev/null +++ b/fa/news/_posts/2004-06-22-anonymous-cvs-service-restart.md @@ -0,0 +1,26 @@ +--- +layout: news_post +title: "Anonymous CVS service restart" +author: "Shugo Maeda" +lang: en +--- + +Anonymous CVS service is restarted. + +To get the latest source code of ruby, type following commands: + + $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src login + (Logging in to anonymous@cvs.ruby-lang.org) + CVS password: [Enter] + $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/src co ruby + +No password is required. + +CVSup is also available. You can get supfiles at +http://cvs.ruby-lang.org/cvsup/. + +The CVS repository is checked by ruby-lang.org administrators' group. +Details will be reported. Please wait a while. + +Shugo Maeda <shugo@ruby-lang.org><br /> +ruby-lang.org administrators' group diff --git a/fa/news/_posts/2004-06-24-cvsweb-service-restart.md b/fa/news/_posts/2004-06-24-cvsweb-service-restart.md new file mode 100644 index 0000000000..9c7be405ed --- /dev/null +++ b/fa/news/_posts/2004-06-24-cvsweb-service-restart.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "CVSweb service restart" +author: "Shugo Maeda" +lang: en +--- + +CVSweb service is restarted. +[https://www.ruby-lang.org/cgi-bin/cvsweb.cgi/][1] + + + +[1]: {{ site.url }}/cgi-bin/cvsweb.cgi/ diff --git a/fa/news/_posts/2004-06-29-modules-added-to-the-anonymous-cvs-repository.md b/fa/news/_posts/2004-06-29-modules-added-to-the-anonymous-cvs-repository.md new file mode 100644 index 0000000000..742c7a8c4e --- /dev/null +++ b/fa/news/_posts/2004-06-29-modules-added-to-the-anonymous-cvs-repository.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "modules added to the Anonymous CVS repository" +author: "Shugo Maeda" +lang: en +--- + +These checked modules are added to the Anonymous CVS repository. + +* app +* lib(except soap4r,csv) +* eruby +* oniguruma +* rough +* rubicon +* ruby-parser +* shim +* vms + diff --git a/fa/news/_posts/2004-07-05-added-libsoap4rlibcsvmodruby-old-to-anonymous-cvs.md b/fa/news/_posts/2004-07-05-added-libsoap4rlibcsvmodruby-old-to-anonymous-cvs.md new file mode 100644 index 0000000000..48b7f1719e --- /dev/null +++ b/fa/news/_posts/2004-07-05-added-libsoap4rlibcsvmodruby-old-to-anonymous-cvs.md @@ -0,0 +1,11 @@ +--- +layout: news_post +title: "added lib/soap4r,lib/csv,mod_ruby-old to Anonymous CVS" +author: "Shugo Maeda" +lang: en +--- + +lib/soap4r, lib/csv, mod\_ruby-old were added to the Anonymous CVS +repository. Then, eruby was renamed to eruby-old. mod\_ruby/eruby are +developed on the Subversion repository now. + diff --git a/fa/news/_posts/2004-07-06-suspended-libsoap4r-and-libcsv-again.md b/fa/news/_posts/2004-07-06-suspended-libsoap4r-and-libcsv-again.md new file mode 100644 index 0000000000..43ad5ca47d --- /dev/null +++ b/fa/news/_posts/2004-07-06-suspended-libsoap4r-and-libcsv-again.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "suspended lib/soap4r and lib/csv again" +author: "NaHi" +lang: en +--- + +Anonymous CVS repository for csv(lib/csv) and soap4r(lib/soap4r) were +once released to public at 2004-07-05 15:30:00 JST (2004-07-05 06:30:00 UTC). +But I, the maintainer of these repository, found my checking +process of CVS repository was not enough. So I suspended the +repositories again. Users who checkout these repositories from +<abbr title="2004-07-05 06:30:00 UTC">2004-07-05 15:30:00 JST</abbr> +to <abbr title="2004-07-06 07:30:00 UTC">2004-07-06 16:30:00 JST</abbr> +must check your CVS workspace. I’m sorry +for the trouble this error caused you. I’ll report again after +confirmation of these repositories. csv and soap libraries which are +bundled to ruby’s repository(/src/ruby) were confirmed that it is safe. diff --git a/fa/news/_posts/2004-07-21-ruby-182-preview1-released.md b/fa/news/_posts/2004-07-21-ruby-182-preview1-released.md new file mode 100644 index 0000000000..cbc5aafe7c --- /dev/null +++ b/fa/news/_posts/2004-07-21-ruby-182-preview1-released.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "ruby 1.8.2 preview1 released" +author: "Shugo Maeda" +lang: en +--- + +[ruby 1.8.2 preview1][1] was released. + +md5sum is 6cc070a768996f784fc7480d1c61bc85. + +You can download it at: + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview1.tar.gz][1] + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview1.tar.gz diff --git a/fa/news/_posts/2004-07-22-incident-analysis-of-the-intrusion-on-heliumruby-langorg.md b/fa/news/_posts/2004-07-22-incident-analysis-of-the-intrusion-on-heliumruby-langorg.md new file mode 100644 index 0000000000..0bb3373833 --- /dev/null +++ b/fa/news/_posts/2004-07-22-incident-analysis-of-the-intrusion-on-heliumruby-langorg.md @@ -0,0 +1,428 @@ +--- +layout: news_post +title: "Incident Analysis of the intrusion on helium.ruby-lang.org" +author: "Shugo Maeda" +lang: en +--- + +As already reported, helium.ruby-lang.org, which is one of the servers +that provided various services relevant to Ruby development, was cracked +by an unauthorized user. We, the ruby-lang.org administrators, are +reporting our analysis of this intrusion and the countermeasures we've +taken. + +## Time-line of the incident + +The time progression about the intrusion is shown below. +Each time is in UTC. + + 19 May The public disclosure of a vulnerability of CVS + (CAN-2004-0396) is announced. We believe that this + vulnerability was used in this intrusion. + 20 May 02:46 The Debian CVS package of the host helium.ruby-lang.org + (hereafter called 'helium') is upgraded. However, the + chrooted CVS package, which provided the actual pserver, + is overlooked. + 23 May 11:15 Oldest (corroborated) time stamp of the trace of intrusion + 27 May 19:03 Opening of the back-door installed by the invader + 28 May 09:26 A ruby-lang.org administrator discovers a trace of the + intrusion. + 28 May 09:35 Administrator disconnects 'helium' from network. + 28 May 11:53 Administrator reboots 'helium' and resumes mailing list + services. + 29 May 07:28 Our first announcement about this intrusion. + +## Machines and services of the time + +Ruby-related services were offered by the following two machines at the +time of intrusion. + +helium.ruby-lang.org +: The following services were provided by 'helium'. + + * CVS (cvs.ruby-lang.org) + * HTTP (www.ruby-lang.org/raa.ruby-lang.org) + * FTP (ftp.ruby-lang.org) + * RSYNC (for mirror sites) + * ML (<ML name>@ruby-lang.org) + +hydrogen.ruby-lang.org (hereafter called 'hydrogen') +: The following services were provided by 'hydrogen'. + + * HTTP (www.rubyist.net) + * NFS (to export /home to 'helium') + +## Details of intrusion + +On 'helium', the pserver service was offered under anoncvs user +permissions in a chroot environment. This CVS service was used for +development of Ruby, and multiple committers had their own accounts. +Public read-only CVS access was allowed via the 'anonymous' user +account. + +As mentioned above, the vulnerability of CVS was announced on 19 May. +Although the Debian CVS package of 'helium' was upgraded on 20 May, the +CVS package of the chroot environment was not upgraded. + +Under these circumstances, an administrator of 'helium' discovered +dubious processes of anoncvs on 28 May, 09:26 (UTC). More than one +suspicious, executable files were discovered to have been installed by +intruder(s), including a program creating a back-door listening on TCP +port #54320. This back-door program was running at the time of the +discovery of the intrusion. The "Time-line" time mentioned above was +determined by the output of the 'ps' command, and by the time stamp of +the intrusive executable file. We should note here that all external +connections to the back-door were prevented by the Linux kernel's IP +packet filtering feature. + +Another note: usually, the pserver process creates a temporary directory +(/tmp/cvs-serv<Process ID>) for each session and deletes it at the end +of the session. At the time of the intrusion, more than one temporary +directories were left in the /tmp directory of the chroot environment. +This suggests that pserver processes were terminated abnormally, perhaps +by the attack of the intruder(s). Of the time stamps of these temporary +directories, the oldest is of 23 May, 11:15 (UTC). The "Time-line" time +mentioned above was determined by this time stamp. Comparing time +stamps of these directories with the pserver session log, it appears +that there were multiple, independent crackers who attacked the +vulnerability. + +This evidence indicates that intruder(s) were exploiting the CVS +vulnerability and received anoncvs user permission on 'helium'. +Intruder(s) could acquire, alter and destroy all information within the +chroot environment. + +Evidence such as the seizing of other accounts, local privilege +escalation, or intrusion to outside of the chroot environment has, to +date, not been found. + +## The possibility of intrusion outside of the chroot environment + +In order for intruders to break chroot protection, promotion to a +privilege user is required. + +At the time of the intrusion, the Linux kernel running on 'helium' was +version 2.4.24. The patch for the vulnerability (backported from kernel +version 2.4.25) had been applied. However, the patch for setsockopt(2) +vulnerability fixed in kernel 2.4.26 had not been applied. + +Code for a DoS attack exploiting a vulnerable setsockopt(2) has been +exhibited, but it is considered difficult to successfully achieve a +local privilege escalation from this. It appears to be impossible to +achieve privilege escalation if the intruder is unable to get the kernel +image of the target environment. On 'helium', the kernel was not from a +binary package, but was built from source code with individually applied +patches. Therefore, the possibility that the intruder was able to +achieve privilege promotion is considered minimal. + +## Restoration of services + +With the first investigation, we inferred that the intrusion was +probably only within the chroot environment. At first we decided to +resume the mailing list service on 'helium', because the impact of a +suspension of mail service, from the users' point of view, was +considered the largest. After checking that there was no alteration of +the binary package, and also that there was no suspicious settings in +the configuration files, we restored the mailing list service. + +We then began the confirmation work for resuming other services on +'helium', but soon decided instead to thoroughly reconstruct the machine +and resume services individually after each was checked. This decision +was made because of the difficulty of inspecting the large number of +files. + +To restore the service, we needed a machine used as substitute for +'helium'. We decided to use 'hydrogen' which hosted www.rubyist.net. +'Hydrogen' did not offer pserver service and no trace of intrusion was +found on the machine, but 'hydrogen' provided /home as NFS-mounted +filesystem to 'helium'. To ensure that hydrogen was not compromised, we +re-installed the OS of 'hydrogen', and set the host name to 'lithium'. +Then we moved the mailing list service from 'helium' to 'lithium', +together with the intrusion announcement page of the web site. + +Next, we re-installed OS of 'helium', and set the host name to +'beryllium'. We plan to migrate all public services to 'beryllium' in +the future. + +## Machines and services at present + +At present, Ruby-related services are offered by the following two +machines. + +lithium.ruby-lang.org +: The following services are provided by lithium.ruby-lang.org. + + * CVS (for committers development, no public access) + * Mailing list (the move to 'beryllium' is planned) + +beryllium.ruby-lang.org +: The following services are provided by beryllium.ruby-lang.org. + + * HTTP (www.ruby-lang.org/raa.ruby-lang.org/www.rubyist.net) + * FTP (ftp.ruby-lang.org) + * Anonymous CVS (cvs.ruby-lang.org) + +## Verification of the contents of each service + +We will hereafter explain the results of our efforts to evaluate +whether there was any alteration or destruction of services +by the intruders. + +### Precondition + +The oldest evidence that we have of the intrusion is from 23 May, and +this has been corroborated; since this trace could have been deleted by +the intruder(s) with anoncvs user permission, we were not able to +conclude that this was the first day of the intrusion. Since the +evidence of the intrusion was from the CVS vulnerability, and since no +other vulnerability which could have been exploited for intrusion into +'helium' is known, we are confident that the intruder(s) abused the CVS +vulnerability and thereby gained access to 'helium'. + +Our verification of alteration or destruction in the services was based +on the assumption that the first intrusion would prove to be after 19 +May, when the CVS vulnerability CAN-2004-0396 was publicly announced. + +### CVS + +Since the intruders are supposed to have gained anoncvs user +permissions, we were most suspicious and anxious about possible damage +to CVS among all of the services on 'helium'. + +At the time of intrusion, there was the following four CVS repositories. + +/src +: Source code + +/www +: Data of WWW + +/doc +: Document + +/admin +: The management file for CVS + +Among these, /www and /doc needed no verification, since their contents +were already unused. Moreover, we decided to suspend use of /admin, and +simply dropped it. + +What we explain hereafter are the results of verification of the +source code of Ruby and of each other module included in /src. + +### The source code of Ruby + +We split possible CVS repository alternations into two categories: + +(1) Alteration of historical data in files in the CVS repository prior + to 19 May + +(2) Alteration which camouflaged the regular submissions after 19 May + +For (1), we checked files in the CVS repository by the log of cvsup +after 19 May which were kept securely outside of 'helium'. We verified +that there has been no sign of alteration of files in the CVS +repository. For (2), we checked all contents of the commits +individually and confirmed the absence of any malicious code after 19 +May. This means that not only is there no malicious code, but also that +we verified each commit with the committer. + +Our verification was supported by data in the following URL. + +* Log of cvsup<br /> + https://www.ruby-lang.org/check-data/cvs/cvsup-log/ +* Contents of the commits from 19 May to 28 May<br /> + https://www.ruby-lang.org/check-data/cvs/cvs-diff/ + +Moreover, in addition to the above-mentioned material, we did the +following supplemental work: + +* We confirmed there was no inconsistency between files in the CVS + repository on 'helium' and files in an exterior, secure server on 21 + May. +* We confirmed there was no inconsistency within the CVS snapshots + from 2003-11-02 to 2004-05-27 (day by day) and snapshots created from + the CVS repository on 'helium'. + +We concluded that there was no alteration or destruction of the source +code of ruby in the CVS repository. + +#### Modules other than the source code of Ruby + +In addition to the source code of Ruby, the /src directory of the CVS +repository has the following modules: + + * app + * lib + * rough + * rubicon + * ruby-parser + * shim + * vms + * pocketruby + * oniguruma + * mod_ruby + * eruby + +First, we found that only the following files were changed after 19 May +by comparing the ctime of the files of the repository with the times of +the files copied to the external server by CVSup: + + * lib/csv/lib/csv.rb,v + * lib/csv/tests/csv_ut.rb,v + * lib/soap4r/lib/wsdl/xmlSchema/parser.rb,v + * lib/soap4r/lib/wsdl/xmlSchema/complexContent.rb,v + * lib/soap4r/lib/wsdl/parser.rb,v + * mod_ruby/lib/apache/eruby-run.rb,v + * mod_ruby/lib/apache/erb-run.rb,v + * mod_ruby/ChangeLog,v + +Second, we compared the copied CVS repository with the CVS repository on +'helium', and we confirmed that there was no inconsistency among them, +except for binary files in 'pocketruby'. Since we had already merged +'wince' in ruby's main branch, we did not do further check on pocketruby +and have ceased offering its source code. + +Each of the files which were changed after 19 May are mentioned below. + +lib/csv/lib/csv.rb,v +lib/csv/tests/csv_ut.rb,v +lib/soap4r/lib/wsdl/xmlSchema/parser.rb,v +lib/soap4r/lib/wsdl/xmlSchema/complexContent.rb,v +lib/soap4r/lib/wsdl/parser.rb,v +: We are unsure about these files. lib/csv and lib/soap4r are already + merged with ruby, and these modules are only used by the maintainers + of each. lib/csv and lib/soap4r have been removed from the CVS + repository, and will be developed elsewhere. + +mod_ruby/lib/apache/eruby-run.rb,v +mod_ruby/lib/apache/erb-run.rb,v +: All revisions including branches had been checked, and no problems + were found. They were each compared with the released source + packages, and it has been confirmed that there are no + inconsistencies. + +mod_ruby/ChangeLog,v +: Usual changes of a ChangeLog file are additions of the content(s). + The ChangeLog can be checked with the following methods: + + (1) We confirmed that there is no problem in the first revision. + + (2) We confirmed that there is no problem in the newest revision. + + (3) We confirmed all revisions which include changes, not only + additions. + + Moreover, we compared it with the released source packages, and it + has been verified that there are no inconsistencies. + +In addition, the development of mod_ruby and eruby has moved to +Subversion, so those CVS module names have been changed to mod_ruby-old +and eruby-old. + +### HTTP (www.ruby-lang.org) + +https://www.ruby-lang.org/{ja, en}/ is generated by tDiary. We performed +the following in order to check that there are no problems executing the +tDiary CGI program: + + * Confirmation of the absence of suspicious code in the CGI programs + * Verification of code in `<script>` elements embedded in the contents + * Confirmation of the absence of suspicious data in the configuration files + +Moreover, we checked the contents and linked URLs, but no problem is +found. If any problems are found, please contact to +webmaster@ruby-lang.org. + +### On-line reference manual + +On-line reference manual was on RWiki. We first restored the contents on +29 Feb, then applied the patches mailed to external e-mail accounts on +29 Feb. Then we compared it with the contents on 'helium'. + +The diff can be obtained from: + + https://www.ruby-lang.org/check-data/ruby-man/man-rd-ja.diff + +The difference of Base64.rd comes from new-lines inserted when receiving +the mail. trap%3A%3ANilClass.rd.rej was rejected, because the same patch +applied twice. The diff script compared files with files from 61 minutes +prior, so the same patch sent twice. + +We confirmed none of them were affected by the intrusion. + +### RAA + +We did the following data verification. + +* We made a daily diff of RAA data from 1) the clean RAA data copy + backed up on 27 Mar, 2) daily backups from 4 Apr to 28 May, and 3) the + latest RAA data of 28 May. + + 2) and 3) are located in a chroot protected area on the machine. + 1) is clean because it is kept in a development environment. + + * RAA data update:<br /> + http://raa.ruby-lang.org/announce/soapbox-diff-all-passphrasemask.txt + * RAA new entry:<br /> + http://raa.ruby-lang.org/announce/soapbox-new-passphrasemask.txt + +* We confirmed the absence of suspicious data in the above diffs. + +It can be concluded that the RAA data of 28 May (the same data we use +for RAA service restart) does not include any suspicious data. +We therefore decided to restart the RAA service as it was on 28 May. We +cannot offer assurances that normal-looking changes by the intruder do not +exist. For example, the change of sampleproject on 18 May is as +follows; + + == sampleproject + - updated: Sun May 09 12:35:19 GMT+9:00 2004 + + updated: Mon May 17 13:00:38 GMT+9:00 2004 + - version: 0.0.8 + + version: 0.1.1 + +None of this data is suspect, but it is possible that the changes were +made by the intruder. Therefore, we request that each RAA project owner +CHECK THEIR RAA ENTRIES AND UPDATE THEM FOR CONFIRMATION. To do this, +take the following steps: + +(1) Open the project page + +(2) Check the project information + +(3) Go to the "update" page + +(4) Press the "submit" button (do this even if no update is needed -- + this step is for confirmation) + +Please contact raa-admin@ruby-lang.org if you find any suspicious data +in RAA, or you have any question. Thank you for your cooperation. + +### FTP + +We compared md5sum values of files on FTP with the files kept in the +exterior, secure server, and there were no differences. + +However, we could not check the following directories. Consequently, +they are not currently provided. + + /pub/ruby/contrib/ + /pub/ruby/doc/ + /pub/ruby/snapshots/ + /pub/ruby/ML/ + /pub/ruby/shim/ + +If you need files in these directories, please contact +ftpadmin@ruby-lang.org. + +### Mailing list + +We investigated the configuration files of each mailing list, and found +no issues. However, member lists and mail archives have not been +thoroughly checked. + +If you have any problems, please contact to <ML name>-admin@ruby-lang.org. + +Shugo Maeda <shugo@ruby-lang.org><br /> +ruby-lang.org administrators' group diff --git a/fa/news/_posts/2004-07-30-ruby-182-preview2-released.md b/fa/news/_posts/2004-07-30-ruby-182-preview2-released.md new file mode 100644 index 0000000000..c453c05d67 --- /dev/null +++ b/fa/news/_posts/2004-07-30-ruby-182-preview2-released.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "ruby 1.8.2 preview2 released" +author: "Shugo Maeda" +lang: en +--- + +[ruby 1.8.2 preview2][1] was released. + +md5sum is f40dae2bd20fd41d681197f1229f25e0. + +You can download it at: + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview2.tar.gz][1] + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview2.tar.gz diff --git a/fa/news/_posts/2004-07-31-rubyconf-2004-registration-now-open.md b/fa/news/_posts/2004-07-31-rubyconf-2004-registration-now-open.md new file mode 100644 index 0000000000..bd92731b56 --- /dev/null +++ b/fa/news/_posts/2004-07-31-rubyconf-2004-registration-now-open.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "RubyConf 2004 registration now open" +author: "David Black" +lang: en +--- + +Registration for [RubyConf 2004][1] is now open. You can register +[here][2]. The conference will be held in Chantilly, Virginia, USA, +October 1-3. Speakers will be announced soon; check the [conference +website][1] for updates. RubyConf 2004 is a production of [Ruby Central, +Inc.][3] + + + +[1]: http://www.rubycentral.org/conference +[2]: http://www.rubycentral.org/conference/register.html +[3]: http://rubycentral.org diff --git a/fa/news/_posts/2004-08-08-brad-cox-to-keynote-rubyconf-2004.md b/fa/news/_posts/2004-08-08-brad-cox-to-keynote-rubyconf-2004.md new file mode 100644 index 0000000000..49fbd0e94d --- /dev/null +++ b/fa/news/_posts/2004-08-08-brad-cox-to-keynote-rubyconf-2004.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "Brad Cox to keynote RubyConf 2004" +author: "David Black" +lang: en +--- + +Brad Cox, creator of Objective-C, will deliver the keynote address at +this year’s [International Ruby Conference][1] (RubyConf 2004). A +leading expert on dynamic programming languages, Brad will speak on “The +History and Design of Objective-C”. [Registration for RubyConf 2004][2] +is still open. + + + +[1]: http://www.rubycentral.org/conference +[2]: http://www.rubycentral.org/conference/register.html diff --git a/fa/news/_posts/2004-09-18-korean-translation-of-wwwruby-langorg.md b/fa/news/_posts/2004-09-18-korean-translation-of-wwwruby-langorg.md new file mode 100644 index 0000000000..685cfc20d7 --- /dev/null +++ b/fa/news/_posts/2004-09-18-korean-translation-of-wwwruby-langorg.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Korean translation of www.ruby-lang.org" +author: "Shugo Maeda" +lang: en +--- + +[Korean translation of www.ruby-lang.org][1] is available. Thanks to +Bryan Kang. + + + +[1]: http://cafe.naver.com/ruby/ diff --git a/fa/news/_posts/2004-09-22-ruby-forum.md b/fa/news/_posts/2004-09-22-ruby-forum.md new file mode 100644 index 0000000000..78532ec5fe --- /dev/null +++ b/fa/news/_posts/2004-09-22-ruby-forum.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "Ruby Forum" +author: "Shugo Maeda" +lang: en +--- + +A link to [Ruby Forum][1] was added to [Community](/en/community/) +Alexey Verkhovsky saids, \`Ruby Forum is a newly created bulletin board +for discussing Ruby. Unlike ruby-talk mailing list, it allows anonymous +posting and implements more understandable interface for searching. +Intended target audience of this forum is newcomers to Ruby that are not +committed enough to subscribe to a 100+ posts/day mailing list.’ + + + +[1]: http://www.ruby-forum.org/bb diff --git a/fa/news/_posts/2004-09-29-rsync-service-restart.md b/fa/news/_posts/2004-09-29-rsync-service-restart.md new file mode 100644 index 0000000000..acfbc8ae19 --- /dev/null +++ b/fa/news/_posts/2004-09-29-rsync-service-restart.md @@ -0,0 +1,10 @@ +--- +layout: news_post +title: "RSYNC service restart" +author: "Shugo Maeda" +lang: en +--- + +RSYNC service is restarted. +[rsync://ftp.ruby-lang.org/](rsync://ftp.ruby-lang.org/) + diff --git a/fa/news/_posts/2004-11-08-182-preview3-released.md b/fa/news/_posts/2004-11-08-182-preview3-released.md new file mode 100644 index 0000000000..d46e63b2fb --- /dev/null +++ b/fa/news/_posts/2004-11-08-182-preview3-released.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "1.8.2 preview3 released" +author: "usa" +lang: en +--- + +Matz announced that [ruby 1.8.2 preview3][1] was released +([ruby-core:03694](ruby-core:03694)). + +md5sum is 64478c70a44a48af1a1c256a43e5dc61. + +You can download it at: + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview3.tar.gz][1] + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview3.tar.gz diff --git a/fa/news/_posts/2004-12-02-ruby-codefest-grant-program-announced-by-ruby-central-inc.md b/fa/news/_posts/2004-12-02-ruby-codefest-grant-program-announced-by-ruby-central-inc.md new file mode 100644 index 0000000000..a657a2cba0 --- /dev/null +++ b/fa/news/_posts/2004-12-02-ruby-codefest-grant-program-announced-by-ruby-central-inc.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "Ruby Codefest Grant Program announced by Ruby Central, Inc." +author: "David Black" +lang: en +--- + +[Ruby Central, Inc.][1] has announced its first Ruby Codefest Grant +Program. This program is designed to provide support for local and +regional groups working on development of Ruby libraries. (See [full +text of the announcement][2].) You can [apply for a grant][3] on behalf +of your group. + + + +[1]: http://rubycentral.org +[2]: http://www.rubycentral.org/grant/announce.html +[3]: http://www.rubycentral.org/grant/application.html diff --git a/fa/news/_posts/2004-12-19-pragmatic-bookshelf-planning-a-series-of-ruby-books.md b/fa/news/_posts/2004-12-19-pragmatic-bookshelf-planning-a-series-of-ruby-books.md new file mode 100644 index 0000000000..ced5d97294 --- /dev/null +++ b/fa/news/_posts/2004-12-19-pragmatic-bookshelf-planning-a-series-of-ruby-books.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "Pragmatic Bookshelf planning a series of Ruby books" +author: "David Black" +lang: en +--- + +“Programming Ruby” author Dave Thomas of the Pragmatic Programmers +announced plans for a series of Ruby books from the Pragmatic Bookshelf +(the Pragmatic Programmers’ own imprint). “The intent is to create a +series of books with a deeply practical focus. We won’t just document +APIs. Instead, we want to show how to get *value* from those APIs—-how +to solve real-world problems.” + +See [the full announcement][1] for more information, including follow-up +guidelines for potential authors. + + + +[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/123137 diff --git a/fa/news/_posts/2004-12-22-182-preview4-released.md b/fa/news/_posts/2004-12-22-182-preview4-released.md new file mode 100644 index 0000000000..60786ad934 --- /dev/null +++ b/fa/news/_posts/2004-12-22-182-preview4-released.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "1.8.2 preview4 released" +author: "usa" +lang: en +--- + +Matz announced that [ruby 1.8.2 preview4][1] was released +([ruby-core:04000](ruby-core:04000)). + +md5sum is 2f53d4dc4b24e37799143645772aabd0. + +You can download it at: + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview4.tar.gz][1] + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview4.tar.gz diff --git a/fa/news/_posts/2004-12-25-chinese-translation-of-wwwruby-langorg.md b/fa/news/_posts/2004-12-25-chinese-translation-of-wwwruby-langorg.md new file mode 100644 index 0000000000..6641e4c30b --- /dev/null +++ b/fa/news/_posts/2004-12-25-chinese-translation-of-wwwruby-langorg.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Chinese translation of www.ruby-lang.org" +author: "Shugo Maeda" +lang: en +--- + +[Chinese translation of www.ruby-lang.org][1] is available now. Thanks, +KOBAYASHI Toshihito. + + + +[1]: http://rubycn.ce-lab.net/ diff --git a/fa/news/_posts/2004-12-26-ruby-182-released.md b/fa/news/_posts/2004-12-26-ruby-182-released.md new file mode 100644 index 0000000000..9b81083456 --- /dev/null +++ b/fa/news/_posts/2004-12-26-ruby-182-released.md @@ -0,0 +1,22 @@ +--- +layout: news_post +title: "Ruby 1.8.2 released!" +author: "maki" +lang: en +--- + +Matz announced that ruby 1.8.2 was released +([ruby-talk:124413](ruby-talk:124413) and +[ruby-talk:124434](ruby-talk:124434)). + +This is mainly a bug fix release. You can download it at: + +* [https://cache.ruby-lang.org/pub/ruby/ruby-1.8.2.tar.gz][1] + +md5sum is 8ffc79d96f336b80f2690a17601dea9b + +Merry Christmas! + + + +[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.8.2.tar.gz diff --git a/fa/news/_posts/2005-02-20-ruby-weekly-news.md b/fa/news/_posts/2005-02-20-ruby-weekly-news.md new file mode 100644 index 0000000000..09770a64c7 --- /dev/null +++ b/fa/news/_posts/2005-02-20-ruby-weekly-news.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "Ruby Weekly News" +author: "chad" +lang: en +--- + +Tim Sutherland [announced][1] the latest publication of the [Ruby Weekly +News][2]. The Ruby Weekly News is a weekly summary of the [ruby-talk][3] +mailing list. Tim recently resurrected it after an extended hiatus. The +Ruby Weekly News is a great way to stay in touch with what’s happening +in the world of ruby-talk as its volume continues to grow. Many thanks +to Tim for this valuable resource! + + + +[1]: http://ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/131807 +[2]: http://rubygarden.org/ruby/ruby?RubyNews/2005-02-14 +[3]: http://www.ruby-talk.org diff --git a/fa/news/_posts/2005-03-11-rubycentral-codefest-grants-announced.md b/fa/news/_posts/2005-03-11-rubycentral-codefest-grants-announced.md new file mode 100644 index 0000000000..118b3404dd --- /dev/null +++ b/fa/news/_posts/2005-03-11-rubycentral-codefest-grants-announced.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "RubyCentral CodeFest Grants Announced" +author: "chad" +lang: en +--- + +Ruby Central [announced][1] the the recipients of its first [CodeFest +Grant Program][2]. Five projects were awarded funding to support +regional coding sessions, whose aim are to build working Ruby code to +fill a void in the landscape of available Ruby libraries. +Congratulations to the recipients! + + + +[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/133197 +[2]: http://www.rubycentral.org/grant/announce.html diff --git a/fa/news/_posts/2005-03-23-rubyconf-2005-preregistration-now-open.md b/fa/news/_posts/2005-03-23-rubyconf-2005-preregistration-now-open.md new file mode 100644 index 0000000000..a8b6f8d40e --- /dev/null +++ b/fa/news/_posts/2005-03-23-rubyconf-2005-preregistration-now-open.md @@ -0,0 +1,16 @@ +--- +layout: news_post +title: "RubyConf 2005 Preregistration now open" +author: "Unknown Author" +lang: en +--- + +Preregistration for the upcoming Fifth Annual International Ruby +Conference (RubyConf 2005) is now open. RubyConf 2005 will be held in +San Diego, CA, October 14-16. You can preregister [here][1]. The full +announcement is [here][2]. + + + +[1]: http://www.rubycentral.org/conference/prereg/ +[2]: http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/134660 diff --git a/fa/news/_posts/2005-04-14-server-maintenance.md b/fa/news/_posts/2005-04-14-server-maintenance.md new file mode 100644 index 0000000000..38c08b99f9 --- /dev/null +++ b/fa/news/_posts/2005-04-14-server-maintenance.md @@ -0,0 +1,10 @@ +--- +layout: news_post +title: "Server Maintenance" +author: "Unknown Author" +lang: en +--- + +We’ll be performing server maintenance on Thu Apr 14 03:00:00 UTC 2005. +It may be down briefly. + diff --git a/fa/news/_posts/2005-04-19-anonymous-cvs-service-stopped.md b/fa/news/_posts/2005-04-19-anonymous-cvs-service-stopped.md new file mode 100644 index 0000000000..ab346e2923 --- /dev/null +++ b/fa/news/_posts/2005-04-19-anonymous-cvs-service-stopped.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Anonymous CVS Service Stopped" +author: "Shugo Maeda" +lang: en +--- + +We stopped the anonymous CVS service because of [Security Update of +CVS][1]. The service will be restarted after Debian package update. + + + +[1]: https://ccvs.cvshome.org/servlets/NewsItemView?newsItemID=141 diff --git a/fa/news/_posts/2005-04-27-anonymous-cvs-service-restart.md b/fa/news/_posts/2005-04-27-anonymous-cvs-service-restart.md new file mode 100644 index 0000000000..e50d8f799f --- /dev/null +++ b/fa/news/_posts/2005-04-27-anonymous-cvs-service-restart.md @@ -0,0 +1,9 @@ +--- +layout: news_post +title: "Anonymous CVS Service Restart" +author: "Shugo Maeda" +lang: en +--- + +Anonymous CVS Service was restarted. Thank you. + diff --git a/fa/news/_posts/2005-06-22-upgrade-to-debian-gnulinux-31.md b/fa/news/_posts/2005-06-22-upgrade-to-debian-gnulinux-31.md new file mode 100644 index 0000000000..28750eeabd --- /dev/null +++ b/fa/news/_posts/2005-06-22-upgrade-to-debian-gnulinux-31.md @@ -0,0 +1,11 @@ +--- +layout: news_post +title: "Upgrade to Debian GNU/Linux 3.1" +author: "Shugo Maeda" +lang: en +--- + +We’ll upgrade this host to Debian GNU/Linux 3.1 (sarge) on Wed Jun 29 +05:00:00 UTC 2005. Services will be stopped for a while. Successfully +DONE. Thank you. + diff --git a/fa/news/_posts/2005-07-01-xmlrpcipimethods-vulnerability.md b/fa/news/_posts/2005-07-01-xmlrpcipimethods-vulnerability.md new file mode 100644 index 0000000000..cbda7e0867 --- /dev/null +++ b/fa/news/_posts/2005-07-01-xmlrpcipimethods-vulnerability.md @@ -0,0 +1,37 @@ +--- +layout: news_post +title: "XMLRPC.iPIMethods Vulnerability" +author: "Shugo Maeda" +lang: en +--- + +On Fri Jun 17 2005, a vulnerability of XMLRPC.iPIMethods was reported in +\[ruby-core:05237\]. Remote attackers can execute arbitrary commands by +this vulnerability. + +#### Affected Programs + +Programs providing XML-RPC services by XMLRPC.iPIMethods are affected. + +#### Fix + +This vulnerability was already fixed in both the CVS HEAD and the +ruby\_1\_8 branch. + +Please apply this patch for ruby-1.8.2. + +* www.ruby-lang.org/patches/ruby-1.8.2-xmlrpc-ipimethods-fix.diff +^ + + --- ruby-1.8.2/lib/xmlrpc/utils.rb.orig 2003-08-15 02:20:14.000000000 +0900 + +++ ruby-1.8.2/lib/xmlrpc/utils.rb 2005-07-01 16:33:19.243521736 +0900 + @@ -138,7 +138,7 @@ + + def get_methods(obj, delim=".") + prefix = @prefix + delim + - obj.class.public_instance_methods.collect { |name| + + obj.class.public_instance_methods(false).collect { |name| + [prefix + name, obj.method(name).to_proc, nil, nil] + } + end +{: .code} diff --git a/fa/news/_posts/2005-07-02-securityruby-langorg.md b/fa/news/_posts/2005-07-02-securityruby-langorg.md new file mode 100644 index 0000000000..87ba5e4064 --- /dev/null +++ b/fa/news/_posts/2005-07-02-securityruby-langorg.md @@ -0,0 +1,12 @@ +--- +layout: news_post +title: "security@ruby-lang.org" +author: "Shugo Maeda" +lang: en +--- + +Created [security@ruby-lang.org](mailto:security@ruby-lang.org) . If you +have found vulnerabilities in Ruby, please report to this address. +security@ruby-lang.org is a private ML, and anyone can post to it +without subscription. + diff --git a/fa/news/_posts/2005-08-20-rubyconf-2005-registration-tops-100.md b/fa/news/_posts/2005-08-20-rubyconf-2005-registration-tops-100.md new file mode 100644 index 0000000000..ca3ea4d0aa --- /dev/null +++ b/fa/news/_posts/2005-08-20-rubyconf-2005-registration-tops-100.md @@ -0,0 +1,14 @@ +--- +layout: news_post +title: "RubyConf 2005 Registration Tops 100" +author: "Unknown Author" +lang: en +--- + +David A. Black recently reported on ruby-talk that over 100 people have +registered for [RubyConf 2005][1], to be held this coming October 14-16 +in San Diego. If you haven’t yet registered, now is the time! + + + +[1]: http://www.rubyconf.org/ diff --git a/fa/news/_posts/2005-08-31-rubyconf-2005-registration-time-is-running-out.md b/fa/news/_posts/2005-08-31-rubyconf-2005-registration-time-is-running-out.md new file mode 100644 index 0000000000..2353437811 --- /dev/null +++ b/fa/news/_posts/2005-08-31-rubyconf-2005-registration-time-is-running-out.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "RubyConf 2005 Registration: Time is running out" +author: "james" +lang: en +--- + +David Black [announced][1] on ruby-talk that there are now 136 +registrants, from 12 countries, for RubyConf 2005. If you still have not +registered, do it now. Full registration (i.e., full meal plans) ends in +two weeks. Non-full may continue past that, but not forever. Go to the +[RubyConf][2] site for complete registration details. + + + +[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/154337 +[2]: http://www.rubyconf.org diff --git a/fa/news/_posts/2005-09-07-registration-for-rubyconf-2005-is-closing-soon.md b/fa/news/_posts/2005-09-07-registration-for-rubyconf-2005-is-closing-soon.md new file mode 100644 index 0000000000..c9447e33f8 --- /dev/null +++ b/fa/news/_posts/2005-09-07-registration-for-rubyconf-2005-is-closing-soon.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "Registration for RubyConf 2005 is CLOSING soon." +author: "james" +lang: en +--- + +Registration for RubyConf 2005 is CLOSING soon. The schedule is as +follows: + +* Friday, September 16: last day for full registration (meals included) +* Friday, September 23: last day for events-only registration (no meals) + +So, all you stragglers, get over to the [RubyConf site][1] + + + +[1]: http://www.rubycentral.org/conference/register diff --git a/fa/news/_posts/2005-09-21-ruby-183-released.md b/fa/news/_posts/2005-09-21-ruby-183-released.md new file mode 100644 index 0000000000..23158fd514 --- /dev/null +++ b/fa/news/_posts/2005-09-21-ruby-183-released.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Ruby 1.8.3 released" +author: "David Black" +lang: en +--- + +Ruby 1.8.3 has been released. The source is [here][1], and the md5sum is +63d6c2bddd6af86664e338b31f3189a6. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.8.3.tar.gz diff --git a/fa/news/_posts/2005-10-03-ruby-vulnerability-in-the-safe-level-settings.md b/fa/news/_posts/2005-10-03-ruby-vulnerability-in-the-safe-level-settings.md new file mode 100644 index 0000000000..71d7cb6791 --- /dev/null +++ b/fa/news/_posts/2005-10-03-ruby-vulnerability-in-the-safe-level-settings.md @@ -0,0 +1,61 @@ +--- +layout: news_post +title: "Ruby vulnerability in the safe level settings" +author: "Matz" +lang: en +--- + +The Ruby versions listed below have a vulnerability that allows an +arbitrary code to run bypassing the safe level check. + + + Date published: 2005-10-02 + Versions affected: + Stable releases(1.8.x) - Versions 1.8.2 and earlier (fixed on Version 1.8.3) + Old releases(1.6.x) - Versions 1.6.8 and earlier + Development versions(1.9.0) - Versions 2005-09-01 and earlier (fixed on Version 2005-09-02) + +#### Solution: + +Users of stable releases (1.8.x) and development versions (1.9.0) should +update Ruby to the latest versions listed above. Users of old releases +(1.6.x) should update to the stable releases (1.8.x) or download the +latest snapshot for 1.6.x from the URL below, build, and install. + +[https://cache.ruby-lang.org/pub/ruby/snapshot-1.6.tar.gz][1] + +A patch from ruby-1.6.8.tar.gz is also provided at the following +location: + +[https://cache.ruby-lang.org/pub/ruby/1.6/1.6.8-patch1.gz][2] + +md5sum: 7a97381d61576e68aec94d60bc4cbbab + +A patch from ruby-1.8.2.tar.gz is also provided at the following +location: + +[https://cache.ruby-lang.org/pub/ruby/1.8/1.8.2-patch1.gz][3] + +md5sum: 4f32bae4546421a20a9211253da103d3 + +#### Description: + +The Object Oriented Scripting Language Ruby supports safely executing an untrusted code with two mechanisms: safe level and taint flag on objects. A vulnerability has been found that allows bypassing these mechanisms. By using the vulnerability, arbitrary code can be executed beyond the restrictions specified in each safe level. Therefore, Ruby has to be updated on all systems that use safe level to execute untrusted code. + +#### Reference: + +JVN#62914675 [http://jvn.jp/jp/JVN%2362914675/index.html][4] (in +Japanese) + +#### Acknowledgment: + +We thank Dr. Yutaka Oiwa, Research Center for Information Security, +National Institute of Advanced Industrial Science and Technology, who +found the vulnerability that allows bypassing safe level. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/snapshot-1.6.tar.gz +[2]: https://cache.ruby-lang.org/pub/ruby/1.6/1.6.8-patch1.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/1.8.2-patch1.gz +[4]: http://jvn.jp/jp/JVN%2362914675/index.html diff --git a/fa/news/_posts/2005-10-10-euruko-2005.md b/fa/news/_posts/2005-10-10-euruko-2005.md new file mode 100644 index 0000000000..f0dc4f741a --- /dev/null +++ b/fa/news/_posts/2005-10-10-euruko-2005.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "EuRuKo 2005" +author: "james" +lang: en +--- + +[EuRuKo 2005][1], the European Ruby Conference, will be in Munich, +Germany, October 15 and 16, 2005. If you have any means whatsoever to +attend, go. It is still fairly small, and the intimate feeling of the +conference is something special. You can see the current agenda +[here][2], but last year there were assorted spontaneous talks and +discussions as well and it will likely be the same this year. + + + +[1]: http://www.approximity.com/cgi-bin/europeRuby/tiki.cgi?c=v&p=Euruko05 +[2]: http://www.approximity.com/cgi-bin/europeRuby/tiki.cgi?c=v&p=Euruko05AgendaDetail diff --git a/fa/news/_posts/2005-10-11-new-ruby-web-magazine-goes-live.md b/fa/news/_posts/2005-10-11-new-ruby-web-magazine-goes-live.md new file mode 100644 index 0000000000..e6a7a0eada --- /dev/null +++ b/fa/news/_posts/2005-10-11-new-ruby-web-magazine-goes-live.md @@ -0,0 +1,27 @@ +--- +layout: news_post +title: "New Ruby Web Magazine Goes Live" +author: "james" +lang: en +--- + +The newest on-line resource for serious Ruby information has gone live. +[Ruby Code & Style][1], an on-line magazine from [Artima][2], has +just published issue #1. Check out the names on the advisory board. It’s +a Who’s Who of everybody who’s anybody in the Ruby world. The premiere +issue has three outstanding articles: First up, Jack Herrington, author +of Code Generation in Action (Manning, 2002) and Podcasting Hacks +(O’Reilly, 2005), has written [Modular Architectures with Ruby][3] Next, +Austin Ziegler gives us [Creating Printable Documents with Ruby][4] And +there’s a reprint of Ara Howard’s article, [Linux Clustering with Ruby +Queue: Small is Beautiful][5], which first appeared in Linux Journal but +deserves repeat attention A big thanks to the advisory board, and +especial to Bill Venners for starting this whole thing. + + + +[1]: http://www.artima.com/rubycs/index.html +[2]: http://www.artima.com +[3]: http://www.artima.com/rubycs/articles/modular_apis_with_ruby.html +[4]: http://www.artima.com/rubycs/articles/pdf_writer.html +[5]: http://www.artima.com/rubycs/articles/rubyqueue.html diff --git a/fa/news/_posts/2005-12-14-ruby-184-preview-2-released.md b/fa/news/_posts/2005-12-14-ruby-184-preview-2-released.md new file mode 100644 index 0000000000..8c79bc3c82 --- /dev/null +++ b/fa/news/_posts/2005-12-14-ruby-184-preview-2-released.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Ruby 1.8.4 preview 2 released" +author: "David Black" +lang: en +--- + +Ruby 1.8.4 preview 2 has been released. You can download the source +[here][1]. The md5 sum is: e5a48054fb34f09da17e8e8f04b8c706 + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.4-preview2.tar.gz diff --git a/fa/news/_posts/2005-12-24-ruby-184-released.md b/fa/news/_posts/2005-12-24-ruby-184-released.md new file mode 100644 index 0000000000..1f0de990fb --- /dev/null +++ b/fa/news/_posts/2005-12-24-ruby-184-released.md @@ -0,0 +1,14 @@ +--- +layout: news_post +title: "Ruby 1.8.4 released!" +author: "maki" +lang: en +--- + +Ruby 1.8.4 has been released. The source is +[https://cache.ruby-lang.org/pub/ruby/ruby-1.8.4.tar.gz][1], the md5sum is +bd8c2e593e1fa4b01fd98eaf016329bb, and filesize is 4,312,965 bytes. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.8.4.tar.gz diff --git a/fa/news/_posts/2006-02-09-conference-season-is-here.md b/fa/news/_posts/2006-02-09-conference-season-is-here.md new file mode 100644 index 0000000000..de973303d2 --- /dev/null +++ b/fa/news/_posts/2006-02-09-conference-season-is-here.md @@ -0,0 +1,31 @@ +--- +layout: news_post +title: "Conference season is here" +author: "David Black" +lang: en +--- + +This coming spring and summer are shaping up to be a real “conference +alley” for Rubyists. (And RubyConf 2006 hasn’t even been announced yet!) +Upcoming events of interest include: + +* [Canada on Rails][1], April 13-14 +* [Silicon Valley Ruby Conference][2], April 22-23, co-produced by + [SDForum][3] and [Ruby Central, Inc.][4] +* the first official [International Rails Conference][5], June 22-25, + produced by [Ruby Central, Inc.][4] +* the [Ruby track][6] at [OSCON][7], July 24-28 (call for papers closing + soon!) + +Check specific events for information about submitting talk proposals +and/or registering to attend. + + + +[1]: http://www.canadaonrails.org +[2]: http://www.sdforum.org/rubyconference +[3]: http://www.sdforum.org +[4]: http://rubycentral.org +[5]: http://www.railsconf.org +[6]: http://conferences.oreillynet.com/cs/os2006/create/e_sess/ +[7]: http://conferences.oreillynet.com/os2006/ diff --git a/fa/news/_posts/2006-04-19-ruby-in-google-summer-of-code.md b/fa/news/_posts/2006-04-19-ruby-in-google-summer-of-code.md new file mode 100644 index 0000000000..3cc17e40aa --- /dev/null +++ b/fa/news/_posts/2006-04-19-ruby-in-google-summer-of-code.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "Ruby in Google Summer of Code" +author: "David Black" +lang: en +--- + +Student Rubyists will be able to participate in the [Google Summer of +Code][1] this summer, with [Ruby Central, Inc.][2] Ruby Central, Inc. as +mentoring organization. See the [Summer of Code page][3] at Ruby +Central. + + + +[1]: http://code.google.com/soc/ +[2]: http://rubycentral.org +[3]: http://www.rubycentral.org/soc2006 diff --git a/fa/news/_posts/2006-06-20-the-future-of-ruby.md b/fa/news/_posts/2006-06-20-the-future-of-ruby.md new file mode 100644 index 0000000000..435384040b --- /dev/null +++ b/fa/news/_posts/2006-06-20-the-future-of-ruby.md @@ -0,0 +1,23 @@ +--- +layout: news_post +title: "The Future of Ruby" +author: "James Edward Gray II" +lang: en +--- + +There has been much discussion recently on the future directions Ruby +will be exploring, with some official plans coming from Matz himself. If +you are interested to know what’s coming, check out the following links: + +* [Changes in Ruby 1.9][1] +* [1.8.5 Delivery Schedule][2] +* [Matz’s Weird and Wild Ideas][3] + +Please remember that Ruby will continue to grow and change. The above +information is only what we think we know at this point in that process. + + + +[1]: http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9 +[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/197229 +[3]: http://www.rubyist.net/~matz/slides/rc2005/mgp00006.html diff --git a/fa/news/_posts/2006-08-29-ruby-1-8-5-released.md b/fa/news/_posts/2006-08-29-ruby-1-8-5-released.md new file mode 100644 index 0000000000..02f0f913db --- /dev/null +++ b/fa/news/_posts/2006-08-29-ruby-1-8-5-released.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "Ruby 1.8.5 released!" +author: "maki" +lang: en +--- + +Ruby 1.8.5 has been released. + +The source is [https://cache.ruby-lang.org/pub/ruby/ruby-1.8.5.tar.gz][1], +the md5sum is 3fbb02294a8ca33d4684055adba5ed6f, and filesize is +4,438,603 bytes. + +Mauricio Fernandez wrote [a summary of changes][2]. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.8.5.tar.gz +[2]: http://eigenclass.org/hiki.rb?ruby+1.8.5+changelog diff --git a/fa/news/_posts/2006-08-30-server-maintenance-20060830.md b/fa/news/_posts/2006-08-30-server-maintenance-20060830.md new file mode 100644 index 0000000000..d958a5b991 --- /dev/null +++ b/fa/news/_posts/2006-08-30-server-maintenance-20060830.md @@ -0,0 +1,11 @@ +--- +layout: news_post +title: "Server maintenance" +author: "Shugo Maeda" +lang: en +--- + +Services except mailinglists will be down for a server maintenance on +Wed Aug 30 08:00:00 UTC 2006. The downtime will be a few hours. Sorry +for inconvenience. + diff --git a/fa/news/_posts/2006-09-12-site-launch-at-last.md b/fa/news/_posts/2006-09-12-site-launch-at-last.md new file mode 100644 index 0000000000..fdef7e54d5 --- /dev/null +++ b/fa/news/_posts/2006-09-12-site-launch-at-last.md @@ -0,0 +1,57 @@ +--- +layout: news_post +title: "Site Launch At Last!" +author: "John Long" +lang: en +--- + +As you can see the much anticipated redesign is now live. It was over a +year ago that [it was suggested][1] that a “visual identity team” be +formed for the purpose of redesigning the Ruby Web site. The redesign +team created over 20 mockups for the the new site, [posted several][2] +for the Ruby community to comment on, and finally decided on the current +design. + +Once the design was chosen it was lovingly converted to CSS and XHTML +and an [administration system][3] was written for it. The content was +then ported over from the old Web site and massaged by an enthusiastic +group of volunteers. + +The Ruby Visual Identity Team is composed of: + +* Ben Giddings +* James Edward Gray II +* Curt Hibbs +* John Long +* Shugo Maeda +* Michel Martens +* Why the Lucky Stiff + +The following people also contributed expertise or content to the new +Web site: + +* David Alan Black +* Alex Combas +* Damphyr +* Eric Davis +* Yukihiro “Matz” Matsumoto +* Matt Todd +* Usaku Nakamura +* A handful of Japanese volunteers (who did the [translation](/ja/)) + +It would be great if we could list the names of all the people who gave +suggestions, reported bugs, or contributed in some way, but the list +would grow very long indeed. This site is truly a product of the Ruby +community and we want to thank everyone who made it happen. Kudos to +each and every one of you! + +If you have comments or questions about the redesign, you are cordially +invited to join the discussion over on the [VIT-Discuss mailing +list][4]. + + + +[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/131284 +[2]: http://redhanded.hobix.com/redesign2005/ +[3]: http://radiantcms.org +[4]: http://rubyforge.org/mailman/listinfo/vit-discuss/ diff --git a/fa/news/_posts/2006-10-18-rubyconf-2006-almost-upon-us.md b/fa/news/_posts/2006-10-18-rubyconf-2006-almost-upon-us.md new file mode 100644 index 0000000000..86048e7ea7 --- /dev/null +++ b/fa/news/_posts/2006-10-18-rubyconf-2006-almost-upon-us.md @@ -0,0 +1,33 @@ +--- +layout: news_post +title: "RubyConf 2006 Almost Upon Us!" +author: "John Long" +lang: en +--- + +With people traveling from all over the world, [by train][1], by car, +and by air, enthusiasm is building for [RubyConf 2006][2]! The +conference is scheduled to begin Friday morning, but if you arrive early +you may be able to join in on a few preliminary activities. + +There are over [16 talks scheduled][3] with topics ranging from +*Leveraging Mac OS X from Ruby* to *YARV on Rails*. There’s even a talk +on *Natural Language Processing in Ruby* and one on the development of +Iron Mongrel (the hot new Web server written in Ruby). Check out the +[talk descriptions][4] for the gory details. + +Also, if you are planning to attend the conference, be sure to put a bio +up on the [RubyConf 2006 Facebook][5]. If you are blogging or posting +photos about the conference, tag your content with “rubyconf” (one word) +and “rubyconf2006” (also one word). This will make it easy for people to +find your stuff on [Technorati][6] and [Flickr][7]. + + + +[1]: http://mokolabs.com/2006/09/08/the-rubyconf-express/ +[2]: http://rubyconf.org/ +[3]: http://www.rubycentral.org/conference/agenda.html +[4]: http://www.rubyconf.org/agenda_detail.html +[5]: http://wiki.rubygarden.org/Ruby/page/show/RubyConf2006Facebook/ +[6]: http://technorati.com/tags/rubyconf2006/ +[7]: http://flickr.com/photos/tags/rubyconf2006/ diff --git a/fa/news/_posts/2006-10-26-rubyconf-2006-recap.md b/fa/news/_posts/2006-10-26-rubyconf-2006-recap.md new file mode 100644 index 0000000000..add9c02f6e --- /dev/null +++ b/fa/news/_posts/2006-10-26-rubyconf-2006-recap.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "RubyConf 2006 Recap" +author: "James Edward Gray II" +lang: en +--- + +Last weekend over 300 Rubyists gathered in Denver, CO to discuss many +aspects of our favorite language. This was my first conference and I +must say they are every bit as impressive as you have probably heard. +The presentations are great, but it’s hard to top talking and hacking +with with fellow Rubyists between the events. Everyone should experience +that at least once. + +If there was a theme to this year’s conference, I would have to say it’s +Ruby implementations. Two presentations focused on alternate Ruby +implementations and a third challenged us to get our planned m17n +additions to Ruby just right. Apple dropped in to show their plans for +Ruby integration in Mac OS X and the first Ruby Implementors Summit was +held. Koichi brought us up to speed on YARV, which plans are currently +underway to merge into the core at long last. As a teaser, he even +showed it running Rails. + +And, of course, Matz answered our questions at the roundtable and shared +his vision of the future with his keynote address. + +Matz opened his keynote by comparing the terms currently used to +describe Ruby. After casually dismissing scripting language, programming +language, lightweight language, and dynamic language for various +reasons, Matz suggested we settle on the term “agile language.” + +With Ruby defined, Matz proposed we take a step beyond the old Ruby 2.0 +plans, including the RCRchive and his own previous speeches. Matz +suggested we play a game suggesting enhancements to Ruby and debating +them as we go. Details on the forum we will use for this are still to +come. + +Finally, Matz announced that Ruby 1.9.1 will release on Christmas of +2007. This release will represent our first steps into the future of +Ruby. Ruby 1.8 will remain a stable bastion for those who need to avoid +incompatible changes. + +For more details on the conference, I suggest the following links: + +* [Nick Sieger’s Blog][1] +* [Kevin Tew’s Blog][2] +* [TechKnow Zenze][3] + + + +[1]: http://blog.nicksieger.com/ +[2]: http://blog.tewk.com/ +[3]: http://juixe.com/techknow/ diff --git a/fa/news/_posts/2006-11-03-CVE-2006-5467.md b/fa/news/_posts/2006-11-03-CVE-2006-5467.md new file mode 100644 index 0000000000..854a9c0655 --- /dev/null +++ b/fa/news/_posts/2006-11-03-CVE-2006-5467.md @@ -0,0 +1,49 @@ +--- +layout: news_post +title: "DoS Vulnerability in CGI Library (CVE-2006-5467)" +author: "maki" +lang: en +--- + +A vulnerability has been discovered in the CGI library (cgi.rb) that +ships with Ruby which could be used by a malicious user to create a +denial of service attack (DoS). The problem is triggered by sending the +library an HTTP request that uses multipart MIME encoding and has an +invalid boundary specifier that begins with “-” instead of “--”. Once +triggered it will exhaust all available memory resources effectively +creating a DoS condition. + +**Ruby 1.8.5 and all prior versions are vulnerable.** This vulnerability +is open to the public as [CVE-2006-5467][1]. + +### Vulnerable Versions + +1.8 series +: 1\.8.5 and all prior versions + +Development version (1.9 series) +: All versions before 2006-09-23 + +### Solution + +1.8 series +: Please apply the patch after you update to Ruby 1.8.5: + + * [CGI DoS Patch][2] (367 bytes; md5sum: + 9d25f59d1c33a0b215f6c25260dcb536) + + Please note that a package that corrects this weakness may already be + available through your package management software. + +Development version (1.9 series) +: Please update your Ruby to a version after September 23, 2006. + +### References + +* [ \[SEC\] Mongrel Temporary Fix For cgi.rb 99% CPU DoS Attack][3] + + + +[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5467 +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-cgi-dos-1.patch +[3]: http://rubyforge.org/pipermail/mongrel-users/2006-October/001946.html diff --git a/fa/news/_posts/2006-12-04-another-dos-vulnerability-in-cgi-library.md b/fa/news/_posts/2006-12-04-another-dos-vulnerability-in-cgi-library.md new file mode 100644 index 0000000000..cb90a09ab6 --- /dev/null +++ b/fa/news/_posts/2006-12-04-another-dos-vulnerability-in-cgi-library.md @@ -0,0 +1,51 @@ +--- +layout: news_post +title: "Another DoS Vulnerability in CGI Library" +author: "Shugo Maeda" +lang: en +--- + +Another vulnerability has been discovered in the CGI library (cgi.rb) +that ships with Ruby which could be used by a malicious user to create a +denial of service attack (DoS). + +This vulnerability is open to the public as [JVN#84798830][1]. + +Please note that the previous patch +([<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-cgi-dos-1.patch>][2]) +does not fix this problem. + +#### Impact + +A specific HTTP request for any web application using cgi.rb causes CPU +consumption on the machine on which the web application is running. Many +such requests result in a denial of service. + +#### Vulnerable versions + +1.8 series +: 1\.8.5 and all prior versions + +Development version (1.9 series) +: All versions before 2006-12-04 + +#### Solution + +1.8 series + +: Please upgrade to 1.8.5-p2. + + [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p2.tar.gz>][3] + (4519151 bytes, md5sum: a3517a224716f79b14196adda3e88057) + + Please note that a package that corrects this weakness may already be + available through your package management software. + +Development version (1.9 series) +: Please update your Ruby to a version after 2006-12-04. + + + +[1]: http://jvn.jp/jp/JVN%2384798830/index.html +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-cgi-dos-1.patch +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p2.tar.gz diff --git a/fa/news/_posts/2006-12-20-ruby-on-rails-bootcamp-in-germany.md b/fa/news/_posts/2006-12-20-ruby-on-rails-bootcamp-in-germany.md new file mode 100644 index 0000000000..be0f37570f --- /dev/null +++ b/fa/news/_posts/2006-12-20-ruby-on-rails-bootcamp-in-germany.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "Ruby on Rails Bootcamp in Germany" +author: "James Edward Gray II" +lang: en +--- + +Big Nerd Ranch Europe is offering their Ruby on Rails Bootcamp classes +in Kloster Eberbach, Germany (near Frankfurt) the week of March +26th-30th. For more information you can find the press release at +[http://www.bignerdranch.com/news/2006-12-20.shtml][1]. + + + +[1]: http://www.bignerdranch.com/news/2006-12-20.shtml diff --git a/fa/news/_posts/2006-12-22-cvs-repository-moved-to-svn.md b/fa/news/_posts/2006-12-22-cvs-repository-moved-to-svn.md new file mode 100644 index 0000000000..d60a130f00 --- /dev/null +++ b/fa/news/_posts/2006-12-22-cvs-repository-moved-to-svn.md @@ -0,0 +1,21 @@ +--- +layout: news_post +title: "CVS Repository moved to SVN" +author: "Shugo Maeda" +lang: en +--- + +We have moved the source code repository to +[https://svn.ruby-lang.org/repos/ruby/][1]. You can checkout it using the +svn command, or you can also browse it by [ViewVC][2]. + +The new machine for svn.ruby-lang.org is provided by [Sun +Microsystems][3]. We are using [Solaris 10][4] on the new machine, and +it works pretty well. + + + +[1]: https://svn.ruby-lang.org/repos/ruby/ +[2]: https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?root=ruby +[3]: http://www.sun.com +[4]: http://www.sun.com/software/solaris/ diff --git a/fa/news/_posts/2006-12-27-ruby-on-rails-bootcamp-in-georgia.md b/fa/news/_posts/2006-12-27-ruby-on-rails-bootcamp-in-georgia.md new file mode 100644 index 0000000000..a75c41295c --- /dev/null +++ b/fa/news/_posts/2006-12-27-ruby-on-rails-bootcamp-in-georgia.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "Ruby on Rails Bootcamp in Georgia" +author: "James Edward Gray II" +lang: en +--- + +Big Nerd Ranch, Inc. is offering their Ruby on Rails Bootcamp classes in +a retreat setting outside Atlanta, GA the week of February 12th-16th. +For more information you can find the press release at +[http://bignerdranch.com/news/2006-10-11.shtml][1]. + + + +[1]: http://bignerdranch.com/news/2006-10-11.shtml diff --git a/fa/news/_posts/2007-01-24-mountainwest-rubyconf-2007-registration-now-open.md b/fa/news/_posts/2007-01-24-mountainwest-rubyconf-2007-registration-now-open.md new file mode 100644 index 0000000000..ed20e53e11 --- /dev/null +++ b/fa/news/_posts/2007-01-24-mountainwest-rubyconf-2007-registration-now-open.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "MountainWest RubyConf 2007 Registration Now Open" +author: "james" +lang: en +--- + +Registration for the upcoming [MountainWest RubyConf][1] is open. + +This regional Ruby conference will be in Salt Lake City, Utah, USA, on +March 16 and 17, 2007. + +$50 gets you a seat and a T-shirt. More details are forthcoming, but, +trust me, this will be good. + + + +[1]: http://mtnwestruby.org diff --git a/fa/news/_posts/2007-01-26-mountainwest-speaker-list-posted.md b/fa/news/_posts/2007-01-26-mountainwest-speaker-list-posted.md new file mode 100644 index 0000000000..6841263184 --- /dev/null +++ b/fa/news/_posts/2007-01-26-mountainwest-speaker-list-posted.md @@ -0,0 +1,16 @@ +--- +layout: news_post +title: "MountainWest Speaker List Posted" +author: "james" +lang: en +--- + +The list of speakers and topics for MountainWest RubyConf has [gone +up.][1] + +There’s also a nice [social site][2] for the conference as well. + + + +[1]: http://mtnwestruby.org/speakers +[2]: http://mtnwestruby.conferencemeetup.com/people diff --git a/fa/news/_posts/2007-02-21-ip-address-change.md b/fa/news/_posts/2007-02-21-ip-address-change.md new file mode 100644 index 0000000000..3a8312104a --- /dev/null +++ b/fa/news/_posts/2007-02-21-ip-address-change.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "IP Address Change" +author: "Shugo Maeda" +lang: en +--- + +The IP address of the server will be changed on Thu Feb 22 03:00:00 UTC +2007, and WWW/FTP/ML and Anonymous CVS services will be stopped in a few +minutes. + +Sorry for inconvenience. + diff --git a/fa/news/_posts/2007-03-01-cvs-services-will-be-permanently-unavailable.md b/fa/news/_posts/2007-03-01-cvs-services-will-be-permanently-unavailable.md new file mode 100644 index 0000000000..1fe7cd3485 --- /dev/null +++ b/fa/news/_posts/2007-03-01-cvs-services-will-be-permanently-unavailable.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "CVS services will be permanently unavailable" +author: "Shugo Maeda" +lang: en +--- + +CVS services (including CVSup and CVSweb) will be permanently +unavailable on Fri Mar 16 03:00 UTC 2007. The source code repositry has +been [moved to SVN](/en/news/2006/12/22/cvs-repository-moved-to-svn/). + +If you require the CVS repositry, please get it by CVSup till that day. + diff --git a/fa/news/_posts/2007-03-12-ruby-1-8-6-released.md b/fa/news/_posts/2007-03-12-ruby-1-8-6-released.md new file mode 100644 index 0000000000..6c7c20f0f8 --- /dev/null +++ b/fa/news/_posts/2007-03-12-ruby-1-8-6-released.md @@ -0,0 +1,42 @@ +--- +layout: news_post +title: "Ruby 1.8.6 released!" +author: "Shugo Maeda" +lang: en +--- + +Ruby 1.8.6 has been released (see the [announcement on Ruby-Talk][1]). +The source is available in three formats: + +* [ruby-1.8.6.tar.bz2][2] (3.8 MB) + + md5: e558a0e00ae318d43bf6ff9af452bad2 + sha256: 0fc6ad0b31d8ec3997db2a56a2ac1c235283a3607abb876300fc711b3f8e3dd7 + +* [ruby-1.8.6.tar.gz][3] (4.4 MB) + + md5: 23d2494aa94e7ae1ecbbb8c5e1507683 + sha256: 3ef37fb961d04471a1aef2c8079d6fab09932e3281d79859d5cd5d426bde0868 + +* [ruby-1.8.6.zip][4] (5.3 MB) + + md5: 5f4b82cec8f437634e05a3ce9bb3ca67 + sha256: c4b011d66b3f7e3bddbdf61a7404120d5ac80c6b742ad08e7e75b6d14ee56e76 + +For a brief list of user visible changes and a full list of all changes +since 1.8.5, see the bundled files [NEWS][5] and [ChangeLog][6]. + +After this announcement, we will start the development for 1.8.7 as well +as maintaining the “ruby\_1\_8\_6” branch on which only critical bugs +and security vulnerabilities found in the 1.8.6 release are fixed, and +patch releases will follow on appropriate and timely occasions. Please +check them out after upgrading Ruby to 1.8.6. + + + +[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43267 +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz +[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.zip +[5]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_6/NEWS +[6]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_6/ChangeLog diff --git a/fa/news/_posts/2007-07-27-proposals-now-being-accepted-for-rubyconf-2007-presentations.md b/fa/news/_posts/2007-07-27-proposals-now-being-accepted-for-rubyconf-2007-presentations.md new file mode 100644 index 0000000000..1efe4b80eb --- /dev/null +++ b/fa/news/_posts/2007-07-27-proposals-now-being-accepted-for-rubyconf-2007-presentations.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "Proposals now being accepted for RubyConf 2007 presentations" +author: "james" +lang: en +--- + +David A. Black announced on ruby-talk that presentation proposals for +[RubyConf 2007][1] are now being accepted. + +The form is at [http://proposals.rubycentral.org][2] . You need to sign +up for a password, even if you had one last year. (It just involves +connecting to a confirmation link.) + +The deadline for proposals is August 20, 5:00 PM EDT. + + + +[1]: http://rubyconf.org/ +[2]: http://proposals.rubycentral.org diff --git a/fa/news/_posts/2007-09-01-ruby-logo-contest.md b/fa/news/_posts/2007-09-01-ruby-logo-contest.md new file mode 100644 index 0000000000..a69aa87329 --- /dev/null +++ b/fa/news/_posts/2007-09-01-ruby-logo-contest.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Ruby Logo Contest" +author: "Shugo Maeda" +lang: en +--- + +The Ruby Association open [the Ruby Logo Contest][1]. Please submit your +logo! + + + +[1]: http://www.ruby-assn.org/logo-contest.html.en diff --git a/fa/news/_posts/2007-09-06-rubyconf-2007-registration-now-open.md b/fa/news/_posts/2007-09-06-rubyconf-2007-registration-now-open.md new file mode 100644 index 0000000000..9c23f48901 --- /dev/null +++ b/fa/news/_posts/2007-09-06-rubyconf-2007-registration-now-open.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "RubyConf 2007 Registration Now Open" +author: "james" +lang: en +--- + +[Registration is now open][1] for RubyConf 2007. + +You can see the [conference agenda][2]. + + + +[1]: http://www.regonline.com/rubyconf2007 +[2]: http://www.rubyconf.org/agenda.html diff --git a/fa/news/_posts/2007-09-18-euruko-2007-the-european-ruby-conference.md b/fa/news/_posts/2007-09-18-euruko-2007-the-european-ruby-conference.md new file mode 100644 index 0000000000..bbdeef7a3c --- /dev/null +++ b/fa/news/_posts/2007-09-18-euruko-2007-the-european-ruby-conference.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "Euruko 2007: The European Ruby Conference" +author: "james" +lang: en +--- + +Planning is underway for [Euruko 2007][1] + +Euruko 2007 will be located in Vienna, Austria, on Saturday & Sunday +10th and 11th November, 2007. + +There is an informal [registration page][2] and a general information +[site][1] . + + + +[1]: http://www.approximity.com/cgi-bin/europeRuby/tiki.cgi?c=v&p=Euruko07 +[2]: http://www.approximity.com/cgi-bin/europeRuby/tiki.cgi?c=v&p=Registration2007 diff --git a/fa/news/_posts/2007-10-04-net-https-vulnerability.md b/fa/news/_posts/2007-10-04-net-https-vulnerability.md new file mode 100644 index 0000000000..e6a52bd1c7 --- /dev/null +++ b/fa/news/_posts/2007-10-04-net-https-vulnerability.md @@ -0,0 +1,72 @@ +--- +layout: news_post +title: "Net::HTTPS Vulnerability" +author: "Shugo Maeda" +lang: en +--- + +A vulnerability on the net/https library was reported. + +Detailed information should be found at the original advisory: +[<URL:http://www.isecpartners.com/advisories/2007-006-rubyssl.txt>][1] + +#### Impact + +The vulnerability exists in the connect method within http.rb file which +fails to call post\_connection\_check after the SSL connection has been +negotiated. Since the server certificate\'s CN is not validated against +the requested DNS name, the attacker can impersonate the target server +in a SSL connection. The integrity and confidentiality benefits of SSL +are thereby eliminated. + +#### Vulnerable versions + +1.8 series +: * 1\.8.4 and all prior versions + * 1\.8.5-p113 and all prior versions + * 1\.8.6-p110 and all prior versions + +Development version (1.9 series) +: All versions before 2006-09-23 + +#### Solution + +1.8 series + +: Please upgrade to 1.8.6-p111 or 1.8.5-p114. + + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.gz>][2] + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p114.tar.gz>][3] + + Then you should use Net::HTTP#enable\_post\_connection\_check= to + enable post\_connection\_check. + + http = Net::HTTP.new(host, 443) + http.use_ssl = true + http.enable_post_connection_check = true + http.verify_mode = OpenSSL::SSL::VERIFY_PEER + store = OpenSSL::X509::Store.new + store.set_default_paths + http.cert_store = store + http.start { + response = http.get("/") + } + + Please note that a package that corrects this weakness may already be + available through your package management software. + +Development version (1.9 series) +: Please update your Ruby to a version after 2006-09-23. The default + value of Net::HTTP#enable\_post\_connection\_check is true on Ruby + 1.9. + +#### Changes + +* 2007-10-04 16:30 +09:00 added description for + enable\_post\_connection\_check to \`Solution\'. + + + +[1]: http://www.isecpartners.com/advisories/2007-006-rubyssl.txt +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p114.tar.gz diff --git a/fa/news/_posts/2007-12-25-ruby-1-9-0-released.md b/fa/news/_posts/2007-12-25-ruby-1-9-0-released.md new file mode 100644 index 0000000000..63bcccdd44 --- /dev/null +++ b/fa/news/_posts/2007-12-25-ruby-1-9-0-released.md @@ -0,0 +1,28 @@ +--- +layout: news_post +title: "Ruby 1.9.0 Released" +author: "james" +lang: en +--- + +Matz announced the release of Ruby 1.9.0, a development release. + +You can fetch it from: + +[https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2][1] + + 407cc7d0032e19eb12216c0ebc7f17b3 + +[https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.gz][2] + + b20cce98b284f7f75939c09d5c8e846d + +[https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.zip][3] + + 78b2a5f9a81c5f6775002c4fb24d2d75 + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2 +[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.zip diff --git a/fa/news/_posts/2008-01-09-ruby-logo-available.md b/fa/news/_posts/2008-01-09-ruby-logo-available.md new file mode 100644 index 0000000000..962a3a0016 --- /dev/null +++ b/fa/news/_posts/2008-01-09-ruby-logo-available.md @@ -0,0 +1,14 @@ +--- +layout: news_post +title: "Ruby logo available" +author: "Shugo Maeda" +lang: en +--- + +The official Ruby logo is [available to download][1] under Creative +Commons Attribution-Share Alike license now. Available formats are +Illustrator/SVG/PDF/PNG. + + + +[1]: http://www.ruby-assn.org/index.html.en diff --git a/fa/news/_posts/2008-01-24-ruby-fools-conference.md b/fa/news/_posts/2008-01-24-ruby-fools-conference.md new file mode 100644 index 0000000000..c31bef38aa --- /dev/null +++ b/fa/news/_posts/2008-01-24-ruby-fools-conference.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "Ruby Fool's Conference" +author: "James Edward Gray II" +lang: en +--- + +The first [Ruby Fools conference][1] will be held on April Fools’ Day in +Copenhagen, Denmark. The conference organizers intend to cater a bit to +both expert and novice developers, so any Rubyists in the area may want +to consider attending. + + + +[1]: http://jaoo.dk/ruby-cph/conference/ diff --git a/fa/news/_posts/2008-02-04-mountainwest-rubyconf-2008.md b/fa/news/_posts/2008-02-04-mountainwest-rubyconf-2008.md new file mode 100644 index 0000000000..52e6af6cd3 --- /dev/null +++ b/fa/news/_posts/2008-02-04-mountainwest-rubyconf-2008.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "MountainWest RubyConf 2008" +author: "James Edward Gray II" +lang: en +--- + +Registration for [MountainWest RubyConf 2008][1] is now open. This year +features an expanded [schedule and list of speakers][2]. + +The conference will be in Salt Lake City, Utah, USA, on March 28 and 29, +2008. [Registration costs just $100][3] and includes lunch both days, +t-shirt, and more. + + + +[1]: http://mtnwestrubyconf.org +[2]: http://mtnwestrubyconf.org/2008/speakers +[3]: http://www.acteva.com/go/mtnwestruby diff --git a/fa/news/_posts/2008-02-25-european-ruby-conference-2008-euruko.md b/fa/news/_posts/2008-02-25-european-ruby-conference-2008-euruko.md new file mode 100644 index 0000000000..20f1538a4f --- /dev/null +++ b/fa/news/_posts/2008-02-25-european-ruby-conference-2008-euruko.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "European Ruby Conference 2008 (EURUKO)" +author: "James Edward Gray II" +lang: en +--- + +EURUKO is an annual conference about the Ruby programming language with +an informal atmosphere and lots of opportunities to listen, to talk, to +hack and to have fun. This year it takes place in [Prague, Czech +Republic, on March 29th to 30th.][1] + + + +[1]: http://www.euruko2008.org/ diff --git a/fa/news/_posts/2008-02-27-scotland-on-rails-2008.md b/fa/news/_posts/2008-02-27-scotland-on-rails-2008.md new file mode 100644 index 0000000000..8cbe20f896 --- /dev/null +++ b/fa/news/_posts/2008-02-27-scotland-on-rails-2008.md @@ -0,0 +1,29 @@ +--- +layout: news_post +title: "Scotland on Rails 2008" +author: "James Edward Gray II" +lang: en +--- + +Scotland on Rails is pleased to announce that Conference2008 is open for +registration. There is a limit to the number of registrations we’re able +to accept so we’d advise you to get in quickly :-) + +You can register at [http://scotlandonrails.com/register][1] The +conference will take place on April 4th and 5th in Edinburgh (in a +castle!), Scotland and will feature speakers from the UK, Europe, US and +New Zealand including keynotes from Michael Koziarski and David Black. A +list of sessions and speakers is available at +[http://scotlandonrails.com/talks][2]. + +We’re also planning a charity event on Thursday 3rd. This will feature +an beginner level intro to Ruby and Rails in the morning, and sessions +from several of the speakers from the main conference (including Jim +Weirich, Bruce Williams and Giles Bowkett) in the afternoon. All the +money raised from that days event will be going to CHAS – The Childrens +Hospice Association. + + + +[1]: http://scotlandonrails.com/register +[2]: http://scotlandonrails.com/talks diff --git a/fa/news/_posts/2008-03-03-webrick-file-access-vulnerability.md b/fa/news/_posts/2008-03-03-webrick-file-access-vulnerability.md new file mode 100644 index 0000000000..243617d1df --- /dev/null +++ b/fa/news/_posts/2008-03-03-webrick-file-access-vulnerability.md @@ -0,0 +1,83 @@ +--- +layout: news_post +title: "File access vulnerability of WEBrick" +author: "Shugo Maeda" +lang: en +--- + +WEBrick, a standard library of Ruby to implement HTTP servers, has file +access vulnerability. + +## Impact + +The following programs are vulnerable. + +1. Programs that publish files using `WEBrick::HTTPServer.new` with the + `:DocumentRoot` option +2. Programs that publish files using + `WEBrick::HTTPServlet::FileHandler` + +Affected systems are: + +1. Systems that accept backslash (\\) as a path separator, such as + Windows. +2. Systems that use case insensitive filesystems such as NTFS on + Windows, HFS on Mac OS X. + +This vulnerability has the following impacts. + +1. Attacker can access private files by sending a url with url encoded + backslash (\\). This exploit works only on systems that accept + backslash as a path separator. + + Example: + + http://[server]:[port]/..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c/boot.ini + +2. Attacker can access files that matches to the patterns specified by + the `:NondisclosureName` option (the default value is `[".ht*", + "*~"]`). This exploit works only on systems that use case + insensitive filesystems. + +## Vulnerable versions + +1.8 series +: * 1\.8.4 and all prior versions + * 1\.8.5-p114 and all prior versions + * 1\.8.6-p113 and all prior versions + +1.9 series +: * 1\.9.0-1 and all prior versions + +## Solution + +1.8 series +: Please upgrade to 1.8.5-p115 or 1.8.6-p114. + + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p115.tar.gz>][1] + (md5sum: 20ca6cc87eb077296806412feaac0356) + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.gz>][2] + (md5sum: 500a9f11613d6c8ab6dcf12bec1b3ed3) + +1.9 series +: Please apply the following patch to + lib/webrick/httpservlet/filehandler.rb. + + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-1-webrick-vulnerability-fix.diff>][3] + (md5sum: b7b58aed40fa1609a67f53cfd3a13257) + +Please note that a package that corrects this weakness may already be +available through your package management software. + +## Credit + +Credit to Digital Security Research Group +([<URL:http://dsec.ru/>][4]) for disclosing the problem to Ruby +Security Team. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p115.tar.gz +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-1-webrick-vulnerability-fix.diff +[4]: http://dsec.ru/ diff --git a/fa/news/_posts/2008-04-11-tulsa-ruby-workshop.md b/fa/news/_posts/2008-04-11-tulsa-ruby-workshop.md new file mode 100644 index 0000000000..b520defbab --- /dev/null +++ b/fa/news/_posts/2008-04-11-tulsa-ruby-workshop.md @@ -0,0 +1,32 @@ +--- +layout: news_post +title: "Tulsa Ruby Workshop" +author: "James Edward Gray II" +lang: en +--- + +I wanted to get the word out about the upcoming Tulsa Ruby Workshop. +This will take place on April 26th, from 10 AM to 4 PM in Tulsa, OK. + +The workshop has a great line up of intro Ruby and Rail content. I’m +honored to have been asked to give two of the talks that day: an +introduction to Ruby talk as well as a Ruby from Java talk. There will +also be a beginning Rails talk from Tulsa.rb’s commander and chief, an +Engine Yard employee on hand sharing deployment advice, as well as other +language specific migration talks. + +That’s pretty much a full day of Ruby learning and the best news is that +attendance is free. They are even throwing in some food. + +If you’re going to be in the area, definitely come join us! + +You can find directions, a schedule, and other details about the +workshop at: + +[http://tulsarb.org/wiki/Tulsa\_Ruby\_Workshop][1] + +Hope to see you there. + + + +[1]: http://tulsarb.org/wiki/Tulsa_Ruby_Workshop diff --git a/fa/news/_posts/2008-05-22-server-maintenance-20080523.md b/fa/news/_posts/2008-05-22-server-maintenance-20080523.md new file mode 100644 index 0000000000..e56d2c21e6 --- /dev/null +++ b/fa/news/_posts/2008-05-22-server-maintenance-20080523.md @@ -0,0 +1,10 @@ +--- +layout: news_post +title: "Server maintenance" +author: "Shugo Maeda" +lang: en +--- + +Services on ruby-lang.org except SVN will be down for server maintenance +on Fri May 23 02:00:00 UTC 2008. Sorry for inconvenience. + diff --git a/fa/news/_posts/2008-05-31-ruby-1-8-7-has-been-released.md b/fa/news/_posts/2008-05-31-ruby-1-8-7-has-been-released.md new file mode 100644 index 0000000000..de4d8900ce --- /dev/null +++ b/fa/news/_posts/2008-05-31-ruby-1-8-7-has-been-released.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "Ruby 1.8.7 has been released" +author: "james" +lang: en +--- + +Akinori MUSHA announced today that Ruby 1.8.7 has been released. + +The new version of Ruby includes many bug fixes, lots of feature +enhancements backported from 1.9 and some performance improvements since +1.8.6 while maintaining stability and backward compatibility with the +previous release to a high degree. See the bundled documentation for +details about compatibility issues. + +The source code package is available in three formats at the following +locations: + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.bz2][1] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz][2] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.zip][3] + +Checksums: + +* MD5 (ruby-1.8.7.tar.bz2) = f17f14c8d55e731b3ce1bc35c42f0a6c +* SHA256 (ruby-1.8.7.tar.bz2) = + 65f2a862ba5e88bac7a78cff15bcb88d7534e741b51a1ffb79a0136c7041359a +* SIZE (ruby-1.8.7.tar.bz2) = 4100024 +^ + +* MD5 (ruby-1.8.7.tar.gz) = de906850f9a012c12ffc6e9f56fb1b66 +* SHA256 (ruby-1.8.7.tar.gz) = + 600dccf13bca3e4179fa6ff554220ce4ba67ffc72bce1ac3bf74c2599c03a0ca +* SIZE (ruby-1.8.7.tar.gz) = 4799732 +^ + +* MD5 (ruby-1.8.7.zip) = 14d3eb37b32e4a26966bdd80f361ccd2 +* SHA256 (ruby-1.8.7.zip) = + 805987ad167d8f9cac90e4b9342686e96a7708664111be27a3c6d680ce21d6c1 +* SIZE (ruby-1.8.7.zip) = 5851408 + +For a brief list of user visible changes and a full list of all changes, +see the bundled files named NEWS and ChangeLog, which are also available +at the following locations: + +* https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_7/NEWS +* https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_7/ChangeLog + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.bz2 +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.zip diff --git a/fa/news/_posts/2008-06-16-rubynation-2008.md b/fa/news/_posts/2008-06-16-rubynation-2008.md new file mode 100644 index 0000000000..eb7854cf46 --- /dev/null +++ b/fa/news/_posts/2008-06-16-rubynation-2008.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "RubyNation 2008" +author: "James Edward Gray II" +lang: en +--- + +RubyNation is an annual Ruby conference serving the Virginia, West +Virginia, Maryland, and Washington, DC areas. This year\'s RubyNation +will happen on August 1&2, 2008 in Herndon, VA. Please visit the +[RubyNation site][1] for more details. + + + +[1]: http://rubynation.org/ diff --git a/fa/news/_posts/2008-06-20-arbitrary-code-execution-vulnerabilities.md b/fa/news/_posts/2008-06-20-arbitrary-code-execution-vulnerabilities.md new file mode 100644 index 0000000000..1c8348f615 --- /dev/null +++ b/fa/news/_posts/2008-06-20-arbitrary-code-execution-vulnerabilities.md @@ -0,0 +1,78 @@ +--- +layout: news_post +title: "Arbitrary code execution vulnerabilities" +author: "Shugo Maeda" +lang: en +--- + +Multiple vulnerabilities in Ruby may lead to a denial of service (DoS) +condition or allow execution of arbitrary code. + +## Impact + +With the following vulnerabilities, an attacker can lead to denial of +service condition or execute arbitrary code. + +* [CVE-2008-2662][1] +* [CVE-2008-2663][2] +* [CVE-2008-2725][3] +* [CVE-2008-2726][4] +* [CVE-2008-2664][5] + +## Vulnerable versions + +1.8 series +: * 1\.8.4 and all prior versions + * 1\.8.5-p230 and all prior versions + * 1\.8.6-p229 and all prior versions + * 1\.8.7-p21 and all prior versions + +1.9 series +: * 1\.9.0-1 and all prior versions + +## Solution + +1.8 series +: Please upgrade to 1.8.5-p231, or 1.8.6-p230, or 1.8.7-p22. + + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p231.tar.gz>][6] + (md5sum: e900cf225d55414bffe878f00a85807c) + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p230.tar.gz>][7] + (md5sum: 5e8247e39be2dc3c1a755579c340857f) + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.gz>][8] + (md5sum: fc3ede83a98f48d8cb6de2145f680ef2) + +1.9 series +: Please upgrade to 1.9.0-2. + + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-2.tar.gz>][9] + (md5sum: 2a848b81ed1d6393b88eec8aa6173b75) + +These versions also fix the vulnerability of WEBrick +([CVE-2008-1891][10]). + +Please note that a package that corrects this weakness may already be +available through your package management software. + +## Credit + +Credit to Drew Yao of Apple Product Security for disclosing the problem +to Ruby Security Team. + +## Changes + +* 2008-06-21 00:29 +09:00 removed wrong CVE IDs (CVE-2008-2727, + CVE-2008-2728). + + + +[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2662 +[2]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2663 +[3]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2725 +[4]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2726 +[5]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2664 +[6]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p231.tar.gz +[7]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p230.tar.gz +[8]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.gz +[9]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-2.tar.gz +[10]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-1891 diff --git a/fa/news/_posts/2008-08-04-rubyconf-2008-proposals-now-being-accepted.md b/fa/news/_posts/2008-08-04-rubyconf-2008-proposals-now-being-accepted.md new file mode 100644 index 0000000000..306c9a3b8f --- /dev/null +++ b/fa/news/_posts/2008-08-04-rubyconf-2008-proposals-now-being-accepted.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "RubyConf 2008 Proposals Now Being Accepted" +author: "james" +lang: en +--- + +[RubyConf 2008][1] will be held in Orlando, Florida, USA, from November +6 to November 8. + +[Proposals for presentations][2] are now begin accepted. All proposals +must be received by August 21. + + + +[1]: http://www.rubyconf.org +[2]: http://www.rubyconf.org/proposals/new diff --git a/fa/news/_posts/2008-08-08-multiple-vulnerabilities-in-ruby.md b/fa/news/_posts/2008-08-08-multiple-vulnerabilities-in-ruby.md new file mode 100644 index 0000000000..6583d4cf7e --- /dev/null +++ b/fa/news/_posts/2008-08-08-multiple-vulnerabilities-in-ruby.md @@ -0,0 +1,173 @@ +--- +layout: news_post +title: "Multiple vulnerabilities in Ruby" +author: "Shugo Maeda" +lang: en +--- + +Multiple vulnerabilities have been discovered in Ruby. It\'s recommended +that you upgrade to the latest versions. + +## Details + +The following vulnerabilities have been discovered. + +### Several vulnerabilities in safe level + +Several vulnerabilities in safe level have been discovered. + +* untrace\_var is permitted at safe level 4. + + trace_var(:$VAR) {|val| puts "$VAR = #{val}" } + + Thread.new do + $SAFE = 4 + eval %q{ + proc = untrace_var :$VAR + proc.first.call("aaa") + } + end.join + +* $PROGRAM\_NAME may be modified at safe level 4. + + Thread.new do + $SAFE = 4 + eval %q{$PROGRAM_NAME.replace "Hello, World!"} + end.join + + $PROGRAM_NAME #=> "Hello, World!" + +* Insecure methods may be called at safe level 1-3. + + class Hello + def world + Thread.new do + $SAFE = 4 + msg = "Hello, World!" + def msg.size + self.replace self*10 # replace string + 1 # return wrong size + end + msg + end.value + end + end + + $SAFE = 1 # or 2, or 3 + s = Hello.new.world + if s.kind_of?(String) + puts s if s.size < 20 # print string which size is less than 20 + end + +* Syslog operations are permitted at safe level 4. + + require "syslog" + + Syslog.open + + Thread.new do + $SAFE = 4 + eval %q{ + Syslog.log(Syslog::LOG_WARNING, "Hello, World!") + Syslog.mask = Syslog::LOG_UPTO(Syslog::LOG_EMERG) + Syslog.info("masked") + Syslog.close + } + end.join + +These vulnerabilities were reported by Keita Yamaguchi. + +### DoS vulnerability in WEBrick + +WEBrick::HTTP::DefaultFileHandler is faulty of exponential time taking +requests due to a backtracking regular expression in +WEBrick::HTTPUtils.split\_header\_value. + +Exploitable server: + + require 'webrick' + WEBrick::HTTPServer.new(:Port => 2000, :DocumentRoot => "/etc").start + +Attack: + + require 'net/http' + res = Net::HTTP.start("localhost", 2000) { |http| + req = Net::HTTP::Get.new("/passwd") + req['If-None-Match'] = %q{meh=""} + %q{foo="bar" } * 100 + http.request(req) + } + p res + +The request likely won\'t finish in this universe. + +This vulnerability was reported by Christian Neukirchen. + +### Lack of taintness check in dl +{: #label-3} + +dl doesn\'t check taintness, so it could allow attackers to call +dangerous functions. + + require 'dl' + $SAFE = 1 + h = DL.dlopen(nil) + sys = h.sym('system', 'IP') + uname = 'uname -rs'.taint + sys[uname] + +This vulnerability was reported by sheepman. + +### DNS spoofing vulnerability in resolv.rb + +resolv.rb allow remote attackers to spoof DNS answers. This risk can be +reduced by randomness of DNS transaction IDs and source ports, so +resolv.rb is fixed to randomize them. + +* see also: [CVE-2008-1447][1] + +This vulnerability was reported by Tanaka Akira. + +## Vulnerable versions + +1.8 series +: * 1\.8.5 and all prior versions + * 1\.8.6-p286 and all prior versions + * 1\.8.7-p71 and all prior versions + +1.9 series +: * r18423 and all prior revisions + +## Solution + +1.8 series +: Please upgrade to 1.8.6-p287, or 1.8.7-p72. + + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz>][2] + * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz>][3] + +1.9 series + +: Please check out the latest version using Subversion. + + $ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby + +Please note that a package that corrects this weakness may already be +available through your package management software. + +## Credit + +Credit to Keita Yamaguchi, Christian Neukirchen, sheepman, and Tanaka +Akira for disclosing these problems to Ruby Security Team. + +## Changes + +* 2008-08-08 12:21 +09:00 fixed the revision number of ruby 1.9. +* 2008-08-11 11:23 +09:00 fixed the patchlevel of ruby 1.8. see [the + release announcement of Ruby 1.8.7-p72 and 1.8.6-p287][4] + + + +[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-1447 +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz +[4]: {{ site.url }}/en/news/2008/08/11/ruby-1-8-7-p72-and-1-8-6-p287-released/ diff --git a/fa/news/_posts/2008-08-11-ruby-1-8-7-p72-and-1-8-6-p287-released.md b/fa/news/_posts/2008-08-11-ruby-1-8-7-p72-and-1-8-6-p287-released.md new file mode 100644 index 0000000000..b9a4262574 --- /dev/null +++ b/fa/news/_posts/2008-08-11-ruby-1-8-7-p72-and-1-8-6-p287-released.md @@ -0,0 +1,63 @@ +--- +layout: news_post +title: "Ruby 1.8.7-p72 and 1.8.6-p287 released" +author: "Shugo Maeda" +lang: en +--- + +Ruby 1.8.7-p72 and 1.8.6-p287 have been released. The last releases were +incomplete, and the new releases include fixes of [the previously +announced vulnerability of dl][1]. + +The released source archives are available at: + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz>][2] +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.bz2>][3] +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.zip>][4] +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz>][5] +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.bz2>][6] +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.zip>][7] + +Checksums: + + MD5(ruby-1.8.6-p287.tar.gz)= f6cd51001534ced5375339707a757556 + SHA256(ruby-1.8.6-p287.tar.gz)= 6463d1932c34ff72b79174ac7d2c28940d29d147928250928a00a0dbee43db57 + SIZE(ruby-1.8.6-p287.tar.gz)= 4590393 + + MD5(ruby-1.8.6-p287.tar.bz2)= 80b5f3db12531d36e6c81fac6d05dda9 + SHA256(ruby-1.8.6-p287.tar.bz2)= ac15a1cb78c50ec9cc7e831616a143586bdd566bc865c6b769a0c47b3b3936ce + SIZE(ruby-1.8.6-p287.tar.bz2)= 3956902 + + MD5(ruby-1.8.6-p287.zip)= e555d51f5b387fdd52ae53d9bafa13f5 + SHA256(ruby-1.8.6-p287.zip)= 844c66c015565839531a34b83e0526cd4fa2a71cc0f5cc8ddb0d4c158403543a + SIZE(ruby-1.8.6-p287.zip)= 5606238 + + MD5(ruby-1.8.7-p72.tar.gz)= 5e5b7189674b3a7f69401284f6a7a36d + SHA256(ruby-1.8.7-p72.tar.gz)= e15ca005076f5d6f91fc856fdfbd071698a4cadac3c6e25855899dba1f6fc5ef + SIZE(ruby-1.8.7-p72.tar.gz)= 4805594 + + MD5(ruby-1.8.7-p72.tar.bz2)= 0b215c46b89b28d7ab8d56d96e72d5b9 + SHA256(ruby-1.8.7-p72.tar.bz2)= a8f8a28e286dd76747d8e97ea5cfe7a315eb896906ab8c8606d687d9f6f6146e + SIZE(ruby-1.8.7-p72.tar.bz2)= 4127450 + + MD5(ruby-1.8.7-p72.zip)= b44fe5a12d4bf138ba0d3660e13a8216 + SHA256(ruby-1.8.7-p72.zip)= 77e67be4aa8c3e041e1d20d24e5fcf2e33ad9bccb3da3332b6c0a5b648334903 + SIZE(ruby-1.8.7-p72.zip)= 5855902 + +For a full list of all changes, see the bundled files named ChangeLog, +which are also available at the following locations: + +* [<URL:https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_6\_287/ChangeLog>][8] +* [<URL:https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_7\_72/ChangeLog>][9] + + + +[1]: {{ site.url }}/en/news/2008/08/08/multiple-vulnerabilities-in-ruby/#label-3 +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.zip +[5]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.bz2 +[7]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.zip +[8]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_6_287/ChangeLog +[9]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_72/ChangeLog diff --git a/fa/news/_posts/2008-08-23-dos-vulnerability-in-rexml.md b/fa/news/_posts/2008-08-23-dos-vulnerability-in-rexml.md new file mode 100644 index 0000000000..d9197abc06 --- /dev/null +++ b/fa/news/_posts/2008-08-23-dos-vulnerability-in-rexml.md @@ -0,0 +1,103 @@ +--- +layout: news_post +title: "DoS vulnerability in REXML" +author: "Shugo Maeda" +lang: en +--- + +There is a DoS vulnerability in the REXML library included in the Ruby +Standard Library. A so-called \"XML entity explosion\" attack technique +can be used for remotely bringing down (disabling) any application which +parses user-provided XML using REXML. + +Most Rails applications will be vulnerable because Rails parses +user-provided XML using REXML by default. + +## Impact + +An attacker can cause a denial of service by causing REXML to parse a +document containing recursively nested entities such as: + +{% highlight xml %} +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE member [ + <!ENTITY a "&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;"> + <!ENTITY b "&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;"> + <!ENTITY c "&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;"> + <!ENTITY d "&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;"> + <!ENTITY e "&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;"> + <!ENTITY f "&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;"> + <!ENTITY g "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"> +]> +<member> +&a; +</member> +{% endhighlight %} + +## Vulnerable versions + +### 1.8 series + +* 1\.8.6-p287 and all prior versions +* 1\.8.7-p72 and all prior versions + +### 1.9 series + +* all versions + +## Solution + +Please download the following monkey patch to fix this problem. + +* [<URL:https://www.ruby-lang.org/security/20080823rexml/rexml-expansion-fix2.rb>][1] + +Then fix your application to load rexml-expansion-fix2.rb before using +REXML. + +{% highlight ruby %} +require "rexml-expansion-fix2" +... +doc = REXML::Document.new(str) +... +{% endhighlight %} + +If you have a Rails application, copy rexml-expansion-fix2.rb into a +directory on the load path (such as RAILS\_ROOT/lib/), and put the +following line into config/environment.rb. + +{% highlight ruby %} +require "rexml-expansion-fix2" +{% endhighlight %} + +If your application is Rails 2.1 or later, you can simply copy +rexml-expansion-fix2.rb to RAILS\_ROOT/config/initializers and it will +be required automatically. + +By default, XML entity expansion limit is 10000. You can change it by +changing REXML::Document.entity\_expansion\_limit. e.g. + +{% highlight ruby %} +REXML::Document.entity_expansion_limit = 1000 +{% endhighlight %} + +This fix will be made available as a gem and used by future versions of +rails, but users should take corrective action immediately. + +## Credit + +Credit to Luka Treiber and Mitja Kolsek of ACROS Security for disclosing +the problem to Ruby and Rails Security Teams. + +Credit to Michael Koziarski of Rails Core Team for creating the monkey +patch to fix the vulnerability. + +## Changes + +* 2008-08-29 18:46 +09:00 fixed the summary not to mislead that this + vulnerability is Rails specific. +* 2008-11-09 12:40 +09:00 fixed [a bug of the monkey patch][2]. + + + +[1]: {{ site.url }}/security/20080823rexml/rexml-expansion-fix2.rb +[2]: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502535 diff --git a/fa/news/_posts/2008-09-09-voices-that-matter-2008.md b/fa/news/_posts/2008-09-09-voices-that-matter-2008.md new file mode 100644 index 0000000000..e90a2ff351 --- /dev/null +++ b/fa/news/_posts/2008-09-09-voices-that-matter-2008.md @@ -0,0 +1,16 @@ +--- +layout: news_post +title: "Voices That Matter 2008" +author: "James Edward Gray II" +lang: en +--- + +Pearson Education is running a [Voices That Matter][1] Ruby conference +this fall in Boston. The conference, from the same people who +Addison-Wesley\'s Professional Ruby Series, will give you a chance to +meet and learn from those very same authors. Don\'t miss a chance to +interact with so many Ruby professionals. + + + +[1]: http://www.voicesthatmatter.com/ruby2008/ diff --git a/fa/news/_posts/2008-10-02-rubyconf-2008-is-sold-out.md b/fa/news/_posts/2008-10-02-rubyconf-2008-is-sold-out.md new file mode 100644 index 0000000000..0d7ec96819 --- /dev/null +++ b/fa/news/_posts/2008-10-02-rubyconf-2008-is-sold-out.md @@ -0,0 +1,16 @@ +--- +layout: news_post +title: "RubyConf 2008 is Sold-out" +author: "james" +lang: en +--- + +[RubyConf 2008][1] is sold out + +However, there is a [waiting list][2] you can join in case of +cancellations. + + + +[1]: http://rubyconf.org/ +[2]: http://www.regonline.com/builder/site/Default.aspx?eventid=636797 diff --git a/fa/news/_posts/2008-10-28-ruby-1-9-1-preview-1-released.md b/fa/news/_posts/2008-10-28-ruby-1-9-1-preview-1-released.md new file mode 100644 index 0000000000..ca448d67cf --- /dev/null +++ b/fa/news/_posts/2008-10-28-ruby-1-9-1-preview-1-released.md @@ -0,0 +1,43 @@ +--- +layout: news_post +title: "Ruby 1.9.1-preview 1 released" +author: "james" +lang: en +--- + +Yugui (Yuki Sonoda) announced the release of Ruby 1.9.1-preview 1: + +> This is a preview release of Ruby 1.9.1, which will be the first +> stable version of the Ruby 1.9 series. Try it out now and get an early +> taste of a modern, faster, multilingualized, and much improved Ruby +> with clearer syntax. +> If you encounter any bugs or problems, please let us know via the +> official issue tracking system: +> +> [https://bugs.ruby-lang.org][1] + +You can download the release from; + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.bz2][2] + SIZE: 6169022 bytes + MD5: 0d51dc949bb6b438ad4ebfabbb5f6754 + SHA256: dc39000537d7c7528ef26af8e1c3a6215b30b6c579c615eaec7013513410456a +^ + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.gz][3] + SIZE: 7409682 bytes + MD5: 738f701532452fd5d36f5c155f3ba692 + SHA256: 99443bdae9f94ba7b08de187881f8cbee172379edf9c5fa85fc04c869150ff6d +^ + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.zip][4] + SIZE: 8569116 bytes + MD5: 5f68246246c4cd29d8a3b6b34b29b6ac + SHA256: a6c3a7bf7ea83b595024764926353e08596a78e40c57ac58c568662e5e88df95 + + + +[1]: https://bugs.ruby-lang.org +[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.gz +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.zip diff --git a/fa/news/_posts/2008-11-08-mountainwest-rubyconf-2009-dates-and-cfp.md b/fa/news/_posts/2008-11-08-mountainwest-rubyconf-2009-dates-and-cfp.md new file mode 100644 index 0000000000..e66d07b27d --- /dev/null +++ b/fa/news/_posts/2008-11-08-mountainwest-rubyconf-2009-dates-and-cfp.md @@ -0,0 +1,24 @@ +--- +layout: news_post +title: "MountainWest RubyConf 2009 dates and CFP" +author: "james" +lang: en +--- + +[MountainWest RubyConf 2009][1] will be held March 13-14, 2009, in Salt +Lake City, Utah, USA. + +Proposals to speak at this regional conference are now being accepted. +Please send your proposal to proposals@mtnwestrubyconf.org. + +The submission deadline is midnight (MST) on December 31st, 2008. + +There are sponsorship opportunities available as well. Please contact +sponsorship@mtnwestruby.org if you are interested. + +Please see [mtnwestrubyconf.org/][1] for more details as they become +available. + + + +[1]: http://mtnwestrubyconf.org diff --git a/fa/news/_posts/2008-11-10-scotland-on-rails-2009.md b/fa/news/_posts/2008-11-10-scotland-on-rails-2009.md new file mode 100644 index 0000000000..cca18f7bcc --- /dev/null +++ b/fa/news/_posts/2008-11-10-scotland-on-rails-2009.md @@ -0,0 +1,29 @@ +--- +layout: news_post +title: "Scotland on Rails 2009" +author: "James Edward Gray II" +lang: en +--- + +[Scotland on Rails][1] is pleased to announce that Conference2009 will +be held March 26-28 in Edinburgh, Scotland. + +We are now accepting submissions. The closing date for submissions is +December 1st 2008, so there’s still time! Please mail your plaintext +proposals for 45 minute sessions to +[submissions@scotlandonrails.com](mailto:submissions@scotlandonrails.com). + +Alternatively, if you are interested in sponsoring the conference, +please mail +[sponsorship@scotlandonrails.com](mailto:sponsorship@scotlandonrails.com) +for a prospectus. + +Lastly, if you wish to be notified when we open for registration, you +can sign up on the site. + +Come and enjoy all that Edinburgh has to offer (whisky! castle! volcano! +ruby! whisky!) in March. We hope to see you there. + + + +[1]: http://scotlandonrails.com diff --git a/fa/news/_posts/2008-11-27-rubyconf-2008-summary-video.md b/fa/news/_posts/2008-11-27-rubyconf-2008-summary-video.md new file mode 100644 index 0000000000..7530d8408e --- /dev/null +++ b/fa/news/_posts/2008-11-27-rubyconf-2008-summary-video.md @@ -0,0 +1,16 @@ +--- +layout: news_post +title: "RubyConf 2008 Summary Video" +author: "James Edward Gray II" +lang: en +--- + +While RubyConf fans are waiting on the videos trickle in [Confreaks][1], +hold yourself over with the [31 minute summary video from Rails +Envy][2]. It\'s a perfect way to get an overview of what you missed at +the conference. + + + +[1]: http://rubyconf2008.confreaks.com/ +[2]: http://www.railsenvy.com/2008/11/26/rubyconf-videos diff --git a/fa/news/_posts/2008-12-23-mountainwest-rubyconf-2009-proposal-deadline-approaching.md b/fa/news/_posts/2008-12-23-mountainwest-rubyconf-2009-proposal-deadline-approaching.md new file mode 100644 index 0000000000..38a52b9301 --- /dev/null +++ b/fa/news/_posts/2008-12-23-mountainwest-rubyconf-2009-proposal-deadline-approaching.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "MountainWest RubyConf 2009 Proposal Deadline Approaching" +author: "james" +lang: en +--- + +[MountainWest RubyConf 2009][1] will be held March 13-14, 2009, in Salt +Lake City, Utah, USA. + +The submission deadline for presentation proposals is midnight (MST) on +December 31st, 2008. + +Please send your proposal to proposals@mtnwestrubyconf.org. + +Please see [mtnwestrubyconf.org/][1] for more details. + + + +[1]: http://mtnwestrubyconf.org diff --git a/fa/news/_posts/2009-01-28-20090131-server-maintenance.md b/fa/news/_posts/2009-01-28-20090131-server-maintenance.md new file mode 100644 index 0000000000..304613908d --- /dev/null +++ b/fa/news/_posts/2009-01-28-20090131-server-maintenance.md @@ -0,0 +1,8 @@ +--- +layout: news_post +title: "Server maintenance" +author: "Shugo Maeda" +lang: en +--- + +Services of ruby-lang.org will be unavailable for the server maintenance between 01:00-06:00 on 31 January 2009 (UTC). Sorry for any inconvenience. diff --git a/fa/news/_posts/2009-01-30-ruby-1-9-1-released.md b/fa/news/_posts/2009-01-30-ruby-1-9-1-released.md new file mode 100644 index 0000000000..99a1e4dccf --- /dev/null +++ b/fa/news/_posts/2009-01-30-ruby-1-9-1-released.md @@ -0,0 +1,61 @@ +--- +layout: news_post +title: "Ruby 1.9.1 released" +author: "james" +lang: en +--- + +Ruby 1.9.1 is released. This is the first stable release of the Ruby 1.9 +series. + +Ruby 1.9 is a new series of Ruby. It is modern, faster, with clearer +syntax, multilingualized, a much improved version of Ruby. + +Ruby 1.8 series has been used since 2003 and many great products were +born on it. + +Today, the Ruby 1.9 series starts its history as the 1.8 series did. + +Please note that Ruby 1.8 still remains. 1.8.8 will be released this +year. + +You can read about major changes since 1.8.7 [here][1] + +7 [bugs have been fixed][2] since 1.9.1 RC2. + +If you encounter any bugs or any problems, please report them using the +official issue [tracking system][3]. + +Download from + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2][4] + SIZE: 7190271 bytes + + MD5: 0278610ec3f895ece688de703d99143e + + SHA256: de7d33aeabdba123404c21230142299ac1de88c944c9f3215b816e824dd33321 +^ + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz][5] + SIZE: 9025004 bytes + + MD5: 50e4f381ce68c6de72bace6d75f0135b + + SHA256: a5485951823c8c22ddf6100fc9e10c7bfc85fb5a4483844033cee0fad9e292cc +^ + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.zip][6] + SIZE: 10273609 bytes + + MD5: 3377d43b041877cda108e243c6b7f436 + + SHA256: 00562fce4108e5c6024c4152f943eaa7dcc8cf97d5c449ac102673a0d5c1943b + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0/NEWS +[2]: https://bugs.ruby-lang.org/projects/ruby-19/issues?query_id=11 +[3]: https://bugs.ruby-lang.org +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2 +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.zip diff --git a/fa/news/_posts/2009-02-25-mountainwest-rubyconf-schedule.md b/fa/news/_posts/2009-02-25-mountainwest-rubyconf-schedule.md new file mode 100644 index 0000000000..8d2cf18e8c --- /dev/null +++ b/fa/news/_posts/2009-02-25-mountainwest-rubyconf-schedule.md @@ -0,0 +1,21 @@ +--- +layout: news_post +title: "MountainWest RubyConf Schedule" +author: "james" +lang: en +--- + +The schedule for the upcoming [MountainWest RubyConf][1] is +[available.][2] + +You can also keep track of the conference via twitter. Just follow +[@mwrc][3] + +MountainWest RubyConf is being held in Salt Lake City, UT, USA, March 13 +and 14 2009. + + + +[1]: http://mtnwestrubyconf.org/2009/index +[2]: http://mtnwestrubyconf.org/2009/schedule +[3]: http://twitter.com/mwrc diff --git a/fa/news/_posts/2009-04-18-ruby-1-8-7-p160-and-1-8-6-p368-released.md b/fa/news/_posts/2009-04-18-ruby-1-8-7-p160-and-1-8-6-p368-released.md new file mode 100644 index 0000000000..9dae93a36e --- /dev/null +++ b/fa/news/_posts/2009-04-18-ruby-1-8-7-p160-and-1-8-6-p368-released.md @@ -0,0 +1,71 @@ +--- +layout: news_post +title: "Ruby 1.8.7-p160 and 1.8.6-p368 released" +author: "Urabe Shyouhei" +lang: en +--- + +Updates to already-released Ruby 1.8.7 and 1.8.6 have been released. + +This time we have fixed dozens of bugs, including workarounds for +CVE-2007-1558. Many segfaults are also fixed. For a complete list of +what has been fixed, please read the ChangeLogs. + +The released tarballs are available at: + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.gz][1] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.bz2][2] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.zip][3] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.gz][4] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.bz2][5] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.zip][6] + +Checksums: + + + MD5(ruby-1.8.6-p368.tar.gz)= 508bf1911173ac43e4e6c31d9dc36b8f + SHA256(ruby-1.8.6-p368.tar.gz)= cc8cad3edd02d8c2de3c63a7d8a5cb85af39766dd47360a9c0f26339b101e2a0 + SIZE(ruby-1.8.6-p368.tar.gz)= 4602095 + + MD5(ruby-1.8.6-p368.tar.bz2)= 623447c6d8c973193aae565a5538ccfc + SHA256(ruby-1.8.6-p368.tar.bz2)= 1bd398a125040261f8e9e74289277c82063aae174ada9f300d2bea0a42ccdcc1 + SIZE(ruby-1.8.6-p368.tar.bz2)= 3967709 + + MD5(ruby-1.8.6-p368.zip)= 3d301a4b1aded1922570585bbece2c29 + SHA256(ruby-1.8.6-p368.zip)= 8ba4bfd14d2914bfe2c18ffa9da084234be978fd0eee654f7a5c732a1beb0246 + SIZE(ruby-1.8.6-p368.zip)= 5619494 + + MD5(ruby-1.8.7-p160.tar.gz)= 945398f97e2de6dd8ab6df68d10bb1a1 + SHA256(ruby-1.8.7-p160.tar.gz)= 47c3d1ae6b3dbda230d04f258304516fc1da571fa757d5e1d8d0104b49045530 + SIZE(ruby-1.8.7-p160.tar.gz)= 4818817 + + MD5(ruby-1.8.7-p160.tar.bz2)= f8ddb886b8a81cf005f53e9a9541091d + SHA256(ruby-1.8.7-p160.tar.bz2)= e524a086212d2142c03eb6b82cd602adcac9dcf8bf60049e89aa4ca69864984d + SIZE(ruby-1.8.7-p160.tar.bz2)= 4137518 + + MD5(ruby-1.8.7-p160.zip)= 06319bafa225df47fe26dfb52bc174a7 + SHA256(ruby-1.8.7-p160.zip)= c56fefbb9e7e186bf9feeb864793ad2a53062ce871b47ab0170316e38f738995 + SIZE(ruby-1.8.7-p160.zip)= 5876269 + +The ChangeLogs are bundled into those tarballs, and also available at +the following locations: + +* [https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_6\_368/ChangeLog][7] +* [https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_7\_160/ChangeLog][8] + +### Updates + +* Earlier version of this document said it fixed CVE-2008-1447, but that + has already been included in 1.8.7-p160 / 1.8.6-p368. Thanks to Tomas + Hoger. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.gz +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.zip +[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.gz +[5]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.bz2 +[6]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.zip +[7]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_6_368/ChangeLog +[8]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_160/ChangeLog diff --git a/fa/news/_posts/2009-05-12-ruby-1-9-1-p129-released.md b/fa/news/_posts/2009-05-12-ruby-1-9-1-p129-released.md new file mode 100644 index 0000000000..94bb68c764 --- /dev/null +++ b/fa/news/_posts/2009-05-12-ruby-1-9-1-p129-released.md @@ -0,0 +1,13 @@ +--- +layout: news_post +title: "Ruby 1.9.1-p129 released" +author: "Administrator" +lang: en +--- + +Ruby 1.9.1-p129 has been released. + +This is a patch level release for Ruby 1.9.1. This fixes many bugs and +two security vulnerabilities. This release contains security fix so we +recommend all 1.9.1 users to upgrade your ruby. + diff --git a/fa/news/_posts/2009-05-23-ruby-1-8-6-maintenance-moved-to-engine-yard.md b/fa/news/_posts/2009-05-23-ruby-1-8-6-maintenance-moved-to-engine-yard.md new file mode 100644 index 0000000000..2599fbb26c --- /dev/null +++ b/fa/news/_posts/2009-05-23-ruby-1-8-6-maintenance-moved-to-engine-yard.md @@ -0,0 +1,24 @@ +--- +layout: news_post +title: "Ruby 1.8.6 maintenance moved to Engine Yard" +author: "Urabe Shyouhei" +lang: en +--- + +Recently we have a welcome, historic development that the Ruby 1.8.6\'s +maintenance stewardship moved from me (Urabe Shyouhei) to Kirk Haines of +Engine Yard. + +Ruby 1.8.6 was released on 2007, and the Ruby core team has provided +supports such as bug fixes and security alerts since then. As Ruby 1.8.6 +became widely used, users asked us to last those support longer than we +thought earlier. That was basically OK for us except one thing: who is +to do that. Engine Yard kindly came forward to do the job, and we have +worked on moving needed privileges from us to them. This announce is to +finish that process. + +This issue do not affect those current Ruby 1.8.6 users in the short +run. Everything remains as they are. Users\' benefit is that bug fixes +and improvements for Ruby 1.8.6 lasts longer than we announced before. I +believe that is what everyone want. + diff --git a/fa/news/_posts/2009-06-09-dos-vulnerability-in-bigdecimal.md b/fa/news/_posts/2009-06-09-dos-vulnerability-in-bigdecimal.md new file mode 100644 index 0000000000..21e94b8bad --- /dev/null +++ b/fa/news/_posts/2009-06-09-dos-vulnerability-in-bigdecimal.md @@ -0,0 +1,52 @@ +--- +layout: news_post +title: "DoS vulnerability in BigDecimal" +author: "Urabe Shyouhei" +lang: en +--- + +A denial of service (DoS) vulnerability was found on the BigDecimal +standard library of Ruby. Conversion from BigDecimal objects into Float +numbers had a problem which enables attackers to effectively cause +segmentation faults. + +ActiveRecord relies on this method, so most Rails applications are +affected by this. Though this is not a Rails-specific issue. + +## Impact + +An attacker can cause a denial of service by causing BigDecimal to parse +an insanely large number, such as: + + + BigDecimal("9E69999999").to_s("F") + +## Vulnerable versions + +### 1.8 series + +* 1\.8.6-p368 and all prior versions +* 1\.8.7-p160 and all prior versions + +### 1.9 series + +* All 1.9.1 versions are not affected by this issue + +## Solution + +### 1.8 series + +Please upgrade to 1.8.6-p369 or ruby-1.8.7-p174. + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p369.tar.gz][1] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz][2] + +## Updates + +* Ruby 1.8.7-p173 had a problem. If you have already downloaded it, + please get a newer one. Ruby 1.8.6-p369 do not have this bug. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p369.tar.gz +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz diff --git a/fa/news/_posts/2009-07-20-ruby-1-9-1-p243-released.md b/fa/news/_posts/2009-07-20-ruby-1-9-1-p243-released.md new file mode 100644 index 0000000000..acfab13833 --- /dev/null +++ b/fa/news/_posts/2009-07-20-ruby-1-9-1-p243-released.md @@ -0,0 +1,52 @@ +--- +layout: news_post +title: "Ruby 1.9.1-p243 released" +author: "Yugui" +lang: en +--- + +Ruby 1.9.1-p243 has been released. + +This is a patch level release in the 1.9.1 series. It includes bug +fixes. + +see the [ChangeLog][1] for more details. + +#### Location + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.bz2>][2] + SIZE + : 7191348 bytes + + MD5 + : 66d4f8403d13623051091347764881a0 + + SHA256 + : 39c9850841c0dd5d368f96b854f97c19b21eb28a02200f8b4e151f608092e687 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz>][3] + SIZE + : 9043825 bytes + + MD5 + : 515bfd965814e718c0943abf3dde5494 + + SHA256 + : 31598e37b3962643bec722921644957be6f8fb9a26f6c91fa627bd668ea68be4 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.zip>][4] + SIZE + : 10307868 bytes + + MD5 + : 7086675f78185d72719132231b810e4d + + SHA256 + : 68a9847299269c5251dc61f7aad8482ab6022a6b1be13635d607fb593208b226 + + + +[1]: https://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_1/ChangeLog +[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.zip diff --git a/fa/news/_posts/2009-07-20-ruby-1-9-2-preview-1-released.md b/fa/news/_posts/2009-07-20-ruby-1-9-2-preview-1-released.md new file mode 100644 index 0000000000..67e5501b48 --- /dev/null +++ b/fa/news/_posts/2009-07-20-ruby-1-9-2-preview-1-released.md @@ -0,0 +1,60 @@ +--- +layout: news_post +title: "Ruby 1.9.2 preview 1 released" +author: "Yugui" +lang: en +--- + +Ruby 1.9.2 preview 1 has been released. + +This is a preview for the 1.9.2 series. It is just a snapshot. It still +have some known bugs, is sometimes unstable. Let us know your view on +it. + +* Socket API was more objectified. +* Time was reimplemented and enhanced. Now Time has no max/min value, no + year 2038 problem. +* New Random class for random number sequence. +* Good news for merb users: Method#parameters + +see the [NEWS][1] and the [ChangeLog][2] for more detail. + +#### Location + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.tar.bz2>][3] + SIZE + : 7487008 bytes + + MD5 + : 0b8f27ea78afcdc54d5d23e569aa0150 + + SHA256 + : 0681204e52207153250da80b3cc46812f94107807458a7d64b17554b6df71120 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.tar.gz>][4] + SIZE + : 9422226 bytes + + MD5 + : e2b8cdbf300f53472be09699a5837fd1 + + SHA256 + : 7f29ab3b1d5f0074bb82a6bf398f1cacd42fe508a17fc14844560c4d906786b6 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.zip>][5] + SIZE + : 10741739 bytes + + MD5 + : 253b5845e4b0f8250ae79c328b94e049 + + SHA256 + : cb132277476856535ee31e85929a3041877b0912868b7f64d1cf911a79463cdf + + + +[1]: https://svn.ruby-lang.org/repos/ruby/trunk/NEWS%0A +[2]: https://svn.ruby-lang.org/repos/ruby/trunk/ChangeLog%0A +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.tar.gz +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.zip diff --git a/fa/news/_posts/2009-08-03-call-for-proposals-for-rubyconf-2009.md b/fa/news/_posts/2009-08-03-call-for-proposals-for-rubyconf-2009.md new file mode 100644 index 0000000000..cecf8c1e3a --- /dev/null +++ b/fa/news/_posts/2009-08-03-call-for-proposals-for-rubyconf-2009.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "Call for Proposals for RubyConf 2009" +author: "james" +lang: en +--- + +The Call for Proposals for presenting at RubyConf 2009 is now open. + +The deadline for proposals is August 21, 2009. + +You need to sign up for an account at [rubyconf.org][1], and then you +can submit your proposal. + +RubyConf 2009 will take place November 19-21 2009, at the Embassy Suites +Hotel at the San Francisco Airport, California, USA. + + + +[1]: http://www.rubyconf.org diff --git a/fa/news/_posts/2009-09-04-rubyworld-conference.md b/fa/news/_posts/2009-09-04-rubyworld-conference.md new file mode 100644 index 0000000000..d547551512 --- /dev/null +++ b/fa/news/_posts/2009-09-04-rubyworld-conference.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "RubyWorld Conference" +author: "Shugo Maeda" +lang: en +--- + +[The RubyWorld Conference][1] will be held at the Shimane Prefectural +Convention Center “Kunibiki Messe”, Shimane Prefecture, during September +7th – 8th , 2009. + +[The talks at the International Conference Hall][2] will be live +broadcasted at [the official web site][1]. + +Stay tuned! + + + +[1]: http://www.rubyworld-conf.org/en/ +[2]: http://www.rubyworld-conf.org/en/program/ diff --git a/fa/news/_posts/2009-12-03-mountainwest-rubyconf-2010.md b/fa/news/_posts/2009-12-03-mountainwest-rubyconf-2010.md new file mode 100644 index 0000000000..b65aadfa01 --- /dev/null +++ b/fa/news/_posts/2009-12-03-mountainwest-rubyconf-2010.md @@ -0,0 +1,23 @@ +--- +layout: news_post +title: "MountainWest RubyConf 2010" +author: "james" +lang: en +--- + +MountainWest RubyConf 2010 will be held March 11 and 12, 2010, in Salt +Lake City, UT, USA. + +[http://mtnwestrubyconf.org][1] + +Talk proposals are being accepted right this very minute! + +Submit yours [here.][2] + +But don’t delay! The submission deadline is midnight (MST) on December +31st, 2009. + + + +[1]: http://mtnwestrubyconf.org +[2]: http://spreadsheets.google.com/viewform?formkey=dERsdEVIc0FTSlBtanVxTWFNamdHcmc6MA diff --git a/fa/news/_posts/2009-12-07-heap-overflow-in-string.md b/fa/news/_posts/2009-12-07-heap-overflow-in-string.md new file mode 100644 index 0000000000..c83f1936fe --- /dev/null +++ b/fa/news/_posts/2009-12-07-heap-overflow-in-string.md @@ -0,0 +1,39 @@ +--- +layout: news_post +title: "Heap overflow in String (CVE-2009-4124)" +author: "Yugui" +lang: en +--- + +There is a heap overflow vulnerability in `String#ljust`, +`String#center` and `String#rjust`. This has allowed an attacker to run +arbitrary code in some rare cases. + +* [CVE-2009-4124][1] + +## Vulnerable versions + +* All releases of Ruby 1.9.1. + +This vulnerability does not affect Ruby 1.8 series. + +## Solution + +Please upgrade to Ruby 1.9.1-p376. + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2>][2] + +## Credit + +Credit to Emmanouel Kellinis, KPMG London for disclosing the problem to +Ruby Security team. + +## Changes + +* 2009-12-07 14:52 +0900 add link to CVE (but not opened yet when + writing this page) + + + +[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-4124 +[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2 diff --git a/fa/news/_posts/2009-12-07-ruby-1-9-1-p376-is-released.md b/fa/news/_posts/2009-12-07-ruby-1-9-1-p376-is-released.md new file mode 100644 index 0000000000..1d2287a6ac --- /dev/null +++ b/fa/news/_posts/2009-12-07-ruby-1-9-1-p376-is-released.md @@ -0,0 +1,73 @@ +--- +layout: news_post +title: "Ruby 1.9.1-p376 is released" +author: "Yugui" +lang: en +--- + +Ruby 1.9.1-p376 just has been released. This is a patch level release of +Ruby 1.9.1 and includes the fix of CVE-2009-4124. + +#### CVE-2009-4124 + +The previous release, Ruby 1.9.1-p243 has a [security vulnerability that +allows heap overflow][1]. This vulnerability was found by Emmanouel +Kellinis, KPMG London. + +I recommend all Ruby 1.9.1 users to upgrade to p376. But the +vulnerability does not affect Ruby 1.8 series. + +#### Other fixes + +In addition, 1.9.1-p376 includes > 100 bug fixes. + +* Irb extension commands had been broken. It was fixed. +* Ripper had not been able to parse some Ruby codes. It was fixed. +* Fixed build failures on AIX. +* Some bug fixes of Matrix. +* Can load gems which is installed in an user\'s home directory. +* Some method became returning a string with a correct encoding. + +See the ChangeLog for more detail. + +* [<URL:https://svn.ruby-lang.org/repos/ruby/branches/ruby\_1\_9\_1/ChangeLog>][2] + +#### Location + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2>][3] + SIZE + : 7293106 bytes + + MD5 + : e019ae9c643c5efe91be49e29781fb94 + + SHA256 + : 79164e647e23bb7c705195e0075ce6020c30dd5ec4f8c8a12a100fe0eb0d6783 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.gz>][4] + SIZE + : 9073007 bytes + + MD5 + : ebb20550a11e7f1a2fbd6fdec2a3e0a3 + + SHA256 + : 58b8fc1645283fcf3d5be195dffcaf55b7c85cbc210074273b57b835409b21ca + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.zip>][5] + SIZE + : 10337871 bytes + + MD5 + : d4d5e62f65cb92a281f1569a7f25371b + + SHA256 + : 486d3efdab269040ce7142964ba3a4e0d46f0a5b812136bcac7e5bafc726c14e + + + +[1]: {{ site.url }}/en/news/2009/12/07/heap-overflow-in-string/ +[2]: https://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_1/ChangeLog +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.gz +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.zip diff --git a/fa/news/_posts/2009-12-25-ruby-1-8-7-p248-released.md b/fa/news/_posts/2009-12-25-ruby-1-8-7-p248-released.md new file mode 100644 index 0000000000..70648d807b --- /dev/null +++ b/fa/news/_posts/2009-12-25-ruby-1-8-7-p248-released.md @@ -0,0 +1,37 @@ +--- +layout: news_post +title: "Ruby 1.8.7-p248 released" +author: "Urabe Shyouhei" +lang: en +--- + +We now have a series of patches to fix various bugs against 1.8.7 so I +(Urabe Shyouhei) decided to release them. Here they are. + +* [ruby-1.8.7-p248.tar.gz][1] +* [ruby-1.8.7-p248.tar.bz2][2] +* [ruby-1.8.7-p248.zip][3] + +And excuse me for absence of a detailed release note... Please read the +[ChangeLog][4] instead. + +Checksums: + + MD5(ruby-1.8.7-p248.tar.gz)= 60a65374689ac8b90be54ca9c61c48e3 + SHA256(ruby-1.8.7-p248.tar.gz)= 5c9cd617a2ec6b40abd7c7bdfce3256888134482b22f933a061ae18fb4b48755 + SIZE(ruby-1.8.7-p248.tar.gz)= 4831010 + + MD5(ruby-1.8.7-p248.tar.bz2)= 37e19d46b7d4b845f57d3389084b94a6 + SHA256(ruby-1.8.7-p248.tar.bz2)= 3d238c4cf0988797d33169ab05829f1a483194e7cacae4232f3a0e2cc01b6bfc + SIZE(ruby-1.8.7-p248.tar.bz2)= 4153123 + + MD5(ruby-1.8.7-p248.zip)= 819b9db9bcd4aa9a70f1193380a318c9 + SHA256(ruby-1.8.7-p248.zip)= c133ecf35d5509e61443db05c9691bea6c6f63b87600a452b742014767bd98b3 + SIZE(ruby-1.8.7-p248.zip)= 5889980 + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p248.tar.gz +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p248.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p248.zip +[4]: https://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1_8_7_248/ChangeLog diff --git a/fa/news/_posts/2010-01-10-webrick-escape-sequence-injection.md b/fa/news/_posts/2010-01-10-webrick-escape-sequence-injection.md new file mode 100644 index 0000000000..1fcb359591 --- /dev/null +++ b/fa/news/_posts/2010-01-10-webrick-escape-sequence-injection.md @@ -0,0 +1,84 @@ +--- +layout: news_post +title: "WEBrick has an Escape Sequence Injection vulnerability" +author: "Urabe Shyouhei" +lang: en +--- + +A vulnerability was found on WEBrick, a part of Ruby\'s standard +library. WEBrick lets attackers to inject malicious escape sequences to +its logs, making it possible for dangerous control characters to be +executed on a victim\'s terminal emulator. + +We already have a fix for it. Releases for every active branches are to +follow this announce. But for a meantime, we recommend you to avoid +looking at your WEBrick logs, until you update your WEBrick process. + +## Detailed description + +Terminal escape sequences are used to allow various forms of interaction +between a terminal and a inside process. The problem is that those +sequences are not intended to be issued by untrusted sources; such as +network inputs. So if a remote attacker could inject escape sequences +into WEBrick logs, and a victim happen to consult them through his/her +terminal, the attacker could take advantages of various [weaknesses in +terminal emulators][1]. + +And WEBrick fails to filter those terminal escape sequences. + +Example: + + % xterm -e ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port=>8080).start' & + % wget http://localhost:8080/%1b%5d%32%3b%6f%77%6e%65%64%07%0a + +Watch out for the window title of xterm. + +## Affected versions + +* Ruby 1.8.6 patchlevel 383 and all prior versions +* Ruby 1.8.7 patchlevel 248 and all prior versions +* Development versions of Ruby 1.8 (1.8.8dev) +* Ruby 1.9.1 patchlevel 376 and all prior versions +* Development versions of Ruby 1.9 (1.9.2dev) + +## Solutions + +* Fixes for 1.8.6, 1.8.7, and 1.9.1 are to follow this announce. + * **Update** 1.8.7 pl. 249 was released to fix this issue. 1.8.7 users + are encouraged to upgrade. + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz][2] + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.bz2][3] + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.zip][4] + + * **Update** 1.9.1 pl. 378 was released to fix this issue. 1.9.1 users + are encouraged to upgrade. + * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz][5] + * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.bz2][6] + * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.zip][7] + + * **Update** 1.8.6 pl. 388 was released to fix this issue. 1.8.6 users + are encouraged to upgrade. + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.gz][8] + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.bz2][9] + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.zip][10] + +* For development versions, please update to the most recent revision + for each development branch. + +## Credit + +Credit to Giovanni \"evilaliv3\" Pellerano, Alessandro \"jekil\" Tanasi, +and Francesco \"ascii\" Ongaro for discovering this vulnerability. + + + +[1]: http://marc.info/?l=bugtraq&m=104612710031920&w=2 "Terminal Emulator Security Issues" +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.zip +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.bz2 +[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.zip +[8]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.gz +[9]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.bz2 +[10]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.zip diff --git a/fa/news/_posts/2010-03-06-rubynation-2010.md b/fa/news/_posts/2010-03-06-rubynation-2010.md new file mode 100644 index 0000000000..659a7e5f30 --- /dev/null +++ b/fa/news/_posts/2010-03-06-rubynation-2010.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "RubyNation 2010" +author: "James Edward Gray II" +lang: en +--- + +RubyNation, Washington D.C.’s Ruby Community Conference, will be held +April 9 and 10, 2010, in Reston, VA, USA. + +You can learn more and register here: [http://rubynation.org/][1] + +But hurry! RubyNation is close to being sold out. + + + +[1]: http://rubynation.org/ diff --git a/fa/news/_posts/2010-03-17-red-dirt-rubyconf-2010.md b/fa/news/_posts/2010-03-17-red-dirt-rubyconf-2010.md new file mode 100644 index 0000000000..f9ef87d94c --- /dev/null +++ b/fa/news/_posts/2010-03-17-red-dirt-rubyconf-2010.md @@ -0,0 +1,115 @@ +--- +layout: news_post +title: "Red Dirt RubyConf 2010" +author: "James Edward Gray II" +lang: en +--- + +Registration is now open for the [Red Dirt RubyConf][1]. Our \"early +bird\" special ends in ten days, so [sign-up now][2] for the best +prices. + +We have an excellent program of speakers and a ton of surprises in store +for attendees. We\'re starting this conference with a bang, so don\'t +miss it! + +I\'m really proud of [the program][3] we have put together, so check +this out if you haven\'t seen it yet: + +## Keynotes + +**Living here in hell—Ruby and the search for perfection**<br> +Dave Thomas, The Pragmatic Programmers + +**(Parenthetically Speaking)**<br> +Jim Weirich, EdgeCase + +## Ruby + +**Ruby and the Unix Philosophy**<br> +Matt Yoho, Hashrocket + +**Sinatra: Microapps Running on Rack**<br> +Tim Gourley, Engine Yard + +**Javascript and Friends: Scripting Ruby with JavaScript for Fun and +Profit**<br> +Charles Lowell, The Frontside Software, Inc + +**Design and Modularity in Ruby**<br> +Glenn Vanderburg, Relevance, Inc. + +## Rails 3 + +**Rails in the Large: How We\'re Building One of the Largest Rails Apps +for an Enterprise**<br> +Neal Ford, ThoughtWorks + +**Bundler: Painless Dependency Management**<br> +André Arko, Engine Yard + +**Active Record Makeover: Rekindle the relationship**<br> +Marty Haught, Haught Codeworks + +**With a Mighty Hammer**<br> +Ben Scofield, Viget Labs + +## NoSQL + +**Scaling with Cassandra**<br> +Ryan King, Twitter + +**Data Driven Applications with Ruby and MongoDB**<br> +Kyle Banker and John Taber, 10gen and Tiger Nassau, Inc + +**CouchDB, Ruby, and You**<br> +Will Leinweber, merge.fm + +**Plain Old Tokyo Storage**<br> +Jeremy Hinegardner, Collective Intellect + +## Servers/Hosting + +**Rails and Sinatra on Google AppEngine**<br> +John Woodell, Google + +**Rumble in the Jungle...**<br> +Fernand Galiana, liquidrail llc + +**Redis To The Resque**<br> +Jade Meskill, Integrum Technologies + +**The Rise of DevOps**<br> +Corey Donohoe, Teamsters + +## Trainings + +**The Ruby Your Mother Warned You About**<br> +James Edward Gray II and Glenn Vanderburg, +Gray Productions Software Inc. and Relevance, Inc. + +**The Rails 3 Ropes Course**<br> +Gregg Pollack, Envy Labs + +**Introduction to Riak**<br> +Sean Cribbs, Basho + +**Living Among the Clouds**<br> +Jim Mulholland and Jason Derrett, Squeejee + +## Other Highlights + +* A hackfest is planned +* There will be a live recording of the Ruby5 podcast +* We will have good food (seriously!) + +I hope you all find that as exciting as I do and I hope to see you +there! + +James Edward Gray II + + + +[1]: http://reddirtrubyconf.com/ +[2]: http://reddirtrubyconf.com/register_to_attend +[3]: http://reddirtrubyconf.com/program diff --git a/fa/news/_posts/2010-03-26-ruby-summer-of-code-2010.md b/fa/news/_posts/2010-03-26-ruby-summer-of-code-2010.md new file mode 100644 index 0000000000..7941b51532 --- /dev/null +++ b/fa/news/_posts/2010-03-26-ruby-summer-of-code-2010.md @@ -0,0 +1,32 @@ +--- +layout: news_post +title: "Ruby Summer of Code 2010" +author: "James Edward Gray II" +lang: en +--- + +Continuing in Google’s great tradition of encouraging student open +source development, [Ruby Central][1], [Engine Yard][2], and the [Rails +core team][3] are teaming up to present the first annual [Ruby Summer of +Code][4]. + +Head over to [rubysoc.org][4] to get started and follow [@rubysoc][5] +for news. + +The summer will follow Google’s example closely: + +* students are paid a $5000 stipend to work full-time during their + summer break +* a group of Ruby gurus volunteer their time as mentors +* mentors vote on student proposals based on usefulness, benefit to the + Ruby community, and history of motivated open source contribution + +The more we raise, the more students we can fund. [Donate now!][4] + + + +[1]: http://rubycentral.org/ +[2]: http://www.engineyard.com/blog/2010/ruby-summer-of-code-is-here/ +[3]: http://weblog.rubyonrails.org/2010/3/24/ruby-summer-of-code +[4]: http://rubysoc.org/ +[5]: http://twitter.com/rubysoc diff --git a/fa/news/_posts/2010-06-23-ruby-1-8-7-p299-released.md b/fa/news/_posts/2010-06-23-ruby-1-8-7-p299-released.md new file mode 100644 index 0000000000..e21ff2046b --- /dev/null +++ b/fa/news/_posts/2010-06-23-ruby-1-8-7-p299-released.md @@ -0,0 +1,33 @@ +--- +layout: news_post +title: "Ruby 1.8.7-p299 released" +author: "Urabe Shyouhei" +lang: en +--- + +Hello all. It\'s time for a new release of 1.8.7. + +This time we fixed various bugs, including the Unicode inspection bug +that annoyed you a lot. For a complete list of what has been fixed, +please take a look at the ChangeLog. + +* https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.gz +* https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.bz2 +* https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.zip + +Checksums: + + MD5(ruby-1.8.7-p299.tar.gz)= 43533980ee0ea57381040d4135cf9677 + SHA256(ruby-1.8.7-p299.tar.gz)= 32c99c8e3d0a0190942055b8239f1573677a02de2645d81539617011f3a5427b + SIZE(ruby-1.8.7-p299.tar.gz)= 4867600 + + MD5(ruby-1.8.7-p299.tar.bz2)= 244439a87d75ab24170a9c2b451ce351 + SHA256(ruby-1.8.7-p299.tar.bz2)= 3d8a1e4204f1fb69c9e9ffd637c7f7661a062fc2246c559f25fda5312cfd65d8 + SIZE(ruby-1.8.7-p299.tar.bz2)= 4183359 + + MD5(ruby-1.8.7-p299.zip)= b548dbdfc036979bdcb5e0962c87c9eb + SHA256(ruby-1.8.7-p299.zip)= 30e3ed4ce977a770223f34997ea0d025c180c4664a0bd0d35ef09e48d5c89860 + SIZE(ruby-1.8.7-p299.zip)= 5965156 + +Enjoy! + diff --git a/fa/news/_posts/2010-07-02-ruby-1-9-1-p429-is-released.md b/fa/news/_posts/2010-07-02-ruby-1-9-1-p429-is-released.md new file mode 100644 index 0000000000..2cce9d581a --- /dev/null +++ b/fa/news/_posts/2010-07-02-ruby-1-9-1-p429-is-released.md @@ -0,0 +1,55 @@ +--- +layout: news_post +title: "Ruby 1.9.1-p429 is released" +author: "Yugui" +lang: en +--- + +Ruby 1.9.1-p429 has just been released. This is a patchlevel release for +Ruby 1.9.1. This fixes many bugs and includes the fix for a security +vulnerability that allows an attacker to execute an arbitrary code. + +## Vulnerability + +### Description + +A security vulnerability that causes buffer overflow when you assign a +danger value to `ARGF.inplace_mode` on Windows. It possibly allows an +attacker to execute an arbitrary code. + +The affected versions are: + +* Ruby 1.9.1 patchlevel 378 and all prior versions; +* Ruby 1.9.2 preview 3 and all prior versions; +* Development versions of Ruby 1.9 (1.9.3dev). + +I recommend you to upgrade your ruby 1.9 to 1.9.1-p429 or 1.9.2-rc1. + +The vulnerability does not directly affect to Ruby 1.8 series. + +### Credit + +The vulnerability was found and reported by Masaya TARUI. + +## Download + +* [ruby-1.9.1-p429.tar.bz2][1] + * SIZE: 7300923 bytes + * MD5: 09df32ae51b6337f7a2e3b1909b26213 + * SHA256: e0b9471d77354628a8041068f45734eb2d99f5b5df08fe5a76d785d989a47bfb + +* [ruby-1.9.1-p429.tar.gz][2] + * SIZE: 9078126 bytes + * MD5: 0f6d7630f26042e00bc59875755cf879 + * SHA256: fdd97f52873b70f378ac73c76a1b2778e210582ce5fe1e1c241c37bd906b43b2 + +* [ruby-1.9.1-p429.zip][3] + * SIZE: 10347659 bytes + * MD5: fcd031414e5e4534f97aa195bb586d6c + * SHA256: c9fe2364b477ad004030f4feeb89aeaa2a01675ff95db1bed31a932806f85680 + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p429.tar.bz2 +[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p429.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p429.zip diff --git a/fa/news/_posts/2010-07-02-ruby-1-9-2-rc1-is-released.md b/fa/news/_posts/2010-07-02-ruby-1-9-2-rc1-is-released.md new file mode 100644 index 0000000000..280fe98189 --- /dev/null +++ b/fa/news/_posts/2010-07-02-ruby-1-9-2-rc1-is-released.md @@ -0,0 +1,61 @@ +--- +layout: news_post +title: "Ruby 1.9.2 RC1 is released" +author: "Yugui" +lang: en +--- + +Ruby 1.9.2 RC has just been released. This is a release candidate of +Ruby 1.9.2. + +## About Ruby 1.9.2 + +Ruby 1.9.2 will be mostly compatible with 1.9.1, except for the +following changes: + +* many new methods +* new socket API (IPv6 support) +* new encodings +* a `Random` class that supports various random number generators +* `Time` has been reimplemented. There is no longer the year 2038 issue. +* some regexp enhancements +* `$:` no longer includes the current directory +* `dl` is reimplemented on top of `libffi` +* new `psych` library that wraps `libyaml`. You can use the library + instead of `syck` + +See the [NEWS][1] and [ChangeLog][2] files for more details. + +About 130 bugs have been fixed since the 1.9.2 preview 3 release. All +major known bugs in the 1.9.2 were fixed, except for [#3462][3]. + +Due to our schedule, Ruby 1.9.2 will be released in early August. The +schedule of Ruby 1.9.2 has slipped in order to ensure that 1.9.2 passes +the RubySpec. It now passes more than 99% of RubySpecs. Try out the new +Ruby and let us know via [our issue tracker][4] if you have any issues. + +## Download + +* [ruby-1.9.2-rc1.tar.bz2][5] + * SIZE: 8479087 bytes + * MD5: 242dcfaed8359a6918941b55d0806bf0 + * SHA256: c2a680aa5472c8d04a71625afa2b0f75c030d3655a3063fe364cfda8b33c1480 + +* [ruby-1.9.2-rc1.tar.gz](URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc1.tar.gz) + * SIZE: 10779309 bytes + * MD5: fdedd5b42ae89a9a46797823ad2d9acf + * SHA256: 3e90036728342ce8463be00d42d4a36de70dabed96216c5f8a26ec9ba4b29537 + +* [ruby-1.9.2-rc1.zip][6] + * SIZE: 12158992 bytes + * MD5: 3da59c5d3567f6e1f1697abbef71f507 + * SHA256: 4f593a3d0873cea8f371a7fc7484cad7bc03acac0ada1970cb9f83a89bc27997 + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_rc1/NEWS +[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_rc1/ChangeLog +[3]: https://bugs.ruby-lang.org/issues/show/3462 +[4]: https://bugs.ruby-lang.org/projects/show/ruby-19/ +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc1.tar.bz2 +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc1.zip diff --git a/fa/news/_posts/2010-07-11-ruby-1-9-2-rc2-is-released.md b/fa/news/_posts/2010-07-11-ruby-1-9-2-rc2-is-released.md new file mode 100644 index 0000000000..2c117a8b38 --- /dev/null +++ b/fa/news/_posts/2010-07-11-ruby-1-9-2-rc2-is-released.md @@ -0,0 +1,62 @@ +--- +layout: news_post +title: "Ruby 1.9.2 RC2 is released" +author: "Yugui" +lang: en +--- + +Ruby 1.9.2 RC2 has just been released. This is the second release +candidate of Ruby 1.9.2. + +The psych library has been fixed since the previous candidate, and some +minor bugs were fixed. + +See the [NEWS][1] and [ChangeLog][2] files for more details. + +## About Ruby 1.9.2 + +Ruby 1.9.2 will be mostly compatible with 1.9.1, except for the +following changes: + +* many new methods +* new socket API (IPv6 support) +* new encodings +* a `Random` class that supports various random number generators +* `Time` has been reimplemented. There is no longer the year 2038 issue. +* some regexp enhancements +* `$:` no longer includes the current directory +* `dl` is reimplemented on top of `libffi` +* new `psych` library that wraps `libyaml`. You can use the library + instead of `syck` + +Ruby 1.9.2 has gotten stable as we expected. Due to our schedule, Ruby +1.9.2 will be released in early August. The schedule of Ruby 1.9.2 has +slipped in order to ensure that 1.9.2 passes the RubySpec. It now passes +more than 99% of RubySpecs. Try out the new Ruby and let us know via +[our issue tracker][3] if you have any issues. + +## Download + +* [ruby-1.9.2-rc2.tar.bz2][4] + * SIZE: 8480974 bytes + * MD5: 4e4906d0aab711286b31f5a834860cc3 + * SHA256: 692ebae991b104482dc9f0d220c1afb6b690a338b3b815aaa4f62954d2fa1b4a + +* [ruby-1.9.2-rc2.tar.gz][5] + * SIZE: 10781884 bytes + * MD5: d12cd39eee4d99bc54b52aba5a0ba4e1 + * SHA256: 5d523d99f928705ac1de84ade03283c468415c00f8b6755a8dd7a140828869b4 + +* [ruby-1.9.2-rc2.zip][6] + * SIZE: 12161233 bytes + * MD5: 05229b43981e4e5ce58b5fb2e98eee52 + * SHA256: 33f7f4cdd8444c2594728f70ac07477575a7cba5e7756bd3645f23e52605618c + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_rc2/NEWS +[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_rc2/ChangeLog +[3]: https://bugs.ruby-lang.org/projects/show/ruby-19/ +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc2.tar.bz2 +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc2.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc2.zip diff --git a/fa/news/_posts/2010-08-16-ruby-1-8-7-p302-is-released.md b/fa/news/_posts/2010-08-16-ruby-1-8-7-p302-is-released.md new file mode 100644 index 0000000000..46dbab7a40 --- /dev/null +++ b/fa/news/_posts/2010-08-16-ruby-1-8-7-p302-is-released.md @@ -0,0 +1,55 @@ +--- +layout: news_post +title: "Ruby 1.8.7-p302 is released" +author: "maki" +lang: en +--- + +Ruby 1.8.7-p302 has been released([\[ruby-talk:367769\]][1]). This is a +security fix for CVE-2010-0541. See [the vulnerability report][2] for +more details. + +I recommend all Ruby 1.8.7 users to upgrade the 1.8.7 to p302. + +## Downloads + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.bz2>][3] + +SIZE(ruby-1.8.7-p302.tar.bz2): +: 4184764 bytes + +MD5(ruby-1.8.7-p302.tar.bz2): +: a6a9e37079ed8cf8726b455dad3de939 + +SHA256(ruby-1.8.7-p302.tar.bz2): +: 3537cc81cc2378a2bc319cd16c4237ddee14a2839cfd1515b27dce108d061a68 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.gz>][4] + +SIZE(ruby-1.8.7-p302.tar.gz): +: 4866763 bytes + +MD5(ruby-1.8.7-p302.tar.gz): +: f446550dfde0d8162a6ed8d5a38b3ac2 + +SHA256(ruby-1.8.7-p302.tar.gz): +: 5883df5204de70762602ce885b18c8bf6c856d33298c35df9151031b2ce044a1 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.zip>][5] + +SIZE(ruby-1.8.7-p302.zip): +: 5965421 bytes + +MD5(ruby-1.8.7-p302.zip): +: 56cb754af4bbd5ec3bfbdb8af3ee72a7 + +SHA256(ruby-1.8.7-p302.zip): +: f50d6ae1a7247674b6a07e54cbd6704a6951ba20277cd7dc23d1453ffe00fedb + + + +[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/367769 +[2]: {{ site.url }}/en/news/2010/08/16/xss-in-webrick-cve-2010-0541/ +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.gz +[5]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.zip diff --git a/fa/news/_posts/2010-08-16-ruby-1-9-1-p430-is-released.md b/fa/news/_posts/2010-08-16-ruby-1-9-1-p430-is-released.md new file mode 100644 index 0000000000..bc869e647d --- /dev/null +++ b/fa/news/_posts/2010-08-16-ruby-1-9-1-p430-is-released.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "Ruby 1.9.1-p430 is released" +author: "Yugui" +lang: en +--- + +Ruby 1.9.1-p430 has been released. This is a security fix for +CVE-2010-0541. See [the vulnerability report][1] for more details. + +I recommend all Ruby 1.9.1 users to upgrade the 1.9.1 to p430. + +### Downloads + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.bz2>][2] + SIZE + : 7299829 bytes + + MD5 + : f855103aebeb3318dccb409319b547a0 + + SHA256 + : 8d5cc11d819e476fb651db783f714cc4100922f47447f7acdce87ed769cf9d97 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.gz>][3] + SIZE + : 9078229 bytes + + MD5 + : 093d17e911b1f7306de95422ec332826 + + SHA256 + : 6d28120e792a4a1cf32dd5f90c1643ecb48760157322a1bb267dd784d14fcb3a + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.zip>][4] + SIZE + : 10347823 bytes + + MD5 + : a16d7e3ef2ddbf230cb4dab6c917c8aa + + SHA256 + : 004713d27bfd1ccadf656e88f23d9a78ff5f9265079e8ce947faa6fff0da40d6 + + + +[1]: {{ site.url }}/en/news/2010/08/16/xss-in-webrick-cve-2010-0541/ +[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.gz +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.zip diff --git a/fa/news/_posts/2010-08-16-xss-in-webrick-cve-2010-0541.md b/fa/news/_posts/2010-08-16-xss-in-webrick-cve-2010-0541.md new file mode 100644 index 0000000000..31510fcbf8 --- /dev/null +++ b/fa/news/_posts/2010-08-16-xss-in-webrick-cve-2010-0541.md @@ -0,0 +1,79 @@ +--- +layout: news_post +title: "XSS in WEBrick (CVE-2010-0541)" +author: "Yugui" +lang: en +--- + +A possible security vulnerability on WEBrick. The vulnerability has been +reported as [CVE-2010-0541][1]. + +### CVE-2010-0541 + +#### Description + +WEBrick have had a cross-site scripting vulnerability that allows an +attacker to inject arbitrary script or HTML via a crafted URI. This does +not affect user agents that strictly implement HTTP/1.1, however, some +user agents do not. + +The affected versions are: + +* Ruby 1.8.6-p399 or any prior releases. +* Ruby 1.8.7-p299 or any prior releases. +* Ruby 1.9.1-p429 or any prior releases. +* Ruby 1.9.2 RC2 or any prior releases. +* Development versions of Ruby 1.9 (1.9.3dev). + +We recommend you to upgrade your ruby to the newest patch level +releases. + +#### Solutions + +* Fixes for 1.8.6, 1.8.7 and 1.9.1 are to follow this announce. + * 1\.8.6: + * 1\.8.7: please upgrade to [1.8.7 patchlevel 302][2] + * 1\.9.1: please upgrade to [1.9.1 patchlevel 430][3] + +* For development versions, please update to the most recent revision + for each development branch. +* You can also fix the vulnerability by applying a patch to + `$(libdir)/ruby/${ruby_version}/webrick/httpresponse.rb`. + The patch is available at + [<URL:https://cache.ruby-lang.org/pub/misc/webrick-cve-2010-0541.diff>][4]. + It is written by Hirokazu NISHIO. + + SIZE: + : 466 bytes + + MD5: + : 395585e1aae7ddef842f0d1d9f5e6e07 + + SHA256: + : 6bf7dea0fc78f0425f5cbb90f78c3485793f27bc60c11244b6ba4023445f3567 + +#### Credit + +The vulnerability was found by Apple and reported to the Ruby security +team by Hideki Yamane. <sup>[\*1](#fn1)</sup> + +### Updates + +* Originally published at 2010-08-16 10:26:03 JST. +* 1\.9.1 patchlevel 430 released +* 1\.8.7 patchlevel 301 released +* 1\.8.7 patchlevel 302 released because pl301 was broken. Please use it + instead. + +* * * + +<sup>\*1</sup> <small>[\[ruby-dev:42003\]][5]</small> +{: #fn1} + + + +[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-0541 +[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/367769 +[3]: {{ site.url }}/en/news/2010/08/16/ruby-1-9-1-p430-is-released/ +[4]: https://cache.ruby-lang.org/pub/misc/webrick-cve-2010-0541.diff +[5]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/42003 diff --git a/fa/news/_posts/2010-08-18-ruby-1-9-2-released.md b/fa/news/_posts/2010-08-18-ruby-1-9-2-released.md new file mode 100644 index 0000000000..743b575af1 --- /dev/null +++ b/fa/news/_posts/2010-08-18-ruby-1-9-2-released.md @@ -0,0 +1,106 @@ +--- +layout: news_post +title: "Ruby 1.9.2 is released" +author: "Yugui" +lang: en +--- + +Ruby 1.9.2 is released. This is the latest stable version of 1.9 series. + +### About Ruby 1.9.2 + +The new 1.9.2 is almost compatible with 1.9.1, except these changes: + +* Many new methods +* New socket API (improved IPv6 support) +* New encodings +* New Random class which supports several random numbers generators +* Time is reimplemented. The bug with year 2038 is fixed. +* regex improvements +* $: doesn\'t include the current directory. +* dl is reimplemented on top of libffi. +* new psych library wrapping libyaml which can replace syck. + +See [NEWS][1] and [ChangeLog][2] for more detailed information. + +Ruby 1.9.2 passes more than 99% of [RubySpec][3]. + +### Supported platforms + +Ruby 1.9 supports four levels. + +Supported +: We\'ve checked that Ruby 1.9.2 works well on most of them. + + * Debian GNU/Linux 5.0 на IA32. + +Efforts made for +: We\'ve checked that Ruby 1.9.2 works well on most of them. + + * mswin32, x64-mswin64, mingw32 + * MacOS X 10.5 (Intel) and 10.6 + * FreeBSD 6 and later (amd64, IA32) + * Solaris 10 + * Symbian OS + +Efforts made for +: We\'ve checked that Ruby 1.9.2 works well on most of them with small + modifications. Patches are accepted. + + * Other Linux distributions + * Other versions of MacOS X. + * cygwin + * AIX 5 + * Other POSIX-compatible systems + * BeOS (Haiku) + +### FAQ + +Standard library is installed in /usr/local/lib/ruby/1.9.1 +: This version is a \"library compatible version.\" Ruby 1.9.2 is almost + 1.9.1 compatible, so the library is installed in the 1.9.1 directory. + +It causes a LoadError +: `$:` doesn\'t include the current directory. Some script may need + modifications to work properly. + +### Downloads + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.bz2>][4] + SIZE + : 8495472 bytes + + MD5 + : d8a02cadf57d2571cd4250e248ea7e4b + + SHA256 + : e9710990ed8c2e794123aba509010471915fb13c27dae0118831d2001a9c8d3b + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.gz>][5] + SIZE + : 10787899 bytes + + MD5 + : 755aba44607c580fddc25e7c89260460 + + SHA256 + : 8c0c4e261a921b5c406bf9e76ac23bf3c915651534e9d1b9e8c5d0bee4a7285c + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.zip>][6] + SIZE + : 12159728 bytes + + MD5 + : e57a393ccd62ddece4c63bd549d8cf7f + + SHA256 + : e61521af06da71fde9f0c7c08baaf7415614d00c86ec5a7ab08b60a4f3185b2a + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/NEWS +[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/ChangeLog +[3]: https://github.com/ruby/spec +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.bz2 +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.zip diff --git a/fa/news/_posts/2010-10-01-see-matz-in-san-francisco-or-silicon-valley.md b/fa/news/_posts/2010-10-01-see-matz-in-san-francisco-or-silicon-valley.md new file mode 100644 index 0000000000..c0134cd244 --- /dev/null +++ b/fa/news/_posts/2010-10-01-see-matz-in-san-francisco-or-silicon-valley.md @@ -0,0 +1,23 @@ +--- +layout: news_post +title: "See Matz in San Francisco or Silicon Valley" +author: "James Edward Gray II" +lang: en +--- + +Matz is visiting San Francisco and Silicon Vally on October 7th and +11th. He will be talking about new opportunities for Ruby such as +embedded applications, cloud computing, and super computing. Keynote +Speech is “Ruby 2.0 What we want to accomplish in the near future.” Not +only Matz but some cool startups from Fukuoka, Japan will give a demo on +some of their latest developments using Ruby. For more info, please go +to [http://investfk.com/][1]. + +By the way, the reason why Matz is coming with startups from Fukuoka is +Fukuoka is the only prefecture that has governmental Ruby committee in +Japan. Fukuoka is one of the most enthusiastic city in Japan in terms of +Ruby. + + + +[1]: http://investfk.com/ diff --git a/fa/news/_posts/2010-11-17-fukuoka-ruby-award-2011.md b/fa/news/_posts/2010-11-17-fukuoka-ruby-award-2011.md new file mode 100644 index 0000000000..305d06761c --- /dev/null +++ b/fa/news/_posts/2010-11-17-fukuoka-ruby-award-2011.md @@ -0,0 +1,23 @@ +--- +layout: news_post +title: "Fukuoka Ruby Award 2011 Competition - Grand Prize, $12,000!" +author: "James Edward Gray II" +lang: en +--- + +Even though it’s last minute, if you are Ruby Rock Star, you have a +chance to win a 1,000,000 Japanese Yen (approximately 12,000 U.S. +dollars!). The Government of Fukuoka Japan (the Fukuoka Ruby Business +Hub Promotion Committee) is hosting the Fukuoka Ruby Award 2011 +Competition. Not only the big prize, but also the inventor and creator +of Ruby, Matz will be testing and reviewing your source code thoroughly. +So it’s very meaningful to apply. The official deadline is November +15th, but they will accept the late entries from the U.S. specially up +until the end of this month(11/30). There aren’t many applicants at this +point (less than 10). Which means you have a very high chance to win the +prize! So, hurry up! It’s Free to enter! Please see [this page][1] for +more details. + + + +[1]: http://www.f-ruby.com/en/news/information/11 diff --git a/fa/news/_posts/2010-12-25-ruby-1-8-7-p330-released.md b/fa/news/_posts/2010-12-25-ruby-1-8-7-p330-released.md new file mode 100644 index 0000000000..90de9e896b --- /dev/null +++ b/fa/news/_posts/2010-12-25-ruby-1-8-7-p330-released.md @@ -0,0 +1,42 @@ +--- +layout: news_post +title: "Ruby 1.8.7-p330 released" +author: "Urabe Shyouhei" +lang: en +--- + +Here you are an annual release of 1.8.7 updates. + +### Downloads + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.gz][1] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.bz2][2] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.zip][3] + +### Checksums + + MD5(ruby-1.8.7-p330.tar.gz)= 50a49edb787211598d08e756e733e42e + SHA256(ruby-1.8.7-p330.tar.gz)= 6c261a463b5ffce1dc0920c980218379479dbdf94866d5ed53f1c71f1407c561 + SIZE(ruby-1.8.7-p330.tar.gz)= 4873383 + + MD5(ruby-1.8.7-p330.tar.bz2)= 2689719fb42c8cf0aa336f8c8933f413 + SHA256(ruby-1.8.7-p330.tar.bz2)= 486c73b023b564c07e062e2e61114e81de970913b04fac6798d0fbe8b7723790 + SIZE(ruby-1.8.7-p330.tar.bz2)= 4191156 + + MD5(ruby-1.8.7-p330.zip)= 537d424438a0fefe40bed91b022592d6 + SHA256(ruby-1.8.7-p330.zip)= 18df0d26d10a9be32275ba7b39ffd222a153fcc4669e4b772eab142d7e7bde90 + SIZE(ruby-1.8.7-p330.zip)= 5972777 + +It is worth noting that, though Ruby project experienced license change +recently (from GPLv2 to 2-clause BSDL) and this is the first time since +then to release something, that change do not reach to already-released +versions like 1.8.7, Matz said to us. So you do not have to worry about +it. If you are already using 1.8.7, you can continue using it. + +Thank you, happy holidays. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.gz +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.zip diff --git a/fa/news/_posts/2010-12-25-ruby-1-9-2-p136-is-released.md b/fa/news/_posts/2010-12-25-ruby-1-9-2-p136-is-released.md new file mode 100644 index 0000000000..1ce53df5f1 --- /dev/null +++ b/fa/news/_posts/2010-12-25-ruby-1-9-2-p136-is-released.md @@ -0,0 +1,48 @@ +--- +layout: news_post +title: "Ruby 1.9.2-p136 is released" +author: "Yugui" +lang: en +--- + +Ruby 1.9.2-p136 has been released. This is the second release of Ruby 1.9.2. It fixes many bugs found in +1.9.2-p0. See [ChangeLog][1] for more detail. + +### Download + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.bz2>][2] + SIZE + : 8819324 bytes + + MD5 + : 52958d35d1b437f5d9d225690de94c13 + + SHA256 + : 33092509aad118f07f0483a3db1d4c5adaccf4bb0324cd43f44e3bd3dd1858cb + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.gz>][3] + SIZE + : 11155066 bytes + + MD5 + : 6e17b200b907244478582b7d06cd512e + + SHA256 + : c4314df44f3ab81230685fb51c296ce21034f4c719e2fcc0baba221d19f28746 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.zip>][4] + SIZE + : 12566581 bytes + + MD5 + : f400021058e886786ded510a9f45b2c6 + + SHA256 + : 84ffc047b29032ba848dbbf50d3302de7ac732db1448e57303c27ad4b47c2c5b + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_136/ChangeLog +[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.gz +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.zip diff --git a/fa/news/_posts/2011-02-18-exception-methods-can-bypass-safe.md b/fa/news/_posts/2011-02-18-exception-methods-can-bypass-safe.md new file mode 100644 index 0000000000..c49ac2bc79 --- /dev/null +++ b/fa/news/_posts/2011-02-18-exception-methods-can-bypass-safe.md @@ -0,0 +1,59 @@ +--- +layout: news_post +title: "Exception methods can bypass $SAFE" +author: "Urabe Shyouhei" +lang: en +--- + +Exception#to\_s method can be used to trick $SAFE check, which makes a untrusted codes to modify arbitrary strings. + +### Detailed description + +In Ruby\'s $SAFE semantics, safe level of 4 is used to run a untrusted +code (such as plugin). So in upper safe levels, some sort of operations +are prohibited to prevent untrusted codes from attacking outer (trusted) +data. + +Exception#to\_s was found to be problematic around it. The method can +trick safe level mechanism and destructively modifies an untaitned +string to be tainted. With this an attacker can modify arbitrary +untainted strings like this: + + $secret_path = "foo" + + proc do + $SAFE = 4 + Exception.new($secret_path).to_s + $secret_path.replace "/etc/passwd" + end.call + + open($secret_path) do + ... + end + +### Affected versions + +Luckily this attack is ineffective for 1.9.x series of ruby. Affected +versions are restricted to: + +* Ruby 1.8.6 patchlevel 420 and all prior versions +* Ruby 1.8.7 patchlevel 330 and all prior versions +* Development versions of Ruby 1.8 (1.8.8dev) + +### Solutions + +Please upgrade to a newer version. + +### Updates + +* 1\.8.7-334 was released to fix this issue. 1.8.7 users are encouraged + to upgrade. + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz][1] + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2][2] + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.zip][3] + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.zip diff --git a/fa/news/_posts/2011-02-18-fileutils-is-vulnerable-to-symlink-race-attacks.md b/fa/news/_posts/2011-02-18-fileutils-is-vulnerable-to-symlink-race-attacks.md new file mode 100644 index 0000000000..b3a72c05b2 --- /dev/null +++ b/fa/news/_posts/2011-02-18-fileutils-is-vulnerable-to-symlink-race-attacks.md @@ -0,0 +1,66 @@ +--- +layout: news_post +title: "FileUtils is vulnerable to symlink race attacks" +author: "Urabe Shyouhei" +lang: en +--- + +A symlink race condition vulnerability was found in +FileUtils.remove\_entry\_secure. The vulnerability allows local users to +delete arbitrary files and directories. + +### Affected versions + +* Ruby 1.8.6 patchlevel 420 and all prior versions +* Ruby 1.8.7 patchlevel 330 and all prior versions +* Development versions of Ruby 1.8 (1.8.8dev) +* Ruby 1.9.1 patchlevel 430 and all prior versions +* Ruby 1.9.2 patchlevel 136 and all prior versions +* Development versions of Ruby 1.9 (1.9.3dev) + +### Solutions + +We have fixed this situation. All affected users are encouraged to +upgrade their ruby installation. + +But please also note, that symlink race attacks are unavoidable when any +of upper directories from where you want to delete are owned by someone +you cannot trust. So if you want to be secure, you must ensure that +**ALL** parent directories cannot be moved by other untrusted users. For +example, parent directories should not be owned by untrusted users, and +should not be world writable except when the sticky bit set. + +### Updates + +* Fixed typo. (vulnerable -> vulnerable) +* 1\.8.7-334 was released to fix this issue. 1.8.7 users are encouraged + to upgrade. + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz][1] + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2][2] + * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.zip][3] + +* 1\.9.1-p431 was released to fix this issue. 1.9.1 users are encouraged + to upgrade. + * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.gz][4] + * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.bz2][5] + * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.zip][6] + +* 1\.9.2-p180 was released to fix this issue. 1.9.2 users are encouraged + to upgrade. + * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.gz][7] + * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.bz2][8] + * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.zip][9] + +* Fixed affected versions for 1.9 series. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.zip +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.gz +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.bz2 +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.zip +[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.gz +[8]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.bz2 +[9]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.zip diff --git a/fa/news/_posts/2011-02-22-planned-maintenance-of-redmine-ruby-lang-org.md b/fa/news/_posts/2011-02-22-planned-maintenance-of-redmine-ruby-lang-org.md new file mode 100644 index 0000000000..abfdbb9ba2 --- /dev/null +++ b/fa/news/_posts/2011-02-22-planned-maintenance-of-redmine-ruby-lang-org.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "Planned maintenance of redmine.ruby-lang.org" +author: "Yugui" +lang: en +--- + +[Ruby\'s issue tracker][1] will be down from 2011-02-23 10:00+09:00 to +24:00 for planned maintenance. + +If you have any issue to report, I am afraid but please post a mail to +[ruby-core](mailto:ruby-core@ruby-lang.org) mailing list or wait for +my finishing maintenance. + + + +[1]: https://bugs.ruby-lang.org diff --git a/fa/news/_posts/2011-07-02-ruby-1-8-7-p352-released.md b/fa/news/_posts/2011-07-02-ruby-1-8-7-p352-released.md new file mode 100644 index 0000000000..c011dd763c --- /dev/null +++ b/fa/news/_posts/2011-07-02-ruby-1-8-7-p352-released.md @@ -0,0 +1,36 @@ +--- +layout: news_post +title: "Ruby 1.8.7-p352 released" +author: "Urabe Shyouhei" +lang: en +--- + +Ruby 1.8.7 was released on June 1st, 2008. In commemoration of the third +anniversary of Ruby 1.8.7, we have a new patchlevel release today. It +includes several bug fixes. For the detail please read the +[ChangeLog][1]. + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.gz][2] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.bz2][2] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.zip][2] + +### Checksums: + + MD5(ruby-1.8.7-p352.tar.gz)= 0c33f663a10a540ea65677bb755e57a7 + SHA256(ruby-1.8.7-p352.tar.gz)= 2325b9f9ab2af663469d057c6a1ef59d914a649808e9f6d1a4877c8973c2dad0 + SIZE(ruby-1.8.7-p352.tar.gz)= 4894181 + + MD5(ruby-1.8.7-p352.tar.bz2)= 0c61ea41d1b1183b219b9afe97f18f52 + SHA256(ruby-1.8.7-p352.tar.bz2)= 9df4e9108387f7d24a6ab8950984d0c0f8cdbc1dad63194e744f1a176d1c5576 + SIZE(ruby-1.8.7-p352.tar.bz2)= 4207576 + + MD5(ruby-1.8.7-p352.zip)= 6f745837e50a86fe0c924dccfa65b4ec + SHA256(ruby-1.8.7-p352.zip)= 24fd9eb8734fd81a51806d16bf3a5624e87a58b877a9a9affb1f6c6158cad5c9 + SIZE(ruby-1.8.7-p352.zip)= 5993612 + +Thank you for all the efforts you made in these three years. + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_352/ChangeLog +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.gz diff --git a/fa/news/_posts/2011-07-15-ruby-1-9-2-p290-is-released.md b/fa/news/_posts/2011-07-15-ruby-1-9-2-p290-is-released.md new file mode 100644 index 0000000000..8363c0ef69 --- /dev/null +++ b/fa/news/_posts/2011-07-15-ruby-1-9-2-p290-is-released.md @@ -0,0 +1,52 @@ +--- +layout: news_post +title: "Ruby 1.9.2-p290 is released" +author: "Shota Fukumori" +lang: en +--- + +Ruby 1.9.2-p290 is released. + +This release doesn\'t include any security fixes, but many bugs are +fixed in this release. + +See [ChangeLog][1] for details. + +### Downloads + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.bz2>][2] + SIZE + : 8811237 bytes + + MD5 + : 096758c3e853b839dc980b183227b182 + + SHA256 + : 403b3093fbe8a08dc69c269753b8c6e7bd8f87fb79a7dd7d676913efe7642487 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz>][3] + SIZE + : 11182217 bytes + + MD5 + : 604da71839a6ae02b5b5b5e1b792d5eb + + SHA256 + : 1cc817575c4944d3d78959024320ed1d5b7c2b4931a855772dacad7c3f6ebd7e + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.zip>][4] + SIZE + : 12600100 bytes + + MD5 + : 6060b410aa15d09ac13b93033b8b5c66 + + SHA256 + : bce3d1c8c78fbafb6a0d67df2b8dec5322301f7b4b0f7594656ad689e9cb461d + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_290/ChangeLog +[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.bz2 +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.zip diff --git a/fa/news/_posts/2011-08-01-ruby-1-9-3-preview1-has-been-released.md b/fa/news/_posts/2011-08-01-ruby-1-9-3-preview1-has-been-released.md new file mode 100644 index 0000000000..94b4768560 --- /dev/null +++ b/fa/news/_posts/2011-08-01-ruby-1-9-3-preview1-has-been-released.md @@ -0,0 +1,61 @@ +--- +layout: news_post +title: "Ruby 1.9.3 preview1 has been released" +author: "Moru" +lang: en +--- + +Ruby 1.9.3 preview1 has been released. This is a first preview of next +version and there\'re still minor known issues. But it will be fixed in +next release, Ruby 1.9.3-p0. + +See [ChangeLogs][1] and [NEWS][2] for the descriptions. + +Ruby Inside has published [a review of this release][3]. + +## Downloads + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.tar.bz2>][4] + SIZE: 9507455 bytes + MD5: 7d93dc773c5824f05c6e6630d8c4bf9b + SHA256: a15d7924d74a45ffe48d5421c5fc4ff83b7009676054fa5952b890711afef6fc + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.tar.gz>][5] + SIZE: 12186410 bytes + MD5: 0f0220be4cc7c51a82c1bd8f6a0969f3 + SHA256: 75c2dd57cabd67d8078a61db4ae86b22dc6f262b84460e5b95a0d8a327b36642 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.zip>][6] + SIZE: 13696708 bytes + MD5: 960e08b2dc866c9987f17d0480de63a1 + SHA256: 249483f88156b4ae65cd45742c6f6316660f793b78739657596c63b86f76aaeb + +## Differences from previous version + +Previous Ruby versions was licensed under \"GPLv2\" and \"Ruby\" license +but \"2-clause BSDL\"(AKA Simplfied BSD License) and \"Ruby\" license +been replacement of them. + +### Encoding + +SJIS changed to alias for Windows-31J, instead of Shift\_JIS. + +### Standard Libraries + +* io/console: Add capabilities to IO instances. +* openssl +* test/unit: supports parallel test + +### Other changes + +* pathname and date are re-implemented on current preview. +* A purpose of VM locking is changed. + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_preview1/ChangeLog +[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_preview1/NEWS +[3]: http://www.rubyinside.com/ruby-1-9-3-preview-1-released-5229.html +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.tar.bz2 +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.zip diff --git a/fa/news/_posts/2011-08-11-confoo-2012-call-for-papers-is-now-open.md b/fa/news/_posts/2011-08-11-confoo-2012-call-for-papers-is-now-open.md new file mode 100644 index 0000000000..9ca0b73b09 --- /dev/null +++ b/fa/news/_posts/2011-08-11-confoo-2012-call-for-papers-is-now-open.md @@ -0,0 +1,33 @@ +--- +layout: news_post +title: "ConFoo 2012: Call for Papers is Now Open!" +author: "James Edward Gray II" +lang: en +--- + +We are looking for the best speakers willing to share their skills and +experience with developers and managers. + +This year, ConFoo is dedicated to software development, project +management and best practices. + +The technical part covers different aspects of Web development such as: +Ruby , PHP, Python, .Net, Java, security, content management systems, +frameworks, databases, system administration, Web standards, mobile +development, accessibility and software architecture. + +The management and best practices parts includes: project management, +agile methodology, referencing (SEO), Web marketing analysis, social +networking, and start-ups. + +The conference will be held in Montreal from February 29th to March +2<sup>nd</sup>, 2012 at the prestigious Hotel Hilton Bonaventure and +will be preceded by a few days of training. + +Talk proposals must received by September 2<sup>nd</sup>, 2011. + +Visit [ConFoo.ca][1] in order to submit a proposal. + + + +[1]: http://confoo.ca/ diff --git a/fa/news/_posts/2011-09-24-ruby-1-9-3-rc1-has-been-released.md b/fa/news/_posts/2011-09-24-ruby-1-9-3-rc1-has-been-released.md new file mode 100644 index 0000000000..81c8170f81 --- /dev/null +++ b/fa/news/_posts/2011-09-24-ruby-1-9-3-rc1-has-been-released.md @@ -0,0 +1,37 @@ +--- +layout: news_post +title: "Ruby 1.9.3 rc1 has been released" +author: "Shota Fukumori" +lang: en +--- + +Ruby 1.9.3 rc1 has been released. This is a second preview of next +version and there\'re still minor known issues. But it will be fixed in +next release, ruby 1.9.3-p0. + +See [ChangeLogs][1] and [NEWS][2] for the descriptions. + +## Locations + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.tar.bz2>][3] + SIZE: 9552727 bytes + MD5: 26f0dc51ad981e12c58b48380112fa4d + SHA256: 951a8810086abca0e200f81767a518ee2730d6dc9b0cc2c7e3587dcfc3bf5fc8 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.tar.gz>][4] + SIZE: 12224459 bytes + MD5: 46a2a481536ca0ca0b80ad2b091df68e + SHA256: bb1ae474d30e8681df89599520e766270c8e16450efdc01e099810f5e401eb94 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.zip>][5] + SIZE: 13696517 bytes + MD5: 9c787f5e4963e54d1a11985a73467342 + SHA256: 8e9219b7e6f78a9e171740cbbb3787047383c281c290504dd0e4d8318607a74b + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_rc1/ChangeLog +[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_rc1/NEWS +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.tar.gz +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.zip diff --git a/fa/news/_posts/2011-10-06-plans-for-1-8-7.md b/fa/news/_posts/2011-10-06-plans-for-1-8-7.md new file mode 100644 index 0000000000..a1ee0e1625 --- /dev/null +++ b/fa/news/_posts/2011-10-06-plans-for-1-8-7.md @@ -0,0 +1,38 @@ +--- +layout: news_post +title: "Plans for 1.8.7" +author: "Urabe Shyouhei" +lang: en +--- + +Hello, and thank you for your getting into our community. + +I know most of you more or less use version 1.8.7 of Ruby today. It was +released in 2008 and was a state-of-art Ruby release back then. -- I am +proud to say it is no longer. Ruby\'s core developers have been actively +working on their new version, 1.9, and they are about to release new +1.9.3. I have been using 1.9 for years and now I cannot go back to the +days without it. Rich features. Faster execution. Rubygems integrated. +Rails works perfectly. I cannot but say it is totally wonderful. +Everyone please, use 1.9. + +But at the same time I know you cannot switch to 1.9 right now for +various reasons. Maybe you have already deployed your application with +1.8.7. Maybe you use a 3rd party library and that is for 1.8.7 only. Or +maybe your Linux distribution only supports 1.8.7. So I hereby announce +you how long you can stick to it. It is OK if you are using 1.8.7 today +but after a while, it will be shut down. + +Please be ready. + +Schedule: + +* We continue to provide normal maintenance for 1.8.7 as usual, until + June 2012. You can safely assume we provide bugfixes and no + incompatibility shall be introduced. + +* After that we stop bugfixes. We still provide security fixes until + June 2013, in case you are still using 1.8.7. + +* We will no longer support 1.8.7 in all senses after June 2013. + diff --git a/fa/news/_posts/2011-10-12-programming-competitions-with-matz.md b/fa/news/_posts/2011-10-12-programming-competitions-with-matz.md new file mode 100644 index 0000000000..c47e3f5093 --- /dev/null +++ b/fa/news/_posts/2011-10-12-programming-competitions-with-matz.md @@ -0,0 +1,51 @@ +--- +layout: news_post +title: "Upcoming Ruby Programming Competitions with Matz - Grand Prize - 1,000,000 JPY!" +author: "James Edward Gray II" +lang: en +--- + +Dear Ruby Enthusiasts: + +The Government of Fukuoka, Japan together with \"Matz\" Matsumoto would +like to invite you to enter the following Ruby competitions. If you have +developed an interesting Ruby program, please be encouraged to apply. + +* Silicon Valley Competition (November 3, 2011 in Silicon Valley), Entry + Deadline: October 17, 2011 + +Selected finalists will present their Ruby programs in front of Matz on +November 3, 2011 in Silicon Valley (exact location to be announced +later). Matz, together with a panel of judges, will select the winner. +The winner will be invited to Fukuoka, Japan for an award ceremony to be +held in March 2012 (hotel and airfare paid). If you enter the Silicon +Valley competition, you will also be automatically entered in the +Fukuoka competition described below. + +* Fukuoka Competition - Grand Prize - 1 Million Yen! (March 2012 in + Fukuoka, Japan), Entry Deadline: November 15, 2011 + +You can enter the Fukuoka competition exclusively, or enter the above +Silicon Valley Competition and be automatically entered in the Fukuoka +Competition. Matz and a group of panelists will select the winners of +the Fukuoka Competition. The grand prize winner will be invited to +attend the award ceremony in Fukuoka, Japan in March 2012 (hotel and +airfare paid). The grand prize for the Fukuoka Competition is 1 million +yen(approximately $13,000!). Past grand prize winners include Rhomobile +(USA) and APEC Climate Center (Korea). + +Programs entered in these competitions do not have to be written +entirely in Ruby but should take advantage of the unique characteristics +of Ruby. Projects must have been developed or completed within the past +12 months to be eligible. + +Please visit the following Fukuoka website for additional details or to +enter: + +[http://www.myfukuoka.com/events/2012-fukuoka-ruby-award-competition][1] + +Cheers. + + + +[1]: http://www.myfukuoka.com/events/2012-fukuoka-ruby-award-competition diff --git a/fa/news/_posts/2011-10-31-ruby-1-9-3-p0-is-released.md b/fa/news/_posts/2011-10-31-ruby-1-9-3-p0-is-released.md new file mode 100644 index 0000000000..2177ac2749 --- /dev/null +++ b/fa/news/_posts/2011-10-31-ruby-1-9-3-p0-is-released.md @@ -0,0 +1,36 @@ +--- +layout: news_post +title: "Ruby 1.9.3 p0 is released" +author: "Shota Fukumori" +lang: en +--- + +Ruby 1.9.3 p0 is released. This is the latest stable version of 1.9 +series. + +See [ChangeLogs][1] and [NEWS][2] for the descriptions. + +## Locations + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.bz2>][3] + SIZE: 9554576 bytes + MD5: 65401fb3194cdccd6c1175ab29b8fdb8 + SHA256: ca8ba4e564fc5f98b210a5784e43dfffef9471222849e46f8e848b37e9f38acf + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz>][4] + SIZE: 12223217 bytes + MD5: 8e2fef56185cfbaf29d0c8329fc77c05 + SHA256: 3b910042e3561f4296fd95d96bf30322e53eecf083992e5042a7680698cfa34e + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.zip>][5] + SIZE: 13691314 bytes + MD5: 437ac529a7872c8dcc956eab8e7e6f76 + SHA256: 1be16d0172e9cf9e5078a7bee2465a9f3af431920e1e3d9417a4fc2ee074bca4 + + + +[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/ChangeLog +[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/NEWS +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.zip diff --git a/fa/news/_posts/2011-12-28-denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815.md b/fa/news/_posts/2011-12-28-denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815.md new file mode 100644 index 0000000000..9f6bcf3a5e --- /dev/null +++ b/fa/news/_posts/2011-12-28-denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815.md @@ -0,0 +1,89 @@ +--- +layout: news_post +title: "Denial of service attack was found for Ruby's Hash algorithm (CVE-2011-4815)" +author: "Urabe Shyouhei" +lang: en +--- + +#### Impact + +This is something related to computational complexity. Specially crafted +series of strings that intentionally collide their hash values each +other was found. With such sequences an attacker can issue a denial of +service attack by, for instance, giving them as POST parameters of HTTP +requests for your Rails application. + +#### Detailed description + +The situation is similar to the one found for Perl in 2003. In 1.8 +series of Ruby, we use a deterministic hash function to hash a string. +Here the \"deterministic\" means no other bits of information than the +input string itself is involved to generate a hash value. So you can +precalculate a string\'s hash value beforehand. By collecting a series +of strings that have the identical hash value, an attacker can let ruby +process collide bins of hash tables (including `Hash` class instances). +Hash tables\' amortized O(1) attribute depends on uniformity of +distribution of hash values. By giving such crafted input, an attacker +can let hash tables work much slower than expected (namely +O(n<sup>2</sup>) to construct a n-elements table this case). + +#### Affected versions + +* Ruby 1.8.7-p352 and all prior versions. + +All Ruby 1.9 series are not affected by this kind of attack. They do not +share hash implementations with Ruby 1.8 series. + +#### Solution + +Our solution is to scramble the string hash function by some +PRNG-generated random bits. By doing so a string\'s hashed value is no +longer deterministic. That is, a `String#hash` result is consistent only +for current process lifetime and will generate a different number for +the next boot. To break this situation an attacker must create a set of +strings which are robust to this kind of scrambling. This is believed to +be quite difficult. + +Please upgrade to [ruby 1.8.7-p357][1]. + +#### Notes + +* Bear in mind that the solution *does* *not* *mean* our hash algorithm + is cryptographically secure. To put it simple, we fixed the hash table + but we didn\'t fix `String#hash` weakness. An attacker could still + exploit it once he / she got a pair of a string and its hash value + returned from `String#hash`. You *must* *not* disclose `String#hash` + outputs. If you need to do such things, consider using secure hash + algorithms instead. Some of them (such as SHA256) are provided in + Ruby\'s standard library. + +* For those who knows alternative hash algorithms inside our code base: + we do not support them (they are disabled by default). By choosing + them we consider you can read C, and you can understand what was wrong + with the default one. Make sure that your choice is safe at your own + risk. + +#### Credit + +Credit to Alexander Klink +[alexander.klink@nruns.com](mailto:alexander.klink@nruns.com) and Julian +Waelde +[jwaelde@cdc.informatik.tu-darmstadt.de](mailto:jwaelde@cdc.informatik.tu-darmstadt.de) +for reporting this issue. + +**EDIT** some related links: + +* [CVE-2011-4815][2] is assigned to this issue. +* oCERT.org published [an advisory][3] about it. +* JRuby released [version 1.6.5.1][4] to fix the identical issue. Other + ruby alternatives might also suffer. +* Twitter account [@hashDoS][5] collects informations about hash + colliision attacks. + + + +[1]: http://mla.n-z.jp/?ruby-talk=391606 +[2]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-4815 +[3]: http://www.ocert.org/advisories/ocert-2011-003.html +[4]: http://jruby.org/2011/12/27/jruby-1-6-5-1 +[5]: https://twitter.com/#!/hashDoS diff --git a/fa/news/_posts/2012-02-16-ruby-1-9-3-p125-is-released.md b/fa/news/_posts/2012-02-16-ruby-1-9-3-p125-is-released.md new file mode 100644 index 0000000000..54801e0818 --- /dev/null +++ b/fa/news/_posts/2012-02-16-ruby-1-9-3-p125-is-released.md @@ -0,0 +1,55 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p125 is released" +author: "NARUSE, Yui" +lang: en +--- + +Ruby 1.9.3-p125 is released. + +This release include [a security fixes of the Ruby OpenSSL +extension][1]. And many bugs are fixed in this release. + +== Fixes + +* [Fix for Ruby OpenSSL module: Allow \"0/n splitting\" as a prevention + for the TLS BEAST attack][1] +* Fixed: LLVM/clang support [\[Bug #5076\]][2] +* Fixed: GCC 4.7 support [\[Bug #5851\]][3] +* other bug fixes + +See [tickets][4] and [ChangeLog][5] for details. + +== Downloads + +NOTE: Repackaged on 2012-02-17 02:04:00 UTC to fix [\[Bug #6040\]][6]. + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.bz2][7] + + * SIZE: 9733962 bytes + * MD5: 702529a7f8417ed79f628b77d8061aa5 + * SHA256: c67a59443052b5a9219eb4cee3892bdfbc6f250f0c8e214e02256a4cc7ef5526 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz][8] + + * SIZE: 12278584 bytes + * MD5: e3ea86b9d3fc2d3ec867f66969ae3b92 + * SHA256: 8b3c035cf4f0ad6420f447d6a48e8817e5384d0504514939aeb156e251d44cce + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.zip][9] + + * SIZE: 13742164 bytes + * MD5: 2cff031a8801d91a0a0ca8e9a83e2ec8 + * SHA256: c16423182227c765398723da2419e4e962076778ec5e39417fad564e413fde1d + + + +[1]: {{ site.url }}/en/news/2012/02/16/security-fix-for-ruby-openssl-module/ +[2]: https://bugs.ruby-lang.org/issues/show/5076 +[3]: https://bugs.ruby-lang.org/issues/show/5851 +[4]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 +[5]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_125/ChangeLog +[6]: https://bugs.ruby-lang.org/issues/6040 +[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.bz2 +[8]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz +[9]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.zip diff --git a/fa/news/_posts/2012-02-16-security-fix-for-ruby-openssl-module.md b/fa/news/_posts/2012-02-16-security-fix-for-ruby-openssl-module.md new file mode 100644 index 0000000000..89ed543b94 --- /dev/null +++ b/fa/news/_posts/2012-02-16-security-fix-for-ruby-openssl-module.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "Security Fix for Ruby OpenSSL module: Allow \"0/n splitting\" as a prevention for the TLS BEAST attack." +author: "Urabe Shyouhei" +lang: en +--- + +In OpenSSL, `SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS` option for SSL +connection is used to prevent TLS-CBC-IV vulnerability described at +[\[1\]][1]. It\'s known issue of TLSv1/SSLv3 but it attracts lots of +attention these days as BEAST attack [\[2\]][2] (CVE-2011-3389). Ruby +related topics are at our issue tracker [\[3\]][3]. + +Until now Ruby OpenSSL extension uses `SSL_OP_ALL` option, the combined +option of OpenSSL for various bug workarounds that should be rather +harmless, for all SSL connection by default. And it only allows users to +add other options so you could not remove the feature that is included +in `SSL_OP_ALL` option, like `SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS`. It +was intentional as it didn\'t expose constants like +`SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS`, but we should allow to unset the +option so that Ruby OpenSSL extension inserts empty fragments at the +beginning of SSL connections (named \"0/n splitting\") to prevent the +TLS BEAST attack. + +[This release][4] defines additional constants and allows users to unset +options in `SSL_OP_ALL`. Default option is still `SSL_OP_ALL` but you +can setup the SSLSocket with doing \"0/n splitting\" for BEAST +prevention like this. + + ctx = SSLContext.new + ctx.options = OP_ALL & ~OP_DONT_INSERT_EMPTY_FRAGMENTS + ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER + SSLSocket.new(socket, ctx) + +Credit to Apple for reporting this issue. + +NOTE: Some SSL endpoints are known to have a bug that cannot handle +\"0/n splitting\" correctly so we (and OpenSSL) do not set this as a +default option. Please test SSL connectivity before enabling this in +production environment. If the other endpoint you\'re connecting cannot +handle \"0/n splitting\", you must use another workaround for preventing +the TLS BEAST attack, like enforcing ciphersuite to use RC4. For +details, please find discussions and resources around CVE-2011-3389. + + + +[1]: http://www.openssl.org/~bodo/tls-cbc.txt +[2]: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-3389 +[3]: https://bugs.ruby-lang.org/5353 +[4]: http://mla.n-z.jp/?ruby-talk=393484 diff --git a/fa/news/_posts/2012-03-29-matz-earns-the-fsfs-2011-free-software-award.md b/fa/news/_posts/2012-03-29-matz-earns-the-fsfs-2011-free-software-award.md new file mode 100644 index 0000000000..a39d5f4756 --- /dev/null +++ b/fa/news/_posts/2012-03-29-matz-earns-the-fsfs-2011-free-software-award.md @@ -0,0 +1,21 @@ +--- +layout: news_post +title: "Matz Earns the FSF's 2011 Free Software Award" +author: "James Edward Gray II" +lang: en +--- + +The Award for the Advancement of Free Software is given annually to an +individual who has made a great contribution to the progress and +development of free software, through activities that accord with the +spirit of free software. + +This year, it was given to Yukihiro Matsumoto (aka Matz), the creator of +the Ruby programming language. Matz has worked on GNU, Ruby, and other +free software for over 20 years… + +[Read the full article.][1] + + + +[1]: https://www.fsf.org/news/2011-free-software-awards-announced diff --git a/fa/news/_posts/2012-04-10-rubyteach-2012.md b/fa/news/_posts/2012-04-10-rubyteach-2012.md new file mode 100644 index 0000000000..f5223a9134 --- /dev/null +++ b/fa/news/_posts/2012-04-10-rubyteach-2012.md @@ -0,0 +1,22 @@ +--- +layout: news_post +title: "RubyTeach 2012" +author: "James Edward Gray II" +lang: en +--- + +Vancouver, BC + +May 29th to 31st, 2012 + +RubyTeach is part of DevTeach and it offer 3 days of training between +May 29th and May 31st. A total of 11 sessions on Ruby and over 30 +sessions on Web Development (jQuery, HTML5, CSS) and Agile. The best +experts in the industry are presenting their knowledge and expertise. +This is your chance to learn and network with the experts. + +[Learn more…][1] + + + +[1]: http://devteach.com/RubyTeach/ diff --git a/fa/news/_posts/2012-04-20-ruby-1-9-3-p194-is-released.md b/fa/news/_posts/2012-04-20-ruby-1-9-3-p194-is-released.md new file mode 100644 index 0000000000..8b4f29023c --- /dev/null +++ b/fa/news/_posts/2012-04-20-ruby-1-9-3-p194-is-released.md @@ -0,0 +1,76 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p194 is released" +author: "NARUSE, Yui" +lang: en +--- + +Ruby 1.9.3-p194 is released. + +This release include Security Fix for RubyGems: SSL server verification +failure for remote repository. And many bugs are fixed in this release. + +## Security Fix for RubyGems: SSL server verification failure for remote repository + +This release includes two security fixes in RubyGems. + +* Turn on verification of server SSL certs +* Disallow redirects from https to http + +Users who uses https source in .gemrc or /etc/gemrc are encouraged to +upgrade to 1.9.3-p194. + +Following is excerpted from RubyGems 1.8.23 release note \[1\]. + +\"This release increases the security used when RubyGems is talking to +an https server. If you use a custom RubyGems server over SSL, this +release will cause RubyGems to no longer connect unless your SSL cert is +globally valid. + +You can configure SSL certificate usage in RubyGems through the +:ssl\_ca\_cert and :ssl\_verify\_mode options in ~/.gemrc and +/etc/gemrc. The recommended way is to set :ssl\_ca\_cert to the CA +certificate for your server or a certificate bundle containing your CA +certification. + +You may also set :ssl\_verify\_mode to 0 to completely disable SSL +certificate checks, but this is not recommended.\" + +Credit to John Firebaugh for reporting this issue. + +\[1\] +[<URL:https://github.com/rubygems/rubygems/blob/1.8/History.txt>][1] + +## Fixes + +* Security Fix for RubyGems: SSL server verification failure for remote + repository +* other bug fixes + +See [tickets][2] and [ChangeLog][3] for details. + +## Downloads + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.bz2>][4] + * SIZE: 9841223 bytes + * MD5: 2278eff4cfed3cbc0653bc73085caa34 + * SHA256: a9d1ea9eaea075c60048369a63b35b3b5a06a30aa214a3d990e0bb71212db8fa + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz>][5] + * SIZE: 12432239 bytes + * MD5: bc0c715c69da4d1d8bd57069c19f6c0e + * SHA256: 46e2fa80be7efed51bd9cdc529d1fe22ebc7567ee0f91db4ab855438cf4bd8bb + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.zip>][6] + * SIZE: 13898712 bytes + * MD5: 77e67b15234e442d4a3dcc450bc70fea + * SHA256: 77474cfb92385b3a0b4c346553048bc65bfe68d4f220128329671a0234cb124d + + + +[1]: https://github.com/rubygems/rubygems/blob/1.8/History.txt +[2]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 +[3]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_194/ChangeLog +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.bz2 +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.zip diff --git a/fa/news/_posts/2012-04-21-ruby-1-9-2-p320-is-released.md b/fa/news/_posts/2012-04-21-ruby-1-9-2-p320-is-released.md new file mode 100644 index 0000000000..c9d2d531f3 --- /dev/null +++ b/fa/news/_posts/2012-04-21-ruby-1-9-2-p320-is-released.md @@ -0,0 +1,76 @@ +--- +layout: news_post +title: "Ruby 1.9.2-p320 is released" +author: "NARUSE, Yui" +lang: en +--- + +Ruby 1.9.2-p320 is released. + +This release include Security Fix for RubyGems: SSL server verification +failure for remote repository. And many bugs are fixed in this release. + +## Security Fix for RubyGems: SSL server verification failure for remote repository + +This release includes two security fixes in RubyGems. + +* Turn on verification of server SSL certs +* Disallow redirects from https to http + +Users who uses https source in .gemrc or /etc/gemrc are encouraged to +upgrade to 1.9.2-p320 or 1.9.3-p194. + +Following is excerpted from RubyGems 1.8.23 release note \[1\]. + +\"This release increases the security used when RubyGems is talking to +an https server. If you use a custom RubyGems server over SSL, this +release will cause RubyGems to no longer connect unless your SSL cert is +globally valid. + +You can configure SSL certificate usage in RubyGems through the +:ssl\_ca\_cert and :ssl\_verify\_mode options in ~/.gemrc and +/etc/gemrc. The recommended way is to set :ssl\_ca\_cert to the CA +certificate for your server or a certificate bundle containing your CA +certification. + +You may also set :ssl\_verify\_mode to 0 to completely disable SSL +certificate checks, but this is not recommended.\" + +Credit to John Firebaugh for reporting this issue. + +\[1\] +[<URL:https://github.com/rubygems/rubygems/blob/1.8/History.txt>][1] + +## Fixes + +* Security Fix for RubyGems: SSL server verification failure for remote + repository +* other bug fixes + +See [tickets][2] and [ChangeLog][3] for details. + +## Downloads + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.tar.bz2>][4] + * SIZE: 8981382 bytes + * MD5: b226dfe95d92750ee7163e899b33af00 + * SHA256: 6777f865cfa21ffdc167fcc4a7da05cb13aab1bd9e59bfcda82c4b32f75e6b51 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.tar.gz>][5] + * SIZE: 11338691 bytes + * MD5: 5ef5d9c07af207710bd9c2ad1cef4b42 + * SHA256: 39a1f046e8756c1885cde42b234bc608196e50feadf1d0f202f7634f4a4b1245 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.zip>][6] + * SIZE: 12730896 bytes + * MD5: 0bdfd04bfeb0933c0bdcd00e4ea94c49 + * SHA256: 83db9c86d5cf20bb91e625c3c9c1da8e61d941e1bc8ff4a1b9ea70c12f2972d3 + + + +[1]: https://github.com/rubygems/rubygems/blob/1.8/History.txt +[2]: https://bugs.ruby-lang.org/projects/ruby-192/issues?set_filter=1&status_id=5 +[3]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_320/ChangeLog +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.tar.bz2 +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.zip diff --git a/fa/news/_posts/2012-05-30-server-maintenance-20120606.md b/fa/news/_posts/2012-05-30-server-maintenance-20120606.md new file mode 100644 index 0000000000..63d66354dd --- /dev/null +++ b/fa/news/_posts/2012-05-30-server-maintenance-20120606.md @@ -0,0 +1,8 @@ +--- +layout: news_post +title: "Server maintenance" +author: "Shugo Maeda" +lang: en +--- + +Services of ruby-lang.org including www, mailing lists, and Subversion will be down for a server maintenance from Wed Jun 06 15:00:00 UTC 2012 until Wed Jun 06 20:00:00 UTC 2012. Sorry for inconvenience. diff --git a/fa/news/_posts/2012-06-02-a-facebook-group.md b/fa/news/_posts/2012-06-02-a-facebook-group.md new file mode 100644 index 0000000000..fdef599fb7 --- /dev/null +++ b/fa/news/_posts/2012-06-02-a-facebook-group.md @@ -0,0 +1,21 @@ +--- +layout: news_post +title: "A Facebook Group" +author: "James Edward Gray II" +lang: en +--- + +There is a new way to communicate with your fellow Ruby developers. +Introducing the new Facebook group for the [Ruby Programming +Language][1]. This group will allow for developers to communicate with +fellow Ruby programmers and provide a means for collaborative solutions +to problems members may face. It will also serve as source for news +about the Ruby project, and events–such as local workshops–related to +it. I present this group with great excitement and encourage all Ruby +developers to join and invite others. We can create a powerful +community, and the people you meet and work with here could possibly be +recruited for projects you will likely be working on in the future. + + + +[1]: https://www.facebook.com/groups/305156209572202/ diff --git a/fa/news/_posts/2012-06-29-ruby-1-8-7-p370-released.md b/fa/news/_posts/2012-06-29-ruby-1-8-7-p370-released.md new file mode 100644 index 0000000000..b78b0a0f23 --- /dev/null +++ b/fa/news/_posts/2012-06-29-ruby-1-8-7-p370-released.md @@ -0,0 +1,39 @@ +--- +layout: news_post +title: "Ruby 1.8.7-p370 released" +author: "Urabe Shyouhei" +lang: en +--- + +As we [posted earlier][1], we provide you a normal bugfix-only relrease +of 1.8.7 now. + +Ruby 1.8.7 was released on June 1st, 2008. This release is to celebrate +its fourth birthday. Thank you all. + +### Downloads + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.gz][2] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.bz2][3] +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.zip][4] + +### Checksums + + MD5(ruby-1.8.7-p370.tar.gz)= 98b00bbd1cdde3116155edb6e555b781 + SHA256(ruby-1.8.7-p370.tar.gz)= bcd8db47adf6f5e3822b60a04785eedb1b97d41fbd7cb595d02759faa36581c6 + SIZE(ruby-1.8.7-p370.tar.gz)= 4897464 + + MD5(ruby-1.8.7-p370.tar.bz2)= 1e4c3194537dd8ff92e756993e55a29d + SHA256(ruby-1.8.7-p370.tar.bz2)= 6359b03a1c8ba16630a96fcb5f972c7af15bd33b752e324cd87964224ab1fe31 + SIZE(ruby-1.8.7-p370.tar.bz2)= 4211597 + + MD5(ruby-1.8.7-p370.zip)= c3a83c3eecf2d361880d0bd68077e93f + SHA256(ruby-1.8.7-p370.zip)= 9505d4d6fe4388d1a05a3a0bbb3b018681f6c6005109af24e22d9397b4341202 + SIZE(ruby-1.8.7-p370.zip)= 5997386 + + + +[1]: {{ site.url }}/en/news/2011/10/06/plans-for-1-8-7/ +[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.zip diff --git a/fa/news/_posts/2012-09-07-confoo-2013call-for-papers-is-now-open.md b/fa/news/_posts/2012-09-07-confoo-2013call-for-papers-is-now-open.md new file mode 100644 index 0000000000..80385b61ab --- /dev/null +++ b/fa/news/_posts/2012-09-07-confoo-2013call-for-papers-is-now-open.md @@ -0,0 +1,34 @@ +--- +layout: news_post +title: "ConFoo 2013—Call for Papers is Now Open!" +author: "James Edward Gray II" +lang: en +--- + +{: style="border:0; float:right" width="180" height="250"}ConFoo is one of the most important developer-oriented conferences and +includes Ruby content. ConFoo 2013 will be held on February 25 through +March 1 in Montreal, Canada. + +The team just opened its call for papers. Candidates can submit +proposals **until September 23**. Consult the [call for papers][1] page +for details and to start submitting. That page also explains what +expenses ConFoo can cover for speakers. You can even get [advice][2] on +how to write proposals. + +The call for papers is public, meaning that all proposals get published +on the website for others to vote and comment on. This approach allows +the organizers to pick subjects that have most interest in the +community. The comments are only visible to speakers and organizers to +avoid influencing the votes. + +To stay in touch via Twitter, follow [@confooca][3] and use the +[#confoo][4] tag. You can also help promote the event with these cool +[badges][5] for your site. + + + +[1]: http://confoo.ca/en/call-for-papers +[2]: http://confoo.ca/en/call-for-papers/guidelines +[3]: http://twitter.com/confooca +[4]: http://twitter.com/#!/search/%23confoo +[5]: http://confoo.ca/en/propaganda diff --git a/fa/news/_posts/2012-10-12-cve-2012-4464-cve-2012-4466.md b/fa/news/_posts/2012-10-12-cve-2012-4464-cve-2012-4466.md new file mode 100644 index 0000000000..7d007468e6 --- /dev/null +++ b/fa/news/_posts/2012-10-12-cve-2012-4464-cve-2012-4466.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "$SAFE escaping vulnerability about Exception#to_s / NameError#to_s (CVE-2012-4464, CVE-2012-4466)" +author: "usa" +lang: en +--- + +Vulnerabilities found for Exception#to\_s, NameError#to\_s, and +name\_err\_mesg\_to\_s() which is Ruby interpreter-internal API. A +malicious user code can bypass $SAFE check by utilizing one of those +security holes. + +## Details + +Ruby\'s $SAFE mechanism enables untrusted user codes to run in $SAFE +>= 4 mode. This is a kind of sandboxing so some operations are +restricted in that mode to protect other data outside the sandbox. + +The problem found was around this mechanism. Exception#to\_s, +NameError#to\_s, and name\_err\_mesg\_to\_s() interpreter-internal API +was not correctly handling the $SAFE bits so a String object which is +not tainted can destructively be marked as tainted using them. By using +this an untrusted code in a sandbox can modify a formerly-untainted +string destructively. + +Ruby 1.8 once had a [similar security issue][1]. It fixed +Exception#to\_s and NameError#to\_s, but name\_err\_mesg\_to\_str() +issue survived previous security fix. + +## Affected versions + +* all Ruby 1.8.7 prior to patchlevel 371 +* all Ruby 1.9.3 prior to patchlevel 286 +* all development branches of Ruby 2.0 prior to revision r37068 + +## Solution + +Upgrade to a latest version. + +## Credit + +This vulnerability was found by Tyler Hickes. + +## Updates + +* Originally published at 2012-10-12 19:17:50 JST. + + + +[1]: {{ site.url }}/en/news/2011/02/18/exception-methods-can-bypass-safe/ diff --git a/fa/news/_posts/2012-10-12-poisoned-NUL-byte-vulnerability.md b/fa/news/_posts/2012-10-12-poisoned-NUL-byte-vulnerability.md new file mode 100644 index 0000000000..8dc840c73e --- /dev/null +++ b/fa/news/_posts/2012-10-12-poisoned-NUL-byte-vulnerability.md @@ -0,0 +1,46 @@ +--- +layout: news_post +title: "Unintentional file creation caused by inserting an illegal NUL character (CVE-2012-4522)" +author: "usa" +lang: en +--- + +A vulnerability was found that file creation routines can create +unintended files by strategically inserting NUL(s) in file paths. This +vulnerability has been reported as CVE-2012-4522. + +## Details + +Ruby can handle arbitrary binary patterns as Strings, including NUL +chars. On the other hand OSes and other libraries tend not. They usually +treat a NUL as an End of String mark. So to interface them with Ruby, +NUL chars should properly be avoided. + +However methods like IO#open did not check the filename passed to them, +and just passed those strings to lower layer routines. This led to +create unintentional files like this: + + p File.exists?("foo") #=> false + open("foo\0bar", "w") { |f| f.puts "hai" } + p File.exists?("foo") #=> true + p File.exists?("foo\0bar") #=> raises ArgumentError + +## Affected versions + +* All Ruby 1.9.3 prior to patchlevel 286 +* All development branches of Ruby 2.0.0 prior to revision r37163 + +## Solution + +Upgrade to a latest version. + +## Credit + +This issue was reported by Peter Bex. + +## Updates + +* Fixed typo at 2012-10-19 14:54:49 JST. +* Added a mention about CVE number at 2012-10-16 08:58:51 JST. +* Originally published at 2012-10-12 19:19:55 JST. + diff --git a/fa/news/_posts/2012-10-12-ruby-1-9-3-p286-is-released.md b/fa/news/_posts/2012-10-12-ruby-1-9-3-p286-is-released.md new file mode 100644 index 0000000000..792dce5804 --- /dev/null +++ b/fa/news/_posts/2012-10-12-ruby-1-9-3-p286-is-released.md @@ -0,0 +1,45 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p286 is released" +author: "usa" +lang: en +--- + +Ruby 1.9.3-p286 is released. + +This release includes some security fixes, and many other bug fixes. + +* [$SAFE escaping vulnerability about Exception#to\_s / NameError#to\_s + (CVE-2012-4464, CVE-2012-4466)][1] +* [Unintentional file creation caused by inserting an illegal NUL + character][2] +* many other bug fixes. + +See [tickets][3] and [ChangeLog][4] for details. + +## Download + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.bz2>][5] + * SIZE: 9961862 bytes + * MD5: e76848a86606a4fd5dcf14fc4b4e755e + * SHA256: 5281656c7a0ae48b64f28d845a96b4dfa16ba1357a911265752787585fb5ea64 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.gz>][6] + * SIZE: 12459652 bytes + * MD5: e2469b55c2a3d0d643097d47fe4984bb + * SHA256: e94367108751fd6bce79401d947baa66096c757fd3a0856350a2abd05d26d89d + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.zip>][7] + * SIZE: 13906047 bytes + * MD5: 8b3c2d6bd306804ed198260e4f5b6418 + * SHA256: 9d59c5885e66e6fbfbc49a2b6b80429141f8bdd2827747ec9a4eee7c2252b522 + + + +[1]: {{ site.url }}/en/news/2012/10/12/cve-2012-4464-cve-2012-4466/ +[2]: {{ site.url }}/en/news/2012/10/12/poisoned-NUL-byte-vulnerability/ +[3]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 +[4]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_286/ChangeLog +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.bz2 +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.gz +[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.zip diff --git a/fa/news/_posts/2012-10-22-rupy-2012-coming-very-soon.md b/fa/news/_posts/2012-10-22-rupy-2012-coming-very-soon.md new file mode 100644 index 0000000000..37f3179b5e --- /dev/null +++ b/fa/news/_posts/2012-10-22-rupy-2012-coming-very-soon.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "RuPy 2012 coming very soon" +author: "hosiawak" +lang: en +--- + +[RuPy 2012][1] – the 5th edition Ruby, Python and JavaScript conference +for hackers across the two hemispheres. **16-18 November 2012** in +[Brno][2], **8-9 December** in [São José][3]. + +Don’t miss it! + + + +[1]: http://rupy.eu/ +[2]: http://rupy.eu/#city-carousel +[3]: http://rupy.com.br/#city-carousel diff --git a/fa/news/_posts/2012-11-09-ruby-1-9-3-p327-is-released.md b/fa/news/_posts/2012-11-09-ruby-1-9-3-p327-is-released.md new file mode 100644 index 0000000000..7192a116c3 --- /dev/null +++ b/fa/news/_posts/2012-11-09-ruby-1-9-3-p327-is-released.md @@ -0,0 +1,41 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p327 is released" +author: "usa" +lang: en +--- + +Ruby 1.9.3-p327 is released. + +This release includes some security fixes, and many other bug fixes. + +* [Hash-flooding DoS vulnerability for ruby 1.9][1] +* many other bug fixes. + +See [tickets][2] and [ChangeLog][3] for details. + +## Download + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.bz2>][4] + * SIZE: 9975835 bytes + * MD5: 7d602aba93f31ceef32800999855fbca + * SHA256: d989465242f9b11a8a3aa8cbd2c75a9b3a8c0ec2f14a087a0c7b51abf164e488 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz>][5] + * SIZE: 12484826 bytes + * MD5: 96118e856b502b5d7b3a4398e6c6e98c + * SHA256: 51dd76462d3f6eb2c659a75e90f949f56da58c42bfb5766212478160b7f23d71 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.zip>][6] + * SIZE: 13925310 bytes + * MD5: 24f4417179a5eae6ce321c0cfadd837e + * SHA256: 51dfb919182f69f02a388a6c4b911cb43a321234a282cbf500f50cee51e2f5fe + + + +[1]: {{ site.url }}/en/news/2012/11/09/ruby19-hashdos-cve-2012-5371/ +[2]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 +[3]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_327/ChangeLog +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.bz2 +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.zip diff --git a/fa/news/_posts/2012-11-09-ruby19-hashdos-cve-2012-5371.md b/fa/news/_posts/2012-11-09-ruby19-hashdos-cve-2012-5371.md new file mode 100644 index 0000000000..1613a0ce67 --- /dev/null +++ b/fa/news/_posts/2012-11-09-ruby19-hashdos-cve-2012-5371.md @@ -0,0 +1,61 @@ +--- +layout: news_post +title: "Hash-flooding DoS vulnerability for ruby 1.9 (CVE-2012-5371)" +author: "usa" +lang: en +--- + +Hash-flooding DoS attack reported for the Hash function ruby 1.9 series +were using. This vulnerability is different from [CVE-2011-4815][1] for +ruby 1.8.7. All ruby 1.9 users are recommended to upgrade to [ruby-1.9.3 +patchlevel 327][2] to get this security fix. + +## Impact + +Carefully crafted sequence of strings can cause a denial of service +attack on the service that parses the sequence to create a Hash object +by using the strings as keys. For instance, this vulnerability affects +web application that parses the JSON data sent from untrusted entity. + +## Details + +This vulnerability is similar to [CVE-2011-4815][1] for ruby 1.8.7. ruby +1.9 versions were using modified [MurmurHash function][3] but it\'s +[reported that there is a way to create sequence of strings that collide +their hash values each other][4]. This fix changes the Hash function of +String object from the MurmurHash to [SipHash 2-4][5]. + +## Solution + +Please update to [ruby-1.9.3 patchlevel 327][2] if you are using ruby +1.9 versions. Please update to trunk revision 37575 or later if you are +using ruby 2.0.0 preview1 or ruby trunk. In addition to it, all ruby +applications that accept input data from untrusted entity for parsing +should restrict the size of the input data to reasonable size. We are +not sure if we can provide protection against this kind of vulnerability +at programming language level in the future. + +## Affected versions + +* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 327 +* All ruby 2.0 versions (includes 2.0.0 preview1) prior to trunk + revision 37575 + +## Credit + +This vulnerability is reported by Jean-Philippe Aumasson, one of the +designer of SipHash. The original SipHash implementation for this fix is +presented by Martin Boßlet, one of the ruby committer. + +## Updates + +* A typo fixed at 2012-11-21 22:16:00 +* Originally published at 2012-11-10 04:23:00 + + + +[1]: {{ site.url }}/en/news/2011/12/28/denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815/ +[2]: {{ site.url }}/en/news/2012/11/09/ruby-1-9-3-p327-is-released/ +[3]: https://sites.google.com/site/murmurhash/ +[4]: http://2012.appsec-forum.ch/conferences/#c17 +[5]: https://www.131002.net/siphash/ diff --git a/fa/news/_posts/2012-11-10-fukuoka-ruby-award-2013.md b/fa/news/_posts/2012-11-10-fukuoka-ruby-award-2013.md new file mode 100644 index 0000000000..c324950f9f --- /dev/null +++ b/fa/news/_posts/2012-11-10-fukuoka-ruby-award-2013.md @@ -0,0 +1,58 @@ +--- +layout: news_post +title: "2013 Fukuoka Ruby Award Competition—Entries to be judged by Matz" +author: "James Edward Gray II" +lang: en +--- + +Dear Ruby Enthusiasts, + +The Government of Fukuoka, Japan, together with \"Matz\" Matsumoto, +would like to invite you to enter the 2013 Fukuoka Ruby Competition. If +you have developed Ruby programs within the past 12 months, this is the +competition you\'ve been waiting for. This year, in addition to the +Grand Prize, we will also have special awards sponsored by Engine Yard +and Salesforce.com. Details are below. + +2013 Fukuoka Ruby Award Competition + +Entry Deadline: November 30, 2012 at 5 PM Japan Time (GMT+9) + +Grand Prize: 1 Million Yen! + +Engine Yard Award:<br> +Engine Yard Cloud (first 5,000 hours free), invitation to Ruby Kaigi +(includes afterparty and 50,000JPY toward transportation costs for 2 +people), and an Apple iPad Mini 32GB WiFi Black & Slate (engraved +with a special message). + +Salesforce.com Award:<br> +500,000 JPY, introduction on the [http://www.salesforce.com/jp/][1] +website, Dreamforce tickets for 3 people. + +Please visit [this website][2] for additional details or to enter. + +Past winners from US include Rhomobile, Banjo, and VMware. + +Past winners:<br> +[2012][3]<br> +[2011][4]<br> +[2010][5]<br> +[2009][6] + +Engine Yard CEO and VMware CTO of Cloud Applications also joined us at +[the last award ceremony][7]. + +We look forward to receiving your entry! + +Best regards, + + + +[1]: http://www.salesforce.com/jp/ +[2]: http://www.digitalfukuoka.jp/events/index_en.html +[3]: http://www.myfukuoka.com/news/2012-fukuoka-ruby-award-winners.html +[4]: http://www.myfukuoka.com/news/2011-fukuoka-ruby-award-winners.html +[5]: http://www.myfukuoka.com/news/2010-fukuoka-ruby-award-winners.html +[6]: http://www.myfukuoka.com/events/2009-fukuoka-ruby-award-winners.html +[7]: http://www.myfukuoka.com/events/2012-fukuoka-ruby-forum.html diff --git a/fa/news/_posts/2012-12-25-ruby-1-9-3-p362-is-released.md b/fa/news/_posts/2012-12-25-ruby-1-9-3-p362-is-released.md new file mode 100644 index 0000000000..922a8b1c8e --- /dev/null +++ b/fa/news/_posts/2012-12-25-ruby-1-9-3-p362-is-released.md @@ -0,0 +1,52 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p362 is released" +author: "usa" +lang: en +--- + +According to this time, as usual, Ruby 1.9.3-p362 is released. + +This release includes other many bug fixes. + +* Resolved build problems on Solaris. +* Windows 8 support (hopefully). +* other many bug fixes. + +See [tickets][1] and [ChangeLog][2] for details. + +In addition, any security fixes are not included in this release. + +## Downloads + +You can download this release from: + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.tar.bz2>][3] + * SIZE: 10021565 bytes + * MD5: 13c26ea368d88a560f07cc8c5eb4fa05 + * SHA256: 9ed456711a4c0fb2969d9144a81a706d2d506070a35a6d5bc98bb5c8407f9985 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.tar.gz>][4] + * SIZE: 12565596 bytes + * MD5: 1efc2316dc50e97591792d90647fade2 + * SHA256: eb593607862b16a28176ae6d086dbe3bd9bd41935ec999a8cd5ef8773e8239d6 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.zip>][5] + * SIZE: 13869324 bytes + * MD5: 764d5e2d8149a7f424fc02089f8a7359 + * SHA256: 713ed8149f819ef3ae6b9ac0e27d0c9ee26d3d78e44d42d02ce426d6cb18068d + +## Release Comment + +Many committers and users who gave bug reports greatly helped me to make +this release. Thank you everyone. + +Have good holidays, and happy hacking! + + + +[1]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 +[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_362/ChangeLog +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.tar.gz +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.zip diff --git a/fa/news/_posts/2013-01-17-ruby-1-9-3-p374-is-released.md b/fa/news/_posts/2013-01-17-ruby-1-9-3-p374-is-released.md new file mode 100644 index 0000000000..ed5e681f13 --- /dev/null +++ b/fa/news/_posts/2013-01-17-ruby-1-9-3-p374-is-released.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p374 is released" +author: "usa" +lang: en +--- + +Now Ruby 1.9.3-p374 is released. + +This release includes many bug fixes. Especially, + +* Fixed randomly SEGV problem (often reported with Rails) +* Windows 8 support (maybe, hopefully) +* other many bug fixes. + +See [tickets][1] and [ChangeLog][2] for details. + +Any new security fixes are not included in this release, but I recommend +users of previous release (p362) to update. + +## Downloads + +You can download this release from: + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.bz2>][3] + * SIZE: 10017658 bytes + * MD5: 944e73eba9ee9e1f2647ff32ec0b14b2 + * SHA256: 712944f691b79f22f655547826400c26b13bc8c9e7bdc73a4abea45d5e766d85 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.gz>][4] + * SIZE: 12555429 bytes + * MD5: 90b6c327abcdf30a954c2d6ae44da2a9 + * SHA256: 0d0e32a3554867e3eddbb23fbf30a72c4748622e010c23e31302d899fc005574 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.zip>][5] + * SIZE: 13871394 bytes + * MD5: c0001d5d36ad2e3e6a84810abe585b79 + * SHA256: 058af4cf409c93cce1de74a6b3355ddcf740f3efae1ab02d63471fcdbed19088 + +## Release Comment + +Many committers, testers and users who gave bug reports greatly helped +me to make this release. Thank you everyone. + +Happy Hacking! + + + +[1]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 +[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_374/ChangeLog +[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.bz2 +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.gz +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.zip diff --git a/fa/news/_posts/2013-01-23-confoo-with-ruby-in-montreal.md b/fa/news/_posts/2013-01-23-confoo-with-ruby-in-montreal.md new file mode 100644 index 0000000000..c3e6cd1643 --- /dev/null +++ b/fa/news/_posts/2013-01-23-confoo-with-ruby-in-montreal.md @@ -0,0 +1,30 @@ +--- +layout: news_post +title: "ConFoo with Ruby in Montreal" +author: "James Edward Gray II" +date: 2013-01-23 19:52:42 +0000 +lang: en +--- + +If you have never heard of ConFoo, it is one of the most important +developer-oriented conferences. The team brings 100 speakers from around +the globe to share their hands-on experience with various web +technologies. The best news is: it’s driven by the community and is non +profit! + +1h presentations cover: Ruby, PHP, JavaScript, Python, .NET, Java, +e-Commerce, Security, Mobile, UX and other topics. [The schedule][1] is +quite impressive. + +They also have hands-on training and a hackaton in the two days before +the main event. + +<iframe width="420" height="236" src="//www.youtube.com/embed/86VcHcaurRQ" allowfullscreen></iframe> + +The event is at the Hilton Bonaventure Montreal, from February 27th to +March 1st. [Tickets are sold online][2]. + + + +[1]: http://confoo.ca/en/2013/schedule +[2]: http://confoo.ca/en/register diff --git a/fa/news/_posts/2013-02-06-rdoc-xss-cve-2013-0256.md b/fa/news/_posts/2013-02-06-rdoc-xss-cve-2013-0256.md new file mode 100644 index 0000000000..ca2203db9e --- /dev/null +++ b/fa/news/_posts/2013-02-06-rdoc-xss-cve-2013-0256.md @@ -0,0 +1,88 @@ +--- +layout: news_post +title: "XSS exploit of RDoc documentation generated by rdoc (CVE-2013-0256)" +author: "usa" +date: 2013-02-06 13:35:34 +0000 +lang: en +--- + +RDoc documentation generated by rdoc bundled with ruby are vulnerable to +an XSS exploit. All ruby users are recommended to update ruby to newer +version which includes security-fixed RDoc. If you are publishing RDoc +documentation generated by rdoc, you are recommended to apply a patch +for the documentation or re-generate it with security-fixed RDoc. + +## Impact + +RDoc documentation generated by rdoc 2.3.0 through rdoc 3.12 and +prereleases up to rdoc 4.0.0.preview2.1 are vulnerable to an XSS +exploit. This exploit may lead to cookie disclosure to third parties. + +## Details + +The exploit exists in darkfish.js which is copied from the RDoc install +location to the generated documentation. + +RDoc is a static documentation generation tool. Patching the library +itself is insufficient to correct this exploit. Those hosting rdoc +documentation will need to apply the following patch. + +## Solution + +Please apply the following patch to rdoc documentation. If applied while +ignoring whitespace, this patch will correct all affected versions: + +{% highlight diff %} +diff --git darkfish.js darkfish.js +index 4be722f..f26fd45 100644 +--- darkfish.js ++++ darkfish.js +@@ -109,13 +109,15 @@ function hookSearch() { + function highlightTarget( anchor ) { + console.debug( "Highlighting target '%s'.", anchor ); + +- $("a[name=" + anchor + "]").each( function() { +- if ( !$(this).parent().parent().hasClass('target-section') ) { +- console.debug( "Wrapping the target-section" ); +- $('div.method-detail').unwrap( 'div.target-section' ); +- $(this).parent().wrap( '<div class="target-section"></div>' ); +- } else { +- console.debug( "Already wrapped." ); ++ $("a[name]").each( function() { ++ if ( $(this).attr("name") == anchor ) { ++ if ( !$(this).parent().parent().hasClass('target-section') ) { ++ console.debug( "Wrapping the target-section" ); ++ $('div.method-detail').unwrap( 'div.target-section' ); ++ $(this).parent().wrap( '<div class="target-section"></div>' ); ++ } else { ++ console.debug( "Already wrapped." ); ++ } + } + }); + }; +{% endhighlight %} + +And, if you are using ruby 1.9, please update [ruby-1.9.3 patchlevel +385][1]. If you are using ruby 2.0.0 rc1 or prior or ruby trunk, please +update to ruby 2.0.0 rc2 or trunk revision 39102 or later. You can also +update RDoc itself with rubygems to RDoc 3.12.1 or RDoc 4.0.0.rc.2. + +## Affected versions + +* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 383 +* All ruby 2.0 versions prior to ruby 2.0.0 rc2 or prior to trunk + revision 39102 + +## Credit + +This exploit was discovered by Evgeny Ermakov <corwmh@gmail.com>. + +This vulnerability has been assigned the CVE identifier CVE-2013-0256. + +## History + +* Originally published at 2013-02-06 13:30:00 (UTC) + + + +[1]: {{ site.url }}/en/news/2013/02/06/ruby-1-9-3-p385-is-released/ diff --git a/fa/news/_posts/2013-02-06-ruby-1-9-3-p385-is-released.md b/fa/news/_posts/2013-02-06-ruby-1-9-3-p385-is-released.md new file mode 100644 index 0000000000..3ac881b3b6 --- /dev/null +++ b/fa/news/_posts/2013-02-06-ruby-1-9-3-p385-is-released.md @@ -0,0 +1,54 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p385 is released" +author: "usa" +date: 2013-02-06 13:35:58 +0000 +lang: en +--- + +Now Ruby 1.9.3-p385 is released. + +This release includes a security fix about bundled RDoc. See [this +page][1] for details. + +And some small bugfixes are also included. + +See [tickets][2] and [ChangeLog][3] for details. + +## Download + +You can download this release from: + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.tar.bz2>][4] + + SIZE: 10021486 bytes + MD5: 5ec9aff670f4912b0f6f0e11e855ef6c + SHA256: f991ee50414dc795696bad0fc5c7b0b94d93b9b38fed943326d20ce4e9dda42b + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.tar.gz>][5] + + SIZE: 12546003 bytes + MD5: 3e0d7f8512400c1a6732327728a56f1d + SHA256: 4b15df007f5935ec9696d427d8d6265b121d944d237a2342d5beeeba9b8309d0 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.zip>][6] + + SIZE: 13862147 bytes + MD5: 044564fe519a2c8e278472c4272b3ff2 + SHA256: 0cb389fcc1ac9fccf32f3db27497908b7365aa910b6dd1559389416e828addc5 + +## Release Comment + +Many committers, testers and users who gave bug reports greatly helped +me to make this release. Thanks for their contributions. + +Happy Hacking! + + + +[1]: {{ site.url }}/en/news/2013/02/06/rdoc-xss-cve-2013-0256/ +[2]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 +[3]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_385/ChangeLog +[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.tar.bz2 +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.tar.gz +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.zip diff --git a/fa/news/_posts/2013-02-08-ruby-2-0-0-rc2-is-released.md b/fa/news/_posts/2013-02-08-ruby-2-0-0-rc2-is-released.md new file mode 100644 index 0000000000..2dffccf62b --- /dev/null +++ b/fa/news/_posts/2013-02-08-ruby-2-0-0-rc2-is-released.md @@ -0,0 +1,120 @@ +--- +layout: news_post +title: "Ruby 2.0.0-rc2 is released" +author: "Yusuke Endoh" +date: 2013-02-08 14:34:17 +0000 +lang: en +--- + +Ruby 2.0.0-rc2 is released. This will be the last release candidate of +Ruby 2.0.0. + +Please give it a try, and report any issue if you notice. + +## Locations + +* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.bz2>][1] + + SIZE: 10822239 bytes + MD5: e92420131bd7994513e0bf09a3e2a19b + SHA256: d55f897bb04283c5fa80223d96d990fe8ecb598508dd59443b356cbba1f66145 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.gz>][2] + + SIZE: 13616756 bytes + MD5: 9d5e6f26db7c8c3ddefc81fdb19bd41a + SHA256: 87072ab3e6d393d47f7402682364e4f24efe1c518969795cc01fcdeeb0e646f3 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.zip>][3] + + SIZE: 15118480 bytes + MD5: 1a2d33f1c50e32ca1532f8dea4790d53 + SHA256: c28e9baf3aa00b41b8823c16df436ae143e8a63e43e7a53302f23119e13d0ebf + +## New features in 2.0.0 + +* Keyword arguments +* Enumerable#lazy +* Module#prepend +* \#to\_h: Convention for conversion to Hash +* %i: a literal for symbol array +* Updated regexp engine: Onigmo (a fork of Oniguruma) +* Enumerator#size and Range#size were introduced +* DTrace support +* TracePoint +* Optimized require performance (especially, on Windows) +* NativeClient support +* Documentation improvement +* Enhanced asynchronous interrupt handling +* Launch-time stack size tuning parameters +* Refinements \[experimental\] + +... and more improvements. See NEWS for details. + +Here are some introductory articles by third parties: + +* [<URL:https://speakerdeck.com/a\_matsuda/ruby-2-dot-0-on-rails>][4] +* [<URL:http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/>][5] +* [<URL:http://www.infoq.com/news/2012/11/ruby-20-preview1>][6] +* [<URL:http://timelessrepo.com/refinements-in-ruby>][7] + (Refinements) +* [<URL:http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html>][8] + (in Japanese) +* [<URL:https://speakerdeck.com/nagachika/rubyist-enumeratorlazy>][9] + (Enumerator::Lazy, in Japanese) + +(If you volunteer to provide additional articles, we may cite or refer +to them in the next release announcement.) + +## Notes + +### Incompatibility + +There are three notable incompatibilities we know of: + +* The default encoding for ruby scripts is now UTF-8 [\[#6679\]][10]. + Some people report that it affects existing programs, such as some + benchmark programs becoming very slow [\[ruby-dev:46547\]][11]. The + spec may change for the official release. +* iconv was removed, which had already been deprecated when M17N was + introduced in ruby 1.9. Use String#encode, etc. instead. +* There is ABI breakage [\[ruby-core:48984\]][12]. We think that normal + users can/should just reinstall extension libraries. You should be + aware: \"DO NOT COPY .so OR .bundle FILES FROM 1.9\". + +There are some comparatively small incompatibilities. +[\[ruby-core:49119\]][13] Please report any other incompatibility you +notice. + +FYI: We are creating upgrade notes, but some parts are already outdated. + +* [<URL:https://bugs.ruby-lang.org/projects/ruby/wiki/200UpgradeNotesDraft>][14] + +### Status of Refinements + +2\.0.0 will include refinements as an \"experimental feature\" because we +could not agree on its detailed spec. Note that the behavior may change +in future versions of Ruby. + +### Special thanks + +I appreciate all who try preview and rc1 release! I\'m grateful for all +the contributors\' hard work to fix many bugs. I\'m really thankful to +all the people who helped me do this release. + + + +[1]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.bz2 +[2]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.zip +[4]: https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails +[5]: http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/ +[6]: http://www.infoq.com/news/2012/11/ruby-20-preview1 +[7]: http://timelessrepo.com/refinements-in-ruby +[8]: http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html +[9]: https://speakerdeck.com/nagachika/rubyist-enumeratorlazy +[10]: https://bugs.ruby-lang.org/issues/6679 +[11]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/46547 +[12]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/48984 +[13]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/49119 +[14]: https://bugs.ruby-lang.org/projects/ruby/wiki/200UpgradeNotesDraft diff --git a/fa/news/_posts/2013-02-15-the-2013-ruby-hero-awards.md b/fa/news/_posts/2013-02-15-the-2013-ruby-hero-awards.md new file mode 100644 index 0000000000..637b492a07 --- /dev/null +++ b/fa/news/_posts/2013-02-15-the-2013-ruby-hero-awards.md @@ -0,0 +1,25 @@ +--- +layout: news_post +title: "The 2013 Ruby Hero Awards" +author: "James Edward Gray II" +date: 2013-02-15 21:34:51 +0000 +lang: en +--- + +The [Ruby Hero Awards][1] are now accepting nominations and we need your +help to find people in our community who thanklessly help others and +perhaps don’t get the recognition they deserve. This could be someone +who contributes to ruby open source software you’ve found useful in the +past year, could be an educator, or maybe someone who’s helped organize +Ruby events. + +If you have a minute please take a moment to nominate someone by heading +over to [RubyHeroes.com][1], typing in the GitHub username of the person +you wish to nominate, and giving us a reason why they deserve to win. +About a month from now all the previous year’s Ruby Heroes will help +decide who will win this year’s 6 awards which will be presented to the +heroes live on stage at Railsconf at the end of April. + + + +[1]: http://rubyheroes.com diff --git a/fa/news/_posts/2013-02-16-the-barcelona-ruby-conference-call-for-papers-is-open.md b/fa/news/_posts/2013-02-16-the-barcelona-ruby-conference-call-for-papers-is-open.md new file mode 100644 index 0000000000..6dfe88c445 --- /dev/null +++ b/fa/news/_posts/2013-02-16-the-barcelona-ruby-conference-call-for-papers-is-open.md @@ -0,0 +1,29 @@ +--- +layout: news_post +title: "The Barcelona Ruby Conference Call for Papers is Open" +author: "James Edward Gray II" +date: 2013-02-16 14:47:15 +0000 +lang: en +--- + +**[Barcelona Ruby Conference][1]** is a conference that takes place in +the heart of **Catalunya, Spain** this September 14-15. Starring +[world-class speakers][2] as **Aaron Patterson** (rails and ruby core), +**David Chelimsky** (*The RSpec book* author, RSpec core member), +**Charles Nutter** (JRuby maintainer), **Sandi Metz** (*Practical +Object-Oriented Design in Ruby* author) or **Yukihiro Matz** (the Ruby +language creator), among others. + +The **[call for papers][3] is already open** and admitting submissions +until 10th of March - don\'t miss the chance to be on that list! + +There\'s a total of **4 slots open**, and each one of the **4 selected +speakers** will get a **free ticket** to the conference as well as +**paid accommodation**. You can check out the CFP\'s basis and **send +your proposal [in their website][3].** + + + +[1]: http://baruco.org +[2]: http://baruco.org/speakers +[3]: http://baruco.org/call_for_papers diff --git a/fa/news/_posts/2013-02-22-json-dos-cve-2013-0269.md b/fa/news/_posts/2013-02-22-json-dos-cve-2013-0269.md new file mode 100644 index 0000000000..2783e8abd7 --- /dev/null +++ b/fa/news/_posts/2013-02-22-json-dos-cve-2013-0269.md @@ -0,0 +1,104 @@ +--- +layout: news_post +title: "Denial of Service and Unsafe Object Creation Vulnerability in JSON (CVE-2013-0269)" +author: "usa" +date: 2013-02-22 13:08:38 +0000 +lang: en +--- + +There is a denial of service and unsafe object creation vulnerability in +the json bundled with ruby. This vulnerability has been assigned the CVE +identifier CVE-2013-0269. We strongly recommend to upgrade ruby. + +## Details + +When parsing certain JSON documents, the JSON gem (includes bundled with +ruby) can be coerced in to creating Ruby symbols in a target system. +Since Ruby symbols are not garbage collected, this can result in a +denial of service attack. + +The same technique can be used to create objects in a target system that +act like internal objects. These \"act alike\" objects can be used to +bypass certain security mechanisms and can be used as a spring board for +SQL injection attacks in Ruby on Rails. + +Impacted code looks like this: + +{% highlight ruby %} +JSON.parse(user_input) +{% endhighlight %} + +Where the \`user\_input\` variable will have a JSON document like this: + + {"json_class":"foo"} + +The JSON gem will attempt to look up the constant \"foo\". Looking up +this constant will create a symbol. + +In JSON version 1.7.x, objects with arbitrary attributes can be created +using JSON documents like this: + + {"json_class":"JSON::GenericObject","foo":"bar"} + +This document will result in an instance of JSON::GenericObject, with +the attribute \"foo\" that has the value \"bar\". Instantiating these +objects will result in arbitrary symbol creation and in some cases can +be used to bypass security measures. + +PLEASE NOTE: this behavior **does not change** when using \`JSON.load\`. +\`JSON.load\` should **never** be given input from unknown sources. If +you are processing JSON from an unknown source, **always** use +\`JSON.parse\`. + +All users running an affected release should either upgrade or use one +of the workarounds immediately. + +## Workarounds + +For users that cannot upgrade ruby or JSON gem, change your code from +this: + +{% highlight ruby %} +JSON.parse(json) +{% endhighlight %} + +To this: + +{% highlight ruby %} +JSON.parse(json, :create_additions => false) +{% endhighlight %} + +If you cannot change the usage of \`JSON.parse\` (for example you\'re +using a gem which depends on \`JSON.parse\` like multi\_json), then +apply this monkey patch: + +{% highlight ruby %} +module JSON + class << self + alias :old_parse :parse + def parse(json, args = {}) + args[:create_additions] = false + old_parse(json, args) + end + end +end +{% endhighlight %} + +## Affected versions + +* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 392 +* All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 0 +* prior to trunk revision 39208 + +## Credits + +A huge thanks goes to the following people for responsibly disclosing +this issue and working with the Rails team to get it fixed: + +* Thomas Hollstegge of Zweitag (www.zweitag.de) +* Ben Murphy + +## History + +* Originally published at 2013-02-22 12:00:00 (UTC) + diff --git a/fa/news/_posts/2013-02-22-rexml-dos-2013-02-22.md b/fa/news/_posts/2013-02-22-rexml-dos-2013-02-22.md new file mode 100644 index 0000000000..484a0d6328 --- /dev/null +++ b/fa/news/_posts/2013-02-22-rexml-dos-2013-02-22.md @@ -0,0 +1,108 @@ +--- +layout: news_post +title: "Entity expansion DoS vulnerability in REXML (XML bomb, CVE-2013-1821)" +author: "usa" +date: 2013-02-22 13:08:51 +0000 +lang: en +--- + +Unrestricted entity expansion can lead to a DoS vulnerability in REXML. +This vulnerability has been assigned the CVE identifier CVE-2013-1821. +We strongly recommend to upgrade ruby. + +## Details + +When reading text nodes from an XML document, the REXML parser can be +coerced in to allocating extremely large string objects which can +consume all of the memory on a machine, causing a denial of service. + +Impacted code will look something like this: + +{% highlight ruby %} +document = REXML::Document.new some_xml_doc +document.root.text +{% endhighlight %} + +When the \`text\` method is called, entities will be expanded. An +attacker can send a relatively small XML document that, when the +entities are resolved, will consume extreme amounts of memory on the +target system. + +Note that this attack is similar to, but different from the Billion +Laughs attack. This is also related to CVE-2013-1664 of Python. + +All users running an affected release should either upgrade or use one +of the workarounds immediately. + +## Workarounds + +If you cannot upgrade Ruby, use this monkey patch as a workaround: + +{% highlight ruby %} +class REXML::Document + @@entity_expansion_text_limit = 10_240 + + def self.entity_expansion_text_limit=( val ) + @@entity_expansion_text_limit = val + end + + def self.entity_expansion_text_limit + @@entity_expansion_text_limit + end +end + +class REXML::Text + def self.unnormalize(string, doctype=nil, filter=nil, illegal=nil) + sum = 0 + string.gsub( /\r\n?/, "\n" ).gsub( REFERENCE ) { + s = self.expand($&, doctype, filter) + if sum + s.bytesize > REXML::Document.entity_expansion_text_limit + raise "entity expansion has grown too large" + else + sum += s.bytesize + end + s + } + end + + def self.expand(ref, doctype, filter) + if ref[1] == ?# + if ref[2] == ?x + [ref[3...-1].to_i(16)].pack('U*') + else + [ref[2...-1].to_i].pack('U*') + end + elsif ref == '&' + '&' + elsif filter and filter.include?( ref[1...-1] ) + ref + elsif doctype + doctype.entity( ref[1...-1] ) or ref + else + entity_value = DocType::DEFAULT_ENTITIES[ ref[1...-1] ] + entity_value ? entity_value.value : ref + end + end +end +{% endhighlight %} + +This monkey patch will limit the size of the entity substitutions to 10k +per node. REXML already defaults to only allow 10000 entity +substitutions per document, so the maximum amount of text that can be +generated by entity substitution will be around 98 megabytes. + +## Affected versions + +* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 392 +* All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 0 +* prior to trunk revision 39384 + +## Credits + +Thanks to Ben Murphy for reporting this issue. + +## History + +* Added about CVE number at 2013-03-11 07:45:00 (UTC) +* Originally published at 2013-02-22 12:00:00 (UTC) + diff --git a/fa/news/_posts/2013-02-22-ruby-1-9-3-p392-is-released.md b/fa/news/_posts/2013-02-22-ruby-1-9-3-p392-is-released.md new file mode 100644 index 0000000000..649fa37af4 --- /dev/null +++ b/fa/news/_posts/2013-02-22-ruby-1-9-3-p392-is-released.md @@ -0,0 +1,58 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p392 is released" +author: "usa" +date: 2013-02-22 13:09:05 +0000 +lang: en +--- + +Now Ruby 1.9.3-p392 is released. I apologize for updating too +frequently. + +This release includes security fixes about bundled JSON and REXML. + +* [Denial of Service and Unsafe Object Creation Vulnerability in JSON + (CVE-2013-0269)][1] +* [Entity expansion DoS vulnerability in REXML (XML bomb, + CVE-2013-1821)][2] + +And some small bugfixes are also included. + +See [tickets][3] and [ChangeLog][4] for details. + +## Download + +You can download this release from: + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.bz2>][5] + + SIZE: 10024221 bytes + MD5: a810d64e2255179d2f334eb61fb8519c + SHA256: 5a7334dfdf62966879bf539b8a9f0b889df6f3b3824fb52a9303c3c3d3a58391 + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz>][6] + + SIZE: 12557294 bytes + MD5: f689a7b61379f83cbbed3c7077d83859 + SHA256: 8861ddadb2cd30fb30e42122741130d12f6543c3d62d05906cd41076db70975f + +* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.zip>][7] + + SIZE: 13863402 bytes + MD5: 212fb3bc41257b41d1f8bfe0725916b7 + SHA256: f200ce4a63ce57bea64028a507350717c2a16bdbba6d9538bc69e9e7c2177c8b + +## Release Comment + +Many committers, testers and users who gave bug reports helped me to +make this release. Thanks for their contributions. + + + +[1]: {{ site.url }}/en/news/2013/02/22/json-dos-cve-2013-0269/ +[2]: {{ site.url }}/en/news/2013/02/22/rexml-dos-2013-02-22/ +[3]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 +[4]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_392/ChangeLog +[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.bz2 +[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz +[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.zip diff --git a/fa/news/_posts/2013-02-24-ruby-2-0-0-p0-is-released.md b/fa/news/_posts/2013-02-24-ruby-2-0-0-p0-is-released.md new file mode 100644 index 0000000000..cbfbf9d258 --- /dev/null +++ b/fa/news/_posts/2013-02-24-ruby-2-0-0-p0-is-released.md @@ -0,0 +1,191 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p0 is released" +author: "Yusuke Endoh" +date: 2013-02-24 09:06:22 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.0.0-p0. + +Ruby 2.0.0 is the first stable release of the Ruby 2.0 series, with many +new features and improvements in response to the increasingly diverse +and expanding demands for Ruby. + +Enjoy programming with Ruby 2.0.0! + +## Download + +* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.bz2>][1] + + SIZE: 10814890 bytes + MD5: 895c1c581f8d28e8b3bb02472b2ccf6a + SHA256: c680d392ccc4901c32067576f5b474ee186def2fcd3fcbfa485739168093295f + +* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz>][2] + + SIZE: 13608925 bytes + MD5: 50d307c4dc9297ae59952527be4e755d + SHA256: aff85ba5ceb70303cb7fb616f5db8b95ec47a8820116198d1c866cc4fff151ed + +* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip>][3] + + SIZE: 15037340 bytes + MD5: db5af5d6034646ad194cbdf6e50f49ee + SHA256: 0d0af6a9c8788537efd8d7d2358ce9468e6e2b7703dacba9ebd064d8b7da5f99 + +## What is Ruby 2.0.0 + +### New Features + +Some of the highlights: + +* Language core features + * Keyword arguments, which give flexibility to API design + * Module#prepend, which is a new way to extend a class + * A literal %i, which creates an array of symbols easily + * \_\_dir\_\_, which returns the dirname of the file currently being + executed + * The UTF-8 default encoding, which make many magic comments omissible + +* Built-in libraries + * Enumerable#lazy and Enumerator::Lazy, for (possibly infinite) lazy + stream + * Enumerator#size and Range#size, for lazy size evaluation + * \#to\_h, which is a new convention for conversion to Hash + * Onigmo, which is a new regexp engine (a fork of Oniguruma) + * Asynchronous exception handling API + +* Debug support + * DTrace support, which enables run-time diagnosis in production + * TracePoint, which is an improved tracing API + +* Performance improvements + * GC optimization by bitmap marking + * Kernel#require optimization which makes Rails startup very fast + * VM optimization such as method dispatch + * Float operation optimization + +In addition, albeit as an experimental feature, 2.0.0 includes +Refinements, which adds a new concept to Ruby\'s modularity. + +See also NEWS for more features, improvements and details. + +### Compatibility + +We have also taken care with the 2.0.0 design to make it compatible with +1.9. It will be easier to migrate from 1.9 to 2.0 than it was from 1.8 +to 1.9. (The notable incompatibilities are described later.) + +In fact, thanks to the dedicated work of third parties, some popular +applications such as Rails and tDiary have been reported to work on the +release candidate version of 2.0.0. + +### Documentation + +We have also made documentation improvements which many rubyists have +requested. We have added a huge amount of rdoc for modules and methods. +2.0.0 will be around 75% documented while 1.9.3 was about 60%. Also, we +have added a description of Ruby\'s syntax. You can see: + +{% highlight sh %} +ri ruby:syntax +{% endhighlight %} + +### Stability + +Note that unlike 1.9.0, 2.0.0 IS a stable release, even though its TEENY +is 0. All library authors are strongly recommended to support 2.0.0. As +mentioned above, it will be comparatively easy to migrate from 1.9 to +2.0. + +Ruby 2.0.0 is ready for practical use, and will absolutely improve your +Ruby life. + +## Notes + +### Introductory articles + +Here are some introductory articles of 2.0.0 features by third parties: + +* [<URL:http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example>][4] + (comprehensive, recommended) +* [<URL:https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0>][5] + (comprehensive, recommended) +* [<URL:http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html>][6] + (brief, in Japanese) +* [<URL:https://speakerdeck.com/nagachika/rubyist-enumeratorlazy>][7] + (only Enumerator::Lazy, in Japanese) + +The following articles are also helpful, but outdated with regards to +refinement: + +* [<URL:http://rubysource.com/a-look-at-ruby-2-0/>][8] +* [<URL:https://speakerdeck.com/a\_matsuda/ruby-2-dot-0-on-rails>][9] +* [<URL:http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/>][10] +* [<URL:http://www.infoq.com/news/2012/11/ruby-20-preview1>][11] + +Also, the recent issue of \"Rubyist Magazine\" includes some articles +that were written by the feature authors themselves for introducing some +new 2.0.0 features. + +* [<URL:http://jp.rubyist.net/magazine/?0041-200Special>][12] + +Though they will be written in Japanese, English translations are +planned for the future. + +### Incompatibility + +There are five notable incompatibilities we know of: + +* The default encoding for ruby scripts is now UTF-8 \[#6679\]. Some + people report that it affects existing programs, such as some + benchmark programs becoming very slow \[ruby-dev:46547\]. +* Iconv was removed, which had already been deprecated when M17N was + introduced in ruby 1.9. Use String#encode, etc. instead. +* There is ABI breakage \[ruby-core:48984\]. We think that normal users + can/should just reinstall extension libraries. You should be aware: DO + NOT COPY .so OR .bundle FILES FROM 1.9. +* \#lines, #chars, #codepoints, #bytes now returns an Array instead of an + Enumerator \[#6670\]. This change allows you to avoid the common idiom + \"lines.to\_a\". Use #each\_line, etc. to get an Enumerator. +* Object#inspect does always return a string like + #<ClassName:0x...> instead of delegating to #to\_s. \[#2152\] + +There are some comparatively small incompatibilities. +\[ruby-core:49119\] + +### Status of Refinements + +We have added a feature called Refinements, which adds a new concept to +Ruby\'s modularity. However, please be aware that Refinements is still +an experimental feature: we may change its specification in the future. +Despite that, we would like you to play with it and give us your +thoughts. Your feedback will help to forge this interesting feature. + +## Acknowledgment + +A great many people contributed to 2.0.0. Even an incomplete +acknowledgment for only a few parts of contributions became too big to +insert here. Sorry but let me just add a link to the special thanks +page. + +* [<URL:https://bugs.ruby-lang.org/projects/ruby/wiki/200SpecialThanks>][13] + +Thank you all! + + + +[1]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.bz2 +[2]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz +[3]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip +[4]: http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example +[5]: https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0 +[6]: http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html +[7]: https://speakerdeck.com/nagachika/rubyist-enumeratorlazy +[8]: http://rubysource.com/a-look-at-ruby-2-0/ +[9]: https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails +[10]: http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/ +[11]: http://www.infoq.com/news/2012/11/ruby-20-preview1 +[12]: http://jp.rubyist.net/magazine/?0041-200Special +[13]: https://bugs.ruby-lang.org/projects/ruby/wiki/200SpecialThanks diff --git a/fa/news/_posts/2013-05-14-ruby-1-9-3-p429-is-released.md b/fa/news/_posts/2013-05-14-ruby-1-9-3-p429-is-released.md new file mode 100644 index 0000000000..3b930b1067 --- /dev/null +++ b/fa/news/_posts/2013-05-14-ruby-1-9-3-p429-is-released.md @@ -0,0 +1,47 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p429 is released" +author: "usa" +translator: +date: 2013-05-14 17:00:00 +0000 +lang: en +--- + +Now Ruby 1.9.3-p429 is released. +We once released p426 some hours before, but it had build problems on some platforms. +Use this p429 instead, please. + +This release includes a security fix about bundled DL / Fiddle. + +* [Object taint bypassing in DL and Fiddle in Ruby (CVE-2013-2065)](/en/news/2013/05/14/taint-bypass-dl-fiddle-cve-2013-2065/) + +And some small bugfixes are also included. + +See [tickets](https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5) and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_429/ChangeLog) for details. + +## Download + +You can download this release from: + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.bz2) + + SIZE: 10042323 bytes + MD5: c2b2de5ef15ea9b1aaa3152f9112af1b + SHA256: 9d8949c24cf6fe810b65fb466076708b842a3b0bac7799f79b7b6a8791dc2a70 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.gz) + + SIZE: 12553234 bytes + MD5: 993c72f7f805a9eb453f90b0b7fe0d2b + SHA256: d192d1afc46a7ef27b9d0a3c7a67b509048984db2c38907aa82641bdf980acf4 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.zip) + + SIZE: 13869978 bytes + MD5: 1986f3934e61b999873d21a79d69d88d + SHA256: 8bd0ecc2dd8eec471aa44f88abdcd82f4b398e9110ca06f76eff066b653b8b90 + +## Release Comment + +Many committers, testers and users who gave bug reports helped me to +make this release. Thanks for their contributions. diff --git a/fa/news/_posts/2013-05-14-ruby-2-0-0-p195-is-released.md b/fa/news/_posts/2013-05-14-ruby-2-0-0-p195-is-released.md new file mode 100644 index 0000000000..35c02cac40 --- /dev/null +++ b/fa/news/_posts/2013-05-14-ruby-2-0-0-p195-is-released.md @@ -0,0 +1,109 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p195 is released" +author: "nagachika" +translator: +date: 2013-05-14 13:00:01 +0000 +lang: en +--- + +Ruby 2.0.0-p195 is released. This is the first patchlevel release of 2.0.0. + +This release includes a security fix of Ruby DL / Fiddle extension. + +* [Object taint bypassing in DL and Fiddle in Ruby + (CVE-2013-2065)](/en/news/2013/05/14/taint-bypass-dl-fiddle-cve-2013-2065/) + +And there are many bug-fixes and some optimization, and documentation fixes. + +## Downloads + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.bz2) + + SIZE: 10807456 bytes + MD5: 2f54faea6ee1ca500632ec3c0cb59cb6 + SHA256: 0be32aef7a7ab6e3708cc1d65cd3e0a99fa801597194bbedd5799c11d652eb5b + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz) + + SIZE: 13641558 bytes + MD5: 0672e5af309ae99d1703d0e96eff8ea5 + SHA256: a2fe8d44eac3c27d191ca2d0ee2d871f9aed873c74491b2a8df229bfdc4e5a93 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.zip) + + SIZE: 15092199 bytes + MD5: 924fe4bea72b1b258655211998631791 + SHA256: 81a4dc6cc09e491d417a51e5983c4584eff849e2a186ec3affdbe5bc15cd7db5 + +## Changes + +Major fixes are below. +See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_195/ChangeLog) +or [Tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) +for details. + +Thank you all committers/contributors. + +### Core - prepend + + #7841 Module#prepend now detect cyclic prepend. + #7843 removing prepended methods causes exceptions. + #8357 Module#prepend breaks Module's comparison operators. + #7983 Module#prepend can't override Fixnum's operator methods. + #8005 methods made private/protected after definition become uncallable on prepended class. + #8025 Module#included_modules include classes when prepended. + +### Core - keyword arguments + + #7922 unnamed keyword rest argument cause SyntaxError. + #7942 support define method only receive keyword arguments without paren. + #8008 fix a bug in super with keyword arguments. + #8236 fix a treatment of rest arguments and keyword arguments through `super'. + #8260 non-symbol key should not treated as keyword arguments. + +### Core - refinements + + #7925 fix a bug of refinements with a method call super in a block. + +### Core - GC + + #8092 improve accuracy of GC.stat[:heap_live_num] + #8146 avoid unnecessary heap growth. + #8145 fix unlimited memory growth with large values of RUBY_FREE_MIN. + +### Core - Regexp + + #7972 Regexp POSIX space class is location sensitive. + #7974 Regexp case-insensitive group doesn't work. + #8023 Regexp lookbehind assertion fails with /m mode enabled + #8001 Regexp \Z matches where it shouldn't + +### Core - other + + #8063 fix a potential memory violation and avoid abort on the environment _FORTIFY_SOURCE=2 (ex. Ubuntu). + #8175 ARGF#skip doesn't work as documented. + #8069 File.expand_path('something', '~') now support home path on Windows. + #8220 fix a Segmentation fault when defined? (). + #8367 fix a regression in defined?(super). + #8283 Dir.glob doesn't recurse hidden directories. + #8165 fix a bug of multiple require with non-ascii file path. + #8290 fix an incompatible String#inspect behavior with NUL character. + #8360 fix a Segmentation fault of Thread#join(Float::INFINITY) on some platforms. + +### RubyGems + + Bundled RubyGems version is updated to 2.0.2+ + #7698 fix an rubygems' incompatibility about installation of extension libraries. + #8019 fix a bug of gem list --remote doesn't work. + +### Libraries + + #7911 File.fnmatch with US-ASCII pattern and UTF-8 path raise an exception. + #8240 fix a bug about OpenSSL::SSL::SSLSocket breaks other connections or files on GC. + #8183 CGI.unescapeHTML can't decode Numeric Character References with uppercase (&#Xnnnn). + +### Build/Platform specific + + #7830 fix build failure with compiler warning. + #7950 fix a build failure on mswin/VC with --with-static-linked-ext. diff --git a/fa/news/_posts/2013-05-14-taint-bypass-dl-fiddle-cve-2013-2065.md b/fa/news/_posts/2013-05-14-taint-bypass-dl-fiddle-cve-2013-2065.md new file mode 100644 index 0000000000..f21eebddc1 --- /dev/null +++ b/fa/news/_posts/2013-05-14-taint-bypass-dl-fiddle-cve-2013-2065.md @@ -0,0 +1,109 @@ +--- +layout: news_post +title: "Object taint bypassing in DL and Fiddle in Ruby (CVE-2013-2065)" +author: "usa" +translator: +date: 2013-05-14 13:00:00 +0000 +tags: security +lang: en +--- + +There is a vulnerability in DL and Fiddle in Ruby where tainted strings can be +used by system calls regardless of the $SAFE level set in Ruby. This +vulnerability has been assigned the CVE identifier CVE-2013-2065. + +## Impact + +Native functions exposed to Ruby with DL or Fiddle do not check the taint +values set on the objects passed in. This can result in tainted objects being +accepted as input when a SecurityError exception should be raised. + +Impacted DL code will look something like this: + +{% highlight ruby %} +def my_function(user_input) + handle = DL.dlopen(nil) + sys_cfunc = DL::CFunc.new(handle['system'], DL::TYPE_INT, 'system') + sys = DL::Function.new(sys_cfunc, [DL::TYPE_VOIDP]) + sys.call user_input +end + +$SAFE = 1 +my_function "uname -rs".taint +{% endhighlight %} + +Impacted Fiddle code will look something like this: + +{% highlight ruby %} +def my_function(user_input) + handle = DL.dlopen(nil) + sys = Fiddle::Function.new(handle['system'], + [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT) + sys.call user_input +end + +$SAFE = 1 +my_function "uname -rs".taint +{% endhighlight %} + +All users running an affected release should either upgrade or use one of the +workarounds immediately. + +Note that this *does not* prevent numeric memory offsets from being used as +pointer values. Numbers cannot be tainted, so code passing a numeric memory +offset cannot be checked. For example: + +{% highlight ruby %} +def my_function(input) + handle = DL.dlopen(nil) + sys = Fiddle::Function.new(handle['system'], + [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT) + sys.call input +end + +$SAFE = 1 +user_input = "uname -rs".taint +my_function DL::CPtr[user_input].to_i +{% endhighlight %} + +In this case, the memory location is passed, and taintedness of the object +cannot be determined by DL / Fiddle. In this case, please check the tainting +of the user input before passing the memory location: + +{% highlight ruby %} +user_input = "uname -rs".taint +raise if $SAFE >= 1 && user_input.tainted? +my_function DL::CPtr[user_input].to_i +{% endhighlight %} + +## Workarounds + +If you cannot upgrade Ruby, this monkey patch can be used as a workaround: + +{% highlight ruby %} +class Fiddle::Function + alias :old_call :call + def call(*args) + if $SAFE >= 1 && args.any? { |x| x.tainted? } + raise SecurityError, "tainted parameter not allowed" + end + old_call(*args) + end +end +{% endhighlight %} + +## Affected versions + +* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 426 +* All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 195 +* prior to trunk revision 40728 + +ruby 1.8 versions are not affected. + +## Credits + +Thanks to Vit Ondruch for reporting this issue. + +## History + +* Originally published at 2013-05-14 13:00:00 (UTC) diff --git a/fa/news/_posts/2013-06-12-new-ruby-lang-org-released.md b/fa/news/_posts/2013-06-12-new-ruby-lang-org-released.md new file mode 100644 index 0000000000..7e1e93f9a2 --- /dev/null +++ b/fa/news/_posts/2013-06-12-new-ruby-lang-org-released.md @@ -0,0 +1,33 @@ +--- +layout: news_post +title: "A brand-new ruby-lang.org has been released" +author: "Jean-Denis Vauguet" +translator: +date: 2013-06-12 12:00:00 +0000 +lang: en +--- + +On behalf of the Ruby community, we are pleased to announce to you that +a brand-new ruby-lang.org is now live! + +Ruby's official website has stalled over the years, leading to a situation +where only a subset of the available languages were actually maintained. +Still, their content may not even be relevant in the current Ruby ecosystem. +Something had to be done! A few rubyists thus gathered to build a whole new +contribution platform, switching from a private CMS to an open process. + +Everyone is now able to edit the content and fix kinks in no time! +We have set up a git-based process and Jekyll now powers the website: +visit [https://github.com/ruby/www.ruby-lang.org/wiki][1] to learn more +about the project and how to contribute. + +We hope to be hearing from you and reviewing your Pull Requests, + +Hal Brodigan (postmodern),<br /> +Jean-Denis Vauguet (chikamichi),<br /> +Marcus Stollsteimer (stomar),<br /> +James Edward Gray II (JEG2),<br /> +Hiroshi Shibata (hsbt). + + +[1]: https://github.com/ruby/www.ruby-lang.org/wiki diff --git a/fa/news/_posts/2013-06-27-hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073.md b/fa/news/_posts/2013-06-27-hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073.md new file mode 100644 index 0000000000..1df6990b6e --- /dev/null +++ b/fa/news/_posts/2013-06-27-hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073.md @@ -0,0 +1,62 @@ +--- +layout: news_post +title: "Hostname check bypassing vulnerability in SSL client (CVE-2013-4073)" +author: "nahi" +translator: +date: 2013-06-27 11:00:00 +0000 +tags: security +lang: en +--- + +A vulnerability in Ruby's SSL client that could allow man-in-the-middle +attackers to spoof SSL servers via valid certificate issued by a trusted +certification authority. + +This vulnerability has been assigned the CVE identifier CVE-2013-4073. + +## Summary + +Ruby's SSL client implements hostname identity check but it does not +properly handle hostnames in the certificate that contain null bytes. + +## Details + +`OpenSSL::SSL.verify_certificate_identity` implements RFC2818 Server +Identity check for Ruby's SSL client but it does not properly handle +hostnames in the subjectAltName X509 extension that contain null bytes. + +Existing code in `lib/openssl/ssl.rb` uses `OpenSSL::X509::Extension#value` +for extracting identity from subjectAltName. `Extension#value` depends on the +OpenSSL function `X509V3_EXT_print()` and for dNSName of subjectAltName it +utilizes `sprintf()` that is known as null byte unsafe. As a result +`Extension#value` returns 'www.ruby-lang.org' if the subjectAltName is +'www.ruby-lang.org\0.example.com' and +`OpenSSL::SSL.verify_certificate_identity` wrongly identifies the +certificate as one for 'www.ruby-lang.org'. + +When a CA that is trusted by an SSL client allows to issue a server certificate +that has a null byte in subjectAltName, remote attackers can obtain the +certificate for 'www.ruby-lang.org\0.example.com' from the CA to spoof +'www.ruby-lang.org' and do a man-in-the-middle attack between Ruby's SSL client +and SSL servers. + +## Affected versions + + * All ruby 1.8 versions prior to ruby 1.8.7 patchlevel 374 + * All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 448 + * All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 247 + * prior to trunk revision 41671 + +## Solution + +All users are recommended to upgrade to Ruby 2.0.0-p247, 1.9.3-p448 or +1.8.7-p374. + +## Credit + +This vulnerability has been found by William (B.J.) Snow Orvis and coordinated +with security@ruby-lang.org by David Thiel from iSEC Partners. + +## History + + * Originally published at 2013-06-27 11:00:00 (UTC) diff --git a/fa/news/_posts/2013-06-27-ruby-1-8-7-p374-is-released.md b/fa/news/_posts/2013-06-27-ruby-1-8-7-p374-is-released.md new file mode 100644 index 0000000000..2594b9c9aa --- /dev/null +++ b/fa/news/_posts/2013-06-27-ruby-1-8-7-p374-is-released.md @@ -0,0 +1,42 @@ +--- +layout: news_post +title: "Ruby 1.8.7-p374 is released" +author: "hsbt" +translator: +date: 2013-06-27 11:00:01 +0000 +lang: en +--- + +Now Ruby 1.8.7-p374 is released. + +This release includes follow security fixes: + + * [Hostname check bypassing vulnerability in SSL client + (CVE-2013-4073)](/en/news/2013/06/27/hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073/) + * [Entity expansion DoS vulnerability in REXML (XML bomb, + CVE-2013-1821)](/en/news/2013/02/22/rexml-dos-2013-02-22/) + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.bz2) + + SIZE: 4250351 bytes + MD5: 83c92e2b57ea08f31187060098b2200b + SHA256: b4e34703137f7bfb8761c4ea474f7438d6ccf440b3d35f39cc5e4d4e239c07e3 + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.gz) + + SIZE: 4903749 bytes + MD5: b72a0bc5b824398537762e5272bbb8dc + SHA256: 876eeeaaeeab10cbf4767833547d66d86d6717ef48fd3d89e27db8926a65276c + +* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.zip](https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.zip) + + SIZE: 6000586 bytes + MD5: 07b1b9032b616faeafb5ac1063494925 + SHA256: ed1fcc402d77814b277e2ef552c5f1e4ce3b6d1affacf5d6ba845ec0d4df67d0 + +## Release Comment + +Many people (committers, contributors and reporters) helped me to make this release. +Thank you! diff --git a/fa/news/_posts/2013-06-27-ruby-1-9-3-p448-is-released.md b/fa/news/_posts/2013-06-27-ruby-1-9-3-p448-is-released.md new file mode 100644 index 0000000000..5dd8073294 --- /dev/null +++ b/fa/news/_posts/2013-06-27-ruby-1-9-3-p448-is-released.md @@ -0,0 +1,44 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p448 is released" +author: "usa" +translator: +date: 2013-06-27 11:00:02 +0000 +lang: en +--- + +Now Ruby 1.9.3-p448 is released. + +This release includes a security fix about bundled OpenSSL: + + * [Hostname check bypassing vulnerability in SSL client + (CVE-2013-4073)](/en/news/2013/06/27/hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073/) + +And some bugfixes are also included. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_448/ChangeLog) for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.bz2) + + SIZE: 10052488 bytes + MD5: aa710d386e5903f78f0231868255e6af + SHA256: a7372230357bfff8e4525fb8019046da521561fe66b02c25d8efc10c9877bc91 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz) + + SIZE: 12559260 bytes + MD5: a893cff26bcf351b8975ebf2a63b1023 + SHA256: 2f35e186543a03bec5e603296d6d8828b94ca58bab049b67b1ceb61d381bc8a7 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.zip) + + SIZE: 13873826 bytes + MD5: bb3b1108847abaab312c024f3c0bc6c3 + SHA256: d9f778d08a4c888d19379b09f0c661b1d2af3c062e25b94f647c29350f064cba + +## Release Comment + +Many people (committers, contributors and reporters) helped me to make this release. +Thank you! diff --git a/fa/news/_posts/2013-06-27-ruby-2-0-0-p247-is-released.md b/fa/news/_posts/2013-06-27-ruby-2-0-0-p247-is-released.md new file mode 100644 index 0000000000..a31c2a43f8 --- /dev/null +++ b/fa/news/_posts/2013-06-27-ruby-2-0-0-p247-is-released.md @@ -0,0 +1,82 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p247 is released" +author: "nagachika" +translator: +date: 2013-06-27 11:00:03 +0000 +lang: en +--- + +Now Ruby 2.0.0-p247 is released. + +This release includes a security fix about bundled OpenSSL. + +* [Hostname check bypassing vulnerability in SSL client + (CVE-2013-4073)](/en/news/2013/06/27/hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073/) + +And some bugfixes are also included. + +## Download + +You can download this release from: + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.bz2) + + SIZE: 10804581 bytes + MD5: 60913f3eec0c4071f44df42600be2604 + SHA256: 08e3d4b85b8a1118a8e81261f59dd8b4ddcfd70b6ae554e0ec5ceb99c3185e8a + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz) + + SIZE: 13652782 bytes + MD5: c351450a0bed670e0f5ca07da3458a5b + SHA256: 3e71042872c77726409460e8647a2f304083a15ae0defe90d8000a69917e20d3 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.zip) + + SIZE: 15100206 bytes + MD5: 7548f781d868456e84afcd0327c7f894 + SHA256: 40c938238075b1e7e8df5d7ebfd069a45b93066318d91da9024d81b20a1c5a8a + +## Changes + +Major fixes are listed below. + +See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_247/ChangeLog) for details. + +### Keyword Arguments + +* [#8040](https://bugs.ruby-lang.org/issues/8040) change priority between keyword arguments and mandatory arguments. +* [#8416](https://bugs.ruby-lang.org/issues/8416) super does not forward either named or anonymous `**` +* [#8463](https://bugs.ruby-lang.org/issues/8463) Proc auto-splat bug with named arguments + +### VM/Language Processing + +* [#8424](https://bugs.ruby-lang.org/issues/8424) fix infinite loop when stack overflow with TH_PUSH_TAG() +* [#8436](https://bugs.ruby-lang.org/issues/8436) \__dir__ not working in eval with binding +* [#8489](https://bugs.ruby-lang.org/issues/8489) Tracepoint API: B_RETURN_EVENT not triggered when "next" used +* [#8341](https://bugs.ruby-lang.org/issues/8341) block_given? (and the actual block) persist between calls to a proc created from a method (using method().to_proc()). +* [#8531](https://bugs.ruby-lang.org/issues/8531) block_given? (and the actual block) persist between calls to a proc created by Symbol#to_proc. + +### RubyGems + +Bundled RubyGems version is updated to 2.0.3 + +### Encoding + +* [#8516](https://bugs.ruby-lang.org/issues/8516) IO#readchar returns wrong codepoints when converting encoding + +### Windows + +* [#8431](https://bugs.ruby-lang.org/issues/8431) File.read() crash on Win32SP3 32bit + +### Libraries + +* [#8467](https://bugs.ruby-lang.org/issues/8467) Rewinding and iterating through gzipped IO leads to segmentation fault +* [#8415](https://bugs.ruby-lang.org/issues/8415) Net::IMAP#capability_response raises "Net::IMAP::ResponseParseError: unexpected token CRLF" for common CAPABILITY + +## Release Comment + +Many committers, testers and users who gave bug reports helped me to +make this release. Thanks for their contributions. diff --git a/fa/news/_posts/2013-06-30-we-retire-1-8-7.md b/fa/news/_posts/2013-06-30-we-retire-1-8-7.md new file mode 100644 index 0000000000..421b0ef5d3 --- /dev/null +++ b/fa/news/_posts/2013-06-30-we-retire-1-8-7.md @@ -0,0 +1,45 @@ +--- +layout: news_post +title: "We retire Ruby 1.8.7" +author: "shyouhei" +translator: +date: 2013-06-30 23:59:59 +0000 +lang: en +--- + +I wish I could say something epic but sadly my English skill is very +limited, so I just say what I say: it's the end, [as planned][1]. + +[1]: {{ site.url }}/en/news/2011/10/06/plans-for-1-8-7/ + +## About Ruby 1.8.7 + +Now, a majority of you are using Ruby 1.9.x or 2.0.0 (**IF NOT PLEASE DO**). +In the past however, there were other versions like 1.4.x, 1.6.x, and 1.8.x. +They were the lineal descendents of original Ruby 1.0, so-called MRI. +When Matz released 1.8.0 it was the state-of-art release. 1.8.7 was +the last scion of that clan. + +Technically speaking, it's been a decade since we released 1.8.0, and 5 years +since we released 1.8.7. Back then, Ruby was used to write CGI scripts. +Then the situation changed dramatically with the raise of Rails. +So many users started using Ruby. And internally, we finally merged +ko1's new engine (called YARV back then). The engine became the +canonical Ruby that you use today. + +So after 10 years, I'm really glad that I can say 1.8.7 became a legacy. +It made history. It changed our lives literally. And to continue the +change, we're moving forward. Ruby 2.0.0 is just great but to make +forthcoming 2.1 even more fascinating, I'm going to sunset 1.8.7 and +focus on our bleeding-edge Ruby trunk. + +Thank you 1.8.7, it was a good life for a program. + +## About YOUR Ruby 1.8.7 + +You might still have an executable of Ruby 1.8.7 somewhere in your system. +Depending on how you installed it, your Ruby 1.8.7 might or might not be +supported by someone else, because there are some 3rd-parties that do +continue supporting 1.8.7. The only thing I can say is _I_ won't support it +any longer. So if you're using what I've released, watch out and find +a solution that suits your situation. diff --git a/fa/news/_posts/2013-08-06-status-issue.md b/fa/news/_posts/2013-08-06-status-issue.md new file mode 100644 index 0000000000..8428e252b8 --- /dev/null +++ b/fa/news/_posts/2013-08-06-status-issue.md @@ -0,0 +1,69 @@ +--- +layout: news_post +title: "Service issue of ruby-lang.org" +author: "hsbt" +translator: "antipop" +date: 2013-08-06 04:00:00 +0000 +lang: en +--- + +Some services provided by ruby-lang.org are stopped, +because the servers of ruby-lang.org are currently down. + +Impact is as follows: + + * All mailing lists provided by ruby-lang.org are down. + * Ruby's tar packages distributed by ftp.ruby-lang.org are unreachable. + * If you lookup old DNS cache, you cannot reach www.ruby-lang.org. + +We are repairing these services now. + +## Update (2013-08-06 9:33 UTC) + +The reason of today's problems is a hardware failure. +We repaired the following issues: + + * All mailing lists are back, but we still have some problem. We are repairing it. + * ftp.ruby-lang.org is available again via http and ftp. + +If you discover other problems, please report them to +https://github.com/ruby/www.ruby-lang.org/issues. + +## Update (2013-08-06 13:18 UTC) + +We stopped ftp.ruby-lang.org via http and ftp, because some old packages of Ruby are broken. MD5 doesn't match as expected. + +We are investigating now. Detail information can be found in the following issue. +https://github.com/ruby/www.ruby-lang.org/issues/259 + +## Update (2013-08-07 05:08 UTC) + +We confirmed that the following packages were broken. We restored these packages via http://mirrorservice.org/sites/ftp.ruby-lang.org/pub/ruby/. + +<pre> +ruby-1.9.3-p426.tar.bz2 +ruby-1.9.3-p426.tar.gz +ruby-1.9.3-p426.zip +ruby-1.9.3-p429.tar.bz2 +ruby-1.9.3-p429.tar.gz +ruby-1.9.3-p429.zip +ruby-2.0.0-p0.tar.bz2 +ruby-2.0.0-p0.tar.gz +ruby-2.0.0-p0.zip +ruby-2.0.0-p195.tar.bz2 +ruby-2.0.0-p195.tar.gz +ruby-2.0.0-p195.zip +</pre> + +We checked that the MD5 checksums of these files are the same as in our release announcements. ftp.ruby-lang.org via http and ftp is available now. + +## Update (2013-08-09 10:30 UTC) + +Some of our services have been backed now, which had been suspended since Aug. 6 2013 by the server accident we reported before: + + * Mailing lists: We changed the software that provides the service from FML to Mailman. + * For details, please check out http://lists.ruby-lang.org. + * Package distribution: You can now download the packages we're providing from ftp.ruby-lang.org via both http and ftp. + * Snapshot packages: We restarted daily snapshot building and packaging. + +If you find any problems on our services, please notify us at https://github.com/ruby/www.ruby-lang.org/issues. diff --git a/fa/news/_posts/2013-08-08-rip-raa.md b/fa/news/_posts/2013-08-08-rip-raa.md new file mode 100644 index 0000000000..123cca94d9 --- /dev/null +++ b/fa/news/_posts/2013-08-08-rip-raa.md @@ -0,0 +1,26 @@ +--- +layout: news_post +title: "We retire raa.ruby-lang.org" +author: "hsbt" +translator: +date: 2013-08-08 12:30:00 +0000 +lang: en +--- + +We decided to suspend raa.ruby-lang.org, also known as +"Ruby Application Archive (RAA)". +We have no server or human resources to continue hosting raa.ruby-lang.org. +If you still need to browse raa.ruby-lang.org, please visit +[RAA in the Internet Archive][1]. + +The "Ruby Application Archive" was first started in 1997. +It moved to raa.ruby-lang.org in 2003 and introduced a lot of +useful libraries to Rubyists. +Please use [RubyGems.org][2] and [The Ruby Toolbox][3] instead. +Thanks. + + + +[1]: http://web.archive.org/web/*/http://raa.ruby-lang.org/ +[2]: https://rubygems.org/ +[3]: https://www.ruby-toolbox.com/ diff --git a/fa/news/_posts/2013-08-29-confoo-cfp.md b/fa/news/_posts/2013-08-29-confoo-cfp.md new file mode 100644 index 0000000000..aa726031c4 --- /dev/null +++ b/fa/news/_posts/2013-08-29-confoo-cfp.md @@ -0,0 +1,35 @@ +--- +layout: news_post +title: "ConFoo 2014 is looking for Ruby speakers" +author: "afilina" +translator: +date: 2013-08-29 16:00:00 +0000 +lang: en +--- + +We are looking for Ruby professionals to share their skills and experience at +the next ConFoo. [Submit your proposals][1] until **September 22nd**. + +![ConFoo web dev conference. Feb 26 - 28, 2014 | Montreal, Canada][logo]{: style="border:0; float:right; margin-left:20px;" width="180" height="250"} + +ConFoo is a conference for developers that has built a reputation as a prime +destination for exploring new technologies, diving deeper into familiar +topics, and experiencing the best of community and culture. + + * ConFoo 2014 will be hosted on February 26-28 in Montreal, at the Hilton + Bonaventure Hotel. + * We take good care of our speakers by covering most expenses including + travel, accommodation, lunch, full conference ticket, etc. + * Presentations are 45 minutes including questions, and may be delivered in + English or French. + * ConFoo is an open environment where everyone is welcome to submit. We are + simply looking for quality proposals by skilled and friendly people. + +If you would simply prefer to attend the conference, we have a +[$230 discount][2] until October 16th. + + + +[logo]: http://confoo.ca/images/propaganda/2014/en/t-ruby.gif +[1]: http://confoo.ca/en/call-for-papers +[2]: http://confoo.ca/en/register diff --git a/fa/news/_posts/2013-09-03-vietnamese-translation.md b/fa/news/_posts/2013-09-03-vietnamese-translation.md new file mode 100644 index 0000000000..7b7967fa13 --- /dev/null +++ b/fa/news/_posts/2013-09-03-vietnamese-translation.md @@ -0,0 +1,27 @@ +--- +layout: news_post +title: "Vietnamese translation of ruby-lang.org" +author: "Marcus Stollsteimer" +translator: +date: 2013-09-03 12:00:00 +0000 +lang: en +--- + +We just released the [Vietnamese translation of ruby-lang.org][1]. + +Many thanks to the team of translators: + + * Trung Lê (joneslee85) + * Hiếu Lê (modology) + * Thanh Chinh Ban (thanhbc) + * Phạm Tiến Đạt (tiendat0510) + +If you want to contribute to the Ruby community, too, +you can do so by helping to keep this site up-to-date. +Simply visit [ruby-lang.org on GitHub][2] and start +submitting issues or pull requests today! + + + +[1]: {{ site.url }}/vi/ +[2]: https://github.com/ruby/www.ruby-lang.org/ diff --git a/fa/news/_posts/2013-09-07-we-use-fastly-cdn.md b/fa/news/_posts/2013-09-07-we-use-fastly-cdn.md new file mode 100644 index 0000000000..e1d8e55922 --- /dev/null +++ b/fa/news/_posts/2013-09-07-we-use-fastly-cdn.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "We started distributing source packages via Fastly" +author: "hsbt" +translator: "Marcus Stollsteimer" +date: 2013-09-07 11:30:00 +0000 +lang: en +--- + +ruby-lang.org started to provide https://cache.ruby-lang.org for +distributing official Ruby source packages. +We can now fastly distribute packages all over the world +using a content delivery network (CDN). + +This CDN is provided by the open source plan of [Fastly][1]. +Many thanks to Fastly for their support. + +[1]: http://www.fastly.com diff --git a/fa/news/_posts/2013-09-23-ruby-2-1-0-preview1-is-released.md b/fa/news/_posts/2013-09-23-ruby-2-1-0-preview1-is-released.md new file mode 100644 index 0000000000..5d8c4f6159 --- /dev/null +++ b/fa/news/_posts/2013-09-23-ruby-2-1-0-preview1-is-released.md @@ -0,0 +1,69 @@ +--- +layout: news_post +title: "Ruby 2.1.0-preview1 is released" +author: "nurse" +translator: +date: 2013-09-23 07:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.1.0-preview1. +Please check out the new features in Ruby 2.1 before the final release! + +## Download + +We recommend to use +[https://cache.ruby-lang.org/pub/ruby/2.1/](https://cache.ruby-lang.org/pub/ruby/2.1/) +via Fastly. + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.tar.bz2) + + SIZE: 11475553 bytes + MD5: d32d1ea23988399afadbd21c5a7a37fc + SHA256: 860b90d28b214393fd9d77ac2ad65b384d8249cd59b658c668cf0c7bad1db341 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.tar.gz) + + SIZE: 14449544 bytes + MD5: 9df4f546f6b961895ba58a8afdf857da + SHA256: 747472fb33bcc529f1000e5320605a7e166a095d3805520b989e73b33c05b046 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.zip) + + SIZE: 16124069 bytes + MD5: f9bc3f9a10174a022381ce2c60a59e64 + SHA256: 28855621f7d364277e7f258d5cc380e005896ef8ebc36e5cbf78d2bf763c291b + +## Changes + +The notable changes are: + +* VM (method cache) +* RGenGC (See ko1's [RubyKaigi presentation](http://rubykaigi.org/2013/talk/S73) and [EuRuKo presentation](http://www.atdot.net/~ko1/activities/Euruko2013-ko1.pdf)) +* refinements +* syntax + * Decimal Literal + * Frozen String Literal +* def's return value +* Bignum + * 128bit + * GMP +* String#scrub +* Socket.getifaddrs +* new RubyGems + +See more details of changes: [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/trunk/NEWS). + +ko1 exhibited toruby presentation: [Summary of Ruby 2.1](http://www.atdot.net/~ko1/activities/toruby05-ko1.pdf) + +Konstantin Haase (@konstantinhaase) wrote a good summary in his blog post: [What's new in Ruby 2.1?](http://rkh.im/ruby-2.1). + +## Release Comment + +Known issues are: + +[https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102) + +See also the release schedule and other information: + +[https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210) diff --git a/fa/news/_posts/2013-09-28-design-contest.md b/fa/news/_posts/2013-09-28-design-contest.md new file mode 100644 index 0000000000..61fea169df --- /dev/null +++ b/fa/news/_posts/2013-09-28-design-contest.md @@ -0,0 +1,23 @@ +--- +layout: news_post +title: "Design Contest for www.ruby-lang.org" +author: "hsbt" +translator: +date: 2013-09-28 23:30:00 +0000 +lang: en +--- + +The Ruby Association will be hosting a design contest for the new design of +ruby-lang.org. + +ruby-lang.org has switched its platform from Radiant CMS to Jekyll in +spring 2013. Everyone can now edit the content through GitHub. How about that? +However, the current design is built for the typical size of a desktop or +laptop but not for smartphones and tablets. We still need more work for the +design! + +Ruby's 20th anniversary this year seems like an appropriate occasion for +a call to submit design ideas for ruby-lang.org. +Please read the [instructions][1] and send your design entry. + +[1]: http://www.ruby.or.jp/en/news/20130924.html diff --git a/fa/news/_posts/2013-10-04-rubyconf-au-2014.md b/fa/news/_posts/2013-10-04-rubyconf-au-2014.md new file mode 100644 index 0000000000..1deb4e9dfe --- /dev/null +++ b/fa/news/_posts/2013-10-04-rubyconf-au-2014.md @@ -0,0 +1,31 @@ +--- +layout: news_post +title: "RubyConf Australia 2014 Call For Proposals and Tickets Now Open!" +author: "Andrew Grimm" +translator: +date: 2013-10-04 11:11:43 +0000 +lang: en +--- + +[RubyConf Australia 2014][1] will be held in Sydney on February 19 to 21. +It will be the second Ruby conference held in Australia. + +The Call For Proposals is open until October 31. Proposals will be +by GitHub pull request, like EuRuKo and Sapporo RubyKaigi. + +"Egg" (pre early-bird) tickets are available until October 28. +Scholarships to attend the event are also available. + +Our first conference had many speakers from overseas, but also local speakers +you may not have seen before. The topics were very diverse and the talks were +enlightening. We also had a variety of workshops, and afterwards people +socialized and explored the city it was hosted in. + +You can get additional information by following us on twitter at +[@rubyconf_au][2], subscribing to our mailing list, or viewing 2013's talks +on Vimeo. + +We hope to see you there! + +[1]: http://www.rubyconf.org.au/ +[2]: http://twitter.com/rubyconf_au diff --git a/fa/news/_posts/2013-11-21-fukuoka-ruby-award-2014.md b/fa/news/_posts/2013-11-21-fukuoka-ruby-award-2014.md new file mode 100644 index 0000000000..4db2feaff1 --- /dev/null +++ b/fa/news/_posts/2013-11-21-fukuoka-ruby-award-2014.md @@ -0,0 +1,71 @@ +--- +layout: news_post +title: "2014 Fukuoka Ruby Award Competition - Entries to be judged by Matz" +author: "Fukuoka Ruby" +translator: +date: 2013-11-21 08:17:06 +0000 +lang: en +--- + +Dear Ruby Enthusiasts, + +The Government of Fukuoka, Japan together with "Matz" Matsumoto would +like to invite you to enter the following Ruby competition. If you have +developed an interesting Ruby program, please be encouraged to apply. + +2014 Fukuoka Ruby Award Competition - Grand Prize - 1 Million Yen! + +Entry Deadline: November 29, 2013 + +Matz and a group of panelists will select the winners of the Fukuoka Competition. +The grand prize for the Fukuoka Competition is 1 million yen. Past grand +prize winners include Rhomobile (USA) and APEC Climate Center (Korea). + +See the winners from last year: + +[http://www.myfukuoka.com/category/ruby-award-winners][1] + +Programs entered in the competition do not have to be written entirely in Ruby +but should take advantage of the unique characteristics of Ruby. + +Projects must have been developed or completed within the past 12 months to be +eligible. Please visit the following Fukuoka website for additional details or +to enter: + +[http://www.digitalfukuoka.jp/events/22?locale=ja][2] +or +[http://www.myfukuoka.com/news/technology-news/2014-fukuoka-ruby-award-guidelines-for-applicants.html][3] + +[http://www.digitalfukuoka.jp/uploaded/26/RubyAward_ApplicationForm_2014.doc][4] + +Please email the application form to [award@f-ruby.com][5]. + +This year, we have the following special prizes: +The winner of the Engine Yard Prize will receive: + +* Credit for 5,000 hours of Engine Yard Cloud +* A pair of tickets to RubyKaigi (incl. 50,000 yen per person for transport expenses) +* Engine Yard novelty goods set + +The winner of Heroku Prize will receive: + +* 100,000 yen +* A pair of tickets to RubyKaigi (incl. 50,000 yen per person for transport expenses) +* Heroku novelty goods set + +The winner of the paperboy&co. Prize will receive: + +* Free pair tickets to Shimane (Ruby City Matsue) for 3 days + (transportation expenses up to 50,000 yen per person) +* Free gTLD (com, net, org, info, biz) for 10 years + +"Matz will be testing and reviewing your source code thoroughly, so it's very +meaningful to apply! The competition is free to enter." + +Cheers! + +[1]: http://www.myfukuoka.com/category/ruby-award-winners +[2]: http://www.digitalfukuoka.jp/events/22?locale=ja +[3]: http://www.myfukuoka.com/news/technology-news/2014-fukuoka-ruby-award-guidelines-for-applicants.html +[4]: http://www.digitalfukuoka.jp/uploaded/26/RubyAward_ApplicationForm_2014.doc +[5]: mailto:award@f-ruby.com diff --git a/fa/news/_posts/2013-11-22-heap-overflow-in-floating-point-parsing-cve-2013-4164.md b/fa/news/_posts/2013-11-22-heap-overflow-in-floating-point-parsing-cve-2013-4164.md new file mode 100644 index 0000000000..391147fc1f --- /dev/null +++ b/fa/news/_posts/2013-11-22-heap-overflow-in-floating-point-parsing-cve-2013-4164.md @@ -0,0 +1,64 @@ +--- +layout: news_post +title: "Heap Overflow in Floating Point Parsing (CVE-2013-4164)" +author: "tenderlove" +translator: +date: 2013-11-22 5:00:00 +0000 +tags: security +lang: en +--- + +There is an overflow in floating point number parsing in Ruby. This +vulnerability has been assigned the CVE identifier CVE-2013-4164. + +## Details + +Any time a string is converted to a floating point value, a specially crafted +string can cause a heap overflow. This can lead to a denial of service attack +via segmentation faults and possibly arbitrary code execution. Any program +that converts input of unknown origin to floating point values (especially +common when accepting JSON) are vulnerable. + +Vulnerable code looks something like this: + + untrusted_data.to_f + +But any code that produces floating point values from external data is +vulnerable, such as this: + + JSON.parse untrusted_data + +Note that this bug is similar to CVE-2009-0689. + +All users running an affected release should upgrade to the FIXED versions +of Ruby. + +## Affected versions + +* All Ruby 1.8 versions after Ruby 1.8.6 patchlevel 230 +* All Ruby 1.9 versions prior to Ruby 1.9.3 patchlevel 484 +* All Ruby 2.0 versions prior to Ruby 2.0.0 patchlevel 353 +* All Ruby 2.1 versions prior to Ruby 2.1.0 preview2 +* prior to trunk revision 43780 + +## Solutions + +All users are recommended to upgrade to Ruby 1.9.3 patchlevel 484, +Ruby 2.0.0 patchlevel 353 or Ruby 2.1.0 preview2. + +Please note that Ruby 1.8 series or any earlier releases are already +obsoleted. There is no plan to release new FIXED versions for them. +Users of such versions are advised to upgrade as soon as possible as +we cannot guarantee the continued availability of security fixes for +unsupported releases. + +## Credits + +Thanks to Charlie Somerville for reporting this issue! + +## History + +* Originally published at 2013-11-22 04:00:00 UTC +* Secondary published at 2013-11-22 06:46:00 UTC +* Thirdly published at 2013-11-22 22:46:00 UTC +* Fourthly published at 2013-12-10 12:09:38 UTC diff --git a/fa/news/_posts/2013-11-22-ruby-1-9-3-p484-is-released.md b/fa/news/_posts/2013-11-22-ruby-1-9-3-p484-is-released.md new file mode 100644 index 0000000000..5debf35515 --- /dev/null +++ b/fa/news/_posts/2013-11-22-ruby-1-9-3-p484-is-released.md @@ -0,0 +1,43 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p484 is released" +author: "usa" +translator: +date: 2013-11-22 04:00:00 +0000 +lang: en +--- + +Now Ruby 1.9.3-p484 is released. + +This release includes a security fix about Ruby interpreter core: + + * [Heap Overflow in Floating Point Parsing (CVE-2013-4164)](/en/news/2013/11/22/heap-overflow-in-floating-point-parsing-cve-2013-4164/) + +And some bugfixes are also included. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_484/ChangeLog) for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.bz2) + + SIZE: 10041514 bytes + MD5: 03f5b08804927ceabe5122cb90f5d0a9 + SHA256: 0fdc6e860d0023ba7b94c7a0cf1f7d32908b65b526246de9dfd5bb39d0d7922b + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.gz) + + SIZE: 12576996 bytes + MD5: 8ac0dee72fe12d75c8b2d0ef5d0c2968 + SHA256: d684bc3a5ba72cda9ef30039f783c0f8cdc325bae5c8738c7bf05577cbe8f31d + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.zip) + + SIZE: 13958042 bytes + MD5: 1b74a8a3b1e8f13bb306dd59cc1e12d1 + SHA256: 7496c972c716f0bc9f9c718155ef36281e9f22375867e95abc2ba64c1fb09d2e + +## Release Comment + +Many people (committers, contributors and reporters) helped me to make this release. +Thank you! diff --git a/fa/news/_posts/2013-11-22-ruby-2-0-0-p353-is-released.md b/fa/news/_posts/2013-11-22-ruby-2-0-0-p353-is-released.md new file mode 100644 index 0000000000..72ab39b7ea --- /dev/null +++ b/fa/news/_posts/2013-11-22-ruby-2-0-0-p353-is-released.md @@ -0,0 +1,46 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p353 is released" +author: "nagachika" +translator: +date: 2013-11-22 03:00:00 +0000 +lang: en +--- + +Now Ruby 2.0.0-p353 is released. + +This release includes a security fix about floating point parsing. + +* [Heap Overflow in Floating Point Parsing + (CVE-2013-4164)](/en/news/2013/11/22/heap-overflow-in-floating-point-parsing-cve-2013-4164/) + +And some bugfixes are also included. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_353/ChangeLog) for details. + +## Download + +You can download this release from: + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.bz2) + + SIZE: 10730412 bytes + MD5: 20eb8f067d20f6b76b7e16cce2a85a55 + SHA256: 3de4e4d9aff4682fa4f8ed2b70bd0d746fae17452fc3d3a8e8f505ead9105ad9 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz) + + SIZE: 13572794 bytes + MD5: 78282433fb697dd3613613ff55d734c1 + SHA256: 465afc77d201b5815bb7ce3660a1f5a131f4429a3fa483c126ce66923e4726cc + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.zip) + + SIZE: 15083211 bytes + MD5: 0f8aeb1f1b1cd606ab9790badabd0fb4 + SHA256: 878c9cec05751a4c7019ad255a9e737d0f47ec7188cee1c522545ac7e3bc73a3 + +## Release Comment + +Many committers, testers and users who gave bug reports helped me to +make this release. Thanks for their contributions. diff --git a/fa/news/_posts/2013-11-22-ruby-2-1-0-preview2-is-released.md b/fa/news/_posts/2013-11-22-ruby-2-1-0-preview2-is-released.md new file mode 100644 index 0000000000..08ea3b31b6 --- /dev/null +++ b/fa/news/_posts/2013-11-22-ruby-2-1-0-preview2-is-released.md @@ -0,0 +1,73 @@ +--- +layout: news_post +title: "Ruby 2.1.0-preview2 is released" +author: "nurse" +translator: +date: 2013-11-22 22:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.1.0-preview2. +Please test the new features in Ruby 2.1 before the final release! + +## Notable changes from preview 1 + +* fix [Heap Overflow in Floating Point Parsing (CVE-2013-4164)](https://www.ruby-lang.org/en/news/2013/11/22/heap-overflow-in-floating-point-parsing-cve-2013-4164/) +* "literal".freeze is now optimized [#9042](https://bugs.ruby-lang.org/issues/9042) +* f suffix of String Literal is removed [#9042](https://bugs.ruby-lang.org/issues/9042) +* fix memory consuming issue on RGenGC ([r43532](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=43532) and [r43755](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=43755)) +* add Exception#cause [#8257](https://bugs.ruby-lang.org/issues/8257) +* update libraries like json, nkf, rake, RubyGems, and RDoc. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.tar.bz2) + + SIZE: 11432454 bytes + MD5: 9d566a9b2d2e7e35ad6125e2a14ce672 + SHA256: 780fddf0e3c8a219057d578e83367ecfac5e945054b9f132b3b93ded4802d1ce + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.tar.gz) + + SIZE: 14416029 bytes + MD5: ba2b95d174e156b417a4d580a452eaf5 + SHA256: a9b1dbc16090ddff8f6c6adbc1fd0473bcae8c69143cecabe65d55f95f6dbbfb + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.zip) + + SIZE: 16110720 bytes + MD5: 2ad1aa3d89ae32607cf14fc73b192de1 + SHA256: cc2f7f8e05daed716489e5480e6365a711a13ed7747dbc59e989a41fe2805076 + +## Changes from 2.0 + +The notable changes are: + +* VM (method cache) +* RGenGC (See ko1's [RubyKaigi presentation](http://rubykaigi.org/2013/talk/S73) and [RubyConf 2013 presentation](http://www.atdot.net/~ko1/activities/rubyconf2013-ko1_pub.pdf)) +* refinements [#8481](https://bugs.ruby-lang.org/issues/8481) [#8571](https://bugs.ruby-lang.org/issues/8571) +* syntax changes + * Rational/Complex Literal [#8430](https://bugs.ruby-lang.org/issues/8430) + * def's return value [#3753](https://bugs.ruby-lang.org/issues/3753) +* Bignum + * use 128bit integers [#8509](https://bugs.ruby-lang.org/issues/8509) + * use GMP [#8796](https://bugs.ruby-lang.org/issues/8796) +* String#scrub [#8414](https://bugs.ruby-lang.org/issues/8414) +* Socket.getifaddrs [#8368](https://bugs.ruby-lang.org/issues/8368) +* RDoc 4.1.0.preview.2 and RubyGems 2.2.0.preview.2 + +See more details of changes: [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_1_0_preview2/NEWS). + +ko1 talked about the new features of Ruby 2.1 at toruby: [All about Ruby 2.1](http://www.atdot.net/~ko1/activities/toruby05-ko1.pdf) + +Konstantin Haase (@konstantinhaase) wrote a good summary in his blog post: [What's new in Ruby 2.1?](http://rkh.im/ruby-2.1). + +## Release Comment + +Known issues are: + +[https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102) + +See also the release schedule and other information: + +[https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210) diff --git a/fa/news/_posts/2013-11-30-russian-translation.md b/fa/news/_posts/2013-11-30-russian-translation.md new file mode 100644 index 0000000000..ae2dc55875 --- /dev/null +++ b/fa/news/_posts/2013-11-30-russian-translation.md @@ -0,0 +1,28 @@ +--- +layout: news_post +title: "Russian translation of ruby-lang.org" +author: "Marcus Stollsteimer" +translator: +date: 2013-11-30 12:00:00 +0000 +lang: en +--- + +We just released the [Russian translation of ruby-lang.org][1]. + +Many thanks to the team of translators: + + * Alexey Gaziev (gazay) + * Vlad Bokov (razum2um) + +We are very happy that we can already announce the second new translation +since our switch to a GitHub based workflow earlier this year. + +If you want to contribute to the Ruby community, too, +you can do so by helping to keep this site up-to-date. +Simply visit [ruby-lang.org on GitHub][2] and start +submitting issues or pull requests today! + + + +[1]: {{ site.url }}/ru/ +[2]: https://github.com/ruby/www.ruby-lang.org/ diff --git a/fa/news/_posts/2013-12-09-rubyconf-tw-2014-cfp.md b/fa/news/_posts/2013-12-09-rubyconf-tw-2014-cfp.md new file mode 100644 index 0000000000..8daab25d69 --- /dev/null +++ b/fa/news/_posts/2013-12-09-rubyconf-tw-2014-cfp.md @@ -0,0 +1,31 @@ +--- +layout: news_post +title: "The RubyConf Taiwan 2014 Call For Proposals is Now Open" +author: "Juanito Fatas" +translator: +date: 2013-12-09 13:40:00 +0000 +lang: en +--- + +The RubyConf Taiwan 2014 will take place on April 25-26, 2014 in Taipei, Taiwan. + +If you want to give a presentation at RubyConf Taiwan 2014, please submit your +proposal. Any topics related to Ruby are welcomed. + +There are two kinds of presentations: + +* Talk (25 minutes), +* Session (50 minutes). + +**Proposals will be accepted until January 28, 2014.** + +[Please submit your proposal here.][submit-proposal] + +If you have any questions, feel free to email: + +contact@rubyconf.tw + +[See RubyConf Taiwan 2014 on Lanyrd.][rubyconf-tw-2014-lanyrd] + +[rubyconf-tw-2014-lanyrd]: http://lanyrd.com/2014/rubyconftw/ +[submit-proposal]: https://kktix.com/events/rubyconftw2014-cfp?locale=en diff --git a/fa/news/_posts/2013-12-14-rubyconf-india-2014.md b/fa/news/_posts/2013-12-14-rubyconf-india-2014.md new file mode 100644 index 0000000000..14000b97db --- /dev/null +++ b/fa/news/_posts/2013-12-14-rubyconf-india-2014.md @@ -0,0 +1,26 @@ +--- +layout: news_post +title: "RubyConf India 2014 Call For Proposals and Tickets Now Open!" +author: "Manu S Ajith" +translator: +date: 2013-12-14 18:53:33 +0000 +lang: en +--- + +RubyConf India 2014 will be held in Goa, India on 22-23 March, 2014. + +If you want to give a presentation at RubyConf India 2014, please submit +your proposal. The Call For Proposals is open till Dec 31st, 2013. + +[Please submit your proposal here][proposals]. + +To book your tickets, visit [here][tickets]. + +You can get additional information by following us +on twitter at @rubyconfindia. + +We hope to see you there! + + +[proposals]: https://rubyconfindia2014.busyconf.com/proposals/new +[tickets]: http://rubyconfindia.org/2014/tickets.html diff --git a/fa/news/_posts/2013-12-17-maintenance-of-1-8-7-and-1-9-2.md b/fa/news/_posts/2013-12-17-maintenance-of-1-8-7-and-1-9-2.md new file mode 100644 index 0000000000..3d22ba47ac --- /dev/null +++ b/fa/news/_posts/2013-12-17-maintenance-of-1-8-7-and-1-9-2.md @@ -0,0 +1,75 @@ +--- +layout: news_post +title: "Security Maintenance Extension of Ruby 1.8.7 and 1.9.2" +author: "zzak" +translator: +date: 2013-12-17 20:49:03 +0000 +lang: en +--- + +Effective immediately, 1.8.7 and 1.9.2 will be supported for security patches +until June 2014. + +* Terence Lee ([@hone02](https://twitter.com/hone02)) + and Zachary Scott ([@_zzak](https://twitter.com/_zzak)) + will assume maintainership. +* After the 6 month maintenance period, we can add more committers to extend + another 6 months. + +This maintenance extension is made possible by [Heroku][heroku], +see their blog post [A Patch in Time: Securing Ruby][securing-ruby] +for more information. + +### Reporting issues + +During this extended maintenance period we will _only_ apply security patches +to the source code repository for [1.8.7][source-187] and [1.9.2][source-192]. + +We take security very seriously, if you find a vulnerability please report it +to security@ruby-lang.org immediately. This mailing list is private and +reported problems will be published after a fix is released. + +Please see [ruby-lang.org/en/security][security-en] for more information. + +### On Release Management + +As I mentioned above, we will only be applying security patches and +incrementing the patch level. + +We will not be releasing a patched version of 1.8.7 or 1.9.2 to ruby-lang.org. +However, you are free to repackage binaries from source. + +Reason being, we don't want any new tickets, as an official release will result +in continued responsibility of ruby-core to follow up on maintenance. Our team +resources are already low, and we want to encourage upgrades, not support +outdated versions. + +### Why resurrect 1.8.7? + +You may remember an announcement approximately 6 months ago that +[sunset 1.8.7][sunset-187-en]. + +While ruby-core will no longer resume maintenance of 1.8.7 or 1.9.2, Terence +and Zachary will support these versions for security maintenance as part of a +corporate sponsorship. + +In the past we have supported vendors who wish to maintain legacy versions. In +2009 the maintenance of Ruby 1.8.6 was transferred to Engine Yard when they +released 1.8.6-p369. + +### Words of encouragement + +We would like to take this chance to strongly encourage you to upgrade to a +supported version of Ruby as soon as possible. Many ruby-core members have put +countless hours into improving the performance and features of Ruby in 2.0+ and +we wish you would take advantage of it. + +Thank you for your continued support and lets keep making Ruby better! + + +[heroku]: http://heroku.com/ +[securing-ruby]: https://blog.heroku.com/archives/2013/12/5/a_patch_in_time_securing_ruby/ +[source-187]: https://bugs.ruby-lang.org/projects/ruby-187/repository +[source-192]: https://bugs.ruby-lang.org/projects/ruby-192/repository +[security-en]: https://www.ruby-lang.org/en/security/ +[sunset-187-en]: https://www.ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7/ diff --git a/fa/news/_posts/2013-12-20-ruby-2-1-0-rc1-is-released.md b/fa/news/_posts/2013-12-20-ruby-2-1-0-rc1-is-released.md new file mode 100644 index 0000000000..2acc6f2116 --- /dev/null +++ b/fa/news/_posts/2013-12-20-ruby-2-1-0-rc1-is-released.md @@ -0,0 +1,68 @@ +--- +layout: news_post +title: "Ruby 2.1.0-rc1 is released" +author: "nurse" +translator: +date: 2013-12-20 16:53:05 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.1.0-rc1. +Please test the new features in Ruby 2.1 before the final release scheduled on 2013-12-25! + +## Notable changes since preview 2 + +* remove curses [#8584](https://bugs.ruby-lang.org/issues/8584) + +for other changes, see [NEWS](https://github.com/ruby/ruby/blob/v2_1_0_rc1/NEWS). + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.tar.bz2) + * SIZE: 11394226 bytes + * MD5: cae095b90349b5b0f7026060cc3dd2c5 + * SHA256: af828bc0fe6aee5ffad0f8f10b48ee25964f54d5118570937ac7cf1c1df0edd3 +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.tar.gz) + * SIZE: 14450990 bytes + * MD5: a16561f64d78a902fab08693a300df98 + * SHA256: 1b467f13be6d3b3648a4de76b34b748781fe4f504a19c08ffa348c75dd62635e +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.zip) + * SIZE: 16107702 bytes + * MD5: b6cdc0e63185b4aeb268bdf6ebd4de9f + * SHA256: 4d6a256b73b79f5b64182e1f55db3e61042bbe0166a45917e69c1b4e47247276 + +## Changes since 2.0 + +The notable changes are: + +* VM (method cache) +* RGenGC (See ko1's [RubyKaigi presentation](http://rubykaigi.org/2013/talk/S73) and [RubyConf 2013 presentation](http://www.atdot.net/~ko1/activities/rubyconf2013-ko1_pub.pdf)) +* refinements [#8481](https://bugs.ruby-lang.org/issues/8481) [#8571](https://bugs.ruby-lang.org/issues/8571) +* syntax changes + * Rational/Complex Literal [#8430](https://bugs.ruby-lang.org/issues/8430) + * def's return value [#3753](https://bugs.ruby-lang.org/issues/3753) +* Bignum + * use GMP [#8796](https://bugs.ruby-lang.org/issues/8796) +* String#scrub [#8414](https://bugs.ruby-lang.org/issues/8414) +* Socket.getifaddrs [#8368](https://bugs.ruby-lang.org/issues/8368) +* RDoc 4.1.0 and RubyGems 2.2.0 +* "literal".freeze is now optimized [#9042](https://bugs.ruby-lang.org/issues/9042) +* add Exception#cause [#8257](https://bugs.ruby-lang.org/issues/8257) +* update libraries like BigDecimal, JSON, NKF, Rake, RubyGems, and RDoc +* remove curses [#8584](https://bugs.ruby-lang.org/issues/8584) + +See more details of changes: [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_1_0_rc1/NEWS). + +ko1 talked about the new features of Ruby 2.1 at toruby: [All about Ruby 2.1](http://www.atdot.net/~ko1/activities/toruby05-ko1.pdf) + +Konstantin Haase (@konstantinhaase) wrote a good summary in his blog post: [What's new in Ruby 2.1?](http://rkh.im/ruby-2.1). + +## Release Comment + +Known issues are: + +<https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102> + +See also the release schedule and other information: + +<https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210> diff --git a/fa/news/_posts/2013-12-21-ruby-version-policy-changes-with-2-1-0.md b/fa/news/_posts/2013-12-21-ruby-version-policy-changes-with-2-1-0.md new file mode 100644 index 0000000000..7e387e08ed --- /dev/null +++ b/fa/news/_posts/2013-12-21-ruby-version-policy-changes-with-2-1-0.md @@ -0,0 +1,64 @@ +--- +layout: news_post +title: "Ruby version policy changes starting with Ruby 2.1.0" +author: "zzak" +translator: +date: 2013-12-21 2:00:00 +0000 +lang: en +--- + +We've decided to change the Ruby versioning policy to a more +[Semantic Versioning](http://semver.org/) type starting with +the release of Ruby 2.1.0. + +In order to provide a more well defined and properly utilized versioning scheme +for Ruby, we've decided to gradually switch to the following policy. + +## Policy Changes + +This policy is based off a proposal by ruby-lang.org system administrator +Hiroshi Shibata ([@hsbt](https://twitter.com/hsbt)). + +### Version Schema + +* `MAJOR`: increased when incompatible change which can't be released in MINOR + * Reserved for special events +* `MINOR`: increased every christmas, may be API incompatible +* `TEENY`: security or bug fix which maintains API compatibility + * May be increased more than 10 (such as `2.1.11`), and will be released every 2-3 months. +* `PATCH`: number of commits since last `MINOR` release (will be reset at 0 when releasing `MINOR`) + +### Branching Schema + +We will continue to maintain the following branches: + +* trunk +* `ruby_{MAJOR}_{MINOR}_{TEENY}` + +### API Compatibility + +The following traits can be marked as an incompatible change, requiring an +increase in the `MINOR` version: + +* Removal of C-level api features +* Backwards incompatible changes or additions + +### ABI Compatibility + +ABI will comply with the following scheme: `{MAJOR}.{MINOR}.0` + +We will give our best effort to keep ABI compatibility within the same `MINOR` +level releases, so `TEENY` will be fixed at 0. + +## References + +To read up more on this proposal please see the following links: + +* [Introducing a semantic versioning scheme and branching policy](https://bugs.ruby-lang.org/issues/8835) +* [Accepted proposal in English](https://gist.github.com/sorah/7803201) +* [Accepted proposal in Japanese](https://gist.github.com/hsbt/7719305) + +## Thank you! + +I'd like to personally thank everyone who contributed to this discussion. +Each step we take is closer to a more stable and effective Ruby. diff --git a/fa/news/_posts/2013-12-25-ruby-2-1-0-is-released.md b/fa/news/_posts/2013-12-25-ruby-2-1-0-is-released.md new file mode 100644 index 0000000000..8d0ae4b127 --- /dev/null +++ b/fa/news/_posts/2013-12-25-ruby-2-1-0-is-released.md @@ -0,0 +1,52 @@ +--- +layout: news_post +title: "Ruby 2.1.0 is released" +author: "nurse" +translator: +date: 2013-12-25 16:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.1.0. + +Ruby 2.1 has many improvements including speedup without severe +incompatibilities. + +Try it! + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.bz2) + * SIZE: 12007442 bytes + * MD5: 1546eeb763ac7754365664be763a1e8f + * SHA256: 1d3f4ad5f619ec15229206b6667586dcec7cc986672c8fbb8558161ecf07e277 +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.gz) + * SIZE: 15076389 bytes + * MD5: 9e6386d53f5200a3e7069107405b93f7 + * SHA256: 3538ec1f6af96ed9deb04e0965274528162726cc9ba3625dcf23648df872d09d +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.zip) + * SIZE: 16603067 bytes + * MD5: 2fc3a80b56da81b906a9bb6fc7ca8399 + * SHA256: d40d7bfb39ca2e462dea61dcbbcf33426b60e6e553335c3afb39b4d827a6891c + +## Changes since 2.0 + +The notable changes are: + +* VM (method cache) +* RGenGC (See ko1's [RubyKaigi presentation](http://rubykaigi.org/2013/talk/S73) and [RubyConf 2013 presentation](http://www.atdot.net/~ko1/activities/rubyconf2013-ko1_pub.pdf)) +* refinements [#8481](https://bugs.ruby-lang.org/issues/8481) [#8571](https://bugs.ruby-lang.org/issues/8571) +* syntax changes + * Rational/Complex Literal [#8430](https://bugs.ruby-lang.org/issues/8430) + * def's return value [#3753](https://bugs.ruby-lang.org/issues/3753) +* Bignum + * use GMP [#8796](https://bugs.ruby-lang.org/issues/8796) +* String#scrub [#8414](https://bugs.ruby-lang.org/issues/8414) +* Socket.getifaddrs [#8368](https://bugs.ruby-lang.org/issues/8368) +* RDoc 4.1.0 and RubyGems 2.2.0 +* "literal".freeze is now optimized [#9042](https://bugs.ruby-lang.org/issues/9042) +* add Exception#cause [#8257](https://bugs.ruby-lang.org/issues/8257) +* update libraries like BigDecimal, JSON, NKF, Rake, RubyGems, and RDoc +* remove curses [#8584](https://bugs.ruby-lang.org/issues/8584) + +See more details of changes: [NEWS in Ruby repository](https://github.com/ruby/ruby/blob/v2_1_0/NEWS). diff --git a/fa/news/_posts/2014-01-10-ruby-1-9-3-will-end-on-2015.md b/fa/news/_posts/2014-01-10-ruby-1-9-3-will-end-on-2015.md new file mode 100644 index 0000000000..64fb320fd3 --- /dev/null +++ b/fa/news/_posts/2014-01-10-ruby-1-9-3-will-end-on-2015.md @@ -0,0 +1,18 @@ +--- +layout: news_post +title: "Support for Ruby version 1.9.3 will end on February 23, 2015" +author: "hsbt" +translator: +date: 2014-01-10 00:00:00 +0000 +lang: en +--- + +Today we are announcing our plans for the future of Ruby version 1.9.3. + +Currently this branch is in maintenance mode, and will remain so until +February 23, 2014. + +After February 23 2014, we will only provide security fixes for 1.9.3 until +February 23 2015, after which all support will end for 1.9.3. + +We highly recommend that you upgrade to Ruby 2.1 or 2.0.0 as soon as possible. diff --git a/fa/news/_posts/2014-01-20-abril-pro-ruby-2014.md b/fa/news/_posts/2014-01-20-abril-pro-ruby-2014.md new file mode 100644 index 0000000000..55289ed578 --- /dev/null +++ b/fa/news/_posts/2014-01-20-abril-pro-ruby-2014.md @@ -0,0 +1,24 @@ +--- +layout: news_post +title: "Abril Pro Ruby 2014, The Tropical Ruby Conference" +author: "lailsonbm" +translator: +date: 2014-01-20 11:22:14 +0000 +lang: en +--- + +[Abril Pro Ruby 2014](http://abrilproruby.com/), the third edition of +the Tropical Ruby Conference, will happen in **April 26, 2014** at the +**Porto de Galinhas beach**, a sunny paradise in the northeast of Brazil. + +Come and meet top notch Rubyists while having a great time exploring this +beautiful place. +The [conference official activities](http://abrilproruby.com/en/conference/) +include scuba diving, raft boat sailing and catamaran ride, which will happen +one day before and one day after the event. + +**Jim Weirich** (the creator of Rake), **Rafael França** (from the Rails Core +Team) and **Nell Shamrell** (the Regular Expressions guru) are confirmed +speakers and the **Call for Proposals** is currently open. If you want to +give a talk, [submit your proposal](http://cfp.abrilproruby.com/) until +the end of this month (**January 31st**). diff --git a/fa/news/_posts/2014-02-12-the-2014-ruby-hero-awards.md b/fa/news/_posts/2014-02-12-the-2014-ruby-hero-awards.md new file mode 100644 index 0000000000..80a946c131 --- /dev/null +++ b/fa/news/_posts/2014-02-12-the-2014-ruby-hero-awards.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "2014 Ruby Hero Award Nominations" +author: "Gregg Pollack" +translator: +date: 2014-02-12 14:02:03 +0000 +lang: en +--- + +Has anyone helped you greatly in the Ruby community this past year? Maybe they +taught you something, wrote a gem, or gave you some tech support? If anyone +comes to mind, then please take the time to +[nominate them](http://rubyheroes.com/) for a Ruby Hero Award. + +In the past 6 years I've given away 38 trophies to those in our community who +don't get the recognition they deserve. In three weeks, the Ruby Heroes from +all previous years will look at the nominations and decide who should receive +the awards (this way there’s no popularity contest). However, your nominations +do matter, so please take a moment and spread the gratitude. +[Vote today!](http://rubyheroes.com/) diff --git a/fa/news/_posts/2014-02-24-ruby-1-9-3-p545-is-released.md b/fa/news/_posts/2014-02-24-ruby-1-9-3-p545-is-released.md new file mode 100644 index 0000000000..f687c6014c --- /dev/null +++ b/fa/news/_posts/2014-02-24-ruby-1-9-3-p545-is-released.md @@ -0,0 +1,51 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p545 is released" +author: "usa" +translator: +date: 2014-02-24 05:00:00 +0000 +lang: en +--- + +Happy birthday, Ruby! +Today, Feb. 24th, is the 21st anniversary of Ruby. +In commemoration of it, Ruby 1.9.3-p545 is released. + +This is the last ordinal release of Ruby 1.9.3. +It means that Ruby 1.9.3 goes into the state of the security maintenance +phase, and will never be released unless any critical regressions +or security issues are found. +This phase is planned to be maintained for 1 year. +Then, maintenance of Ruby 1.9.3 will be ended at Feb. 24th, 2015. + +This release includes many bugfixes. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_545/ChangeLog) for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.bz2) + + SIZE: 10038164 bytes + MD5: 4743c1dc48491070bae8fc8b423bc1a7 + SHA256: 2533de9f56d62f11c06a02dd32b5ab6d22a8f268c94b8e1e1ade6536adfd1aab + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.gz) + + SIZE: 12582277 bytes + MD5: 8e8f6e4d7d0bb54e0edf8d9c4120f40c + SHA256: 05fb00ebd374ef800475eb40b71ebc42cc18c1f61f4885c11737f310d3d23111 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.zip) + + SIZE: 13970747 bytes + MD5: d056aefa64237737fedb127257b502d2 + SHA256: 2d0d17840da0dfbea8ace8a77050a7710d2ef3c9e05dd88f2731464532aea31e + +## Release Comment + +I'm grateful to everybody who supports Ruby. +Thank you. + +This release is dedicated to the memory of our best comrade, Jim Weirich. +Thank you, Jim. Rest in peace. diff --git a/fa/news/_posts/2014-02-24-ruby-2-0-0-p451-is-released.md b/fa/news/_posts/2014-02-24-ruby-2-0-0-p451-is-released.md new file mode 100644 index 0000000000..8a152ab589 --- /dev/null +++ b/fa/news/_posts/2014-02-24-ruby-2-0-0-p451-is-released.md @@ -0,0 +1,41 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p451 is released" +author: "nagachika" +translator: +date: 2014-02-24 12:00:00 +0000 +lang: en +--- + +Today, Feb. 24th, is the 21st anniversary of Ruby, +so we happily announce a new patch release, Ruby 2.0.0-p451. + +This release includes many bugfixes. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_451/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.bz2) + + SIZE: 10725438 bytes + MD5: 908e4d1dbfe7362b15892f16af05adf8 + SHA256: 5bf8a1c7616286b9dbc962912c3f58e67bc3a70306ca90b0882ef0bd442e02f5 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.gz) + + SIZE: 13587580 bytes + MD5: 9227787a9636551f1749ee8394b5ffe5 + SHA256: e6d6900eb4084053058349cfdbf63ad1414b6a8d75d58b47ed81010a9947e73b + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.zip) + + SIZE: 15097530 bytes + MD5: e90cb32e9cf534d180754d7492988748 + SHA256: 8999133f35ad5ddc9a6174860c795c5022e3868ff3b6587448b86af81ea2d5ec + +## Release Comment + +Many committers, developers and users who gave bug reports helped me to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2014-02-24-ruby-2-1-1-is-released.md b/fa/news/_posts/2014-02-24-ruby-2-1-1-is-released.md new file mode 100644 index 0000000000..1540e7d5af --- /dev/null +++ b/fa/news/_posts/2014-02-24-ruby-2-1-1-is-released.md @@ -0,0 +1,40 @@ +--- +layout: news_post +title: "Ruby 2.1.1 is released" +author: "naruse" +translator: +date: 2014-02-24 05:00:00 +0000 +lang: en +--- + +Today, Feb. 24th, is the 21st anniversary of Ruby, +so we happily announce a new patch release of Ruby 2.1, Ruby 2.1.1. + +Ruby 2.1 has many improvements including speedup without +severe incompatibilities. You can use this on Rails and other applications, +and get a more comfortable experience. + +This release includes many bugfixes. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_1/ChangeLog) for details. + +Following the previously announced [changed versioning policy of Ruby 2.1](https://www.ruby-lang.org/en/news/2013/12/21/ruby-version-policy-changes-with-2-1-0/), +this version is simply called "2.1.1". + +**Update:** We've noticed a regression in `Hash#reject`. For more details, see: +[Regression of Hash#reject in Ruby 2.1.1](https://www.ruby-lang.org/en/news/2014/03/10/regression-of-hash-reject-in-ruby-2-1-1/). + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.bz2> + * SIZE: 11990697 bytes + * MD5: 53edc33b2f590ecdd9f6a344b9d92d0d + * SHA256: 96aabab4dd4a2e57dd0d28052650e6fcdc8f133fa8980d9b936814b1e93f6cfc +* <https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz> + * SIZE: 15092388 bytes + * MD5: e57fdbb8ed56e70c43f39c79da1654b2 + * SHA256: c843df31ae88ed49f5393142b02b9a9f5a6557453805fd489a76fbafeae88941 +* <https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.zip> + * SIZE: 16618363 bytes + * MD5: 02c1dbff9c550d2d808444c8fef483bc + * SHA256: 6c226d3f3a4bd1a9356077473d1915968f45af6775660bb8ec5e245a337e3b14 diff --git a/fa/news/_posts/2014-03-10-regression-of-hash-reject-in-ruby-2-1-1.md b/fa/news/_posts/2014-03-10-regression-of-hash-reject-in-ruby-2-1-1.md new file mode 100644 index 0000000000..c03330abde --- /dev/null +++ b/fa/news/_posts/2014-03-10-regression-of-hash-reject-in-ruby-2-1-1.md @@ -0,0 +1,45 @@ +--- +layout: news_post +title: "Regression of Hash#reject in Ruby 2.1.1" +author: "sorah" +translator: +date: 2014-03-10 14:00:00 +0000 +lang: en +--- + +In Ruby 2.1.0 or earlier, the `reject` method in any class that inherits +`Hash` returns an object of its own class. +But in Ruby 2.1.1, this behavior has changed accidentally to return always +a plain Hash object, not of the inherited class. + +{% highlight ruby %} +class SubHash < Hash +end + +p Hash.new.reject { }.class +#=> 2.1.0: Hash, 2.1.1: Hash +p SubHash.new.reject { }.class +#=> 2.1.0: SubHash, 2.1.1: Hash +{% endhighlight %} + +(To be exact, extra states such as instance variables, etc. aren't +copied either.) + +Ruby 2.1.1 shouldn't include such behavior changes, because with the release +of Ruby 2.1.0 we've [changed our versioning policy](https://www.ruby-lang.org/en/news/2013/12/21/ruby-version-policy-changes-with-2-1-0/), +so Ruby 2.1.1 is a patch level release and it shouldn't break backwards +compatibility. + +This regression could potentially affect many libraries, one such case is +Rails' `HashWithIndifferentAccess` and `OrderedHash`. They are broken: +[Rails' issue #14188](https://github.com/rails/rails/issues/14188). + +This behavior will be reverted to the 2.1.0 behavior in Ruby 2.1.2, +but is expected to be the default behavior for Ruby 2.2.0: +[Feature #9223](https://bugs.ruby-lang.org/issues/9223). +So we recommend to fix your code in order to expect this behavior change. + +This accident is caused by one missing backport commit. For more details, see +[http://blog.sorah.jp/2014/03/10/hash-reject-regression-in-ruby211](http://blog.sorah.jp/2014/03/10/hash-reject-regression-in-ruby211). + +Sorry for any inconvenience, and thank you for your support. diff --git a/fa/news/_posts/2014-03-14-rubyconf-taiwan-2014.md b/fa/news/_posts/2014-03-14-rubyconf-taiwan-2014.md new file mode 100644 index 0000000000..78e55fd975 --- /dev/null +++ b/fa/news/_posts/2014-03-14-rubyconf-taiwan-2014.md @@ -0,0 +1,16 @@ +--- +layout: news_post +title: "RubyConf Taiwan 2014 Registration Now Open" +author: "Juanito Fatas" +translator: +date: 2014-03-14 05:58:31 +0000 +lang: en +--- + +RubyConf Taiwan 2014 will be held in Taipei, Taiwan on 25-26 April, 2014. + +For details about speakers and schedule please visit the [conference site](http://rubyconf.tw/2014/) and the [RubyConf Taiwan press release](http://rubytaiwan.tumblr.com/post/79134654151/rubyconftaiwan2014-press-release-en). + +Tickets are open till March 31st, 2014. + +[Reserve Your Ticket!](http://rubytaiwan.kktix.cc/events/rubyconftw2014?locale=en) diff --git a/fa/news/_posts/2014-03-15-eurucamp-2014.md b/fa/news/_posts/2014-03-15-eurucamp-2014.md new file mode 100644 index 0000000000..e17aeb02d2 --- /dev/null +++ b/fa/news/_posts/2014-03-15-eurucamp-2014.md @@ -0,0 +1,42 @@ +--- +layout: news_post +title: "eurucamp 2014 dates and CFP" +author: "Florian Gilcher" +translator: +date: 2014-03-15 14:00:00 +0000 +lang: en +--- + +[eurucamp 2014][1] will be held around Berlin on August 1st to 3rd. +eurucamp is an offspring of EuRuKo 2011 and has been held ever since. + +The [Call for Proposals][2] is open until May 1st. +The CFP is anonymous and fair, all speaking slots will be filled through it. In +addition to that, eurucamp has an +[unconditional mentorship program][3]. + +We are searching for both talks and workshops about Ruby and the community. +We are very welcoming towards new speakers or seasoned speakers trying out new topics. +Find details in our [CFP guide][4]. + +eurucamp is a summer conference with ample free time for socializing and many +opportunities to come up with your own ideas. See our +[2012 video][5] on our [Vimeo page][6] +for an impression. Also have a look at our [activities app][7] +as a sample of what happens in and around eurucamp. + +eurucamp has a strict [Code of Conduct][8]. We are family friendly and +offer child care. We welcome anyone with accessibility issues. + +We are an international conference and have seen guests from all around the world. + +Ticket sales will open soon. + +[1]: http://2014.eurucamp.org +[2]: http://cfp.eurucamp.org +[3]: http://cfp.eurucamp.org/mentorship +[4]: http://cfp.eurucamp.org/guide +[5]: https://vimeo.com/51200145 +[6]: https://vimeo.com/eurucamp +[7]: http://activities.eurucamp.org +[8]: http://cfp.eurucamp.org/coc diff --git a/fa/news/_posts/2014-03-29-heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525.md b/fa/news/_posts/2014-03-29-heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525.md new file mode 100644 index 0000000000..17c6d4b7ec --- /dev/null +++ b/fa/news/_posts/2014-03-29-heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525.md @@ -0,0 +1,65 @@ +--- +layout: news_post +title: "Heap Overflow in YAML URI Escape Parsing (CVE-2014-2525)" +author: "hone and zzak" +translator: +date: 2014-03-29 01:49:25 +0000 +tags: security +lang: en +--- + +There is an overflow in URI escape parsing of YAML in Ruby. +This vulnerability has been assigned the CVE identifier +[CVE-2014-2525](http://www.ocert.org/advisories/ocert-2014-003.html). + +## Details + +Any time a string in YAML with tags is parsed, a specially crafted string can cause +a heap overflow which can lead to arbitrary code execution. + +For example: + +{% highlight ruby %} +YAML.load <code_from_unknown_source> +{% endhighlight %} + +## Affected Versions + +Ruby 1.9.3-p0 and above include psych as the default YAML parser. +Any versions of psych linked against libyaml `<= 0.1.5` are affected. + +And, these versions of Ruby bundle an affected version of libyaml: + +* Ruby 2.0.0-p451 and earlier, +* Ruby 2.1.0 and Ruby 2.1.1. + +You can verify the version of libyaml used by running: + +{% highlight sh %} +$ ruby -rpsych -e 'p Psych.libyaml_version' +[0, 1, 5] +{% endhighlight %} + +## Solutions + +Users who install libyaml to the system are recommended to update libyaml to `0.1.6`. +When recompiling Ruby, point to the newly updated libyaml: + +{% highlight sh %} +$ ./configure --with-yaml-dir=/path/to/libyaml +{% endhighlight %} + +Users without a system libyaml rely on the embedded libyaml and are recommended +to update psych to `2.0.5` which vendors libyaml `0.1.6`: + +{% highlight sh %} +$ gem install psych +{% endhighlight %} + +or, update your Ruby to 2.0.0-p481, 2.1.2 or newer. + +## History + +* Originally published at 2014-03-29 01:49:25 UTC +* Update published at 2014-03-29 09:37:00 UTC +* Update published at 2014-05-09 03:00:00 UTC diff --git a/fa/news/_posts/2014-04-10-severe-openssl-vulnerability.md b/fa/news/_posts/2014-04-10-severe-openssl-vulnerability.md new file mode 100644 index 0000000000..1fe5380466 --- /dev/null +++ b/fa/news/_posts/2014-04-10-severe-openssl-vulnerability.md @@ -0,0 +1,76 @@ +--- +layout: news_post +title: "OpenSSL Severe Vulnerability in TLS Heartbeat Extension (CVE-2014-0160)" +author: "hone and zzak" +translator: +date: 2014-04-10 01:04:27 +0000 +tags: security +lang: en +--- + +There is a severe vulnerability in OpenSSL's implementation of the TLS/DTLS +(transport layer security protocols) heartbeat extension (`RFC6520`). +This a serious vulnerability which has been assigned the CVE identifier +[CVE-2014-0160](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0160). + +Exploitation may lead to disclosure of memory contents from the server to the +client and from the client to the server. An attacker can remotely retrieve +sensitive data from memory, including, but not limited to secret keys used for +SSL encryption and authentication tokens. + +For more information on the attacks see [heartbleed.com](http://heartbleed.com). + +## How is Ruby affected? + +Ruby is affected when statically compiled against a vulnerable version of +OpenSSL through the standard library OpenSSL C extension. + +OpenSSL versions 1.0.1 through 1.0.1f (inclusive) are vulnerable to this +attack. To verify which version of the OpenSSL library you link to Ruby, +use the following: + +{% highlight sh %} +ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)' +{% endhighlight %} + +To verify the version of OpenSSL currently installed with Ruby, +use the following: + +{% highlight sh %} +ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION' +{% endhighlight %} + +You can verify if your client software or a running service are vulnerable +by using [emboss’s script](https://github.com/emboss/heartbeat). + +## Solutions + +To upgrade to the latest version of OpenSSL version `1.0.1g` or newer, +you should check with your current operating system package manager to ensure +they provide an up-to-date OpenSSL. You may need to consult with your +operating system distributor to verify their version of OpenSSL is patched, +regardless of the version number available. + +If upgrade is not an option, recompile a patched OpenSSL with the +option `-DOPENSSL_NO_HEARTBEATS` at build time. + +With an upgraded OpenSSL, it’s recommended to recompile Ruby to ensure +there are no links to a vulnerable version of OpenSSL. + +This means updating any tools used to build Ruby such as RVM or ruby-build. +If you build Ruby yourself, use the `--with-openssl-dir` option at +compile time to link an upgraded OpenSSL install directory. + +{% highlight sh %} +$ ./configure --with-openssl-dir=/path/to/openssl +$ make +$ make install +{% endhighlight %} + +After upgrading OpenSSL and Ruby, it’s important to restart all programs +using the vulnerable version. + +Many operating system distributions already provide (or will soon be +providing) patched versions and rebuilt packages for libraries vulnerable to +this attack. It’s important to monitor your operating system distributor to +ensure you remain secure. diff --git a/fa/news/_posts/2014-05-09-dispute-of-vulnerability-cve-2014-2734.md b/fa/news/_posts/2014-05-09-dispute-of-vulnerability-cve-2014-2734.md new file mode 100644 index 0000000000..899bc844e5 --- /dev/null +++ b/fa/news/_posts/2014-05-09-dispute-of-vulnerability-cve-2014-2734.md @@ -0,0 +1,107 @@ +--- +layout: news_post +title: "Dispute of Vulnerability CVE-2014-2734" +author: "emboss" +translator: +date: 2014-05-09 05:33:54 +0000 +tags: security +lang: en +--- + +We were recently informed about a possible security vulnerability that has +been published as +[CVE-2014-2734](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-2734). +However, based on our detailed analysis below, we do **not** consider Ruby +to be vulnerable. + +This vulnerability could possibly allow an attacker to forge arbitrary root +certificates by modifying the certificate’s signature, effectively replacing +the certificate’s original private key with one chosen by the attacker. + +## Proof of Concept + +The following is our analysis of CVE-2014-2734, we were able to reduce the +original PoC, which we believe captures the essence of the proof of concept: + +{% highlight ruby %} +require 'openssl' + +forge_key = OpenSSL::PKey::RSA.new(2048) +raw_certificate = File.read("arbitrary.cer") +cert = OpenSSL::X509::Certificate.new(raw_certificate) +resigned_cert = cert.sign(spoof, OpenSSL::Digest::SHA1.new) + +resigned_cert.verify(key) #=> true +{% endhighlight %} + +It may come as a surprise that `X509Certificate#verify` returns `true`. +The original certificate may contain a +[Subject Public Key Info](http://tools.ietf.org/html/rfc5280#section-4.1.2.7) +pointing to the original public key which is different from the public key of +`forge_key`. Clearly, the public / private key pair that was used to re-sign +the certificate no longer matches the original public key referenced in the +Subject Public Key Info. Why does `#verify` return `true`? + +### How keys are verified + +`X509Certificate#verify` uses OpenSSL’s +[`X509_verify`](https://github.com/openssl/openssl/blob/master/crypto/x509/x_all.c#L74) +function internally, which delegates to +[`ASN1_item_verify`](https://github.com/openssl/openssl/blob/master/crypto/asn1/a_verify.c#L134). +These functions establish the validity of the signature given the public key +that was presented. However, they will **not** verify if the given key +actually matches any subject public key referenced in the certificate. +This means that returning `true` is expected behavior for `X509Certificate#verify` +in this scenario. Omitting this check has no significant impact on the overall +security of the X.509 trust model. + +Section 4.1.1.3 of RFC 5280 explicitly states that by computing a +certificate’s signature, the CA confirms the correctness of the information +contained in the certificate. While this principle is violated in the above +example code, it poses no threat to security. A certificate forged or modified +in this way cannot be exploited unless someone is able to convince you to +explicitly trust a certificate that violates this principle. + +## Potential risks + +There are two cases to consider: + +### Re-signing a root certificate + +As users, we trust root certificates unconditionally. Even if they do not +contain valid information, the status of being a publicly acknowledged root +certificate alone is what keeps them pristine. They are preconfigured values +in the trust stores of our browsers or operating systems. Simply possessing +them establishes their status as valid trust anchors. For example, OpenSSL +itself does not check the signature of self-signed root certificates by +default for the same reasons, +cf. [X509_V_FLAG_CHECK_SS_SIGNATURE documentation](https://www.openssl.org/docs/crypto/X509_VERIFY_PARAM_set_flags.html). + +A re-signed root certificate becomes a de facto “self-signed” certificate +(albeit with incorrect Subject Public Key Info). This is not any more +dangerous than a normal self-signed root certificate. In fact, anyone can +produce self-signed root certificates which may completely match that of a +valid root certificate - except for the signature. Since we trust root +certificates merely by possession, such an imposter certificate is meaningless +without a client’s active consent to trust it. + +### Re-signing an intermediate or leaf certificate + +Also, re-signing a non-root certificate does not violate the security of the +X.509 trust model. While we usually do not possess these kinds of certificates +in advance, their forgery would be detected during the +[path validation procedure](http://tools.ietf.org/html/rfc5280#section-6). +Here, any non-root certificate’s signature is verified using the public key +of the issuing certificate. At some point in the certificate chain, the forgery +would be ultimately detected in the form of an invalid certificate signature +value. + +## Conclusion + +In conclusion, we believe that `X509Certificate#verify` operates as expected. +Others have independently arrived at the +[same conclusion](https://github.com/adrienthebo/cve-2014-2734/) +and we have therefore disputed CVE-2014-2734, and asked for its revocation. +You can find our complete analysis of the +[original proof of concept](https://gist.github.com/emboss/91696b56cd227c8a0c13) +including comments. diff --git a/fa/news/_posts/2014-05-09-ruby-2-0-0-p481-is-released.md b/fa/news/_posts/2014-05-09-ruby-2-0-0-p481-is-released.md new file mode 100644 index 0000000000..ffa8595d43 --- /dev/null +++ b/fa/news/_posts/2014-05-09-ruby-2-0-0-p481-is-released.md @@ -0,0 +1,45 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p481 is released" +author: "usa" +translator: +date: 2014-05-09 03:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.0.0-p481. + +This release includes many bugfixes, such as: + +* support for build with Readline-6.3, +* a fix for old OpenSSL (regression in p451), +* an updated bundled version of libyaml + (see [Heap Overflow in YAML URI Escape Parsing (CVE-2014-2525)](https://www.ruby-lang.org/en/news/2014/03/29/heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525/)). + +See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_481/ChangeLog) for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.bz2) + + SIZE: 10727244 bytes + MD5: ea406a8d415a1a5d8365596d4288f3da + SHA256: 0762dad7e96d8091bdf33b3e3176c2066fbf3dc09dfe85fbf40e74e83c63d8e2 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.gz) + + SIZE: 13586757 bytes + MD5: 3913e0ad6cc572b7358e4c6a8c4b2551 + SHA256: 00dd3d72435eb77f2bd94537c1738e5219ca42b6d68df3d4f20c183f4bd12d0f + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.zip) + + SIZE: 15101944 bytes + MD5: 1cdf06d1a58f3103e9ed7e072d680b19 + SHA256: 7457cdfac36cefcb0721b0520371939926fa755759631c90dd91e64e986eb23d + +## Release Comment + +I'm grateful to everybody who supports Ruby. +Thank you. diff --git a/fa/news/_posts/2014-05-09-ruby-2-1-2-is-released.md b/fa/news/_posts/2014-05-09-ruby-2-1-2-is-released.md new file mode 100644 index 0000000000..02ef65a50f --- /dev/null +++ b/fa/news/_posts/2014-05-09-ruby-2-1-2-is-released.md @@ -0,0 +1,45 @@ +--- +layout: news_post +title: "Ruby 2.1.2 is released" +author: "nagachika" +translator: +date: 2014-05-09 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.1.2. + +This release contains a fix for a +[regression of Hash#reject in Ruby 2.1.1](https://www.ruby-lang.org/en/news/2014/03/10/regression-of-hash-reject-in-ruby-2-1-1/), +support for build with Readline-6.3 +(see [Bug #9578](https://bugs.ruby-lang.org/issues/9578)), +an updated bundled version of libyaml with psych, and some bug fixes. + +See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_2/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.bz2) + + SIZE: 11976939 bytes + MD5: ed9b8565bdeccb401d628ec8d54a0774 + SHA256: 6948b02570cdfb89a8313675d4aa665405900e27423db408401473f30fc6e901 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz) + + SIZE: 15096114 bytes + MD5: a5b5c83565f8bd954ee522bd287d2ca1 + SHA256: f22a6447811a81f3c808d1c2a5ce3b5f5f0955c68c9a749182feb425589e6635 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.zip) + + SIZE: 16621119 bytes + MD5: 7c303050d1e28e18398aed0fd59d334c + SHA256: b62a0ded5cfce7d08e539bf5875d543e24208096a37f85bee3304c1284337fa2 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped me to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2014-05-16-ruby-1-9-3-p547-released.md b/fa/news/_posts/2014-05-16-ruby-1-9-3-p547-released.md new file mode 100644 index 0000000000..fdc1f14d3a --- /dev/null +++ b/fa/news/_posts/2014-05-16-ruby-1-9-3-p547-released.md @@ -0,0 +1,54 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p547 Released" +author: "usa" +translator: +date: 2014-05-16 14:59:59 +0000 +lang: en +--- + +Ruby 1.9.3-p547 has just been released. + +Ruby 1.9.3 is now in the security maintenance phase. +This means that we release Ruby 1.9.3 only when a security incident occurs. +However, there is one exception. +As stated previously, we release if a critical regression is found. + +Some users reported problems in environments that use an old OpenSSL version, +such as Ubuntu 10.04 LTS. +This is a regression introduced in Ruby 1.9.3-p545. +(The same problem also occurred in Ruby 2.1.1 and Ruby 2.0.0-p451 and has +already been fixed with Ruby 2.1.2 and Ruby 2.0.0-p481.) +Please see [Bug #9592](https://bugs.ruby-lang.org/issues/9592) for more details. + +So, we decided to release this fix. +You should only upgrade if you are affected by this problem. + +This release includes only two changes: + +* a fix for an old OpenSSL version (see above), +* a trivial change of `common.mk` for our release management (does not affect users). + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.bz2) + + SIZE: 10036828 bytes + MD5: 5363d399be7f827c77bf8ae5d1a69b38 + SHA256: ef588ed3ff53009b4c1833c83187ae252dd6c20db45e21a326cd4a16a102ef4c + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.gz) + + SIZE: 12582375 bytes + MD5: 7531f9b1b35b16f3eb3d7bea786babfd + SHA256: 9ba118e4aba04c430bc4d5efb09b31a0277e101c9fd2ef3b80b9c684d7ae57a1 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.zip) + + SIZE: 13970935 bytes + MD5: 40ce2040860b18a330efe70b5ef072ba + SHA256: 89c7639c75dd58af7ac77d01a6d035992f8c39de90fc5cbfcf6e8b54a6305900 + +## Release Comment + +Thank you for reports. diff --git a/fa/news/_posts/2014-05-31-stopped-mailing-list-temporarily.md b/fa/news/_posts/2014-05-31-stopped-mailing-list-temporarily.md new file mode 100644 index 0000000000..580d436d39 --- /dev/null +++ b/fa/news/_posts/2014-05-31-stopped-mailing-list-temporarily.md @@ -0,0 +1,30 @@ +--- +layout: news_post +title: "Stopped mailing lists temporarily" +author: "hsbt" +translator: +date: 2014-05-31 12:30:00 +0000 +lang: en +--- + +We stopped the mailing lists on ruby-lang.org temporarily. + +Our mailing lists were attacked by a spam bomb. +We stopped the following lists: + + * ruby-core + * ruby-talk + * ruby-dev + * ruby-list + * ruby-cvs + * ruby-doc + * ruby-ext + * ruby-fr + * ruby-math + +We are sorry if the outage affects you and are working on +resuming the lists as soon as we can. + +### Status update 2014-06-16 9:00 +0000 + +We resumed the mailing lists on ruby-lang.org. diff --git a/fa/news/_posts/2014-06-16-rubyworld-conference-2014-speaker-invite.md b/fa/news/_posts/2014-06-16-rubyworld-conference-2014-speaker-invite.md new file mode 100644 index 0000000000..41e3a4d908 --- /dev/null +++ b/fa/news/_posts/2014-06-16-rubyworld-conference-2014-speaker-invite.md @@ -0,0 +1,17 @@ +--- +layout: news_post +title: "RubyWorld Conference 2014 Speaker Invite" +author: "zzak" +translator: +date: 2014-06-16 23:57:01 +0000 +lang: en +--- + +[RubyWorld Conference](http://www.rubyworld-conf.org/en/) will be held in +Matsue, Japan on November 13-14, 2014. + +The RubyWorld Conference Executive Committee is inviting speakers from around +the world to apply to give a presentation at the conference. + +See the [CFP](http://www.rubyworld-conf.org/en/news/2014/06/speaker-invite/) +for more information on how you can apply! diff --git a/fa/news/_posts/2014-07-01-eol-for-1-8-7-and-1-9-2.md b/fa/news/_posts/2014-07-01-eol-for-1-8-7-and-1-9-2.md new file mode 100644 index 0000000000..ae905c0116 --- /dev/null +++ b/fa/news/_posts/2014-07-01-eol-for-1-8-7-and-1-9-2.md @@ -0,0 +1,34 @@ +--- +layout: news_post +title: "EOL for Ruby 1.8.7 and 1.9.2" +author: "zzak and hone" +translator: +date: 2014-07-01 07:50:34 +0000 +lang: en +--- + +Extended maintenance of Ruby versions 1.8.7 and 1.9.2 will end on July 31, 2014. + +## Further information + +[Last December](https://www.ruby-lang.org/en/news/2013/12/17/maintenance-of-1-8-7-and-1-9-2/), +we extended the supported lifetime of Ruby versions 1.8.7 and 1.9.2 +by six months. +[Heroku sponsored](https://blog.heroku.com/archives/2013/12/5/a_patch_in_time_securing_ruby) +this extension to support customers on their Bamboo and Cedar stacks. + +We’re now coming to the close of this time window. +Ruby 1.8.7 came out in June 2008, making it just over six years old. +Ruby 1.9.2 was released in August of 2010, making it just under four years old. +With every passing day, backporting and maintaining security patches to these +code bases is becoming increasingly difficult. +[Ruby 2.1.2 has just been released](https://www.ruby-lang.org/en/news/2014/05/09/ruby-2-1-2-is-released/) +and Ruby 2.2.0 is scheduled to come out in six months. We recommend you +upgrade to a more modern Ruby immediately. This will get you all the +[improvements](https://www.ruby-lang.org/en/news/2013/12/25/ruby-2-1-0-is-released/) +we’ve made to the Ruby language and runtime. +In addition, this will ensure your apps continue to receive bug and +security updates in the future. + +For any parties concerned with continuing maintenance of Ruby 1.8.7 or 1.9.2, +please contact us at hone@ruby-lang.org and zzak@ruby-lang.org. diff --git a/fa/news/_posts/2014-07-26-rubykaigi-2014-registration-online.md b/fa/news/_posts/2014-07-26-rubykaigi-2014-registration-online.md new file mode 100644 index 0000000000..420075aaac --- /dev/null +++ b/fa/news/_posts/2014-07-26-rubykaigi-2014-registration-online.md @@ -0,0 +1,63 @@ +--- +layout: news_post +title: "RubyKaigi 2014 Registration Online" +author: "snoozer05" +translator: +date: 2014-07-26 16:02:34 +0000 +lang: en +--- + +[RubyKaigi 2014](http://rubykaigi.org/2014) registration page is now online. + +* What: RubyKaigi 2014 is a 3 day, double-track conference for Rubyists +* Where: Tokyo, Japan +* When: Sep 18 - Sep 20 (Thu - Sat) +* How many: 550+ rubyists + +## Keynote Speakers: + +* Yukihiro "Matz" Matsumoto +* Koichi Sasada +* and... (To Be Announced) + +## Registration: + +EarlyBird Ticket is open now and limited. Be quick! + +[http://rubykaigi.doorkeeper.jp/events/12215](http://rubykaigi.doorkeeper.jp/events/12215) + +Ruby core committers can get discounts on the EarlyBird price (JPY 18,000), +depending on [your commit counts to Ruby repo from 2.0.0-p0 to 2.1.0-p0](https://gist.github.com/snoozer05/ca9860c57683e4221d10): + +* 100% off if you made 100+ commits (Free) +* 50% for 20+ commits (JPY 9,000) +* 25% for 1+ commit(s) (JPY 13,500) + +Contact us (2014 at rubykaigi dot org) if you meet the conditions. +We will send you a corresponding coupon code valid for a discount on +the ticket price. + +## Notes for Non-Japanese Rubyists: + +In RubyKaigi 2014, You'll get: + +* the huge chance to say hi and thanks to Ruby committers!! (RubyKaigi +will have the largest number of Ruby committers in conferences all +around the world!) +* the opportunity to understand what Japanese Rubyist are saying in +their presentations! There will be JA -> EN interpreters available +during RubyKaigi this time! We will provide a great environment for +Rubyists from around the world. + +## More Info: + +* [http://rubykaigi.org/2014](http://rubykaigi.org/2014) +* [http://blog.rubykaigi.org](http://blog.rubykaigi.org) +* [@rubykaigi](https://twitter.com/rubykaigi) +* [http://lanyrd.com/2014/rubykaigi/](http://lanyrd.com/2014/rubykaigi) + +## Contact: + +2014 at rubykaigi dot org + +Look forward to see you rubyists in Japan <3 diff --git a/fa/news/_posts/2014-08-19-ruby-1-9-2-p330-released.md b/fa/news/_posts/2014-08-19-ruby-1-9-2-p330-released.md new file mode 100644 index 0000000000..8f3ce89848 --- /dev/null +++ b/fa/news/_posts/2014-08-19-ruby-1-9-2-p330-released.md @@ -0,0 +1,55 @@ +--- +layout: news_post +title: "Ruby 1.9.2-p330 Released" +author: "zzak and hone" +translator: +date: 2014-08-19 01:38:12 +0000 +lang: en +--- + +We have released 1.9.2-p330, the final release of the 1.9.2 series. + +Soon after announcing the +[End of Life for 1.9.2 (and 1.8.7)](https://www.ruby-lang.org/en/news/2014/07/01/eol-for-1-8-7-and-1-9-2/), +a critical security regression was found in 1.9.2. This vulnerability has been +assigned the CVE identifier [CVE-2014-6438]. + +This bug occurs when parsing a long string is using the URI method +`decode_www_form_component`. This can be reproduced by running the following +on vulnerable Rubies: + +{% highlight ruby %} +ruby -v -ruri -e'URI.decode_www_form_component "A string that causes catastrophic backtracking as it gets longer %"' +{% endhighlight %} + +Since it was found and patched just before the release of 1.9.3, versions of +Ruby 1.9.3-p0 and later are _not_ affected; however versions of Ruby 1.9.2 +older than 1.9.2-p330 _are_ affected. + +You can read the original report on the bug tracker: +<https://bugs.ruby-lang.org/issues/5149#note-4> + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/ruby-1.9.2-p330.tar.bz2> + + SIZE: 9081661 bytes + MD5: 8ba4aaf707023e76f80fc8f455c99858 + SHA256: 6d3487ea8a86ad0fa78a8535078ff3c7a91ca9f99eff0a6a08e66c6e6bf2040f + +* <https://cache.ruby-lang.org/pub/ruby/ruby-1.9.2-p330.tar.gz> + + SIZE: 11416473 bytes + MD5: 4b9330730491f96b402adc4a561e859a + SHA256: 23ef45fdaecc5d6c7b4e9e2d51b23817fc6aa8225a20f123f7fa98760e8b5ca9 + +* <https://cache.ruby-lang.org/pub/ruby/ruby-1.9.2-p330.zip> + + SIZE: 12732739 bytes + MD5: 42d261b28d1b7e500dd3bdbdbfba7fa5 + SHA256: 7a04a028564de7f2ad09f26c8d57fd40fe2b0a6a0e1d9ff7205010ca6e70cea6 + +We encourage you to upgrade to a stable and maintained +[version of Ruby](https://www.ruby-lang.org/en/downloads/). + +[CVE-2014-6438]: https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6438 diff --git a/fa/news/_posts/2014-09-10-confoo-cfp.md b/fa/news/_posts/2014-09-10-confoo-cfp.md new file mode 100644 index 0000000000..ec163d76d3 --- /dev/null +++ b/fa/news/_posts/2014-09-10-confoo-cfp.md @@ -0,0 +1,29 @@ +--- +layout: news_post +title: "ConFoo 2015 is looking for Ruby speakers" +author: "ylarrivee" +translator: +date: 2014-09-10 06:00:00 +0000 +lang: en +--- + +We are looking for Ruby professionals to share their skills and experience at +the next ConFoo. [Submit your proposals][1] until **September 22nd**. + +![ConFoo web dev conference. Feb 18 - 20, 2015 | Montreal, Canada][logo]{: style="border:0; float:right; margin-left:20px;" width="180" height="130"} + +ConFoo is a conference for developers that has built a reputation as a prime +destination for exploring new technologies, diving deeper into familiar +topics, and experiencing the best of community and culture. + + * ConFoo 2015 will be hosted on February 18th-20th in Montreal, at the Hilton Bonaventure Hotel. + * We take good care of our speakers by covering most expenses including travel, accommodation, lunch, full conference ticket, etc. + * Presentations are 35 min + 10 min for questions, and may be delivered in English or French. + * ConFoo is an open environment where everyone is welcome to submit. Are you skilled and friendly? Come join us. + +If you would simply prefer to attend the conference, we have a +[$290 discount][2] until October 13th. + +[logo]: http://confoo.ca/images/propaganda/2015/en/like.gif +[1]: http://confoo.ca/en/call-for-papers +[2]: http://confoo.ca/en/register diff --git a/fa/news/_posts/2014-09-18-ruby-2-2-0-preview1-released.md b/fa/news/_posts/2014-09-18-ruby-2-2-0-preview1-released.md new file mode 100644 index 0000000000..83d1aa6e1b --- /dev/null +++ b/fa/news/_posts/2014-09-18-ruby-2-2-0-preview1-released.md @@ -0,0 +1,80 @@ +--- +layout: news_post +title: "Ruby 2.2.0-preview1 Released" +author: "naruse" +translator: +date: 2014-09-18 09:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.2.0-preview1. + +Ruby 2.2.0-preview1 is the first preview of Ruby 2.2.0. +Many new features and improvements are included for the increasingly +diverse and expanding demands for Ruby. + +For example, Symbol GC makes Symbols garbage collectable. +This reduces memory usage of Symbols; because GC couldn't collect Symbols before +Ruby 2.2. So Rails 5.0 will require Symbol GC. It will support only Ruby 2.2 +or later. (See [Rails' blog post](http://weblog.rubyonrails.org/2014/8/20/Rails-4-2-beta1/) for details.) + +Also, new Incremental GC decreases pause time of garbage collection. +It is helpful for running Rails applications. + +Enjoy programming with Ruby 2.2.0-preview1! + +## Notable Changes since 2.1 + +* [Incremental GC](https://bugs.ruby-lang.org/issues/10137) +* [Symbol GC](https://bugs.ruby-lang.org/issues/9634) +* core libraries: + * Support Unicode 7.0 [#9092](https://bugs.ruby-lang.org/issues/9092) + * New methods: + * Enumerable#slice_after + * Float#next_float, Float#prev_float + * File.birthtime, File#birthtime +* bundled libraries: + * Update Psych 2.0.6 + * Update Rake 10.3.2+ (e47d0239) + * Update RDoc 4.2.0.alpha (21b241a) + * Update RubyGems 2.4.1+ (713ab65) + * Update test-unit 3.0.1 (removed from repository but bundled in tarball) + * Update minitest 5.4.1 (removed from repository but bundled in tarball) + * Deprecate mathn +* C API + * Remove deprecated APIs + +See [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_2_0_preview1/NEWS) for details. + +With those changes, 1239 files changed, 98343 insertions(+), 61858 deletions(-). + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview1.tar.bz2> + * SIZE: 12385780 bytes + * MD5: 767b132eec3e70b14afe5884a7a767b1 + * SHA256: a3614c389de06b1636d8b919f2cd07e85311486bda2cb226a5549657a3610af5 + * SHA512: 2f1190f5d8cd1fa9962d1ff416dae97759d032a96801d77bc6b10136eba59dde1a554ff8c0c2d9ce0d3c1361d4dd12ad573b1266fd53b90ab238d8ce39e6b862 +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview1.tar.gz> + * SIZE: 15419211 bytes + * MD5: f78fc9ec907fe622822abf3aa839c1b4 + * SHA256: 7a49493d148a38eff9ab13e88601686985cadf2de86276ae796f5443deab3abb + * SHA512: 34381eee1d31cc1dad87e6d57ba71153c4db034b697cf7f0010fa432bb037e8eef5a90936a658f8f07b9b1eaa18f0b5c02ea113c78f39061514724373622a3b5 +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview1.tar.xz> + * SIZE: 9617132 bytes + * MD5: 96cde140b3211780d58b36af023143d5 + * SHA256: 7ed01a518b8c4d65bfb887cf6e0809977c88abeb5bb70c9fe8df754966820411 + * SHA512: 1241fd9a6e583544576177f372e245845b9df1427104b595963e37d7348a7d1c5558c6f6bf6ca5f1856d0d4a8f4a54a8948d4b6d78fb7943d6c7458691f34f6d +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview1.zip> + * SIZE: 17161678 bytes + * MD5: df34e9d6a447b21a4e7fa261d51bb881 + * SHA256: 2fa6c0cbddd1566a8658e16a34b6ae2f9eda2a8eeee4113561b3948d066f44a0 + * SHA512: 615b35c0a0bc408b28af9d9220ccd1658c718c7657ae7ad3f8318d38850bec760b1738c43454986b105857a7ffc2fea95294b964e5ea26a915d6fd9d510351b7 + +## Release Comment + +* [2.2.0 Known issues](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=115) + +See also the release schedule and other information: + +[ReleaseEngineering22](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering22) diff --git a/fa/news/_posts/2014-09-19-ruby-2-0-0-p576-is-released.md b/fa/news/_posts/2014-09-19-ruby-2-0-0-p576-is-released.md new file mode 100644 index 0000000000..866a6a7132 --- /dev/null +++ b/fa/news/_posts/2014-09-19-ruby-2-0-0-p576-is-released.md @@ -0,0 +1,55 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p576 Released" +author: "usa" +translator: +date: 2014-09-19 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.0.0-p576, to celebrate the +holding of [RubyKaigi2014](http://rubykaigi.org/2014) in Japan now. + +This release includes many bugfixes, such as: + +* many fixes of memory leaks and using extra memory, +* many fixes of platform-specific issues (especially in build process), +* many documentation fixes. + +See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_576/ChangeLog) for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.bz2) + + SIZE: 10753403 bytes + MD5: eccd42d43620544a085c5e3834572f37 + SHA256: 8cfdbffc81cebd1d25304225ffadc7dcb612a500c81ba6f5f95c5296dfa62059 + SHA512: e089cca4867cd9c715f4f37e40a1db9af6ba0c74b47e79568121bb980476f8877a87ccb848b973381edb4667c0c73165f5e1761f60db839e67f6326302dbd864 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.gz) + + SIZE: 13610215 bytes + MD5: 2e1f4355981b754d92f7e2cc456f843d + SHA256: 9f5a593d81768c856155be6b2d2e357b961b5c43e04ba54c1ee511987fac2b66 + SHA512: f5b7e7fba87ed21ee5a422ea978794adbd2f63669db7c361cec3698b3ebba2e95fc113791de2e22513bbe23c5fecc0605d1b76cadb0e714162a2c0e94cbd77b9 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.xz) + + SIZE: 8318772 bytes + MD5: d64d6a92d6101c83396ef4a2754d9d2a + SHA256: 4aeac1cbca1b5ead0ace5625ba5ea50bb11ee6f8c41ff7cd305f7ff760e09496 + SHA512: e556435df9e6b4aae1ad27f986307a5aa6718b4b6a3365f6572b1eb3be72f1fa7cdda3cf5b9c142b878617770497ea2660595f505d1fe6924dcffacb5ccabecf + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.zip) + + SIZE: 15122735 bytes + MD5: 620e105c4f9a4274a8351516d0f6a53a + SHA256: cb0166d9afb0126612dff10d15848483984df4900c1b34cd053b1be6893ea38b + SHA512: adce5f044283e97fccbc80c770f999d20e366f7ee8e13782ca71490b5a16198ae0cdbc6df7419f085e2f7adea30552704141d37496cefcb9b147802b55d3ff82 + +## Release Comment + +I'm grateful to everybody who supports Ruby. +Thank you. diff --git a/fa/news/_posts/2014-09-19-ruby-2-1-3-is-released.md b/fa/news/_posts/2014-09-19-ruby-2-1-3-is-released.md new file mode 100644 index 0000000000..88cda09541 --- /dev/null +++ b/fa/news/_posts/2014-09-19-ruby-2-1-3-is-released.md @@ -0,0 +1,54 @@ +--- +layout: news_post +title: "Ruby 2.1.3 Released" +author: "nagachika" +translator: +date: 2014-09-19 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.1.3. +This is a patchlevel release of the stable 2.1 series. + +This release contains a change of full GC timing to reduce memory consumption +(see [Bug #9607](https://bugs.ruby-lang.org/issues/9607)), and many bugfixes. + +See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_3/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.bz2) + + SIZE: 11998074 bytes + MD5: 02b7da3bb06037c777ca52e1194efccb + SHA256: 36ce72f84ae4129f6cc66e33077a79d87b018ea7bf1dbc3d353604bf006f76d6 + SHA512: 9b48adb161e5e4550a71f61252c8edf59944affb82250babcb64240749af4b672e4a54ccd0feac5b36ea447a358b350b5080125ef2d4acf6e9e8b1ab82612f48 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.gz) + + SIZE: 15129183 bytes + MD5: 74a37b9ad90e4ea63c0eed32b9d5b18f + SHA256: 0818beb7b10ce9a058cd21d85cfe1dcd233e98b7342d32e9a5d4bebe98347f01 + SHA512: 364c391f669a37917ab1ee0c01d8430763d0c958c6d06fe5c3632d6e81316cafcae8b392b680d64c1692744585ac9286cb6408d7514e8a1f4dbd88ee314be99e + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.xz) + + SIZE: 9358664 bytes + MD5: fbc50ae56e7ac74501c8955abc248d34 + SHA256: 28832f4c198f7ee3909ee01d30aac7a3ec4eb1968f8f2db22b0b052329c3075c + SHA512: 87290ab55ff51bf48e8f8b419ab24170cef7eee458b8b684dc64ce60dceca8a1e9d527975b032e89c693880c22a57853d5fc93e247c38682320c8831006c48ca + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.zip) + + SIZE: 16652733 bytes + MD5: 06bcee40bb2da9408c41ac3e49918f1f + SHA256: 855981e029d90092f56f540b0e32f27aaa788db53f6e554abfb24982bf537909 + SHA512: d6b06edcab5f6b70810f838ba942ec5072f7018c0b21709884126d997bbd06028ef74f4b2f7bf439255e165599ee6a94e097bcfc52b72d5cfbf16b2e4476316f + + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2014-10-27-changing-default-settings-of-ext-openssl.md b/fa/news/_posts/2014-10-27-changing-default-settings-of-ext-openssl.md new file mode 100644 index 0000000000..389749522e --- /dev/null +++ b/fa/news/_posts/2014-10-27-changing-default-settings-of-ext-openssl.md @@ -0,0 +1,126 @@ +--- +layout: news_post +title: "Changed default settings of ext/openssl" +author: "usa" +translator: +date: 2014-10-27 12:00:00 +0000 +tags: security +lang: en +--- + +We changed the default setting of ext/openssl in Ruby 2.1.4, Ruby 2.0.0-p594 and Ruby 1.9.3-p550. +With this change, insecure SSL/TLS options are now disabled by default. +However, by this change, there is a possibility of some problems in the SSL connection. + +## Details + +OpenSSL still implements protocols and ciphers that are considered insecure today by historical circumstances. +Like POODLE vulnerability ([CVE-2014-3566](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3566)), if you continue to use OpenSSL with such insecure features, you may not be able to keep the safety of network communication. +So, based on the discussion in [Bug #9424](https://bugs.ruby-lang.org/issues/9424), we have decided to disable such insecure SSL/TLS options by default. +If you need to cancel this change (shown below), apply the reverse patch to revoke it. + +2.1.4 +: [r48098](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48098&view=revision) + +2.0.0-p594 +: [r48110](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48110&view=revision) + +1.9.3-p550 +: [r48121](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48121&view=revision) + +However, if you cancel this change, there is a risk that you can not guarantee the safety of network communication. +You should understand the implications of this change before removing it. + +### Bundled libraries of Ruby + +This change is reflected in net/http, net/imap and net/pop. +Since DRb and WEBrick receive the setting separately, this change does not effect them. + +### Scripts that use ext/openssl directly + +This change is reflected when an `OpenSSL::SSL::SSLContext` object is instantiated and the instance method `set_params` is called. + +In particular, code such as: + +{% highlight ruby %} +ctx = OpenSSL::SSL::SSLContext.new +ctx.set_params # if you want to change some options, such as cert store, verify mode and so on, you can pass such parameters within a hash +ssl = OpenSSL::SSL::SSLSocket.new(socket, ctx) +{% endhighlight %} + +When using ext/openssl as a client side, we assume that there may be no problem with this change. +However, if you are using ext/openssl as a server side and reflect this change, some old clients (Internet Explorer 6 on Windows XP, browsers in old cellular phones, etc.) may not be able to connect to the server. + +It is your decision whether to enable this change or not, consider the trade-offs. + +## Workaround + +If you cannot update Ruby but you have to cope to insecure SSL/TLS options, apply the following monkey-patch: + +{% highlight ruby %} +module OpenSSL + module SSL + class SSLContext + remove_const(:DEFAULT_PARAMS) + DEFAULT_PARAMS = { + :ssl_version => "SSLv23", + :verify_mode => OpenSSL::SSL::VERIFY_PEER, + :ciphers => %w{ + ECDHE-ECDSA-AES128-GCM-SHA256 + ECDHE-RSA-AES128-GCM-SHA256 + ECDHE-ECDSA-AES256-GCM-SHA384 + ECDHE-RSA-AES256-GCM-SHA384 + DHE-RSA-AES128-GCM-SHA256 + DHE-DSS-AES128-GCM-SHA256 + DHE-RSA-AES256-GCM-SHA384 + DHE-DSS-AES256-GCM-SHA384 + ECDHE-ECDSA-AES128-SHA256 + ECDHE-RSA-AES128-SHA256 + ECDHE-ECDSA-AES128-SHA + ECDHE-RSA-AES128-SHA + ECDHE-ECDSA-AES256-SHA384 + ECDHE-RSA-AES256-SHA384 + ECDHE-ECDSA-AES256-SHA + ECDHE-RSA-AES256-SHA + DHE-RSA-AES128-SHA256 + DHE-RSA-AES256-SHA256 + DHE-RSA-AES128-SHA + DHE-RSA-AES256-SHA + DHE-DSS-AES128-SHA256 + DHE-DSS-AES256-SHA256 + DHE-DSS-AES128-SHA + DHE-DSS-AES256-SHA + AES128-GCM-SHA256 + AES256-GCM-SHA384 + AES128-SHA256 + AES256-SHA256 + AES128-SHA + AES256-SHA + ECDHE-ECDSA-RC4-SHA + ECDHE-RSA-RC4-SHA + RC4-SHA + }.join(":"), + :options => -> { + opts = OpenSSL::SSL::OP_ALL + opts &= ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS if defined?(OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS) + opts |= OpenSSL::SSL::OP_NO_COMPRESSION if defined?(OpenSSL::SSL::OP_NO_COMPRESSION) + opts |= OpenSSL::SSL::OP_NO_SSLv2 if defined?(OpenSSL::SSL::OP_NO_SSLv2) + opts |= OpenSSL::SSL::OP_NO_SSLv3 if defined?(OpenSSL::SSL::OP_NO_SSLv3) + opts + }.call + } + end + end +end +{% endhighlight %} + +## Affected versions of this change + +* Ruby 1.9.3 patchlevel 550 and later +* Ruby 2.0.0 patchlevel 594 and later +* Ruby 2.1.4 and later +* revision 48097 and later of trunk + +## History + +* Originally published at 2014-10-27 12:00:00 (UTC) diff --git a/fa/news/_posts/2014-10-27-rexml-dos-cve-2014-8080.md b/fa/news/_posts/2014-10-27-rexml-dos-cve-2014-8080.md new file mode 100644 index 0000000000..f831c27830 --- /dev/null +++ b/fa/news/_posts/2014-10-27-rexml-dos-cve-2014-8080.md @@ -0,0 +1,109 @@ +--- +layout: news_post +title: "CVE-2014-8080: Denial of Service XML Expansion" +author: "zzak" +translator: +date: 2014-10-27 12:00:00 +0000 +tags: security +lang: en +--- + +Unrestricted entity expansion can lead to a DoS vulnerability in REXML. +This vulnerability has been assigned the CVE identifier +[CVE-2014-8080](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8080). +We strongly recommend to upgrade Ruby. + +## Details + +When reading text nodes from an XML document, the REXML parser can be +coerced into allocating extremely large string objects which can +consume all of the memory on a machine, causing a denial of service. + +Impacted code will look something like this: + +{% highlight ruby %} +require 'rexml/document' + +xml = <<XML +<!DOCTYPE root [ + # ENTITY expansion vector +]> +<cd></cd> +XML + +p REXML::Document.new(xml) +{% endhighlight %} + +All users running an affected release should either upgrade or use one +of the workarounds immediately. + +## Affected versions + +* All Ruby 1.9 versions prior to Ruby 1.9.3 patchlevel 550 +* All Ruby 2.0 versions prior to Ruby 2.0.0 patchlevel 594 +* All Ruby 2.1 versions prior to Ruby 2.1.4 +* prior to trunk revision 48161 + +## Workarounds + +If you cannot upgrade Ruby, use this monkey patch as a workaround on versions of Ruby 2.1.0+: + +{% highlight ruby %} +class REXML::Entity + def value + if @value + matches = @value.scan(PEREFERENCE_RE) + rv = @value.clone + if @parent + sum = 0 + matches.each do |entity_reference| + entity_value = @parent.entity( entity_reference[0] ) + if sum + entity_value.bytesize > Security.entity_expansion_text_limit + raise "entity expansion has grown too large" + else + sum += entity_value.bytesize + end + rv.gsub!( /%#{entity_reference.join};/um, entity_value ) + end + end + return rv + end + nil + end +end +{% endhighlight %} + +For versions of Ruby older than 2.1.0, you can use the following monkey patch: + +{% highlight ruby %} +class REXML::Entity + def value + if @value + matches = @value.scan(PEREFERENCE_RE) + rv = @value.clone + if @parent + sum = 0 + matches.each do |entity_reference| + entity_value = @parent.entity( entity_reference[0] ) + if sum + entity_value.bytesize > Document.entity_expansion_text_limit + raise "entity expansion has grown too large" + else + sum += entity_value.bytesize + end + rv.gsub!( /%#{entity_reference.join};/um, entity_value ) + end + end + return rv + end + nil + end +end +{% endhighlight %} + +## Credits + +Thanks to Willis Vandevanter for reporting this issue. + +## History + +* Originally published at 2014-10-27 12:00:00 (UTC) diff --git a/fa/news/_posts/2014-10-27-ruby-1-9-3-p550-is-released.md b/fa/news/_posts/2014-10-27-ruby-1-9-3-p550-is-released.md new file mode 100644 index 0000000000..4902c45ea5 --- /dev/null +++ b/fa/news/_posts/2014-10-27-ruby-1-9-3-p550-is-released.md @@ -0,0 +1,65 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p550 Released" +author: "usa" +translator: +date: 2014-10-27 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 1.9.3-p550. + +This release includes a security fix for DoS vulnerability of REXML. + +* [CVE-2014-8080: Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) + +This release also includes the change of default settings of ext/openssl. +Insecure SSL/TLS options are now turned off by default. + +* [Changed default settings of ext/openssl](https://www.ruby-lang.org/en/news/2014/10/27/changing-default-settings-of-ext-openssl/) + +And, in addition, bundled jQuery for darkfish template of RDoc is also updated. + + +## Notice + +Ruby 1.9.3 is now in the security maintenance phase. +This means that we never fix bugs except about security issues. +And, at this time, the end of the maintenance of 1.9.3 has been scheduled for February next year. +We recommend that users of Ruby 1.9.3 should migrate to a newer version as soon as possible. + + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.bz2) + + SIZE: 10053787 bytes + MD5: c2169c8b14ccefd036081aba5ffa96da + SHA256: d3da003896db47fb10ba4d2e0285eea7fe8cdc785b86c02ebad5bc9cdeaa4748 + SHA512: 38767e98df25484f7292437f3cb0f798b3a43e9a7414a5401677e96ad1cc367cb3fa23ac3abe568d5bf2b2ca553713469a8770d41b79bc63daf3fa59cb4e15c6 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.gz) + + SIZE: 12605180 bytes + MD5: e05135be8f109b2845229c4f47f980fd + SHA256: d6cf008d9f3a9aeed2ef04428f19d66e28aed8a71456f7edba68627d3302cd6b + SHA512: 420d4f9fe027ffc3ec5cc4ea19cf6e1f1473199ee4af06ef364c08f4a04bf65e253b32e76f37370b8e56ad2e26d0c09e6fa5b1f7c0b407b0c68b63acd2cce975 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.xz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.xz) + + SIZE: 7714228 bytes + MD5: c0261155faec6cfc9aa16790ee56448f + SHA256: c87f04392010ec7f01b12dcbb6d985c61d5f481e71d2a7b25b5f1e72d2d61faa + SHA512: cd68e60e01c31642fac08d88846dd8ce9ba287d8322f779490a4e016611090af0cbdee5be4ac611c5468cab90c6a2cdfe2a08c0c05106b6fe61c1253e49273d5 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.zip) + + SIZE: 13987149 bytes + MD5: 4946e5f3d083894372a7a46342e885f7 + SHA256: 6e7eceddca615c19f81c125f9864de3570b9687df858cfb27298d867521d5beb + SHA512: 0daa8fafa950f1e6ddf79815a615c7d730d234042718bd70e8211e4c23d7cc93126c924ad42673844c3a8cb908bf02a8d03ae2857658a027935f46c13bb17a13 + +## Release Comment + +I'm grateful to everybody who supports Ruby. +Thank you. diff --git a/fa/news/_posts/2014-10-27-ruby-2-0-0-p594-is-released.md b/fa/news/_posts/2014-10-27-ruby-2-0-0-p594-is-released.md new file mode 100644 index 0000000000..60ac960596 --- /dev/null +++ b/fa/news/_posts/2014-10-27-ruby-2-0-0-p594-is-released.md @@ -0,0 +1,58 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p594 Released" +author: "usa" +translator: +date: 2014-10-27 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.0.0-p594. + +This release includes a security fix for DoS vulnerability of REXML. + +* [CVE-2014-8080: Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) + +This release also includes the change of default settings of ext/openssl. +Insecure SSL/TLS options are now turned off by default. + +* [Changed default settings of ext/openssl](https://www.ruby-lang.org/en/news/2014/10/27/changing-default-settings-of-ext-openssl/) + +And, many bug fixes are also included. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_594/ChangeLog) for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.bz2) + + SIZE: 10756895 bytes + MD5: 58469c0daf5f3a892a70cc674ea59c7f + SHA256: e5aee3cf36898315f87771a5e657c81befb88b6afa585b70aaa57c47cc0e99a4 + SHA512: 8301a51c73fb63a8cfeb14af47d0c18b5bc3c45e3d62fc2ed56a673a1cd6b0015c41f275e70eb14a9e40036b1530977199321e05285e107a6adf58514bef1b3d + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.gz) + + SIZE: 13606970 bytes + MD5: a9caa406da5d72f190e28344e747ee74 + SHA256: ee515dd7b17cdbc106396cd432f5662bb0b5afc05044469175914aab65f3c6e7 + SHA512: a6544f68a87aa3d00a59cee8c090386cf1fa6d6bfe5730af909d614e90bff9ee64c2cf9f542f7a43f8352b86e3945693504ffed6cefc57f736c6e26670ddb9ca + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.xz) + + SIZE: 8316772 bytes + MD5: fc64932b4d4af0f91c03d7966fbbc9b2 + SHA256: 561465447428a5bc52ed3cca98c6067948b2c81811e1445a196b1c24913b3e72 + SHA512: d5ba88dd5eb3569203cbe91e75bf21bea6897338885479e34a839569de15ca2f09e4eff655636923892e9234a0f0b6a2c058442ebc1b13a3d2ddced25bd88fa8 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.zip) + + SIZE: 15125232 bytes + MD5: d5801bbe794a07236c3bcf4a28ad3509 + SHA256: 38a8db127d5b241ac2090ef75e9f7941a34851d4c6b61135b88019129f9c04a3 + SHA512: 1f7d94029e5af480a0ae0ebd21129a01b0066fecd15278b272754e6e80b6a6fb1ded53fd1288e7375a17021d482a59b40414270923c2ecfb06999ea66a91fc54 + +## Release Comment + +I'm grateful to everybody who supports Ruby. +Thank you. diff --git a/fa/news/_posts/2014-10-27-ruby-2-1-4-released.md b/fa/news/_posts/2014-10-27-ruby-2-1-4-released.md new file mode 100644 index 0000000000..8e5017f302 --- /dev/null +++ b/fa/news/_posts/2014-10-27-ruby-2-1-4-released.md @@ -0,0 +1,71 @@ +--- +layout: news_post +title: "Ruby 2.1.4 Released" +author: "nagachika" +translator: +date: 2014-10-27 12:00:00 +0000 +lang: en +--- + +Ruby 2.1.4 has been released. + +This release includes security fixes for the following vulnerabilities: + +* [CVE-2014-8080: Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) +* [Changed default settings of ext/openssl related to CVE-2014-3566](https://www.ruby-lang.org/en/news/2014/10/27/changing-default-settings-of-ext-openssl/) + +And there are some bug-fixes. + +See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_4/ChangeLog) +for details. + +**Update:** There was a regression introduced in 2.1.3 that is now fixed: + +{% highlight irb %} +>> { key: if true then 0 else 1 end } +SyntaxError: (irb):1: syntax error, unexpected modifier_if +{ key: if true then 0 else 1 end } + ^ +{% endhighlight %} + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.bz2) + + SIZE: 11992171 bytes + MD5: f4136e781d261e3cc20748005e1740b7 + SHA256: f37f11a8c75ab9215bb9f61246ef98e0e57e1409f0872e5cf59033edcf5b8d2a + SHA512: 68db1567751166c5e7d24b6e5015124b8a15568c50556e1f429486395352fa56c4a195a74820ab135697924149d014b445b345a1b9755678aaf824fba79c606b + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.gz) + + SIZE: 15127418 bytes + MD5: 89b2f4a197621346f6724a3c35535b19 + SHA256: bf9952cdeb3a0c6a5a27745c9b4c0e5e264e92b669b2b08efb363f5156549204 + SHA512: 7a6c70ec60db9866d5988e53c75e5c7e7288d68d87ba74ad317a0f74be79b387d05f665d9273d24dc64edc011d396b6396d2c7b1de6fd6a03569103e5acdcc36 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.xz) + + SIZE: 9392500 bytes + MD5: 99aa2b01240d91edaecc2fc9d8254e44 + SHA256: e1cc5cbbcaa8644e282f04763d96057ddd6f443338a5019200e8726273e84fcf + SHA512: b0fbecca0ffec8f6a3c5d27f62087628b8a79874b7bdbfd8ce39cfc5b6f5cb4da2f8a3e6031abae9c59273cf629f41cf5987e2a5f4c083b0f3a3b02eeb5d7dca + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.zip) + + SIZE: 16656312 bytes + MD5: 71c7afca08734f0105a06d2feea11422 + SHA256: bdb26a725e1fd7982f12d5390209064687def61c330b92597322e3898131391e + SHA512: 7fd8d13810a4336dc498a6eb05e140825d52eca0317d0848152688060b95ce4c79ab6a10cf14ab2499ae559fb4676d86538eacd94fb262c16795067fb4f47614 + + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us to make this release. +Thanks for their contributions. + +## History + +* Update published at 2014-10-27 21:00:00 (UTC) +* Originally published at 2014-10-27 12:00:00 (UTC) diff --git a/fa/news/_posts/2014-11-03-tropicalrb-2015-cfp.md b/fa/news/_posts/2014-11-03-tropicalrb-2015-cfp.md new file mode 100644 index 0000000000..cc6a64719e --- /dev/null +++ b/fa/news/_posts/2014-11-03-tropicalrb-2015-cfp.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "Tropical Ruby 2015 CFP is open" +author: "Guilherme Cavalcanti" +translator: +date: 2014-11-03 15:20:57 +0000 +lang: en +--- + +[Tropical Ruby 2015](http://tropicalrb.com), the beach Ruby conference, +will take place during March 5–8th at Porto de Galinhas, +a paradisiac beach located in the Brazilian northeast coast. + +[Avdi Grimm](https://twitter.com/avdi) and +[Nick Sutterer](https://twitter.com/apotonick) are confirmed keynotes but the +[CFP is still open](http://cfp.tropicalrb.com/events/tropicalrb-2015). +If you want to give a talk or workshop, submit your proposal until December 7th. + +Enjoy amazing conversations, stunning landscapes and a superb nature. +Come and talk with some of the best Rubyists in this tropical conference. diff --git a/fa/news/_posts/2014-11-13-rexml-dos-cve-2014-8090.md b/fa/news/_posts/2014-11-13-rexml-dos-cve-2014-8090.md new file mode 100644 index 0000000000..96a0ab8043 --- /dev/null +++ b/fa/news/_posts/2014-11-13-rexml-dos-cve-2014-8090.md @@ -0,0 +1,74 @@ +--- +layout: news_post +title: "CVE-2014-8090: Another Denial of Service XML Expansion" +author: "usa" +translator: +date: 2014-11-13 12:00:00 +0000 +tags: security +lang: en +--- + +Unrestricted entity expansion can lead to a DoS vulnerability in REXML, like +["Entity expansion DoS vulnerability in REXML (XML bomb, CVE-2013-1821)"](https://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/) +and ["CVE-2014-8080: Parameter Entity expansion DoS vulnerability in REXML"](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/). +This vulnerability has been assigned the CVE identifier +[CVE-2014-8090](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8090). +We strongly recommend to upgrade Ruby. + +## Details + +This is an additional fix for +[CVE-2013-1821](https://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/) +and [CVE-2014-8080](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/). +The previous patches fixed recursive expansions in a number of places and +the total size of created Strings. However, they did not take into account the former +limit used for entity expansion. 100% CPU utilization can occur as a result +of recursive expansion with an empty String. +When reading text nodes from an XML document, the REXML parser can be coerced +into allocating extremely large string objects which can consume all of the +memory on a machine, causing a denial of service. + +Impacted code will look something like this: + +{% highlight ruby %} +require 'rexml/document' + +xml = <<XML +<!DOCTYPE root [ + # ENTITY expansion vector +]> +<cd></cd> +XML + +p REXML::Document.new(xml) +{% endhighlight %} + +All users running an affected release should either upgrade or use one +of the workarounds immediately. + +## Affected versions + +* All Ruby 1.9 versions prior to Ruby 1.9.3 patchlevel 551 +* All Ruby 2.0 versions prior to Ruby 2.0.0 patchlevel 598 +* All Ruby 2.1 versions prior to Ruby 2.1.5 +* prior to trunk revision 48402 + +## Workarounds + +If you cannot upgrade Ruby, use this monkey patch as a workaround: + +{% highlight ruby %} +class REXML::Document + def document + self + end +end +{% endhighlight %} + +## Credits + +Thanks to Tomas Hoger for reporting this issue. + +## History + +* Originally published at 2014-11-13 12:00:00 UTC diff --git a/fa/news/_posts/2014-11-13-ruby-1-9-3-p551-is-released.md b/fa/news/_posts/2014-11-13-ruby-1-9-3-p551-is-released.md new file mode 100644 index 0000000000..4b11943a32 --- /dev/null +++ b/fa/news/_posts/2014-11-13-ruby-1-9-3-p551-is-released.md @@ -0,0 +1,63 @@ +--- +layout: news_post +title: "Ruby 1.9.3-p551 Released" +author: "usa" +translator: +date: 2014-11-13 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 1.9.3-p551. + +This release includes a security fix for a DoS vulnerability of REXML. +It is similar to the +[fixed vulnerability](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) +in the [previous release](https://www.ruby-lang.org/en/news/2014/10/27/ruby-1-9-3-p550-is-released/), +but this handles another case for entity expansion. +Please view the topic below for more details. + +* [CVE-2014-8090: Another Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/11/13/rexml-dos-cve-2014-8090/) + + +## Notice + +Ruby 1.9.3 is now in the security maintenance phase. +This means that we never fix bugs except for security issues. +And, at this time, the end of the maintenance of 1.9.3 has been scheduled for February next year. +We recommend that users of Ruby 1.9.3 should migrate to a newer version as soon as possible. + + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2) + + SIZE: 10049332 bytes + MD5: 0d8b272b05c3449dc848bb7570f65bfe + SHA256: b0c5e37e3431d58613a160504b39542ec687d473de1d4da983dabcf3c5de771e + SHA512: 5ea40f8c40cf116030ffdedbe436c1fdbf9a50b7bb44bc890845c9c2a885c34da711bc1a9e9694788c2f4710f7e6e0adc4410aec1ab18a25a27168f25ac3d68c + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.gz) + + SIZE: 12605119 bytes + MD5: 0d8212f7bc89bab8ef521b04cd9df278 + SHA256: bb5be55cd1f49c95bb05b6f587701376b53d310eb1bb7c76fbd445a1c75b51e8 + SHA512: be12adf581ee76af70db117b44c6647c1df3d28fffa1b3379c6067e4aa1fb523dae7c9b130a51dcdcff268a8ee21a3d74f6f946135fb3ac6b90664f0a9df4a08 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.xz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.xz) + + SIZE: 7704072 bytes + MD5: 7367b1dfb2ba1d6abf6fd7db70e765f5 + SHA256: 44228297861f4dfdf23a47372a3e3c4c5116fbf5b0e10883417f2379874b55c6 + SHA512: 2dd4cd7494d0d9b1cc2a5c3710a2c771617a367d1ba6f5099adc2785e37efcb668c6508780562359a4a4c83733e349aa5cb4f8532e1f334f9f96543670d35729 + +* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.zip) + + SIZE: 13987275 bytes + MD5: 14a394b1d7b7031b34d4d1af64ee657e + SHA256: cf468ccabd5cdef5047b8f02f4f71052fd3a9c87c12aba314f04748a451a63ec + SHA512: 6ee550c7e435622114e3669393220a90946652eade0a83dab74970fff7088d5c2051bee9c272e2e6eccc36885b4f64928fc2d27c36584c1cc8dac91ce730d3ea + +## Release Comment + +Sorry for the inconvenience of releasing frequently. +Thanks to everyone who helped with the release. diff --git a/fa/news/_posts/2014-11-13-ruby-2-0-0-p598-is-released.md b/fa/news/_posts/2014-11-13-ruby-2-0-0-p598-is-released.md new file mode 100644 index 0000000000..791346e257 --- /dev/null +++ b/fa/news/_posts/2014-11-13-ruby-2-0-0-p598-is-released.md @@ -0,0 +1,59 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p598 Released" +author: "usa" +translator: +date: 2014-11-13 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.0.0-p598. + +This release includes a security fix for a DoS vulnerability of REXML. +It is similar to the +[fixed vulnerability](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) +in the [previous release](https://www.ruby-lang.org/en/news/2014/10/27/ruby-2-0-0-p594-is-released/), +but this handles another case for entity expansion. +Please view the topic below for more details. + +* [CVE-2014-8090: Another Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/11/13/rexml-dos-cve-2014-8090/) + +And, some bug fixes are also included. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_598/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.bz2) + + SIZE: 10758882 bytes + MD5: a3f3908103a7d209d1d1cf4712e3953c + SHA256: 67b2a93690f53e12b635ba1bcdbd41e8c5593f13d575fea92fdd8801ca088f0f + SHA512: 10026a04e01a8ad14ea9c99bbdf4f7d04029b73ee0c01bbf6c2eb2817332d49adacf127b646693b67b5dd7010eaf3b696b23b6335cc0f7ee5a6b56dbba0f6f82 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.gz) + + SIZE: 13608640 bytes + MD5: e043a21ce0d138fd408518a80aa31bba + SHA256: 4136bf7d764cbcc1c7da2824ed2826c3550f2b62af673c79ddbf9049b12095fd + SHA512: 0548aba9bf45e380e5f73e73168ea7fea341fc9739e108c7d530d11b677f6a78b2c4e29062d16a73b4286acaa2333ed20cb34e16b65b5b6898da66661f1717da + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.xz) + + SIZE: 8316092 bytes + MD5: 2ec36f7018eef05003bf8cf0e0f05def + SHA256: 9dccf4c30e1bb004b18cb1129d9daac3c0ec510a671f4f4f13a2747897ffab35 + SHA512: bf7b93d9fbaab98a64d1f45c3f3bbcdfebd3e1d0584dfb27696b2716d93c2ba13881e1edaef6d3eccd769ac2e21d6157024c902f3d891951a20b972c1942ef99 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.zip) + + SIZE: 15126384 bytes + MD5: aa6ac22747947e6562d5b0dc9767ecda + SHA256: d5bdafd7b0fbd4254902ba10385c6e5812beac4ad221805aa4d92a37eff47f97 + SHA512: 6cdaf7f2d27a5f0ead9b94325b9c9fe90cf04c64dedaea8e1d45a8855a73ad61c5c72f1fda835eab73693c25c15a74c7e4e639ed5c18a9433dd79e398600b3ea + +## Release Comment + +Sorry for the inconvenience of releasing frequently. +Thanks to everyone who helped with the release. diff --git a/fa/news/_posts/2014-11-13-ruby-2-1-5-is-released.md b/fa/news/_posts/2014-11-13-ruby-2-1-5-is-released.md new file mode 100644 index 0000000000..6695967d62 --- /dev/null +++ b/fa/news/_posts/2014-11-13-ruby-2-1-5-is-released.md @@ -0,0 +1,58 @@ +--- +layout: news_post +title: "Ruby 2.1.5 Released" +author: "nagachika" +translator: +date: 2014-11-13 12:00:00 +0000 +lang: en +--- + +Ruby 2.1.5 has been released. + +This release includes a security fix for a DoS vulnerability of REXML. +It is similar to the +[fixed vulnerability](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) +in the [previous release](https://www.ruby-lang.org/en/news/2014/10/27/ruby-2-1-4-released/), +but new and different from it. + +* [CVE-2014-8090: Another Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/11/13/rexml-dos-cve-2014-8090/) + +And, some bug fixes are also included. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_5/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.bz2) + + SIZE: 11994454 bytes + MD5: a7c3e5fec47eff23091b566e9e1dac1b + SHA256: 0241b40f1c731cb177994a50b854fb7f18d4ad04dcefc18acc60af73046fb0a9 + SHA512: d4b1e3c2b6a0dc79846cce056043c48a2a2a97599c76e9a07af21a77fd10e04c8a34f3a60b6975181bff17b2c452af874fa073ad029549f3203e59095ab70196 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz) + + SIZE: 15127433 bytes + MD5: df4c1b23f624a50513c7a78cb51a13dc + SHA256: 4305cc6ceb094df55210d83548dcbeb5117d74eea25196a9b14fa268d354b100 + SHA512: a7da8dc755e5c013f42269d5e376906947239b41ece189294d4355494a0225590ca73b85261ddd60292934a8c432231c2308ecfa137ed9e347e68a2c1fc866c8 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.xz) + + SIZE: 9371780 bytes + MD5: 8a30ed4b022a24acbb461976c9c70789 + SHA256: 22ba1eb8d475c9ed7e0541418d86044c1ea4c093ab79c300c38fc0f721afe9a3 + SHA512: 8a257da64158d49bc2810695baf4b5849ef83e3dde452bf1e4823e52e8261225427d729fce2fb4e9b53d6d17ca9c96d491f242535c2f963738b74f90944e2a0b + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.zip) + + SIZE: 16657694 bytes + MD5: 810cd05eb03c00f89b0b03b10e9a3606 + SHA256: 69c517a6d3ea65264455a9316719ffdec49cf6a613a24fd89b3f6da7146a8aa7 + SHA512: a55cf5970203904e7bc8cef2b6fbf7b8d5067a160289a1a49d13c4dfef8c95002bcdf697f5d04d420ef663efad5ee80d5a9e4e7445c4db9a02f9cbc9e4b8444e + +## Release Comment + +Sorry for the inconvenience of frequent releases. +Thanks to everyone who gave the cooperation to release. diff --git a/fa/news/_posts/2014-11-28-ruby-2-2-0-preview2-released.md b/fa/news/_posts/2014-11-28-ruby-2-2-0-preview2-released.md new file mode 100644 index 0000000000..0d026bfb8c --- /dev/null +++ b/fa/news/_posts/2014-11-28-ruby-2-2-0-preview2-released.md @@ -0,0 +1,94 @@ +--- +layout: news_post +title: "Ruby 2.2.0-preview2 Released" +author: "naruse" +translator: +date: 2014-11-28 09:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.2.0-preview2. + +Ruby 2.2.0-preview2 is the second preview of Ruby 2.2.0. +Many new features and improvements are included for the increasingly +diverse and expanding demands for Ruby. + +For example, Symbol GC makes Symbols garbage collectable. +This reduces memory usage of Symbols; because GC couldn't collect Symbols before +Ruby 2.2. Since Rails 5.0 will require Symbol GC, it will support only Ruby 2.2 +or later. (See [Rails' blog post](http://weblog.rubyonrails.org/2014/8/20/Rails-4-2-beta1/) for details.) + +Also, new Incremental GC decreases pause time of garbage collection, which is also helpful for running Rails applications. + +Another feature related to memory management is adding an option for configure.in to use jemalloc +[Feature #9113](https://bugs.ruby-lang.org/issues/9113). +This is an experimental feature, and is disabled by default. +We need to gather use cases and performance data. +When we get convinced of the benefits, the feature will be enabled by default. + +One more topic is [using vfork(2) in system() and spawn() (Japanese)](http://www.a-k-r.org/d/2014-09.html#a2014_09_06). +It is expected that it brings a huge speed-up when a large process executes external commands many times. +But vfork(2) is a risky system call. +We want to know how much benefit it brings through gathering use cases and performance data. + +Try and enjoy programming with Ruby 2.2.0-preview2, and report us your knowledge! + +## Notable Changes since 2.1 + +* [Incremental GC](https://bugs.ruby-lang.org/issues/10137) ([YARV Maniacs No.12](http://magazine.rubyist.net/?0048-YARVManiacs)) +* [Symbol GC](https://bugs.ruby-lang.org/issues/9634) ([presentation at RubyKaigi 2014](http://www.slideshare.net/authorNari/symbol-gc)) +* configure --with-jemalloc [Feature #9113](https://bugs.ruby-lang.org/issues/9113) +* core libraries: + * Support Unicode 7.0 [#9092](https://bugs.ruby-lang.org/issues/9092) + * New methods: + * Enumerable#slice_after [#9071](https://bugs.ruby-lang.org/issues/9071), Enumerable#slice_when [#9826](https://bugs.ruby-lang.org/issues/9826) + * Float#next_float, Float#prev_float [#9834](https://bugs.ruby-lang.org/issues/9834) + * File.birthtime, File#birthtime [#9647](https://bugs.ruby-lang.org/issues/9647) + * String#unicode_normalize [#10084](https://bugs.ruby-lang.org/issues/10084) +* bundled libraries: + * Update Psych 2.0.6 + * Update Rake 10.4.0 + * Update RDoc 4.2.0.alpha (21b241a) + * Update RubyGems 2.4.4+ (2f6e42e) + * rubygems 2.4.4+ (2f6e42e) + * Update test-unit 3.0.7 (removed from repository but bundled +in tarball) + * Update minitest 5.4.3 (removed from repository but bundled in tarball) + * Deprecate mathn +* C API + * Remove deprecated APIs + +See [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_2_0_preview2/NEWS) for details. + +With those changes, 1239 files changed, 98343 insertions(+), 61858 deletions(-). + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview2.tar.bz2> + * SIZE: 12505279 bytes + * MD5: d7abace25a8ffe861cb2807bef1c58a6 + * SHA256: 9e49583f3fad3888fefc85b719fdb210a88ef54d80f9eac439b7ca4232fa7f0b + * SHA512: c654d4c047f9463a5fb81eaea0fa5ab7bf316962bc7fb0fb356861e6336ce8ce2162c7779d8b27f72d7bc0e9604b5e5af2910abcb0b0a1f197b3138eaddfd4a5 +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview2.tar.gz> + * SIZE: 15505521 bytes + * MD5: bde388d6f10012a92d5dc36196fd6755 + * SHA256: dfcef7b01bd3acb41da6689993ac8dd30e2ecd4fd14bc1a833f46188a9fe2614 + * SHA512: e2d316a679c15c021e40b0f9b7810b319c6a5e771a9b869fda35b6745aecac881bbb05d62192893799816a8673e05c8f17713f10ccdec077f546483608ab85c1 +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview2.tar.xz> + * SIZE: 9649216 bytes + * MD5: 0d582e28b92ce9d1456e40fb8d821422 + * SHA256: d14d1fa045263fa242a515d7b9e8c485bf8a9ee9d9d3012dc2b6add0f3a370c6 + * SHA512: 4a8a75ab21b2bd43db4a22d9c63f189f3c7805d575d662b07a4ddc25aa5b156b0c23053d8c48eecf23d5e22f1ea7131467f1cdc48f9ae0a83214b4cd46b08491 +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview2.zip> + * SIZE: 17239396 bytes + * MD5: d94160c214016863932c25cc1ac6ff90 + * SHA256: 88d6c73ee1a4f5fe1f8ad37fe1f56c1ca50622f1338c20b9d46bbb5c2cd94040 + * SHA512: 0a021d31f54c47c5c3901ef6f2ab02a1bfb5cc698f971978c1e16b1aeda78fdadec0c1cdd48af1c8784b8f72ad00d35cf2433d78e20d4447fa0630e02b4e3917 + +## Release Comment + +* [2.2.0 Known issues](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=115) + +See also the release schedule and other information: + +[ReleaseEngineering22](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering22) diff --git a/fa/news/_posts/2014-12-18-ruby-2-2-0-rc1-released.md b/fa/news/_posts/2014-12-18-ruby-2-2-0-rc1-released.md new file mode 100644 index 0000000000..47aeb2171a --- /dev/null +++ b/fa/news/_posts/2014-12-18-ruby-2-2-0-rc1-released.md @@ -0,0 +1,91 @@ +--- +layout: news_post +title: "Ruby 2.2.0-rc1 Released" +author: "naruse" +translator: +date: 2014-12-18 09:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.2.0-rc1. +After RC1, all changes will be limited to bug fix only. +The final release of Ruby 2.2.0 is scheduled on December 25, 2014. + +Ruby 2.2 includes many new features and improvements for the increasingly +diverse and expanding demands for Ruby. + +For example, Ruby's Garbage Collector is now able to collect Symbol type objects. +This reduces memory usage of Symbols; because GC was previously unable to collect them before 2.2. +Since Rails 5.0 will require Symbol GC, it will support only Ruby 2.2 or later. +(See [Rails 4.2 release post](http://weblog.rubyonrails.org/2014/12/19/Rails-4-2-final/) for details.) + +Also, a reduced pause time thanks to the new Incremental Garbage Collector will be helpful for running Rails applications. Recent developments mentioned on the [Rails blog](http://weblog.rubyonrails.org/) suggest that Rails 5.0 will take advantage of Incremental GC as well as Symbol GC. + +Another feature related to memory management is an additional option for `configure.in` to use jemalloc +[Feature #9113](https://bugs.ruby-lang.org/issues/9113). +This feature is still experimental and currently disabled by default until we gather performance data and more use cases. When we are convinced of the benefits, this feature will be enabled by default. + +Experimental support for using vfork(2) with system() and spawn() have also been added. You can read more detail on [tanaka-san's blog in japanese](http://www.a-k-r.org/d/2014-09.html#a2014_09_06). +This could potentially bring huge speed-up when a large process executes external commands many times. +However vfork(2) is still not well understood and a potentially harmful system call. We would like to experiment to find out how much benefit can be gained by gathering performance data and use cases. + +Try and enjoy programming with Ruby 2.2.0-rc1, and report us your findings! + +## Notable Changes since 2.1 + +* [Incremental GC](https://bugs.ruby-lang.org/issues/10137) ([YARV Maniacs No.12](http://magazine.rubyist.net/?0048-YARVManiacs)) +* [Symbol GC](https://bugs.ruby-lang.org/issues/9634) ([presentation at RubyKaigi 2014](http://www.slideshare.net/authorNari/symbol-gc)) +* configure --with-jemalloc [Feature #9113](https://bugs.ruby-lang.org/issues/9113) +* core libraries: + * Support Unicode 7.0 [#9092](https://bugs.ruby-lang.org/issues/9092) + * New methods: + * Enumerable#slice_after [#9071](https://bugs.ruby-lang.org/issues/9071), Enumerable#slice_when [#9826](https://bugs.ruby-lang.org/issues/9826) + * Float#next_float, Float#prev_float [#9834](https://bugs.ruby-lang.org/issues/9834) + * File.birthtime, File#birthtime [#9647](https://bugs.ruby-lang.org/issues/9647) + * String#unicode_normalize [#10084](https://bugs.ruby-lang.org/issues/10084) +* bundled libraries: + * Update Psych 2.0.8 + * Update Rake 10.4.0 + * Update RDoc 4.2.0.alpha (21b241a) + * Update RubyGems 2.4.5 + * Update test-unit 3.0.8 (removed from repository but bundled +in tarball) + * Update minitest 5.4.3 (removed from repository but bundled in tarball) + * Deprecate mathn +* C API + * Remove deprecated APIs + +See [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_2_0_rc1/NEWS) for details. + +With those changes, 1548 files changed, 123658 insertions(+), 74306 deletions(-) from v2.1.0! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-rc1.tar.bz2> + * SIZE: 12475612 bytes + * MD5: 7144732d30dd4547c0a59862b3345d54 + * SHA256: e6a1f8d45ea749bdc92eb1269b77ec475bc600b66039ff90d77db8f50820a896 + * SHA512: 181201168360bee37dceeef3481a69e8a333a5d329680031fd9d371d30ac64460bbdf4db07546133024f541774e51301f1630cfd988c5e5bf2464834f3abe6bf +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-rc1.tar.gz> + * SIZE: 15531233 bytes + * MD5: 51f218fabc3ceb7bf3fe5f4f87ddebd3 + * SHA256: a59c8db71b967015ad7c259ba8ef638c7943ec78580412bb86e97791a9322b6b + * SHA512: 4a35e78c4c0747f9c79e506e98acc117efb0be72fc103d6f9c13d5eb5efa5c6d6748f491526fc7ebb24397f25238f06d552f841e9e898be30aa7cd6c2df38494 +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-rc1.tar.xz> + * SIZE: 9675108 bytes + * MD5: 3f482b88eda45c1bc6bab1921763ce52 + * SHA256: dcfad9bb6e0b513b03f08f86b195da6a6a7045559b558d3493decac0e0abb86c + * SHA512: 3ec8955d8a269a1e5f28c3e0e6023bd613f244c83914a4a8c96d2761b11914c21ce67cfadb2bcebc480d9c0b9c7b54da6dfa67cdf4b4350db2a85d379265ffed +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-rc1.zip> + * SIZE: 17219660 bytes + * MD5: 49f5aae44c00f4d57be47576c29a53bd + * SHA256: 1bd3e83d44b4e5879b4ecdc496d19905bc03637a8c88027c2dc98a369f1ebb83 + * SHA512: bf0e39e5add532ca338095ad6eaaafbe4f84cc9df1e8d4bad986c44e17614623430c2670d9751865e8d645cb483007d5473be82536b985ccab40a7dde72c4161 + +## Release Comment + +* [2.2.0 Known issues](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=115) + +See also the release schedule and other information: + +[ReleaseEngineering22](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering22) diff --git a/fa/news/_posts/2014-12-25-ruby-2-2-0-released.md b/fa/news/_posts/2014-12-25-ruby-2-2-0-released.md new file mode 100644 index 0000000000..129bc438bc --- /dev/null +++ b/fa/news/_posts/2014-12-25-ruby-2-2-0-released.md @@ -0,0 +1,101 @@ +--- +layout: news_post +title: "Ruby 2.2.0 Released" +author: "naruse" +translator: +date: 2014-12-25 09:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.2.0. + +Ruby 2.2 includes many new features and improvements for the increasingly +diverse and expanding demands for Ruby. + +For example, Ruby's Garbage Collector is now able to collect Symbol type objects. +This reduces memory usage of Symbols; because GC was previously unable +to collect them before 2.2. +Since Rails 5.0 will require Symbol GC, it will support only Ruby 2.2 or later. +(See [Rails 4.2 release post](http://weblog.rubyonrails.org/2014/12/19/Rails-4-2-final/) for details.) + +Also, a reduced pause time thanks to the new Incremental Garbage Collector will +be helpful for running Rails applications. Recent developments mentioned on the +[Rails blog](http://weblog.rubyonrails.org/) +suggest that Rails 5.0 will take advantage of Incremental GC as well as +Symbol GC. + +Another feature related to memory management is an additional option +for `configure.in` to use jemalloc +[Feature #9113](https://bugs.ruby-lang.org/issues/9113). +This feature is still experimental and currently disabled by default until we +gather performance data and more use cases. When we are convinced of the +benefits, this feature will be enabled by default. + +Experimental support for using vfork(2) with system() and spawn() have also +been added. You can read more detail on +[tanaka-san's blog in Japanese](http://www.a-k-r.org/d/2014-09.html#a2014_09_06). +This could potentially bring huge speed-up when a large process executes +external commands many times. +However vfork(2) is still not well understood and a potentially harmful +system call. We would like to experiment to find out how much benefit can be +gained by gathering performance data and use cases. + +Try and enjoy programming with Ruby 2.2.0, and report us your findings! + +## Notable Changes since 2.1 + +* [Incremental GC](https://bugs.ruby-lang.org/issues/10137) + ([presentation at RubyConf 2014: "Incremental GC for Ruby interpreter"](http://www.atdot.net/~ko1/activities/2014_rubyconf_pub.pdf)) +* [Symbol GC](https://bugs.ruby-lang.org/issues/9634) + ([presentation at RubyKaigi 2014](http://www.slideshare.net/authorNari/symbol-gc)) +* configure --with-jemalloc + [Feature #9113](https://bugs.ruby-lang.org/issues/9113) +* core libraries: + * Support Unicode 7.0 [#9092](https://bugs.ruby-lang.org/issues/9092) + * New methods: + * Enumerable#slice_after [#9071](https://bugs.ruby-lang.org/issues/9071), + Enumerable#slice_when [#9826](https://bugs.ruby-lang.org/issues/9826) + * Float#next_float, Float#prev_float + [#9834](https://bugs.ruby-lang.org/issues/9834) + * File.birthtime, File#birthtime + [#9647](https://bugs.ruby-lang.org/issues/9647) + * String#unicode_normalize [#10084](https://bugs.ruby-lang.org/issues/10084) +* bundled libraries: + * Update Psych 2.0.8 + * Update Rake 10.4.2 + * Update RDoc 4.2.0 + * Update RubyGems 2.4.5 + * Update test-unit 3.0.8 (removed from repository but bundled in tarball) + * Update minitest 5.4.3 (removed from repository but bundled in tarball) + * Deprecate mathn +* C API + * Remove deprecated APIs + +See [NEWS in Ruby repository](https://github.com/ruby/ruby/blob/v2_2_0/NEWS) +for details. + +With those changes, 1557 files changed, 125039 insertions(+), 74376 deletions(-) +from v2.1.0! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.bz2> + * SIZE: 13304042 bytes + * MD5: d03cd4690fec1fff81d096d1c1255fde + * SHA256: 1c031137999f832f86be366a71155113675b72420830ce432b777a0ff4942955 + * SHA512: 04edc53e8cd1732c3ca61ebeb1d6133614beb10f77f9abb80d8d36352fe8aa205112068e460bf600b2c7e81e0ddcc3b311e7e027c320366f1bd992b3e378a6ad +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz> + * SIZE: 16494584 bytes + * MD5: cd03b28fd0b555970f5c4fd481700852 + * SHA256: 7671e394abfb5d262fbcd3b27a71bf78737c7e9347fa21c39e58b0bb9c4840fc + * SHA512: 1ba0c68e1c8d2b60bbd1e218cf36463edbe34cf9418d7593702b631e68d02297465f752e71395f6cfa4104f4cd70a1eb44381ffb74bc7801758b830931fdcfc6 +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.xz> + * SIZE: 10304244 bytes + * MD5: 54b43c6c6c9dd4c4b08ceb03ad0ded7a + * SHA256: 848714e280fc5fb44dbac3b060b206e56c1947006324ee68a174d68b483ef8ca + * SHA512: cd7e52faa464df8aca7ccfa23a5f06248e1ad82bc8c9f1829aa1b51ff37b15973b8caaa68e914d837325b8d59427fda4f3cad82c50925e1c84e688324a2a155d +* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.zip> + * SIZE: 18441027 bytes + * MD5: f8e1d0cee4f2d9535a9529ed23ae3700 + * SHA256: e06c1e2b1248cf881749833084b2bec93f7612676009190ff9bc89b8fd07c29f + * SHA512: 364dd927b496520d95a1b06c68e1a265015f4cab08bdf3efaa323d385e7bf075eae47f2e1db78a629db0f3c0c1ed24e086603ba21e2da02ac06dd3c8b716766e diff --git a/fa/news/_posts/2015-02-23-support-for-ruby-1-9-3-has-ended.md b/fa/news/_posts/2015-02-23-support-for-ruby-1-9-3-has-ended.md new file mode 100644 index 0000000000..9df41ffa84 --- /dev/null +++ b/fa/news/_posts/2015-02-23-support-for-ruby-1-9-3-has-ended.md @@ -0,0 +1,15 @@ +--- +layout: news_post +title: "Support for Ruby 1.9.3 has ended" +author: "Olivier Lacan" +translator: +date: 2015-02-23 00:00:00 +0000 +lang: en +--- + +As of today, all support for Ruby 1.9.3 has ended. Bug and security fixes +from more recent Ruby versions will no longer be backported to 1.9.3. + +This end of life was [announced over a year ago](https://www.ruby-lang.org/en/news/2014/01/10/ruby-1-9-3-will-end-on-2015/). + +We highly recommend that you upgrade to Ruby 2.0.0 or above as soon as possible. Please contact us if you'd like to continue maintaining the 1.9.3 branch for some reason you can't upgrade. diff --git a/fa/news/_posts/2015-02-25-ruby-2-0-0-p643-is-released.md b/fa/news/_posts/2015-02-25-ruby-2-0-0-p643-is-released.md new file mode 100644 index 0000000000..1107a6c1b3 --- /dev/null +++ b/fa/news/_posts/2015-02-25-ruby-2-0-0-p643-is-released.md @@ -0,0 +1,57 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p643 Released" +author: "usa" +translator: +date: 2015-02-25 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.0.0-p643. + +This is the last ordinal release of Ruby 2.0.0. +Ruby 2.0.0 goes into the state of the security maintenance phase, +and will never be released unless any critical regressions +or security issues are found. +This phase is planned to be maintained for 1 year. +Then, maintenance of Ruby 2.0.0 will be ended at Feb. 24th, 2016. +We recommend to start planning to migrate to newer versions of Ruby, such as 2.1 or 2.2. + +This release includes many bugfixes. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_643/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.bz2) + + SIZE: 10772113 bytes + SHA1: d1d7d324a1f2530d67d54464fe09646583e4dda1 + SHA256: 1f626f20647693a215a8db3ea0d6ab5ab9cee7c1945cc441b9f8f7b9612b91a0 + SHA512: 453117152e6facdcd5bedaa9c3b1e349382bc5bc1dd3d650ec58b398cb9d2519a2822d05da10bcc5dbbb4f513fc5fef310caa3529d176fa2d453befb28e4d83a + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.gz) + + SIZE: 13625546 bytes + SHA1: 544840583939175886a0885bce1cf07f0b9550b7 + SHA256: 4bd267a4187e4bc25c1db08f9f9bdc0ce595a705569cac460d98c4f5b02e614e + SHA512: cfb88bb4d312861c7c5305593b251648df336f3bf4a4e3f2acc3d66c1a93dc989cf5b60ce9158418ef3fbe4b2e41e7bc86e08942a6624441cfe1297325166b32 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.xz) + + SIZE: 8318532 bytes + SHA1: 11568586a6361200efbff33892aaee345625f1f0 + SHA256: 73f6d939beda8865e12069689ddabd2658b3f637a9adebeee5e374388715c432 + SHA512: edcff2154eec9c8a84d4c5eac8ffb370e273a5e949923009756cbc069a7ef52de5c91981bd726ae5043bc2784d8ff5080444bc29d0693abc08ff66a8783a7cbc + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.zip) + + SIZE: 15136932 bytes + SHA1: 41bd52d9bc1dabc5fa3209c0a04a0b26b8206ef8 + SHA256: 0f0ac0b075c924cfdd0e95e66560d99d9de36256af6fe51d375efe9dd0a0b996 + SHA512: 2c5780972bd27f5160c1f7524b3bc221dc8fba857863e53216fc3511df0415003ed1d4bc8c49533a34eedab0de72a261e5d4f2cecc251c64be843194ce3efbb6 + +## Release Comment + +Thanks to everyone who helped with this and previous releases. diff --git a/fa/news/_posts/2015-03-03-ruby-2-2-1-released.md b/fa/news/_posts/2015-03-03-ruby-2-2-1-released.md new file mode 100644 index 0000000000..6b9a4867f9 --- /dev/null +++ b/fa/news/_posts/2015-03-03-ruby-2-2-1-released.md @@ -0,0 +1,52 @@ +--- +layout: news_post +title: "Ruby 2.2.1 Released" +author: "hsbt" +translator: +date: 2015-03-03 03:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.2.1. +This is the first TEENY version release of the stable 2.2 series. + +This release includes the fix for ffi build failure and memory leak issue on Symbol GC (See [Bug #10686](https://bugs.ruby-lang.org/issues/10686)). + +See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_1/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.bz2) + + SIZE: 13326768 bytes + MD5: 06973777736d8e6bdad8dcaa469a9da3 + SHA256: 4e5676073246b7ade207be3e80a930567a88100513591a0f19fc38e247370065 + SHA512: af6a8e75a66b953ff33ecbca5111bcf1c6560b6b48b370b700820fcbe91363146c5ac8abd670a14e693b44343ae598bab472ed2902834304c03ffcd9550886d1 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.gz) + + SIZE: 16512208 bytes + MD5: b49fc67a834e4f77249eb73eecffb1c9 + SHA256: 5a4de38068eca8919cb087d338c0c2e3d72c9382c804fb27ab746e6c7819ab28 + SHA512: 97b92251c612e40ad84c3ce612b0f410010ed72f564a4223af1c8df3f7c9d7b7acea9d75423f033752902e4829272c5c94496eae7f504d2be7442e44519b8e93 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.xz) + + SIZE: 10320352 bytes + MD5: f7570579539faaa734c02e2857370298 + SHA256: 3b2852c07fdc12d0ba2b5698c7587ae2b46141539a526d143da5860b55a626c0 + SHA512: 853517426cd4735bab42298a13cef6f4864b6f8787c3985eaa39a4d1efb40e121bdb51e874b567f0ec339fe001920bcd165067633992b2be30e7804191559151 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.zip) + + SIZE: 18457205 bytes + MD5: fc0a654425419e9397a1a6858a76325d + SHA256: 73af1b1a9d5ceebfc129f270652fe81d9f760082c9fb3206a81bb7162b2a4087 + SHA512: 7150f0b6c6d27e6053ac88309903adf42fce537b8228740b97929712689c5623757aeb8a76dab1126cb70970c860fedb55a28c4660d818845921c0c74f8563f8 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped +us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2015-03-06-google-summer-of-code-2015.md b/fa/news/_posts/2015-03-06-google-summer-of-code-2015.md new file mode 100644 index 0000000000..bc8887be1c --- /dev/null +++ b/fa/news/_posts/2015-03-06-google-summer-of-code-2015.md @@ -0,0 +1,33 @@ +--- +layout: news_post +title: "Google Summer of Code 2015" +author: "Federico Builes" +translator: +date: 2015-03-06 10:48:37 +0000 +lang: en +--- + +Ruby will be participating in the [Google Summer of Code 2015][gsoc] as a top-level organization. We will be acting as an +umbrella for Ruby-related projects including [Ruby][ruby-ideas], [JRuby][jruby-ideas], [Celluloid][celluloid] and +[others][ideas]. Student applications can be submitted starting March 16 and the deadline is March 27 +(here's the [timeline][timeline]). + +If you are interested in participating as a student or as a mentor please join our +[mailing list][ml]. You can find a list of ideas for projects in the [RubyGSoC wiki][ideas]. + +[Ruby on Rails][ror] and [SciRuby][sciruby] will also be joining us as top-level +organizations in this year's program. If you have an idea that would fit better in these projects, please read their +[respective][ror-announcement] [announcements][sciruby-ideas]. + + +[gsoc]: http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/about_page +[timeline]: http://www.google-melange.com/gsoc/events/google/gsoc2015 +[jruby-ideas]: https://github.com/jruby/jruby/wiki/Google-Summer-of-Code-2015 +[celluloid]: https://github.com/rubygsoc/rubygsoc/wiki/Ideas-List#celluloid +[ideas]: https://github.com/rubygsoc/rubygsoc/wiki/Ideas-List +[ml]: https://groups.google.com/forum/?hl=en#!forum/rubygsoc +[ror-announcement]: http://weblog.rubyonrails.org/2015/3/4/google-summer-of-code-2015/ +[sciruby-ideas]: https://github.com/SciRuby/sciruby/wiki/Google-Summer-of-Code-2015-Ideas +[ruby-ideas]: https://github.com/rubygsoc/rubygsoc/wiki/Ideas-List#mri-matz-ruby-interpreter +[ror]: http://rubyonrails.org/ +[sciruby]: http://sciruby.com/ diff --git a/fa/news/_posts/2015-04-13-ruby-2-0-0-p645-released.md b/fa/news/_posts/2015-04-13-ruby-2-0-0-p645-released.md new file mode 100644 index 0000000000..2c92c267c8 --- /dev/null +++ b/fa/news/_posts/2015-04-13-ruby-2-0-0-p645-released.md @@ -0,0 +1,57 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p645 Released" +author: "usa" +translator: +date: 2015-04-13 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.0.0-p645. + +This release includes a security fix for OpenSSL extension. +Please view the topic below for more details. + +* [CVE-2015-1855: Ruby OpenSSL Hostname Verification](https://www.ruby-lang.org/en/news/2015/04/13/ruby-openssl-hostname-matching-vulnerability/) + +Ruby 2.0.0 is now under the state of the security maintenance phase, until Feb. 24th, 2016. +After the date, maintenance of Ruby 2.0.0 will be ended. +We recommend you start planning migration to newer versions of Ruby, such as 2.1 or 2.2. + +This release includes the security fix mentioned above along with small changes required for test environment (that shouldn't affect normal users). + +See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_645/ChangeLog) for full details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.bz2) + + SIZE: 10786492 bytes + SHA1: e724dd0e4a1e820a368be307aa0863a8ecf4b694 + SHA256: 2dcdcf9900cb923a16d3662d067bc8c801997ac3e4a774775e387e883b3683e9 + SHA512: e9ca186b1cf0877cdbecd43dcab2c5161a53103e926609d5e1b769a4980eab4571bfd0951788b4fc92dfd9d10175b0f5f36ea2c7289e575a9db9b62c02f93185 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.gz) + + SIZE: 13620967 bytes + SHA1: 4f922cda8d8f745f7b80cef8f79a0b51c252bbf5 + SHA256: 5e9f8effffe97cba5ef0015feec6e1e5f3bacf6ace78cd1cdf72708cd71cf4ab + SHA512: 4503e9d52d2f740ed00437f645cd532044a684b523b8044c0ba4e1b4e69649d2274d5b94fc8273acbbc19d3bb3f15375b93de5140d39f973f2fbb746500633b8 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.xz) + + SIZE: 8295192 bytes + SHA1: eee2d0d06de5b22d7542c605b4f2db24b0cb26bc + SHA256: 875be4f57bdbb2d2be0d64bfd8fc5022f004d55261ead8fd0cdc2e9e415e9f7b + SHA512: 440f8ea50f51c53f90e42a8dfd7cd41f806b290d5c12c09f84d9159ab9c95e19b036cd8a5dc788844da501b9fcd1fa8ad8352ef7417998debc1b43a61a4ea4dc + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.zip) + + SIZE: 15139168 bytes + SHA1: 384cc548291e91d0b9d7297bbc9aed46b88f254a + SHA256: 2ad4eaabfd92d627baffc6c971e4b8987b38c06baf42dc2fc2e05131095499e7 + SHA512: 271373873570a0b47124cbc0232fff6be353264a0891dd04800c1c9f79b1297f66e0d4e817f474432b20cbf055c8f421548a11a6ec19b68dad16cc78f1ba9876 + +## Release Comment + +Thanks to everyone who helped with this release, especially, zzak. diff --git a/fa/news/_posts/2015-04-13-ruby-2-1-6-released.md b/fa/news/_posts/2015-04-13-ruby-2-1-6-released.md new file mode 100644 index 0000000000..aa3bb295c5 --- /dev/null +++ b/fa/news/_posts/2015-04-13-ruby-2-1-6-released.md @@ -0,0 +1,56 @@ +--- +layout: news_post +title: "Ruby 2.1.6 Released" +author: "usa" +translator: +date: 2015-04-13 12:00:00 +0000 +lang: en +--- + +Ruby 2.1.6 has been released. + +This release includes a security fix for OpenSSL extension. +Please view the topic below for more details. + +* [CVE-2015-1855: Ruby OpenSSL Hostname Verification](https://www.ruby-lang.org/en/news/2015/04/13/ruby-openssl-hostname-matching-vulnerability/) + +And, many bug fixes are also included. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_6/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.bz2) + + SIZE: 12011651 bytes + SHA1: 380c3a5fa508fdaa2b227dbc00c56f703fd271d4 + SHA256: 7b5233be35a4a7fbd64923e42efb70b7bebd455d9d6f9d4001b3b3a6e0aa6ce9 + SHA512: 75d58120b5f387bcadbf6d19e85624f78c74f81b9018baef39207214673f7ebc0700ab31145acd88b4071c896ba8e1302a29c90955bcf5f8c863634125022aa6 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.gz) + + SIZE: 15141710 bytes + SHA1: 426289b6647ce35ad101091825b6e7e5fce207f3 + SHA256: 1e1362ae7427c91fa53dc9c05aee4ee200e2d7d8970a891c5bd76bee28d28be4 + SHA512: 6563d8f39623ed5ba227725c54e630886412938bdf7c4cf03337d6c245af58d92274a098ea0e03bfd0e94970f4ee82909c366ae81db4b9317c10b92167bfc46d + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.xz) + + SIZE: 9381724 bytes + SHA1: e429644f27c243474268bf548e6fa95d05579aaf + SHA256: 137b27bffefd795fd97c288fff539d135f42320f8a1afddde99a34e1fbe7314e + SHA512: 0cf91fe7ae53a3f9c034fa5996eeed91889b942b8e595e84be4e244adc30d79aa3f540cc6f657982715069dfb14af20786557689d9a8fe4bbfc66280e84dd6cf + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.zip) + + SIZE: 16671680 bytes + SHA1: e79a033ab847e0d67940e31bac0debf197fad615 + SHA256: ecbc4b97cc78e96e01375b961936133279db806044fd4d23771136dae4c1056d + SHA512: d1450bd013dbaabf10d7097e9dcd8c3f027110c08693ee7c94c002ea96b7e6e171c951b8b1ca3971b7f89e05b15df00ec56a006f9393889ae7f8045e9b328fad + +## Release Comment + +Thanks to everyone who helped with this release, especially, nagachika. + +The maintenance of Ruby 2.1, include this release, is based on the "Agreement for the Ruby stable version" of [the Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2015-04-13-ruby-2-2-2-released.md b/fa/news/_posts/2015-04-13-ruby-2-2-2-released.md new file mode 100644 index 0000000000..90ffd4ab10 --- /dev/null +++ b/fa/news/_posts/2015-04-13-ruby-2-2-2-released.md @@ -0,0 +1,54 @@ +--- +layout: news_post +title: "Ruby 2.2.2 Released" +author: "nagachika" +translator: +date: 2015-04-13 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.2.2. +This is a TEENY version release of the stable 2.2 series. + +This release includes the security fix for a OpenSSL extension's hostname verification vulnerability. + +* [CVE-2015-1855: Ruby OpenSSL Hostname Verification](https://www.ruby-lang.org/en/news/2015/04/13/ruby-openssl-hostname-matching-vulnerability/) + +There are also some bugfixes. +See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_2/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.bz2) + + SIZE: 13314437 bytes + SHA1: de97ec6132ac76bb7c0f92b5ca4682138093af1b + SHA256: f3b8ffa6089820ee5bdc289567d365e5748d4170e8aa246d2ea6576f24796535 + SHA512: d6693251296e9c6e8452786ce6b0447c8730aff7f92d0a92733444dbf298a1e7504b7bd29bb6ee4f2155ef94ccb63148311c3ed7ac3403b60120a3ab5c70a162 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz) + + SIZE: 16613636 bytes + SHA1: 29c51a17639d921b1ae51cd80a9d7584f67d5e1c + SHA256: 5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44 + SHA512: 0603f962980e14d206f8f1b3d5bb1b19d65f369bde71a686f3b4cef1d1dd09ef39afac3170947324f29a4ac17b99f9d406e5ca33b4950ece2e5baca0a42c791c + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.xz) + + SIZE: 10463044 bytes + SHA1: 58cfec8db9b51ad1ff3bd2b9065da087913a6268 + SHA256: f033b5d08ab57083e48c1d81bcd7399967578c370b664da90e12a32891424462 + SHA512: bd72d0a4c017e2527659f64ef2781bbe8bd540a2302eaa60234a12282fd53c359e04205c56385402c67e81bb9dab3b88de53de82e12bb13e3386c26301043b64 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.zip) + + SIZE: 18448642 bytes + SHA1: 7d26835cb7711dfe75f2c10fe38cb85f5ed56df5 + SHA256: dd96db09348034b21889df1b561c7482ee553558486707503c83908eddb3c768 + SHA512: 7487032e9108ea4b35f909e26c7202994524090b3c237713b8b406917cf65543ec7372d260dcacd5c9b269bb7645e1703b3a64ca3cc2efc8b2135c1d06729246 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2015-04-13-ruby-openssl-hostname-matching-vulnerability.md b/fa/news/_posts/2015-04-13-ruby-openssl-hostname-matching-vulnerability.md new file mode 100644 index 0000000000..7db6745ee7 --- /dev/null +++ b/fa/news/_posts/2015-04-13-ruby-openssl-hostname-matching-vulnerability.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "CVE-2015-1855: Ruby OpenSSL Hostname Verification" +author: "zzak" +translator: +tags: security +date: 2015-04-13 12:00:00 +0000 +lang: en +--- + +Ruby's OpenSSL extension suffers a vulnerability through overly permissive matching of hostnames, which can lead to similar bugs such as [CVE-2014-1492][CVE-2014-1492]. Similar issues were found in [Python][python-hostname-bug]. + +This vulnerability has been assigned the CVE identifier [CVE-2015-1855][CVE-2015-1855]. + +We strongly recommend you upgrade Ruby. + +## Details + +After reviewing [RFC 6125][RFC-6125] and [RFC 5280][RFC-5280], we found multiple violations of matching hostnames and particularly wildcard certificates. + +Ruby's OpenSSL extension will now provide a string-based matching algorithm which follows _more_ strict behavior, as recommended by these RFCs. In particular, matching of more than one wildcard per subject/SAN is no-longer allowed. As well, comparison of these values is now case-insensitive. + +This change will affect Ruby's `OpenSSL::SSL#verify_certificate_identity` behavior. + +Specifically: + +* Only one wildcard character in the left-most part of the hostname is allowed. +* IDNA names can now only be matched by a simple wildcard (e.g. '\*.domain'). +* Subject/SAN should be limited to ASCII characters only. + +All users running an affected release should upgrade immediately. + +## Affected versions + +* All Ruby 2.0 versions prior to Ruby 2.0.0 patchlevel 645 +* All Ruby 2.1 versions prior to Ruby 2.1.6 +* All Ruby 2.2 versions prior to Ruby 2.2.2 +* prior to trunk revision 50292 + +## Credits + +Thanks to Tony Arcieri, Jeffrey Walton, and Steffan Ullrich for reporting this issue. Originally reported as [Bug #9644][Bug-9644], and patches submitted by Tony Arcieri and Hiroshi Nakamura. + +## History + +* Originally published at 2015-04-13 12:00:00 (UTC) + +[CVE-2014-1492]: https://bugzilla.mozilla.org/show_bug.cgi?id=903885 +[python-hostname-bug]: https://bugs.python.org/issue17997 +[CVE-2015-1855]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1855 +[RFC-6125]: https://tools.ietf.org/html/rfc6125 +[RFC-5280]: https://tools.ietf.org/html/rfc5280 +[Bug-9644]: https://bugs.ruby-lang.org/issues/9644 diff --git a/fa/news/_posts/2015-06-30-ruby-prize-2015.md b/fa/news/_posts/2015-06-30-ruby-prize-2015.md new file mode 100644 index 0000000000..d558bc6783 --- /dev/null +++ b/fa/news/_posts/2015-06-30-ruby-prize-2015.md @@ -0,0 +1,25 @@ +--- +layout: news_post +title: "Ruby Prize 2015 nominations are now open" +author: "Koji Shimada" +translator: "zzak" +date: 2015-06-30 19:15:00 +0000 +lang: en +--- + +Ruby Prize 2015 nominations are now being accepted for new and outstanding members in the Ruby community. + +The Ruby Prize is given to recognize the efforts of remarkable activity and achievements in the Ruby Community. The prize will be awarded by the executive committee comprised of three parties, the Ruby Association, Nihon Ruby no Kai and Matsue City. + +Ruby Prize winner and final nominee (1-2 people) will receive an award at the RubyWorld Conference 2015, to be held in Matsue, Shimane Prefecture on November 12th & 13th. + +In addition, the Ruby Prize winner will also be awarded 1 million yen (approx. 8,213 USD at exchange rates as of June 30th, 2015). + +Nominees will be selected by the following: + +* Recommendations from the "Prize Member" executive committee +* Recommendations from the general public (you). + +The final selection will be made by the executive committee. Please see below for more details. + +[Ruby Association: Now accepting nominations for the Ruby Prize Award 2015](http://www.ruby.or.jp/en/news/20150630.html) diff --git a/fa/news/_posts/2015-07-14-rubyconftw-2015-call-for-proposals.md b/fa/news/_posts/2015-07-14-rubyconftw-2015-call-for-proposals.md new file mode 100644 index 0000000000..190b55d327 --- /dev/null +++ b/fa/news/_posts/2015-07-14-rubyconftw-2015-call-for-proposals.md @@ -0,0 +1,23 @@ +--- +layout: news_post +title: "RubyConf Taiwan 2015 CFP is open" +author: "Juanito Fatas" +translator: +date: 2015-07-14 15:30:00 +0000 +lang: en +--- + +[RubyConf Taiwan 2015](http://rubyconf.tw) will take place during September +11–12nd at Taipei, Taiwan, a tropical island located in the heart of Asia. + +[Matz](https://twitter.com/yukihiro_matz), +[Aaron Patterson](https://twitter.com/tenderlove), +[Sarah Allen](https://twitter.com/ultrasaurus), +and [Ruddy Lee](https://ruddyblog.wordpress.com) are confirmed keynote speakers. +[CFP is open](http://rubytaiwan.kktix.cc/events/rubyconftw2015-cfp) +until July 20th (GMT +8) and +[Lightening talk CFP](http://rubytaiwan.kktix.cc/events/rubyconftw2015-ltcfp) +is open until August 10th (GMT +8). + +If you want to give a talk, please submit your proposal. Any topics related to +Ruby are welcome. We look forward to seeing you in Taiwan. diff --git a/fa/news/_posts/2015-08-04-rubyconf-taiwan-registration-is-open.md b/fa/news/_posts/2015-08-04-rubyconf-taiwan-registration-is-open.md new file mode 100644 index 0000000000..d78e55d916 --- /dev/null +++ b/fa/news/_posts/2015-08-04-rubyconf-taiwan-registration-is-open.md @@ -0,0 +1,16 @@ +--- +layout: news_post +title: "RubyConf Taiwan 2015 Registration Online" +author: "Mu-Fan Teng (@ryudoawaru)" +translator: +date: 2015-08-04 15:30:22 +0000 +lang: en +--- + +RubyConf Taiwan 2015 will be held in Taipei, Taiwan on 11-12 September, 2015. + +For details about speakers and schedule please visit the [conference site](http://rubyconf.tw). + +Tickets are open till September 12nd, 2015. [Reserve Your Ticket!](http://rubytaiwan.kktix.cc/events/rubyconftw2015?locale=en) + +We look forward to seeing you in Taiwan! diff --git a/fa/news/_posts/2015-08-18-ruby-2-0-0-p647-released.md b/fa/news/_posts/2015-08-18-ruby-2-0-0-p647-released.md new file mode 100644 index 0000000000..161f1710b9 --- /dev/null +++ b/fa/news/_posts/2015-08-18-ruby-2-0-0-p647-released.md @@ -0,0 +1,57 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p647 Released" +author: "usa" +translator: +date: 2015-08-18 12:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.0.0-p647. + +This release includes the security fix for a RubyGems domain name verification vulnerability. +Please view the topic below for more details. + +* [CVE-2015-3900 Request hijacking vulnerability in RubyGems 2.4.6 and earlier](http://blog.rubygems.org/2015/05/14/CVE-2015-3900.html) + +And, this release also includes the fix for a regression of lib/resolv.rb. + +* [Uninitialized constant bug introduced by typo in backport of [#10712]](https://bugs.ruby-lang.org/issues/11204) + +Ruby 2.0.0 is now under the state of the security maintenance phase, until Feb. 24th, 2016. +After the date, maintenance of Ruby 2.0.0 will be ended. +We recommend you start planning migration to newer versions of Ruby, such as 2.1 or 2.2. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.bz2) + + SIZE: 10785285 bytes + SHA1: 537f0e212e337022f28ead8e67ffc834fcd468c6 + SHA256: 3c3782e313d1ec3ed06c104eafd133cc54ff5183b991786ece9e957fd6cf1cb9 + SHA512: 3416af771ebb0b27ceacf23d309bd2a1ede832c2edf48a5ca46f0b0b84b2ab94fb6362a0c7fe4f77b21253539db8161ae26d23a78d1ba729bf03812454d93d04 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.gz) + + SIZE: 13621258 bytes + SHA1: 1d5f2748104cb1011d2888d5ca6ecdb3bee1115a + SHA256: c88aaf5b4ec72e2cb7d290ff854f04d135939f6134f517002a9d65d5fc5e5bec + SHA512: 988b694dc05a9b94b3626587abdb5c7bb6bd64e20c9f0cae1cfdab40896358696077ef975fbdfc6bcd0c108a21b9529d8f384df49902d3bc3c5cd0d640c5ac99 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.xz) + + SIZE: 8301008 bytes + SHA1: 4b7d395e9e0d097be948718dde115f977f3730e1 + SHA256: 9f793880df1209ea4e5c10ee9d8ef79caa0e73ee769f745f1c191505255e2847 + SHA512: 38fd2ad631588a0e8adf9a7ae01cb5274eca4fd794c5ed7030e5fae9e53cd8920eaac9d388c73b844a154c7eb56fa6fed8e2ee5df5617efd624b6a568ea4953b + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.zip) + + SIZE: 15139508 bytes + SHA1: 74bb7a18b18f8c2401abe14fc925124357e0740c + SHA256: 788c34fa034088bc49b9a0c622a0d81e0b0c6dd0f993c2cacf3b839fce8d4780 + SHA512: 251737a35562b96813e5418c1fa1ff213147818e21af26d079714236d1a1e0eaf29f58b92bb8aae6cecc4be825630bb0a203270d828b909a60b120265523f062 + +## Release Comment + +Thanks to everyone who helped with this release, especially, hsbt. diff --git a/fa/news/_posts/2015-08-18-ruby-2-1-7-released.md b/fa/news/_posts/2015-08-18-ruby-2-1-7-released.md new file mode 100644 index 0000000000..674c8ced73 --- /dev/null +++ b/fa/news/_posts/2015-08-18-ruby-2-1-7-released.md @@ -0,0 +1,56 @@ +--- +layout: news_post +title: "Ruby 2.1.7 Released" +author: "usa" +translator: +date: 2015-08-18 16:00:00 +0000 +lang: en +--- + +Ruby 2.1.7 has been released. + +This release includes the security fix for a RubyGems domain name verification vulnerability. +Please view the topic below for more details. + +* [CVE-2015-3900 Request hijacking vulnerability in RubyGems 2.4.6 and earlier](http://blog.rubygems.org/2015/05/14/CVE-2015-3900.html) + +And, many bug fixes are also included. +See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) +and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_7/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.bz2) + + SIZE: 12019706 bytes + SHA1: 9c2d3c73b3d2aed2c8f018d3a27e970846dcf143 + SHA256: b02c1a5ecd718e3f6b316384d4ed6572f862a46063f5ae23d0340b0a245859b6 + SHA512: f610d2dd6a93f0a5e84e04ddedf847bbcea5dd3289b3164cdf60be64f67a80dfd5f9836ea5d169970cd0ce24a7e05ea6190699706567cb0d5cf450de6a70e445 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz) + + SIZE: 15151458 bytes + SHA1: e2e195a4a58133e3ad33b955c829bb536fa3c075 + SHA256: f59c1596ac39cc7e60126e7d3698c19f482f04060674fdfe0124e1752ba6dd81 + SHA512: 0e2ee9ebf47f10c43bf5f29a03a3655f3507800b1e091e0c7b2ac335f36d2bf05621383e31fae2659b9cb9cb3e0f2452698a269249da12710443ffa62e4e0a8d + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.xz) + + SIZE: 9371208 bytes + SHA1: b5786048a934112936e5001bf265e39f6b397622 + SHA256: 225c067d9820fe52fcffbfb91d5b5243708a0b666b9929bea466e9379eb40ad7 + SHA512: a4f2a3a684517678442b4ad3bda50433634317c910e8c13c844dffe470532bae5fd8d72b3f83c9a36865f303fe0464703e30854b3e55a558a758252b5e594406 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.zip) + + SIZE: 16680721 bytes + SHA1: 8753a89e735df5608f909ab4f71887cc9a3636df + SHA256: caa60d82ef958232ecbd0ac7cb95ba9f13b15c268ef4ebeef7083d21b8c9d0e9 + SHA512: 8e8dfc78f2ea7348d20b616f28cd91c0b1d7803aa17fd92a9d24abf846a49353930437ad868e2eb6e91be27f253ee66393200ffc902b8a8339a75b4d8a4b16bc + +## Release Comment + +Thanks to everyone who helped with this release, especially, nagachika. + +The maintenance of Ruby 2.1, include this release, is based on the "Agreement for the Ruby stable version" of [the Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2015-08-18-ruby-2-2-3-released.md b/fa/news/_posts/2015-08-18-ruby-2-2-3-released.md new file mode 100644 index 0000000000..3242736fb4 --- /dev/null +++ b/fa/news/_posts/2015-08-18-ruby-2-2-3-released.md @@ -0,0 +1,54 @@ +--- +layout: news_post +title: "Ruby 2.2.3 Released" +author: "nagachika" +translator: +date: 2015-08-18 16:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.2.3. +This is a TEENY version release of the stable 2.2 series. + +This release includes the security fix for a RubyGems domain name verification vulnerability. + +* [CVE-2015-3900 Request hijacking vulnerability in RubyGems 2.4.6 and earlier](http://blog.rubygems.org/2015/05/14/CVE-2015-3900.html) + +There are also some bugfixes. +See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_3/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.bz2) + + SIZE: 13333814 bytes + SHA1: 59fe80aeeb518ffb396bb1df74b47b25541fb207 + SHA256: c745cb98b29127d7f19f1bf9e0a63c384736f4d303b83c4f4bda3c2ee3c5e41f + SHA512: 795f1b66a6d4f0baef897068899c3a1a4370ce1268618e6a7d6d4720234444259f371d1ba2e174b2f7580265e9f18eda3f295fbb087447aa6e8fb7a0f07526ce + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz) + + SIZE: 16626772 bytes + SHA1: 0d9e158534cb31e72740138b8f697b57b448e5c3 + SHA256: df795f2f99860745a416092a4004b016ccf77e8b82dec956b120f18bdc71edce + SHA512: 360ce8a99284c77b5789d292ac1669c299a66264691af7c29cb93df9b9136adbfa9965f3259eba561b082650770e2f5552f273ab8178e9c81f93bf0091a7056b + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.xz) + + SIZE: 10453204 bytes + SHA1: cff5421e3a7f6dbe72009ef44164d4b9e6d1801f + SHA256: c6ec90e9ed018e6d9a578fc93755d8565839908d5796809e1aecd1798c7ea8a7 + SHA512: e3ce3333e8d59f4f3bfc84cf9bbbc6f74272470e12913d299fd1d41fc166dee21921eed1789591f50c3f3b6e5fd38fd1b99855c16aff28bdc4ae8fcc680c71bd + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.zip) + + SIZE: 18462870 bytes + SHA1: d0baec39caa5d3bb0c65175b8fdc38a8a98b120d + SHA256: 0af3035be23120e5a617fcae0d34bc6cd5ee313ed7a6e1b68591268b415c95e4 + SHA512: ae288d7c0c21a159cf8173b4b4d51281616cf92a50ec63fe3b17b0af2b97302106406330aaf203a997c1169dda215068b480b5947a6bed56db5d378b0a4d2be5 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2015-08-31-confoo-cfp.md b/fa/news/_posts/2015-08-31-confoo-cfp.md new file mode 100644 index 0000000000..33f7e22bda --- /dev/null +++ b/fa/news/_posts/2015-08-31-confoo-cfp.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "ConFoo 2016 is looking for Ruby speakers" +author: "afilina" +translator: +date: 2015-08-31 16:00:00 +0000 +lang: en +--- + +ConFoo is once more seeking passionate speakers for the upcoming conference. + +{: style="border:0; float:right; margin-left:20px;" width="350" height="157"}The event is happening in Montreal, Canada, between February 24th and 26th, 2016. It is an exciting conference for web developers with speakers from all over the world. It unites many web programming languages under one roof, as well as other topics related to web development. The [call for papers][1] closes on September 20th. + +For the last few years, ConFoo renewed 50% of its speakers. If you're new to this conference, you should definitely submit. + +If you would just like to attend, there is a [discount][2] until October 13th. + +[1]: https://confoo.ca/en/call-for-papers +[2]: https://confoo.ca/en/register diff --git a/fa/news/_posts/2015-10-13-fukuoka-ruby-award-2016.md b/fa/news/_posts/2015-10-13-fukuoka-ruby-award-2016.md new file mode 100644 index 0000000000..a174de7ffc --- /dev/null +++ b/fa/news/_posts/2015-10-13-fukuoka-ruby-award-2016.md @@ -0,0 +1,61 @@ +--- +layout: news_post +title: "2016 Fukuoka Ruby Award Competition - Entries to be judged by Matz" +author: "Fukuoka Ruby" +translator: +date: 2015-10-13 08:00:00 +0000 +lang: en +--- + +Dear Ruby Enthusiasts, + +The Government of Fukuoka, Japan together with "Matz" Matsumoto would like to +invite you to enter the following Ruby competition. If you have developed an +interesting Ruby program, please be encouraged to apply. + +2016 Fukuoka Ruby Award Competition + - Grand Prize - 1 Million Yen! + +Entry Deadline: November 27, 2015 + +Matz and a group of panelists will select the winners of the Fukuoka Competition. +The grand prize for the Fukuoka Competition is 1 million yen. +Past grand prize winners include Rhomobile (USA) and APEC Climate Center (Korea). + +[http://myfukuoka.com/category/news/ruby-news/](http://myfukuoka.com/category/news/ruby-news/) + +Programs entered in the competition do not have to be written entirely in Ruby +but should take advantage of the unique characteristics of Ruby. + +Projects must have been developed or completed within the past 12 months to be +eligible. Please visit the following Fukuoka website for additional details or +to enter: + +[http://www.digitalfukuoka.jp/events/84](http://www.digitalfukuoka.jp/events/84) +or +[http://myfukuoka.com/events/2016-fukuoka-ruby-award-guidelines-for-applicants/](http://myfukuoka.com/events/2016-fukuoka-ruby-award-guidelines-for-applicants/) + +[http://www.digitalfukuoka.jp/uploads/event_detail/file/210/RubyAward_ApplicationForm_2016.doc](http://www.digitalfukuoka.jp/uploads/event_detail/file/210/RubyAward_ApplicationForm_2016.doc) + +Please email the application form to award@f-ruby.com. + +This year, we have the following special prizes: + +The winner of the AWS Prize will receive: + +* Kindle Fire HDX (subject to change) +* AWS architect technical consultation + +The winner of the GMO Pepabo Prize will receive: + +* 50,000 yen gift certificate toward domain services from MuuMuu Domain +* Gift basket filled with local foods and snacks (30,000 yen value) + +The winner of the IIJ GIO Prize will receive: + +* IIJ GIO free coupon worth 500,000 yen (up to 6 months) + +"Matz will be testing and reviewing your source code thoroughly, so it's very +meaningful to apply! The competition is free to enter." + +Cheers! diff --git a/fa/news/_posts/2015-11-11-ruby-2-3-0-preview1-released.md b/fa/news/_posts/2015-11-11-ruby-2-3-0-preview1-released.md new file mode 100644 index 0000000000..27d8a7de31 --- /dev/null +++ b/fa/news/_posts/2015-11-11-ruby-2-3-0-preview1-released.md @@ -0,0 +1,81 @@ +--- +layout: news_post +title: "Ruby 2.3.0-preview1 Released" +author: "naruse" +translator: +date: 2015-11-11 14:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.3.0-preview1. + +Ruby 2.3.0-preview1 is the first preview of Ruby 2.3.0. +Many new features and improvements are included. + +A [Frozen String Literal Pragma](https://bugs.ruby-lang.org/issues/11473) +is introduced. +With Ruby 2.1, `"str".freeze` has been optimized to reduce object allocation. +Ruby 2.3 introduces a new magic comment and command line option to +freeze all string literals in the source files. +Additionally for debugging, you can get where the object is created on +`"can't modify frozen String"` error by +`--enable-frozen-string-literal-debug`. + +A [safe navigation operator](https://bugs.ruby-lang.org/issues/11537), +which already exists in C#, Groovy, and Swift, is introduced to ease +`nil` handling as `obj&.foo`. `Array#dig` and `Hash#dig` are also added. + +The [did_you_mean gem is bundled](https://bugs.ruby-lang.org/issues/11252). +The did_you_mean gem +shows the candidates on the `NameError` and `NoMethodError` to ease +debugging. + +Try and enjoy programming with Ruby 2.3.0-preview1, and report us your +knowledge! + +## Notable Changes since 2.2 + +* TBD + +See [NEWS](https://github.com/ruby/ruby/blob/v2_3_0_preview1/NEWS) and +[ChangeLog](https://github.com/ruby/ruby/blob/v2_3_0_preview1/ChangeLog) +for detail. + +With those changes, 1036 files changed, 81312 insertions(+), 51322 +deletions(-) since Ruby 2.2.0. + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview1.tar.bz2> + + * SIZE: 14174035 bytes + * SHA1: 55ad4f04d7a33ab780458ee0999de9f6124217ea + * SHA256: 42b9c9e1740a5abe2855d11803524370bd95744c8dcb0068572ed5c969ac7f0f + * SHA512: ae6d46c87f59e1fd3703b76dfc45bfcf208625f95ab9f4559f0b9f7050e8681f1a6e419f5fa06b704c83e56879c3a9ff1337dba443bcfca76fadb49c97d97a93 + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview1.tar.gz> + + * SIZE: 17560800 bytes + * SHA1: 6249572e5dca27d8c73a0cbf036e24e5d88fe82f + * SHA256: dc8f9d48392a2bb226df5f4b4fd2074d81af155cdf3f3799139a6e31e012aefe + * SHA512: 58384ef6e743dde20ea263692dab86ce9d6d22d722ef4c02a84396aa3128ce06d933d9b69078a3cd666d72320a8a6ffdc93296bc0d5338595b2a44c29d4db383 + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview1.tar.xz> + + * SIZE: 11225228 bytes + * SHA1: 85b4f631efa4b6435b2b41df6ce6c46da294c4d4 + * SHA256: a88e19d9dc001db8f49ca3986a8a4e69980affff876854585725e40de0eedcd8 + * SHA512: 3be0f3ed4de73509b2f6975fe3fbe28bb4d51df87db6e2c0019e8a107edf49be60b2127ba5b18bca91f9f5964b07f1adde3042dac6327017359eeb130760672b + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview1.zip> + + * SIZE: 19777010 bytes + * SHA1: 3458666c250dd333ac4b537be25f1913dd311ea1 + * SHA256: 0fc1d4450e9141f541038a4433f8fb49fb929e43c7bf5985685a4fa7b213a811 + * SHA512: f53653cf11d8dce1d627f7db3a15acca29c74c78735406a5d64bbbdc39fac232ef63110eb4d83521bef40c6f3006d55bbeaf54d1ddab1d4b6e5a13cee9247e85 + +## Release Comment + +See also the release schedule and other information: + +[ReleaseEngineering23](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering23) diff --git a/fa/news/_posts/2015-12-11-ruby-2-3-0-preview2-released.md b/fa/news/_posts/2015-12-11-ruby-2-3-0-preview2-released.md new file mode 100644 index 0000000000..896872cc96 --- /dev/null +++ b/fa/news/_posts/2015-12-11-ruby-2-3-0-preview2-released.md @@ -0,0 +1,91 @@ +--- +layout: news_post +title: "Ruby 2.3.0-preview2 Released" +author: "naruse" +translator: +date: 2015-12-11 14:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.3.0-preview2. + +Ruby 2.3.0-preview2 is the second preview of Ruby 2.3.0. +Many new features and improvements are included. + +A [Frozen String Literal Pragma](https://bugs.ruby-lang.org/issues/11473) +is introduced. +With Ruby 2.1, `"str".freeze` has been optimized to reduce object allocation. +Ruby 2.3 introduces a new magic comment and command line option to +freeze all string literals in the source files. +Additionally for debugging, you can get where the object is created on +`"can't modify frozen String"` error by using the +`--debug=frozen-string-literal` command line option. + +A [safe navigation operator](https://bugs.ruby-lang.org/issues/11537) +([so-called lonely operator](https://instagram.com/p/-M9l6mRPLR/)) `&.`, +which already exists in C#, Groovy, and Swift, is introduced to ease +`nil` handling as `obj&.foo`. `Array#dig` and `Hash#dig` are also added. + +The [did_you_mean gem is bundled](https://bugs.ruby-lang.org/issues/11252). +The did_you_mean gem +shows the candidates on the `NameError` and `NoMethodError` to ease +debugging. + +[RubyVM::InstructionSequence#to_binary and .load_from_binary](https://bugs.ruby-lang.org/issues/11788) +are introduced as experimental features. +With these features, we can make an ISeq (bytecode) pre-compilation system. + +Ruby 2.3 includes many performance tuning fixes. +For example, +[optimizing Proc#call](https://bugs.ruby-lang.org/issues/11569), +[reconsidering method entry data structure](https://bugs.ruby-lang.org/issues/11278), +[introducing new table data structure](https://bugs.ruby-lang.org/issues/11420), +machine code level tuning for object allocation and method calling code, +and many other optimizations. + +Try and enjoy programming with Ruby 2.3.0-preview2, and report us your +knowledge! + +## Notable Changes since 2.2 + +See [NEWS](https://github.com/ruby/ruby/blob/v2_3_0_preview2/NEWS) +and [ChangeLog](https://github.com/ruby/ruby/blob/v2_3_0_preview2/ChangeLog) +for details. + +With those changes, [1097 files changed, 97466 insertions(+), 58685 deletions(-)](https://github.com/ruby/ruby/compare/v2_2_0...v2_3_0_preview2) since Ruby 2.2.0! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview2.tar.bz2> + + * SIZE: 14126752 bytes + * SHA1: 7e717ef7a0a1523ad696b5fe693f7f7a613a3810 + * SHA256: e9b0464e50b2e5c31546e6b8ca8cad71fe2d2146ccf88b7419bbe9626af741cb + * SHA512: e397f321d4338edba8d005d871408775f03d975da90c8abcfdb457a1bc7e6c87efe58c53b2c3bc122e9f58f619767b271bcc8d5d9663ed4b4288c60556e8d288 + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview2.tar.gz> + + * SIZE: 17623519 bytes + * SHA1: 2deaf3ccbbfc5e08d3d840a4f1c33ff5f62f931d + * SHA256: cb1c745bda33ba9e812b48c87852571ef6486f985c5e6ff4508a137d1c9734a3 + * SHA512: 83022f99775eb139beec281d59029dcc7c59de1e313182685b0a785334ac53d0c445212460d00d065169b922949263f30a1f981e19fc6e59814e79e6e53ae8e0 + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview2.tar.xz> + + * SIZE: 11249780 bytes + * SHA1: e1dfca06cd3c2cf6456a7feb0b1cd0752bde1a3b + * SHA256: 7c3119268af87c137f415301b299281762453ad78f86e35562be014dabd67b11 + * SHA512: ab3376145d95a2188e6345984f0e5592c8d33515d7046a2ab2565dc418fa2306cdcf797aae9494d4d10446ada54ba638d8a8ad2d4b7510544d7eaea3de4faa87 + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview2.zip> + + * SIZE: 19841531 bytes + * SHA1: db7fa5291d90e0a9c6f75c0cd068bc54050520d6 + * SHA256: 90d036fd1ec40aa8f5493821ac162bf69f505c5977db54afe53b8bf689d79b9d + * SHA512: 05784df420018aaae7d09d41e872df708e861cacc74dc8ee97a9e3ac7458cb12b937523ad6def34d5ae2890a0cf037a8d61e365beb88d28acd84879b9391ad65 + +## Release Comment + +See also the release schedule and other information: + +[ReleaseEngineering23](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering23) diff --git a/fa/news/_posts/2015-12-16-ruby-2-0-0-p648-released.md b/fa/news/_posts/2015-12-16-ruby-2-0-0-p648-released.md new file mode 100644 index 0000000000..e59e08a025 --- /dev/null +++ b/fa/news/_posts/2015-12-16-ruby-2-0-0-p648-released.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "Ruby 2.0.0-p648 Released" +author: "usa" +translator: +date: 2015-12-16 12:00:00 +0000 +lang: en +--- + +Ruby 2.0.0-p648 has been released. + +This release includes a security fix for the Fiddle and DL extensions. +Please view the topic below for more details. + +* [CVE-2015-7551: Unsafe tainted string usage in Fiddle and DL](https://www.ruby-lang.org/en/news/2015/12/16/unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551/) + +Ruby 2.0.0 is now under the state of the security maintenance phase, until Feb. 24th, 2016. +After that date, maintenance of Ruby 2.0.0 will be ended. +We recommend you start planning migration to newer versions of Ruby, such as 2.1, 2.2 or 2.3 (scheduled to release within a few weeks). + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.bz2) + + SIZE: 10785918 bytes + SHA1: 504be2eae6cdfe93aa7ed02ec55e35043d067ad5 + SHA256: 087ad4dec748cfe665c856dbfbabdee5520268e94bb81a1d8565d76c3cc62166 + SHA512: 609acf6d6352c9746e21cd7f0e7d29f5eb522e6fff2d5fad0431d63c568cc084ed5b7141f84cd33512d8213200d2d1a22e8d7df71469a980a3a92886133fea38 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.gz) + + SIZE: 13622628 bytes + SHA1: 2323df55f5e941c45be13500df9daf216098f884 + SHA256: 8690bd6b4949c333b3919755c4e48885dbfed6fd055fe9ef89930bde0d2376f8 + SHA512: 285745fa359be124a7ee5eea7ec8ae23a76ebd1f768c1214291ef5a65991c5c4a6ed73eb89e42d2673b16ed9a726bebe7e336ac73082c657f4e460014db30c94 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.xz) + + SIZE: 8303584 bytes + SHA1: 4500e7b65a3788a2c9d787dc3b7d7e16014d4daf + SHA256: 22fe97739110ba9171b13fc4dcd1a92e767f16769de3593ee41ef1283d218402 + SHA512: 95df515d37f04193eaceaded4a4f568f83041683349cd44767803f77361a66533226d83eac6586ac894ae61d79bd36ce047f951aed43f9a8356dbb3244280774 + +* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.zip) + + SIZE: 15139871 bytes + SHA1: 2d5521cc12823af20269b9380a9d605a21509b43 + SHA256: 6d1fb8b285c80bfc1838880626d04f128561a649161c80d1748423c731d548bd + SHA512: c5f136fd75cd85a00312a5a44831fc114c1c329d224b5b45a8fe41de222daef16ed890413085574e62c5d86e743e0172f3523d309be6547c1976dffdba066ea2 + +## Release Comment + +Thanks to everyone who helped with this release. diff --git a/fa/news/_posts/2015-12-16-ruby-2-1-8-released.md b/fa/news/_posts/2015-12-16-ruby-2-1-8-released.md new file mode 100644 index 0000000000..e38845548b --- /dev/null +++ b/fa/news/_posts/2015-12-16-ruby-2-1-8-released.md @@ -0,0 +1,55 @@ +--- +layout: news_post +title: "Ruby 2.1.8 Released" +author: "usa" +translator: +date: 2015-12-16 12:00:00 +0000 +lang: en +--- + +Ruby 2.1.8 has been released. + +This release includes a security fix for the Fiddle and DL extensions. +Please view the topic below for more details. + +* [CVE-2015-7551: Unsafe tainted string usage in Fiddle and DL](https://www.ruby-lang.org/en/news/2015/12/16/unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551/) + +And, many bug fixes are also included. +See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_8/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.bz2) + + SIZE: 12014426 bytes + SHA1: 0284eaf42ac76a641abd5cd4b6bd933abeb9934e + SHA256: 250d0b589cba97caddc86a28849365ad0d475539448cf76bbae93190985b3387 + SHA512: 7129c012bca7f0e7cfa51c73ba0898697f7a9f31abd5ae57d38be5b6b646fd80ab33be9b262cd3e2486c66f65aaf4ec6e881ae6e5a82ec9df62f00fa072510fc + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.gz) + + SIZE: 15154017 bytes + SHA1: c7e50159357afd87b13dc5eaf4ac486a70011149 + SHA256: afd832b8d5ecb2e3e1477ec6a9408fdf9898ee73e4c5df17a2b2cb36bd1c355d + SHA512: 155121ed00a1a56e40a74bafd93dcc34a0ea65c56589cf36daa8318368acc12cc88cb73aba548ef204c8d2ad917b0feccf90b5608a86d1aca1203feca2263386 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.xz) + + SIZE: 9382672 bytes + SHA1: e1f4e043006a762604c042e6aac7540854a92d8c + SHA256: 94eeae3b3e3ac93cfd205e1aaef4c5325227b7656cbb2fc1ee217618145dd19d + SHA512: c712ee69cb1d41ad8420177b9564e451ab795e4903f1edc20c14aa189b8e38c54c5119d913204d13a5f8fa424f2ec43bfad04c77b313ea4533e23a9b1d161392 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.zip) + + SIZE: 16686848 bytes + SHA1: b554328fb3d9f2a527adc5830de221b00e3ce2b9 + SHA256: 6e0491e029a6f4c40bc091033c5bc91f65438f3f9153f93f1b86889521e79cee + SHA512: 2f9409460c8729fff96522baf5c4a74e1a648db1749a471ee3b6523d8c01e1faaf5f17afdffcaf355654f23e8c2ac392830109dd68dfc4e5a694d95155c593b6 + +## Release Comment + +Thanks to everyone who helped with this release. + +The maintenance of Ruby 2.1, including this release, is based on the "Agreement for the Ruby stable version" of the [Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2015-12-16-ruby-2-2-4-released.md b/fa/news/_posts/2015-12-16-ruby-2-2-4-released.md new file mode 100644 index 0000000000..c57c7922ff --- /dev/null +++ b/fa/news/_posts/2015-12-16-ruby-2-2-4-released.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "Ruby 2.2.4 Released" +author: "nagachika" +translator: +date: 2015-12-16 12:00:00 +0000 +lang: en +--- + +Ruby 2.2.4 has been released. + +This release includes a security fix for the Fiddle extension. +Please view the topic below for more details. + +* [CVE-2015-7551: Unsafe tainted string usage in Fiddle and DL](https://www.ruby-lang.org/en/news/2015/12/16/unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551/) + +There are also some bugfixes. +See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_4/ChangeLog) for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2) + + SIZE: 13336518 bytes + SHA1: 6132840a859dbf2ac1498ba313021f299a870038 + SHA256: 31203696adbfdda6f2874a2de31f7c5a1f3bcb6628f4d1a241de21b158cd5c76 + SHA512: d27ca2f19c214ce87f906b57edd41f2f8af35b2871c191470facded9cfda15ba46e5c3bc7d5540225a38da6bd65050fcc8aaa4ffbadbb6bf7dc891c1821da0df + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.gz) + + SIZE: 16638151 bytes + SHA1: 818e5e157f76d4912ba3a7c7b4fc5156105e83c3 + SHA256: b6eff568b48e0fda76e5a36333175df049b204e91217aa32a65153cc0cdcb761 + SHA512: 5f5d4a5b6bb55643a2c2e4df9ec81062f62d97b2aa0de5faf5b4251f7e585b65a0ff07b4edf23c0969525e36916a132362f8349b6ab441ced8a86d0337532832 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.xz) + + SIZE: 10464500 bytes + SHA1: 9216cf34df7fd5ce8059a6403951d6d47964442a + SHA256: d28bff4641e382681c58072ddc244d025ac47ff71dd9426a92fcfc3830d1773c + SHA512: 755257eea0cb79f28f1d2dc6e2a5ee4b1954280f51153e5fe90605a875b1d52077660b87e4e04d11552591a1f60a1241e4c70056f073a217b3bad896f64780da + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.zip) + + SIZE: 18472352 bytes + SHA1: b6de8559d6e56ad09a3f4b57ef2c01e8c0754d5a + SHA256: 9b7f9e96ef84eef97f44bd5ab1fa70ece1668a52585a88ba6a3487579f12e6f4 + SHA512: 7a6678d3f9bc81eb7bb60de342820ed1bf44e834ee3e5ed6c713c8fa0a80c758c5a5260f17aa5ceae32e1f180187c9cb4e278e9fc6a7b8ad4386f9261426ad5b + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2015-12-16-unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551.md b/fa/news/_posts/2015-12-16-unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551.md new file mode 100644 index 0000000000..528b35a0b1 --- /dev/null +++ b/fa/news/_posts/2015-12-16-unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551.md @@ -0,0 +1,82 @@ +--- +layout: news_post +title: "CVE-2015-7551: Unsafe tainted string usage in Fiddle and DL" +author: "usa" +translator: +date: 2015-12-16 12:00:00 +0000 +tags: security +lang: en +--- + +There is an unsafe tainted string usage vulnerability in Fiddle and DL. +This vulnerability has been assigned the CVE identifier +[CVE-2015-7551](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-7551). + +## Details + +There is an unsafe tainted string vulnerability in Fiddle and DL. +This issue was originally reported and fixed with [CVE-2009-5147](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-5147) in DL, +but reappeared after DL was reimplemented using Fiddle and libffi. + +And, about DL, [CVE-2009-5147](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-5147) was fixed at Ruby 1.9.1, +but not fixed at other branches, then rubies which bundled DL +except Ruby 1.9.1 are still vulnerable. + +Impacted code looks something like this: + +{% highlight ruby %} +handle = Fiddle::Handle.new(dangerous_user_input) +{% endhighlight %} + +Or: + +{% highlight ruby %} +handle = Fiddle::Handle.new(some_library) +function_pointer = handle[dangerous_user_input] +{% endhighlight %} + +All users running an affected release should either upgrade or use one of +the workarounds immediately. + +## Affected Versions + +* All patch releases of Ruby 1.9.2 and Ruby 1.9.3 (DL and Fiddle). +* All patch releases of Ruby 2.0.0 prior to Ruby 2.0.0 patchlevel 648 (DL and Fiddle). +* All versions of Ruby 2.1 prior to Ruby 2.1.8 (DL and Fiddle). +* All versions of Ruby 2.2 prior to Ruby 2.2.4 (Fiddle). +* Ruby 2.3.0 preview 1 and preview 2 (Fiddle). +* prior to trunk revision 53153 (Fiddle). + +## Workarounds + +If you cannot upgrade, the following monkey patch can be applied as a +workaround for Fiddle: + +{% highlight ruby %} +class Fiddle::Handle + alias :old_initialize :initialize + + def initialize file, *args + raise SecurityError if file.tainted? && $SAFE > 0 + old_initialize file, *args + end + + alias :sym :[] + alias :old_call :[] + + def [] fun + raise SecurityError if fun.tainted? && $SAFE > 0 + old_call fun + end +end +{% endhighlight %} + +If you are using DL, use Fiddle instead of it. + +## Credits + +Thanks to Christian Hofstaedtler <zeha@debian.org> for reporting this issue! + +## History + +* Originally published at 2015-12-16 12:00:00 UTC diff --git a/fa/news/_posts/2015-12-25-ruby-2-3-0-released.md b/fa/news/_posts/2015-12-25-ruby-2-3-0-released.md new file mode 100644 index 0000000000..5d09fe4136 --- /dev/null +++ b/fa/news/_posts/2015-12-25-ruby-2-3-0-released.md @@ -0,0 +1,83 @@ +--- +layout: news_post +title: "Ruby 2.3.0 Released" +author: "naruse" +translator: +date: 2015-12-25 17:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.3.0. + +This is the first stable release of the Ruby 2.3 series. +It introduces many new features, for example: + +A [frozen string literal pragma](https://bugs.ruby-lang.org/issues/11473) +is introduced. +With Ruby 2.1, `"str".freeze` has been optimized to reduce object allocation. +Ruby 2.3 introduces a new magic comment and command line option to +freeze all string literals in the source files. +Additionally for debugging, you can get where the object is created on +`"can't modify frozen String"` error by using the +`--debug=frozen-string-literal` command line option. + +A [safe navigation operator](https://bugs.ruby-lang.org/issues/11537) +([so-called lonely operator](https://instagram.com/p/-M9l6mRPLR/)) `&.`, +which already exists in C#, Groovy, and Swift, is introduced to ease +`nil` handling as `obj&.foo`. `Array#dig` and `Hash#dig` are also added. +Note that this behaves like [try! of Active Support](http://api.rubyonrails.org/v4.2.5/classes/Object.html#method-i-try-21), +which specially handles only `nil`. + +The [did_you_mean gem is bundled](https://bugs.ruby-lang.org/issues/11252). +The did_you_mean gem +shows the candidates on the `NameError` and `NoMethodError` to ease +debugging. + +[RubyVM::InstructionSequence#to_binary and .load_from_binary](https://bugs.ruby-lang.org/issues/11788) are introduced as experimental features. With these features, we can make a ISeq (bytecode) pre-compilation system. + +Ruby 2.3 also includes many performance improvements, for example +[reconsidering method entry data structure](https://bugs.ruby-lang.org/issues/11278), +[introducing new table data structure](https://bugs.ruby-lang.org/issues/11420), +[optimizing Proc#call](https://bugs.ruby-lang.org/issues/11569), +machine code level tuning for object allocation and method calling code, +[smarter instance variable data structure](https://bugs.ruby-lang.org/issues/11170), +[`exception: false` keyword argument support on Socket#*_nonblock methods](https://bugs.ruby-lang.org/issues/11229), +and so on. Check the "Implementation improvements" section in the NEWS file. + +For a complete list of new features and compatibility notes, please see +[NEWS](https://github.com/ruby/ruby/blob/v2_3_0/NEWS) and +[ChangeLog](https://github.com/ruby/ruby/blob/v2_3_0/ChangeLog). + +With those changes, [2946 files changed, 104057 insertions(+), 59478 deletions(-)](https://github.com/ruby/ruby/compare/v2_2_0...v2_3_0) since Ruby 2.2.0! + +Merry Christmas, Happy Holidays, and enjoy programming with Ruby 2.3! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.bz2> + + SIZE: 14185617 bytes + SHA1: 6c8a832d49d22755ea8c45b6d53faf2ccc6d6ac9 + SHA256: ec7579eaba2e4c402a089dbc86c98e5f1f62507880fd800b9b34ca30166bfa5e + SHA512: 77b707359e754c3616699d21697752741497c719dc3d6fdfb55ed639e76d52560d293ae54cbe5c63be78dc73fbe60f1b8615d704d017bdfe1994aa9747d26a6c + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz> + + SIZE: 17648682 bytes + SHA1: 2dfcf7f33bda4078efca30ae28cb89cd0e36ddc4 + SHA256: ba5ba60e5f1aa21b4ef8e9bf35b9ddb57286cb546aac4b5a28c71f459467e507 + SHA512: 914d0201ecefaeb67aca0531146d2e89900833d8d2a597ec8a19be94529ab6b4be367f9b0cee2868b407288896cc14b64d96150223cac0aef8aafc46fc3dd7cc + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.xz> + + SIZE: 11294412 bytes + SHA1: 96e620e38af351c8da63e40cfe217ec79f912ba1 + SHA256: 70125af0cfd7048e813a5eecab3676249582bfb65cfd57b868c3595f966e4097 + SHA512: d893c5e6db5a0533e0da48d899c619964388852ef90e7d1b92a4363d5f189cd2dba32a009581f62b9f42a8e6027975fc3c18b64faf356f5e3ac43a8d69ec5327 + +* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.zip> + + SIZE: 19840511 bytes + SHA1: 3f88617568d9a4f491e8b32dca532363f73eaa71 + SHA256: 8270bdcbc6b62a18fdf1b75bd28d5d6fc0fc26b9bd778d422393a1b98006020a + SHA512: a3f397bb3c9c19d9b797552c5d60bb01c82db884cfa966df84881125bea35713cffd99f88fb86b271bae72d9cfb09ad9b33838cffcf6365c091459479914fdef diff --git a/fa/news/_posts/2016-02-24-support-plan-of-ruby-2-0-0-and-2-1.md b/fa/news/_posts/2016-02-24-support-plan-of-ruby-2-0-0-and-2-1.md new file mode 100644 index 0000000000..dab1a23c46 --- /dev/null +++ b/fa/news/_posts/2016-02-24-support-plan-of-ruby-2-0-0-and-2-1.md @@ -0,0 +1,42 @@ +--- +layout: news_post +title: "Support plans for Ruby 2.0.0 and Ruby 2.1" +author: "usa" +translator: +date: 2016-02-24 09:00:00 +0000 +lang: en +--- + +We announce the future support plans for Ruby 2.0.0 and Ruby 2.1. + +## About Ruby 2.0.0 + +As it has been announced before, all support for Ruby 2.0.0 has ended today. +Bug and security fixes from more recent Ruby versions will no longer be +backported to 2.0.0, and no further patch release of 2.0.0 will be released. + +We highly recommend that you upgrade to Ruby 2.3 or 2.2 as soon as possible. + +Please contact us via the ruby-core ML if you'd like to continue maintaining +the 2.0.0 branch as for some justifiable reason you can't upgrade. + +## About Ruby 2.1 + +We are planning to release Ruby 2.1.9 by the end of March. +After the release, we will end the normal maintenance phase of 2.1, +and start the security maintenance phase of it. +This means that after the release of 2.1.9 we will never backport +any bug fixes to 2.1 except security fixes. + +We recommend that you start planning to upgrade to Ruby 2.3 or 2.2. + +By the way, we are also planning to release Ruby 2.1.10 just after +releasing 2.1.9. This is not a bug fix release nor a security fix release. +We have never experienced a two-digit version number of Ruby. +Therefore, we consider it important to test such a release +without any critical security fixes. + +Ruby 2.1.10 will not include any changes from 2.1.9, +except for its version number. +You do not have to use it on production, but you should test it before +the release of 2.1.11 which will probably include security fixes. diff --git a/fa/news/_posts/2016-03-30-ruby-2-1-9-released.md b/fa/news/_posts/2016-03-30-ruby-2-1-9-released.md new file mode 100644 index 0000000000..6a179b46e9 --- /dev/null +++ b/fa/news/_posts/2016-03-30-ruby-2-1-9-released.md @@ -0,0 +1,58 @@ +--- +layout: news_post +title: "Ruby 2.1.9 Released" +author: "usa" +translator: +date: 2016-03-30 12:00:00 +0000 +lang: en +--- + +Ruby 2.1.9 has been released. + +This release includes many bug fixes. +See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_9/ChangeLog) +for details. + +[As announced before](https://www.ruby-lang.org/en/news/2016/02/24/support-plan-of-ruby-2-0-0-and-2-1/), this is the last normal release of the Ruby 2.1 series. +After this release we will never backport any bug fixes to 2.1 except security fixes. +We recommend that you start planning to upgrade to Ruby 2.3 or 2.2. + +By the way, we are planning to release Ruby 2.1.10 in a few days. +Ruby 2.1.10 will not include any changes from 2.1.9, except for its version number. +You do not have to use it on production, but you should test it because it has a two-digit version number. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.bz2) + + SIZE: 12016421 bytes + SHA1: 39524185b580a3390a3b5019819c8b28d3249766 + SHA256: 4f21376aa11e09b499c3254bbd839e68e053c0d18e28d61c428a32347269036e + SHA512: a86422132e4c64007a84a91696f4557bdcbc8716fbfe1962f1eef3754ee7f994f4de0b5b7e7231c25057515767040d5c4af33339750b6db15744662e9bd24f38 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.gz) + + SIZE: 15166126 bytes + SHA1: dd68afc652fe542f83a9a709a74f4da2662054bf + SHA256: 034cb9c50676d2c09b3b6cf5c8003585acea05008d9a29fa737c54d52c1eb70c + SHA512: 1e03aa720e932f019c4651c355e8ef35b87fdf69b054c9d39a319467d2a8e5bfe4995cbacd9add36b832c77761a47c9d1040f00e856ad5888d69ec7221455e35 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.xz) + + SIZE: 9395648 bytes + SHA1: 5e89efa5189c3def8ee8de18ce750a7e4a20ac32 + SHA256: 39f203f7498aed2456fb500147fada5adcbf102d89d4f6aca773ebcadd8ea82a + SHA512: 1f331a8910fd7a9ab9c41bf56aef12041dd413ad49c696f6df2c9a7ec3a3d5cdf383f2a3d30949ea37b8ecb39f50355e526412b36ed4e07b60733d9db4d2bd14 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.zip) + + SIZE: 16696728 bytes + SHA1: 4aa288b65fbf12692ac53577adc561c9a0f6a6ca + SHA256: 8610fdb1836d493c19600cfed4828083f85197096c0aea3f73fa1ed532cbb5a7 + SHA512: a212b6a58637f6bf4f456d7ecc7bbd8ceaa0c3f16cb844b872eb62eaf261b5874fdb79705241d05a356fcdc1d3fdd8a94fcd8e6ca62190e9f544c8f45a9f41af + +## Release Comment + +Thanks to everyone who helped with this release. + +The maintenance of Ruby 2.1, including this release, is based on the "Agreement for the Ruby stable version" of the [Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2016-04-01-ruby-2-1-10-released.md b/fa/news/_posts/2016-04-01-ruby-2-1-10-released.md new file mode 100644 index 0000000000..b26b59085a --- /dev/null +++ b/fa/news/_posts/2016-04-01-ruby-2-1-10-released.md @@ -0,0 +1,49 @@ +--- +layout: news_post +title: "Ruby 2.1.10 Released" +author: "usa" +translator: +date: 2016-04-01 02:00:00 +0000 +lang: en +--- + +Ruby 2.1.10 has been released. +This release is not intended for production use, but for compatibility tests with two-digit version numbers. +You don't have to replace Ruby 2.1.9 by 2.1.10 in normal use. + +As announced in the [2.1.9 release post](https://www.ruby-lang.org/en/news/2016/03/30/ruby-2-1-9-released/), Ruby 2.1.10 does not include any changes from 2.1.9, except for its version number (and only one small related change in its test suite). +Please test your applications and/or libraries for compatibility with two-digit version numbers. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.bz2) + + SIZE: 12015299 bytes + SHA1: 22dcd759d8cbb14c8735988fbc7ee5c35f9d4720 + SHA256: a74675578a9a801ac25eb7152bef3023432d6267f875b198eb9cd6944a5bf4f1 + SHA512: 4b7213695416876e4de3cbce912f61ac89db052c74f0daa8424477991cfc49b07300e960177ff576b634a97ee8afef3c5aded5d5806329dbd01d0ce7b42b9b63 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.gz) + + SIZE: 15165837 bytes + SHA1: 2a5194b1fd42a3f1f23f1e0844ae78332a9efd5d + SHA256: fb2e454d7a5e5a39eb54db0ec666f53eeb6edc593d1d2b970ae4d150b831dd20 + SHA512: 5f9c0cc3d10b4e04c63f001b4add782c34b9f260368f48b443b397cea57680d328f7c28cbb2a9be4c2f5acd114bac07dacb100d57018fa4d2a1792fc03083418 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.xz) + + SIZE: 9362868 bytes + SHA1: adcc9e10b8f7add0e19f8c70afc134c069a862ca + SHA256: 5be9f8d5d29d252cd7f969ab7550e31bbb001feb4a83532301c0dd3b5006e148 + SHA512: 72406ac133af7f057d4633d2a300e49e133881f6b36ff4cdf6c72b4ff4325de332fc5a45c96ea407140a8bf09cdc307e13107c539196902e5b67b7d24cd72dc9 + +* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.zip) + + SIZE: 16706304 bytes + SHA1: 402158192b7673cb4e7a67f48f6d93945bc9fd13 + SHA256: 21cf83156ec782d17827fb9c8a945626dfd68cf0d9eb5ca7a78b12eb91c6f1fb + SHA512: 5490fc4726a1efaea8c7c541ca3102013b00a0af2903d15009307265c93b218bb13aab0007d279823c740a9b173d957ca79f2d8f25932f04763ec1aa18d164e8 + +## Release Comment + +Thanks to everyone who helped with this release. diff --git a/fa/news/_posts/2016-04-26-ruby-2-2-5-released.md b/fa/news/_posts/2016-04-26-ruby-2-2-5-released.md new file mode 100644 index 0000000000..2196e5e3aa --- /dev/null +++ b/fa/news/_posts/2016-04-26-ruby-2-2-5-released.md @@ -0,0 +1,56 @@ +--- +layout: news_post +title: "Ruby 2.2.5 Released" +author: "usa" +translator: +date: 2016-04-26 12:00:00 +0000 +lang: en +--- + +Ruby 2.2.5 has been released. + +This release includes many bug fixes. +See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_5/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.bz2) + + SIZE: 13350551 bytes + SHA1: f78473fe60a632b778599374ae64612592c2c9c1 + SHA256: 22f0c6f34c0024e0bcaaa8e6831b7c0041e1ef6120c781618b833bde29626700 + SHA512: d3224814361c297bc36646c2e40f63c461ccf5a77fea5a3acdcb2c7ad1705bb229ac6abbd7ad1ae61cbe0fefd7a008c6102568d11366ad3107179302cd3e734e + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.gz) + + SIZE: 16654395 bytes + SHA1: 457707459827bd527347a5cee7b4dc509b486713 + SHA256: 30c4b31697a4ca4ea0c8db8ad30cf45e6690a0f09687e5d483c933c03ca335e3 + SHA512: 3dd8688c64b8b143bdd6b0f123b7c2ecdd1b93c7c9ee51b2774a3b0b864897789932c7ad406293a6ab12c9eb9db9cfb2940fc14e2afc4f79718994f7668cbd5f + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.xz) + + SIZE: 10457620 bytes + SHA1: 58484284dd613e139e8f7023b1168e9034a8766d + SHA256: f86feaa0a578e8da0924ced3ec68b25b50d69fc9a72cc8d919bc3c73f85f87d7 + SHA512: 6da4bdb0a43d56c7a8e4dddbcacf237e998ebb54706c8f835b53713dbdf924e40d5f89f63017515e1d66904ca01f28058cf296567104e06540c57f036dcdd0fe + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.zip) + + SIZE: 18493821 bytes + SHA1: e4f497e5b79768ae93dd73ac26da4ff5dd722bfe + SHA256: d5094d7cc50266772a8352c68b7fcd865889fd174c09e2f11bb003696cd04bb3 + SHA512: b3789063252e361aa4598ecd9170fc360f0d5685497975ce09442fe5815c438b67b95fc67e56b99ab4044a49715ed1a8b1fb089f757c7c0d1a777536e06de8cf + +## Release Comment + +Thanks to everyone who helped with this release. + +With this release, the maintainer of Ruby 2.2 changed from nagachika-san to usa. +About two thirds of the changes included in this release were made by nagachika-san. +Thanks for his great contributions. + +The maintenance of Ruby 2.2, including this release, +is based on the "Agreement for the Ruby stable version" of the +[Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2016-04-26-ruby-2-3-1-released.md b/fa/news/_posts/2016-04-26-ruby-2-3-1-released.md new file mode 100644 index 0000000000..e564d209e9 --- /dev/null +++ b/fa/news/_posts/2016-04-26-ruby-2-3-1-released.md @@ -0,0 +1,51 @@ +--- +layout: news_post +title: "Ruby 2.3.1 Released" +author: "nagachika" +translator: +date: 2016-04-26 12:00:00 +0000 +lang: en +--- + +Ruby 2.3.1 has been released. + +This is the first TEENY version release of the stable 2.3 series. + +There are many bugfixes. +See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_1/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2) + + SIZE: 14432088 bytes + SHA1: 4ee76c7c1b12d5c5b0245fc71595c5635d2217c9 + SHA256: 4a7c5f52f205203ea0328ca8e1963a7a88cf1f7f0e246f857d595b209eac0a4d + SHA512: a8659b96a3a481a3dbdbb6997eb18ff1f8cd926a9707a90d071e937315c21d372c89252f0d44732ae5007d2678fda8c8fbceafa4e4b4ff500d236fb796284d8d + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz) + + SIZE: 17797997 bytes + SHA1: c39b4001f7acb4e334cb60a0f4df72d434bef711 + SHA256: b87c738cb2032bf4920fef8e3864dc5cf8eae9d89d8d523ce0236945c5797dcd + SHA512: 7399d59b54764e02760ed6cac525a43c5e7212aebbbff8a04234dc45adbc0cd9fe1ff9a9328eefd38f02d3b6c5b2e3ca843808784755ff4e66ded624f55c150a + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.xz) + + SIZE: 11407048 bytes + SHA1: 83499c14c674cf2d88e495031434a94c06330879 + SHA256: 6725b5534d5a3a21ec4f14d6d7b9921a0d00d08acb88fd04cd50b47b70496338 + SHA512: e9d89aeefb1b1e72cee9d3d414b27c793cf09ff3ed5e0ea5277a2b6ae1cae9fdbf6b404a84b42c0c6835754eb04674fc4f1470fbfedabeee3f57e518f13db633 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.zip) + + SIZE: 19842037 bytes + SHA1: ab9dec602b11ee4cfc295d6aa87ebe712372d123 + SHA256: 4c8ae431b33f78d64cabb31911e0890e9a3ac380b4f22b11738f9baeeda51763 + SHA512: a26d3ab5983c6f3ea454e3e75554137305525479e4c15c0ae424689e870e2c5a9f0fe194975cf362cc5528ce601e31a0a15b87c7af200fd0d1da17459435b953 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2016-05-16-confoo-cfp.md b/fa/news/_posts/2016-05-16-confoo-cfp.md new file mode 100644 index 0000000000..1e39cb8bf5 --- /dev/null +++ b/fa/news/_posts/2016-05-16-confoo-cfp.md @@ -0,0 +1,19 @@ +--- +layout: news_post +title: "ConFoo Vancouver 2016 is looking for Ruby speakers" +author: "afilina" +translator: +date: 2016-05-16 20:06:00 +0000 +lang: en +--- + +ConFoo is once more seeking passionate speakers for the upcoming conference. + +{: style="border:0; float:right; margin-left:20px;" width="180" height="130"}ConFoo is happy to open the [call for papers][1] of the Vancouver 2016 edition! If you are interested in speaking about Ruby or other web development topics, please submit until June 6th. ConFoo will cover travel and hotel for the speakers who require it. + +ConFoo Vancouver will be held on December 5-7, 2016. For those who are familiar with ConFoo Montreal, that conference will still be running annually in addition to Vancouver. [Visit their site][2] to learn more. + +Talks are 35 minutes for the topic and 10 minutes for Q&A, for a total of 45 minutes. ConFoo is eagerly expecting your proposals! + +[1]: https://confoo.ca/en/yvr2016/call-for-papers +[2]: https://confoo.ca/en/yvr2016 diff --git a/fa/news/_posts/2016-06-20-ruby-2-4-0-preview1-released.md b/fa/news/_posts/2016-06-20-ruby-2-4-0-preview1-released.md new file mode 100644 index 0000000000..1dd186e812 --- /dev/null +++ b/fa/news/_posts/2016-06-20-ruby-2-4-0-preview1-released.md @@ -0,0 +1,115 @@ +--- +layout: news_post +title: "Ruby 2.4.0-preview1 Released" +author: "naruse" +translator: +date: 2016-06-20 09:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.4.0-preview1. + +Ruby 2.4.0-preview1 is the first preview of Ruby 2.4.0. +This preview1 is released earlier than usual because it includes so +many new features and improvements. +Feel free to +[send feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport) +since you can still change the features. + +## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) + +Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) +doesn't specify details of the Integer class, +CRuby has two visible Integer classes: Fixnum and Bignum. +Ruby 2.4 unifies them into Integer. + +## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) + +`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle +Unicode case mappings instead of only ASCII case mappings. + +## Performance improvements + +Ruby 2.4 also contains the following performance improvements including +language changes: + +### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) + +`[x, y].max` and `[x, y].min` are optimized to not create a temporary array +under certain conditions. + +### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) + +Added `Regexp#match?`, which executes a regexp match without creating +a back reference object and changing `$~` to reduce object allocation. + +### Other performance improvements + +* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) + +## Debugging + +### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) + +Ruby ignores exceptions in threads unless another thread explicitly joins them. +With `report_on_exception = true`, +you can notice if a thread has died due to an unhandled exception. + +Send us feedback what should be the default for `report_on_exception` +and about report-on-GC. + +### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) + +Ruby has deadlock detection around waiting threads, but its report doesn't +include enough information for debugging. +Ruby 2.4's deadlock detection shows threads with their backtrace and +dependent threads. + +Try and enjoy programming with Ruby 2.4.0-preview1, and +[send us feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport)! + +## Notable Changes since 2.3 + +See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0_preview1/NEWS) +and [ChangeLog](https://github.com/ruby/ruby/blob/v2_4_0_preview1/ChangeLog) +for details. + +With those changes, +[1140 files changed, 33126 insertions(+), 50993 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0_preview1) +since Ruby 2.3.0! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.tar.bz2> + + * SIZE: 14108114 bytes + * SHA1: 7dcc42548d0724d83b6589ab98f34282845d7bcd + * SHA256: 17570f0b84215ca82252f10c167ee50bc075383c018420c6b2601ae1cade0649 + * SHA512: c9873e8686eb54dbde61d6e23cd5197beebccd6cb31fd12c82763ebe1fde17095d7514d9d93c2c82b238032c98691df5479dc2d666a8a590e0fc54450ec29cb5 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.tar.gz> + + * SIZE: 17605452 bytes + * SHA1: 1003a1e57547d81f4bb979c0f40f242afc284cd5 + * SHA256: 80d02f49f40e7ce07b70bee7efda751b0595a349a017306e9fe8caad5da13e64 + * SHA512: 4b603ab4ff9ea7e8bb8053aa4b638839d534241466d7f0e4d5bca3f2ea416694c2ea391790f1ffdc07fa538918d27707621741eb0ddc7bd00eb9d7628622787a + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.tar.xz> + + * SIZE: 11155800 bytes + * SHA1: bc33085277266f5a09a143bf6817affcb77f8e7f + * SHA256: 62942c7300727469fe3d2b43e5a5c772d4836cf624a1d644bdece2afaca472c8 + * SHA512: dfc2c6642d49fa95383817a6dc82c416b3218ddfdaf882d6d2e5a7da22d0a5ac142e516a57aa96214070f3c7551d275044233ac052c82d67189b01c39847aad4 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.zip> + + * SIZE: 19904781 bytes + * SHA1: 25c16ee91bbcb0224f80e20d938f5c08832973f7 + * SHA256: fd588aea1558b1171f87a3dd342ee207b8995a2c0a8241d7aa15bcfa16036854 + * SHA512: f2fff35ff9157a4b31177b3d6b91bdaad04c22b3c626c3a5e5ec9a31b103f9607b31c909ef27880065cfdbcfa5d6901a6db89d22e0c645666d069c5b6dd1818b + +## Release Comment + +See also the release schedule and other information: + +[ReleaseEngineering24](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering24) diff --git a/fa/news/_posts/2016-07-25-ruby-prize-2016.md b/fa/news/_posts/2016-07-25-ruby-prize-2016.md new file mode 100644 index 0000000000..dd37e4f231 --- /dev/null +++ b/fa/news/_posts/2016-07-25-ruby-prize-2016.md @@ -0,0 +1,31 @@ +--- +layout: news_post +title: "Ruby Prize 2016 nominations are now open" +author: "Ruby Association" +translator: +date: 2016-07-25 12:00:00 +0000 +lang: en +--- + +Ruby Prize 2016 nominations are now being accepted for new and outstanding +members in the Ruby community. + +The Ruby Prize is given to recognize the efforts of remarkable activity and +achievements in the Ruby Community. The prize will be awarded by the executive +committee comprised of three parties, the Ruby Association, Nihon Ruby no Kai +and Matsue City. + +Ruby Prize winner and final nominee (1-2 people) will receive an award at the +RubyWorld Conference 2016, to be held in Matsue, Japan on November 3rd & 4th. + +In addition, the Ruby Prize winner will also be awarded 1 million yen +(approx. 9,683 USD at exchange rates as of July 12, 2016). + +Nominees will be selected by the following: + +* Recommendations from the "Prize Member" executive committee +* Recommendations from the general public (you). + +Please see below for more details. + +[Ruby Association: Now accepting nominations for the Ruby Prize Award 2016](http://www.ruby.or.jp/en/news/20160725.html) diff --git a/fa/news/_posts/2016-08-26-confoo-cfp.md b/fa/news/_posts/2016-08-26-confoo-cfp.md new file mode 100644 index 0000000000..4287bf16c1 --- /dev/null +++ b/fa/news/_posts/2016-08-26-confoo-cfp.md @@ -0,0 +1,20 @@ +--- +layout: news_post +title: "ConFoo Montreal 2017 is looking for Ruby speakers" +author: "afilina" +translator: +date: 2016-08-26 16:00:00 +0000 +lang: en +--- + +Want to get your web development ideas in front of a live audience? The [call for papers][1] for the ConFoo Montreal 2017 conference is open! If you have a burning desire to hold forth about Ruby, databases, JavaScript, or any other web development topics, ConFoo wants to see your proposals. + +{: style="border:0; float:right; margin-left:20px;" width="180" height="130"} +The window is open only from August 21 to September 20, 2016, so hurry. An added benefit: If your proposal is selected and you live outside of the Montreal area, ConFoo will cover your travel and hotel. + +You’ll have 45 minutes to wow the crowd, with 35 minutes for your topic and 10 minutes for Q&A. ConFoo can’t wait to see your proposals. Knock us out! + +ConFoo Montreal will be held on March 8-10, 2017. For those of you who already know about our conference, be aware that this annual tradition will still be running in addition to ConFoo Vancouver. Visit [ConFoo's site][2] to learn more about both events. + +[1]: https://confoo.ca/en/yul2017/call-for-papers +[2]: https://confoo.ca/en diff --git a/fa/news/_posts/2016-09-08-ruby-2-4-0-preview2-released.md b/fa/news/_posts/2016-09-08-ruby-2-4-0-preview2-released.md new file mode 100644 index 0000000000..dbce24696f --- /dev/null +++ b/fa/news/_posts/2016-09-08-ruby-2-4-0-preview2-released.md @@ -0,0 +1,121 @@ +--- +layout: news_post +title: "Ruby 2.4.0-preview2 Released" +author: "naruse" +translator: +date: 2016-09-08 09:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.4.0-preview2. + +Ruby 2.4.0-preview2 is the second preview of Ruby 2.4.0. +This preview2 is released to get feedback from the community. +Feel free to +[send feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport) +since you can still influence the features. + +## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) + +Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) +doesn't specify details of the Integer class, +Ruby had two visible Integer classes: Fixnum and Bignum. +Ruby 2.4 unifies them into Integer. +All C extensions which touch the Fixnum or Bignum class need to be fixed. + +See also [the ticket](https://bugs.ruby-lang.org/issues/12005) and [akr's slides](http://www.a-k-r.org/pub/2016-09-08-rubykaigi-unified-integer.pdf). + +## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) + +`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle +Unicode case mappings instead of only ASCII case mappings. + +## Performance improvements + +Ruby 2.4 also contains the following performance improvements including +language changes: + +### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) + +`[x, y].max` and `[x, y].min` are optimized to not create a temporary array +under certain conditions. + +### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) + +Added `Regexp#match?`, which executes a regexp match without creating +a back reference object and changing `$~` to reduce object allocation. + +### Other performance improvements + +* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) + +## Debugging + +### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) + +Ruby ignores exceptions in threads unless another thread explicitly joins them. +With `report_on_exception = true`, +you can notice if a thread has died due to an unhandled exception. + +Send us feedback what should be the default for `report_on_exception` +and about report-on-GC, which shows a report when a thread is +garbage collected without join. + +### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) + +Ruby has deadlock detection around waiting threads, but its report doesn't +include enough information for debugging. +Ruby 2.4's deadlock detection shows threads with their backtrace and +dependent threads. + +Try and enjoy programming with Ruby 2.4.0-preview2, and +[send us feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport)! + +## Other notable changes since 2.3 + +* Support OpenSSL 1.1.0 +* ext/tk is now removed from stdlib [Feature #8539](https://bugs.ruby-lang.org/issues/8539) + +See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0_preview2/NEWS) +and [ChangeLog](https://github.com/ruby/ruby/blob/v2_4_0_preview2/ChangeLog) +for details. + +With those changes, +[2353 files changed, 289057 insertions(+), 73847 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0_preview2) +since Ruby 2.3.0! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview2.tar.bz2> + + * SIZE: 12463225 bytes + * SHA1: 95a501624f1cf4bb0785d3e17afd0ad099f66385 + * SHA256: 2224c55b2d87b5c0f08d23a4618e870027dbc1cffbfb4a05efd19eac4ff4cf1d + * SHA512: 0c9a59a2f57a99c4ee8539a30f41da1de7547566203f89d856e1be9dbb44365754e6c470145dc9336eb324e0feb2f53d9fef18a1564968ac21f9ee528905949f + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview2.tar.gz> + + * SIZE: 15586514 bytes + * SHA1: 492a13c4ddc1c0c218433acb00dcf7ddeef96fe0 + * SHA256: fec544836428aada2dc593a8cc42ce330798a805e49ecb807a0e21b386fd0b14 + * SHA512: 5a3de852a7611e79f38219ed7bb13772aaabb25538ca843d38743180a0cc939a4e34c008b61d578da785285196b6b8882270bddc17cbed481237db8afa4c54e4 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview2.tar.xz> + + * SIZE: 9886832 bytes + * SHA1: 95d5fd7d54d86497194f69ec433755a517dcde8f + * SHA256: 6c2d25bedc50c2f19b0e349f0ffd9b9a83000d9cb6a677bf5372fb493d33e16a + * SHA512: b9bd898d17583103ee61b4764ac86eb62c9661fca1f41ff0d06a15965a0a1ba581491d4b8a342e527d63e102b6ddcb2acebdabe5b246409ce9711e13f9428d5b + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview2.zip> + + * SIZE: 17401564 bytes + * SHA1: 5f3a5b2fd03f70d49e74ec36be3e0c110f6c17cc + * SHA256: 4d0e466148283ad52208b1e1b70b018aefb7fa95b490fc862d5ea4ca284ecdd2 + * SHA512: 0ef2098d995238580245a4bcee843641199c1194189be13614611e2ffec329278072319a799d409eaf13b1cff45f05a0eae02d9ea8ccc69058fa49e03eca0130 + +## Release Comment + +See also the release schedule and other information: + +[ReleaseEngineering24](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering24) diff --git a/fa/news/_posts/2016-10-20-fukuoka-ruby-award-2017.md b/fa/news/_posts/2016-10-20-fukuoka-ruby-award-2017.md new file mode 100644 index 0000000000..90672f1b0e --- /dev/null +++ b/fa/news/_posts/2016-10-20-fukuoka-ruby-award-2017.md @@ -0,0 +1,66 @@ +--- +layout: news_post +title: "2017 Fukuoka Ruby Award Competition - Entries to be judged by Matz" +author: "Fukuoka Ruby" +translator: +date: 2016-10-20 00:00:00 +0000 +lang: en +--- + +Dear Ruby Enthusiasts, + +The Government of Fukuoka, Japan, together with "Matz" Matsumoto would like to +invite you to enter the following Ruby competition. If you have developed an +interesting Ruby program, please be encouraged to apply. + +2017 Fukuoka Ruby Award Competition - Grand Prize - 1 Million Yen! + +Entry Deadline: December 27, 2016 + + + +Matz and a group of panelists will select the winners of the Fukuoka Competition. +The grand prize for the Fukuoka Competition is 1 million yen. +Past grand prize winners include Rhomobile (USA) and APEC Climate Center (Korea). + +[http://myfukuoka.com/category/news/ruby-news/](http://myfukuoka.com/category/news/ruby-news/) + +Programs entered in the competition do not have to be written entirely in Ruby +but should take advantage of the unique characteristics of Ruby. + +Projects must have been developed or completed within the past 12 months to be +eligible. Please visit the following Fukuoka websites for additional details or +to enter: + +[http://www.digitalfukuoka.jp/events/114](http://www.digitalfukuoka.jp/events/114) +or +[http://myfukuoka.com/events/2017-fukuoka-ruby-award-guidelines-for-applicants/](http://myfukuoka.com/events/2017-fukuoka-ruby-award-guidelines-for-applicants/) + +[http://www.digitalfukuoka.jp/uploads/event_detail/file/305/RubyAward_ApplicationForm_2017.doc](http://www.digitalfukuoka.jp/uploads/event_detail/file/305/RubyAward_ApplicationForm_2017.doc) + +Please email the application form to award@f-ruby.com. + +This year, we have the following special prizes: + +The winner of the AWS Prize will receive: + +* Amazon Fire Tablet (subject to change) +* AWS architect technical consultation + +The winner of the GMO Pepabo Prize will receive: + +* Gift basket filled with local foods and snacks (30,000 yen value) +* 50,000 yen gift certificate toward domain services + +The winner of the IIJ GIO Prize will receive: + +* IIJ GIO free coupon worth 500,000 yen (up to 6 months) + +The winner of the Salesforce Prize will receive: + +* salesforce.com novelty goods + +"Matz will be testing and reviewing your source code thoroughly, so it's very +meaningful to apply! The competition is free to enter." + +Thanks! diff --git a/fa/news/_posts/2016-11-09-ruby-2-4-0-preview3-released.md b/fa/news/_posts/2016-11-09-ruby-2-4-0-preview3-released.md new file mode 100644 index 0000000000..397af579b5 --- /dev/null +++ b/fa/news/_posts/2016-11-09-ruby-2-4-0-preview3-released.md @@ -0,0 +1,136 @@ +--- +layout: news_post +title: "Ruby 2.4.0-preview3 Released" +author: "naruse" +translator: +date: 2016-11-09 09:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.4.0-preview3. + +Ruby 2.4.0-preview3 is the third preview of Ruby 2.4.0. +This preview3 is released to get feedback from the community. +Feel free to +[send feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport) +since you can still influence the features. + +## [Introduce hash table improvement (by Vladimir Makarov)](https://bugs.ruby-lang.org/issues/12142) + +Improve the internal structure of hash table (st_table) by introducing open addressing +and an inclusion order array. +This improvement has been discussed with many people, especially with Yura Sokolov. + +## Binding#irb: Start a REPL session similar to `binding.pry` + +While you are debugging, you may often use `p` to see the value of variables. +With [pry](https://github.com/pry/pry) you can use `binding.pry` in your application +to launch a REPL and run any Ruby code. +[r56624](https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a) +introduces `binding.irb` which behaves like that with irb. + +## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) + +Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) +doesn't specify details of the Integer class, +Ruby had two visible Integer classes: Fixnum and Bignum. +Ruby 2.4 unifies them into Integer. +All C extensions which touch the Fixnum or Bignum class need to be fixed. + +See also [the ticket](https://bugs.ruby-lang.org/issues/12005) and [akr's slides](http://www.a-k-r.org/pub/2016-09-08-rubykaigi-unified-integer.pdf). + +## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) + +`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle +Unicode case mappings instead of only ASCII case mappings. + +## Performance improvements + +Ruby 2.4 also contains the following performance improvements including +language changes: + +### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) + +`[x, y].max` and `[x, y].min` are optimized to not create a temporary array +under certain conditions. + +### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) + +Added `Regexp#match?`, which executes a regexp match without creating +a back reference object and changing `$~` to reduce object allocation. + +### Other performance improvements + +* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) + +## Debugging + +### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) + +Ruby ignores exceptions in threads unless another thread explicitly joins them. +With `report_on_exception = true`, +you can notice if a thread has died due to an unhandled exception. + +Send us feedback what should be the default for `report_on_exception` +and about report-on-GC, which shows a report when a thread is +garbage collected without join. + +### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) + +Ruby has deadlock detection around waiting threads, but its report doesn't +include enough information for debugging. +Ruby 2.4's deadlock detection shows threads with their backtrace and +dependent threads. + +Try and enjoy programming with Ruby 2.4.0-preview3, and +[send us feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport)! + +## Other notable changes since 2.3 + +* Support OpenSSL 1.1.0 +* ext/tk is now removed from stdlib [Feature #8539](https://bugs.ruby-lang.org/issues/8539) +* XMLRPC is now removed from stdlib [Feature #12160](https://bugs.ruby-lang.org/issues/12160) + +See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0_preview3/NEWS) +and [ChangeLog](https://github.com/ruby/ruby/blob/v2_4_0_preview3/ChangeLog) +for details. + +With those changes, +[2470 files changed, 283051 insertions(+), 64902 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0_preview3) +since Ruby 2.3.0! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.bz2> + + SIZE: 12615328 bytes + SHA1: fefe49f6a7d5b642936c324f3b05aaac827355db + SHA256: 305a2b2c627990e54965393f6eb1c442eeddfa149128ccdd9f4334e2e00a2a52 + SHA512: 6602c65a7b1e3bc680acc48217108f4335e84fdd74a9cf06f2e2f9ad00a2fccacf9fa035a912bc9d5cc3f0c7a5e21475971dfac37b0364311ef3645f25c7ddf9 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.gz> + + SIZE: 15758023 bytes + SHA1: f6a6ec9f7fedad0bf4efee2e42801cc963f60dca + SHA256: c35fe752ccfabf69bf48e6aab5111c25a05938b428936f780638e2111934c9dd + SHA512: 68556d5252b6813b4c8eeba32733e940207f80694b5c5d20e69bf01eb52929ed2466496b05a895a5ad4831d430695e17624eb35b728b2d4d7cf02df756ac48b4 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.xz> + + SIZE: 9957596 bytes + SHA1: 66592b1a52f985638d639e7c3dd6bdda4e0569d0 + SHA256: b14be2b5c80bff0d6894ae2b37afdb17a968413e70236ec860f3e2d670b4c317 + SHA512: 5be20f0b2609745790c2b22f2228e69a840f63c34a117a1f95fd5436af211f0a6db2758d513d3e095a2d97c53c80793579cb2a1e00e70cf72c487a88c4a40d33 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.zip> + + SIZE: 17579012 bytes + SHA1: 15d08cff952da3844ae54887b7f74b12d47c9ee2 + SHA256: b95a8f67fb7d6e852db77c5660c8878c14d68eb72c5501dac164a7e640ecb06e + SHA512: fa15e1b7ab0cab56c9a580e1b1e2fee250ee0b9c59546079675a1931a36e37131bd37d64033c75e05d8e9d9fcc33ce7850254d3acaca2136cf3bd08b070244f0 + +## Release Comment + +See also the release schedule and other information: + +[ReleaseEngineering24](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering24) diff --git a/fa/news/_posts/2016-11-15-ruby-2-2-6-released.md b/fa/news/_posts/2016-11-15-ruby-2-2-6-released.md new file mode 100644 index 0000000000..347eb9b8f8 --- /dev/null +++ b/fa/news/_posts/2016-11-15-ruby-2-2-6-released.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "Ruby 2.2.6 Released" +author: "usa" +translator: +date: 2016-11-15 12:00:00 +0000 +lang: en +--- + +Ruby 2.2.6 has been released. + +This release includes new SSL certificates for RubyGems. +And, this also includes about 80 bug fixes after the previous release. +See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_6/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.bz2) + + SIZE: 13378616 bytes + SHA1: 67b15fcc394bb1ffb5a7e926dcd6222d8e988188 + SHA256: e845ba41ea3525aafaa4094212f1eadc57392732232b67b4394a7e0f046dddf7 + SHA512: 7a93f72d236521ac28c8a0bc0c73cf805797a8813d22e02f42c5fc05dd39f6e422817272e0db6a24c245f6f97ad4b2b412a9a47ac50156ab186df596918a5f34 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.gz) + + SIZE: 16663387 bytes + SHA1: a5aaf19694470e543c8216e3f1189e48b6dbb0da + SHA256: de8e192791cb157d610c48a9a9ff6e7f19d67ce86052feae62b82e3682cc675f + SHA512: 221ea2d18ff23e65539ee184e09ef78643e46266a0ca18ccd2cb251970a6c057b843363f7c97541b2a6e68e1c3c41a36e2ae5c8218da888e0429473504abf66d + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.xz) + + SIZE: 10487776 bytes + SHA1: 6248eb97cbb5533009ef91c100d42e72af283f16 + SHA256: 9414ecc0d09cf71c9a24e8dc82fcc87919ac7359fb08db2791d6c32bfd157339 + SHA512: a2cfde1c6df4df6b996f8d86c52b255fd43b469f8b9f0d7a81ce5f4de949a67025d8bead4ce61f03263eb6a8378b156b843f97b429208afaa1d3bfd0a7af4ef4 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.zip) + + SIZE: 18506149 bytes + SHA1: 6e207a91f13e301379d4fd37b7af847808185e41 + SHA256: 71bafc98c0b6f7b70cd79473952060e9b9fc36c8d57ee21c6b775451a16e6f9a + SHA512: dfce7a0e1c3e3d64490dfad101897e8aaacb6f1c0b193a97a38a4288532ec65464796de898685497ba35f199ed6d8eeaf9bb84d31cab0ea4cfd762466597a840 + +## Release Comment + +Thanks to everyone who helped with this release. + +The maintenance of Ruby 2.2, including this release, +is based on the "Agreement for the Ruby stable version" of the +[Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2016-11-15-ruby-2-3-2-released.md b/fa/news/_posts/2016-11-15-ruby-2-3-2-released.md new file mode 100644 index 0000000000..6da9dec500 --- /dev/null +++ b/fa/news/_posts/2016-11-15-ruby-2-3-2-released.md @@ -0,0 +1,54 @@ +--- +layout: news_post +title: "Ruby 2.3.2 Released" +author: "nagachika" +translator: +date: 2016-11-15 12:00:00 +0000 +lang: en +--- + +Ruby 2.3.2 has been released. + +This is a TEENY version release of the stable 2.3 series. + +This release contains an update to RubyGems 2.5.2 +and updates of the included SSL certificates. + +There are many bugfixes, too. +See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_2/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.bz2) + + SIZE: 14428572 bytes + SHA1: 7adc23d308d335486a03f0099dad2b2f44b8a4a8 + SHA256: e6ce83d46819c4120c9295ff6b36b90393dd5f6bef3bb117a06d7399c11fc7c0 + SHA512: 78699bae5b0a2382a58f9d51f7d891341f00ad3a90d9ca06b68b1b245cf5acebc3a82133e39bf6a412ac999a5c0f778a0dab177c2569ffbee085ffff6f6ec38e + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.gz) + + SIZE: 17814200 bytes + SHA1: baef56b27941bfbfac6e2cd005b686d320c7f124 + SHA256: 8d7f6ca0f16d77e3d242b24da38985b7539f58dc0da177ec633a83d0c8f5b197 + SHA512: 833e76555c72fd142d89701715e6c6d838121347c4c7aa857478ba1e8f7596aa7c4fd1950046322747e46db041288747e4c1943cf9b13e064c6e85ee60d6515a + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.xz) + + SIZE: 11420276 bytes + SHA1: b7c780dbfc34b5baea116504ae700f68c92379a0 + SHA256: 5c78f311045ce48160092160444dec2744941a5e37d7865032978bd5bf392f0c + SHA512: f2e602281cbcfad81b8197b9555bf637a1ef34f51dbc7548e5e0c5996ab1b7db5bd9eeb902128d37eed90f39b559c569aa75f2b29fe5f65085be65a63206fd72 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.zip) + + SIZE: 19861601 bytes + SHA1: 1ac64ad7cb1ed9004101812f5b707c151570dd84 + SHA256: b8ad5b47fad22610476a4abc1c32b8e558265f9b20a5865a12836709028cbd76 + SHA512: 8a794c8eed53380b026b150b0ce176af2a6ba278d5f7a5067e27615940ae85b6af28ac7187adc5d7af04c82442271ed0d8530d9fe751810ecc6c75340f81bd03 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2016-11-21-ruby-2-3-3-released.md b/fa/news/_posts/2016-11-21-ruby-2-3-3-released.md new file mode 100644 index 0000000000..b765da406c --- /dev/null +++ b/fa/news/_posts/2016-11-21-ruby-2-3-3-released.md @@ -0,0 +1,55 @@ +--- +layout: news_post +title: "Ruby 2.3.3 Released" +author: "nagachika" +translator: +date: 2016-11-21 10:30:00 +0000 +lang: en +--- + +Ruby 2.3.3 has been released. + +This release contains a bug fix concerning Refinements and Module#prepend. +The combined use of Module#refine and Module#prepend to the same class +could cause an unexpected `NoMethodError`. +This is a regression on Ruby 2.3.2 released last week. +See [Bug #12920](https://bugs.ruby-lang.org/issues/12920) for details. + +There are some other bugfixes, too. +See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_3/ChangeLog) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.bz2) + + SIZE: 14433673 bytes + SHA1: a8db9ce7f9110320f33b8325200e3ecfbd2b534b + SHA256: 882e6146ed26c6e78c02342835f5d46b86de95f0dc4e16543294bc656594cc5b + SHA512: 88f7782effd35bfe0b4c33140b5eb147d09b63fbb35b9c42d2200c010f387e2b70984ead1eca86569e8ec31f08b35289d440c0ca76b662dadb760f848e863d91 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.gz) + + SIZE: 17813577 bytes + SHA1: 1014ee699071aa2ddd501907d18cbe15399c997d + SHA256: 241408c8c555b258846368830a06146e4849a1d58dcaf6b14a3b6a73058115b7 + SHA512: 80d9f3aaf1d60b9b2f4a6fb8866713ce1e201a3778ef9e16f1bedb7ccda35aefdd7babffbed1560263bd95ddcfe948f0c9967b5077a89db8b2e18cacc7323975 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.xz) + + SIZE: 11444164 bytes + SHA1: f2318460606d410e80dd5c82862a93e5736534de + SHA256: 1a4fa8c2885734ba37b97ffdb4a19b8fba0e8982606db02d936e65bac07419dc + SHA512: 73dd6ed896ff52d953b153b2cab359c87953ea77521878f1ee16c1e217cc46bcb253100debe61ba631e6ffa0bc773e592d603a374508ed5189a311136ccd8d20 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.zip) + + SIZE: 19862248 bytes + SHA1: f0723ce176a829c9c33c31cdab6eca6ce0aef73e + SHA256: cbffda17fdb1bbd86dd36de093524b0a9b5c92e007fd60acac1c9804b429886e + SHA512: 5f75b77962c9d01fe591d87e20900d71a54c737e0d1198fae437729f21a9af84278a91ee73e850b5f49361b3cbf48af7a0a3ed9920cce932b58fd8e2420d5b26 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2016-12-12-ruby-2-4-0-rc1-released.md b/fa/news/_posts/2016-12-12-ruby-2-4-0-rc1-released.md new file mode 100644 index 0000000000..ae4cd395f3 --- /dev/null +++ b/fa/news/_posts/2016-12-12-ruby-2-4-0-rc1-released.md @@ -0,0 +1,135 @@ +--- +layout: news_post +title: "Ruby 2.4.0-rc1 Released" +author: "naruse" +translator: +date: 2016-12-12 09:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.4.0-rc1. + +Ruby 2.4.0-rc1 is the first release candidate of Ruby 2.4.0. +This rc1 is released to get feedback from the community. +Feel free to +[send feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport) +since you can still fix the features. + +## [Introduce hash table improvement (by Vladimir Makarov)](https://bugs.ruby-lang.org/issues/12142) + +Improve the internal structure of hash table (st_table) by introducing open addressing +and an inclusion order array. +This improvement has been discussed with many people, especially with Yura Sokolov. + +## Binding#irb: Start a REPL session similar to `binding.pry` + +While you are debugging, you may often use `p` to see the value of variables. +With [pry](https://github.com/pry/pry) you can use `binding.pry` in your application +to launch a REPL and run any Ruby code. +[r56624](https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a) +introduces `binding.irb` which behaves like that with irb. + +## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) + +Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) +doesn't specify details of the Integer class, +Ruby had two visible Integer classes: Fixnum and Bignum. +Ruby 2.4 unifies them into Integer. +All C extensions which touch the Fixnum or Bignum class need to be fixed. + +See also [the ticket](https://bugs.ruby-lang.org/issues/12005) and [akr's slides](http://www.a-k-r.org/pub/2016-09-08-rubykaigi-unified-integer.pdf). + +## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) + +`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle +Unicode case mappings instead of only ASCII case mappings. + +## Performance improvements + +Ruby 2.4 also contains the following performance improvements including +language changes: + +### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) + +`[x, y].max` and `[x, y].min` are optimized to not create a temporary array +under certain conditions. + +### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) + +Added `Regexp#match?`, which executes a regexp match without creating +a back reference object and changing `$~` to reduce object allocation. + +### Other performance improvements + +* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) + +## Debugging + +### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) + +Ruby ignores exceptions in threads unless another thread explicitly joins them. +With `report_on_exception = true`, +you can notice if a thread has died due to an unhandled exception. + +Send us feedback what should be the default for `report_on_exception` +and about report-on-GC, which shows a report when a thread is +garbage collected without join. + +### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) + +Ruby has deadlock detection around waiting threads, but its report doesn't +include enough information for debugging. +Ruby 2.4's deadlock detection shows threads with their backtrace and +dependent threads. + +Try and enjoy programming with Ruby 2.4.0-rc1, and +[send us feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport)! + +## Other notable changes since 2.3 + +* Support OpenSSL 1.1.0 (drop support for 0.9.7 or prior) +* ext/tk is now removed from stdlib [Feature #8539](https://bugs.ruby-lang.org/issues/8539) +* XMLRPC is now removed from stdlib [Feature #12160](https://bugs.ruby-lang.org/issues/12160) + +See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0_rc1/NEWS) +or commit logs for details. + +With those changes, +[2519 files changed, 288606 insertions(+), 83896 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0_rc1) +since Ruby 2.3.0! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.tar.bz2> + + SIZE: 12512729 bytes + SHA1: a0439652a97a2406b691e8a1e586e2cf08c258ba + SHA256: 3b156b20f9df0dd62cbeeb8e57e66ea872d2a5b55fabdef1889650122bcc2ea7 + SHA512: b43902ac7794487197df55a45256819d2e7540b77f1ed4eb68def3e0473ee98860a400862075bafadbde74f242e1dfe36a18cd6fe05ac42aae1ea6dddc9978ce + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.tar.gz> + + SIZE: 14098505 bytes + SHA1: 6b242f9ec7b908c9aa26e497440684ba06d86927 + SHA256: e41ada7650eed2a5800534d1201ba7c88f1627085659df994f47ab4c5e327745 + SHA512: 26d3c60483ce2d6eaabd7077085102fad6633f18cf5d772bacf6f563670030cb7bba22d54d8b7dfa5eac8b52990371c4a6ad1c095dff6f6b3a7bbe1a8ffb3754 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.tar.xz> + + SIZE: 9930088 bytes + SHA1: 7c404e8bec9859f708927f7203d4f42187e678b7 + SHA256: 3f014b3186d10676da6c512d14c65db23ccc4bf200fed9d7c6f9a58fd1e3295b + SHA512: 22e209e28da1f2394f50c0a7dd5d0d4d4c0c5a6b5b0b02260fad0267a0940b98f0e2b0f36a44f87d1612555cb3022f43cd136a5186c7f87650aa20264408d415 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.zip> + + SIZE: 15785968 bytes + SHA1: 7d82386434ccbb1701f2995286bf29c8b9179e01 + SHA256: 14e6910e36618cddffeb22bad5f1052f907dc31ec93d4aa945bca0905d8a52c4 + SHA512: 5dd89320d429e5bd5faf3709be7e5b70f7355304d6324d7ac13a69187e5f1446ad5988c8186bc33f4fea8934288294f9d16fea173f39b2b39967746c4b03d1d4 + +## Release Comment + +See also the release schedule and other information: + +[ReleaseEngineering24](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering24) diff --git a/fa/news/_posts/2016-12-25-ruby-2-4-0-released.md b/fa/news/_posts/2016-12-25-ruby-2-4-0-released.md new file mode 100644 index 0000000000..a4cfa29195 --- /dev/null +++ b/fa/news/_posts/2016-12-25-ruby-2-4-0-released.md @@ -0,0 +1,125 @@ +--- +layout: news_post +title: "Ruby 2.4.0 Released" +author: "naruse" +translator: +date: 2016-12-25 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.4.0. + +Ruby 2.4.0 is the first stable release of the Ruby 2.4 series. +It introduces many new features, for example: + +## [Introduce hash table improvement (by Vladimir Makarov)](https://bugs.ruby-lang.org/issues/12142) + +Improve the internal structure of hash table (st_table) by introducing open addressing +and an inclusion order array. +This improvement has been discussed with many people, especially with Yura Sokolov. + +## Binding#irb: Start a REPL session similar to `binding.pry` + +While you are debugging, you may often use `p` to see the value of variables. +With [pry](https://github.com/pry/pry) you can use `binding.pry` in your application +to launch a REPL and run any Ruby code. +[r56624](https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a) +introduces `binding.irb` which behaves like that with irb. + +## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) + +Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) +doesn't specify details of the Integer class, +Ruby had two visible Integer classes: Fixnum and Bignum. +Ruby 2.4 unifies them into Integer. +All C extensions which touch the Fixnum or Bignum class need to be fixed. + +See also [the ticket](https://bugs.ruby-lang.org/issues/12005) and [akr's slides](http://www.a-k-r.org/pub/2016-09-08-rubykaigi-unified-integer.pdf). + +## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) + +`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle +Unicode case mappings instead of only ASCII case mappings. + +## Performance improvements + +Ruby 2.4 also contains the following performance improvements including +language changes: + +### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) + +`[x, y].max` and `[x, y].min` are optimized to not create a temporary array +under certain conditions. + +### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) + +Added `Regexp#match?`, which executes a regexp match without creating +a back reference object and changing `$~` to reduce object allocation. + +### Other performance improvements + +* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) + +## Debugging + +### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) + +Ruby ignores exceptions in threads unless another thread explicitly joins them. +With `report_on_exception = true`, +you can notice if a thread has died due to an unhandled exception. + +Send us feedback what should be the default for `report_on_exception` +and about report-on-GC, which shows a report when a thread is +garbage collected without join. + +### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) + +Ruby has deadlock detection around waiting threads, but its report doesn't +include enough information for debugging. +Ruby 2.4's deadlock detection shows threads with their backtrace and +dependent threads. + +## Other notable changes since 2.3 + +* Support OpenSSL 1.1.0 (drop support for 0.9.7 or prior) +* ext/tk is now removed from stdlib [Feature #8539](https://bugs.ruby-lang.org/issues/8539) +* XMLRPC is now removed from stdlib [Feature #12160](https://bugs.ruby-lang.org/issues/12160) + +See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0/NEWS) +or commit logs for details. + +With those changes, +[2523 files changed, 289129 insertions(+), 84670 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0) +since Ruby 2.3.0! + +Merry Christmas, Happy Holidays, and enjoy programming with Ruby 2.4! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2> + + SIZE: 12572424 bytes + SHA1: 944d2588308391b20a89642472454d1dfe7b2360 + SHA256: 440bbbdc49d08d3650f340dccb35986d9399177ad69a204def56e5d3954600cf + SHA512: bef7bb53f63fb74073d071cc125fb67b273ed0779ef43c2d2969089b9ca21fff1bd012281c5b748f7a3c24dd26e71730d7248c05a01cb23ab2089eb4d02115fe + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.gz> + + SIZE: 14104044 bytes + SHA1: d44a3c50a0e742341ed3033d5db79d865151a4f4 + SHA256: 152fd0bd15a90b4a18213448f485d4b53e9f7662e1508190aa5b702446b29e3d + SHA512: 21c9f596b42dd9cba7a53963a59fed0c2e0c1eb960a4ac7087ea3eaa991ce9252d32639e1edcb75b1d709bc07c4820a6dc336ab427d0643c6e6498e0eacdbc8b + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.xz> + + SIZE: 9906880 bytes + SHA1: 038804bbd0e77508dd2510b729a9f3b325489b2e + SHA256: 3a87fef45cba48b9322236be60c455c13fd4220184ce7287600361319bb63690 + SHA512: 975a5388592adc038461e0acebb6c0efee242891b2ea8621476401458efe2bc0fdd317d3bf99beb745b0b3808410efdff33862da29c95c027f457943721e3ab6 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.zip> + + SIZE: 15758757 bytes + SHA1: 29e1bab11551011718c35a51827edcb55bd656fc + SHA256: 5c2bbfa26fd6a15a2d70961874b0f3a386206fcc5f698e240dd8b0c9f0f18c5e + SHA512: 31d932372ce490eeac0a70bc8dcf842909a90435422398d069c05cf01d994936064b8f4e60879e28a8655c1296eb8e180e348cb95e001ed6ca73cda0ff77de23 diff --git a/fa/news/_posts/2017-03-22-ruby-2-4-1-released.md b/fa/news/_posts/2017-03-22-ruby-2-4-1-released.md new file mode 100644 index 0000000000..79a5031c3f --- /dev/null +++ b/fa/news/_posts/2017-03-22-ruby-2-4-1-released.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "Ruby 2.4.1 Released" +author: "naruse" +translator: +date: 2017-03-22 03:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.4.1. +This is the first TEENY version release of the stable 2.4 series. + +See [commit logs](https://github.com/ruby/ruby/compare/v2_4_0...v2_4_1) +for details. + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.bz2> + + SIZE: 12571597 bytes + SHA1: b0bec75c260dcb81ca386fafef27bd718f8c28ad + SHA256: ccfb2d0a61e2a9c374d51e099b0d833b09241ee78fc17e1fe38e3b282160237c + SHA512: 1c80d4c30ecb51758a193b26b76802a06d214de7f15570f1e85b5fae4cec81bda7237f086b81f6f2b5767f2e93d347ad1fa3f49d7b5c2e084d5f57c419503f74 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz> + + SIZE: 14174752 bytes + SHA1: 47909a0f77ea900573f027d27746960ad6d07d15 + SHA256: a330e10d5cb5e53b3a0078326c5731888bb55e32c4abfeb27d9e7f8e5d000250 + SHA512: 6cddac19733870f372750a276a2c59f99dea9a17731cd7c24a44b615794ff1a5d194660949628217107f2301f3b1ff3b6c18223896c87c76e84c64f4078769dc + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.xz> + + SIZE: 9939188 bytes + SHA1: eb3e25346431214379e3b92c6f6b6e02f7b2503f + SHA256: 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654 + SHA512: e6fd290b6edd166348b70f0f1c56f7ed9d956c4c1eb91d97d0548041ca4196b9b75ec1ad35c745bdbfd4de195899093e7205d7f02b014ecf1c48e6f31cf25903 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.zip> + + SIZE: 15830344 bytes + SHA1: 19bdb47299a39316df2c80107314940d17b26d88 + SHA256: f98a3b50439ffdd270f9ae86d99ff0be431c81b85215c9aafac942ef40b89cbf + SHA512: 4dc8991a5f8751a5853798b2e438eb3879c959a02517aa4d0efa045412e47ba7036679fd4c6797249a502f0bfac9ef43740f7bff29b017d10e0b3f51d63f161f + +## Release Comment + +Many committers, developers, and users who provided bug reports helped +us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2017-03-28-ruby-2-2-7-released.md b/fa/news/_posts/2017-03-28-ruby-2-2-7-released.md new file mode 100644 index 0000000000..bfc0d0e0fb --- /dev/null +++ b/fa/news/_posts/2017-03-28-ruby-2-2-7-released.md @@ -0,0 +1,61 @@ +--- +layout: news_post +title: "Ruby 2.2.7 Released" +author: "usa" +translator: +date: 2017-03-28 11:00:00 +0000 +lang: en +--- + +Ruby 2.2.7 has been released. + +This release includes about 70 bug fixes after the previous release. +See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_7/ChangeLog) +for details. + +After this release, we will end the normal maintenance phase of Ruby 2.2, +and start the security maintenance phase of it. +This means that after the release of 2.2.7 we will never backport any bug fixes +to 2.2 except security fixes. +The term of the security maintenance phase is scheduled for 1 year. +By the end of this term, official support of Ruby 2.2 will be over. +Therefore, we recommend that you start planning to upgrade to Ruby 2.4 or 2.3. + + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.bz2) + + SIZE: 13381078 bytes + SHA1: 0b5b79f55a1e7a7c2f6600e75167c1b9cc435042 + SHA256: 80486c5991783185afeceeb315060a3dafc3889a2912e145b1a8457d7b005c5b + SHA512: 83756cd1c91516962b83961e0de59d858618f7ed3e9795f930aab4f199d47a95ed8f867d8aa9b51d508be26d9babf2140117c88241168bac41e6ef702cfadf20 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz) + + SIZE: 16678101 bytes + SHA1: dc819c4810b009f282f3b794f61f0db313f03b19 + SHA256: 374184c6c5bbc88fb7bad422368d4053a236fb6587f0eff76146dcba57f93da5 + SHA512: 056f4b59afdd5e7697e96e64f0c0308392d9dce386abfdb101a2260d1d906877c55ae135cb86a1598a778ca7beb39424ad38bce0deb860981a10e8f5d48bf359 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.xz) + + SIZE: 10507528 bytes + SHA1: 8b811b08c1ba790949fa67c6856c9b3ba3f12691 + SHA256: 234c8aee6543da9efd67008e6e7ee740d41ed57a52e797f65043c3b5ec3bcb53 + SHA512: 21bebec6d0972f4e6f2988f471c58520e32096e43a61d627eb2210df283a6fd6d0fc49da9063f2d086f3d489f13e948462a6f084f9e931b4fde6102f490cc225 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.zip) + + SIZE: 18519665 bytes + SHA1: 5214c5b4c0c64b6af1d77c2d9ff890481e7e4e01 + SHA256: db3852d3f23b5eab2b9862ff01c16486eb5700cd7cb5a78234254fd8a330e183 + SHA512: 3bb978c510ecb9f962c4613124fffd64e1348d1fa2779218727c1c7c8ff3cbcf88ff0232acb815f3363af67e9f5ce546ca84990ee95269f9512270830daa588a + +## Release Comment + +Thanks to everyone who helped with this release. + +The maintenance of Ruby 2.2, including this release, +is based on the "Agreement for the Ruby stable version" of the +[Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2017-03-30-ruby-2-3-4-released.md b/fa/news/_posts/2017-03-30-ruby-2-3-4-released.md new file mode 100644 index 0000000000..1ba2389837 --- /dev/null +++ b/fa/news/_posts/2017-03-30-ruby-2-3-4-released.md @@ -0,0 +1,66 @@ +--- +layout: news_post +title: "Ruby 2.3.4 Released" +author: "nagachika" +translator: +date: 2017-03-30 00:00:00 +0000 +lang: en +--- + +Ruby 2.3.4 has been released. + +This release contains about 80 bug fixes after the previous release. +See the [commit logs](https://github.com/ruby/ruby/compare/v2_3_3...v2_3_4) +for details. + +And this release contains a bug fix of Symbol#hash to be non-deterministic. +This is a regression on the 2.3 series before 2.3.4. +See [Bug #13376](https://bugs.ruby-lang.org/issues/13376) for more details. + + +## Known Problem + +_(This section was added at April 11, 2017.)_ + +An API incompatibility has been found for Ruby 2.3.4. +It is the accidental removal of the API function `rb_thread_fd_close`. +We will fix this problem with the next release, but if you are facing +the problem now and need to overcome it immediately, use this patch: + +* [patch for rb_thread_fd_close problem](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_2_3/thread.c?r1=58289&r2=58288&pathrev=58289&view=patch) + + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.bz2) + + SIZE: 14434361 bytes + SHA1: f5b18e7149ec7620444c91962e695708829d0216 + SHA256: cd9808bb53824d6edb58beaadd3906cb23b987438ce75ab7bb279b2229930e2f + SHA512: ad1f16142615498232d0de85149585be1d2c5de2bc40ec160d272a09e098ef6f317d8b25026001735261fd1c5bc0d1f8513a8474e89f0d86eed5b2fe7338d64e + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.gz) + + SIZE: 17820518 bytes + SHA1: d064b9c69329ca2eb2956ad57b7192184178e35d + SHA256: 98e18f17c933318d0e32fed3aea67e304f174d03170a38fd920c4fbe49fec0c3 + SHA512: 23b68ff1f7ab0323876d6135f232f895a5d5009b4128711a685003563828492afb330e589ca614581a49e43027c34e251d96a3fc10330cdfdd11a2537af0233f + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.xz) + + SIZE: 11450108 bytes + SHA1: 8ee952fa7c2466d53868143e867dc08a153e20df + SHA256: 341cd9032e9fd17c452ed8562a8d43f7e45bfe05e411d0d7d627751dd82c578c + SHA512: 9e3adc2de6703e50e75db37db2981006d4c69759929d61db6a0d63627cfe5977d0ad66d2c69d7161cfc0c0d1c2cb38e5181a06ccd2790df2f72ec25c2ad01e02 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.zip) + + SIZE: 19869837 bytes + SHA1: 47a926289e4f007b1a338617f925dd858ea3da97 + SHA256: e70b716982be704375129d4fc0ef305fd8d8151f64e0fcb12de791ab956a526d + SHA512: 6fab3a737f494d33f91a40881d4ab16a938e98cf0f344fba90104d5cf9e6d02d7c17f64512c2f1ffd67f64ad5dd38477fab0d17614c1ff22627f18232186315a + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2017-04-01-support-of-ruby-2-1-has-ended.md b/fa/news/_posts/2017-04-01-support-of-ruby-2-1-has-ended.md new file mode 100644 index 0000000000..631cf13d35 --- /dev/null +++ b/fa/news/_posts/2017-04-01-support-of-ruby-2-1-has-ended.md @@ -0,0 +1,43 @@ +--- +layout: news_post +title: "Support of Ruby 2.1 has ended" +author: "usa" +translator: +date: 2017-04-01 00:00:00 +0000 +lang: en +--- + +We announce that all support of the Ruby 2.1 series has ended. + +After the release of Ruby 2.1.10 at the end of March of the last year, +the support of the Ruby 2.1 series was in the security maintenance phase. +Now, after one year has passed, this phase has ended. +Therefore, at March 31, 2017, all support of the Ruby 2.1 series has ended. +Bug and security fixes from more recent Ruby versions will no longer be +backported to 2.1, and no further patch release of 2.1 will be released. +We highly recommend that you upgrade to Ruby 2.4 or 2.3 as soon as possible. + + +## About currently supported Ruby versions + +### Ruby 2.4 series + +Currently in normal maintenance phase. +We will backport bug fixes and release with the fixes whenever necessary. +And, if a critical security issue is found, we will release an urgent fix +for it. + +### Ruby 2.3 series + +Currently in normal maintenance phase. +We will backport bug fixes and release with the fixes whenever necessary. +And, if a critical security issue is found, we will release an urgent fix +for it. + +### Ruby 2.2 series + +Currently in security maintenance phase. +We will never backport any bug fixes to 2.2 except security fixes. +If a critical security issue is found, we will release an urgent fix for it. +We are planning to end the support of the Ruby 2.2 series at the end of +March 2018. diff --git a/fa/news/_posts/2017-07-21-ruby-prize-2017.md b/fa/news/_posts/2017-07-21-ruby-prize-2017.md new file mode 100644 index 0000000000..7bcfdda37c --- /dev/null +++ b/fa/news/_posts/2017-07-21-ruby-prize-2017.md @@ -0,0 +1,29 @@ +--- +layout: news_post +title: "Nominations now being accepted for Ruby Prize 2017" +author: "Ruby Association" +translator: +date: 2017-07-21 00:00:00 +0000 +lang: en +--- + +We are very pleased to announce you that Ruby Prize will be held this year! + +The Ruby Prize is given to recognize the efforts of remarkable activities and +achievements in the Ruby Community. The prize will be awarded by the executive +committee comprised of three parties, the Ruby Association, Nihon Ruby no Kai +and Matsue City. + +The Ruby Prize winner and final nominee (1-2 people) will receive an award at the +RubyWorld Conference 2017, to be held in Matsue, Japan on November 1st & 2nd. + +In addition, the Ruby Prize winner will also be awarded 1 million yen. Yay! + +Nominees will be selected by the following: + +* Recommendations from the "Prize Member" executive committee +* Recommendations from the general public (you). + +Please see below for more details. + +[Nominations now being accepted for Ruby Prize 2017](http://www.ruby.or.jp/rubyprize2017/about_en.html) diff --git a/fa/news/_posts/2017-08-29-multiple-vulnerabilities-in-rubygems.md b/fa/news/_posts/2017-08-29-multiple-vulnerabilities-in-rubygems.md new file mode 100644 index 0000000000..9849872ba3 --- /dev/null +++ b/fa/news/_posts/2017-08-29-multiple-vulnerabilities-in-rubygems.md @@ -0,0 +1,59 @@ +--- +layout: news_post +title: "Multiple vulnerabilities in RubyGems" +author: "usa" +translator: +date: 2017-08-29 12:00:00 +0000 +tags: security +lang: en +--- + +There are multiple vulnerabilities in RubyGems bundled by Ruby. +It is [reported at the official blog of RubyGems](http://blog.rubygems.org/2017/08/27/2.6.13-released.html). + +## Details + +The following vulnerabilities have been reported. + +* a DNS request hijacking vulnerability. (CVE-2017-0902) +* an ANSI escape sequence vulnerability. (CVE-2017-0899) +* a DoS vulnerability in the query command. (CVE-2017-0900) +* a vulnerability in the gem installer that allowed a malicious gem to overwrite arbitrary files. (CVE-2017-0901) + +It is strongly recommended for Ruby users to upgrade or take one of the following workarounds as soon as possible. + +## Affected Versions + +* Ruby 2.2 series: 2.2.7 and earlier +* Ruby 2.3 series: 2.3.4 and earlier +* Ruby 2.4 series: 2.4.1 and earlier +* prior to trunk revision 59672 + +## Workarounds + +If you can't upgrade Ruby itself, upgrade RubyGems to the latest version. +RubyGems 2.6.13 or later includes the fix for the vulnerabilities. + +``` +gem update --system +``` + +If you can't upgrade RubyGems, you can apply the following patches as a workaround. + +* [for Ruby 2.2.7](https://bugs.ruby-lang.org/attachments/download/6690/rubygems-2613-ruby22.patch) +* [for Ruby 2.3.4](https://bugs.ruby-lang.org/attachments/download/6691/rubygems-2613-ruby23.patch) +* for Ruby 2.4.1: need 2 patches. Apply sequentially as follows: + 1. [RubyGems 2.6.11 to 2.6.12](https://bugs.ruby-lang.org/attachments/download/6692/rubygems-2612-ruby24.patch) + 2. [RubyGems 2.6.12 to 2.6.13](https://bugs.ruby-lang.org/attachments/download/6693/rubygems-2613-ruby24.patch) + +About the trunk, update to the latest revision. + +## Credits + +This report is based on [the official blog of RubyGems](http://blog.rubygems.org/2017/08/27/2.6.13-released.html). + +## History + +* Originally published at 2017-08-29 12:00:00 UTC +* Added CVE numbers at 2017-08-31 2:00:00 UTC +* Mention about upgrading Rubies at 2017-09-15 12:00:00 UTC diff --git a/fa/news/_posts/2017-09-14-json-heap-exposure-cve-2017-14064.md b/fa/news/_posts/2017-09-14-json-heap-exposure-cve-2017-14064.md new file mode 100644 index 0000000000..dd4eca25d5 --- /dev/null +++ b/fa/news/_posts/2017-09-14-json-heap-exposure-cve-2017-14064.md @@ -0,0 +1,39 @@ +--- +layout: news_post +title: "CVE-2017-14064: Heap exposure vulnerability in generating JSON" +author: "usa" +translator: +date: 2017-09-14 12:00:00 +0000 +tags: security +lang: en +--- + +There is a heap exposure vulnerability in JSON bundled by Ruby. +This vulnerability has been assigned the CVE identifier [CVE-2017-14064](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14064). + +## Details + +The `generate` method of `JSON` module optionally accepts an instance of `JSON::Ext::Generator::State` class. +If a malicious instance is passed, the result may include contents of heap. + +All users running an affected release should either upgrade or use one of the workarounds immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.7 and earlier +* Ruby 2.3 series: 2.3.4 and earlier +* Ruby 2.4 series: 2.4.1 and earlier +* prior to trunk revision 58323 + +## Workaround + +The JSON library is also distributed as a gem. +If you can't upgrade Ruby itself, install JSON gem newer than version 2.0.4. + +## Credit + +Thanks to [ahmadsherif](https://hackerone.com/ahmadsherif) for reporting this issue. + +## History + +* Originally published at 2017-09-14 12:00:00 (UTC) diff --git a/fa/news/_posts/2017-09-14-openssl-asn1-buffer-underrun-cve-2017-14033.md b/fa/news/_posts/2017-09-14-openssl-asn1-buffer-underrun-cve-2017-14033.md new file mode 100644 index 0000000000..22a45a8274 --- /dev/null +++ b/fa/news/_posts/2017-09-14-openssl-asn1-buffer-underrun-cve-2017-14033.md @@ -0,0 +1,40 @@ +--- +layout: news_post +title: "CVE-2017-14033: Buffer underrun vulnerability in OpenSSL ASN1 decode" +author: "usa" +translator: +date: 2017-09-14 12:00:00 +0000 +tags: security +lang: en +--- + +There is a buffer underrun vulnerability in OpenSSL bundled by Ruby. +This vulnerability has been assigned the CVE identifier [CVE-2017-14033](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14033). + +## Details + +If a malicious string is passed to the `decode` method of `OpenSSL::ASN1`, buffer underrun may be caused and the Ruby interpreter may crash. + +All users running an affected release should either upgrade or use one of the workarounds immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.7 and earlier +* Ruby 2.3 series: 2.3.4 and earlier +* Ruby 2.4 series: 2.4.1 and earlier +* prior to trunk revision 56946 + +## Workaround + +The OpenSSL library is also distributed as a gem. +If you can't upgrade Ruby itself, install OpenSSL gem newer than version 2.0.0. +But this workaround is only available with Ruby 2.4 series. +When using Ruby 2.2 series or 2.3 series, the gem does not override the bundled version of OpenSSL. + +## Credit + +Thanks to [asac](https://hackerone.com/asac) for reporting this issue. + +## History + +* Originally published at 2017-09-14 12:00:00 (UTC) diff --git a/fa/news/_posts/2017-09-14-ruby-2-2-8-released.md b/fa/news/_posts/2017-09-14-ruby-2-2-8-released.md new file mode 100644 index 0000000000..6488550f9c --- /dev/null +++ b/fa/news/_posts/2017-09-14-ruby-2-2-8-released.md @@ -0,0 +1,57 @@ +--- +layout: news_post +title: "Ruby 2.2.8 Released" +author: "usa" +translator: +date: 2017-09-14 12:00:00 +0000 +lang: en +--- + +Ruby 2.2.8 has been released. +This release includes several security fixes. +Please check the topics below for details. + +* [CVE-2017-0898: Buffer underrun vulnerability in Kernel.sprintf](/en/news/2017/09/14/sprintf-buffer-underrun-cve-2017-0898/) +* [CVE-2017-10784: Escape sequence injection vulnerability in the Basic authentication of WEBrick](/en/news/2017/09/14/webrick-basic-auth-escape-sequence-injection-cve-2017-10784/) +* [CVE-2017-14033: Buffer underrun vulnerability in OpenSSL ASN1 decode](/en/news/2017/09/14/openssl-asn1-buffer-underrun-cve-2017-14033/) +* [CVE-2017-14064: Heap exposure vulnerability in generating JSON](/en/news/2017/09/14/json-heap-exposure-cve-2017-14064/) +* [Multiple vulnerabilities in RubyGems](/en/news/2017/08/29/multiple-vulnerabilities-in-rubygems/) +* Updated bundled libyaml to version 0.1.7 + +Ruby 2.2 is now under the state of the security maintenance phase, until the end of the March of 2018. +After the date, maintenance of Ruby 2.2 will be ended. +We recommend you start planning migration to newer versions of Ruby, such as 2.4 or 2.3. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.bz2) + + SIZE: 13374522 bytes + SHA1: d851324bf783221108ce79343fabbcd559b9e60b + SHA256: b19085587d859baf9d7763f92e34a84632fceac5cc593ca2c0efa28ed8c6e44e + SHA512: aa1c65f76a51a57d9059a38a13a823112b53850a9e7d6f72c3f3e38d381412014521049f7065c1b00877501b3b554235135d0f308045c2a9da133c766f5b9e46 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.gz) + + SIZE: 16681654 bytes + SHA1: 15a6fca1bfe0488b24a204708a287904028aa367 + SHA256: 8f37b9d8538bf8e50ad098db2a716ea49585ad1601bbd347ef84ca0662d9268a + SHA512: b9d355232c1ca3e17b5d4dcb70f0720da75b82787e45eb4ede281290bf42643665385e55428495eb55c17f744395130b4d64ef78ca66c5a5ecb9f4c3b732fdea + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.xz) + + SIZE: 10520648 bytes + SHA1: 3a25914aafedc81952899298a18f9c3a4881d2d1 + SHA256: 37eafc15037396c26870f6a6c5bcd0658d14b46cd5e191a3b56d89dd22d561b0 + SHA512: e21004bee537f0c706f4ac9526507b414ddb6a8d721e8fad8d7fe88992a4f048eb5eb79f8d8b8af2a8b331dcfa74b560490218a1acb3532c2cdb4fb4909da3c9 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.zip) + + SIZE: 18521461 bytes + SHA1: 3b0142bad47e29f429903f6c4ca84540764b5e93 + SHA256: 58bf98b62d21d6cc622e6ef5c7d024db0458c6860199ab4c1bf68cdc4b36fa9d + SHA512: 08cadfa72713f9e3348093c96af4c53f06f681bc29ada2d80f1c55faca6a59a3b2913aa2443bf645fea6f3840b32ce8ce894b358f972b1a295ee0860b656eb02 + +## Release Comment + +Thanks to everyone who helped with this release, especially, reports of vulnerabilities. diff --git a/fa/news/_posts/2017-09-14-ruby-2-3-5-released.md b/fa/news/_posts/2017-09-14-ruby-2-3-5-released.md new file mode 100644 index 0000000000..624ba1528c --- /dev/null +++ b/fa/news/_posts/2017-09-14-ruby-2-3-5-released.md @@ -0,0 +1,68 @@ +--- +layout: news_post +title: "Ruby 2.3.5 Released" +author: "usa" +translator: +date: 2017-09-14 12:00:00 +0000 +lang: en +--- + +Ruby 2.3.5 has been released. + +This release includes about 70 bug fixes after the previous release, and also includes several security fixes. +Please check the topics below for details. + +* [CVE-2017-0898: Buffer underrun vulnerability in Kernel.sprintf](/en/news/2017/09/14/sprintf-buffer-underrun-cve-2017-0898/) +* [CVE-2017-10784: Escape sequence injection vulnerability in the Basic authentication of WEBrick](/en/news/2017/09/14/webrick-basic-auth-escape-sequence-injection-cve-2017-10784/) +* [CVE-2017-14033: Buffer underrun vulnerability in OpenSSL ASN1 decode](/en/news/2017/09/14/openssl-asn1-buffer-underrun-cve-2017-14033/) +* [CVE-2017-14064: Heap exposure vulnerability in generating JSON](/en/news/2017/09/14/json-heap-exposure-cve-2017-14064/) +* [Multiple vulnerabilities in RubyGems](/en/news/2017/08/29/multiple-vulnerabilities-in-rubygems/) +* Updated bundled libyaml to version 0.1.7 + +See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_5/ChangeLog) for details. + +## Known Problem + +_(This section was added at September 15, 2017.)_ + +An incompatibility has been found for Ruby 2.3.5. +Ruby 2.3.5 can not link with libgmp nor jemalloc. +We will fix this problem with the next release, but if you are facing the problem now and need to overcome it immediately, get a patch from this link: + +* [Ruby 2.4.2 and 2.3.5 cannot link with libgmp nor jemalloc](https://bugs.ruby-lang.org/issues/13899) + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.bz2) + + SIZE: 14439326 bytes + SHA1: 48302800c78ef9bbfc293ffcc4b6e2c728705bca + SHA256: f71c4b67ba1bef424feba66774dc9d4bbe02375f5787e41596bc7f923739128b + SHA512: 3ecc7c0ac10672166e1a58cfcd5ae45dfc637c22cec549a30975575cbe59ec39945d806e47661f45071962ef9404566007a982aedccb7d4241b4459cb88507df + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz) + + SIZE: 17836997 bytes + SHA1: 3247e217d6745c27ef23bdc77b6abdb4b57a118f + SHA256: 5462f7bbb28beff5da7441968471ed922f964db1abdce82b8860608acc23ddcc + SHA512: cd6bbba4fb5a0ab5ce7aa6f3b89d021ea742c5aa7934e24b87554d10e2a3233d416051c11aee90f3d8714d168db523a7bf56ef4dafdd256fc8595169c2db496a + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.xz) + + SIZE: 11437868 bytes + SHA1: ef388992fa71cd77c5be960dd7e3bec1280c4441 + SHA256: 7d3a7dabb190c2da06c963063342ca9a214bcd26f2158e904f0ec059b065ffda + SHA512: c55e3b71241f505b6bbad78b3bd40235064faae3443ca14b77b6356556caed6a0d055dc2e2cd7ebdb5290ab908e06d2b7d68f72469af5017eda4b29664b0d889 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.zip) + + SIZE: 19887946 bytes + SHA1: 09c80f9021fa2bfc04ae30a1939faad03b0f5b14 + SHA256: c9971e1ccb6e2f1ab32b1fe05416fce0b19a1cd9ba8fa095c77c4bdf2058e514 + SHA512: 6f14d0cc48d6eaf6168316cb45e22af8d2118ba058fd888ce930f12a22cf7e849e2e185cc7c516fe980f30ee9a942accf9d9e2d4b8a2e79c97b87d4bab704495 + +## Release Comment + +Thanks to everyone who helped with this release. + +The maintenance of Ruby 2.3, including this release, is based on the “Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2017-09-14-ruby-2-4-2-released.md b/fa/news/_posts/2017-09-14-ruby-2-4-2-released.md new file mode 100644 index 0000000000..7ddd739535 --- /dev/null +++ b/fa/news/_posts/2017-09-14-ruby-2-4-2-released.md @@ -0,0 +1,67 @@ +--- +layout: news_post +title: "Ruby 2.4.2 Released" +author: "nagachika" +translator: +date: 2017-09-14 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.4.2. +This release contains some security fixes. + +* [CVE-2017-0898: Buffer underrun vulnerability in Kernel.sprintf](/en/news/2017/09/14/sprintf-buffer-underrun-cve-2017-0898/) +* [CVE-2017-10784: Escape sequence injection vulnerability in the Basic authentication of WEBrick](/en/news/2017/09/14/webrick-basic-auth-escape-sequence-injection-cve-2017-10784/) +* [CVE-2017-14033: Buffer underrun vulnerability in OpenSSL ASN1 decode](/en/news/2017/09/14/openssl-asn1-buffer-underrun-cve-2017-14033/) +* [CVE-2017-14064: Heap exposure in generating JSON](/en/news/2017/09/14/json-heap-exposure-cve-2017-14064/) +* [Multiple vulnerabilities in RubyGems](/en/news/2017/08/29/multiple-vulnerabilities-in-rubygems/) +* Update bundled libyaml to version 0.1.7. + +There are also many bug-fixes. +See [commit logs](https://github.com/ruby/ruby/compare/v2_4_1...v2_4_2) for more details. + +## Known Problem + +_(This section was added at September 15, 2017.)_ + +An incompatibility has been found for Ruby 2.4.2. +Ruby 2.4.2 can not link with libgmp nor jemalloc. +We will fix this problem with the next release, but if you are facing the problem now and need to overcome it immediately, get a patch from this link: + +* [Ruby 2.4.2 and 2.3.5 cannot link with libgmp nor jemalloc](https://bugs.ruby-lang.org/issues/13899) + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.bz2> + + SIZE: 12607283 bytes + SHA1: a8a50a9297ff656e5230bf0f945acd69cc02a097 + SHA256: 08e72d0cbe870ed1317493600fbbad5995ea3af2d0166585e7ecc85d04cc50dc + SHA512: 1a5302d2558089a6b91b815fff9b75a29e690f10861de5fdd48211f3f45025a70dad7495f216e6af9c62d72e69ed316f1a52fada704bdc7e6d8c094d141ea77c + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz> + + SIZE: 14187859 bytes + SHA1: b096124469e31e4fc3d00d2b61b11d36992e6bbd + SHA256: 93b9e75e00b262bc4def6b26b7ae8717efc252c47154abb7392e54357e6c8c9c + SHA512: 96c236bdcd09b2e7cf429da631a487fc00f1255443751c03c8abeb4c2ce57079ad60ef566fecc0bf2c7beb2f080e2b8c4d30f321664547b2dc7d2a62aa1075ef + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.xz> + + SIZE: 10046412 bytes + SHA1: 8373e32c63bba2180799da091b572664aa9faf6f + SHA256: 748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735 + SHA512: c1d42272fb0d94b693452e703b0ea4942bf59cbd4b08ba83bf039f54be97ebc88511632413da0164970b4cf97bc302bccb88aab48edfa8fa147498e7ee741595 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.zip> + + SIZE: 15645325 bytes + SHA1: 861b51de9db0d822ef141ad04383c76aa3cd2fff + SHA256: 37d7cb27d8abd4b143556260506306659930548652343076f7f8470f07818824 + SHA512: 234765091528be1310ac315868f84ae6c505aa696672929df2f00828c1bbdc7cbcb2fc690eab4e73efde6be9104584ba7b6944853861f6d05e775b124ce8dfd5 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped +us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2017-09-14-sprintf-buffer-underrun-cve-2017-0898.md b/fa/news/_posts/2017-09-14-sprintf-buffer-underrun-cve-2017-0898.md new file mode 100644 index 0000000000..33fdb3af1e --- /dev/null +++ b/fa/news/_posts/2017-09-14-sprintf-buffer-underrun-cve-2017-0898.md @@ -0,0 +1,34 @@ +--- +layout: news_post +title: "CVE-2017-0898: Buffer underrun vulnerability in Kernel.sprintf" +author: "usa" +translator: +date: 2017-09-14 12:00:00 +0000 +tags: security +lang: en +--- + +There is a buffer underrun vulnerability in the `sprintf` method of `Kernel` module. +This vulnerability has been assigned the CVE identifier [CVE-2017-0898](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0898). + +## Details + +If a malicious format string which contains a precious specifier (`*`) is passed and a huge minus value is also passed to the specifier, buffer underrun may be caused. +In such situation, the result may contains heap, or the Ruby interpreter may crash. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.7 and earlier +* Ruby 2.3 series: 2.3.4 and earlier +* Ruby 2.4 series: 2.4.1 and earlier +* prior to trunk revision 58453 + +## Credit + +Thanks to [aerodudrizzt](https://hackerone.com/aerodudrizzt) for reporting this issue. + +## History + +* Originally published at 2017-09-14 12:00:00 (UTC) diff --git a/fa/news/_posts/2017-09-14-webrick-basic-auth-escape-sequence-injection-cve-2017-10784.md b/fa/news/_posts/2017-09-14-webrick-basic-auth-escape-sequence-injection-cve-2017-10784.md new file mode 100644 index 0000000000..7bfeea30a5 --- /dev/null +++ b/fa/news/_posts/2017-09-14-webrick-basic-auth-escape-sequence-injection-cve-2017-10784.md @@ -0,0 +1,36 @@ +--- +layout: news_post +title: "CVE-2017-10784: Escape sequence injection vulnerability in the Basic authentication of WEBrick" +author: "usa" +translator: +date: 2017-09-14 12:00:00 +0000 +tags: security +lang: en +--- + +There is an escape sequence injection vulnerability in the Basic authentication of WEBrick bundled by Ruby. +This vulnerability has been assigned the CVE identifier [CVE-2017-10784](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10784). + +## Details + +When using the Basic authentication of WEBrick, clients can pass an arbitrary string as the user name. +WEBrick outputs the passed user name intact to its log, then an attacker can inject malicious escape sequences to the log and dangerous control characters may be executed on a victim's terminal emulator. + +This vulnerability is similar to [a vulnerability already fixed](/en/news/2010/01/10/webrick-escape-sequence-injection/), but it had not been fixed in the Basic authentication. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.7 and earlier +* Ruby 2.3 series: 2.3.4 and earlier +* Ruby 2.4 series: 2.4.1 and earlier +* prior to trunk revision 58453 + +## Credit + +Thanks to Yusuke Endoh <mame@ruby-lang.org> for reporting this issue. + +## History + +* Originally published at 2017-09-14 12:00:00 (UTC) diff --git a/fa/news/_posts/2017-10-10-ruby-2-5-0-preview1-released.md b/fa/news/_posts/2017-10-10-ruby-2-5-0-preview1-released.md new file mode 100644 index 0000000000..7cce063b06 --- /dev/null +++ b/fa/news/_posts/2017-10-10-ruby-2-5-0-preview1-released.md @@ -0,0 +1,79 @@ +--- +layout: news_post +title: "Ruby 2.5.0-preview1 Released" +author: "naruse" +translator: +date: 2017-10-10 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.5.0-preview1. + +Ruby 2.5.0-preview1 is the first preview release toward Ruby 2.5.0. +It introduces some new features and performance improvements, for example: + +## New Features + +* Print backtrace and error message in reverse order if STDERR is unchanged and a tty. + [Feature #8661] [experimental] + +* Top-level constant look-up is removed. [Feature #11547] + +* rescue/else/ensure are allowed inside do/end blocks. [Feature #12906] + +* yield\_self [Feature #6721] + +## Other notable changes since 2.4 + +* Merge Onigmo to 6.1.1. + It adds [absence operator](https://github.com/k-takata/Onigmo/issues/87) + Note that Ruby 2.4.1 also includes this change. +* Merge bundler to standard libraries. +* Merge rubygems-2.6.13. +* Merge rdoc-6.0.0.beta2. + Change lexer IRB based one to Ripper. + It much improves the speed of generating document. + https://github.com/ruby/rdoc/pull/512 + This also includes + * Fix so many bugs in the last dozen years or so + * Support new Ruby syntaxes in the last several years +* Update supported Unicode version to 10.0.0. + +See [NEWS](https://github.com/ruby/ruby/blob/v2_5_0_preview1/NEWS) +or commit logs for details. + +With those changes, +[6162 files changed, 339744 insertions(+), 28699 deletions(-)](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0_preview1) +since Ruby 2.4.0! + +Enjoy Ruby 2.5.0-preview1! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-preview1.tar.gz> + + SIZE: 16088348 bytes + SHA1: 8d1bad4faea258ac7f97ae2b4c7d76335b044c37 + SHA256: 30994fe5efbf4759a2a616f288121857c69b45665926174680387e286bb83b05 + SHA512: bcca05333e0aa09c75492ec09e4a82bf7aebef1b96e1c40000b92fa654fd96ae1d70e4f92ecf619b199cba73d754be6c6d97fc488d1e47831bc671f64ce0ab6d + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-preview1.zip> + + SIZE: 20036401 bytes + SHA1: e1ad073a17dc814fc8ddb3cbbed761a2278dcc12 + SHA256: 1a61196a845cb9d9b5a71fd66cb77fbc215f82cb6f90371e309ceddb25e7107b + SHA512: 35033b5426142e271d95d438b8442e73cade9462b02014371866882a4a90911b98805b7199b15bedc9847fd2560e211f015fa09b0b1d9efc31a947e41e088b30 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-preview1.tar.bz2> + + SIZE: 14110768 bytes + SHA1: 0b664c41b75d54ff88c70b5437b20b90675e3348 + SHA256: 1158e0eac184a1d8189fae985f58c9be185d6e7074b022e66567aec798fa3446 + SHA512: 2d39ef64aaf7a52014905f4ad59b53e83b71433e50a9227f9f50cbb7a2c9a5db9cd69fa7dbe01234819f7edd2216b3d915f21676f07d12bb5f0f3276358bce7f + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-preview1.tar.xz> + + SIZE: 11383812 bytes + SHA1: eef2901270c235a97d132ebcfb275f130ba368fd + SHA256: c2f518eb04b38bdd562ba5611abd2521248a1608fc466368563dd794ddeddd09 + SHA512: 1153a1fc4eb1a9556af2d392743998eb9cffd2a07e4648bf124dea1044bb378c7f4534dd87c0d30563ec438d2995ba1832faaaf4261db5d0840ca32ae7ea65d9 diff --git a/fa/news/_posts/2017-12-14-net-ftp-command-injection-cve-2017-17405.md b/fa/news/_posts/2017-12-14-net-ftp-command-injection-cve-2017-17405.md new file mode 100644 index 0000000000..ed9000e796 --- /dev/null +++ b/fa/news/_posts/2017-12-14-net-ftp-command-injection-cve-2017-17405.md @@ -0,0 +1,40 @@ +--- +layout: news_post +title: "CVE-2017-17405: Command injection vulnerability in Net::FTP" +author: "nagachika" +translator: +date: 2017-12-14 16:00:00 +0000 +tags: security +lang: en +--- + +There is a command injection vulnerability in Net::FTP bundled with Ruby. +This vulnerability has been assigned the CVE identifier +[CVE-2017-17405](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17405). + +## Details + +`Net::FTP#get`, `getbinaryfile`, `gettextfile`, `put`, `putbinaryfile`, and +`puttextfile` use `Kernel#open` to open a local file. If the `localfile` +argument starts with the pipe character `"|"`, the command following the +pipe character is executed. The default value of `localfile` is +`File.basename(remotefile)`, so malicious FTP servers could cause arbitrary +command execution. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.8 and earlier +* Ruby 2.3 series: 2.3.5 and earlier +* Ruby 2.4 series: 2.4.2 and earlier +* Ruby 2.5 series: 2.5.0-preview1 +* prior to trunk revision r61242 + +## Credit + +Thanks to Etienne Stalmans from the Heroku product security team for reporting the issue. + +## History + +* Originally published at 2017-12-14 16:00:00 (UTC) diff --git a/fa/news/_posts/2017-12-14-ruby-2-2-9-released.md b/fa/news/_posts/2017-12-14-ruby-2-2-9-released.md new file mode 100644 index 0000000000..0fdf93bc93 --- /dev/null +++ b/fa/news/_posts/2017-12-14-ruby-2-2-9-released.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "Ruby 2.2.9 Released" +author: "usa" +translator: +date: 2017-12-14 16:00:00 +0000 +lang: en +--- + +Ruby 2.2.9 has been released. +This release includes several security fixes. +Please check the topics below for details. + +* [CVE-2017-17405: Command injection vulnerability in Net::FTP](/en/news/2017/12/14/net-ftp-command-injection-cve-2017-17405/) +* [Unsafe Object Deserialization Vulnerability in RubyGems](http://blog.rubygems.org/2017/10/09/unsafe-object-deserialization-vulnerability.html) + +Ruby 2.2 is now under the state of the security maintenance phase, until the end of the March of 2018. +After the date, maintenance of Ruby 2.2 will be ended. +We recommend you start planning migration to newer versions of Ruby, such as 2.4 or 2.3. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.bz2) + + SIZE: 13371232 bytes + SHA1: 773ba9b51bde612866f656c4531f59660e2b0087 + SHA256: 5e3cfcc3b69638e165f72f67b1321fa05aff62b0f9e9b32042a5a79614e7c70a + SHA512: 2a8c8770fda20a22b79c9115b6f468f8e7ea1092c84a5089af7a3122163e5ad298b493e6637e4d93ba02d899d8a619c94064dda8ac98cf3b93f64f45d5401085 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.gz) + + SIZE: 16681209 bytes + SHA1: cbeb1b892ffcaca8728c1cb8d513e1b485bc5eba + SHA256: 2f47c77054fc40ccfde22501425256d32c4fa0ccaf9554f0d699ed436beca1a6 + SHA512: 34e440d529b3bb6b2a7c0e68e64c66c903b96b736ca527398d4493e7451353c08f7cc68b83c55011b53d76411c118fcb3c9e70c1a08439a591eeee98c430c297 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.xz) + + SIZE: 10511456 bytes + SHA1: 1144e19b4cdc77ee036847d261013c88fc59b5f8 + SHA256: 313b44b1105589d00bb30b9cccf7da44d263fe20a2d8d269ada536d4a7ef285c + SHA512: c4ef84cd00f72f60d6c168f0726d9d7e9573549c2bbae83893e1a9d5e64fc7938f4c9d50a47147b28b37cbf36263f95e10a810c0797bad941775a48d75a8c933 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.zip) + + SIZE: 18523114 bytes + SHA1: ebc8ba0ae1178bf4a84b38dd0fdd97de82406cf4 + SHA256: c3055ef4f985079d392dddebb1eab1e91851bfc19c0e8a11779872647d89b3b1 + SHA512: 41de195641bc8cca43a726c1d707720dc9d3b8a853002548a31d171508b78dc353328c9a526dfbbc76493307c0e9e5fce669cc9fc3efc9626f84f2af5aca1a55 + +## Release Comment + +Thanks to everyone who helped with this release. diff --git a/fa/news/_posts/2017-12-14-ruby-2-3-6-released.md b/fa/news/_posts/2017-12-14-ruby-2-3-6-released.md new file mode 100644 index 0000000000..b5f62b260a --- /dev/null +++ b/fa/news/_posts/2017-12-14-ruby-2-3-6-released.md @@ -0,0 +1,54 @@ +--- +layout: news_post +title: "Ruby 2.3.6 Released" +author: "usa" +translator: +date: 2017-12-14 16:00:00 +0000 +lang: en +--- + +Ruby 2.3.6 has been released. + +This release includes about 10 bug fixes after the previous release, and also includes several security fixes. +Please check the topics below for details. + +* [CVE-2017-17405: Command injection vulnerability in Net::FTP](/en/news/2017/12/14/net-ftp-command-injection-cve-2017-17405/) +* [Unsafe Object Deserialization Vulnerability in RubyGems](http://blog.rubygems.org/2017/10/09/unsafe-object-deserialization-vulnerability.html) + +See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_6/ChangeLog) for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.bz2) + + SIZE: 14429114 bytes + SHA1: 07c3b66d544dd22c22fbae3f16cfb3eeb88b7b1e + SHA256: 07aa3ed3bffbfb97b6fc5296a86621e6bb5349c6f8e549bd0db7f61e3e210fd0 + SHA512: bc3c7a115745a38e44bd91eb5637b1e412011c471d9749db7960185ef75737b944dd0e524f22432809649952ca7d93f46d458990e9cd2b0db5ca8abf4bc8ea99 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.gz) + + SIZE: 17840901 bytes + SHA1: 4e6a0f828819e15d274ae58485585fc8b7caace0 + SHA256: 8322513279f9edfa612d445bc111a87894fac1128eaa539301cebfc0dd51571e + SHA512: 104553d888f7d49d1b8df0cff0a3e8aee3086183d75e1a88289730e34c2da669874d7abe83e84bf1b3be9a3337a34f19ea9f9dcfbf1f7fc1136bb8f922776ea4 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.xz) + + SIZE: 11445628 bytes + SHA1: 55e97913180a313f161d2e4e541dd904a477c31d + SHA256: e0d969ac22d4a403c1204868bb9c0d068aa35045bb3934cf50b17b7f66059f56 + SHA512: a09c8715097d16190ee17ee39e7a74438cefc9013add350217b7e3fb4d60aa9dcb30595adf832b0d67a5c45b1fe9d4effb767c995af2759420859f8d763c693a + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.zip) + + SIZE: 19892406 bytes + SHA1: 0d631f32e7b360dcbfb9f8f46dfff2445f0a6a51 + SHA256: 6fee49a2099d49a1b98bf0637fe974fd87af3ae64978392c802ba4d10ac70fb5 + SHA512: c6dc2ee01a4ef84850b0ca4d1e60841f07fbff263ebbbc44c8bd0f72ced3172c2e0b9c883496bfc4f5a42f4827a061f8f479d05bda5f693a274c451914e0b03e + +## Release Comment + +Thanks to everyone who helped with this release. + +The maintenance of Ruby 2.3, including this release, is based on the “Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2017-12-14-ruby-2-4-3-released.md b/fa/news/_posts/2017-12-14-ruby-2-4-3-released.md new file mode 100644 index 0000000000..c30e1a461f --- /dev/null +++ b/fa/news/_posts/2017-12-14-ruby-2-4-3-released.md @@ -0,0 +1,53 @@ +--- +layout: news_post +title: "Ruby 2.4.3 Released" +author: "nagachika" +translator: +date: 2017-12-14 00:00:00 +0000 +lang: en +--- + +Ruby 2.4.3 has been released. + +This release includes some bug fixes and a security fix. + +* [CVE-2017-17405: Command injection vulnerability in Net::FTP](/en/news/2017/12/14/net-ftp-command-injection-cve-2017-17405/) + +There are also some bug fixes. +See [commit logs](https://github.com/ruby/ruby/compare/v2_4_2...v2_4_3) for more details. + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2> + + SIZE: 12615068 bytes + SHA1: 3ca96536320b915762d57fe1ee540df6810bf631 + SHA256: 0a703dffb7737f56e979c9ebe2482f07751803c71e307c20446b581e0f12cf30 + SHA512: fb4339e30c04d03b1422b6c32ede45902e072cd26325b36f3fc05c341d42eea6431d88718242dcc9ce24d9cad26f3d26772f2e806bd7d93f40be50268c318409 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.gz> + + SIZE: 14178729 bytes + SHA1: 787b7f4e90fb4b39a61bc1a31eb7765f875a590c + SHA256: fd0375582c92045aa7d31854e724471fb469e11a4b08ff334d39052ccaaa3a98 + SHA512: e6859cee49f74bbfbcfc9dd583aa0f1af007354f9b56ec09959d24764e69ed6ea3d1d59a229ad25b451161a1ea2ac60e0621dbbcc484ad219eed9e55f3825e05 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.xz> + + SIZE: 10040072 bytes + SHA1: f0a49dddb4e7903a11a80554fd7a317a854cd365 + SHA256: 23677d40bf3b7621ba64593c978df40b1e026d8653c74a0599f0ead78ed92b51 + SHA512: 8bcf60c994a96787da5d743c66f5609a5a6d834d6d61243cdea7fd059197c3b10da43c99e5649be85e2f2329eedcbb1dd76e89ce3ac586be9056348f7449ed09 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.zip> + + SIZE: 15649173 bytes + SHA1: 19744d7673914804b46f75b374faee87b2ea18d9 + SHA256: a4cd07af2cef121582b8bf7ec57fb9a916d99556c713538bc4469be68bfc1961 + SHA512: 5e51b4337ee12041925dd6b91df6d0c7fc5bf19846c1c8d5aa43823f5410d1291cd428bdb5245f08a399051d06c2cb59fde73a7d3da379cbbd24f9c2b60fcc8c + +## Release Comment + +Many committers, developers, and users who provided bug reports helped +us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2017-12-14-ruby-2-5-0-rc1-released.md b/fa/news/_posts/2017-12-14-ruby-2-5-0-rc1-released.md new file mode 100644 index 0000000000..c2a10a439d --- /dev/null +++ b/fa/news/_posts/2017-12-14-ruby-2-5-0-rc1-released.md @@ -0,0 +1,90 @@ +--- +layout: news_post +title: "Ruby 2.5.0-rc1 Released" +author: "naruse" +translator: +date: 2017-12-14 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.5.0-rc1. + +Ruby 2.5.0-rc1 is the first release candidate of Ruby 2.5.0. +It introduces some new features and performance improvements, for example: + +## New Features + +* Print backtrace and error message in reverse order if STDERR is unchanged and a tty. + [Feature #8661] [experimental] + +* Top-level constant look-up is removed. [Feature #11547] + +* rescue/else/ensure are allowed inside do/end blocks. [Feature #12906] + +* Add yield\_self. [Feature #6721] + +## Performance improvements + +* Dynamic instrumentation for TracePoint hooks instead of using "trace" + instruction to avoid overhead. [Feature #14104] + +* Performance of block passing using block parameters is improved by + lazy Proc allocation. [Feature #14045] + +* Mutex is rewritten to be smaller and faster. [Feature #13517] + +* SecureRandom now prefers OS-provided sources over OpenSSL. [Bug #9569] + +## Other notable changes since 2.4 + +* Update to Onigmo 6.1.3. + It adds the [absence operator](https://github.com/k-takata/Onigmo/issues/87). + Note that Ruby 2.4.1 also includes this change. +* Add Bundler to standard libraries. +* Update to RubyGems 2.7.0. +* Update to RDoc 6.0.0. + * Change lexer from IRB based one to Ripper; + this much improves the speed of generating documentation. + [https://github.com/ruby/rdoc/pull/512] + * Fix so many bugs from the last dozen years or so. + * Support new Ruby syntaxes from the last several years. +* Update supported Unicode version to 10.0.0. + +See [NEWS](https://github.com/ruby/ruby/blob/v2_5_0_rc1/NEWS) +or commit logs for details. + +With those changes, +[6162 files changed, 339744 insertions(+), 28699 deletions(-)](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0_rc1) +since Ruby 2.4.0! + +Enjoy Ruby 2.5.0-rc1! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-rc1.tar.gz> + + SIZE: 31049529 bytes + SHA1: 15df7e8ff99f360a14f7747a07a3021447d65594 + SHA256: 46c11b347522de174566503d35d2b46e1529b979d292b1f7f7019cfedcd4b07f + SHA512: 41cd298e99d7a25fe5f2ec42946ae5dbc4421bb18f39350ba8a1b02e999541ec1b21b5f6ce0489b3a159f47e37d409178ba7c21c00e177b0fdb410ca6e9d6142 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-rc1.zip> + + SIZE: 35579788 bytes + SHA1: b7ae42eb733d4a0e3a2d135c9f8d4af043daa728 + SHA256: 9858e39fd2e7bf207cc9f8846197b11ada5f4424f433ff4df149fe3d48be8e36 + SHA512: 86c93791d312fd2175909020e448a44892740feb809a532ed706c6d850cb92722fb7ca02ecbdf7a1fbeb5b4f42f1338ce9a15b7c0a41055937bd1fdfb4be6f11 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-rc1.tar.bz2> + + SIZE: 29238901 bytes + SHA1: 6aad74ed3d30de63c6ff22048cd0fcbcbe123586 + SHA256: 862a8e9e52432ba383660a23d3e87af11dbc18c863a19ef6367eb8259fc47c09 + SHA512: bf0eb114097f9e505ff846f25e7556a2fb393573b4e8b773f94cf5b47998e221f3962a291db15a3cdbdf4ced5a523812937f80d95f4ee3f7b13c4e37f178d7a7 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-rc1.tar.xz> + + SIZE: 26096412 bytes + SHA1: 05cacd0341b7a23cc68239c2061640643a30da38 + SHA256: a479a1bce69b2cf656821f10104dcb8b426922b56d3d6cbdf48318842fae752c + SHA512: 9f9040abf69337439a3f31b80d440d97736555b0df6533d9d34c141ce52226bc40c3f4f7e596e74b080c879e933649c17a073c893be1a304d9a883bab02e9494 diff --git a/fa/news/_posts/2017-12-25-ruby-2-5-0-released.md b/fa/news/_posts/2017-12-25-ruby-2-5-0-released.md new file mode 100644 index 0000000000..1fa70b99f0 --- /dev/null +++ b/fa/news/_posts/2017-12-25-ruby-2-5-0-released.md @@ -0,0 +1,130 @@ +--- +layout: news_post +title: "Ruby 2.5.0 Released" +author: "naruse" +translator: +date: 2017-12-25 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.5.0. + +Ruby 2.5.0 is the first stable release of the Ruby 2.5 series. +It introduces many new features and performance improvements. +The notable changes are as follows: + +## New Features + +* `rescue`/`else`/`ensure` are now allowed to be used directly with + `do`/`end` blocks. + [[Feature #12906]](https://bugs.ruby-lang.org/issues/12906) +* Add `yield_self` to yield given block in its context. + Unlike `tap`, it returns the result of the block. + [[Feature #6721]](https://bugs.ruby-lang.org/issues/6721) +* Support branch coverage and method coverage measurement. + The branch coverage indicates which branches are executed and which are not. + The method coverage indicates which methods are invoked and which are not. + By running a test suite with these new features, you will know which + branches and methods are executed, and evaluate total coverage of the test + suite more strictly. + [[Feature #13901]](https://bugs.ruby-lang.org/issues/13901) +* Hash#slice [[Feature #8499]](https://bugs.ruby-lang.org/issues/8499) + and Hash#transform_keys [[Feature #13583]](https://bugs.ruby-lang.org/issues/13583) +* Struct.new can create classes that accept keyword arguments. + [[Feature #11925]](https://bugs.ruby-lang.org/issues/11925) +* Enumerable#any?, all?, none?, and one? accept a pattern argument. + [[Feature #11286]](https://bugs.ruby-lang.org/issues/11286) +* Top-level constant look-up is no longer available. + [[Feature #11547]](https://bugs.ruby-lang.org/issues/11547) +* One of our most loved libraries, pp.rb, is now automatically loaded. + You no longer have to write `require "pp"`. + [[Feature #14123]](https://bugs.ruby-lang.org/issues/14123) +* Print backtrace and error message in reverse order (oldest call first, + most recent call last). When a long backtrace appears on your terminal (TTY), + you can easily find the cause line at the bottom of the backtrace. + Note that the order is reversed only when the backtrace is printed out + to the terminal directly. + [[Feature #8661]](https://bugs.ruby-lang.org/issues/8661) [experimental] + +## Performance improvements + +* About 5-10% performance improvement by removing all `trace` instructions + from overall bytecode (instruction sequences). + The `trace` instruction was added to support the `TracePoint`. + However, in most cases, `TracePoint` is not used and `trace` instructions + are pure overhead. Instead, now we use a dynamic instrumentation technique. + See [[Feature #14104]](https://bugs.ruby-lang.org/issues/14104) for more details. +* Block passing by a block parameter (e.g. `def foo(&b); bar(&b); end`) + is about 3 times faster than Ruby 2.4 by "Lazy Proc allocation" technique. + [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) +* Mutex is rewritten to be smaller and faster. + [[Feature #13517]](https://bugs.ruby-lang.org/issues/13517) +* ERB now generates code from a template twice as fast as Ruby 2.4. +* Improve performance of some built-in methods including `Array#concat`, + `Enumerable#sort_by`, `String#concat`, `String#index`, `Time#+`, and more. +* IO.copy_stream uses copy_file_range(2) to copy offload. + [[Feature #13867]](https://bugs.ruby-lang.org/issues/13867) + +## Other notable changes since 2.4 + +* SecureRandom now prefers OS-provided sources over OpenSSL. + [[Bug #9569]](https://bugs.ruby-lang.org/issues/9569) +* Promote cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, + scanf, sdbm, stringio, strscan, webrick, zlib from standard libraries + to default gems. +* Update to [Onigmo](https://github.com/k-takata/Onigmo/) 6.1.3. + * It adds the [absence operator](https://github.com/k-takata/Onigmo/issues/87). + * Note that [Ruby 2.4.1](https://www.ruby-lang.org/en/news/2017/03/22/ruby-2-4-1-released/) also includes this change. +* Update to Psych 3.0.2. +* Update to RubyGems 2.7.3. +* Update to RDoc 6.0.1. + * [Switch the lexer from IRB based one to Ripper](https://github.com/ruby/rdoc/pull/512). + This dramatically improves the performance of document generation. + * Fix a significant amount of bugs that existed over ten years. + * Add support for new Ruby syntax from the latest versions. +* Update supported Unicode version to 10.0.0. +* `Thread.report_on_exception` is now set to true by default. + This change helps debugging of multi-threaded programs. + [[Feature #14143]](https://bugs.ruby-lang.org/issues/14143) +* IO#write now receives multiple arguments. + [[Feature #9323]](https://bugs.ruby-lang.org/issues/9323) + +See [NEWS](https://github.com/ruby/ruby/blob/v2_5_0/NEWS) +or [commit logs](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0) +for details. + +With those changes, +[6158 files changed, 348484 insertions(+), 82747 deletions(-)](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0) +since Ruby 2.4.0! + +Merry Christmas, Happy Holidays, and enjoy programming with Ruby 2.5! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz> + + SIZE: 15834941 bytes + SHA1: 58f77301c891c1c4a08f301861c26b1ea46509f6 + SHA256: 46e6f3630f1888eb653b15fa811d77b5b1df6fd7a3af436b343cfe4f4503f2ab + SHA512: 0712fe68611f5d0cd6dd54b814f825478e64b6a62bdf67bce431f4dca2dc00b1a33f77bebfbcd0a151118a1152554ab457decde435b424aa1f004bc0aa40580d + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.zip> + + SIZE: 19495617 bytes + SHA1: 700b6f55d689a5c8051c8c292b9e77a1b50bf96e + SHA256: 94559ea6e3c619423da604e503ce1dc1c465d6e0747a07fbdc5f294acaf14c24 + SHA512: e4324064cee8c65b80192e3eff287e915d2d40464d300744c36fb326ae4b1846911400a99d4332192d8a217009d3a5209b43eb5e8bc0b739035bef89cc493e84 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2> + + SIZE: 13955820 bytes + SHA1: 827b9a3bcffa86d1fc9ed96d403cb9dc37731688 + SHA256: d87eb3021f71d4f62e5a5329628ac9a6665902173296e551667edd94362325cc + SHA512: 8f6fdf6708e7470f55bc009db2567cd8d4e633ad0678d83a015441ecf5b5d88bd7da8fb8533a42157ff83b74d00b6dc617d39bbb17fc2c6c12287a1d8eaa0f2c + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.xz> + + SIZE: 11292472 bytes + SHA1: 9c7babcf9e299be3f197d9091024ae458f1a1273 + SHA256: 1da0afed833a0dab94075221a615c14487b05d0c407f991c8080d576d985b49b + SHA512: 55714a33d7661fe8b432f73c34fd67b49699f8b79df1cbd680a74899124d31111ab0f444677672aac1ba725820182940d485efb2db0bf2bc96737c5d40c54578 diff --git a/fa/news/_posts/2017-12-27-fukuoka-ruby-award-2018.md b/fa/news/_posts/2017-12-27-fukuoka-ruby-award-2018.md new file mode 100644 index 0000000000..2f6a4f4aaa --- /dev/null +++ b/fa/news/_posts/2017-12-27-fukuoka-ruby-award-2018.md @@ -0,0 +1,75 @@ +--- +layout: news_post +title: "2018 Fukuoka Ruby Award Competition - Entries to be judged by Matz" +author: "Fukuoka Ruby" +translator: +date: 2017-12-27 00:00:00 +0000 +lang: en +--- + +Dear Ruby Enthusiasts, + +The Government of Fukuoka, Japan, together with "Matz" Matsumoto would like +to invite you to enter the following Ruby competition. If you have developed +an interesting Ruby program, please be encouraged to apply. + +2018 Fukuoka Ruby Award Competition - Grand Prize - 1 Million Yen! + +Entry Deadline: January 31, 2018 + + + +Matz and a group of panelists will select the winners of the +Fukuoka Competition. The grand prize for the Fukuoka Competition +is 1 million yen. Past grand prize winners include Rhomobile (USA) +and APEC Climate Center (Korea). + +[http://myfukuoka.com/category/news/ruby-news/](http://myfukuoka.com/category/news/ruby-news/) + +Programs entered in the competition do not have to be written entirely +in Ruby but should take advantage of the unique characteristics of Ruby. + +Projects must have been developed or completed within the past 12 months +to be eligible. Please visit the following Fukuoka websites for additional +details or to enter: + +[http://www.digitalfukuoka.jp/events/152](http://www.digitalfukuoka.jp/events/152) +or +[http://myfukuoka.com/events/2018-fukuoka-ruby-award-guidelines-for-applicants/](http://myfukuoka.com/events/2018-fukuoka-ruby-award-guidelines-for-applicants/) + +[http://www.digitalfukuoka.jp/uploads/event_detail/file/393/RubyAward_ApplicationForm_2018.doc](http://www.digitalfukuoka.jp/uploads/event_detail/file/393/RubyAward_ApplicationForm_2018.doc) + +Please email the application form to award@f-ruby.com. + +This year, there are the following special prizes: + +The winner of the AWS Prize will receive: + +* Amazon Fire Tablet (subject to change) +* AWS architect technical consultation + +The winner of the GMO Pepabo Prize will receive: + +* Lolipop! shared hosting service: 10-year free subscription of the Standard + Plan, or JPY 100,000 coupon for the metered plan of the Managed Cloud. +* Muumuu Domain DNS registration service: 10-year free subscription of one + domain (for a domain that costs JPY 10,000 or less per year). + +The winner of the IIJ GIO Prize will receive: + +* Further details will be announced later. + +The winner of the Money Forward Prize will receive: + +* dinner with Money Forward's Ruby committers. +* a 10 years free ticket for the premium services of our personal + financial management service "Money Forward". + +The winner of the Salesforce Prize will receive: + +* salesforce.com novelty goods + +"Matz will be testing and reviewing your source code thoroughly, +so it's very meaningful to apply! The competition is free to enter." + +Thanks! diff --git a/fa/news/_posts/2018-02-17-multiple-vulnerabilities-in-rubygems.md b/fa/news/_posts/2018-02-17-multiple-vulnerabilities-in-rubygems.md new file mode 100644 index 0000000000..38571d1628 --- /dev/null +++ b/fa/news/_posts/2018-02-17-multiple-vulnerabilities-in-rubygems.md @@ -0,0 +1,61 @@ +--- +layout: news_post +title: "Multiple vulnerabilities in RubyGems" +author: "usa" +translator: +date: 2018-02-17 03:00:00 +0000 +tags: security +lang: en +--- + +There are multiple vulnerabilities in RubyGems bundled by Ruby. +It is [reported at the official blog of RubyGems](http://blog.rubygems.org/2018/02/15/2.7.6-released.html). + +## Details + +The following vulnerabilities have been reported. + +* Prevent path traversal when writing to a symlinked basedir outside of the root. +* Fix possible Unsafe Object Deserialization Vulnerability in gem owner. +* Strictly interpret octal fields in tar headers. +* Raise a security error when there are duplicate files in a package. +* Enforce URL validation on spec homepage attribute. +* Mitigate XSS vulnerability in homepage attribute when displayed via gem server. +* Prevent Path Traversal issue during gem installation. + +It is strongly recommended for Ruby users to upgrade your Ruby installation or take one of the following workarounds as soon as possible. + +## Affected Versions + +* Ruby 2.2 series: 2.2.9 and earlier +* Ruby 2.3 series: 2.3.6 and earlier +* Ruby 2.4 series: 2.4.3 and earlier +* Ruby 2.5 series: 2.5.0 and earlier +* prior to trunk revision 62422 + +## Workarounds + +In principle, you should upgrade your Ruby installation to the latest version. +RubyGems 2.7.6 or later includes the fix for the vulnerabilities, so upgrade RubyGems to the latest version if you can't upgrade Ruby itself. + +``` +gem update --system +``` + +If you can't upgrade RubyGems, you can apply the following patches as a workaround. + +* [for Ruby 2.2.9](https://bugs.ruby-lang.org/attachments/download/7030/rubygems-276-for-ruby22.patch) +* [for Ruby 2.3.6](https://bugs.ruby-lang.org/attachments/download/7029/rubygems-276-for-ruby23.patch) +* [for Ruby 2.4.3](https://bugs.ruby-lang.org/attachments/download/7028/rubygems-276-for-ruby24.patch) +* [for Ruby 2.5.0](https://bugs.ruby-lang.org/attachments/download/7027/rubygems-276-for-ruby25.patch) + +About the trunk, update to the latest revision. + +## Credits + +This report is based on [the official blog of RubyGems](http://blog.rubygems.org/2018/02/15/2.7.6-released.html). + +## History + +* Originally published at 2018-02-17 03:00:00 UTC +* Mention about upgrading Rubies at 2018-03-29 01:00:00 UTC diff --git a/fa/news/_posts/2018-02-24-ruby-2-6-0-preview1-released.md b/fa/news/_posts/2018-02-24-ruby-2-6-0-preview1-released.md new file mode 100644 index 0000000000..da4fd839a5 --- /dev/null +++ b/fa/news/_posts/2018-02-24-ruby-2-6-0-preview1-released.md @@ -0,0 +1,106 @@ +--- +layout: news_post +title: "Ruby 2.6.0-preview1 Released" +author: "naruse" +translator: +date: 2018-02-24 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.6.0-preview1. + +Ruby 2.6.0-preview1 is the first preview toward Ruby 2.6.0. +This preview1 is released earlier than usual because it includes an important new feature, JIT. + +## JIT + +Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler. + +JIT compiler aims to improve performance of any Ruby program execution. +Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which prints C code to a disk and spawns common C compiler process to generate native code. +See also: [MJIT organization by Vladimir Makarov](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). + +How to use: Just specify `--jit` in command line or `$RUBYOPT` environment variable. Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. + +The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. +Currently JIT compiler is supported only when Ruby is built by gcc or clang and the compiler is available on runtime. Otherwise you can't use it for now. + +As of 2.6.0-preview1, we're just preparing infrastructure for JIT and very few optimizations are implemented. You can measure some of potential improvements in micro benchmarks with this release, but it is NOT ready for benchmarking final performance of Ruby's JIT compiler, especially for large programs like Rails applications. + +We're going to implement method inlining in JIT compiler, which is expected to increase Ruby's performance significantly. + +Also, we're planning to increase the supported platforms, and the next plan is to support Visual Studio. + +Stay tuned for the new age of Ruby's performance. + +## New Features + +* Add `Random.bytes`. [Feature #4938] +* Add `Binding#source_location`. [Feature #14230] + + This method returns the source location of binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores `binding`'s source location [Bug #4352]. So, users should use this newly-introduced method instead of `Kernel#eval`. + +* Add `:exception` option to let `Kernel.#system` raise error instead of returning `false`. [Feature #14386] + +## Performance improvements + +* Speedup `Proc#call` because we don't need to care about `$SAFE` any more. + [Feature #14318] + + With `lc_fizzbuzz` benchmark which uses `Proc#call` so many times we can measure + x1.4 improvements [Bug #10212]. + +* Speedup `block.call` where `block` is passed block parameter. [Feature #14330] + + Ruby 2.5 improves block passing performance. [Feature #14045] + Additionally, Ruby 2.6 improves the performance of passed block calling. + With micro-benchmark we can observe 2.6x improvement. + +## Other notable changes since 2.5 + +* `$SAFE` is a process global state and we can set `0` again. [Feature #14250] + +* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [Feature #14256] + +* Merged RubyGems 2.7.6 + +See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_preview1/NEWS) +or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview1) +for details. + +With those changes, +[1115 files changed, 23023 insertions(+), 14748 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview1) +since Ruby 2.5.0! + +Today, Feburary 24th, is Ruby's 25th birthday. +Happy birthday Ruby, and enjoy programming with Ruby 2.6.0-preview1! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.gz> + + SIZE: 16082501 bytes + SHA1: 94b4a2f5f992dc9855364284e9c64316bf129c90 + SHA256: 2023c42676d9237481e1a97157d5e2ecc10db5e320d5b9cf872ec1d293265d61 + SHA512: 004696c4f087333ba7cb2285418dcce70f399966ae8fed817aab9759fd2d75beb088c4aeb294fcd4260112e8422f490cd4dbdfce402d73f96bb679b8bb3e1607 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.zip> + + SIZE: 19807007 bytes + SHA1: 24d76f67bf913348eca783a2ecf6f3faf37299ae + SHA256: 6c883927e80430cf07f2d90728d6c2c71164223f378a48ebf964d3b66319f623 + SHA512: 1e7f318cec1b7875fd9891df671078de7585b556695a2a85708483ddcacfd6e0b63b70ec2535e92ff981b4f72063721ed552df49688e066666fcd7ae520ae667 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.bz2> + + SIZE: 14104578 bytes + SHA1: 9f0fb79643a4673a839b0c8496eccc6e1dbd022d + SHA256: 8bd6c373df6ee009441270a8b4f86413d101b8f88e8051c55ef62abffadce462 + SHA512: d9cb270529a97670d54f43a0236fab072714e715c39277dab70b7a1843ec818e6700e47e1384c7256f9e0ae41ab2c0b768a0de38a5ecf4f4fff5da6ef5ad4944 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.xz> + + SIZE: 11423984 bytes + SHA1: bbbc89d760cdaadbca3cbff587295864edeff0af + SHA256: 1d99139116e4e245ce543edb137b2a8873c26e9f0bde88d8cee6789617cc8d0e + SHA512: d12ff29778d8d940344619881b4d8247c2fb6b44ac2b2dbddb7078828e893cfac9a5a95b5588f0afdbed52bdb6dea95cff1b9ce3ad47dfa62209e97dab8810b6 diff --git a/fa/news/_posts/2018-03-28-buffer-under-read-unpack-cve-2018-8778.md b/fa/news/_posts/2018-03-28-buffer-under-read-unpack-cve-2018-8778.md new file mode 100644 index 0000000000..1a6dce6524 --- /dev/null +++ b/fa/news/_posts/2018-03-28-buffer-under-read-unpack-cve-2018-8778.md @@ -0,0 +1,37 @@ +--- +layout: news_post +title: "CVE-2018-8778: Buffer under-read in String#unpack" +author: "usa" +translator: +date: 2018-03-28 14:00:00 +0000 +tags: security +lang: en +--- + +There is a buffer under-read vulnerability in `String#unpack` method. +This vulnerability has been assigned the CVE identifier [CVE-2018-8778](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8778). + +## Details + +`String#unpack` receives format specifiers as its parameter, and can be specified the position of parsing the data by the specifier `@`. +If a big number is passed with `@`, the number is treated as the negative value, and out-of-buffer read is occurred. +So, if a script accepts an external input as the argument of `String#unpack`, the attacker can read data on heaps. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.9 and earlier +* Ruby 2.3 series: 2.3.6 and earlier +* Ruby 2.4 series: 2.4.3 and earlier +* Ruby 2.5 series: 2.5.0 and earlier +* Ruby 2.6 series: 2.6.0-preview1 +* prior to trunk revision r62992 + +## Credit + +Thanks to [aerodudrizzt](https://hackerone.com/aerodudrizzt) for reporting the issue. + +## History + +* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-http-response-splitting-in-webrick-cve-2017-17742.md b/fa/news/_posts/2018-03-28-http-response-splitting-in-webrick-cve-2017-17742.md new file mode 100644 index 0000000000..7e2b449b7e --- /dev/null +++ b/fa/news/_posts/2018-03-28-http-response-splitting-in-webrick-cve-2017-17742.md @@ -0,0 +1,35 @@ +--- +layout: news_post +title: "CVE-2017-17742: HTTP response splitting in WEBrick" +author: "usa" +translator: +date: 2018-03-28 14:00:00 +0000 +tags: security +lang: en +--- + +There is an HTTP response splitting vulnerability in WEBrick bundled with Ruby. +This vulnerability has been assigned the CVE identifier [CVE-2017-17742](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17742). + +## Details + +If a script accepts an external input and outputs it without modification as a part of HTTP responses, an attacker can use newline characters to deceive the clients that the HTTP response header is stopped at there, and can inject fake HTTP responses after the newline characters to show malicious contents to the clients. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.9 and earlier +* Ruby 2.3 series: 2.3.6 and earlier +* Ruby 2.4 series: 2.4.3 and earlier +* Ruby 2.5 series: 2.5.0 and earlier +* Ruby 2.6 series: 2.6.0-preview1 +* prior to trunk revision r62968 + +## Credit + +Thanks to Aaron Patterson <tenderlove@ruby-lang.org> for reporting the issue. + +## History + +* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-large-request-dos-in-webrick-cve-2018-8777.md b/fa/news/_posts/2018-03-28-large-request-dos-in-webrick-cve-2018-8777.md new file mode 100644 index 0000000000..de1f84b782 --- /dev/null +++ b/fa/news/_posts/2018-03-28-large-request-dos-in-webrick-cve-2018-8777.md @@ -0,0 +1,35 @@ +--- +layout: news_post +title: "CVE-2018-8777: DoS by large request in WEBrick" +author: "usa" +translator: +date: 2018-03-28 14:00:00 +0000 +tags: security +lang: en +--- + +There is a out-of-memory DoS vulnerability with a large request in WEBrick bundled with Ruby. +This vulnerability has been assigned the CVE identifier [CVE-2018-8777](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8777). + +## Details + +If an attacker sends a large request which contains huge HTTP headers, WEBrick try to process it on memory, so the request causes the out-of-memory DoS attack. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.9 and earlier +* Ruby 2.3 series: 2.3.6 and earlier +* Ruby 2.4 series: 2.4.3 and earlier +* Ruby 2.5 series: 2.5.0 and earlier +* Ruby 2.6 series: 2.6.0-preview1 +* prior to trunk revision r62965 + +## Credit + +Thanks to Eric Wong <e@80x24.org> for reporting the issue. + +## History + +* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-poisoned-nul-byte-dir-cve-2018-8780.md b/fa/news/_posts/2018-03-28-poisoned-nul-byte-dir-cve-2018-8780.md new file mode 100644 index 0000000000..db5110a454 --- /dev/null +++ b/fa/news/_posts/2018-03-28-poisoned-nul-byte-dir-cve-2018-8780.md @@ -0,0 +1,37 @@ +--- +layout: news_post +title: "CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir" +author: "usa" +translator: +date: 2018-03-28 14:00:00 +0000 +tags: security +lang: en +--- + +There is an unintentional directory traversal in some methods in `Dir`. +This vulnerability has been assigned the CVE identifier [CVE-2018-8780](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8780). + +## Details + +`Dir.open`, `Dir.new`, `Dir.entries` and `Dir.empty?` accept the path of the target directory as their parameter. +If the parameter contains NUL (`\0`) bytes, these methods recognize that the path is completed before the NUL bytes. +So, if a script accepts an external input as the argument of these methods, the attacker can make the unintentional directory traversal. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.9 and earlier +* Ruby 2.3 series: 2.3.6 and earlier +* Ruby 2.4 series: 2.4.3 and earlier +* Ruby 2.5 series: 2.5.0 and earlier +* Ruby 2.6 series: 2.6.0-preview1 +* prior to trunk revision r62989 + +## Credit + +Thanks to [ooooooo_q](https://hackerone.com/ooooooo_q) for reporting the issue. + +## History + +* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-poisoned-nul-byte-unixsocket-cve-2018-8779.md b/fa/news/_posts/2018-03-28-poisoned-nul-byte-unixsocket-cve-2018-8779.md new file mode 100644 index 0000000000..107c41e393 --- /dev/null +++ b/fa/news/_posts/2018-03-28-poisoned-nul-byte-unixsocket-cve-2018-8779.md @@ -0,0 +1,40 @@ +--- +layout: news_post +title: "CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket" +author: "usa" +translator: +date: 2018-03-28 14:00:00 +0000 +tags: security +lang: en +--- + +There is a unintentional socket creation vulnerability in `UNIXServer.open` method of socket library bundled with Ruby. +And there is also a unintentional socket access vulnerability in `UNIXSocket.open` method. +This vulnerability has been assigned the CVE identifier [CVE-2018-8779](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8779). + +## Details + +`UNIXServer.open` accepts the path of the socket to be created at the first parameter. +If the path contains NUL (`\0`) bytes, this method recognize that the path is completed before the NUL bytes. +So, if a script accepts an external input as the argument of this method, the attacker can make the socket file in the unintentional path. +And, `UNIXSocket.open` also accepts the path of the socket to be created at the first parameter without checking NUL bytes like `UNIXServer.open`. +So, if a script accepts an external input as the argument of this method, the attacker can accepts the socket file in the unintentional path. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.9 and earlier +* Ruby 2.3 series: 2.3.6 and earlier +* Ruby 2.4 series: 2.4.3 and earlier +* Ruby 2.5 series: 2.5.0 and earlier +* Ruby 2.6 series: 2.6.0-preview1 +* prior to trunk revision r62991 + +## Credit + +Thanks to [ooooooo_q](https://hackerone.com/ooooooo_q) for reporting the issue. + +## History + +* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-ruby-2-2-10-released.md b/fa/news/_posts/2018-03-28-ruby-2-2-10-released.md new file mode 100644 index 0000000000..678c397d4c --- /dev/null +++ b/fa/news/_posts/2018-03-28-ruby-2-2-10-released.md @@ -0,0 +1,60 @@ +--- +layout: news_post +title: "Ruby 2.2.10 Released" +author: "usa" +translator: +date: 2018-03-28 17:00:00 +0000 +lang: en +--- + +Ruby 2.2.10 has been released. +This release includes several security fixes. +Please check the topics below for details. + +* [CVE-2017-17742: HTTP response splitting in WEBrick](/en/news/2018/03/28/http-response-splitting-in-webrick-cve-2017-17742/) +* [CVE-2018-8777: DoS by large request in WEBrick](/en/news/2018/03/28/large-request-dos-in-webrick-cve-2018-8777/) +* [CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir](/en/news/2018/03/28/unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914/) +* [CVE-2018-8778: Buffer under-read in String#unpack](/en/news/2018/03/28/buffer-under-read-unpack-cve-2018-8778/) +* [CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket](/en/news/2018/03/28/poisoned-nul-byte-unixsocket-cve-2018-8779/) +* [CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir](/en/news/2018/03/28/poisoned-nul-byte-dir-cve-2018-8780/) +* [Multiple vulnerabilities in RubyGems](/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/) + +Ruby 2.2 is under the state of the security maintenance phase, until the end of the March of 2018. +After the date, maintenance of Ruby 2.2 will be ended. +So, this release is expected to be the last release of Ruby 2.2. +We will never make a new release of Ruby 2.2 unless Ruby 2.2.10 has a serious regression bug. +We recommend you migrating to newer versions of Ruby, such as 2.5. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.bz2) + + SIZE: 13365461 bytes + SHA1: 72ee1dcfd96199d2c3092b77db7a7f439c0abd08 + SHA256: a54204d2728283c9eff0cf81d654f245fa5b3447d0824f1a6bc3b2c5c827381e + SHA512: f8ec96c2a5f4ecf22052ee0b1029989ded52d7bf5d41be24fef67e732e76f72119302240bca08f0547510a9cd29e941a32e263cad9c8a2bf80023d6bc97b2373 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.gz) + + SIZE: 16694179 bytes + SHA1: b0207c861f3fa41cbe4909ecb89bd2fcac81fe7c + SHA256: cd51019eb9d9c786d6cb178c37f6812d8a41d6914a1edaf0050c051c75d7c358 + SHA512: 051124922240d2e20e74903b9c629fa897279072d2aa9b0a4e3a02331b843fa9c97c16e7073d6faec1b9f2024c3a7e36346014c30eee256f0715c5de226b5db8 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.xz) + + SIZE: 10508612 bytes + SHA1: c46737f81df819c3d7423df5c644431b3fcb8fee + SHA256: bf77bcb7e6666ccae8d0882ea12b05f382f963f0a9a5285a328760c06a9ab650 + SHA512: 1f35458f2b1c334e64aecf42cd1df3b223fef119b6ad23394285d9f2e72da26b3ba5418950694c4a8c0b4afc43672f78459f2f7281a595cff0967eb239662ae4 + +* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.zip) + + SIZE: 18540424 bytes + SHA1: 0f4b9c6695d000cb456fe8b89f8bf6d42fb95069 + SHA256: 6933eb989afb1b916c438d8eeecff1cfb0a6569c07e7190beca56b10b822207a + SHA512: dfaa9a76170b0eed9cb2bf41178f2193dd3428492413b1616aaabd67ec35b9b7705b422b0fdfe38b18a1800bbce3ba161b53d229d307ea7f5c0269ef3d031980 + +## Release Comment + +Thanks to everyone who reported vulnerabilities, fixed the vulnerabilities and helped with this release. diff --git a/fa/news/_posts/2018-03-28-ruby-2-3-7-released.md b/fa/news/_posts/2018-03-28-ruby-2-3-7-released.md new file mode 100644 index 0000000000..0d0d242505 --- /dev/null +++ b/fa/news/_posts/2018-03-28-ruby-2-3-7-released.md @@ -0,0 +1,67 @@ +--- +layout: news_post +title: "Ruby 2.3.7 Released" +author: "usa" +translator: +date: 2018-03-28 17:00:00 +0000 +lang: en +--- + +Ruby 2.3.7 has been released. + +This release includes about 70 bug fixes after the previous release, and also includes several security fixes. +Please check the topics below for details. + +* [CVE-2017-17742: HTTP response splitting in WEBrick](/en/news/2018/03/28/http-response-splitting-in-webrick-cve-2017-17742/) +* [CVE-2018-8777: DoS by large request in WEBrick](/en/news/2018/03/28/large-request-dos-in-webrick-cve-2018-8777/) +* [CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir](/en/news/2018/03/28/unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914/) +* [CVE-2018-8778: Buffer under-read in String#unpack](/en/news/2018/03/28/buffer-under-read-unpack-cve-2018-8778/) +* [CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket](/en/news/2018/03/28/poisoned-nul-byte-unixsocket-cve-2018-8779/) +* [CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir](/en/news/2018/03/28/poisoned-nul-byte-dir-cve-2018-8780/) +* [Multiple vulnerabilities in RubyGems](/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/) + +See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_7/ChangeLog) for details. + +After this release, we will end the normal maintenance phase of Ruby 2.3, +and start the security maintenance phase of it. +This means that after the release of 2.3.7 we will never backport any bug fixes +to 2.3 except security fixes. +The term of the security maintenance phase is scheduled for 1 year. +By the end of this term, official support of Ruby 2.3 will be over. +Therefore, we recommend that you start planning to upgrade to Ruby 2.5 or 2.4. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.bz2) + + SIZE: 14421177 bytes + SHA1: 3bb88965405da5e4de2432eeb445fffa8a66fb33 + SHA256: 18b12fafaf37d5f6c7139c1b445355aec76baa625a40300598a6c8597fc04d8e + SHA512: e72754f7703f0706c4b0bccd053035536053451fe069a55427984cc0bc5692b86bd51c243c5f62f78527c66b08300d2e4aa19b73e6ded13d6020aa2450e66a7d + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.gz) + + SIZE: 17859100 bytes + SHA1: 540996fec64984ab6099e34d2f5820b14904f15a + SHA256: 35cd349cddf78e4a0640d28ec8c7e88a2ae0db51ebd8926cd232bb70db2c7d7f + SHA512: 1ceccf00981d6d60e7587e89a04cc028f976950313ee445db5afd03e323472d3e69a35423733b24f9cbd9729f034cf80d2233b5c159764839f5bee4ca7052fe0 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.xz) + + SIZE: 11438124 bytes + SHA1: c489248730cbce7721edd3e97de81e68eec938b2 + SHA256: c61f8f2b9d3ffff5567e186421fa191f0d5e7c2b189b426bb84498825d548edb + SHA512: fd91c8db3d3aa4cc962a62f27b4d1a71f6b5567ab836e6dbfbbb1553eb269d11e12faf9e36af6c489c33b54fd89dab99bfe81a563158b704877f0628d6f5bc5a + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.zip) + + SIZE: 19911423 bytes + SHA1: ec6870b39125238d8d57d642225592896ed3b6d9 + SHA256: ffa42eeff928624a05dc7ad39426c855c6e9a757417f17b6fe9e54664ec91012 + SHA512: c85255a7f43c7df2fb11be4f9aa96e2ae70a94d3e963ccff4d8c1349ad6d455d9a436812efb24c91e451e68b8f81e5d335c6d5811b2a0e945a7070c305054434 + +## Release Comment + +Thanks to everyone who helped with this release. + +The maintenance of Ruby 2.3, including this release, is based on the “Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2018-03-28-ruby-2-4-4-released.md b/fa/news/_posts/2018-03-28-ruby-2-4-4-released.md new file mode 100644 index 0000000000..33b693e688 --- /dev/null +++ b/fa/news/_posts/2018-03-28-ruby-2-4-4-released.md @@ -0,0 +1,60 @@ +--- +layout: news_post +title: "Ruby 2.4.4 Released" +author: "nagachika" +translator: +date: 2018-03-28 17:10:00 +0000 +lang: en +--- + +Ruby 2.4.4 has been released. + +This release includes some bug fixes and some security fixes. + +* [CVE-2017-17742: HTTP response splitting in WEBrick](/en/news/2018/03/28/http-response-splitting-in-webrick-cve-2017-17742/) +* [CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir](/en/news/2018/03/28/unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914/) +* [CVE-2018-8777: DoS by large request in WEBrick](/en/news/2018/03/28/large-request-dos-in-webrick-cve-2018-8777/) +* [CVE-2018-8778: Buffer under-read in String#unpack](/en/news/2018/03/28/buffer-under-read-unpack-cve-2018-8778/) +* [CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket](/en/news/2018/03/28/poisoned-nul-byte-unixsocket-cve-2018-8779/) +* [CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir](/en/news/2018/03/28/poisoned-nul-byte-dir-cve-2018-8780/) +* [Multiple vulnerabilities in RubyGems](/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/) + + +There are also some bug fixes. +See [commit logs](https://github.com/ruby/ruby/compare/v2_4_3...v2_4_4) for more details. + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.bz2> + + SIZE: 12659705 bytes + SHA1: 1cc548ba3eb821e29ab92ac13e1d5c7bf23b1526 + SHA256: 45a8de577471b90dc4838c5ef26aeb253a56002896189055a44dc680644243f1 + SHA512: ae632852a5f413561d8134e9ef3bb82adb37317696dd293ef92cb76709ecd45718f14116ecce35b12f1c2dd53ccae8dabc7a924a270072b697512d11f4922347 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.gz> + + SIZE: 14225338 bytes + SHA1: ec82b0d53bd0adad9b19e6b45e44d54e9ec3f10c + SHA256: 254f1c1a79e4cc814d1e7320bc5bdd995dc57e08727d30a767664619a9c8ae5a + SHA512: fa1f6d3a4856046d4f9c3e652be225ae67f3e9ff0d117b6ed327d58cfb717fb9b1ce81d06a3302e486e7da0b5f67b16341666ceb02a554a428d221d008263ed8 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.xz> + + SIZE: 10049304 bytes + SHA1: 0eac83a0818e1d6bc661abd9f90457cff8868cff + SHA256: 1d0034071d675193ca769f64c91827e5f54cb3a7962316a41d5217c7bc6949f0 + SHA512: 4dc112a149273d4221484ccbf1260c6c5fcad7e0a6e4bc91e4ef69cbc093d3191f7abd71420f80d680f8ea5d111e6803ba2af32166aa501913639e6d5696fde0 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.zip> + + SIZE: 15685143 bytes + SHA1: 4ac11e6915c168a235b854014aa2a0d540cabd68 + SHA256: d0ca0561be0045f2e094f2ba94f1585e66e9c1e91fe6de3f3035f4d67dce7650 + SHA512: 79b655fda332d44097e108a76c4ff74f16930cd3ef3951c7988df325781aa0b3e724697107d964735f31a2457a835f08fa72c4eadd5ef7d3ccc1e6c9185f37e3 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped +us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2018-03-28-ruby-2-5-1-released.md b/fa/news/_posts/2018-03-28-ruby-2-5-1-released.md new file mode 100644 index 0000000000..ea09f2cb9d --- /dev/null +++ b/fa/news/_posts/2018-03-28-ruby-2-5-1-released.md @@ -0,0 +1,60 @@ +--- +layout: news_post +title: "Ruby 2.5.1 Released" +author: "naruse" +translator: +date: 2018-03-28 17:20:00 +0000 +lang: en +--- + +Ruby 2.5.1 has been released. + +This release includes some bug fixes and some security fixes. + +* [CVE-2017-17742: HTTP response splitting in WEBrick](/en/news/2018/03/28/http-response-splitting-in-webrick-cve-2017-17742/) +* [CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir](/en/news/2018/03/28/unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914/) +* [CVE-2018-8777: DoS by large request in WEBrick](/en/news/2018/03/28/large-request-dos-in-webrick-cve-2018-8777/) +* [CVE-2018-8778: Buffer under-read in String#unpack](/en/news/2018/03/28/buffer-under-read-unpack-cve-2018-8778/) +* [CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket](/en/news/2018/03/28/poisoned-nul-byte-unixsocket-cve-2018-8779/) +* [CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir](/en/news/2018/03/28/poisoned-nul-byte-dir-cve-2018-8780/) +* [Multiple vulnerabilities in RubyGems](/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/) + + +There are also some bug fixes. +See [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_5_1) for more details. + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz> + + SIZE: 15923244 bytes + SHA1: 93fafd57a724974b951957c522cdc4478a6bdc2e + SHA256: dac81822325b79c3ba9532b048c2123357d3310b2b40024202f360251d9829b1 + SHA512: 67badcd96fd3808cafd6bc86c970cd83aee7e5ec682f34e7353663d96211a6af314a4c818e537ec8ca51fbc0737aac4e28e0ebacf1a4d1e13db558b623a0f6b1 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.zip> + + SIZE: 19525307 bytes + SHA1: 4fe511496f1eea0c3c1ac0c5f75ef11168ad1695 + SHA256: 5d8e490896c8353aa574be56ca9aa52c250390e76e36cd23df450c0434ada4d4 + SHA512: 490a52081e740b37f06215740734e9a6598ee9b492995b3161d720b5b05beadb4570aa526b3df01f686881b1e259aa7d4a59c1f398989dc2d5f8250342d986f7 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2> + + SIZE: 14000644 bytes + SHA1: 251fdb5ac10783b036fe923aa7986be582062361 + SHA256: 0f5d20f012baca865381a055e73f22db814615fee3c68083182cb78a4b3b30cb + SHA512: 82e799ecf7257a9f5fe8691c50a478b0f91bd4bdca50341c839634b0da5cd76c5556965cb9437264b66438434c94210c949fe9dab88cbc5b3b7fa34b5382659b + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.xz> + + SIZE: 11348108 bytes + SHA1: 0fb5da56f9e5fca45e36aa24ba842d935d1691c2 + SHA256: 886ac5eed41e3b5fc699be837b0087a6a5a3d10f464087560d2d21b3e71b754d + SHA512: 31bacf58469953282cd5d8b51862dcf4b84dedb927c1871bc3fca32fc157fe49187631575a70838705fe246f4555647577a7ecc26894445a7d64de5503dc11b4 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped +us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2018-03-28-unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914.md b/fa/news/_posts/2018-03-28-unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914.md new file mode 100644 index 0000000000..ef992ed3e7 --- /dev/null +++ b/fa/news/_posts/2018-03-28-unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914.md @@ -0,0 +1,38 @@ +--- +layout: news_post +title: "CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir" +author: "usa" +translator: +date: 2018-03-28 14:00:00 +0000 +tags: security +lang: en +--- + +There is an unintentional directory creation vulnerability in tmpdir library bundled with Ruby. +And there is also an unintentional file creation vulnerability in tempfile library bundled with Ruby, because it uses tmpdir internally. +This vulnerability has been assigned the CVE identifier [CVE-2018-6914](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6914). + +## Details + +`Dir.mktmpdir` method introduced by tmpdir library accepts the prefix and the suffix of the directory which is created as the first parameter. +The prefix can contain relative directory specifiers `"../"`, so this method can be used to target any directory. +So, if a script accepts an external input as the prefix, and the targeted directory has inappropriate permissions or the ruby process has inappropriate privileges, the attacker can create a directory or a file at any directory. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.2 series: 2.2.9 and earlier +* Ruby 2.3 series: 2.3.6 and earlier +* Ruby 2.4 series: 2.4.3 and earlier +* Ruby 2.5 series: 2.5.0 and earlier +* Ruby 2.6 series: 2.6.0-preview1 +* prior to trunk revision r62990 + +## Credit + +Thanks to [ooooooo_q](https://hackerone.com/ooooooo_q) for reporting the issue. + +## History + +* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-05-31-ruby-2-6-0-preview2-released.md b/fa/news/_posts/2018-05-31-ruby-2-6-0-preview2-released.md new file mode 100644 index 0000000000..e873b88acd --- /dev/null +++ b/fa/news/_posts/2018-05-31-ruby-2-6-0-preview2-released.md @@ -0,0 +1,127 @@ +--- +layout: news_post +title: "Ruby 2.6.0-preview2 Released" +author: "naruse" +translator: +date: 2018-05-31 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.6.0-preview2. + +Ruby 2.6.0-preview2 is the second preview toward Ruby 2.6.0. +This preview2 is released earlier than usual because it includes an important new feature, JIT. + +## JIT + +Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler. + +JIT compiler aims to improve performance of any Ruby program execution. +Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which prints C code to a disk and spawns common C compiler process to generate native code. +See also: [MJIT organization by Vladimir Makarov](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). + +How to use: Just specify `--jit` in command line or `$RUBYOPT` environment variable. +Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. + +The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. +Currently JIT compiler is supported only when Ruby is built by gcc or clang and the compiler is available on runtime. Otherwise you can't use it for now. + +As of 2.6.0-preview2, we're just preparing infrastructure for JIT and very few optimizations are implemented. +You can measure some of potential improvements in micro benchmarks with this release, but it is NOT ready for benchmarking final performance of Ruby's JIT compiler, especially for larger programs like Rails applications. + +We're going to implement method iniling in JIT compiler, which is expected to increase Ruby's performance in order of magnitude. +Also, we're planning to increase the supported platforms, and the next plan is to support Visual Studio. + +Stay tuned for the new age of Ruby's performance. + +## RubyVM::AST [Experimental] + +Ruby 2.6 introduces `RubyVM::AST` module. + +This module has `parse` method which parses a given ruby code of string and returns AST (Abstract Syntax Tree) nodes, and `parse_file` method which parses a given ruby code file and returns AST nodes. + +`RubyVM::AST::Node` class is also introduced you can get location information and children nodes from `Node` objects. This feature is experimental. Compatibility of the structure of AST nodes are not guaranteed. + +## New Features + +* Add a new alias `then` to `Kernel#yield_self`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) + +* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL] + +* constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) + +* endless range [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) + + An endless range, `(1..)`, is introduced. It works as it has no end. This shows typical use cases: + + ary[1..] # identical to ary[1..-1] without magical -1 + (1..).each {|index| ... } # inifinite loop from index 1 + ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { ... } + +* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) + + This method returns the source location of binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). So, users should use this newly-introduced method instead of `Kernel#eval`. + +* Add `:exception` option to let `Kernel.#system` raise error instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) + +## Performance improvements + +* Speedup `Proc#call` because we dont' need to care about `$SAFE` any more. + [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) + + With `lc_fizzbuzz` benchmark which uses `Proc#call` so many times we can measure + x1.4 improvements [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212). + +* Speedup `block.call` where `block` is passed block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) + + Ruby 2.5 improves block passing performance. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) + Additionally, Ruby 2.6 improves the performance of passed block calling. + With micro-benchmark we can observe x2.6 improvement. + +## Other notable changes since 2.5 + +* `$SAFE` is a process global state and we can set `0` again. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) + +* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) + +* Merge RubyGems 3.0.0.beta1 + +See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_preview2/NEWS) +or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview2) +for details. + +With those changes, +[4699 files changed, 45744 insertions(+), 30885 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview2) +since Ruby 2.5.0! + +Enjoy programming with Ruby 2.6.0-preview2! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.tar.gz> + + SIZE: 16170732 bytes + SHA1: 6867b00e81af0b70fcb6f1aa7fc22d89d48a7d12 + SHA256: ee15ab35f17c942b1f41bd792f2494f639affff6e03babf44708b72fdbb6de34 + SHA512: 95c5a277785dfeb3006503e1b9ccccefdf6ce29669d4576f0191ee6986ba0e3567fbbed18a8d2b1f147d637434e4a3a4fdf47d84995e10ad4a354950e9092690 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.zip> + + SIZE: 19850776 bytes + SHA1: eba80a09b552ce3142fd571ff5867a13736d170e + SHA256: 97fc187b90570fce110d22803a319ab04e68700692b2b6b4e9961886f1a931e5 + SHA512: d5501819635bda64ac3dc717815652b692302b44a7cdf4c08edfa5cb9ec7f79a70fffc534879b316a4a9584825ed3c0948667beae2d7c313de58583931b981f4 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.tar.bz2> + + SIZE: 14209461 bytes + SHA1: a9b1b4f359601b94b3f5b77115fcbf3790ff69cd + SHA256: d8ede03d5ad3abd9d2c81cf0ad17a41d22b747c003cc16fd59befb2aaf48f0b2 + SHA512: 3872227e9b1c97c206d19bf1e6ce15a38ee15a26c431b4436605dea67affcf16372358984df76b35e7abaa902c15c16f533ac7af47e3031dea9451bbe459b693 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.tar.xz> + + SIZE: 11525372 bytes + SHA1: e795abe1a4f828b3d851f7148b4bf6c9d9a7e7fd + SHA256: 00ddfb5e33dee24469dd0b203597f7ecee66522ebb496f620f5815372ea2d3ec + SHA512: bef3e90e97d6e58889cd500c591c579b728ca5833022b690182c0bf4d661e437b3a2ca33470dac35fcf693897819b9d7f500c0f71b707e2fcdcb0644028f2c03 diff --git a/fa/news/_posts/2018-06-20-support-of-ruby-2-2-has-ended.md b/fa/news/_posts/2018-06-20-support-of-ruby-2-2-has-ended.md new file mode 100644 index 0000000000..6930364352 --- /dev/null +++ b/fa/news/_posts/2018-06-20-support-of-ruby-2-2-has-ended.md @@ -0,0 +1,43 @@ +--- +layout: news_post +title: "Support of Ruby 2.2 has ended" +author: "antonpaisov" +translator: +date: 2018-06-20 00:00:00 +0000 +lang: en +--- + +We announce that all support of the Ruby 2.2 series has ended. + +After the release of Ruby 2.2.7 on March 28, 2017, +the support of the Ruby 2.2 series was in the security maintenance phase. +Now, after one year has passed, this phase has ended. +Therefore, on March 31, 2018, all support of the Ruby 2.2 series has ended. +Bug and security fixes from more recent Ruby versions will no longer be +backported to 2.2, and no further patch release of 2.2 will be released. +We highly recommend that you upgrade to Ruby 2.5 or 2.4 as soon as possible. + + +## About currently supported Ruby versions + +### Ruby 2.5 series + +Currently in normal maintenance phase. +We will backport bug fixes and release with the fixes whenever necessary. +And, if a critical security issue is found, we will release an urgent fix +for it. + +### Ruby 2.4 series + +Currently in normal maintenance phase. +We will backport bug fixes and release with the fixes whenever necessary. +And, if a critical security issue is found, we will release an urgent fix +for it. + +### Ruby 2.3 series + +Currently in security maintenance phase. +We will never backport any bug fixes to 2.3 except security fixes. +If a critical security issue is found, we will release an urgent fix for it. +We are planning to end the support of the Ruby 2.3 series at the end of +March 2019. diff --git a/fa/news/_posts/2018-10-17-not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396.md b/fa/news/_posts/2018-10-17-not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396.md new file mode 100644 index 0000000000..73b7616aa2 --- /dev/null +++ b/fa/news/_posts/2018-10-17-not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396.md @@ -0,0 +1,45 @@ +--- +layout: news_post +title: "CVE-2018-16396: Tainted flags are not propagated in Array#pack and String#unpack with some directives" +author: "usa" +translator: +date: 2018-10-17 14:00:00 +0000 +tags: security +lang: en +--- + +In `Array#pack` and `String#unpack` with some formats, the tainted flags +of the original data are not propagated to the returned string/array. +This vulnerability has been assigned the CVE identifier +[CVE-2018-16396](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16396). + +## Details + +The `Array#pack` method converts the receiver's contents into a string with +a specified format. If the receiver contains some tainted objects, the +returned string also should be tainted. The `String#unpack` method which +converts the receiver into an array also should propagate its tainted +flag to the objects contained in the returned array. +But, with the `B`, `b`, `H`, and `h` directives, the tainted flags are not +propagated. So, if a script processes unreliable inputs by `Array#pack` +and/or `String#unpack` with these directives and checks the reliability +with tainted flags, the check might be wrong. + +All users running an affected release should upgrade immediately. + +## Affected Versions + +* Ruby 2.3 series: 2.3.7 and earlier +* Ruby 2.4 series: 2.4.4 and earlier +* Ruby 2.5 series: 2.5.1 and earlier +* Ruby 2.6 series: 2.6.0-preview2 and earlier +* prior to trunk revision r65125 + +## Credit + +Thanks to [Chris Seaton](https://hackerone.com/chrisseaton) +for reporting the issue. + +## History + +* Originally published at 2018-10-17 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-10-17-openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395.md b/fa/news/_posts/2018-10-17-openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395.md new file mode 100644 index 0000000000..ed99905c8f --- /dev/null +++ b/fa/news/_posts/2018-10-17-openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395.md @@ -0,0 +1,60 @@ +--- +layout: news_post +title: "CVE-2018-16395: OpenSSL::X509::Name equality check does not work correctly" +author: "usa" +translator: +date: 2018-10-17 14:00:00 +0000 +tags: security +lang: en +--- + +The equality check of `OpenSSL::X509::Name` is not correct in the openssl +extension library bundled with Ruby. +This vulnerability has been assigned the CVE identifier +[CVE-2018-16395](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16395). + +## Details + +An instance of `OpenSSL::X509::Name` contains entities such as CN, C, +and so on. Some two instances of `OpenSSL::X509::Name` are equal only +when all entities are exactly equal. However, there is a bug that the +equality check is not correct if the value of an entity of the argument +(right-hand side) starts with the value of the receiver (left-hand side). +So, if a malicious X.509 certificate is passed to compare with an +existing certificate, there is a possibility to be judged incorrectly +that they are equal. + +It is strongly recommended for Ruby users to upgrade your Ruby installation +or take one of the following workarounds as soon as possible. + +## Affected Versions + +* Ruby 2.3 series: 2.3.7 and earlier +* Ruby 2.4 series: 2.4.4 and earlier +* Ruby 2.5 series: 2.5.1 and earlier +* Ruby 2.6 series: 2.6.0-preview2 and earlier +* prior to trunk revision r65139 + +## Workaround + +The openssl 2.1.2 gem or later includes a fix for the vulnerability, +so upgrade the openssl gem to the latest version if you are using Ruby 2.4 +or a later series. + +``` +gem install openssl -v ">= 2.1.2" +``` + +However, in the Ruby 2.3 series, you can not override the bundled version +of openssl with the openssl gem. +Please upgrade your Ruby installation to the latest version. + +## Credit + +Thanks to [Tyler Eckstein](https://hackerone.com/tylereckstein) +for reporting the issue. + +## History + +* Originally published at 2018-10-17 14:00:00 (UTC) +* Mention the fixed revision of trunk at 2018-10-19 00:00:00 (UTC) diff --git a/fa/news/_posts/2018-10-17-ruby-2-3-8-released.md b/fa/news/_posts/2018-10-17-ruby-2-3-8-released.md new file mode 100644 index 0000000000..fdca2242c6 --- /dev/null +++ b/fa/news/_posts/2018-10-17-ruby-2-3-8-released.md @@ -0,0 +1,58 @@ +--- +layout: news_post +title: "Ruby 2.3.8 Released" +author: "usa" +translator: +date: 2018-10-17 17:00:00 +0000 +lang: en +--- + +Ruby 2.3.8 has been released. + +This release includes several security fixes. +Please check the topics below for details. + +* [CVE-2018-16396: Tainted flags are not propagated in Array#pack and String#unpack with some directives](/en/news/2018/10/17/not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396/) +* [CVE-2018-16395: OpenSSL::X509::Name equality check does not work correctly](/en/news/2018/10/17/openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395/) + +This release also includes a non-security fix to support Visual Studio 2014 +with Windows 10 October 2018 Update for maintenance reasons. + +Ruby 2.3 is now under the state of the security maintenance phase, until +the end of March of 2019. After that date, maintenance of Ruby 2.3 +will be ended. We recommend you start planning the migration to newer +versions of Ruby, such as 2.5 or 2.4. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.bz2) + + SIZE: 14418609 bytes + SHA1: 91b31abdba00a346c155fd32bd32d3cec3b73bc4 + SHA256: 4d1a3a88e8cf9aea624eb73843fbfc60a9a281582660f86d5e4e00870397407c + SHA512: 6d79e0d25757fd37188a8db3e630a52539bce7927fcb779a2ce9a97b9e5f330753035c16843552f1a1fb6c9a1e5c0f916b3cc8b5c0bfe81e20f35f8442e40ae8 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.gz) + + SIZE: 17858806 bytes + SHA1: 69311991a9cd2c8e3c86a0dbbaaf915ae91f0bec + SHA256: b5016d61440e939045d4e22979e04708ed6c8e1c52e7edb2553cf40b73c59abf + SHA512: 43b02f2f9de6baf281f09a49fd07367127b4de1fb14473380d06bfa7667990d8f722ae2d33cf7d15b02f7e799515f21aebd308897c4c2a5461ebab4049d6c7ef + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.xz) + + SIZE: 11465792 bytes + SHA1: 9771acdad851bbf0ef349bb7da5d0ffc91a860ed + SHA256: 910f635d84fd0d81ac9bdee0731279e6026cb4cd1315bbbb5dfb22e09c5c1dfe + SHA512: 06373050e6c1af9cb6a5863aef878b21c8a45fd0e68414e3d546cb73ec3028207d3acc0a9326428f172b9347a30bbe69a16f9dc0bdb739161d677adb2d888095 + +* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.zip) + + SIZE: 19911652 bytes + SHA1: ad9e0ec7c874701832c9e224eb5b9e2258f3a041 + SHA256: ec9792d0473a22954ad25cd0c531fc672679c1a5eaeefa08caf9e1288852796f + SHA512: 732d69cd55f1c273a02005306720fd8fc9d77398177db9509452be31820976b54b30319d9e6bc36fb6bcd7af656f807ef6c26d8955012c8b20424912a2f51bf8 + +## Release Comment + +Thanks to everyone who helped with this release. diff --git a/fa/news/_posts/2018-10-17-ruby-2-4-5-released.md b/fa/news/_posts/2018-10-17-ruby-2-4-5-released.md new file mode 100644 index 0000000000..8c3147bc57 --- /dev/null +++ b/fa/news/_posts/2018-10-17-ruby-2-4-5-released.md @@ -0,0 +1,57 @@ +--- +layout: news_post +title: "Ruby 2.4.5 Released" +author: "usa" +translator: +date: 2018-10-17 17:00:00 +0000 +lang: en +--- + +Ruby 2.4.5 has been released. + +This release includes about 40 bug fixes after the previous release, +and also includes several security fixes. +Please check the topics below for details. + +* [CVE-2018-16396: Tainted flags are not propagated in Array#pack and String#unpack with some directives](/en/news/2018/10/17/not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396/) +* [CVE-2018-16395: OpenSSL::X509::Name equality check does not work correctly](/en/news/2018/10/17/openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395/) + +See the [commit logs](https://github.com/ruby/ruby/compare/v2_4_4...v2_4_5) +for details. + +## Download + +* [https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.bz2) + + SIZE: 12667524 bytes + SHA1: 0e1f184556507c22bc59054496c0af7cf28fb188 + SHA256: 276c8e73e51e4ba6a0fe81fb92669734e741ccea86f01c45e99f2c7ef7bcd1e3 + SHA512: 7034fcaeaee41f14bc0ecce0d3d93bd1abe95310e1a0b95fac66eaba867adfb2bf7ba4d0d70d67a15ce8df16052dee405c38cdb18987602e64a2f701d37d3df0 + +* [https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.gz) + + SIZE: 14232887 bytes + SHA1: 4d650f302f1ec00256450b112bb023644b6ab6dd + SHA256: 6737741ae6ffa61174c8a3dcdd8ba92bc38827827ab1d7ea1ec78bc3cefc5198 + SHA512: 39863b404b02bb3d2430fd19fb057bdded5e816842a1a1f00092de69cc360db836225b2186e18b6ee099ec5e8c60f89178a4297b2d221234b4962c70594c2b8e + +* [https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.xz) + + SIZE: 10064712 bytes + SHA1: b5be590b37487248da3a85541a62fb81f7f7e29a + SHA256: 2f0cdcce9989f63ef7c2939bdb17b1ef244c4f384d85b8531d60e73d8cc31eeb + SHA512: 658f676c623109f4c7499615e191c98c3dd72cfcaeeaf121337d0b8a33c5243145edd50ec5e2775f988e3cd19788984f105fa165e3049779066566f67172c1b4 + +* [https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.zip](https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.zip) + + SIZE: 15694028 bytes + SHA1: 0bded7dfabfce5615162a1acd1341966a63e40f4 + SHA256: 33694b03ac178cf96aa728b74de7b0bc5d848fcfabc64a7c74ea093198142601 + SHA512: 9baec2b33604d5b2180b83bef9b39349d3f73b2eb5a7d44410572d893f76e6a0e1c39c572e6084a4e2466ca148ff2f377b5458144fe9b859a80cdf7b41fd5d72 + +## Release Comment + +Thanks to everyone who helped with this release. + +The maintenance of Ruby 2.4, including this release, is based on the +“Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2018-10-17-ruby-2-5-2-released.md b/fa/news/_posts/2018-10-17-ruby-2-5-2-released.md new file mode 100644 index 0000000000..9c00fe1d89 --- /dev/null +++ b/fa/news/_posts/2018-10-17-ruby-2-5-2-released.md @@ -0,0 +1,55 @@ +--- +layout: news_post +title: "Ruby 2.5.2 Released" +author: "nagachika" +translator: +date: 2018-10-17 14:00:00 +0000 +lang: en +--- + +Ruby 2.5.2 has been released. + +This release includes some bug fixes and some security fixes. + +* [CVE-2018-16396: Tainted flags are not propagated in Array#pack and String#unpack with some directives](/en/news/2018/10/17/not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396/) +* [CVE-2018-16395: OpenSSL::X509::Name equality check does not work correctly](/en/news/2018/10/17/openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395/) + +There are also some bug fixes. +See the [commit logs](https://github.com/ruby/ruby/compare/v2_5_1...v2_5_2) +for more details. + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.2.tar.bz2> + + SIZE: 13592827 bytes + SHA1: 562d6b8be5a0804ed7617bb0465b288d44b2defc + SHA256: ea3bcecc3b30cee271b4decde5e9ff3e17369d5fd1ed828d321c198307c9f0df + SHA512: 9f9388a162a3ae9c14ec8999fa3b12ff5397de14f55996cc8761d21c757113db37ace4d326b9606de7ad3a5875aa94fec900dd9b81b2fb0dff558c39422f4aa1 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.2.tar.gz> + + SIZE: 15600481 bytes + SHA1: 7e503e75621b69cedb1d8b3fa2bee5aef2f1a714 + SHA256: b32340e64a0c7ecbf31486c41fe429a55c7984d980eca7a78138367d9209f471 + SHA512: 9aee69d2ac6aefe2d81649055ba7b99e4e58cf203ac75083ba1b35b3a4fd7f72ee257e26ca80460da5c2a7817fd507aecec9c143f170e16980625e95eeb31686 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.2.tar.xz> + + SIZE: 11071052 bytes + SHA1: ea352c9bcaa47ab094cdec0f4946c62b1a1769d7 + SHA256: 8be6b6afdf09957a6e2c2a6ada4b1982a391a828b34e49072c4beb60febb678d + SHA512: b6b805b18ba6da7b28c7e2bdf3da7eaf1dcc15ae22744228d032e8ddec2fbba4cc4fb822b9ef7f6b561052113a4f28dc50ccfa4f00e3728a35ce27137f4a70e6 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.2.zip> + + SIZE: 18786735 bytes + SHA1: 98fdbae195bbbc3f131d49d9e60bf3fbb8b56111 + SHA256: f148947fee070f30826ef0bda77228b9c374b388050db81ad07f5cd8608e3624 + SHA512: 1b804337099ecfa045eecf1a4e3f35fa786bd6e835dc50267d6a3792a782b193ec9708564e3ac5169a95ef4afc2c131782af937dafd8122117e8cff577736c0f + +## Release Comment + +Many committers, developers, and users who provided bug reports helped +us to make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2018-10-18-ruby-2-5-3-released.md b/fa/news/_posts/2018-10-18-ruby-2-5-3-released.md new file mode 100644 index 0000000000..4ed5f3ca39 --- /dev/null +++ b/fa/news/_posts/2018-10-18-ruby-2-5-3-released.md @@ -0,0 +1,55 @@ +--- +layout: news_post +title: "Ruby 2.5.3 Released" +author: "nagachika" +translator: +date: 2018-10-18 12:30:00 +0000 +lang: en +--- + +Ruby 2.5.3 has been released. + +There were some missing files in the release packages of 2.5.2 which are +necessary for building. +See details in [[Bug #15232]](https://bugs.ruby-lang.org/issues/15232). + +This release is just for fixing the packaging issue. +It does not contain any additional bug fixes from 2.5.2. + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.bz2> + + SIZE: 14159874 bytes + SHA1: d47ede7dab79de25fcc274dfcad0f92f389a4313 + SHA256: 228a787ba68a7b20ac6e1d5af3d176d36e8ed600eb754d6325da341c3088ed76 + SHA512: 6fe89fe9d406bb454457442f908774577369ab2501da4fd15725ccbab77675b88faad739a6c8ad1c7b6690b439a27de5e08035b7546406cdeca65c7b295e2c77 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz> + + SIZE: 15972577 bytes + SHA1: f919a9fbcdb7abecd887157b49833663c5c15fda + SHA256: 9828d03852c37c20fa333a0264f2490f07338576734d910ee3fd538c9520846c + SHA512: d13dc55655076f7d983481155cccc06eb51c51c8eabfc3edcc22e1dabad931eb28c0b2a23d9589b5132faf18c3c0077f8719cf33a91d71bb72213d306edde1a0 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.xz> + + SIZE: 11453336 bytes + SHA1: 5acbdea1ced1e36684268e1cb6f8a4e7669bce77 + SHA256: 1cc9d0359a8ea35fc6111ec830d12e60168f3b9b305a3c2578357d360fcf306f + SHA512: 6dcae0e8d0bacdb2cbde636e2030596308b5af53f2eb85d3adccb67b02e6f8f9751e8117d12f8484829fdd9d995f6e327f701d9b433bcf94f1f59d13a1fd7518 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.zip> + + SIZE: 19170700 bytes + SHA1: c34a5a47d5ac64ef25368b5dffc3df2854531d7a + SHA256: 622ffa051470e967f3e51cc6347783e93d9b09a4557d4f5a78efb87b959f87a3 + SHA512: 7807641e65516670dc10426364a3d45ecfb65555827e551b4a595bad373e1292797414abf0f67bed5d66815090afe6a6a3e3e29f8b7dbc4da462c43a3e8791b6 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped +us to make this release. +Thanks for their contributions. + +Especially thank you wanabe for reporting the issue about the 2.5.2 packages. diff --git a/fa/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md b/fa/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md new file mode 100644 index 0000000000..8c1fdca43f --- /dev/null +++ b/fa/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md @@ -0,0 +1,130 @@ +--- +layout: news_post +title: "Ruby 2.6.0-preview3 Released" +author: "naruse" +translator: +date: 2018-11-06 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.6.0-preview3. + +Ruby 2.6.0-preview3 is the third preview toward Ruby 2.6.0. +This preview3 is released to test new features before coming Release Candidate. + +## JIT + +Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler. + +JIT compiler aims to improve performance of any Ruby program execution. +Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which prints C code to a disk and spawns common C compiler process to generate native code. +See also: [MJIT organization by Vladimir Makarov](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). + +How to use: Just specify `--jit` in command line or `$RUBYOPT` environment variable. +Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. + +The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. +JIT compiler is supported when Ruby is built by GCC, Clang, or Microsoft VC++, which needs to be available on runtime. Otherwise you can't use it for now. + +As of Ruby 2.6.0 preview3, we achieved 1.7x faster performance than Ruby 2.5 on CPU-intensive non-trivial benchmark workload called Optcarrot <https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208>. We're going to improve the performance on memory-intensive workload like Rails application as well. + +Stay tuned for the new age of Ruby's performance. + +## RubyVM::AST [Experimental] + +Ruby 2.6 introduces `RubyVM::AST` module. + +This module has `parse` method which parses a given ruby code of string and returns AST (Abstract Syntax Tree) nodes, and `parse_file` method which parses a given ruby code file and returns AST nodes. +`RubyVM::AST::Node` class is also introduced. You can get location information and children nodes from `Node` objects. This feature is experimental. Compatibility of the structure of AST nodes are not guaranteed. + +## New Features + +* Add a new alias `then` to `Kernel#yield_self`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) + +* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL] + +* constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) + +* endless range [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) + + An endless range, `(1..)`, is introduced. It works as it has no end. This shows typical use cases: + + ary[1..] # identical to ary[1..-1] without magical -1 + (1..).each {|index| ... } # inifinite loop from index 1 + ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { ... } + +* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) + + This method returns the source location of binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). So, users should use this newly-introduced method instead of `Kernel#eval`. + +* Add `:exception` option to let `Kernel.#system` raise error instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) + +## Performance improvements + +* Speedup `Proc#call` because we don't need to care about `$SAFE` any more. + [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) + + With `lc_fizzbuzz` benchmark which uses `Proc#call` so many times we can measure + x1.4 improvements [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212). + +* Speedup `block.call` where `block` is passed block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) + + Ruby 2.5 improves block passing performance. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) + Additionally, Ruby 2.6 improves the performance of passed block calling. + With micro-benchmark we can observe x2.6 improvement. + +* Transient Heap (theap) is introduced. [Bug #14858] [Feature #14989] + theap is managed heap for short-living memory objects which are pointed by + specific classes (Array, Hash, Object, and Struct). For example, making small + and short-living Hash object is x2 faster. With rdoc benchmark, we observed + 6-7% performance improvement. + +## Other notable changes since 2.5 + +* `$SAFE` is a process global state and we can set `0` again. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) + +* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) + +* Merge RubyGems 3.0.0.beta2. `--ri` and `--rdoc` options was removed. Please use `--document` and `--no-document` options instead of them. + +* Merge [Bundler](https://github.com/bundler/bundler) as Default gems. + +See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_preview3/NEWS) +or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview3) +for details. + +With those changes, +[6474 files changed, 171888 insertions(+), 46617 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview3) +since Ruby 2.5.0! + +Enjoy programming with Ruby 2.6.0-preview3! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.tar.gz> + + SIZE: 17071670 bytes + SHA1: 67836fda11fa91e0b988a6cc07989fbceda025b4 + SHA256: 60243e3bd9661e37675009ab66ba63beacf5dec748885b9b93916909f965f27a + SHA512: 877278cd6e9b947f5bb6ed78136efb232dcc9c5c218b7236576171e7c3cd7f6b7d10d07d8402014a14aba1fcd1913a4370f0725c561ead41d8a3fe92029f7f76 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.zip> + + SIZE: 21537655 bytes + SHA1: 45f3c90dfffe03b746f21f24152666e361cbb41a + SHA256: 9152af9e700349dcfa2eec196dd91587d42d70a6837fa2c415ebba1167587be1 + SHA512: 335de36cf56706326f4acc4bbd35be01e0ac5fff30d0a69b2e1630ba4c78f0e711822d1623d0099a517c824b154917d2f60be192dfb143a422cf1d17b38e1183 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.tar.bz2> + + SIZE: 14973451 bytes + SHA1: 5f2df5d8c5a3888ccb915d36a3532ba32cda8791 + SHA256: 1f09a2ac1ab26721923cbf4b9302a66d36bb302dc45e72112b41d6fccc5b5931 + SHA512: d1693625723796e8902f3e4c4fae444f2912af9173489f7cf18c99db2a217afc971b082fce7089e39f8edd54d762d2b4e72843c8306ed29b05ccb15ac03dbb5b + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.tar.xz> + + SIZE: 12291692 bytes + SHA1: 7f8216247745215e9645568e7a02140f9a029b31 + SHA256: 9856d9e0e32df9e5cdf01928eec363d037f1a76dab2abbf828170647beaf64fe + SHA512: b4d3b17ecf96272c43cd7518c0b54dee63fc1150ad143e1d9c9d708506fe78676c80eb96cc47b8d46d1128bd483a53f16c944963a03d1f99f00131b74714df7b diff --git a/fa/news/_posts/2018-11-08-snap.md b/fa/news/_posts/2018-11-08-snap.md new file mode 100644 index 0000000000..9dd8b48fbb --- /dev/null +++ b/fa/news/_posts/2018-11-08-snap.md @@ -0,0 +1,63 @@ +--- +layout: news_post +title: The official Ruby snap is available +author: Hiroshi SHIBATA +translator: +date: 2018-11-08 14:58:28 +0000 +lang: en +--- + +We released the official snap package of the Ruby language. + +<https://snapcraft.io/ruby> + +Snap is a package system developed by Canonical. It allows you to distribute +a software with its dependencies for many different Linux systems. +This solves the problem that a user cannot install the latest Ruby release +from the default repository of their system like in `rpm` or `apt`. + +On Ubuntu 16.04 or later, you can install the Ruby snap with the +following command: + +``` +sudo snap install ruby --classic +``` + +(If you use other Linux distributions, please refer to +<https://docs.snapcraft.io/installing-snapd/6735>.) + +Our snap uses the "channel" feature to release multiple Ruby series +concurrently. For example, without specifying a channel, currently +Ruby 2.5.3 will be installed. But if you want to use Ruby 2.4, +specify the 2.4 channel as follows: + +``` +sudo snap install ruby --classic --channel=2.4/stable +``` + +You can also use multiple channels. The following commands switch to Ruby 2.3: + +``` +sudo snap switch ruby --channel=2.3/stable +sudo snap refresh +``` + +Our snap sets the `GEM_HOME` and `GEM_PATH` environment variables +to `$HOME/.gem`. +So if you want to execute commands installed by gems, such as `rails` and +`rspec`, without using `bundle exec`, you have to add the following line +to your shell rc files (like `.bashrc`): + +``` +eval `ruby.env` +``` + +Since `$HOME/.gem` is shared by multiple versions, if you switch versions +and use them, you will need to recompile C extensions using the +`gem pristine --extensions` command. + +The initial version of the official Ruby snap has been released during +the Snapcraft summit held at the Canonical office in London on Nov 6-8th, 2018. +Any feedback is welcome at <https://github.com/ruby/snap.ruby>. + +Enjoy! diff --git a/fa/news/_posts/2018-11-29-fukuoka-ruby-award-2019.md b/fa/news/_posts/2018-11-29-fukuoka-ruby-award-2019.md new file mode 100644 index 0000000000..5ebf6179e6 --- /dev/null +++ b/fa/news/_posts/2018-11-29-fukuoka-ruby-award-2019.md @@ -0,0 +1,63 @@ +--- +layout: news_post +title: "2019 Fukuoka Ruby Award Competition - Entries to be judged by Matz" +author: "Fukuoka Ruby" +translator: +date: 2018-11-29 00:00:00 +0000 +lang: en +--- + +Dear Ruby Enthusiasts, + +The Government of Fukuoka, Japan together with "Matz" Matsumoto would like to invite you to enter the following Ruby competition. If you have developed an interesting Ruby program, please be encouraged to apply. + +2019 Fukuoka Ruby Award Competition - Grand Prize - 1 Million Yen! + +Entry Deadline: January 31, 2019 + + + +Matz and a group of panelists will select the winners of the Fukuoka Competition. The grand prize for the Fukuoka Competition is 1 million yen. Past grand prize winners include Rhomobile (USA) and APEC Climate Center (Korea). + +[http://myfukuoka.com/category/news/ruby-news/](http://myfukuoka.com/category/news/ruby-news/) + +Programs entered in the competition do not have to be written entirely in Ruby but should take advantage of the unique characteristics of Ruby. + +Projects must have been developed or completed within the past 12 months to be eligible. Please visit the following Fukuoka website for additional details or to enter: + +[http://www.digitalfukuoka.jp/events/185](http://www.digitalfukuoka.jp/events/185) +or +[http://myfukuoka.com/events/2019-fukuoka-ruby-award-guidelines-for-applicants/](http://myfukuoka.com/events/2019-fukuoka-ruby-award-guidelines-for-applicants/) + +[http://www.digitalfukuoka.jp/uploads/event_detail/file/465/RubyAward_ApplicationForm_2019.doc](http://www.digitalfukuoka.jp/uploads/event_detail/file/465/RubyAward_ApplicationForm_2019.doc) + +Please email the application form to award@f-ruby.com + +This year, there are the following special prizes: + +The winner of the AWS Prize will receive: + +* Amazon Echo (subject to change) +* AWS architect technical consultation + +The winner of the GMO Pepabo Prize will receive: + +* Lolipop! shared hosting service: 10-year free subscription of the Standard Plan, or JPY 100,000 coupon for the metered plan of the Managed Cloud +* Muumuu Domain DNS registration service: 10-year free subscription of one domain (for a domain that costs JPY 10,000 or less per year) + +The winner of the IIJ GIO Prize will receive: + +* IIJ GIO free coupon worth 500,000 yen (Up to 6 months) + +The winner of the Money Forward Prize will receive: + +* dinner with Money Forward's Ruby committers. +* a 10 years free ticket for the premium services of our personal financial management service "Money Forward". + +The winner of the Salesforce Prize will receive: + +* salesforce.com novelty goods + +"Matz will be testing and reviewing your source code thoroughly, so it's very meaningful to apply! The competition is free to enter." + +Thanks! diff --git a/fa/news/_posts/2018-12-06-ruby-2-6-0-rc1-released.md b/fa/news/_posts/2018-12-06-ruby-2-6-0-rc1-released.md new file mode 100644 index 0000000000..58f415f403 --- /dev/null +++ b/fa/news/_posts/2018-12-06-ruby-2-6-0-rc1-released.md @@ -0,0 +1,140 @@ +--- +layout: news_post +title: "Ruby 2.6.0-rc1 Released" +author: "naruse" +translator: +date: 2018-12-06 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.6.0-rc1. + +Ruby 2.6.0-rc1 is the first release candidate of Ruby 2.6.0. +It introduces some new features and performance improvements, for example: + +## JIT + +Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler. + +JIT compiler aims to improve performance of any Ruby program execution. +Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which prints C code to a disk and spawns common C compiler process to generate native code. +See also: [MJIT organization by Vladimir Makarov](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). + +How to use: Just specify `--jit` in command line or `$RUBYOPT` environment variable. +Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. + +The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. +JIT compiler is supported when Ruby is built by GCC, Clang, or Microsoft VC++, which needs to be available on runtime. Otherwise you can't use it for now. + +As of Ruby 2.6.0-rc1, we achieved 1.7x faster performance than Ruby 2.5 on CPU-intensive non-trivial benchmark workload called Optcarrot <https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208>. We're going to improve the performance on memory-intensive workload like Rails application as well. + +Stay tuned for the new age of Ruby's performance. + +## RubyVM::AbstractSyntaxTree [Experimental] + +Ruby 2.6 introduces `RubyVM::AbstractSyntaxTree` module. + +This module has `parse` method which parses a given ruby code of string and returns AST (Abstract Syntax Tree) nodes, and `parse_file` method which parses a given ruby code file and returns AST nodes. +`RubyVM::AbstractSyntaxTree::Node` class is also introduced. You can get location information and children nodes from `Node` objects. This feature is experimental. Compatibility of the structure of AST nodes are not guaranteed. + +## New Features + +* Add a new alias `then` to `Kernel#yield_self`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) + +* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL] + +* constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) + +* endless range [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) + + An endless range, `(1..)`, is introduced. It works as it has no end. This shows typical use cases: + + ary[1..] # identical to ary[1..-1] without magical -1 + (1..).each {|index| ... } # inifinite loop from index 1 + ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { ... } + +* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) + + This method returns the source location of binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). So, users should use this newly-introduced method instead of `Kernel#eval`. + +* Add `:exception` option to let `Kernel#system` raise error instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) + +* add the oneshot mode [[Feature#15022]](https://bugs.ruby-lang.org/issues/15022) + * This mode checks "whether each line was executed at least once or not", instead of "how many times each line was executed". A hook for each line is fired at most once, and after it is fired the hook flag is removed, i.e., it runs with zero overhead. + * Add `:oneshot_lines` keyword argument to Coverage.start. + * Add `:stop` and `:clear` keyword arguments to Coverage.result. If `clear` is true, it clears the counters to zero. If `stop` is true, it disables coverage measurement. + * Coverage.line_stub, which is a simple helper function that creates the "stub" of line coverage from a given source code. + +* `FileUtils#cp_lr`. [[Feature #4189]](https://bugs.ruby-lang.org/issues/4189) + +## Performance improvements + +* Speedup `Proc#call` because we don't need to care about `$SAFE` any more. + [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) + + With `lc_fizzbuzz` benchmark which uses `Proc#call` so many times we can measure + x1.4 improvements [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212). + +* Speedup `block.call` where `block` is passed block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) + + Ruby 2.5 improves block passing performance. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) + Additionally, Ruby 2.6 improves the performance of passed block calling. + With micro-benchmark we can observe x2.6 improvement. + +* Transient Heap (theap) is introduced. [[Bug #14858]](https://bugs.ruby-lang.org/issues/14858) [[Feature #14989]](https://bugs.ruby-lang.org/issues/14989) + theap is managed heap for short-living memory objects which are pointed by + specific classes (Array, Hash, Object, and Struct). For example, making small + and short-living Hash object is x2 faster. With rdoc benchmark, we observed + 6-7% performance improvement. + +## Other notable changes since 2.5 + +* `$SAFE` is a process global state and we can set `0` again. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) + +* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) + +* Supported Unicode version is updated to 11. It is planed to update 12 and 12.1 in future TEENY releases of Ruby 2.6. + +* Merge RubyGems 3.0.0.beta3. `--ri` and `--rdoc` options was removed. Please use `--document` and `--no-document` options instead of them. + +* Merge [Bundler](https://github.com/bundler/bundler) as Default gems. + +See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_rc1/NEWS) +or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc1) +for details. + +With those changes, +[6376 files changed, 227364 insertions(+), 51599 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc1) +since Ruby 2.5.0! + +Enjoy programming with Ruby 2.6.0-rc1! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc1.tar.gz> + + SIZE: 16823448 bytes + SHA1: 889db7731fd43f6dbf7f31ffdb0a29bba1a8d356 + SHA256: 6d6183639ed9c02320d7132e97c65489a39e24d8b55fc4ed35ac53d1189cb61d + SHA512: ad101adee5c43f3645561e73970f15d4e9141f707da69a92e224575c665949e18ca53389e5315fca2ea3934d77967a59e304353cde4a915537e7c4e4ee20be73 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc1.zip> + + SIZE: 20737499 bytes + SHA1: 457e39aee1978da5e42af42a6ad230421544aa07 + SHA256: 2bcdf468de499e4d6983d60d63dcc883f4c54fdc05a08a54eb93d315477bc4cc + SHA512: 0842fae8a199f6c1e76f5d775edbf468e18a54f0419324eb73595e0268c728c71733371d71dc2fa342105dbc487987ca5556948a9ef067276a7b5f552462802a + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc1.tar.bz2> + + SIZE: 14607078 bytes + SHA1: 269fe9d414d7731e4a63959fadffe5c50c08ce0e + SHA256: b4e9c0e8801946e9f0baba30948955f4341e9e04f363c206b7bd774208053eb5 + SHA512: cbd6281b2aab6fbce3f699c1ab57e5423304dca7a547a0b3cd4e8e980326dc7b85b2ca2bfaf3f3a648d40f4222fdf1740d81d422790ee7ae1ba1ed33eb11e3e8 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc1.tar.xz> + + SIZE: 11851908 bytes + SHA1: 3b93fdf1c5bd969ab4fe0a8176a6cf64e4597e6e + SHA256: 21d9d54c20e45ccacecf8bea4dfccd05edc52479c776381ae98ef6a7b4afa739 + SHA512: 3d93d8d80e4900e8b3a27f904ed60581cebc6c55f4ab7acafc81e95001f92f3ea4ddec2da6169b1ed5e0146f7b7c35c1c13b3243955d5825c72170834fe933f3 diff --git a/fa/news/_posts/2018-12-15-ruby-2-6-0-rc2-released.md b/fa/news/_posts/2018-12-15-ruby-2-6-0-rc2-released.md new file mode 100644 index 0000000000..7e33e1a0ac --- /dev/null +++ b/fa/news/_posts/2018-12-15-ruby-2-6-0-rc2-released.md @@ -0,0 +1,144 @@ +--- +layout: news_post +title: "Ruby 2.6.0-rc2 Released" +author: "naruse" +translator: +date: 2018-12-15 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.6.0-rc2. + +Ruby 2.6.0-rc2 is the second release candidate of Ruby 2.6.0. +RC2 is released to test bundled Bundler 1.17 instead of 2.0. +It introduces some new features and performance improvements, for example: + +## JIT + +Ruby 2.6 introduces an initial implementation of a JIT (Just-in-time) compiler. + +The JIT compiler aims to improve performance of any Ruby program execution. +Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which writes C code to a disk and spawns a common C compiler process to generate native code. +See also: [MJIT organization (by Vladimir Makarov)](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). + +How to use: Just specify `--jit` in the command line or `$RUBYOPT` environment variable. +Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. + +The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. +The JIT compiler is supported when Ruby is built by GCC, Clang, or Microsoft VC++, which needs to be available at runtime. Otherwise you can't use it for now. + +As of Ruby 2.6.0-rc2, we achieved 1.7x faster performance than Ruby 2.5 on a CPU-intensive non-trivial benchmark workload called Optcarrot <https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208>. We're going to improve the performance on memory-intensive workloads like Rails applications as well. + +Stay tuned for the new age of Ruby's performance. + +## RubyVM::AbstractSyntaxTree [Experimental] + +Ruby 2.6 introduces the `RubyVM::AbstractSyntaxTree` module. + +This module has a `parse` method which parses Ruby code from a given string and returns AST (Abstract Syntax Tree) nodes, and a `parse_file` method which parses Ruby code from a given file and returns AST nodes. +The `RubyVM::AbstractSyntaxTree::Node` class is also introduced. You can get location information and children nodes from `Node` objects. This feature is experimental. Compatibility of the structure of AST nodes is not guaranteed. + +## New Features + +* Add a new alias `then` to `Kernel#yield_self`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) + +* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL][[Feature #14606]](https://bugs.ruby-lang.org/issues/14606) + +* Constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) + +* Introduce endless ranges. [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) + + An endless range, `(1..)`, is introduced. It works as if it has no end. This shows typical use cases: + + ary[1..] # identical to ary[1..-1] without magical -1 + (1..).each {|index| block } # inifinite loop from index 1 + ary.zip(1..) {|elem, index| block } # ary.each.with_index(1) { } + +* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) + + This method returns the source location of the binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). So, users should use this newly-introduced method instead of `Kernel#eval`. + +* Add `:exception` option to let `Kernel#system` raise an exception on failure instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) + +* Add a oneshot mode to `Coverage`. [[Feature#15022]](https://bugs.ruby-lang.org/issues/15022) + + * This mode checks "whether each line was executed at least once or not", instead of "how many times each line was executed". A hook for each line is fired at most once, and after it is fired the hook flag is removed, i.e., it runs with zero overhead. + * Add `:oneshot_lines` keyword argument to Coverage.start. + * Add `:stop` and `:clear` keyword arguments to Coverage.result. If `clear` is true, it clears the counters to zero. If `stop` is true, it disables coverage measurement. + * Coverage.line_stub, which is a simple helper function that creates the "stub" of line coverage from a given source code. + +* Add `FileUtils#cp_lr`. [[Feature #4189]](https://bugs.ruby-lang.org/issues/4189) + +## Performance improvements + +* Speedup `Proc#call` because we don't need to care about `$SAFE` any more. + [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) + + With `lc_fizzbuzz` benchmark which uses `Proc#call` many times we can measure + x1.4 improvements. [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212). + +* Speedup `block.call` where `block` is passed block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) + + Ruby 2.5 improves block passing performance. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) + + Additionally, Ruby 2.6 improves the performance of passed block calling. + With micro-benchmark we can observe x2.6 improvement. + +* Transient Heap (theap) is introduced. [[Bug #14858]](https://bugs.ruby-lang.org/issues/14858) [[Feature #14989]](https://bugs.ruby-lang.org/issues/14989) + + theap is a managed heap for short-living memory objects which are pointed to by + specific classes (Array, Hash, Object, and Struct). For example, making a small + and short-living Hash object is x2 faster. With rdoc benchmark, we observed + 6-7% performance improvement. + +## Other notable changes since 2.5 + +* `$SAFE` now is a process global state and can be set to `0` again. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) + +* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) + +* Supported Unicode version is updated to 11. It is planed to update to 12 and 12.1 in future TEENY releases of Ruby 2.6. + +* Merge RubyGems 3.0.0.beta3. `--ri` and `--rdoc` options were removed. Please use `--document` and `--no-document` options instead. + +* Merge [Bundler](https://github.com/bundler/bundler) as default gem. + +See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_rc2/NEWS) +or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc2) +for details. + +With those changes, +[6411 files changed, 228864 insertions(+), 97600 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc2) +since Ruby 2.5.0! + +Enjoy programming with Ruby 2.6.0-rc2! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.gz> + + SIZE: 16723556 bytes + SHA1: a4d7f8c8c3584a60fe1a57d03d80162361fe3c78 + SHA256: 9c0245e96379246040f1fd0978f8e447e7f47cdccbdaffdb83302a995276b62b + SHA512: 789f608f93db6e12835911f3105d9abe2fabb67cd22dc3bafdff38716ac56974925738e7f7788ebef5bdf67b6fd91f84a4ee78a3e5d072cfc8ee0972de737b08 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.zip> + + SIZE: 20643747 bytes + SHA1: c1a2898949d929dd952880f1c1c2bac2ef2609b4 + SHA256: e8a446cf1f2ffc14483604de0a5e12c2578dd2f672ae87798ca2bbb9b7b73899 + SHA512: 2d06feae13f485f5da59574672b14d03881ed532d652648f94e2435f5d81df623b5ef532b8ba8e0b9bc4ee6baf7c0328a5610eab753a9020a0fea2673254c76c + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.bz2> + + SIZE: 14581998 bytes + SHA1: 94bbee97de4955e67effb7f512c58300617a3a09 + SHA256: b3d03e471e3136f43bb948013d4f4974abb63d478e8ff7ec2741b22750a3ec50 + SHA512: 9bfbe83fd3699b71bae2350801d8c967eb128e79b62a9d36fc0f011b83c53cab28a280939f4cc9f0a28f9bf02dce8eea30866ca4d06480dc44289400abf580ba + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.xz> + + SIZE: 11908088 bytes + SHA1: 13a7f06d832dc28989e3e4321490a6ba528ed023 + SHA256: d620b3d87b3190867304067f3ce77f5305f7ec1b2e73b09c17710c97c028986d + SHA512: a3dc43c0bc70dfdb9ff0d18b5b9797bbf332524f5d3bbb7940cf4e32286ca715808acfd11ebf3cdbe358a2466b7c6b5be3a7a784af7eb95c071fe1f8b4ab1261 diff --git a/fa/news/_posts/2018-12-25-ruby-2-6-0-released.md b/fa/news/_posts/2018-12-25-ruby-2-6-0-released.md new file mode 100644 index 0000000000..3edae6e84b --- /dev/null +++ b/fa/news/_posts/2018-12-25-ruby-2-6-0-released.md @@ -0,0 +1,150 @@ +--- +layout: news_post +title: "Ruby 2.6.0 Released" +author: "naruse" +translator: +date: 2018-12-25 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.6.0. + +It introduces a number of new features and performance improvements, most notably: + + * A new JIT compiler. + * The `RubyVM::AbstractSyntaxTree` module. + +## JIT [Experimental] + +Ruby 2.6 introduces an initial implementation of a JIT (Just-In-Time) compiler. + +The JIT compiler aims to improve the performance of Ruby programs. Unlike traditional JIT compilers which operate in-process, Ruby's JIT compiler writes out C code to disk and spawns a common C compiler to generate native code. For more details about it, see the [MJIT organization by Vladimir Makarov](https://bugs.ruby-lang.org/projects/ruby/wiki/MJIT#MJIT-organization). + +In order to enable the JIT compiler, specify `--jit` on the command line or in the `$RUBYOPT` environment variable. Specifying `--jit-verbose=1` will cause the JIT compiler to print additional information. Read the output of `ruby --help` or the [documentation](https://bugs.ruby-lang.org/projects/ruby/wiki/MJIT#Basic-usage) for other options. + +The JIT compiler is supported when Ruby is built by GCC, Clang, or Microsoft VC++, which needs to be available at runtime. + +As of Ruby 2.6.0, we have achieved [1.7x faster performance](https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208) compared to Ruby 2.5 on a CPU-intensive, non-trivial benchmark called [Optcarrot](https://github.com/mame/optcarrot). However, it is still experimental and many other memory-intensive workloads like Rails applications might not benefit from it at the moment. For more details, see [Ruby 2.6 JIT - Progress and Future](https://medium.com/@k0kubun/ruby-2-6-jit-progress-and-future-84e0a830ecbf). + +Stay tuned for the new age of Ruby's performance. + +## `RubyVM::AbstractSyntaxTree` [Experimental] + +Ruby 2.6 introduces the `RubyVM::AbstractSyntaxTree` module. **Future compatibility of this module is not guaranteed**. + +This module has a `parse` method, which parses the given string as Ruby code and returns the AST (Abstract Syntax Tree) nodes of the code. The `parse_file` method opens and parses the given file as Ruby code and returns AST nodes. + +The `RubyVM::AbstractSyntaxTree::Node` class is also introduced. You can get source location and children nodes from `Node` objects. This feature is experimental. + +## Other Notable New Features + +* Add an alias of `Kernel#yield_self` named `#then`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) + +* Constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) + +* Introduce endless ranges. [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) + + An endless range, `(1..)`, works as if it has no end. Here are some typical use cases: + + ary[1..] # identical to ary[1..-1] without magical -1 + (1..).each {|index| ... } # enumerates values starting from index 1 + ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { ... } + +* Add `Enumerable#chain` and `Enumerator#+`. [[Feature #15144]](https://bugs.ruby-lang.org/issues/15144) + +* Add function composition operators `<<` and `>>` to `Proc` and `Method`. [[Feature #6284]](https://bugs.ruby-lang.org/issues/6284) + + f = proc{|x| x + 2} + g = proc{|x| x * 3} + (f << g).call(3) # -> 11; identical to f(g(3)) + (f >> g).call(3) # -> 15; identical to g(f(3)) + +* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) + + This method returns the source location of the binding, a 2-element array of `__FILE__` and `__LINE__`. Technically speaking, this is identical to `eval("[__FILE__, __LINE__]", binding)`. However, we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). As such, it is recommended to use `Binding#source_location` instead of `Kernel#eval`. + +* Add an `exception:` option to `Kernel#system` which causes it to raise an exception on failure instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) + +* Add a oneshot mode to `Coverage`. [[Feature#15022]](https://bugs.ruby-lang.org/issues/15022) + + * This mode checks "whether each line was executed at least once or not", instead of "how many times each line was executed". A hook for each line is fired only once, and once it is fired the hook flag will be removed, i.e., it runs with zero overhead. + * Add `oneshot_lines:` keyword argument to `Coverage.start`. + * Add `stop:` and `clear:` keyword arguments to `Coverage.result`. If `clear` is true, it clears the counters to zero. If `stop` is true, it disables coverage measurement. + * `Coverage.line_stub` is a simple helper function that creates the "stub" of line coverage from a given source code. + +* Add `FileUtils#cp_lr`. It works just like `cp_r` but links instead of copies. [[Feature #4189]](https://bugs.ruby-lang.org/issues/4189) + +## Performance improvements + +* Speed up `Proc#call` by removing the temporary allocation for `$SAFE`. + [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) + + We have observed a 1.4x peformance improvement in the `lc_fizzbuzz` benchmark that calls `Proc#call` numerous times. [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212) + +* Speed up `block.call` when `block` is passed in as a block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) + + Combined with improvements around block handling introduced in Ruby 2.5, block evaluation now performs 2.6x faster in a micro-benchmark in Ruby 2.6. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) + +* Transient Heap (`theap`) is introduced. [[Bug #14858]](https://bugs.ruby-lang.org/issues/14858) [[Feature #14989]](https://bugs.ruby-lang.org/issues/14989) + + `theap` is a managed heap for short-living memory objects which are pointed to by specific classes (`Array`, `Hash`, `Object`, and `Struct`). Making small and short-living Hash objects is 2x faster. With rdoc benchmark, we observed 6-7% performance improvement. + +* Native implementations (`arm32`, `arm64`, `ppc64le`, `win32`, `win64`, `x86`, `amd64`) of coroutines to improve context switching performance of Fiber significantly. [[Feature #14739]](https://bugs.ruby-lang.org/issues/14739) + + `Fiber.yield` and `Fiber#resume` is about 5x faster on 64-bit Linux. Fiber intensive programs can expect up to 5% improvement overall. + +## Other notable changes since 2.5 + +* `$SAFE` is now a process global state and it can be set back to `0`. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) + +* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments have been changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) + +* Unicode support is updated to version 11. We have plans to add support for Unicode version 12 and 12.1 in a future TEENY release of Ruby 2.6. This will include support for the [new Japanese era](http://blog.unicode.org/2018/09/new-japanese-era.html). + +* Merge RubyGems 3.0.1. The `--ri` and `--rdoc` options have been removed. Please use the `--document` and `--no-document` options instead. + +* [Bundler](https://github.com/bundler/bundler) is now installed as a default gem. + +* In exception handling blocks, `else` without `rescue` now causes a syntax error. [EXPERIMENTAL][[Feature #14606]](https://bugs.ruby-lang.org/issues/14606) + +See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0/NEWS) or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0) for more details. + +With those changes, [6437 files changed, 231471 insertions(+), 98498 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0) since Ruby 2.5.0! + +Merry Christmas, Happy Holidays, and enjoy programming with Ruby 2.6! + +## Known Problem + +_(This section was added at January 28, 2019.)_ + +* [Net::Protocol::BufferedIO#write raises NoMethodError when sending large multi-byte string](https://github.com/ruby/ruby/pull/2058) + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.tar.gz> + + SIZE: 16687800 bytes + SHA1: c95f4e86e21390270dad3ebb94491fd42ee2ce69 + SHA256: f3c35b924a11c88ff111f0956ded3cdc12c90c04b72b266ac61076d3697fc072 + SHA512: 01f886b0c0782a06315c4a46414e9f2b66ee634ba4349c8e0697f511793ae3c56d2ad3cad6563f2b0fdcedf0ff3eba51b9afab907e7e1ac243475772f8688382 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.zip> + + SIZE: 20582054 bytes + SHA1: a804e63d18da12107e1d101918a3d8f4c5462a27 + SHA256: 8a4fb6ca58202495c9682cb88effd804398bd0ef023e3e36f001ca88d8b5855a + SHA512: 16d66ec4a2c6a2e928d5b50e094a5efa481ac6e4d5ed77459d351ef19fe692aa59b68307e3e25229eec5f30ae2f9adae2663bafe9c9d44bfb45d3833d77839d4 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.tar.bz2> + + SIZE: 14585856 bytes + SHA1: b8638eb806efbf7b6af87b24ccc6ad915f262318 + SHA256: c89ca663ad9a6238f4b1ec4d04c7dff630560c6e6eca6d30857c4d394f01a599 + SHA512: ca3daf9acf11d3db2900af21b66231bd1f025427a9d2212b35f6137ca03f77f57171ddfdb99022c8c8bcd730ff92a7a4af54e8a2a770a67d8e16c5807aa391f1 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.tar.xz> + + SIZE: 11918536 bytes + SHA1: 9ddaeba3505d2855460c8c653159fc0ac8928c0f + SHA256: acb00f04374899ba8ee74bbbcb9b35c5c6b1fd229f1876554ee76f0f1710ff5f + SHA512: c56eaf85ef7b79deb34ee4590b143c07f4fc83eb79775290761aee5a7c63374659613538a41f25706ed6e19e49d5c67a1014c24d17f29948294c7abd0b0fcea8 diff --git a/fa/news/_posts/2019-01-30-ruby-2-6-1-released.md b/fa/news/_posts/2019-01-30-ruby-2-6-1-released.md new file mode 100644 index 0000000000..83ab7b4383 --- /dev/null +++ b/fa/news/_posts/2019-01-30-ruby-2-6-1-released.md @@ -0,0 +1,51 @@ +--- +layout: news_post +title: "روبی ۲٫۶٫۱ منتشر شد" +author: "naruse" +translator: +date: 2019-01-30 00:00:00 +0000 +lang: fa +--- + +روبی ۲٫۶٫۱ منتشر شد. + +## تغییرات + +* [نوشتن noMethodError هنگام ارسال یک رشته چند بایتی بزرگ افزایش یافت](https://bugs.ruby-lang.org/issues/15468)، این مشکل حل شده است. + +This release includes additional bug fixes. See the [commit logs](https://github.com/ruby/ruby/compare/v2_6_0...v2_6_1) for more details. + +## دانلود + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.gz> + + SIZE: 16742207 bytes + SHA1: 416842bb5b4ca655610df1f0389b6e21d25154f8 + SHA256: 17024fb7bb203d9cf7a5a42c78ff6ce77140f9d083676044a7db67f1e5191cb8 + SHA512: 89e016e60f107fa40da251bc9659584ee3191caee726b5c6818ecbe109f825c553041a5dfda7e6d2889fcf587e63fb5d9fbe6cbdbdc4572e1123c302f0f1b881 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.zip> + + SIZE: 20595342 bytes + SHA1: 6fd14990dc411eb58852324d45b29f84d580644d + SHA256: ed1537f49d333a809900c1f49ad16c4c06224ebbf5c744cb7b9104ab2a385366 + SHA512: 8a092486ecefac5bd734897562257a576112e59d90026d0b2ada10aa0b7e0fa86ed1cd803c6254eaa21b19ba36502d9ac268eae6f5714a6eca01904117ab0da6 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.bz2> + + SIZE: 14561930 bytes + SHA1: d4c92d9b0057473238df2fd4792454b43976fda3 + SHA256: 82c9402920eac9ce777beb3f34eeadc2a3f3ce80f25004bbf54b5ed1280ba099 + SHA512: fc41429491935b89532733b95476ab9f8a4efc310aad8f4c2bd3b68fba08fd7b6e9ac84c6c88ca892022d1ba76435295f3299ea466f9b5453c07d41cb539af59 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.xz> + + SIZE: 11872964 bytes + SHA1: ba5f4338bb642e3836dd80b73a9df0d1b6e079ae + SHA256: 47b629808e9fd44ce1f760cdf3ed14875fc9b19d4f334e82e2cf25cb2898f2f2 + SHA512: fb36289a955f0596c683cdadf1e4a9a9fd35222b1e1c6160c2e7cd82e5befd40a7aa4361e55f7a8f83c06ee899ec493821c7db34a60c4ac3bca0e874d33ef1a9 + +## نظر نسخه + +از کلیه متقاضیان، برنامهنویسان و کاربران که گزارشهای اشکالات را ارسال کردند، و ما را در انتشار این نسخه کمک کردند. +از مشارکت شما بسیار متشکریم. diff --git a/fa/news/_posts/2019-03-05-multiple-vulnerabilities-in-rubygems.md b/fa/news/_posts/2019-03-05-multiple-vulnerabilities-in-rubygems.md new file mode 100644 index 0000000000..4a9a4ab92d --- /dev/null +++ b/fa/news/_posts/2019-03-05-multiple-vulnerabilities-in-rubygems.md @@ -0,0 +1,57 @@ +--- +layout: news_post +title: "آسیب پذیریهای متعددی در RubyGems" +author: "hsbt" +translator: "Goudarz Jafari" +date: 2019-03-05 00:00:00 +0000 +tags: security +lang: fa +--- + +RubyGems همراه با روبی دارای چندین آسیب پذیری است. +این در [وبلاگ رسمی RubyGems گزارش شده است](http://blog.rubygems.org/2019/03/05/security-advisories-2019-03.html). + +## جزئیات + +آسیب پذیریهای زیر گزارش شده است. + +* CVE-2019-8320: Delete directory using symlink when decompressing tar +* CVE-2019-8321: Escape sequence injection vulnerability in `verbose` +* CVE-2019-8322: Escape sequence injection vulnerability in `gem owner` +* CVE-2019-8323: Escape sequence injection vulnerability in API response handling +* CVE-2019-8324: Installing a malicious gem may lead to arbitrary code execution +* CVE-2019-8325: Escape sequence injection vulnerability in errors + +به شدت به کاربران روبی توصیه میشود که یکی از راه حلهای زیر را در اسرع وقت انجام دهید. + +## نسخههای آسیب دیده + +* سری روبی ۲٫۴: ۲٫۴٫۵ و قبل از آن +* سری روبی ۲٫۵: ۲٫۵٫۳ و قبل از آن +* سری روبی ۲٫۶: ۲٫۶٫۱ و قبل از آن +* قبل از بازنگری trunk ۶۷۱۶۸ + +## راه حلها + +RubyGems ۲٫۷٫۶/۲٫۷٫۹/۳٫۰٫۳ یا بعدا شامل اصلاح آسیب پذیریها میشود، بنابراین RubyGems را به آخرین نسخه ارتقا دهید. + +``` +gem update --system +``` + +اگر شما نمیتوانید RubyGems را ارتقا دهید، میتوانید وصلههای زیر را به عنوان یک راه حل اعمال کنید. + +* [برای روبی ۲٫۴٫۵](https://bugs.ruby-lang.org/attachments/7669) +* [برای روبی ۲٫۵٫۳](https://bugs.ruby-lang.org/attachments/7670) +* [برای روبی ۲٫۶٫۱](https://bugs.ruby-lang.org/attachments/7671) + +درباره trunk، بهروزرسانی به آخرین نسخه. + +## اعتبار + +این گزارش بر اساس [وبلاگ رسمی RubyGems](http://blog.rubygems.org/2019/03/05/security-advisories-2019-03.html) است. + +## تاریخچه + +* در اصل در تاریخ ۱۳۹۷/۱۲/۱۴ ۰۴:۳۰:۰۰ IRDT منتشر شده است. +* لینک به وصلههای بهروز شده در تاریخ ۱۳۹۷/۱۲/۱۵ ۰۹:۵۶:۰۰ IRDT انجام شده. diff --git a/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md b/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md new file mode 100644 index 0000000000..79eeabd65e --- /dev/null +++ b/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md @@ -0,0 +1,49 @@ +--- +layout: news_post +title: "روبی ۲٫۵٫۴ منتشر شد" +author: "nagachika" +translator: "Goudarz Jafari" +date: 2019-03-13 11:30:00 +0000 +lang: fa +--- + +روبی ۲٫۵٫۴ منتشر شد. + +این نسخه شامل رفع اشکال و بهروز رسانی امنیتی RubyGems همراه است. +جزئیات [آسیب پذیری متعدد در RubyGems](/fa/news/2019/03/05/multiple-vulnerabilities-in-rubygems/) و [commit logs](https://github.com/ruby/ruby/compare/v2_6_1...v2_6_2) را مشاهده کنید. + +## دانلود + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.4.tar.bz2> + + SIZE: 14167366 bytes + SHA1: ac3248a055b5317cec53d3f922559c5b4a67d410 + SHA256: 8a16566207b2334a6904a10a1f093befc3aaf9b2e6cf01c62b1c4ac15cb7d8fc + SHA512: 3c4f54f38ee50914a44d07e4fd299e53dddd045f2d38da2140586b8a9c45d1172fec2ad5b0411c228a9b31f5e161214820903a65b98caf3b0dfeeaabf2cab6ad + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.4.tar.gz> + + SIZE: 15995815 bytes + SHA1: 330bb5472f565b683c7f8c9091d4ee0cc155b51b + SHA256: 0e4042bce749352dfcf1b9e3013ba7c078b728f51f8adaf6470ce37675e3cb1f + SHA512: 6e58006c30d8ae561967e051ec0a34f34f899eee1b039abb65c9a63dc65965e210d238fff19fa7c7411893df25dfc40426887a195993153fb9e09bbf769dfc14 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.4.tar.xz> + + SIZE: 11493016 bytes + SHA1: 221b8538e75a8d04af8b9a09f56343e463bf94f8 + SHA256: 46f6eff655a6be1939f70c7a4c1bf58f76663e7e804738bc52f4d47ca31dee3d + SHA512: e72294e549d09510f20c808d26a0d21ef0ee2616d8598980a42db260d45340e5c259ac65e5478a8b086042ff6ba7d8447a6c8115454ffe977c4f63175ab89062 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.4.zip> + + SIZE: 19186174 bytes + SHA1: 855be9a5a43a1e0621ad2e81c27de9370d2abcc8 + SHA256: 823a6a2c9c7baa18554fd78d430837a01ab33cc16ad1759c9842bdd9523e9cea + SHA512: a83f90514b09c217fbbd154cfc09c804553353a97cbff7df24185b613e1c7be69a965fe9ec925ac3f4bd6170f2c3d0d60be7ea4ab1037ce64300d7443b6e08e8 + +## نظر نسخه + +از کلیه متقاضیان، برنامهنویسان و کاربران که گزارشهای اشکالات را ارسال کردند، و ما را در انتشار این نسخه کمک کردند. +از مشارکت شما بسیار متشکریم. + diff --git a/fa/news/_posts/2019-03-13-ruby-2-6-2-released.md b/fa/news/_posts/2019-03-13-ruby-2-6-2-released.md new file mode 100644 index 0000000000..1836525c7e --- /dev/null +++ b/fa/news/_posts/2019-03-13-ruby-2-6-2-released.md @@ -0,0 +1,49 @@ +--- +layout: news_post +title: "روبی ۲٫۶٫۲ منتشر شد" +author: "naruse" +translator: "Goudarz Jafari" +date: 2019-03-13 11:30:00 +0000 +lang: fa +--- + +روبی ۲٫۶٫۲ منتشر شد. + +این نسخه شامل رفع اشکال و بهروز رسانی امنیتی RubyGems همراه است. + +جزئیات [آسیب پذیری متعدد در RubyGems](/fa/news/2019/03/05/multiple-vulnerabilities-in-rubygems/) و [commit logs](https://github.com/ruby/ruby/compare/v2_6_1...v2_6_2) را مشاهده کنید. + +## دانلود + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.2.tar.gz> + + SIZE: 16777765 bytes + SHA1: 44c6634a41f63ebdc1f3ce6ddcf48a4766bb4df7 + SHA256: a0405d2bf2c2d2f332033b70dff354d224a864ab0edd462b7a413420453b49ab + SHA512: bc96a6793a1e3111598b82b0aad98dc5b465e39cdb5b788c4259818752e028a44545c6489c02c323db0f43a362c26f0900acfba0277d6e2201587d7252f6125f + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.2.zip> + + SIZE: 20601169 bytes + SHA1: fce5c289842e6e4c4bc7950214d82c0858086baa + SHA256: 65b862e5c86346d6bda05fc193c6f2cd728ddfd357f4b0a19d54d48a50984d13 + SHA512: 60ccabbca50d51186b6715edcd8e4fa704e8b9159a23f073e8d3aafef3858a98ade416156af94a479d1af5555c4c4b5b71267f0f563a518e5e6112ce9921bb8b + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.2.tar.bz2> + + SIZE: 14634343 bytes + SHA1: 5839fc6e6568ac4f26a20382bd8fe0d998dffbb0 + SHA256: d126ada7f4147ce1029a80c2a37a0c4bfb37e9e82da8816662241a43faeb8915 + SHA512: cad678d2ced4085e99009e4fef83c067dd0e6ead27a8695bc212c0e5112a7fa09ceb27f82638faf91932ef8bdd090f844e0a878ffdf6845a891da4b858588aa0 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.2.tar.xz> + + SIZE: 11889840 bytes + SHA1: b7b3432519f80ea50adc9bfb937c7a46865a93d5 + SHA256: 91fcde77eea8e6206d775a48ac58450afe4883af1a42e5b358320beb33a445fa + SHA512: 13f7d7b483a037378eac4bf4bebddc21d69f4e19e6bbb397dd53e7518037ae9a3aa5b41fc20bf1fe410803c6efc3a6a65a65af47648d3a93713f75cfe885326a + +## نظر نسخه + +از کلیه متقاضیان، برنامهنویسان و کاربران که گزارشهای اشکالات را ارسال کردند، و ما را در انتشار این نسخه کمک کردند. +از مشارکت شما بسیار متشکریم. diff --git a/fa/news/_posts/2019-03-15-ruby-2-5-5-released.md b/fa/news/_posts/2019-03-15-ruby-2-5-5-released.md new file mode 100644 index 0000000000..ddde5f6c3d --- /dev/null +++ b/fa/news/_posts/2019-03-15-ruby-2-5-5-released.md @@ -0,0 +1,48 @@ +--- +layout: news_post +title: "روبی ۲٫۵٫۵ منتشر شد" +author: "nagachika" +translator: "Goudarz Jafari" +date: 2019-03-15 02:00:00 +0000 +lang: fa +--- + +روبی ۲٫۵٫۵ منتشر شد. + +این نسخه شامل رفع اشکال برای [بنبست](https://fa.wikipedia.org/wiki/%D8%A8%D9%86%E2%80%8C%D8%A8%D8%B3%D8%AA_(%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87)) در برنامههای [چندریسمانی](https://fa.wikipedia.org/wiki/%DA%86%D9%86%D8%AF%D8%B1%DB%8C%D8%B3%D9%85%D8%A7%D9%86%DB%8C)/[چندپردازشی](https://fa.wikipedia.org/wiki/%DA%86%D9%86%D8%AF%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4%DB%8C) (با استفاده از `Process.fork`)، مانند Puma میباشد. + +جزئیات تغییرات این نسخه را در [اینجا مشاهده](https://github.com/ruby/ruby/compare/v2_5_4...v2_5_5) کنید. + +## دانلود + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.5.tar.bz2> + + SIZE: 14165422 bytes + SHA1: 1932db85ace80ecdbc5cfc7aada5b5123f7ad739 + SHA256: 1f2567a55dad6e50911ce42fcc705cf686924b897f597cabf803d88192024dcb + SHA512: 1b56aa79569b818446440b9f2d13122bf7c2976ab9b2865f5fb62d247d7768dd4ac5b5e463709ffec0f757bff7088afd293c2a8c5349c3780763b6444bb354a8 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.5.tar.gz> + + SIZE: 15996436 bytes + SHA1: e6a063728950762925108abbdbf68968ec1ab5bb + SHA256: 28a945fdf340e6ba04fc890b98648342e3cccfd6d223a48f3810572f11b2514c + SHA512: 82d0ae019c02822668f7e8c7ad7f62170b059ea70a95a7a7cb26f809e2f2f0f5d25b5bb0ca147413ae42cf0fc5bf60329b56609c266556b1e9f04813c33bb4c9 + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.5.tar.xz> + + SIZE: 11459832 bytes + SHA1: 85cee62e47f0707808ff3d7cb68b6cd075a65509 + SHA256: 9bf6370aaa82c284f193264cc7ca56f202171c32367deceb3599a4f354175d7d + SHA512: 06b1d58536ebfacb7b56c1e6ed4b8ab816fadc4f48c845a452554cd262e7908199a30e5793f3cbaec2db56a8803aa5c6089abf7bf06c8fc47867e97870b7dfec + +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.5.zip> + + SIZE: 19186230 bytes + SHA1: c0b2bd2b09b40d098b1295303c820d7dd8d97d38 + SHA256: be630e814c796f3750bd892f1250851e67fc4379f75508a4cb7ca7ceb718ddef + SHA512: 95604d47f3436e0be3a59742a89ac5f1c5c9493ddab8b53b154098b876b2fa12418d2adfc1c71e039a6876d209a7832efd88c0e297df5be56b8f7e92094eb487 + +## نظر نسخه + +میخواهم به خاطر گزارش و تحقیقات sorah و k0kubun قدردانی کنم. متشکرم. diff --git a/fa/security/index.md b/fa/security/index.md new file mode 100644 index 0000000000..ac6c4cd014 --- /dev/null +++ b/fa/security/index.md @@ -0,0 +1,122 @@ +--- +layout: page +title: "امنیت" +lang: fa +--- + +در اینجا شما اطلاعاتی در مورد مسائل امنیتی روبی پیدا خواهید کرد. +{: .summary} + +## گزارش آسیب پذیریهای امنیتی + +Security vulnerabilities in the Ruby programming language should be +reported through our +[bounty program page at HackerOne](https://hackerone.com/ruby). +Please ensure you read the specific details around the scope of +our program before reporting an issue. Any valid reported problems +will be published after fixes. + +If you have found an issue affecting one of our websites, please +report it [via GitHub](https://github.com/ruby/www.ruby-lang.org/issues/new). + +If you have found an issue that affects a specific Ruby gem, follow the +[instructions on RubyGems.org](http://guides.rubygems.org/security/#reporting-security-vulnerabilities). + +If you need to get in touch with the security team directly outside +of HackerOne, you can send email to security@ruby-lang.org +([the PGP public key](/security.asc)), which is a private mailing list. + +The members of the mailing list are people who provide Ruby +(Ruby committers and authors of other Ruby implementations, +distributors, PaaS platformers). +The members must be individual people, mailing lists are not permitted. + +## مشکلات شناخته شده + +Here are recent issues: + +{% include security_posts.html %} + +More known issues: + +* [Entity expansion DoS vulnerability in REXML (XML bomb, + CVE-2013-1821)][1] + published at 22 Feb, 2013. +* [Denial of Service and Unsafe Object Creation Vulnerability in JSON + (CVE-2013-0269)][2] + published at 22 Feb, 2013. +* [XSS exploit of RDoc documentation generated by rdoc + (CVE-2013-0256)][3] + published at 6 Feb, 2013. +* [Hash-flooding DoS vulnerability for ruby 1.9 (CVE-2012-5371)][4] + published at 10 Nov, 2012. +* [Unintentional file creation caused by inserting a illegal NUL + character (CVE-2012-4522)][5] + published at 12 Oct, 2012. +* [$SAFE escaping vulnerability about Exception#to\_s / NameError#to\_s + (CVE-2012-4464, CVE-2012-4466)][6] + published at 12 Oct, 2012. +* [Security Fix for RubyGems: SSL server verification failure for remote + repository][7] published at 20 Apr, 2012. +* [Security Fix for Ruby OpenSSL module: Allow 0/n splitting as a + prevention for the TLS BEAST attack][8] + published at 16 Feb, 2012. +* [Denial of service attack was found for Ruby\'s Hash algorithm + (CVE-2011-4815)][9] + published at 28 Dec, 2011. +* [Exception methods can bypass $SAFE][10] + published at 18 Feb, 2011. +* [FileUtils is vulnerable to symlink race attacks][11] + published at 18 Feb, 2011. +* [XSS in WEBrick (CVE-2010-0541)][12] + published at 16 Aug, 2010. +* [Buffer over-run in ARGF.inplace\_mode=][13] + published at 2 Jul, 2010. +* [WEBrick has an Escape Sequence Injection vulnerability][14] + published at 10 Jan, 2010. +* [Heap overflow in String (CVE-2009-4124)][15] + published at 7 Dec, 2009. +* [DoS vulnerability in + BigDecimal](/en/news/2009/06/09/dos-vulnerability-in-bigdecimal/) + published at 9 Jun, 2009. +* [DoS vulnerability in + REXML](/en/news/2008/08/23/dos-vulnerability-in-rexml/) + published at 23 Aug, 2008. +* [Multiple vulnerabilities in + Ruby](/en/news/2008/08/08/multiple-vulnerabilities-in-ruby/) + published at 8 Aug, 2008. +* [Arbitrary code execution + vulnerabilities](/en/news/2008/06/20/arbitrary-code-execution-vulnerabilities/) + published at 20 Jun, 2008. +* [File access vulnerability of + WEBrick](/en/news/2008/03/03/webrick-file-access-vulnerability/) + published at 3 Mar, 2008. +* [Net::HTTPS + Vulnerability](/en/news/2007/10/04/net-https-vulnerability/) + published at 4 Oct, 2007. +* [Another DoS Vulnerability in CGI + Library](/en/news/2006/12/04/another-dos-vulnerability-in-cgi-library/) + published at 4 Dec, 2006. +* [DoS Vulnerability in CGI Library (CVE-2006-5467)](/en/news/2006/11/03/CVE-2006-5467/) + published at 3 Nov, 2006. +* [Ruby vulnerability in the safe level + settings](/en/news/2005/10/03/ruby-vulnerability-in-the-safe-level-settings/) + published at 2 Oct, 2005. + + + +[1]: /en/news/2013/02/22/rexml-dos-2013-02-22/ +[2]: /en/news/2013/02/22/json-dos-cve-2013-0269/ +[3]: /en/news/2013/02/06/rdoc-xss-cve-2013-0256/ +[4]: /en/news/2012/11/09/ruby19-hashdos-cve-2012-5371/ +[5]: /en/news/2012/10/12/poisoned-NUL-byte-vulnerability/ +[6]: /en/news/2012/10/12/cve-2012-4464-cve-2012-4466/ +[7]: /en/news/2012/04/20/ruby-1-9-3-p194-is-released/ +[8]: /en/news/2012/02/16/security-fix-for-ruby-openssl-module/ +[9]: /en/news/2011/12/28/denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815/ +[10]: /en/news/2011/02/18/exception-methods-can-bypass-safe/ +[11]: /en/news/2011/02/18/fileutils-is-vulnerable-to-symlink-race-attacks/ +[12]: /en/news/2010/08/16/xss-in-webrick-cve-2010-0541/ +[13]: /en/news/2010/07/02/ruby-1-9-1-p429-is-released/ +[14]: /en/news/2010/01/10/webrick-escape-sequence-injection/ +[15]: /en/news/2009/12/07/heap-overflow-in-string/ diff --git a/stylesheets/fonts/LICENSE b/stylesheets/fonts/LICENSE new file mode 100644 index 0000000000..711721180b --- /dev/null +++ b/stylesheets/fonts/LICENSE @@ -0,0 +1,51 @@ +Changes by Saber Rastikerdar (saber.rastikerdar@gmail.com) are in public domain. +Glyphs and data from Roboto font are licensed under the Apache License, Version 2.0. + +Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. + +Bitstream Vera Fonts Copyright +------------------------------ + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is +a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute the +Font Software, including without limitation the rights to use, copy, merge, +publish, distribute, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to the +following conditions: + +The above copyright and trademark notices and this permission notice shall +be included in all copies of one or more of the Font Software typefaces. + +The Font Software may be modified, altered, or added to, and in particular +the designs of glyphs or characters in the Fonts may be modified and +additional glyphs or characters may be added to the Fonts, only if the fonts +are renamed to names not containing either the words "Bitstream" or the word +"Vera". + +This License becomes null and void to the extent applicable to Fonts or Font +Software that has been modified and is distributed under the "Bitstream +Vera" names. + +The Font Software may be sold as part of a larger software package but no +copy of one or more of the Font Software typefaces may be sold by itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME +FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING +ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE +FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font Software +without prior written authorization from the Gnome Foundation or Bitstream +Inc., respectively. For further information, contact: fonts at gnome dot +org. \ No newline at end of file diff --git a/stylesheets/fonts/Vazir-Black.eot b/stylesheets/fonts/Vazir-Black.eot new file mode 100644 index 0000000000000000000000000000000000000000..0b5b75e9d33d8dabd904a248896a67b0d0a79ff1 GIT binary patch literal 93214 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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Black.ttf b/stylesheets/fonts/Vazir-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6a0fe7e64e16cbf9a8f37f2665c71e0e17d8b2dd GIT binary patch literal 93044 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 MCv5#VklXkF08m_t0RR91 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Black.woff b/stylesheets/fonts/Vazir-Black.woff new file mode 100644 index 0000000000000000000000000000000000000000..25a921bfae6a68967fea55b8e7b089153cbc0e90 GIT binary patch literal 53616 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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Black.woff2 b/stylesheets/fonts/Vazir-Black.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2b810779c51116b10a71b0c81eb1d4e8b14423da GIT binary patch literal 42408 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�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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Bold.eot b/stylesheets/fonts/Vazir-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..5fe4a3e118d39b958adb6701f1627fa7717e8d23 GIT binary patch literal 91930 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�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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Bold.ttf b/stylesheets/fonts/Vazir-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3bf09c9fdd69487dd7ab7f59bd3d61d98525a8ba GIT binary patch literal 91764 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	& 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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Bold.woff b/stylesheets/fonts/Vazir-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..b106537f1aae8018382bb196638e4d128095179a GIT binary patch literal 52808 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 W)9y-dSqfp}Sk9$Oig(dx-#-EG@+$%W literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Bold.woff2 b/stylesheets/fonts/Vazir-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d740744d5377a884afb44a79822a151dea9f62d GIT binary patch literal 42076 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�e=+61gpA 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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Light.eot b/stylesheets/fonts/Vazir-Light.eot new file mode 100644 index 0000000000000000000000000000000000000000..9a994bc2931edb617346ed42d61ca644cb13bc96 GIT binary patch literal 101214 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%0Argfj%T3r)QIqkxJF&N%4BQ>XL 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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Light.ttf b/stylesheets/fonts/Vazir-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c3077a8cf605b49e096fadfecdc622fdb4fede12 GIT binary patch literal 101044 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 bD$RC7BvhCDG(XRN%{$iMbP!p^spsimqx1VR literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Light.woff b/stylesheets/fonts/Vazir-Light.woff new file mode 100644 index 0000000000000000000000000000000000000000..92c9dc6ada62bd29dbf6681a84eee8c7c9163ed8 GIT binary patch literal 60076 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�D$ZtGa`hpTl@aERx-ZsYMiK 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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Light.woff2 b/stylesheets/fonts/Vazir-Light.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4321b8f8b20393d55fdd654785a9b0a173f84e96 GIT binary patch literal 48616 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 Qd*loM=&22O+yMXp092n?3;+NC literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Medium.eot b/stylesheets/fonts/Vazir-Medium.eot new file mode 100644 index 0000000000000000000000000000000000000000..e994187f2601b6924494e5c57624ca7e3deb5284 GIT binary patch literal 107958 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%0A<FQ6cf#u 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 T?QzxpK0Jdf8$I*5rN8n&^oK9! literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Medium.ttf b/stylesheets/fonts/Vazir-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b0a898f59a9817892a850d71193992ce5ff4369c GIT binary patch literal 107784 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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Medium.woff b/stylesheets/fonts/Vazir-Medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..f17da24a700245cc4ba5a403525d615fa849949d GIT binary patch literal 63400 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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Medium.woff2 b/stylesheets/fonts/Vazir-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5803dcdb5587b67476aa1f4cceae4e7fbde3047a GIT binary patch literal 51436 zcmV(}K+wN;Pew8T0RR910LbhB6951J0i_540LXv<0RR9100000000000000000000 z0000#Mn+Uk92$X28`UNpi*g@<at2@kiarQl37TyY2nvL;B!lA=3y4Sn0X7081CV?K zAO*`?2crWFff!q0c##6uZhPHFNcpzv4+i|ZZ))&{qxf^%fTq&Lc}}i^JKpWQV2iIj zoBjX)|Nk47iHzA@kX_QWmWiMuo4UDwlGwuw#GY<Ayaok@H{>zNQ4rBJl{%H_vsLuw z9c9od{2=pq&dXBkN;$eU_*0AMLPEjSQ$fu`xNVs=>y#;#lMpPVoMh?jxO+L}R?9p^ zL#o9QaoWEse;34qBYNqyX7)m}Jmx@=)CNDz_A*_ji{fW*&A7$04=S-BueAP7P$g9o zizT{0kKc*Jqf(<Sjk`S$+Yfirp<fqBEPk{2!eSxt=Bk?|E?7`~&^C#baI?yMY0!hx z$&FjUgPbIuQ0Q$4ix-jO4&jbOY{t)Cj_A1Hjlh|Fhr$Sw@n=3{3bLf}TxI!)H%en& z=)!$)wKay-)F`XD3txl6ybjReZl=^5y*tW?XZxS2{~y40B+J0q7+LR#b>fLHs_M`4 zbNh4di;XdQ()CfI3^GaqKV=sv*ccJC4HyN8iIEsZ3iH7>>zm3LubLo*z=R+b(-rqG z=10-XaiQe*!*-HQ-lvw8sH<f-M<7of&wuR4@7F%}fj3E_A&N^Ak;+ijGo=!uC2w8{ z?ax0$Ft<i+Y;1jN7HkbYs+Nq6ZLo$xk0_~DNd-|s5y40>Fd{MPjruq1Oa0XM|KVSL zjmJ)so4ol&bW9$A6)?*R!>($X)H)!wbql~VFT?BkHTi-LtngmsQYoN=hw+wCSm*oS zoaNUHTgkw#WQbc1E#8ZllOdT55G4K=spYtUi-ew}0C?<c0Kk9!etKU}0Xi4WN??Ih zokCQZDiW$f#kRWqY4;5Oo&I;uTTgafC`mC)Tux9pxYsjt7W6ECdw&b1VhSMz50?1& zeNgfHZNCY<c@mA#c!v&Ff>;eca88he$|~v=X%{&@0w_F@<CS#VGO6=<CE39jFvpG| zmSsYj64nRi+e^cS+w`$rJFSKPr~PPW=E^K$m4uf>Z{8|7(pLW)pm|N!oY>^Nu6Z%0 z>czy1obHLNXS#plRsMUASNR>nN?Y08Bkj!M-2<SE9HJBlE{BoJ_Iy9}ojGvtdy*Mt z#a0X)q*{5g<B;nlKZ>32ue{ITs^FA()fKLRVA;*4i%nOAqT3#nbZB_z)9Gt}AeR`{ zzCBRJsUu3So4raWvK=~*bTY7HPS|$B2cK~I9i|pQ05aL!Q_Ub)$`R>{H@8{1_Ad!Z zg*B6I)q^Y0hb!eX?G}?qLRaWGHM#P=I$tU6Bq!<X+j&?*Yz)GkF8M$O02NnS*AA0p zx9q~&(Eq<_ZPxDD|NoRgpGmS=G>$Wl>Uc=Hx+Wah+}4`eUKOS3a{}|*FOvhTBL0*; z$QU;Tg5ARNt&w#Kg{)=EWhrg%aR`GIhfu_$+R`TPX8#-@F{%mEg!y6#mrm>JZK@qr z_6%^Ty6;3Z4#LEHmrIrdVi4HRovoa{ra*!cWS&<(yW><93v)Z_rC)r}8<l!Q?EjWF zJ3oKtO5LBOWUnth?jjte*;XXRB(vF<+f4RK-wdtQYq~jvLbz5W?-Zq3>^&3~A;Hrn z?}W#q1jeJ$IFAq#D}j34FYSjC>=g4#!k?GGxe_Ef0$p1pYD8;a(?03WIYrqSx{Qns z$R&mhkhb4EJ&m4b^+VF>2ZtDDG}=9BzjL4l(1aTqFy>?C)bRiRYri~f%pS=Si&Xw1 zR9cyTXZ+ybcua_hMYRwTi<*d4{QpmzecSgWz$(D)(EZO~PqP0%oWT=2EH-vejEm*p zPTEQL>Pf2iR7tABg#<RJFpVkP4JvHoD(q7M_f&!Ve?HxF4*nrWT!n26?nwWT@@isU z<*?Y#Vm;gSYzH#kY!BM(h4jmk4T3<S90sG9|2fV6E(hr`%RPU>+!=XF<t2rT0|SN} z0XhK4nnBl%vvmj5_K3)y1z@iLSV)OH1ox`v-^)HrHU~u3rZqgp)}+Q|D*U$<>iYvq zU_&xkk?k^wSn+V|&iCuzl?|EOc4v1FZ3sg!!5G&FBZN?euP|oL<N4Xe-~9iRHmSoB z26Mb}<^7v1;<UcIWPsfR4Jd`M9g}2BhV<Zn+1C45SH-o>ghi7wY8XpRt-}s>N_~a& z-F2h1!C((CMH)%*`%KDdh7$b}F0IY$5I@`d&Pa07GXVfM!Q+3f7v75Q-<<ffy6<%k zW?jC*Pq~Cp+PDR(&ks&%unpR7H=<EH)Zq@wT`!=Q9!YuS3p7}n_!<W=j?u@AlVwtj zWl^jZQJNJ~x|L9dl~cA=P>wZGsr^WU`K|vctg7$MB0v?7$Wd9|sYFZBIUzI<@39=d z+FEFRoJIe6=`0om>j|F_n0u@!F$oqQE6UA-13%sJlHtsW#Jpl?JCTuE1l=dfi*lgv zOlp1+{Fq!%&4z!|V|khAnQ>QA5rPNed5Oq*FrKfDfe*$@@-SvNR$|k`*~8OyKa!r9 zi^Gr4&MU%|Pp0Li<K`zb5;JihH28b=+8`^o?fM{f(Dn%~E$4t@7b+4WCsuYI&udDG z?zq%N9WwhACp%|ti2%_tQgH(ddt0vcRfq1jh}&t0=p%QA`n@6q_p!nD<y>|;`?%YM zyNdEaF(x(tH?IKwONCr%p}583fUPV5T0)PpL;nz$G?P@;HntXk1<&UQZpRc=8g%2} zkmil=7-T1AK!~6xe^Itc$z^Y@h5(?aexUr%`koo3K_)`POhDlhCqOD-X2QyzO;|=V z2n6M-8@lg41vbM01R|hFstA2nKN_&*OF7i<7z_)10%c8oQ)?dlgou(LO^zaEsw}kJ zTD7*q+PSj^EQ5-J)U1&WmP*xwHFGrW5UmH-;!tjn=`zc6`Bm92;yWZ!#kfXV_0~@w ze{Ip%F-Y3=3(a1HWK#d>N@GoZ#x7s+2>h?Z71vyM(=DC4+;+#yB7`C|VF*h&giA#3 zzaW7K1ObQu5C<RyKo)=k0CNCT0GJP8DS*`gHUg*zuoJ*O07n3v0&oF93xKPz)>i~r z?s9^4K$EaEvJou*Oa&_}4}uk}zhG{UrU1*gmV$*$8CbR{PIf+`lvwK*N3TdHHdB`B zR8DL-fkk#&s$0dedKa|J(qY@t^*Q{wC^@REHSn9uhr_kjka)Drg)TRKmUb<kXn=5U z<(mZzuikuUTMK5X-kOf@b{Uv8G$x_`%pQ~Vr`Cm4)B5I}NBytf5B`c=7B-f~;)#_y zXAFU(@QG06RkaPhfn&)`zEoA)(A-w1dwM+c+DG5~q4Kc+ilz9JbjXKlXoq2#gjLvt zleA?hGg-?)Xn8A8;le0M8Ol?Ms#LEQb!k9jn$o;hwW(bl=|b=HC5Gak2+gI%X@L}_ zE?pVPOw(m27wg*CDBIY{?)G)CBOT`yXSu*-u5p9g+~XnRJncoVd&_%1@s&ULn?^JV zac<hQti0mNy3VnPxRiWFQp;DZ-LN;|vB{bFrB!P;Y~Hrc?$y(?UMJI=e9Dg;D_~ic z&q|kksg`ybmPuKaO*vJ&hBd2o9g41Z0~=mUlbX@Imb9w%ZE05rI@YPqceR_{?NKiZ z6Q;laf(dSU#2C^@mToy{*fzonUSFY4okWJC+q;;K){y$v#TeKPm-JMBK3C`LbO5B1 zPDpWBbUmz(F>m@c0t_`NBa7EIFzmoUOZ?j^8XLu<e>L6iQbJvx%B|{cnX~KVxM9a+ zT>PuF9yVnqxsVefTJ`tc)xC*U=^T~4Wo4^}vM_DU-6E4M4O6mhj018aaycso=QD=g z?r?T{K~>7Q`o1oG@9$Y!)nPWgZL3f3<d5a;NM4$O2GTl@F_z7JC(9~aY%aQX^u@ra zh$}SuE2}nVXXo6;t6Fp^XR~Au%v&g{ewFCIc;j0|hU}m4hejIZ_Mj2BBSHN*Y-Gk_ zpsLGh*Jj#?_bp!|Lp1?g(YMQE!=V=F_7z=xpCLQAKg>j<J}5(o*mh4w4Y@cpcOsvq z=~H#u*G7rv^DznyLEx&MS{B60<6X8Eb0;Hny?sa7+cg|0a4tJo<l)x=AZY#!!^!1o z2dd?Ga(CE(QQ@)K%RrDE!A-es28a_4mDY=B#Oe`|BOowDHH1h?E!0_iA&af-&%CQg zPHI(T;(F>X)M;F|BUeDg=q~mR@ODN>C_f$tSDEXcCl;acHdyV~CzD3+#Jho3YqrYG z!*HKB|Fzub@UuJ}Evwv}tshhe$*jQtlA^~-{sgm>vbLqQvoNk>$2t@LHo_P^`aV*& z^$MbuC-?@uAoSL2VjsNY_Z)O^fNy>k=%;@xYeq%;y%-(4_iFN>-v`~jf2sc?@Z&;) zkVDt!<b(%LoQjA+zta#&o=#zB&6xbRdS^Mx;r+nV?^d83{ti~ZQ@%?<+t|4bzdR1` z?rcBJAG!INIgNeYo+l2z%a%fCW%{wV@`WxqgS@&&LnEDz7DD5tL#45#cSRT6s$a6( zsko!&$JD6Wtgy_VSQdP&ON}yb5Y>k~RG*GU(s3lU$gz*gHsx~ZkEU-Wir5>}@VF1e z!+3J8ep-{kjxn!fN7GE6QD;)7Xg3>$^n98u>ko8`PwWjldTyjyBf6i;6_h8MdV{Fp z#q6u5fsS@hx6$Sm$iT^ojj?ynp2`E$tZ!?xSF8;Ulg)e?6W)QPw(fN{`QP4^4o06# ziAvIE=$;zvvLXJ;y3V~)$D`%Zt)+Oo`s~k25H=ne$czJjGCo*mtT8KfblUlA^22`- z3bPF!*z9%k>ywt(Mb_>Lgqf686=O$}Skm~kp}1T>ve4es!ZtVOd#Sc{XFkmpzkE(Q zW-wN-;c?CZoJHf~H8YTgDrkm;O%i1%FBxf$QDm7PGif*DG+K#2;d3#8)TJ!C)M`fx za+;&Fi4B*T8nG%PHRNlc7KatiNW0xA;~G$1neR}iWd9@OLFv=Z?FawyM8LYtaW3S7 z$I`EOzz~T?{}d&6<5TtMiuGVTPMvk5=Zb+aiLH`Lhk;bIjfzZTAC+63h2Bwt`DNVc zIa@&AH#*MqMa7D%Ue-ghqEqt+uJCCccJl-6oIoRgUiMX>oKk4Lk`G*Q@e#VZ=#wR& zvx!VAz%>6VKF_Djf`%zQD%c#ErxD5W)s<=(^&{PS+j1}XU91%~P|e|VI5n>rOy)VI zdd^6ooBcdZiluW(UwZ~PUmk1~fuCVz-wJBAbVLqg9dEqrSe%XQ^}$PF3WFgv%H1A& zZpU&o9CD)@DJ8dN%5?Z(WZaIbPP38j!gaXTMg&<CHhK-lbG0@^&Xrt)qdZ^33|l6W zGv3I`^dVa)@?^(==V|IYsY0zLA0sfSRob}SL-|9MH~if<hFH(VtIO&vJJ-3^vI3@V zYp=9Dr0$a%;aS7z>&6%lm@+P?Xupn)VcMu~<d10>gD2Q*1P?|_Nox;BLwFYvZd_;o zxfNVR-}Q9C_7w7dpES<%4D<1C<cnaC0l$*ED68R1$~#Z+hVk>U2&Vo>oCqCNYxq?o zN<18G>1D4WVU0<}%L$_2Qvkm-E&@l&U;waWX_+77*k`VlY~$yXWfeA>det=M#*wRP zG;t9u3+-SClt8%#-GS~SMM{)a0je|z74_kWTBnYII=~6_Q1x=r>0Qr*F6TBrn(6C( zj6-9>f{paUh3_3U>5k<LY^Ct%R6(SK3TkMhi#~=JV}fbsS!P|E-O77x8nXvFi{-aV zB)AJ^b}Oy4kb=AJyjy9W<#bvF=3Lho1>v&b5l~cVr%Z(^4TTt?x$Dlm%{JSqV+D19 z6G@DMPVai&md0^D9ScKa!h((Tkny+7w1y1ql(?5_hq_syhBmtBV~8;(m}Xwf7`lVr z-O77x8uN{umESJ67yLJ_e95V_+CO6O8i;k&F>e!S8*D#F*Mnv_oC%T_b{O7u4H$(A z`2K@HFF(Ex#X@@5t>oKy6-NG>hF-&IGxqX9BBUw#=Ge`5I_0X*erQNPAQWhnuH*FH z#Xj(2Pz+H>(CT8e`-;f^E~a0ii1$0E{-dN}BjMfOX4YpY+{H(>@33cMBymLU*{p7$ zzd7iyNev@kOCkdjz=tmz#EB4{+ckc=->!|)PW9(SYoEw2>Q{%{53%LDFR(6sKp{$L zG>Y+lbt9R%O$y;n4AQWRPasrOR?*bbGcqwXw{Vg-UqOO}2p28RLbVY`36wIt5zN~d z5dCNcecyY_7rWk8lv$XmoH-4ZZCPQ5G5-H;GcZT{1&{v1vw|1+KnR3IM)haW{ZU+G zZQFuv*#Mw0>V1iu(T~mQw`_WlT|Y++aKil>4!(yl?r&x)TmpwASjYP#Pw)aC2(uQF z3>q+i13VDGn=x$DT}#Y=`UaM~6Q!X&=G(3nM+IP3_8?Dz7x+M!k3!1M45?liNk9Pd zOu;4wgQB$2m%8(U3)TD|a+kYCM6ZPy0V2gn2nNWw<<Nk0Z&{88TLh#CvF{kF*?)c4 z?~lu>{So@0-EQ^aa(U-(T7HgvPc-W4arfByvFpMs(ahIGzmU^@{yTSL^nH2Sm-|E% z<M~(BU!C;h%65MTGh6*qxZ;osv-oT#s;iOgU9N^D2@|~u-gs%J$=l$EHC8GuC{P56 z1kE+A)jNpO-sV)si4)3!@5kS@@=f|s_xaQ78rwbO50xLaBWp;Tkk^#-0^SO-3{$}+ zYCk@yb5E500sHmu_>bVi_o>yxQW%HVx0-e-BGmJ3`uABD$j@Ib@_Jq9yS(_h%irbA z`ipyXP=o`?*X@^aOa=zrZ1xA6nXp(@oJBXK4mh_~qGSy}pr3dV9&-8mDm_)aW}jU3 zy^qejURTTd4ONqY<<lf*U1l!}9gl^5wN<w#t(e)$z?W4|JE||*&u&IWbh0t|dbWpj z_5I{??dB^M?*0$Z=5DU-=i4}&6ik@swcJuqoNq*bAj{}i`OCKO+y8?1S{Zp~u^KnH zH5BtHFK=ruS|565pSq7OaGri~{#ldT-3yG%@~&KCX-9mn>$7LwuJ}YjnXQv4+x=l; z(RLqHFeuiThg10E(7S$%gv`*1Fm&>u0*;C-4vM1yp--FvF@}{1Q`JQo119V<tvq0+ zBg%ppOB6HMF%y_Yk_{O%QtU{xC+jFOjxoh?1WqFBjF(%}f}G1B?+Q~~L(wf1+(F4* z6x>7E4?UG-uG%_SeZvXP2oJzO_IQd>WeeVl%^eOLQ7^1?^ivSJtfEUWQi8QON1tFN zmoQy<rX1AnuuqN@Y*x{6Ud3rNg&p#6y}YZqDXu#uHzgV&$U;0{A(G?kIchm76$J7@ zjyoJEyHM!XE@Z)5QY?!?u1d=4s<ASgp6V{n8s9X#Z64)LJX@d@dMjefO8jj}@>YUg zwk1EHy3kzvo+hqykAB|rjS*ZyLV}GiVI+`@iLBb<`3NE5TmitRm~@40{x9_q=MTZJ zgVA@H9|N<Cx%5PszRT`6q<e6?{%L>@D2$~5Adk5}bQ<78YO}+>j4Y9Nmh)A0O>OxI zfkYq=XuESj0-#~rgGjMdq<tm5PB1di6h1b`Ac|O#L|R3O5i1@7LtzLM21g)zcK$k6 zsA=gLnOV8!mfP-o?1|?Fyz{{);|TT`99=NF!68!?#}G1|i(!A{n0(-z3lOyJEt4L5 zMg4L;<^IO}qyXXNq4XedBpQpSqM>78VqxQkE_XfD>#3LCNc5fuBX>Av&gz)LOQ{El z;Mv_#(n%);`?@OUc+1Kz^i)lo(@5VYh*I+L_h`QO$t>S}lpyih?S^BCR3=whU0dJS z+}d@W?s%X_zZYIh@Qyn}w>V;kY}1`IK4Vjy0HuVP7(UsvkS-dCo14tRAArChZsZeJ zf3O28Hmkyt#)XDX%4tcE=7TB9UD;L4MHZ3SQW}pW4d2A|8gZ>vT)|3o)I&ky!c%bh zw@IR1P^+*wc~Z5vl3#8XJvx5xDESVBmgz}v$vPRrPRh9U4@aMok4UQRm$vJF`zcYL zl|RY9%0GLEpyZ(4f|Oo1*Fvjp{-KsT4G#YYqf=>=cPqubofOLIB%f7ha-HNz>?DhM zS294FnF1z}VyYt<u*<w|I|Pi_&O3QH1_M5}?d;gSJu#cJ7>!!AYR>>9?GjL=j=~RY zZ?|9HD<1{0ndY*(1OR{u-yV2-0kOBZnI9EthT0v-jq?gWpX3I>ydxgf;lZLADsyJg z!xHK&D9n<`heL@q|6M}=_4@Qkk^PPV%)DF%;EZj{)Hi8`CqgE$6vd?pp=(edI{Aoj zQT0{f8>DTr`2R9oigZ2TIE&juFRfxXo1kvbqc)|C2qYFQiK!kR<Od{lsKIhVh!9hy zwVM1!J+I#bQWPaZNl;qR7aJq+)>5%kN~zRpW`)+G*7a|2F->W4%Uailwzj*29qYso zez?o!bz1MMYHd`#!tMx1ND+#r=!mhHimfOS)nX3_f^g8M<!Y{U>+W4iI5kdFn$nRK zd0ZyQ)S&a5hOVH~NVzJlFlvnrwtL_c;l#Df_wJt~?97VOCv`h%e|?$4US2YMO42EJ zIN*o6)F%mDeD@DTL$t*RpmBVPx5jTk3h>&PhRHV9atp0au+8}BA8p+n$bSHDJ?^h} zrvJ@a+u8CKwxIrcs!7sFCil0o4@XwRPP<ttCPM;;0qd!&i#+m)XQ4Rpa6A<Mjeo~q zUVVP`?$z5@&tDze<hnLH9>(Y6!v%+TJTHIz(&VM~ORbm6FBM*j9sPgt(Tm=v#WJ=- zWfA$DqikkAv%zIJy-7}ZDw^VGhzkF^hU;%eAu!qEK?;|l3#l*^ktrdFk`d)VH{ue( zBZ^O~nEgIW%F3Y_l}2aCGg&yB<B;HzJidTm_f=8l*rFiY){tr6YRQokXD(b>xAZJu zyFPY*KmGy)a&R}y9vvZ4lxQ(*{EAJGC`q#IAdOS_K$>*fA@do4BDwMB6FG??0)UJ7 zFtHZL3+0hmn1vF-#k{3T9RPp@QWYeE2rl7o`Km+ZaocJ<ilz%9X;FYH-o7Jeo5+~P zGMUMZ#OJ{pFgn|}=^`r>TVknYDy%fGzJK%g9o-&bCuDFe(Dwx32X{}+{ohEhWqtwX zw~TXhld(AP--FQ-n&TCIjZ*TA-~-!n;OHMVdyW{+J{eb+7~iBB$_LjJ%l{LZmK^Iy zLLm5rcuu!FKrqE2A?U{0kO-K7|C4CpQ&-Uw?u>UBHY|`czx-@LgOramzJ2`4vKzUj z<K*$iQ7cFCgcY$wT}d^stH}SRV21MV^h=h}G;lZ1mk((mLo)eyb0IP=IVRpU;x!g3 zk`zfJVP`M@Ym;$t)qgGt_eplruRcofwoO+Zk^^=?-tr_5Pk3%S1&7PXfCCajo)r&= zd1#O@Ce@!Kwt{@N@C#v<68#8u91h-lqPU+wtJk_|$cGC{=aMho)PsZU%#e#BblMuu zoq#j;JAm{`rq)aiD+ug(raaFm`r@<nvG-;Go6}bu|1(J(Yn^vKI=E?ja<w_S*@VEI z*b9~-i%QGcOAG_hb#ItvX?CJaBuupH0Mi0Vj@=SWL#i1y&D+Ue$kU-ImK!K)PRR;{ zS-mUv>KhhBgZBc?TBD-c2A?Sy8FB+}0lYO257i!OuIFr7qVLj;+9kJm3PBy~;vX-` zGLhKIgz|Nk)I*}{3OKs9YOmY=nCmzFu_EH=g&keprX+Y-?kk}Jfj3s$R79r8R(D}0 z#A0o}qb;+@Sp_*uyeck9TYBYl8Of2BanKs$&z5~ev@1T0JDa)ZRHf}yG1GjEw`m2C zDYr=y_aCTwzrKvQ3fgdOY%3#n*ff2tSuBZSL?YAgj>&np1jMrY-O)<&U%vFnhg493 z>_e)ka6vQ)k)6a5UE+x$O~_uF5>uKHOPUi~S{zBBI&aDlkFHJ85I*D%)zzmvw)M2V zADnHQZ2Ne<b}+}?T{e244t41&#dMW=bd?f#CcZQwfixwdG$WBTC$Y51<v^Q8NijXK zBVtQG#g-W@c6>IQCQF=H?yd3jwNe4tg9QW4Yg&EIe=irwNv+=mwW+g_$y%`**NM*T z*i)BKG^#m|{W%J};(DmX94xXy&nKOan%e@P{ehPvmv_2WsiK^(l@4gJ$9tA|&Z=&_ zM{}>e-J>B|lHApDXOE~zHVuvO2vR`C56b7ZN}0&8k(9Et%h(;&*vxWIPd|b{`w}5# zHei%&Ey(ApDf`nhUjl78!tI>WXmBOTuM9*F{JI+1ke%31$rkU)PZSoF$Er0yCkjDM z>TX!pm`8c4-t?o-Du`*K<d`Q``$%O$o~pL0=-I5WP5Gd^c}<ja?jD)c8&bH}gsH8S zsKxhSh=GaaYt;xIEl4Dc0mYJDd6v<!ypNyt5XDYr5+JMX+V-}K%lSTQ7l0sGFn-;R zg6LXSSGRcI8nhb3xaHs}#_vo8n>8G`2)Y4lW^`sLUZ(f>?HM)C9(Za-R2A1SZ}N^O zZ#1Z0*Kent%cUDyZ)&N~KRNXA(=X+GaTagh$S?IX;L(W{KMS6`xLKRM?qfL~Z5nwt zEVXz}T*#Vs(0Vqr5OlHO@nl7dM%Qo`K94$YSd4x*r|16_dl?wyfhz2UTV0coRWiYO zBrhBRN7qR7#hDs2L1#=7Q+)c8t>$^BL*cfT_LOe?eR+BO6;uE}QtZ)s^*lP>$ZJ;u z+J>URZkb4$a$ZMjRu8n-v^UV<5x~VzKM9F{Cjt$SkOb}maHT;KlHg7R8Y1EJP@~fT z;7Bw~MiSnIKqF)%k-GtqM#)H`yAWuMj69Yeb(Z2F;PC)J6C@;wy8zs1l7u9=6M?2k zm=&e+6gZJ)_euwYAOln;7zA0MvcVw80rzr^PQpy%DR1c^?h|&-`Pd%?3hx09vvBjm z{VEFX#X*%kFbgBIJ&QS>b(TVZqHH{=JgB+B^?%=NsIU!{wxP;4R1Z*1Q1gOoJ~Uev z*p`L1Wsz-JJU~l=S{i&UTX<T8CN0?P1mVq1{dB4JRbBu5y$=L7dujVNx9E+9-^=+} zg*+?KTg6}epY<lPU!IbTeR|}GLBTOO45_Hf-6lChZbqfzHRNJ(M#6o9waYacScf#u zkoy}a0o3UON6b-bg`4FX(`fpm_l)1KiL1eV8(tWJv7~EMkrIAFT_p-WLHdJn2`=^; zAx9x1XD46}k){CJIvUv)Bns`TP`HT*%YA$+QiOEv(sA|mB0<~&NS9dI;puSxp#^6+ z5X%ZbjO<GQvJ%!AQKLAtnm?rqO&YMK!~abq^r~tGnani)n>P$=cwozP@07;{GN{$) z>A$Vm^>a<SY*klHD?<T#Is5vM#aedij-_$qIY-ORcxDik?NUve-?AaCbJb*E6nMa! ztvij%NxN~cIYLUL9XuSBd-Gw<EB-VYP?vYiD|mSo*(bLbVF&o<5pW}@9Mkf8CM+D~ zEc7|H@1y6k8EqDI<5()6Z=_1K@maukfEvI6fW=<(y?rD#DniUm?NsBy+CPHBiqJ|b z6PN(aEPz@DBb6bbv~(_0+uEs|p(wV>4a5x=)KeG?oMvgN@&@N7*DPLb3@Y7P6_mn? zwcos=J-qEzaoL1ym@eyJRb?*ptDE-f%&}@N4&=u;)wUW;o+z)Y#Ye|)Zw?Bnb$X`Q z%1Ak@&01Pz=nocFW1dzxZ3U@jdUQ}cICVI$m{vWr4eapSl|%Ode#+%IzV^1p#!G7L zwt}K5OJ>W8(c{#Ly$Nh|oo+P!{o{spdSw_?`8@sU!{k0}3vwlULw<)juC@qFDcej? zaG)p(@d&2$@8Jv~6bLNTwmdSSq!^{l%mz%^*FZR<ogL9r6abAVIxzHTbKwVzdm(IK zYO`^NQb;V~&0sf#KvPG~J(5JC<S+?%*9vD0y=QVr*|RE7IUX;sgPUjeGOT)+#VD$e za&m6;^-}_0>>y`oY`zUuTpDW%DM+#0z3LdhfROA`AZlE;ym_@j=C0zhq{8B4ZF%CP zvg0oSi2+f>m}7Ze#5WEwmCI2X#YEf7f#?ay;vMU9W17=kqbDXZ$9DJ^#p#w1vY<^^ z+WAT{7jZf4;P$))Im`Nr;nOB74NI#WDJ_1Qo~?JGK8nsBzcHq}M9k^a<Vb`M)BOHp zPTWK@X2<kwMwV3S7iY#ee<RO(K$h&;sw?!xfaGk8$eL80*5KvRt{~hFk9F-WlDe=4 zbRWTBe37!Q>Ks$U2t4MO1P!qiext(_lgO>}`{cH5VJ0*3+&?2BGXZPE44x~4vQ#^% z0#$1fNW<eeuT6kkTrCTIwp!$$87eTZT<wh>H*C(f-MJXB&p<-w#?Q^uTbZTDZ!C9Z zo_g|>(n7(P;&=dxxX95aUet#5ulPqIj;h^_ko*Qk8nfz(HX;4pgL|9inlUR4?_iGT zy?(u`I9+nKXpfs`ep^E%ZEmq6Vc15r)#l8KMj9+V?x-4uv+1r-2@I0bP?i>@yuVOi z<WKv|tJ2(CR3~m;B*|rq%@84W)q<7Rk0~Y=2rtVpb80dxY*-R(TB)Z!{vowF5~*f9 zBrQMTRzi)qIr8;>+5Pgdq3mMNjSU5ldARNOfiYj`+?yW^EMHslQLsqzB*VL^Tce&f zqD?1ku2QG`PYx6h^O*vJNM`sUh)=O_d8XI2ub4-Guu7UcNk=IGDMcu7-F;c(j}*SG zr68o#kB=HHZvlcj{0quRW~r);jM<xr)z3waT+uy`NVpE<3w^TRmnV8f8ix@d3feFm zreFquU1qWu0Rxt-Q+<k94>p4$r&?VwjMj{~NCO@b1>VQ)Sr=b4I|o5+JA)P2!qg?z z2u;xAsorplDK4%5G*pw?y5=>8BO<Y~B@j&0vp)5BFo`L~dUr0sGr*o!A=6#nE2%&f z)24@wI}|Lfp7XAJi|Sx^4>zx|xx3vH#e8}xkuzp-63|C2w?vK^0>F7`>{@2%0UkLQ z4%BR+leGG1X6YB7IF`b7t(o?mycopFTb*U~ypiKr4zJ7`YA^x+50*tz7wgQ8&gD3n zspj@hM@pv+`VDEW8kVv?dz#cEnzCxTm!u)QdkFH+!3sHzce66S@DARd<M4o~4&hl| zHUdW?2weeSP+F4{HNvb~TGC9$yS(N7ToE<_&M?^Ae6JuQBT$vK-=hGVH*)9h%g~9% zD;keqO8BU!{9Ms`pNS#x7bgnu;eJJ{c~v0*N3KX;;Ug|^mSnD<j#n7t?JgH^>Wxdo z7Ls5LV3@(WuXQ5RdTHhWqhO}e+qqJi#k)&c^cEOl_nc#%?uHA!+bv7K^&1C4+*3{F zL;?g%q`0Y1J?)wqR(Hj6++|r83-_!YcILc>k$A6r&VRzxJ_Ye=R}ynU8wo>jU4dPQ zqOifXxp2d+3p69ESkrekP)qM;S>o^~Z>xLmnk!ATW*Fgi%jqBM@>w=ZeS_eRZ|2!J z?6c3n6n{rrkb<24*?fu}IVH7NWwuNowasgar`*aKgHw7}7L}(O)oeA?Dsh(XN|G{5 zsb?XK2|<iiIcpwFcE-Yi!ja$Qd84A?MCwzHsoKa)`v!Q#h4bkn!z(o;(FQl!?-LzD z3iwmDH<5}t^%hFh%uluiu{Bk=?VHJ-VCv%<Du6CJz;nj?VR?;VN|4a7ucH-%HjH=g z?(NQP7W%L}9lf3XcwBYb>yBqaC1HQ9-R7%}me=WrhBHBThnh|J^qc$9W@j-I7($pf zsm#XBpf>1LZ;dudQsy0R2BJ6)BOfW`%T-9rN45d5x$DH!fy7`@S{ZzPW><=nOJ}d7 zg6^ht&^CY6veMW$yj(z~O7lx8vr8_L+L%b7j@6XlDF<whp>DCa+P)|=m8u^VvyYN~ zJF*6hGaMDMIEie9ReQY72BLt~?<494$G@=TBCImE4<^3nIzx&^J-{1qn3Gm34T)ri zxrtf|A@*BW-any!SX=(j5(~d|49^>51U<4lQMfJK%q&^9oKj~Jy$NSH*2ih9<cPc6 z8EqsvnVY9FSS1Vg*<R#1^ub^(B7=4-R4+Xyfv;j!6>3qedRV4@R4%n1-1>0yv{T6k zAueg5nt^l?Bx4b_lt^nXt8moAPp;`p)S8G&j^4E`GfEyfj=!Y8sfQX(A31c+G5W3J z0T-Y}`e0rg<FTm4)b<fY2M#Y#h~CB(!5KA=4eKT=Us!7_yt^gp=h_Rutz${k8h6`w z&-tG?2rMdH5)Ri1XDA++T7=EG5djsaU6c!nS6R4>5B$QYGj~ktQ=e!}K-Wq<$HI&H zN|dka#xQ1t`K2nH5P_n}<OoWY)qWL$ae*iDgF99F8jejj{ROQE{H3QGwlioR3oYA{ z>W~LZK}AbD=1oD1P|?4M#<Yt>QE;{<8A2ZDl{gN*u+dCnx_N*XKQ;lji!9o+k$iO* zQ5k4Ac<`}rzzjQk`#iP3_mhzY1O4;KIJdKM7Uj*;n6*oL4%IM2FxYN7M;WB95`4=5 z4*CLqNlj0iWV8_p<pHTLt>%s=*K2d9d-2CxO3$lTmvk%8PLL1PumK)(T(s156K{qJ zk0D777E&S?15D4vh!4`($|zQi)>ocy@jNbYFkmT@z9^V+n~T$a*k7xmnUm(ml{`K^ z=2>)tk&mv!CYf1jkLk8Nel|`RYqM6^Gf2>6K2saqb-%FvUDt?ZvQ;dPs-4)kT=4=> z6poLaUXlDuyEF`Mc`a|jez&?rV3~%yI9YmOG3HBt4w*|9r8ZKAxM7>GNg5zVEau^Q z1pTwqAmTe^rq<grU(jovYyguPLOmVTC=5lMQ`Dp|PYVUbgqsUwVJ>qfIcx4;(oG=4 zzbOY}E&6<-+0U~7gho2V+NZZp?pxTnTtnA83Kawt-`aY=HDl4c76z7|T}m>zo!dN? zC~QX{4@>_i<)AEJ4FgGGig*1QTR1zB4<<-uyzLUnrBKwu#7w~EkA>Hnm@uuVZ{eA+ z)b5}arhG^RXZ18Z4~4vmL4{~I^>>5R$u`bWFc5<I3V0)&omzpi?VJylP)#-vNDlLc zfUFc*Q>1TrBw0~|uMXU0J|O`Kwd?zuS(7Ji_HLrCsc`koq3pVR4|*KAx>@R-f#^^6 z-aP5BB5^ejjMR~pS(^n-$2WS)jg!tEcayhgu{dh{-uvWYSL>-eJNqibTHdhlj#^|s zhj#XoP$6eqV)P*gLn?by4J>O7nMr4Yyw7xGwH@48D>(IuE4x_-U>?t3H0+0>pw;mf zZ|^oL5}7i#kuj5TRQcj0tr;$`YlBwi_Jy(PDblcK2MWH8cos<6#b$58zMq)}hqkm_ z!_Io>Th7H{k8T8-H&{D_hOn|11Ao`OV2Lu!0LuZ{eIKXGpm$xSQ$E>CrZq!T>~lfT zbV|sD9Ddl`Y$v7Wocu&z-WERJ3ij`C0BONgO4ge0{4J&)6FJ38*0bmPDb&t}gkav2 zw}Sq6N-RY&Ov{A?V_UVx+sv1<LVEUu`~X^;F+1K5cg3{Vt;&~80bOVbUZXxbpJSdo z*(kKk?JbDn6S%(8yvW|Y>@k)nBr#Hr8y0hv=Kf)`E6PMRO}9GsU6L7%JkUoYy2|lX zT(P^wW!MD((4k{bozg<)^|(Wu;N5~ySTl;(zF6~=**rG}{bTgFwY=p@Y-)MEq`C3K zHog+m8AlmZ8&cu1t()z+>MmC?+>WdXW`MClWH@BXPZv$iwRi=&b<&c_zG9PP4})jd zOpR1OW2_*B@0UZ|K4m{p;itY|zX-0wfwOl+LFJn%*Qzin%ppAu7>9=@ZMMOaD2U|W z2-+}@>XzPR*#X!$8%dg9D4L7KLI2=b0Qmyu8AtkZxehxEw^#(~bUmwl0fn!Go(BX2 z#^Ixf<uGpN>F%90&d!A3k%$w)0*c@7LwxdRu;~F259gfAZ6L)`<`Hady-~zwB-xXJ zsM1s57ZND8#kle=p)PH)2_H!&IgEGX#X&Fe(R=RTG?Fc5)}R!6@evv%o@Tc7m2F;` zH<6nVN*_4JwXsYFiu|)EXYCk7zBOLf$h)qmP~|_c|Jh4BxMQDUFzV)9N1_6IWEIkS zp2^}47IHKBhv3PzpG$&<g8`@&-fU!kBv>@YR7cg^J$f(!W|#CLt8x3mCFa5149=|G z#G1*0yAV@7p=SuZhOH6V>UQ~F1VO36rT5KrcqI>|vB~vVwr_FB`o+jUNC7iE%|YQB zC>yi0wO}CzM!tKeZsdk=JjA7NnN5Zd%jEz<!=keokGgE0l+MYqgH5AOn+nuWk{Lsb z1h$;!%o(A>#14$ml%M6vOvi@&yC}>{1G24vvB1~JzNdXx$m)64e~Li4R$wAFMX!;@ zTA2jWp-Z`1h?0@@ANemGf4cPa($m?02%otxw>8Evx$ianEQN~jf<^K^r=P3{-1x27 z0Fs>wXMluR#Xd9E8hypB?it!~PY_~te4wDTjFbaZbwGpbJPr)f*gGoQ@Hgp}3Uc-m zm?H)J4aQo#8_+EjfDb;bpV>LugkBSj;myN9<sne-Z@@4VmwW?zpE{Z1PMk<@p}H3z zSsq0xMW5_TYmoWnY;HC9TRMJ-O!K&s9|oAEaUX`_eM!I~2&6AgpkqX?;~($%=-{jP zV}*R)#ImD4wCA8_7>wbMx!Zr``pM5yB#xv}w$o?~U!0!$Wc4Z&vf%a?^pjVX8a5}w zprudRezC}?2~<5DIdYaY1K2v$ECqDbB`X3k$&O@Cxfo*|YZ%Trw_3O^&A=j9jgPR# zdf`IUVjH+4o+23^y^juz!?@Q2GwJ(aiJKg^oQlJ+*dDrB#Q+V|5)d#rCKd;6D$+gI z>!4-j*DKN;-5cDW*0Xc3%L@<=pQG%Wm&2;l3>AM@(Lt-@&H?h$F0Cl9Q95qLTwrN1 z2-S%8%33u;JWOkZM}m_xeF`CRDXr>sH)k<&hi<PYTtDLAd>GF|poZB0-dV@Hs+^rh zbDrs>5Wyyw#N{Ym*y$AuGa8nOL@|FYFbt19-zpsTzZhvy^@XX3H;G?mYD=RJ$k#@P z|K<*9MD!A48QvGQ$o@Pxrk9LXfI3&z{lYy9?IFcW|KqA0_)-t?NbrE=5WiQ1&Wrr= z$4sN;12`tELT0){LpQM~;0Mm!&~b0r2(MHL`DLrK51<cKzTwqx9AKcLP_AL6(7OD~ z98{oXKzw~)1QZq&GM*7>Fj4jbM;8X14$m5J?U%nL^d8T14d<2_0@Y;N6@-JDKz3a~ z5<rxl)KoQ)&p=74MUyYIiPel_0oLN0m}-;G)*ZiO{?Ue@W}DXFIF^E7!cr#3(;OvH z00Nd`<OYZfyzim#5gGvzu+Saa-C}#_LjYWojUL)1b1Q*BYRu>ademl9oWf&>tewMY z0S7&8y^PCDMk^h14Cc;@W>p?332P`Hb4mCUT?a1U7L<v9%*fI@U%T?@wG1FtQ%Nti zVwo0CE9T1U4giBicB7}ud(XE*r4vI<o-mUlz~%5T;VJS(&@!%BYHVPns1&rVR=0D- z)N~s1m`o!R=6O-fj_JA;dT&pr99t49Fau75mVKYa9f0)JFABO0)o*NBq>P&&T&bpL zFNW?;D^AxWz%QjQB1-8uyjF?X#B)gE=vgL#FkyD3a3gN&Xo!(z$}Vz?2XbGKHIZL* z7SW@z42l?}N*kq=4j?Jq^Og&T-*<KCrPw1quqR1b(s{-k)_>e+=WwJP&lyH1_h*`@ z<-9B=5=Sp@_nb)<2bm986RmT2bY2f}7&!pxQHg6v3dGg_9mB(+G_+fbj50sjz(->s z1TVv6moCZrR}_A|k9sZiU*j4*MW3{?<mXHRZD@JQNTjiB&fQjK-W6?qSu#bsoj(&x z2EZ|wr_Aquauh{q-jUTE6HSyHwS@m%lJfpQXt|v#TE4pZqE)`l{_Nf<rj4~i)|ZY! zykq)Iku`G6cso3uf!2KzNC!^<IaY$dIW8eukp$0GU{1p;h#O5Fgy=l~nS+Bzkoj(6 zzx@9%fiV(-=U4JGCu5tK#R#PciC#d;??*Q+Z%g36#F2c!k!`dJlKht;Ld2~^IsgPc z{$m1f29m~Y&~#?jfd9YGKcYI31SmzDdrLQg0US>j|NE4RPQ7~pqeSc?^^?G`*OTW% zhH9%-kec;M#XwW=3wYw&fX_`b<l)sreI0nk@86n#yQ!{spA-006l-E^CwWDhy76o_ zE@B@ZO!z_a<B468%^$Uh)Wl2UTUNise=%TG#<f-8Fwei#b^2-A6;sS9X)sF2<tD9z zM^h-$lKDV_Ge1QzO0c<?K78ygg}sk=+j_v>$hSGB;w`({O@5OIk-YFY2%=m_=u;L? zPU|}5kNHM{x4wHx8$<b2g-&_GD)m^X76W?$x&TXBfPMS`?zg0$mPzuwWRy-_kfm<k zm#0<+I2Kxc8{X~Ddk9>F=H0o@U~o9Rx{^3*u1?~J`BUkGk}l@q@+@8&9>9~Ax;{uD z?4803W<C?t%vO@$3!~82E(<x@Tk)8ufr?DA)4##G&R5VYrN!DgpJ$@@-#hTBDG3!$ zUpWX^D<e-uSm3CpTR*JBiLAu-;e+DSEfWwZ`Bj%el2RkCxf;Cn;G=hv{tyv<_~N;m zG3YBtt$1?sEl87Na0_v%R6S@FXAeuB$;s@sX@Wg{sWwc2z-b+La_S*NW3+08%M&s^ zbK-M%Rq(QMC76Qo{Z{S1?EJnvTNH^6tg<Ru$Bv5Tj3DR@kJ}$U2?KgF5xC84g!p2V zGciuLxhY_xh~u*~9>_l~qoiI#fz}4K=&)=L+GfV9E(F3Q055&i$>=uPeGJB^2uQaC zWPYq-v9JTUerXMC+WI4Su7PTrYgGkFkCg#?y4)!ZuJUbzI%)Fl)B?T;8jGC_j?liY z@i@V29Ahmcu?XAkoF0f==Y*4*Cyqm#`|2k_V{o<N<zhJcksD&;%2amFq+QBcGqBGE zCSDGtXYr3*xPW#a7|uw-rBItamAST51*a%+*Vno<a|tFGJh3e<T%^nF3n~3kD}F`% zb@p)ln>h2rq^<m=jyu}>8E;ifss3<Mi~Z|6jfq-{?Ne9YQt`7rCQ1ynVmSbp&VTN7 zTg6{?j(v4~^2^Ps{XeX)wvO*i{Jx*~QWX$@hnJYzdE|IvGj!2xYu1HEaa+<2j2p-W zVA|x5)Yp5Yf!Y<>>U#3F;OZvu=`YpSR3f5wGhgm7UbsAmadsd4sFSV#*wb~<&N}W! zZ-H4F%;0=hAozzYQj)7f^IEE9(wv4{8Be#XtTm&l^+-kVQwgolGfdWVoy(*bxJ!`A zQM5S`8me8Uk-?J$qRdE?Z;Z#koFRyUS!xrZ%r+Aj?%z51;1aNO5^A6>dDQ1_=o$y> z9nY+166CtC27Ur883yTC8RVi2JyPNF7tGlU-hwlBRYP)<>BqmT1R_*0A!OO%ci_pI zuj1_YF@VV*1pEmz)#6nc{7>lHhAIegJpNzA@95%-9h^n}Z1#a?VNn88l(l~jT_wy( zxtOI(^KH<wJ*kX7u|P?e<=CJ3ELg)4Iu9Y?)*i87>236>+o?_Yr<NbV{HvFD_42O# zTkp*<x&7l>L4P)Adh#BoRs<t!O*cyyi!aPz0kCg&dP3@R`k!DJ;?7|T_UC2uT^41> zr6`}~bF8{oZR~QLDP_x6_`Qe$F^$7oXC`cLw@hx=t7RsAciaD~y|{z!aJ)N%x6YC= z{Wqmc3+<sd7~pWfx$_RKXmxjlPmE%>|9W&Uv!|2}Rrv0ePOtD?)rE2n@nYqheI-=( z+7zYTnd@%7hQ-TR5#aBGd0iBO))|4ee$v2%Xm$8Rj<V2Lh%n2&ab?glrn_yvB}as^ zk_ZGPlS8{5Sr;WbaO3i0fC=Dzp|B$n)Gi9USNz($7|0s=kq%t@{m6}kJMLUEHvuCE znPsL($QT2^CDuhK*gloKM}0?~Qo&m?Pg{z2M8>tiyUqn$sv7T%RDE+)h9u#>K9Gj0 zdG}bxs2&%)#5>Gs;SK&~y}L6QmsD&34~LY9(<BYdg#jgK?+tB{9%&q?j&+$MZPG0C zq+)l$8c{g~I-y5fY(7wF`}9{7GPOgmbr?oqPJ|HLLJe;O0eG;|N<d*(2`+-PC8e@_ zlSx4Q!i7hy8Ec}?@~qIM$(B>F&;9;^J*zlks`Ew|l2wk$%z+|P^U0ZHq1%^enz1e| z7Ilh|S6*Zpic!$ZUG5mDLsz;hL7QjY&ns$REMSi$DI%brvl|3Hbg^!1v|_CS#~uck z*gXCiVW=DHuLn~s1iI5|xajew)1me$fPJ6qaBjGc7s?Oh#7KWTc*=)DF}jt60l<@J zAzao=!HZeVjf#VExb9fKm@`o2Lu-q<XEn2zMNjtT$3y|v=?0?CjCp4g05YDl<cJ>5 z73uLgf<+B)r&KU4k#y*7&q10JrZy&l5q5CMRlx-VBo+ol;G}jZ6K>OI22>-$7<|(E z#2mjS1Bj65JztdnLnnt=5HsG*$JA@BcP3T?gbFGPr~n>GlvxmSutWR=xnFX7;H_-@ z^rJR-d0e_SkA+Lm#D*$>9nR7m;qMNE-J*eDnW}1AB~sB4g9wEf<-(W~^N~}`8)oWB z9B%uHVGNK1xC2W%#;LPD-5IXOWJONMf=yTPUo^MBCf95+_pV`*^YINc)9OB@Zi+(% zZ?Iv4UW+v=0H7qHLDy>3NQeBn2aHMI$sC83O<EP2(dp-NHr5I6-ko!grx5rD>J<zU zQh7&-0LKMJT1(%iRl)1bIa9gu6}Bw%2jWvY)D40$Vp+#Z$F*cZFa%**+FuYDkB8y5 zD-bJhvuW&P&A4-JYbVhONIAXuC?IT!lY{d>Lt;Q@*(AJ{($x&N?JLgDP0%lnhN4?m zo13*fLDbhQ7XuTfG0m2D;yeWi4JL3*#0fFnYHRDf4+6GredWRf^a=;+w66Aq0*i2I z@|a(9-*E`|L#nnc8>obyBBYhv3Jj_F_xe=~R|kz^;tQk@!1bM2yI8{n&zSDf%DACd zJhNjKvnOG(dUAc7^>*(i`c-W}OQ*VeTAB=du)gvk`dnvU1gf=q>|((gwg{@RItu94 zpUbl|Q7#k)>H^;ubR@J{g}kG_UKX)Hy-ThxXTOb9PyX4i-IZu?cWM2ip$D7dzH8L< zcT57%Da<sD!y#Vkqy^fCbHJX1quJ~}sY1h87JvK@iagr9m`T#K7I(G~QKog`A&I6i zVZ%)@Gg2G@jK!Nd*0F!Jjx$+aEm-%z^$sprS=Fy*!82G`dNcrDDzms3OO5mY0PeFG z$Bbb7(R#CVxwpUc_7-kzy#^}5#<wO^AsQT<Pulg-LpV|iG|5C5WwjBgDNjA~P2R;q zbKG$D;Gk4nR?G)b+KM~JZ(>pG@yV|~NHx_nQ%rCbr=vv7>085_BDL_LZ)V!!qa%lr zc6Hm>;yw?AtMBTA>y+uhx`(n(+#YL9*<h+sp|L*F1MJb>aByMx^2p3A?7zV@HA)79 z(Tr+m6-9WYPd!wjg~<01{(i{K)1kL`Exq%>+n^fx2T80=qG{a3=Mrxfou1p)rhm@Z zZlZSekR$p=Cqc`qPOW$@6zoDxF;X%g6Giuv%M)3P)%ML7Meb&5I=5JF48zO?NcG4m zO*?NLF;xH~K-|B5HFOYsFPkBQt-#pgO8Lk8L*C)%T)7#lpJiIh8iAm}-Yf)PwD=ea zfXdg(pz4Z$4|#MKcAQB4DSb^($kx^+dNHDW4W7Z4b~wXdpM<B>rD{2Z{EEIRqdj;z zrIN(#aw~IZS-W2UGk3#a^XR&EU1WET=z2N^X`XD^{%+frE@`JcEt0fXQ@}eDcys_O zCo$Dwv&v7=5W2{LMyi3T9Wm6VqK8p-a0{o|C(s%Gd2udCgQo~bn8<2OXl0s>*O@d$ z)!xrI^ue++fdk*Lxl);%2Gj-UJ#N1H8IY_mo^Is4P}db)qO{m?xYlcR^wTBI^#L#p z`U{nMfCpc%e?Rtoi`z=A!Xo5ES<iKuvfj+9SLkr3st=VJ^vS(7IXswOLyqAh!Ks@? zyas;f(}VDg&QHo=(y@AZ1(YH$Il~xI-{TEVUkRj|0^ZJg-Q=h6G-+&IL#ZlRq2OI^ z``_=~b?z?Pw0`=5fyCEGFK6LFX}!ey8w9vSPE3~R0>MQvL_Dmb(NLWSf4=yb3Cl(7 zWtHTxeQxI;47wzBF#wy3&!<u?G?>OT17=0xtD&d(=NS*5q;?cPa{PdAg|j&h%Z2{X zC=Y#S(q|^#@;W8rTod}#NhzQ>G72lK?OIj(89BTg(91M>F)Ph9r%eGiA8*|5<x)!w zO<%4cvk=nlbfS2SJp(j=F$W%}lY6&mF7f5RMBK;bX{X$qkOvkj#T8&Rgg*jmQV&&| zkzTtQn8j*Jo^0?$U*<q75AIJAflF%zYjH{r@MK-+T!ZW*BN?upUiNDyomr|PpaZM; zqPGx%TMCzT|Fcat0K(cDm4!%iZIUhhM_in61e5fwx&Kx1O6$XLgNr26JtsnDWP$ol zB40pzSKr7ox{&sddz#yPIi&tp3?k-6S=$rt>Km2^H{N4hHqCLCWvZuYsO3D>LT*S2 zZRewp$+#!_GyKZT!>bEFL%m3iY<^;8HXy%98RF#?!vn(HJ_7Grm!}rwjVn+z7Gg>* z%#WDE1_R5wzGHE4`@xwDu{Sr`yVj1X0?Mkz6V@4x=!|%dMX-oBWX;i34NcN^kCEsn zyd7v^c6XbU=N($rP2w}QftmK??n4O)L>Z*m9&&UZD@=DA#C5;`aIYjmYh9;^&4qwv zV?W6X;PLS%6#^S0e0|op+<AuHxh}=yI1GQY+&;-L=@Bie?~OkNN`GQXX<Pa}%l`2b zJ5R(w|KnSlMg71#F^YrFn9x8#smD9if4wJXP1VlNVXn|jto4R%17Z+B^vh?R3U@*7 z-d@OCqimtG2O&;esa`WmFpDXd^m#I?JJE&(lB?XWx##h#rK~8rWA(!RS9~70;v&O5 zoR~?VhE5*k{@SvB^<lKcnM<zWf{VeF(%~&-gvQP)TQ2OSdp^|&JnEl`Hy|WvvZiXT z!i^{;L~fmdRy6OsD%z0qC+$R_hLI&NdkC*?;PQELrs_xVs|Nf4Nn1K{^RI4WZtJjN z>0MKaJrqN|v*qa#d!Z`3Tg{|@xyGUe4N~|*bu>9HR~%*9Q0$Bl{iNF68Q0-2NyRfL z!>-vzVNqjFXni!bYNY^jLQBa)=*}02bc=USmTY+?IGiY6QKHpSu?W^8rN{R?v-Bum z7;Ao@s$j8oA!0rQALBMgkKsGvs}zb}x`}+BerUoaRUS`!pO{loX?+rWS2L;AyVnGp z@P*j)m>bkxhsJ6JuO$4I&V$;{s1q$S0~E>`I8Xq5Nhe{LT-K`dLtT2w)(AOR|D$^- zAs$xtmGvQVe65UUa*e9P(K$0B=t`axFZ^}ygKyqZ0{8#=0pK#S6abs<U_w~|ezb{E zgu_<@0LfeofcXIQyPzPe*`4#`oAxH3=nbe~hbWOLT{{36P};vJMt=anpcP6#w9!&O z_vA-wSa0ASzkjTE2~GFMcwpGPR`P85G3J?i#3w#zi0G#MY}A!wktTA9w^?v(0cIy% zL(Ke4D^+#Ic7Q<5meY-1=KyIP30xR7q_}*ltjuq@K@ScA0=uQPwf*x;Yf+p}@l*9j z%a?)W6#ttF)AY-{=S^0O?vVqrlz5@TKw!3bE9pu{20h7JEjMeK0cp6&EdX&H5lrbk zlPD?PqZ_%*KBfi&I1C6PFX`rl=mivhp(=yH&wH&Nx<sBLwcCx>LwsBQpc>jkwoF-; zNK;r_w_4iFZ6SIApLlg27B)rtd(XhWJ59$E&4`cBswh{wZQIK0dE@jnR`ss&0R6mp zJx0S^IS+7a;k$d*)a2#o6&Ts)5Cahx^~DkbXQV;L+Pc-lX8vC5$^}&46f&TE-fo$w zliJe<4zHz!4~dBaLwktbTxvg@q03wucRwTD@7_~h{2#C85Cep5gB)7s{CNa!+qUvR zhlk_h69U=y{0R3IS2Ck$Gh~RhfxUHWA41x$B&DRy(M(s@=B3OP4NNeMZTTmy%4W^` zL`>4GmMn4xO-WA*3QVGql8d?-EOVs)xmj_09p+uv{Bz5&iEOuxf|HqgmsVv=J6~zo zac!F;=|wT-b02zyo{-thPA|)Q+J66usL&b*%fbADi1JDGF?`79lB2$LJ?hmN#1<r< zoI3oR4yEH^)LD&RF&~#M<8uG)KIG;5`bDdR57<`cKgtex#N%mW!iC$-C7T4I<F5l( z$gSC_iz5z$YF9!R0Fd0-0E_}qEvqq%h`Q(>NIF(Zr|ywe*3{A*#r)Q|&HJieDd>W0 zf@|abj-ih+M=@GqPfKuZ)2i$;MSe|_)~lvdR<%dku(C?HKrn;Zbds@i39(kG^%_7( z$+HDB1pWmpCDS8SgFJxigBv@fF;m+psL>zF2wf>w7hD$~a14EnJ+>Z_#jyMlQWs;0 z&g6NI#|vs2wa)L~zJ34xrl}@UxkoxRG{e7;pSvb6KcKEKgw#1gj32oQHu6mYOU)6u zB3QILaT(FwGXd$0Fb9m8_+-<*-zUf0vyr<u6RrPmH^0O2&q-xJu1_}rI|1lE1b`y| z99n`#RVh#>1?}DA5IJK;$ISUznme*u_eVzD)rei+G0Vwv{TKlD1As#!-T`2+u%WCf zft7yOa4p+%0W?5|Ufsd`KUG3dO=y4L%h}3qi`OOSGJQT;B*(=j+dpRcB<eH)-btHb zt-H_g=8&v-?H{^`k9MpkX1(3N`G22?Ka{jB^Q-w8mKKLWdHY32(&z4EV)A%O&X$3S zI3_mEfJ<w{HsDOSG)XWiLQY<i@fV5B!KPtN92bd@`D3VkGs`4u8h4u0odE#EV~E}Z zUI3sAruyiTq`JFRQ9-W}phyum&DWn#-IH0=SK%acQWD-Z5rD%0<gqL)>&)3XJSVTa z&Ov|gR#g?ekEvlLXUIr0k~BBy#KMh<wY5(Pkv9M^CZS9uk%m(8(&GHd<ltzQ`Jq~A zGSZ(}(u`p!rz)e`XGHW4u_U@8l4AM~CUEM$S9@07@y>=_SM8vs)22Uk`iIv07)pqh z#lOJq=a8F9o0^79TARED@j3fuBtvmo!d^?)(XBMX;hp1MO_PuijX%3M5wdXIYP1Q} zi=wKn+TI5Cz(lrOo)C}}OJ^it{52)o4d+S;?&mM4LHR=@FqRl!w6b<+{tFB^;0wSx z2H?8}fC?zrx96Fq*G=%V=0>kgLf4jQHK*zDcmTEnkS&ryv#q|V@W9$k&N{W^hJuut z$#m3|Gcvq0V&$>2EPg(($C*yCQGfqyA&V3lJj;lroj7)TY<ZkIrUmz6t7(qt<|Iy* zL{TRammk-B{M0--gio~Q){cZOF64=ie%%YK0suEZmz&3ZfTVp_?zX%r_uacYIg}e; z4$f`o#+fL>=Y=V$_M?>P0b%HZpFawx-h8Oc5WI{iOPJ#f$q9)|i%n$|GMq&g;7Jxn za=i*!nXJq(!<d?CJ1VA$eNy46gz0fpJ1e;)*U*cFFE}cecfV8)M5OIzQZ9%QkRpi< z(NI7hc)c*H1XChmf`}yF_D(`iN}SpnN)Q%tQ_$bBuJ9@EumLa*00e*{mTYntrpv2| zv;Wn4yVm6I-&L5rs)S<gD%J3>&dz_cX^-q^S#)U_LLwLN48;lDDm1LM_MPeKSxeXz zhBGo4YlX5?ru$L!3|eVe9_qM_c6RSx<iddj*2sV=g!+isp>c^sX^6)!>&8_48Ij)I zy?m7&gOzP&0f}b^XTIX(i5@?#9aZ+_j8i1og!XLVtkqRGv;T^BG11YBdR*6U{NFs~ zzHLtqR6>EhJ&7iJM}0SWt)M&uUR}g>a#t*8(toY;{`s+AReQRh(Jx#DJ5xNL+3qM~ zWHGX1R53{o;qMV;2@4BD-{~rUfSaggw6ZE0i<y|fUi~<mB{L{BBrP@87TeBg^Vx(4 zU?o`po>UQZ^<u0#&(XYmf<T!~RPXs0Sw%jVR$NalgAVQ>EZN;x2#<+vU&s~z?zfkF zT>`=al{p+z?A@nvZRRCx=~Z+w+e;oENo%T58lqLoB!vSW*Q0npM>Wkl7V6W!k7_Y$ z-@Q=VF^*{tX#50C4!}A9<|JV?S*-;C7{M>oU4EUVKGBdjJijehcz(M^Pf<@p)0Pn$ zqDOTzkg?lgF8E)|AGnw2OizpF6W#OB>w0J68UK3gvL6p(oO{&?$xzJC&oiLtsSclW zndOFb^HlB@izbtYkngZjhu<g%b8wRWG5Q7GYSgdvu<UX-_e3Ckiu;PBg}V}Fxkb#_ z{WD;vmoz1l0N!3l`0I+KLA;~E(g_V6QIxuS7aOKs^AKf5nmmi}VU~j0;XJ$B9MYJm zczuf4k_yC8hi)~MH7MVn8B8G$6?>?bi8Oa<+NOq_)|(<CR&3k++tEX(b~Sn)WDlQY zw~A7Rjq_6uM}%z&%|WJ9dRn9GrS>w(2vy@f;g;c+iJHVG_b@50@`+Ll8^RmISNiRH zK0CKrZmYkc-^{BsT+n>>^F66sU(}-Tpfjba<7y@C#qA-xLUwxo;CWrT3$fe3dt(nN zN%qTMrE|(@J1m7g@5|L%r*L=A$Q<9&uR%McyG2oR`AHn9jx?}0cR9&9pY7r1|At9* zfHUM!Rug=8deA&dnmu_f)nHY@fUgdHp0SL(f4~O43!TM1mtM|xj@p~o|H|qL#}t5g z^aJo~R353}iMA-r>+h)^KH3r#HOgMRbZ|D}7hRFS<!eoy$P&sRtAv}%OOr*&!t>|_ zv=%&lN%9S4yvxh;FOA~kqWgwe(9}qEjQ$<tW=7)XzbY*wu*CSlXt6*WTqX}t1}#>Y z*8L)Sl?ffftOd#2dPCWP!F56U3|+doUDQ6FQzp<Z?l5FjeC8Z%3LXhC!BVh(C48kE z`>Hu|j6V}mMI@c3W5YFVrOnNgjVSE%m$S`jbJ{+rg?#OmRf>Yhg*3JyB1uKE1<Iak za#g(ioZsJzNcu|4ytHiGX$3LuH>Ik*ghfj33QkYAWdzNVg}=(oKwdCAXqG)ABYlo& zU(kk8Xv2q>Jg39cIT=1Xo(iXY^LEr)W6`BQv1e?rHe*>?{tDLxVDREs09FBT4oI~8 zqX4W1;B8svP9$R489&gR3Baix(2m>>hQgjlT+^uq=^Zy=MZbQwBj%9$_(~7C*WV*w zA_C1B=JbHhfZ6N)*743xjH%4hXEX&h2QE`KV~aTl$Jv$fB8$+1b_&R+=z_*;^Liz` z9}Jp@remeaKL6gyITn)1-POXHW=0k>v#KhEooB%WAqZ?N<kOG)jxBn9uKyL*R3caj zh#WxhOtf}_z-a)qK8auw{mP|%qN{g$+0<vvMseUs2o2x$%=poVW9C|=QNkmWk;AB| z&8BA3{xpes-u}Q;jdqM>fmL54ru_e9k7w9hFzUp_@qXA_F6A&Oe$iyz1ugz7yV3|* zHpEW>PqmAL^<J|?Zz<SR{>uCFs)bgd%#=s<R_)SfOot5Z=+Ix|?p-AMcV$ah3VInj z#akJI`DBfm{sNOP6h(TVyDv*1J+P9C7sP{3vNEkBgpLV;PTx*Lrub_NZVXzqz#{kX z(lXN=eqDZ@6V~g|u`4w*b;ngEctNrZDf4Oy=6sGZWcqfCyWaeDv{SQbSqa|BEDb9= zBblXU#U;?Q=-KU#1XQJWwn)EPNzF=4#RLSKFp0@5Mj$ndn(gy}$ARbbR##wv38qK; z7P05Ha?IH)y>k*+SQMNR6`54j7(<n)y_Hc#jD%+Ns<Zb|IG0;zi~IYG*&F-p^CW~& zbjpU8-^QJ%=gcKmf}7)(`k3-ymF3qVQA~Hs<t4eFbudP0%%xrj30*-0!CL{%J<!c` zG{TJ}2hVYT^TU;<L=I0_vl0+aObbFjTk1tt15z;pe|eghCP2&A^alMK^-%3#zyl3I zi<z{nwr<r;s*3A@1mHVL@#KdO+-Zxk_PKtetD(_>G5c<P9lP{GEc|<IPrt~hQ*ZUd zbG?XMqv+Y=z)XJ?y^>yZwKE$d%oV&ugmM%dh20OI#yj+_#H0)_WH_1aiWa=w|Nj@O zg~~*ZnToUdbFcyt!fLC73JUhT)`I(r6tIi4V;MW^hyfzD!`*z*(1G+$qx_f*%NJ*h z&u>5Mw`cN`c{yTLXd%6rK1;J0BBv;*wxXT{kxpGw{F8P~fk29uVKgfg4GkZFYuf<v z3In*eTD)}@PV(ug8+w3~9sXH4arzu>d>K>R8{%s*331ub#2cdZ;%rcna1wwM030*4 zHruqP->7>EX>J$7e_yVST{aL_x7>(!41m)x++8f>_b8fsyAE^9dl_fLfDL*NMn^NO zob4txopi(nnT}KANB&O0Zo($uxqsu~H0UfB^vEkQ>}jZ-WF6Q9`!*OtA>Sn^(ZvM- zemr&`E|8=eu%MozO+?>*4I|!dw#R4T(~+-u0XO^iCzW`wDbtG?WsG#MSN!<LlbiiY z{1=pLyvK&NL(zw<Q4cssHle`_5HB+TFE+Q~8|M)fLtEq->aLI$RiFzx2n&<!OGK*z zu($@GV)p(!?I390Ru>PnT0mfj?&wmaey)AfJ=8h@G+;Rcd}xrROCtAcwUJ<Zo7VQp z^rKDowe{(vw=s|U-qS<PMrDfcwX<(U>*&#)TZ`OpEL>5AjLGR*GMfwkl<-rE^wT^E z>~u$FTd+rf2a2xQ+o!O^>P<P*luo3k()}Y^R2f_)E}A3@C?Jv5aGksFo;cr=2gKZ^ z2m!jQ+hy^2g;zZ0M)DU%hhRfVM1DJd9Oa$Cs46s*4lavWCN`6$`iw~pd@a>KMnZ7M z0C1*p>Ty`;l~tr-bLhLV0zs|ESAR#E$l`NMP&wFUHlm?+<%33Vr?)dw6QwbVrv-eY zThj$n@Bf*xD`5)&5RdPjqSq$Ghsy^DtO_P1?^&A8%cq!xQJRQk@51L))z6Fo9Pf(7 zVcBdlTFQb=ZnsW_qE79q>#5I2tUw6cwpHg~_T09$xw#ohVY(P?0PBAVFZ%PSJ30XO z`RW4QfTYMdQ8@fgqPv@pujDDuPCsJWm<0o9zkI(0ZM=q=KTIiys(2zERE3lS={DZT z1Z|#QvEM*M9_GXYvJ;XAA~Fvjt((oAxD$^{APc3j4o);9;+R+rJGxWiyJLjN2P&=p zjuUq8JE<Hjv5i^CDvVB^){L4s3!z2UnmPO0GxcLBsRV*z0>4IWA-K3Feft{5Ypl!= zn?*6&X<^$Zrt?`kkb;pVZol%kJ>KC+kr)Us{_O8^|K~faT^7a7EiXOJ44l$YUuQCB z1_om=vhY92jh+Fsiv@)Oh05;yF!>;-PShhR5fv-c#lp2uZ}J4CvU%y>A4^{3i&E3_ zpHh}a842K{JliRm^;n(#s9BG5P@1XW|2H{aWB;)xTetiwI&k&F5Aq&o`^LBlT-fgm z<fvb6QrYj9io#2@^tda^56M^D`WgKes2&5r5CCI2nN$^3ownALl18zS_8v6<4Few~ znL~M0<27YR&SQkl_^}_L+?LP95-Ci5`EpZcVRUk|#w>J*Y8q|)e{ShySHctkE|nZJ z$NrD`)2gNmBuWhx1YbJ6x_)yxsImByQ2Pq|s!z`?zdKmncbOyPOBo?MxEv?J=VCKL z#y&g_Qv^73AJ#cxqpKWZlPFpntzkNu&gaU^{WepCCn6Y!`yAN%{O`Udw{KUhc5Q?m z8~F1=qn<j)_F0lCe--KO2gXD>BU@b0Y?v&v@LlYp-w)B2ZMB@Tn`6$K>aUbU4$7gr zx?PHsHKV}R<#dm&ihfakGyl<e@UVc9zxNS@)4t((%p$s#yAfuw$YC*HWVNn2#X8RF zPMkYUy@WQ0V9di3?s+x09C4?O0C4zZ-?#9v-x(4T(YGZrF*5uH>AdI8`3)qL1m$ua zWQMZ{{x<N}u9lNWvqTRlcr$m3zh)GH1Y%rWlaW8}b;d_W7ZUfc=+${ABQ=QL`%<K= zUPp<V<Sd|Qg)Z72eNj!Z>YT5AN;gY+|D|=O%5Ge}Ki#7(lTXm>0Enjnuo***v_`!d zGTS`AeGxDyo!8f^rGE4U2z!{^8Ajs8xVqUwRIF^jCe5L7=bgxbB{p)Mt`eKOTw5S! zXrc^o-_Bxjfv;R6*K(X3XCo;FSLx#P;K~-Rt7!_vMdJTl#RcLcr({kc*Vc;?Co6=R zhxeF7qLr_qx)qi7X#^==mIAbRnU!olWxsMw4J8!FP{(`Tyxm(~!D*f{g%w$6CUBBo zlvSA{LPi&2cfI}fgDU6t9ss5YuI|ao@n)p*K=aVx+?>f7G(HBsYfoWON?6Mz4m>4{ zO!h9kMOF387*G>usD_&P$mhm8R8d0DXRNLl(~ey{P-x-b6J4k;&!Yz`+rw^#^QM`F z|8_RdF|PP}rOT)WmK0Nh6k<3TMTlisM7QBFF*Q~QIq1EyNo;Ovr3vkkclTn*j9ppp z5L-mi+9*x0&sZ!Dx%Dr}DdmbxUG~{NnV(1tkM>`GN!J7lrKs&4iNejDH1a6F-`t&P z>z?Exf~k%|)3H4RtVsI+aFKZ|Q;73OlQruK5+pVtw+SUOSUQT<SXehfH?G8Oa^lh` z6D2|s#q&$5<@St*{KKACMH<C+=?b4#WussGwbi&Lwp)7?ng5JOhYJg)j3^dS)!rTQ zxLR%_6&0RbyQYWz>^75KF@uy!Pw^HAMh>sQC^H^lKeUM){OtmYT+x=zw6i8Al;*UA zCy(F?zr40*Ur=>%Nt798T_-E}%VpO*g7yajd>$%aG<Kkx*IR!W*;{DbrHX((d+y(} z8B7_%yj(v|pA<$H&S5F!>B+{b-4Q2q_h$eOM~6!Z-uDrd(_YwwtYos1gd5L24^639 zuLWh-$iM!5u9iPa$W*@1Cf%S9{1{fcUgu{G&C6W`9`=<mPT_$)OQgpf_g+SIC+M)_ z7#-C@SjISxrboRJ{^Qrxp9$E*v{J$=dOc<(M*r=vp<!F>W4;sa(3jE=VG=G~etDyW zU4iidVZlH7e4LSi{6U}(Ny^{(X7H_tZ~0LE|MI)Y-LJm+?k=~!hx+)OdncnkzCV1w zypy}2j>G;(?Z3lEu1*9ref{Y#Ivy0h*_OPYV~FEm5|gCp=m;SHWfq@`6*(#U+?IJ? zrtwc8tSWvS(r^Gh%x-9S);)CqmJJ|_ITI$X>-1nG1>+`i!oXDZ(rMGagJvr?dD@P? z`_tnW2EZZ!iVyCguRp?RaN3<0ygjp%g31`c$geZ;^9@0F8X9OcqYtlpiY;!L0{Vw4 z<8A><*>{RdMm)<>nct7_nD})@vBGB*00{I10AHG>A>Zcb96?cMmX8!Eeh22rs#mZ1 zT!3^h)b-;hWsveCud}PQ?BNstskVmG)I<!E56T!xK}o?UUU{>UaT?=wXtolFMNyGz zbrQ#sK)L{BG-aqRb9gs-y3=!0tJHVKIBf${m2*Nilwly)xWs9p@HC2=l5}_O^SvuZ z5ZKzH;c9&gmTo>gI5j}S6_9f60IYQZz(`3Vt8SmNmPY?<5HMieQ;)?qG^ok6(X!2s zn+>$W#bG4QF(0SdY_X`6+^BUE!T^jzK=9Pb763r*007Q>xx9Q3?p6n&eLC^A<9*ZD zE~UA3U`tc^?VY59!s#l1yaoa(XMq&;L(ySAcx}KUYa}5W;Yo6k9fiJ5vV-CX(gbU? z5=B4;;TA$X-_d&_9=}!PW|u|uyQVZ!77+QUnG+_KVHR!>Wq#W9_zfvTDU`lks4^cZ z`}}3|jv6&g%3Uky1s+UUyF>N}0Fadccs6ahQ|cag{58CeRL6#1T)Z}!gRoyKI2Kxv z`h$-D4l}c`D3uW*1AncBFtpy<%ob)+nVsECyUWiuOjDERMvYLBKQ}*h>!*=c>G{W= z!3oM6=E+fZRxWo&L=o;Iij^GM+V<oqKIQNb)8*o$yUdbR7J)AQmBkjMos+Ra#HSv} zPf6DbHF;;Tzq4hV8S2pf!9*mcr6gozhj3FLvgK5i(6cCJKXp%1)Je=`mwS=^n3ejc zpK6;|vX2lJvt^+W{@gqAOjw=i_@ZVsY*Cq+Sl^N&3jP<D#WMVbu}B5ZsEjTv<U=lF zXg31@GXbcaSqVVLT`#a5L<bfxSryML-h-2JDrVz8qI87LLXj1Zg%-${7hi%uQFvT& zlW%r&9WSBi*GpA?;8B-l@zgxELIO+W{{)ou71l8o<dO1-x=>wMkS)kI8-T+u0BCpZ z%H>|m&VnP@Y@Ew)zlsbo6s}4n{^cXQTuMcn>F8>28z-Ij;tZDLhP8w^CE8WmBI{IJ zMMh?(SBHSFF7wBw@{-~y@{nv=7OhU0?4d-x%VEf)<k1`p*IZe4Z5R<jOtng3Q46H7 zO}RAqr(b%3*Vp*x=vJ;0$tb1XHB37vgZKPQZBTBZos>)!F<xa3XDDJRCApe2T!$Po z3erY5Jc`nKEATNS9!vbI&I_rFUNRbV#;PMl55Az>&3zVV=s3B}_bE^B*uV9Gua;QN zGp}<u{D1&bLMpM|76Vgw|M~SmOv^cnw19>Hue51q?H_+QGnpx9UmD>Db1BF&53N(E z#Q-b@fNWoVT~=g@lyOP*u!B1=M{zQZbfeWuoN<uk?{u=IHz*4wiP6{^Ke&mY|J}cO z1=c+<vYHgzToNdVVpu;(h_`-RS&w=V8zwM7(_r^S{jWFrSN%@V!;Q-YXM~=!n@Y;4 zcQ`C_d0?!|lc}1X9#0v*y><24ZM@7=kb(zN({@|cl&+fCmb735Vtqk2vV4p~@;k|u z9;$TPVW-ds(<Bx8L~Q?N&apYHk*%4sQ%UR@>1<%!6h0`+{)ghrR|b-7Ed`qpHEZVX zp1xikMcqXT$-@|S{?=~p7>Ym7aVdhn0lj%WUoH98Sb*K{?RiEDWhaQC!?*?Y$va3* z?UkF%=JA?{{!5=Uy+FY)`mR|#R{I%>PHY;wc3h;)KToj%R=pu^QFlIz*Vxmh=P1NQ z@zA2tC!d%pYw*MO4F%^Z7_rZtj{xBJfB|oi*qbSktomN~o*}Q!l{Ls+F57#awY@)0 zS+ZP4<GEK(SjiKvDv8TA7##_b%Z+V)?7N-;L4Q`)KQl{6O($!W0a!2q<1!BfD%iVc zQ|~Jb-8LqZRiR6c{k?2{v?E9Mn`1sdk{{$jqltxX1a~X|i_khlIL{X_!*Q|2i_ll8 z`3pCt5q5gk*5uU&pS4<=d}K8Y@oB362YL6mZiV`SFy5DCzzBzc^k)SXLSLPNn@k!V zkzYgfNY=?s(P+Pv*39u0uHt|HQ55&g(~Z*31GL(-sm2EB;O^*MzmP{ND2frepV4dK z^%P`8w4kz0S%QdCAjx^Zd`glQzx1-V<!SpoFEu@{YAI_~zZ3o(vEulPg%*-6bISNs z!mTW{nY+59nJyY1mzF<0mZ&NxBF3+HG`VR{6~Rxc=?bXLO^xw?vsJ`hTH3;z@0aTL zkthy>dS}=H=mg=|C9M|R?GSO%k4J!~cdVmLaRkRnwJJZr6pAn&t^%9f0`uOpKeN^d zdZ;=P_vw7=C3nEH*WEq`2H3$|w^Ku*u(d@if^@*TKDTCKJ(#Uz%sG&~?yJ7vqt?T* zAn`v@d>iCQe77JNN+?lS0B8Uf!g=sBksB0z8+??XaEd3LN@|Fy0v<jITEAJ@*Sn!9 ze#O1cJ6J2kw8a3h5s&kbMt-ls&lM;<FNVv$Y;&tI*HayVb-ydxbGW%Yne=0b9?4EG zqlL`=F2pB8Dzowy{*%LN$D!%&!u0T?&-xym_w&<^uaQJKpC1*;<ICklzzlNBlP)eu zRQ)L>g;g08=4;tuc42<|^5^e`I}He~&~kSod)jz$K|)XnW%Vll3cRgR9@4XS+Tm`Z zqm9)Ui0z|>{gPb`fW#9ab7-CDI|U7FH#`7Dz=0Mzfxt3iJV$%Om*+^jw+1D)$Y~1t z^YGZ+6ooO(NKvHy%BDSbszzgIQDXBgz?_zk8zSZ$B=d^UlEv~-$Hby-qLTF?F-!c? z&@_$Tax?z!ikFD4vyJQ|z<)+85oA3DUFRp{FUq}EX+qQ1{8}(pD{zU-w(&*DkuY@R z&y6GYgY&$G{6*PUh&Bvm?JxPGxdIo-Z5yAL9#hb@^Wzr%Hdv57Jw0<bLHr_oMpCqt zKR3VqGGUy1Zbm$mnldg`B+Aqt7{aTW%RCwta6!WROK_^d@-8yaQmNG?-db->j=DNK zLU4L&g#(629*5Ewxh+(9SShX|w}_C*U&sMi2Di;AOD;pfmjQtERQ`dn!E4~QKXFQ~ zw@3Y)J+L+ggs19XoE2URw|>Q`JS)H|{+z&bJ1Q2-hUCE|RRoVR-NL)SuhHyCD@UO? z`t*|G=WhP{2Y7e`Z8y<=QD^{`0ugM~-iH26?B>RXT05EM_d@>75C0w#vi5G5<J29M z8Wc?F>AAJ5*Gfo+yMMoXyX^X3&jRLoLHJwcBt2X&cW9n5&FC}oel<rvkARQ}^RJ=4 zz_?z};YA4&#-*iF*BphCfC0>3eecU~Ru4v5Jz!80kB8$<a#2kCUODGVVPuQf(lwYN zgnw4Yk&njp&`|%c20yWEqX2@6wPdMoWNJ`2{}FvyUGCiUFP}qsA^6|62T4Bm<#i6d zqW65^d~KQQE`-B9h|+c_n-I%_yxbZz{HkAqJSIZF=u?PZvh4xx{ACqgD38Y@x<+yk zBxAc5E`ooL{<_Ew%0L@@N;Lb8s9k%Gulfg3J7OsZwIxu)FZ+bRON>z|)2C^r8g!9R zK@VoAL<oXJ7WrJo+gph0?rl&^{PeX-<mTb#4qP(lN^dajqo#+_(Q~-TXmo48dO4ry zC-I(~#-LKVc&~8m!X%^$N`>qLU>gUuk*7g6FqT*GbW~sWA0V3vY#+^Q4;m~cO!-5C z>O|kP!&w;79a`o}SYeE?M&<ea_bD;>1J-pB5dgg)iuLMwD~TlpUKjqH%=!iX{C)|U z^$+;-!0*WI$H}TgAN~k;^GIakUERWI$WKx(aV{<{-_$V?iMSo!bL;)$-ujax!qeES zh<?H?_T|+u9d?Ya4u@suyEz%TxaC|j-sdKPhf0wD=q_sXAq+YtOW;v3)yB?nNFgld zkt6(#1(~ddr%W%4A@!p?!8eY<c=x5oC&Dv{Hjv&>SxV8zG;|l#O-`Uo_rRRy0&{`0 zpdc8Tg7mdWsmR@hm&TSg|F5lV)s<&41#DWSCmM#PQ^lePKM!B`gu!L{zsI*3jdBFu z6^k7w03rzmShxzXb*~_vf1NFvp~f0$i5ko23)XAn3d;<Z*1)zvVSC_0#S(JbhtT_# zhcUUsr@FrN^F8TQlo&-}`%pA5@Wx*9D05%^fRwm&VY_O(lSqItjt#yKm;AF_-ZFeU zBY3zAxESNcP0EA|%g1K<m`l>JaVsc6jkBB_Xpm`#oQVSsHbSGxohiDCW2@=zpXD6A z@;)+JR|#|w$d-xGj1u^#lXC_yYVrHcr;r-lr64|5qapBCqygE%SrENSDZ9A%7s*kQ zG|oB!o=9cv+EdJ1wVO9%PWa;`A1?r|0Kii@88?`79hq4=bHQ9z89P`Tp3mCj)n|*; zdN0jg23n9}ujts;W1l;q7df!hFgdKW=A2n$0xu=S!23f^$)j)M%K!47eP@FYPJ^>$ zV`pc50PNx~Y|H;Rz)L&W*5)+pzSdtSe3aZXGL?I)w#)URcmE?TKjPB}2`C^`2(C(v zZX^zNM{b8;yI#yT1X~5a#c!<W{<odJGi_U*%-tS%Z`lcVfj!HXEl-y3Q-YU%ZKr1E ztb<#7hpN)d5o-&_YXAOi6x%g>+b{EeP*)}SH`>Eg7Q7-*TqHh`0U;;b<#DdL@vHiR zw{kp>^E(+2>e1~@l-&?Rg2JuCe9*y=(&g|SiAjMF@m-szj)GM(Qoi~~%gpw~;qHqU zpq{;!`xCXcK8!HO9{Lm^GqA!;Is?QK<?C*7#Z3}q?$|d3YN_;NLYxEQEc6|f^SAi( zWYkp3I3&3-amQcAq}JV<t^U37X<>GJ1l;^Qq*d&Pt+yuTL6();1_BR*o-{x534I<C z;65B$&V^<k>3c!$XDI`7m^Yq-#wugr_AVUWlcT;zeJTS0I0V2QWvAE<DRVvb{Sl!K zA|?JIFi_Xebo+06CBo&fnY29u-u?G><#tGJ23$fQ?Z9DAO>x3=;N}O<{mK^~>TX4! z7cB_T{b#EsCs^0+@sx~Lsa6{mgR{v6q4+T8q~k3C>2c4RQ?<h}-}}jz6bdH$w)%!N zg{5y56{U>0C&6KcN<zLNP?S%o6w%=Du(i+LS8yz6CC8{^Y%>Aa13>#P;Vxb0V$Nay z9kia=HKmi!N;N^2_ZsvXv_7_hD<H*$P8a;<OC@eK*!o77eD`OgtVUuN-lrYW5Xz2j z#T8*H8X&oHS@Cltzxniu*9<PWPEwpK*Z~R01F#JM2>4NT7@LP>7cE^}nh#=qXZD?w zaFtY8E8W;SY@42wes;(*H$9ILo_0YRh6<I$tY5qK{tqckj$~R<e#z{OvvhGczVM3h z8*9!{ttXQ95nK^F*4n16F<OxU9cyrf9D)?J7q)HD<+cYqo5Rv(EHWJxiqWP_!l_B{ zYcrYcO%v;kDRy;ke!3cxf^-~XuYIY0&}PO%8`Q<^UZ;^{gIB<;bpO2>FQ4!2FYb3a z_jW_`!!L4wd}7e@`4!mfC}etFEhfA=xOmLHh%ZBJNj}Fd`zvPb07pW0bWDa`5Cj6U z@2H7e-ZI1(XNt;sCLk_3`+D*ObZoA&lC5-=B8SGAYare8d@BnQHpVO0c5xBg(&sX1 zd4Y-(Y=R(DBvZ`h4oFXRWsqP0Hp7QVO@QwMUyoYSY8k1{@jwPnxFcN(GoByYqA7uy zE{x8eEiJ92!lLaZGHr@%w*jO#yRMG@H(w$P>lvAThPD%~Lm<#RdH$29prl+`&}^3+ z&sqa&x0l<sYR<14lfs$&co9!lFwCFXT7m|rKf<GB$K9c(3!|@SZg9c*`p=<zQrv5e z+vScpAbh|R`|R|@p=j<8<gk|k-noND9lvGHV@Vc7p+nfPcSdSPT6o^+=ScA$$)2Zb z5Qr4SygGioh%hzoM61bs$tpe)Ez@O`!i*QjX2p5LogdvI7HoV^=;`jYpTT@c?E&{f zG6UHXDs`P5RU>4@ml`S!YumZYo0ByT7aQ`Hs8f$zL|x@7+{5Ihk#G<N0-;CLQuiN# z9B<*yc?i*$m+1-4>q?I*5Hz8#yu2s{&dOPdI=T<$Hupc^_BV5R&HWNoXi*h9v$Akz z<5Vkj3Aq5%94}iLXEZ_&g~PF9<Sqqt>D_Onwc<V6Y^eEZ5%T;BU#`-Zx+UrVmsbr< zSM_`e3S1fqjz~rPp&krPFG15psnace?p#84k4>e5`MUNQav`__%I$uhc=`a^fnRtU z$%8KR@JR-^gv5@Hqv1=78!YLep^!cSnFRCnr1eFYW%MIMPxbaTINdX|SS8IzQtRsu zMl=HFEk`*U3V+ylwHCR|JHGK?UO~ap<>g(;5J|`zI=yd@g}lD_{`nVvlu{imOe#te zWS}q~?>(!lPaL<;<#2OzkFP;}{Xn1P+Dzg{0PF?eWAxGJ5v@tM2afj2@_XCt+vgr- z!KMC|(4y-A*b4ywlHw+V)zEEpn^$SiGf-+W+xwTl@dlNcU-ZR~SbF&zUcyQ``nf%j z{`B(Jg@tRZ<o~9s!S9pQx6^|Cs3CLv<0Cn32hFmN)vT1LGXlX$fdC#mIjiV&HfQ5& zF4mMvJQI_d=Fq|5$2@J}JUnwO?8D%GW4Gp^Bplr-g4^Tq8pbyvP-^ZeWxV(CBDAV1 z?!&wA#}9k-J?zcxfAq>wuBV^PJX_|EgNvOsHGlahAKbpTI_g!pH?w(mwO{=XSWI`E z=1!n1&ozjl%K8x!9ZYY2PZ_pGwE7aL$+C~?HtXt?)yuuh$6F{NjnYL|;q>DeZpxDT z(CrxIg;<qk+lt%2>={RWkKM9B%CO}OXBng;ZrKUh|IIQs=>kTDhdSp~>$S$_nS#y1 zWrkNjbIpMaypdpZFCxDr%>ZB<ARry}F|DUu%udswbY5d5+-pgYGFW8>c>M1_Z|o-5 z$m?uz_Smo=yi<#d^bmv(-o0l+KVe`Ci(Dw6E4H9hsXsN-ZJ{eTW{aU2t4k?rq8Unx z4Tj<)w+x{W#n{qxSbW?-=@L)B$%l-a;ho~?vv?sNv!pwc;U3f%4eeNp?<0|Of|fzN z`<)(^GY?;^w@R6k*mqk;n`sXqJPnXE9R<Avv%}S;Z#=mS&vl36Uz|(tnC&+#Hv3y| z9UhLFU7P5xm>v&_zr<utTx`jubH^pT^&()DEbD0F*|~O2=;1D?&xaMAv}5jydpvm! z%9#|bv&m;8tR|2J*#z0M7;iYRg|o?QJ?<AE-(^H3UDdXRRdeUSQ(;=jAY97-)A)<$ zONU2ts2P$B(Gr|w>u0|_eFm>(ohGk|y%>Q=M<BwvEQXIAdhM7MCrwVNF(~}x9*_lu zuWzree!M#SiecJIevvBU@&J+Q;Q@s!ExWJ*y@A9%$XTAXqmE~&+DX^fx!Rk`bszC~ z3(7jO!?gwHV$MtKZnTW07|53M_l$iOzBWI1qlK8e$uc=x?=px%qnV6=(SK3J#n;wC zi{%c5-?l2gEEvs%Z3x$BOc0HhfGTFI3eIoyGAk;4(^mlQ?qUx&s=K?pdn7z({a|VV z{!Z5pjZtHo$2U)Sb<por%xS78+`ln)zKevoZw+WmMqcK|3is4mYin7Pctgt+_Cco@ z`%%-KpCU`rjTuHd9BzX2J3DDpC6@<U)ron&tw3A3MyjkVbTy>H@ln9fui!S3>%Hot zP3$FX`HwS-{p`NmtZEHI72dWW{1~y+`x9QF%%`wFG^kZf+Ri)|C%@=vbOpKwS_iFf zC>I{*0#o4J$cccVGFxTFIEc|Ve`KlsN-n6_pY-*g{6K_jBDNiZ3-a@5^;@PS<&`Dv zRS@<o)0OE{?Cma_AB{(iJ^vKb^zj{N!w#)XwPS&>o&@z+v{u2qTOwdzYgoK_q==U= zxwnmRGR5V5g~?}&7wiaX|Ka&fygcIO$cP2`cNaUD(=#$MAmdJ<spCtOJN;DeW*?!1 zOWlR{hr3Ttkzz1db`WK6U;&D;{_wDe+H2PnMmb5A+TO$qh$HUrWHx3Tg+!L#Jh?+R zpZ2fIv>Wt*gO-5?{j~uB4own6(~Vk?tc_7ll<CXCVK1E9xz4yqY(1$Y8Cm{a4|%ED zq&N)y->Vny$iRZVR>lB>K7?EmSb~O}Ih=GQI|G!&B$CQJl1z#=9fWjdUE2B6&blp@ z@1vRkM}m;#iUo1mzx0BRQ7*cp;5kb{XOKXJ6m-wOrRTQ}I#{*7h=`K0RjV6u)Qf~Y z>yjMiqz3&JWV$L7H53{)lpOxc>hHH=@o*O(cB(MzBGJIlvXMh!xEDLE*$y0!`}#kF zsFIK(_V#VoCfnu%RU}WGjQd3HH;)@qb>Q4o+awuOzU;7)8RQxI2X7gd4~9xK<`*o! zG_MyXWSDFj8S<deF0juq*&AK?cn<0B?R~InaBD&7iJCFzj5ZbiN^4Q;<wTsblKf@Q zAVU`83}Y|QU(6(2xsn@yZ?1|E&kf@d_<%=rcU{0X+!GPT$jS}7vAYkec20GGX#N** z$$&zDSWQNHSR5?CQ0bLK(+ZF#etplo71Y#!%B?HT`Gbs3{<$kK+~vg`lXH*UFUA`Z zuzD3{0YlQmcZu=Af+)RypH(9JI&9QXx0d{Sf^5S1U*qlg3lMfePZ*2<3lsF(5exVU zOicZ0D_sK%?Y}0B^<?#WA%ZoQg@Kb;pm<;bKsNyP(bn*S9(592J&IuAEgp8nIsl6A z)~^X;@AiQ8@6#8IP&EaG))BQR-k#OMmTv%T0pO9;V(F3a7Z#I+G-02hf$Ikw8-Px1 zK#1{-0*ew@Y4eBC*s(Dnr$sKgL*HGa-+jGb%*uVeCbpy8C081_W>^}f-t2G&sYt<s zm^GG51Y}OE?=>)WDPfJosl;=j?ktrua~ql3cU~!*ojnM(?l{&9K4s16+zuN|1-pp0 z&IMvCJn@~N_J;$%($5=Lq<BgFc2m+|)-7ypf%jr<-&>ikyML3++aJNh@$d?dC~G(3 zEJf0erXgK|EYxMfe{PA0um<b4upJ|9DdHCKG|7tSOqHO}y=TpMSl-q7t7qmK=xjm0 zZ}~{B3l~?3i(}v38eXTz64nWeG3n`1d>P{MhAd6Wo*Z{``RE#yuc;irJM2**o3BV( ziVBsg0o+%9d$dNXmuaF6_Oe!$YKC87kvt^oQa<%Vy=cDf(d$Z{^mAfHHy}5rg@?5r zR-VPydx21D{Gm4W(bq1S2^sRy<gn1E&e1$XjApa07QUM2I7v<myO(o;sCJD-&T+M` zaS#_6X&w+iw3r4<jm!1pEBxiDKB??n+xD8;xHyOW0`Va)hfA1Ek`xWVE&!rLODhS? z<X(56sqd*=L!fxX21k(F#cMpTYV364EJ~hy|EnLMD<o5GP^8$S?21XwRfnVU<i_Z< zH~FZ&Ny^rFk>zb+d%{57HqtDK5|8uKNxkW|OUiAsez)^6u`s4RPaaX^RQa#ry=*e7 z+45r2a`Gq&ip*HBiOUj^le-iLQ%n6nU2}?AZoDG2IHrD`oAA-4EKz)Ql`nEwnnWt_ zeFU$L8Y0B?_oO!gkv}5*)HF1)xBV)mgR@V-NNMmDN~>1_?9v=vk#CHf-0tG7Lx-Vt zg>)hSjsZ~dnx5!zh@}o)bB}KD|ExcD9{@6e-q-2>(d`ajv*P7gy)8VKmCGzn85B4- z=v0=}#j`k#F7I{+nv_o0vU78)0HJ_$E3$pF#VRc^B3&*lY7GM5Cn4|ms&sAU9(ilr zYa*8tFN$;Eff9}RX8Pp^{@Z_};7)_{ZNla6%y6<3oYt?1>rXzz4F5?nDq4#evlMl1 z>xY}Nj6eRg9jb^gk4vgfs^YA~>9AXKV;A_eAcM=lNgX+1Iibx>M@*#}sfO+JaW;@6 zFokGV*35YW20fG7r4kw)j*yZ0p2`}mlnvXkN=S_-yu~f#b+GwjjgHn>wp8_h&CuQd zc3#D@fg$a^`p6&FCy^>)XrF%ES5RK$`Y_QFhyRGX7=R&|%6h_lS_3w$IxudI7O$KQ zkP7on*wgG)N+K)BO6|?pp^r0``@HVaM=wC@enoF}U^yQ9nm>%0pD{JuVs5ca4@-@I zbMFL_;DUTTCxx@2Pf+&Q`#{zef_}MCkE7${*JlU5F^Y%D^r$8^v_lA)VQW@p1=a=I zae0I9yCp6QNw0YeDl6M7J35klWur~{oIE=&IJ%hpX6L~7YCNtYsschY;8i%KToUK6 zikQBdDtzktWPM{&>nMB)ENz{-K(TgOA+lyTKhI({y!42~-K#%5yq8fP#wRyi@Ha=y zKPmGCg;yD}K0+k8rW>q~NCNy7-n5Ln62>FT0x@TvAO*^GGjQ?cS47y5yH+&1A}&rc z_~YTEYB!li7@hA%mZ#f)|LO)8vhT!8hp&Idfg2Xu@)sc%)#Veqr+K)_xI8PwgX*9p z?Rj`3i9$v(3svD7f)9B?ge{*tEcX^~ibw{^K!^v`9^_F!vO2u=4XR=$4PSn{u+`R? zb^l_2gU3G0C@yp73Bef5i@4|$o+=l8s|JQ36Y#?2Q?nUEUQdGFUT>Qm$m|dFAaw0B zW}W=?ctJ7xxTo6+zLHt?_=*XWjN*ISLrz&G>61mbI&lRA<X8y6`;S_I;X3z6=LY6Y zY>@kH9sLpe5^>bgVxKQ!&5U2y4x9TfADR>MB`;!G=7mg7E*<wUo?i3c3&wW^*;Xmr zo~+<R&@I@V3^@)*KR262sTtX|(hO}|As4*BHa`5xod)~=mA!<#Vd1{IEa=0*LWl<e znf&rKf_R62U)!BUzlLB%U)Q+9I_ASnU0O5T<<mt~t<Ce+cx!vauQJvi`N<I*JkwP; z4fPLB<_dLs4{vx<@t#k5@fLFP97wW6`+%W5F!6yOAf8ik$Y?wWo0Gy{T98=S>Y7R$ zWa&J^0sa5at;E~n-_gMg{_?M}QNJ~(Qe9A>_3j8<CYb%p*DHY?rgX^y^UtHS2&YpW zMG~M;7!1MHodOT>nLC#ndp8A}h;0^w!{OFp9yb-erKgWnX7Wp}vO#(@s~SqAU{bA< zg~k+%;c%5sSRO*~ZxHD8rI`6zza@>_g>v462pEG`FTLMTU7p7J=9L`-)r3VOPMT*{ z%>2n+=pY4!0_Q!3`n13hKX)VEr{`C5m^YEaB(+bJCz@rZP~2R(a5xU{2~Rv;GwicW z3xERv82@MEC(LKx<J8>(RqphJ!;m@0zp82zd4-FsYf#X@01dJCeABf%e}yOC^@8E` z&d4YM3FQs}5(^Gq>Wk*#^8bc2p=N~3%vnvnDri<NiAZsEqk1~A=)^~tuL*C{QvmWz zKl*Ffm$wVEHucLF^gj8NIAGBupOM3K^k8wS=YJq6i_f8x`ifGybpU^7#Sw427x8a1 zHgMU7$5p{Y*6uoYjgGweZq$77ACiET<TBgPwV(abm}(M{g7k!`X1}9|-E%XJx%1w{ zb<eqLFnJy(^C!{>Sy(`MNqdae*Wm3`y9|pmZiUfm$rCA}`jeOPL)G&o0Q_x@o{q*4 zlKKlL2OA3(XXT5);d_1bd&JAf0p>=S;!odCOc;1G@z7k{DO58SjcZ`R;d#TSk5Y6N znpl-t{DX5(mdoVKi4Qa?h*XzF2${r70OpuysWD%RN09!vm@AY*$;Y6vhh<HvO{<4B z+bG6}99l$}9Z&E$JivZU@JT)7xwBU2pOEExf2LY4mx=gvn<^=$@b!REvKBJW%?<Kp zR&`oZ+t+2=O4>I~f;25zt*_+u*CIxq!4M5PgucNzIzzxi)hJQ||4BDb%&+9~a4es= zSPLZEAk&>ZnF+jH9EutCpm;j(4)zGVx|6N?9VH!`30$S1Op27L{E6O_+5H6t$QTlp zJ`p7k_a`w(67X<S{*_G6hh!=<JyIZDe&T_;!$GlGM?*-xzEM8-o7b5pkB@-T)?zuI z>y^C4#hmnl_)3!7r7IifYYFF;_xSgm(D8d^1|o`vP0pkH6m2G{vu<<TTauzp*75)| zK+L~Pk7X{!mQj=7=D&{eB>qOi#<p%em)Nu&?tG4eGfJLlq<O^hn#-!}2_S$<c~NY| zjF`<2{}|8}*9dyE<QX11NT;7z5v5$3s$K+ndkk~RiwsxM(HAb^tjai~#HxtmXnj&3 znN@Mlsc1aHS&$s1N1>qz6v5RUhD5SMTISMFIvscip*T(0h;PKN@dnAa>5ffu%ZtNG z!fRjd;(soyMCjy<4>u7hI^40RlzYh+5XWg|u5|RMxm#{oNqAZK49GG_v30R}G34#B z=;L0<TR}bwq1UQTsg5t0iY8Q5?<NZBP9Q)$C`hD_PybwMic6(_wLx5>Hw+{MXYL>1 z%Tpsku9B9<M`-dT*u*_PwDj$NnU9HB=oL4yO|vYLw>{`}I>u)nM%T9{p$R!Y3*r{# zdx>z(GR5>f3$G^lFsa5Q2k!SSw#+_JZ<i=5X3xlt?<+(y;BRX6bTpRW>H$aK5lnHc zt#L82cL?sbv0sznJ!v?j7NHHZdT3(b6S-~;p7wlHCl}7q?+OZz!R(q$?hkLl{12;I z!b!;Zq+AVmiE*d*9OxnRohL<wHpZQOq{ZUL^gmndw7AMvfrcE)tY>P3d7+(<yO3o= z<&Wi~&Eg?9=_-R?Gi8%_nM9X}6v$#cS$ibCE4__5gPg5&QDqRA*bp+MH&D!+4cQNA zm8?~?>4qCD@6mokAS=Sm9^%*sM3`j@$_)E;G+N6%tq8n7{G~1JJnlE^6PJJQOpEyA z>_N_yx)^ki+9?`@OQU41Wc1uQoIzfm<hs=oi3&D$d@Pi-cwcHh{w~+Ukq5;?GSLeM zdIO^y&koHxp;QzxG_G*;mtm~z4K6LDV!8jh0ab2Ot*0cJej1}ylDO7J8vvb`fGxxo zoFkJuAbgzfFJ*+QP7G!xK+m0P?*%7OT->Q%s1OF3RGBWj+>5?&SVl}O8e3G72V&eB z7i8Ly<YdK9H)<k;Dmd6XB@WBD6$M*M)7Ka4Zzx7lY<&_^(^&fk<|o-zQCR2paeIjQ zX6jb|O^2Uvig1{@V-DUhI)M#ENkaO^X)re`Iz2i?LJHouyUdar7z^>~Nv2RN;(krG zq~cmf9yTUF*sv87Yl1Wln3?Z0xbC!|dg?gjtQ>Dj<b=Uc)RFNrEaNtMn@jS^CQMq> zw94H0I6rZovqgCzV$P*<M_&~~BW6irlhrnu(9tjQ3=}?3nOV@jv0l@XQL^%xWb-rv zGLFK_7x{^E3n2|IszYEOFXI1WZy^tc8!Mywst-@QDc+jMv&<EK4m#qT<sV#yl5w{d zV-WW{jivyLqo;Q6kYj7Ld6`X$l$pA;DRH;;DWTl;>`<P`kS~-fnG(=w5lcNwC}`=e z%2<E(2ixTaoXic%>u1H%UO}?>$!b4KD6SFoigJtXzxsZ8?0}5SH_5K*Y%BIJFUf-p zhmtY_^qBP_)T%-qBo$Ic{0BN$wB9zJOR`DpQRK2ByQsMSz8mBsGoNuo@hA7B2DGwy zmEuU8ORXqb{+KRZC5EItvmtRWcBIls!91&jJ5SS{AuVoeTsGKde3i=Q$k}>hc2oBe z=gi5o$mxcyNV>(R%W_!*)$QtntqthRMd(Z^Y4x#%o$9XkX-RqW@!2QUo?Ol(v9|@y za(YtSTo6ivb8CVXKrCalh0cl67rB3~l(JC57ei7Z{0c~5q#-;#FemL<!(!EQaf7?! zu?d+i`$%i7kpy}7so1O&H(GtU@*mZ(iYgG|dtPU+qhPfRY7AdI9&a;+Gg}1OIA0}o z!^o8qEldgzr7v@FQNt*OD;fDMZ1>Qz1IPOylgP9B=<l=dME{_%y|J?aH6MlfEVZ9p zFajR+7~B0LtomJpZEWv9`TV?Wx|kgt+Db|x>P8Y&s10~~VPk5j`0@+4E=6N1Z7Ka? z=(2s^Le__Gg@Iu=w`AyadBV*pIrO5D(7i9z66m9y(3&tm;f%`pnQiKr($X7pbkU7) z^wK_|Fq)bVz_HT%s^WD2`m+CPNB>>3xG!zLn&JEySe?oG?>@JHgh2Q+r~ZCYttS5C z3H%Qj`TTI>o;zm&&_-(hobzzRhTlZW-TKKEfZ_c|uyv)1MshvcqqDZQ-dxC8zJ<OG zIH%_x0#FOUfnA?LI4HU?8{c~X0M(%Fhay1HJt@XK1R4O?H5x^A&UkR(0><NeF}fG< zGi$p%1K2@KC_<cU<5*#ZH;BB>=6n$nhN*=F62yOPL<%6tg}fOEKxwO$Yujq&T7+w{ zdVbQ0IL>5H=0|EIApwDY14t2CLH=re{h%M|7YK4S&%>%w+N$O1wrbfA;Y^6UI4}0M zjl)9>j*cFl{UK++atVIFMNJoa{QA_-1@fanr#oY8B4GTrr741}iuShU<?2B{wDL6X zWoFG;O8C>sCEILL*d!-sjDu-QBC|PeE$6~x(2N(CFOhos{>wpcq$_lKvJJbgyI$^; z-Rlm(Y^96u@}=2rfivc&qKo^}BKukvidb7t1f7n1)?0g%K<P_nljYWa4}K&O^f;n^ zR$r1+65T}7mh@V@z>Kn-2nx#}vg*(AG;?u`LRM+#v~y2(Zqn*8@>eZMwSCRd$HT+u z>N7!*0n9xQLw=4ORcu@&YPLG+M&86QmLoXbb*@EX{;{^mmG|V3dU)2N2{8(Hv`D&m z3&v(^PDh{QnsF-T6wOaiI4iQ9+~3_Zx|X9CmO<?0@dCc=CxISWxEhXDnP?>ru@TOC zr|q#YPYl6zc8Jg1W(;#t15+T)lBnbLQ@sUvLjkSK342CHX0NrvZ$}L`5h{yalyp%m zydyjOTUi_}EFUv<p=_XADO?lkL&Q9v@iebj+%spakU1hoK@uQ&jwd|Pq^QfsvVAmr zqZ7sPBM>JPdl)<q3?}q3TY>%0N681xnejZ<sDV9t%=}F(LlJ==NJecdns~E!T?&lN zs%)bQt1h^{T02Bf@hm9S#mxyBP6%n+)HSS*__m5&7-<k*Max2_NPT#QI?yhEz<h_g z1y=9_(_NYt7!-%Y<M4Po4NhXjR1)%ISe1f^#;q<usv9oM+j@oO6F5{(O4O>}V1(y% zd6!3*$jMI}F#!mKy``&MxDIioEtj2(3ro(zI{eU4Ss$HE&FEv{`U>)edLGPLr^`*L zEOB<1i6eR~#0%j$(-U4}!OVXv;B@V9C6*D2GYSf4yi`&k7E$pX2-EOJ%gf^CWn3;; zGV??atQpZ$GhcE0*t8%3o&z2a_vFqpuT$~-w6rbk3~tx7tYP46dvoNOvp68MeSPYR z4gJ>HG<74N`6usf<{g3u`-I0D*hr=IDTm%foj#{KIzI9dIx6cfBhY!-8TqWm1Fx&H zaFCD2rco%uvCF6F_gJmT&Ye%1a@GaLgq<^Htw#b@lxV1F@bRr69rOG`&BR1c?dkbD zA-6x|eIM0-_j;`EoM!F+*)cE-b+o6Qp7{U3nki98eQMR0=8AQIYJKhyZ|e3MOfP12 zr;*^mg+UHY-<eU?=*=%jmOfI(!~vUyF}WK{IT8)kGtE=w>6ww0d`G{I->ypEH_VX) zkL6<_+x#S6q+j3vKc*7pd5_RZI6A6F#Z7AFjN$-(-%@duiTKvMPckiAag@D?kx||C z6HBkxkB`<-+}L;J<R}}Kxh1VyA1Ohx2%|cr{HA&4J8KbgR{#u+_n#OsC1*;fb{d~^ zE}W>w6rpGp5^gBrVH7;k%)oekHs2)Ddt>O{xilD(^Sn9lTfByX_6G_VtK0>XGIwuQ zC337REj^;VoUi%X7ghRD<4Ab-L7IqfUE<A7*p1!wg^3}YK9kG;Ap#En1OUANq+pu& zzKjg%*J<>cZa9xu(zL0`C^mN!aqfxnoeNfX;tD)2`pn-cC3bqocgL>2(P(`2yEc%V zO2FUUDn@QZHg?A_-70f$naC$|nYBMgH}thG^AJaFUao)E5o_c|pPvjGCr3_Y6#zK$ z6Tq0g)q_mGjG%WcNbLsF1=7G?M@bRbd!UBN!wngfvND)K8MZoPSBMfG16HiquJ~?f zya^nb@zw?mIy;Bo1x|dS)yI<4H9KZ*n;yEl<XzvJg;v0<Yjw{X?T(FB7o3$%wh_q2 z^Mm)q;c&h}FSot1W#kCW!f4Ou_qj5IQ53|3*08rsYL)RFvgeLojbq^;wsyFfNgYWY z4Lez^xGuP|J90Gd%aa`!t;J)TCGeznx;Szz;hpU@B+9qN>hn*0=e?k6eATx1IjYpH z3aPeI$hsd(kHB%@l~D)_j+Wtt+vqW0ec9qE>2&wbdbrb^p&ws(6pvb?oc8<u^*Aa^ z-J}utum=I^&6V9|LY=GOa=P%f5@8Ytha!U(fxIkhIhyUo5spM-Vryl$lVNigK{SXR z@8UhYj}Nd1d!g^J3sB}Kp!*Jc%>O3R?iRR~3nD@)%Vj5Y6veq!Luqs-$&ug(CD5KA zqjHe3i~MLd(h-5dB|k_`QL<UZ5((2w6$t#-Ak`A{WP4jK?C6xFT4gb6@IIxU<l0`Y zfeW~%R38e`Ad$TthL&CX)Vy4a;!FDZHiw{v4yX1$3>|6jbqjA&6zB_1GCexd(eSp* zb(v$TV8Egy#=PPR%faznCZxxpGNP0Z1&P8G`eRGx;J<86>^g9i{aVcD8Y3sMwbx;G zd6s`ak6X0*GP-RSJQ#?E2Kg;Bp$6US6@1vc@PT+(BYk9c1Q5Z<B;;0m?MVP`nR)C1 zAVM)>pKZFcKW8&IU|rZ7-dHw*@0cx@;s;3{Hv(_+di`O-G`#eW%)E}@46*imi-9h_ zD6JcOKD*x(e&ceghJ1Pa=#Jl9Q-}!%4dCsm2Ul61gNtISli$(tRfFg4UyLw9k8)t| z!a!+C?7z}sD)wLPq}Z3@T9+7W;Cls8+4vH#cg;jsm?6sJ@ww5F@c{<n)$;h<Y%k6L z1EHLFJZ`nOA-)#~N5RE5ZRvLV=&7JyE)l!RJHD-JcFz@Jr!w?iVoVCLE69uXcQ;?? zEAN&+jCYavfB(=e3H;32wVvUUtKP3(ZSzGS;~sC^x22BmqQwqP6sKG=P#-(Mz21O3 zD?3GHaGy3F@+Cr?Xep%_ms6go<RYVC{QaXxeS!FGD27Y5^F$>^B>*1qw#*BaIDvK@ zI_xn}FCveX4Wi>gICSFdYr-wTIBTs5>Jx2vSRRR~T|G@(?M5+QL>`V+pFAzaPzRPg z9`HnBem3I4wAlURHnBtUa6dfR#;I8gC_=s@CU#1mZo|{snf%DrF6R5iwl0CZ40u+a z<H_6Usdb{_9mWHD^DAmX=BlJFpw;K>(#akwDwK`>Ht<Q~s6FLH@PxK8hGIXTFxKfC zpH#z2lw4jS8mEg*UNaXXW&LH*Ct7*NBZ1SO1lpO*iOFqaVEf1sYk$mSA7Twtywsu9 zU9D=sU!>u8YFzE%?QO%npSOd(-Yxmw{^7&~en$-lHgy1lbB=NYU=u&zOBYxE=Mjjq zJ*S&r=vf{8s7=+i19I|&ocx@+zWxS+Py8Z%bF1-5lbE@C(>1)!je?2iWNyCR@41~S zmx<%o7q;1%3W>$35%(r0p=*Qo!R%R6z*8vV@55AQX==j9d2-6x>j~(s_2ydEgumGD z4>-gl*7{!%DAxja*AMBkk=Wk|h5!HapMML7XAAo;*#D>dj|-Mjt-=rY&wq&hJn-*t z^@nad3jjWZ!Dor1IPToK1O$l+rCyPRlTVH|9dYp96Xv%~oA0$ZS&IFq^N(m=O;@@e z{_4d&bvG6?MvgtP>Ve3}F4n16@6wJkkTvO{v<Fk@#BJ*!?oQ1h%gSwvNfb2@@6G@m zES@m`pk5r3zPdrIG%-CWW%*$PgmO*cKcGxC6Qfx!BSp=qv6MR8b?=z$qVJm-9%`ue zS_#DmuLl%wB9L-XqT!ubHM?~SCT`BK76dr1VCun+J(!JoMx4PR%f$b)P<YH;f@ij7 z+Yy<Vu;>D)&RKSV0Ma!hlib5ZO|mNeCa0@cV49t23)j^G)>4#7`ZYRnk<DEPD(&Hu z?#;9!a9;Ckqbjt(B^Le!TI>68o?A}s)5$Y>Zs0*Iw2lxMswSx<_C$zLo2CnhZ!ZQZ z2sRxEo)am}EJAim=Ci~TH2KUX_cI@`NShikHR^^KbpRBVk!%Y{+ZlczB8KM{=S*?x zC6y~zlSozS4?K!Io!*J0-3kP5!#lzI?MqjDZ|an)62x_YEK58gTdaMy@yq*BO5tI^ z{23q>sLm2X;Izn%zKq9v5`*8)K=yt=o3za&8B<N`f?L`rI3@QxoYndGj4ws$ghI_U zq)$lakfVl1{P`h4pQ|ney3bg0gN%=uHTW)gY##ANOqmT6^Ka7rw;V~zr96TQlRNJV z%lK!SSue|eCy(nvL#0!KD3Qxl*h_l^9bv-H%x_^dMi1NB@v3;@&dy75i}a7_`lKRC zwVb@a$5B*p(r}ucUM?xZXD+vwG#@QEmTBV*nxF)$h#Qvy*!O2jxSK(aLDBTCx$<nQ zN*|)Q3<ZADWvnG3Z%ccIbUuJ%jk<+t8`0;)2WO{AKAQS6m9qPgWHc5NyCp^Fw}Ry7 zB>{v3=-F{6@(<gI1e4Y;VkfRr%wFzcZj>wq{E)nT&>o#P=^z4p#Acf+JX&XRCck4w z+#)X0g;vNa;(bId;`JMGC%@w1iyRKZP@9%wj4&3=!%R<$?zIo+OX5%?C{m(~hA-J0 znMDAoIz3)->D+lyQw71L-6yGJNiCZTF)N@SP;Oa7zuz_^xKg^0RUm`nkSd1#EsAYT zVSkM;%Au2kj>jb6&~D?k2)s&>3qW_hRfedkvE`34wkv)38$D7a{)AU)>HRB#cFC|d zh|enH5{#%<ss7qPe<M0XvYc52fz$zjH4w;I#In~OOJ!~u0CH9@b$3<8un>&)NLjiQ zcY^#nZK>Pz;iqS!jc`&AImfLzbONTerW&`A6315rmyaivx-Ors1^~OvSY{BkUEfVS z=g}Y@FRKEDPljjBiIA}GXbO=axwbwsIitM>U)HC%=heUF>`->eblcV`y*VBG=7cBA zTjdJ43<DHtdsj3to*lq@{qWGbz=FQsTHRx#N;>Lt<h&NSmV53CM{k*;?!6dXYFq-J zVG@obUH;|C08ndsv*j<a07?>Lq>;N!&mNOsJiQyW+P&RIqh9P~sryyx>3XRv!Z*cb zZrMz+4)g$k1E5B!8~7nWcdqPCR(FQ0GG|6K$c}{R_w3M9Cj*u=y=<^<tA#yQ=)MIu z&z9USCSHkY-4h(iI*d7Uu+*J--SJYbVix6g$&_X;W*^84b4FpQI|v8><+E!%u!W^8 zWezLqm{$&aH>S?Ii#{2)rP$ISdQ|w<am~OfG-KIJ)G5fBI34-Sil9$fJ}W1ddg|$1 z2{JfF3xqQiT9XU*sw2*3f{2^J_7LTW3)#$tLvdYA6Q5#czlAZy?sv0TAN_QQSb00$ zl?a&?Xw81@c!D{z5wu>-18|08{83lSGiDDIZC}mS3CUllsj+|vB!{uvvT<@ANX}hL z2m<2z_FMb-u`HR+zQ^B8_9G%L5$>JuUDQOp5JpWENZlO=y5*UUgA!lCC;MM%`QX{) z_FgWom?Kob@GlDGeoVL*C=s!57N6W?V;?MAl*+PyO+I?1->wDMGBJ*(MM53lH>2Mp z?fTJg;!(n9up}YusgHao05cy(gL#NpElFlWq;a%G%S`^&aIpT!g4$66{uTf<m<|qE zAI<YlKkF0#D$qJYSTo2mHYf%+D6~CCcVPsm%0UZ}(Fz3apvgzML(o;hluTKgL{It8 z$Rd#0wJ#z8ckK&7fHj32$NJ!FKl3)cHIB8k_2!`_fY=yp_6fe{|7G#6qkQxg_RQic z+9U!h>Ior?*6ku@UQ36#m+E?~|BpC#zg^E`-_~W3#UYg_!NjA2Fh42m)e8p+bELe* zvX>sC>6QU8p*3I^^L+?HNRCqVZIo*b>ALY`etD;mHJ_V`xYOt=?Bzd5;Wvr?%-Hy2 zV}fM}(1baR7%b*U#SVn23Oe`>$}72jclX*gHC2V2!05UnnMY4yFTI^E`m;H0;1h2! zOf!`4N5-{qxgABMQm2?bJxaBw<DY92M~P9u$FmM=6wIQl$l94x)qu)f1{FsoP?<aE zx7H6c8%0m~?a;)<DYCfp=$U~XYrj)vVdE}MSc5Q%^%GDB-ZzK%mH{ONtfO3N2$zjz z;!*jKf!yYJ1052)IbuSA#jP=z>Mj-~j-nLxvwFdpoK9&l@Ol^Vgp78T-P{3)?9e|| zrQ586^_!yg>bWUDvI%|RuG;4V>S%rp>sKG``9W3_!k8gw6l(zL4pOHou%XthgnU#+ zzG>9P9=%2af(NP?qK5{A=!o^haA}FHZ>yyC^|h6QN--XJ@F;3S`hHij31OWiBy&mi z*hcF#8B^<sNXE0yD+c*6Jt`S4@4>u*Krjip(xPZ^%X@5Ev38x)B~?h;*`BvNZE1YK zvQ2?GEr*~x0o5}is5O^{^132vUhuSBS8b#xZ%L3MDNtWr#P!c*#q+u7Eo}S~EUSdX zB||~fC5KJ^Ex%E>a9(Cw;0&X_vyh_8o6w$;1LD5uXFdwGDmMj~1{u4)=)rvqSk9ii znQ>qM=+7!~ui{gft5}ZA*fKroVt+M)42L%Wo}=uKER_E{>p%EEHQHMSN|Qjh0Q& zwXxb;_B4$Kb^vKxLP2dH4Qj3rL*wJxV7P0`y@cQEl%6(eWa@KzAKy2_UjCeEE1@4V z1_xR941rW76%2`?5l8EsIz<TNPr{Zv%y#V`*9P;(U29j*X-2~={kV$Kr3$jZ;BGWL zPIFknR9_+DB>Gjr4xr3-O-G8F)Dzqd0=^Bh78*a|>%x-;;QCWSKo+%a^9FqboM8U- zLX*k3fx3z}0&eQIzZX;C4YoXl2RJa4#-<U@4tkMfLXn=@EHz}Vnw^-nRf7Tay`Jt? z6aok6Fmb?6&^|OPH1_W>PTCf`F?X_}zEC)04l4NCrS4|u^{3CdJL^6TD&aM6xCO5d zx^+Df4J({sEHZpZ&SQ?rxpj8|7h%-dWvLxR-F>})4{a-R4?v(0ZA_GPQdnV|J|}e` z3fa4@Xz1bywaZcG%3<4m)vtlj*!Iw0X|Wwmb#?+WqGgW(xFMhACkCwzrrO7pCV~hJ zt~PA*8;_9QUEG1a!i)BYMHTbVmILYxkKidP#kqy)6k_^&`a+ql`k*+>2MZGkB6(S1 zpmfcahu0ZxYjIQ184xy%W5%Mn0njfuRjb6!F5WpHuG3O+HevTPLQB;kn+XYw<#5*W zV^!@&E(0CfHuRm0>&i0C2gR82s2~*H1TnN+Ys1HI<l&M|`c!mC00$d;4we;P1&Y0r zMMy2s%Y4~XQtd2cYuljhD=R@*`=Rf59Nix+tSz^7J3}4XMH#svBi9X~y=Dc3EsVxM zZK+NIBHVJ24JjK`+dM=QbaE>TLD>P9PkQpO&ft?SGGHE!d6KpqDO=PH5VPfmsBM{x ziKA0T$o&#hF7p6~2S*9sEGuNJ>Xr+a-#-uEY&NOeIG7E>{HpJHP(V7?Abj;np(wQs zFECO{43K;}ROYbbEZ2rF7u7^8!ccZgU4-N@x7a3w1(V*oiI%O@9&ydU7<I&*uFS~h zp~d%om|fTQ=~R}y_Ij>ce<M!pC!=}4;QeM-3EQoy;&TI}w<&%8In-XdKr*?p$6MAw zt1!4087sLdn9m_OXMJ2{2%-G!XJir#JL-o_w|W@n*yn8$8#|1OR{zi{tN~3m98ikp zLeQb~5tizV5XQO&VIH$rei{>Rj!;{Bb_I5L?_IRQP1;vqA~VZGNQu(W*#~rtlO*L< zpI(@o_jySCexJMGU<^rpH5IXK4`FtjU%8%dzV64ZWAG`xj+L-+u-j;{ue95c(nPQo z#(=;(@KVzVcFAmWX#PnQfKd#83Z~fMVjVJx=t72F4cKgt0E=&D+-o-Sp%dGukd#4z zXuXIG+Mim^T0V+~{EB3^B<D1wTuy*|m6)F>&T*+x(+N4C2Sd^QAs}C}!5T*5<-ETP z+ZIalux5yYm0=KxlAe&trD2)vxs1d<$jG2c@0EKMW}Nwgl8@5}JyR8vm<G5^GuLp# z7_?^tF7*QgL7E`oaaiaH$F1h<?j!!B+w%~4jqTNj)kCJ6?)NLDv}!yyW#Ih=4i<<b zG~dEVKsZnuM%+PZNNg|A#P50%$FGv&GKe9<6Y49IEb4kNaZk=Nt;F5iEj`xUP)Rdh zg4LJQ<7<k)x&6}4q%emBeG7Xk2w_8eA+yJqs?asc7Vm-K@4e)O4;acz=QG6WO+;%j zNVh?X9<dn*2?W9f>HBI>8N0ZlHs2<5DMIxz!Ws^YZKpHmfSWf3mPR4C<YGbvO=CqL zw#{HR5MbEcQlR6u&tpwc%P7FGbqtI19Y@L>?cEW!olAc6m-P+GI=YXRl?(=*1l#lS zz+y$V1Na$&%|#p6FraPi{dU4L@;9>fErJj&25Tf(Ar*yb9V4<~F;1Zj>8%FgDSVzw zF9{K^4WE+i_xD!B*y4@HpYH`;dUEL%qS^ETv3ll7l6_$nY96)=?|EtR!YA%FQ7_2E zbL^AH5k1*ltzIDY36JHrSmtR|4~e}X-FYs6fR8*fg6*hU%f|S<*K}eAZ~XMjHv*?j zqg;p(iH7ROo~1nCcy1pVG;5jE<HE;=HeD`%7g3pxP&-O(bu*Vu$MlSGo?XXKojxHl ziTP|lu?B)6N2h7nMu&6<b4WM8wPVr3!it*kxn<Ef)&;@wGP+g&=ZT*~>b-TeqYy!Z z>J{>Y;6%Wle|;q5YE@F?$q*I7;k6#-;lirCy#O!G3=3@bR<b13vjpxIH@yX4VG-US z(>`1lPpSvFXI}_3rNPiDttO>wcr(aIKKCN(C|O|gq6w2$)HljeNE1(UOa(?03$!O~ zOFLWNQ>l9Wj*ikogT)4m;$zdTrc{N@FW$$MV{1>Mm>*5~WmU}yI&Jf;o8wxd%<@{* zyE*3yd{{cR#!I>3VKHL@5?u^_Fw~NeJZHr6u@yN{c|%$(L-}mN>2|{KC^G;y+Wh=k zf(=a)z$Lj17tP-}Tu69<13PSgQZ2ubPN?5#j)n!>Yw2C1UU@OCMuM{VF!v6!2wvy^ zROYe8WZC7LWfFZp%AMr%@EIUvoIq}rlUf2>IklBBBz=(z#dTmbvJ;^(d%we+L%Jr= zovM)LPDb6JsAmjNlmSwpJ?jn-RN6iL#_6+T={u%4c{J}#W2mx1)Lc<(5gppJ^q<RR ze9uQ)<50NH>W6?7Adyf?hrktbhttHh#3_nDTuz*RZx>l1(H~W#In9_6`{}*T4e2f^ z|88!{EJMIYrH^&DFWTNZ6~Z%54vhC++#7n#`Ph~`m2I&FSY~R+tp^V{W-?qr0}0-w z1e?c`ON<{2Ziu(LTVY>a(5WsTn2}E^+l<Q^y62X{UfmP@evwdZ^+hJIDkEpP-rXCo zqFIHNYHWzbYp;xMN5MtP&HnU~8Gf1_V8WujCD)Q0Wo~pgPxVy?-7s|WNE<r~*z<Mp zs?kPmoj2dT%KbUP3Z)<kUJmg{8wus_5xOy(n1-gv@@l*;Oa~sO7i%<cMCZn8Z{F*_ zJ<LO0-TkEUD``ur{q&78E<EQcRN0%TsE4rBjxV`-7<cEF2hm}?Qx(Roahw|&2Hy3n zg1+{_+oZ=S-m^a3fpK%n=U8)gyUh0vG;S;Fq!M9YlzoaiH9<A|N;-O`4CIr)MT(31 zpMM}iB5Y>tAiLw`$`K>m>d3>+&c0p}MIYm-k27>63rN*Chob!0TR7wpiTA$3=#(xh z{_5xb*biSz+v|>2CvQgOIyptLH}n3&{OveilS7UrP8evGGnEcJ^b7Hq?PvW2)Zta< z%#F&fTu}b+(tmT`FqW5Yuf3Za67d*v=w9+mRaty=MF^o}Lk*<VRnCsMF;iLMxO0UW zva>x9f&@2_oUprX15vU0=2WWsc_cp=NT(`ni&#Eu|Ekv|>R-UKbaW&Ws&qTvx}k}7 z@7oI?OqiV<%OX!KV?7k43IJkH5%b25Sx0JDNetXC3NrP)DoL8P1{;giG5O@}<=Z}j z8yuA6$X<TQ7((;KYV50HeJuPwob3;TmP}`~GECZZ4>XPtD4)|_jc`kN2%!V(L*~IY ziA6|D+I>6ZVL$gAW;=e5;N>i$kKzDLJmujqHzy)Nj!@eHhvBG-&Rp6i4t~IsLD7f_ zbut{m9<@kK6uuE`*WXC=Y{X8l&^pj}Q{x(~L-$~)Iw1=dq+?y`()m+Y+>8lEc-pzm zv%M-I3uV6RQzW!weIcNn_ZIftIs{8Jmn<T1h&Pa~Pcr1d%+V{o(;d0>Y7j?WXNl`* z_uXCCpqo3Pfv!8w=g9<Qr4iW?D<;Uo3NEu}52Z4|rP+!UPW{7~NeB)@-g^q8#~zuK zm^3A*nNdy?9KJ`U%T65I;pp9fxkuL0Q~v1Pc*=qhPL-TCxzEZB=35*e@)RE;-n-9? zy^s7>WPoN<Z4J$49=8T97KE^v6rZ>rQ!zh*U__w3=WNcEj_OW)Q+|xn)h>+|2{uw} zY1u8KRK4~^G~llNa2dtR#h1jk{%A;cr>Wc+WcJ~GvV-bRdCxw7`mQeV!8U`52aTux zQeBeGU@}QU$ip!zG^vR`aFi1Lih|`66r0-(%Mik@k{e3uw&9C^uaiMAhNJ7~nlKJ` za~2}{5(o|iZ?1Hn=^-fdYgsPFfGF(@Z`Oj3E}ot72Bd5@yQ(kFDtx8Hk;g%jNiuDY z3SFWFNbRt8B<><)Uu|@jqFg+SGBbBJW4SO|s@}sucRj~>{n)FNqA{#YI`hG%OGQs4 zy0%s_AyfRA*kSuOjYq+=(+;)(h*FSa?p&v!?`m6$Rlr4i^(P}@ho^|k2yRo8JCfUm zG;P&V^u0N`IY6^s=AJmbbSz(UFug<55j!Au<22+FOj}LGLqRdKb5PaOC*+?9ki-(% z8PXn9in1NN_nW{vl&=b_Cgu#f&iJi0o~X79>nU}tu}*hYc(=qc^|>3X84455zFpgb zGOt>)=O%Go>1Ez^LfJ_F75JHHl9xA}K>bcoC*IQ<A9kv+!5p8uQ{U9#>=5%YRVmCj zb<4>8^H+2K^arromPMA3^_Yg_$XtLPvTKGBD%NfGnSVWe6LDb^*4^-WGV}hjR*hi; zgbP%~mx1|Qm;S94Iryzk-F)MEo<yQBVYONM^w>2)DLaY>U0uLz*M15yRw?*+JqiX< zXw+XKI}6Ug$Ksc<_l>)`5BBDlBIRI<+fN~4Xcq}Y4am(1j7Hbo(EJ#s{)EQtDJy8X zG24_oXL<F!?pR5)Ry}GGskK%U&)2HLB!iIobzyMk(0(WJT*Jk*U{qnOPZ9%jvm}T# zHOe;oGk#ca7Q=N9!}H(2iZ!-?@)Jy+0RR4PG58%N0l1@9tLzq~wXQz($KA?zzncjK zPLh4RbnCgfg<KIqG?5YD9%?be0ns%;!i}lET}9l^g(N5jdE`6xJU|G}9KMGWx#9~D zcvnppK6a2)b}F}|(@B=GQzhZxy)!K1f?7`u$~Z=4`^0|of3^SUQfy(wzdQaP6g<NM zN5OM~lrbRYSc}*SuV8>F!+50sdULz<=eu_;Uy_}7yKL8{N}@Dgnc%Lu)Uj2i7v7AA zHatgbog|Kw6E+pTIV`autYZW52f#$8wdg1)u_U`Z{l@~6h_^h&J_^|;y6o0rtdIUf z&0L6uG&YLFCI*k8-i%v|(6&WOA=$x{jPGmSU6*<;Ppk2$A`wtO6q%}<sj{#h61>QN ztx7I<a~H~oP~{@bu^7{0LybhTb*!JF78ci$=52|;8;Bpl^I5OkC2zMh-CuHoS266n zd%x_Ic*~ywWQteVNjHgJik78>0>i<)Xk^+#CA(8XzVq?O2>QHl)WZiszsJSW)=NjL zB2S~hHn$TV@mF(|->r|oAjO{?CF%E!oBrH5iDgipiP>e5CQjs@uufAzPc(9SL=|t} z+`epSc_*y~eH^<tR`C*AUhDGy0m(17BZ?-I#AFKz8+`!+Euvn0UJ~x5SaTlS=BL=2 zC*p|xWvb;mP@3kTKm<Z`<E4{?$NbqU7}cYE7)JHRtA$)T8E!|~5^p>PL{pp>-jtem zR%RubU>0XNG?L^wqjhR3@OevEFX5)llE}xM*R>((<)s9n$aF;67VeNga}=uKuX_!| z8?LtJQ+x03c^dkAoy?Z+%&Qxa(n-*0c$#IFbrLinjw%{T!HY+B(ShjpEk_X)pEj<u zopGLLNllJnltdt;qrN_ygiaN=HkCwMs<aR^08t$%HaQ15YZK=n!1>9O(t9xXAFhM) zRoiYP3Mm?X{y|aABv082NQ&d=Af_8*l9i!9G&k;AvWWGOe^feFN_Ji?ub|2D8c~~V zZ;38!Lo!=*V$2fT2>5M3?2lOllqh}aDr)(fG4={OdNu}8{R*;cmM6#50wJ3cgDFYV zSty%(*!=90(pEO@QZVo!uR<o;wI7y&QZ=Mt&9OkWqE58=vK9Fsr*aYqHpW?F1uNQv zpWS|&vX$bujwi$%KX#6)$lEzsG$u?HI(>r9gI(J{+bM0~p)U-tehMY5OL<^=+P<Zo zy^6zb1kqw6VOBq}#F<%Q>rz?n3{HSEsG3)r5pNm228xZO<`05SnF%pD%&5|=(H_$B z+No`KAx1ftzkHkxN)Lzr+?`d?+e2!x?0)~&E<Y~C4Km*Q=(1wWgy#7y1h(g0!~4x> z?mlyk!K65G>QeZ;m)@UO_meo!#!^INQr<>Xh#1hJ=PrqYhDxr*soJ~seoZ=Z=XyG1 zmmvX11QNXmw7=Bfevx!7s>gO&l=<PIyNkv<ga)*hTf_cpOPv=BMRF11W824~Q_3{2 zC}}sUQY}T?`G@R8qH(A?PdH#jY(b=Ry}qzIageIy+bF;iyZhn)_a|I_J@aFm7ao<2 z4MXQryN_L{++S%&l`u?d{)q`!LDU$9TS3&}&~aJLAXJB8hki$UA_46(A}KJ29L?yx zWsk?T*-sD<CMX`FiDqbn1vF5`b%Vq_(Y<5dwp&=rvM9PnKH-Uh?35=0Z<kPDG$y8N z%DDSL;Fp((+dkkh@8Otm)7bi|_Y=ZocQJnu%#MuhqF~`8!!`C&KPMA<tCAezKFHG4 zfO`%d+fGl`(Zjd8rWqkJF*;1d-tG*<ji7BS{k{`ZzOJFIJ3}*u<b7t(*bO~rVD`Yz zGY9)sB&cE_#IPqM>Na${9~pJ$77ne~<IpuemIUxLf2V5j>xj@4mppH~UUYTQd5UTU z6zyxsy6F}8w9ewt_uOLY|K@0wMSQ8v?t48HiNU1}1yo~O3;7+ls#AT{>)dnddAFNC z_dyV`T5?GG+U)kY*2N+-Oq?P&zc67SLXPc?+FpeJjA?&DE<=id9LC-E>21UdA1G{a zY?O5N!r)|q5XBg&G`MDJUWu|K>f){%D4k&j*SU5r>b$zZ8N$c`!1U%+!T=9>Y>9W{ z5+HFPLCJFIDZTXz??*T1owQ~z8(@d!5X0oAFG!Mj+Az!efte+=?>_RgH;4=8ZZF+m z8oQ>-6XLFVoaUFIyIv=)3X`^AsB4Ybo@+-=6trRUvd=z+n4OjIM;Kk9BkIjk&M+bn zH#vE_Ur*1SpBp-pFGO6&Y!{yIJ(Whb>{<(%Hxt&%BAkHDT$e*0#PHlIzU$_hhu0*T zR&A5w1fi!7cAPLs9ydgipkBs#P<X6QW9(2I>T1b@Ab1Z6L4So(@vQp!!%<Hk)Po85 zV$~&2%6QHX$=pPI6Zo^SppwV}gN>wp{|)-Z6YGAn+t8=7IPGY~yUj3(^)QaEWM=|! zXopVT;OQvO63}|Bav$SalTK)^ZF2Liz?FNX19;MhJ)rWe6roy6)%dr8Z@;se5)l)W zXP_cN&8F8wI!e!6;?T7NI)RLEz~Fs{I$axc`)(d2B`pYX8^RS3yH*lyBAR_Lby;`{ z%<I{R+Vl+;Ar4Y@l)38yQyA#amH3koHs#8+<^0|9xjRHwwZ8s%y`x!junld|;S9g_ zakpCJY@pzlHYq@xuSZQ@+vZN$PDwz4*$_KyPA8==b_-sj)j~W7PBhNNOm+RvcgYYJ z&Q^I8V8_tp=alD`6FRs#XxQ!UsMx5kbK^}3PmA2ZK~kONS!k5uf92XbKTWPVf41ed zkUsCH74|~%Y8eN=PL6bn=We*&s$6HOMp*pT-1F4bg-ys~LC-@0_873$M(^s7J}uN7 z=2I@%NSM7z03i)#K9<xFo3K2TtYbRrts2KoTxW@6iJ?oR*R8dh^votG>EQ{O`OKX+ zfRN$tytSjgr%0V_ApPotf@Ib-@W8TZU!^bV5p~brY8H~YC}o~y$ehrQUEuI79|8Q{ zphIgfpIwfWBNiWZPTZz}pB_q%bVU~VQP<OzzfFgf&fwd9t_o6sG!QHZ_kk9u`zQ<M zq0zERiUQI?y$OZ6+T-R)LX2VSRaNUe#0c^Ft5sE<-(LMd`gB|Mnp%PX3$Z@QL_9YC zBm5!Ea;5e5(t=1rvVU|fnuzz`vBUKtnq$Q?wbAgJj61e9_i&Ruf5w7fWDhTV{N8)w zA?WExWP&wK=@>C_h=aRs+YNmJ01QvhIj0yVA0>Vl;=1AOGXtT9-1|k9MW|MRV`}m; zP~zo@HIg*}qIncjbOk)4c}fl!2w|i=Kf{CD`)&tbMIxAn93%v>mku#Ii$92E3bFi! zUi!Ao9osY%N!VbCF9&ZoH1MS_5>d7{_^soj`1776pS6gJncD0f55`a5#((e8@itzw zIkx-94d#|$h9}Ff<HrsE+4m;)JH*m(r2H8v2Q3d>>Z-5~$CU2=6V5iAD|6hvP3L-+ z(9eC-xc^y%2WzvZ0RbnOAemU}%G*Fx4oDD6h#BNO7c%%~GCT9$Z|z4l#3J8&l?6ZV z#(o{N;h%8=+wOD}Cwg&vOt!BLol{WnqeADlPuLF=ch`^C1)uv0)I%%$()YL&hlzlK z!Xy(4Vp|xN%*8R(FROyVyq3wvm{TN9?bg^RU6^69B1ICou?$TU)iV*M(yc4DGHf9e z7YZ{|+Ul&uzqE~vLbZLH3NQf-Tm`1CNMKEFQy$3X4K0kg#hvgDT^uF~<t6?fXNn;v zp@Fs8nv2%JjF_Y`Zy}($7@G4Y3<X#rZ^+Un;z#k1Cso6CLroBvaV#?D-(!F4)xJF+ z-0Hmkwc-1{PHT*KpJn4o;)Y^iVm?~#Q4^hO#_goV48TQ*uWfhLH)^jcYHy3*X62%h zK132v8(C_Te;oGra%74>G_mkciua~awuvn9>r4sPgoITJD{q%U7I;CMGa_H|Nz$pD z-*14mHBS$=x7JrC$LnhIvg0r{F9Ke8l;&jHEb62%355(vZ&)@559xXSEItC6=kJ<F z2t(^PkI;R1eB|>m$%WfYE<gPR9*PuVUgiekKMXyTFW!%@Uf4P{v2JX1aG<ZJb7pZ( zQDJtbE+yJ}dkaSXLlW4HB;3eFL~ANB!8XL=#vjh*PI<L*Zc9^x0XyGERZ59T_*V)D zz`m!y{=MWxXs(3fKY43zK;Yfh6#M_z^~~K&c5DH@;AGITC!}^;dqM>7D&7iQ$p=xo z)sKfN^SLqsd>(r}mty_LOn0a%VKViXKyxL?aTNL@XsQT`UdBvY54a^#^~0e*e|NQ$ zT}>Q{W>=a+!;df58a+L#ht}}I+K;03!l$LMPznnrN>MBjF^mb#G?deugPBZe=5kO6 zL~(K73~fbt2{-4w#<0wg8L8Pj^f_3N&uL1V<EwK<DsdobARrkr%^Fsw8_FXS+YDhw zsv^NC66PFKg*H5*)_)@c&Dc6Wyc|A#h+M5PUvb3fCArEbHkhy(ua&0}Ryu@LPS>rr zV>1X_hbb#G#!8)#*>e1VTt9^RKioOs^hK6R9E}R*Ke=Nd1!U9BBYY4e`%Ob=#<Gxn z*|qr5D3v3jYQjAS@YU{2*cWE&4M|~1Q0d?vg(>`mV)>E{sq&g%tBnA^B~M!T`ey>` z|J}YmpHQW-INlQEvQ*oD;(U~}z>=mXIOYMelEJ2C5FJYd+ZJTvDx;B2S$L9bUn%!a zQe6<$xK4@RFw3LJ0=9#I?S8=e3}Cw$@c+Nr_a|+)<h&kJSn8<dFADvf6CsHrU`hL& z3$czRTuAhY>9#{~5rd~4LdsW|?2zt30|C)Rzya``5`|}aYG)!1c9RJE_U<$h*u4wO z_FUYpM#wdcy^kC={PP;)aJFWC1ZfXLb`yvXeW5472w*mqB6XswRD=3ZCDNd9OSkzy zET-}oS5%Vct2C&SlI-XkF_Nzw!t@o}L~w^kDPK~P6pn{1PA)`viSu#L&^ZTi_sxe3 zN907bgTaO$<<yYxwmbmcu?(6cP(d56)oDZ*`{|?*DMiwN1f3%QSPTGA{G#GK#bOjy zqxJaizgHUhC`t#GmkI^{xJ5M0sBOXLV=rTMaIhX5e}u*NVR<{AbS7q6gR}QBCuW&S zYYtKcj6;}s2YAYeqlwUT3#qa<uqVyF;}Z#_35TxbXIDNOR7bo>dMCWZG9UFtfz^oz z!O6tJ;>DqMNUII><%z3u3CkQdsT)(RXQSru+b#8TN@0T&2=tcso(@A9Qz%jpxDTD4 zOOz9UgC<bZE8<3MrTf8lvwiUQx;e7fNS>8Pi8MubrWK=bEG+}Al7S{Q<RMAP7#fo% z5KBA!LAyRh0D)pd4WlP!d64!Le1I8wjM3ZDYd(KL+HQFS1rrUy)Q9{22!BFkbWe?~ zzs7cj_I>TC@_RO7X{R4ERW3@lu|393i;3u-)QpsCGuoY)&mX|9v>ebjgZ-4EnaWMo zrGaza0Y>=_@ep*_BvLXEPsW?vznKN=BaNIRDUN+q9-8;P45JrB-`D*>AC7dj03MMN zR{I|G5yzTA=0oqO&>luMmA_<Xrmys@kv3jv3}b4|);=CJhxa;qjRhqo+EtyQ1*%GF z+JR|fXj0V@Q#><!Lshj--;g&72@$ZPs)y$az+#U3B7;5c-R1bg$4GsBh7W#YB@+ca z$gjXZ&qVKGz%&(MB|nIm9#x_8bcW#AbYJqcxiVN|%r~*q2dygTRdQ#P$nvE+8ylk0 zb!8j~z!z5#z_n~HvU~>y1WH)U3cz%B&xHjFfJ4n|T~UnB&Rzos`MnM-O7#ZtQI4uz zt2aR$jiWVdx9wfP+&p`C=gC_|?;a4pYf<lBFrvSE_l6Z6x&M9Ph)zNQ(jovZzZ(O+ z2t09>UIKh^y<Q6B_b{h)yLT@G%6lY7S=y_6xsbL;X|I^zlx3n<99j+!=#_-0_4{5a z_*(ybtPCDUpvy<tA8>RJS;+gQExA-}QTyCOTh0s#EtNy&rC#=_FnjRZ!ELToEJz^( z4YMs1QY!^{?R<gah_mXe64JB0J<2*aeg75<gc?k{eQZ}7fX{!q#qPe2y*AtkWF{ym z7&4jC7%KUwk!6T*KUa#?Z2;-^F+NgtW0Bf?k@dr$*1J{EublL(p#Eui&93dox8>=o zHbb5fC=0NCpEfaR7$&A0zv?NoCYTP1iNs5RU~v^q?g0E6BOR6ine!30%w^|wq2IP- zMDaU>`N|6R?ZJHefdE#;by(>WQUg)W1;OOL0=@(QJT<=od+u(zwhSkrO|}BA1?Cy5 zS2*gHReLU%IwY98B@{sy>Ij7~cuVpe>2SlQ$2Qx}!9YBpn8G6A;H)-<k@EtTAJMHB z`GYlY2|2E#`YFV{+>{IMydf@j^4IFYSuINj;Ph`jnhEwGyIfFwWmI?RO-)EY1?FvB zE;%7jQTE7#4x)g28#`kjh}hnx-lbG!?epRQiajPx;8O;zPT~oGtQWXLXm!gHVA;3Z zO(zsPiC_40!X&&0r3xQ2IiX1mvHqr;4D`Ps^ti398ufh>$e~ma_vdqS6*)#?g4^j9 z6E{aGtp9}FCL%>3!b9Q9T3re98v*;sbZSm6J_H4U@%>mX;}tZ8)jcKSAO>7DEjw@` ziP^ACuwvB~A8r9#XO&GaFGWOP)TF>j4&gSC#c~x5wCf;GQ7F0#P)x6%b96jAu)@iT z9c?qidMeZm6E}Q;0@Y|B#~t(V^xBC5(z0Mw6)dMKT%zJ~cFGmXJljtd+SC{3><n#{ z*)pEa_n2Wm&-v*_!V9mzV2StYa!wntc~p-eO8y^^iCFl2mWv0X+EY5trwkLG3&HI9 zZ@J7vi*6+m@*{2Q`7#*KFS&l5h(suSVeUy+eB6lX?DGnjZRDDCtA{1+=axjRr?bx^ zZ|YD)M)f4KV;<UJW`$KG!;C3|!ylbIXcb$fz1}*864%2oY6hAA-WqDPNlPFXYDzdQ zDsbjM*eEvcD!#L=hm{g-gf6%YQOIkZNTgnzFXkmh{<{X4gcY^l;o?G?N7IWof?sA~ zl3kz)-1cH|X&zuv=Ebz|%lrgxk%s#8zJJ9)0%YXI9k?DhnFvxOI~NWu0La)ALNkqR zDDO7aFb+`}?D)qG^+%va0@gWMvuIzOugRj0tTt%K7W70-pkfGPU5CaC^M-lBRX9N- zBQ?5?@!I5JPe{y|8GvpeB^~KUEZ(1ms6d{sf*9PW^G}(kW<<f2TVZ)|oY2kK<@{)^ zW+>S0EHw*A>wul-VznmM?rH<T6Er#lvY!5J7wI7dkasE_=@HCMKH=EaZ>`C7VV<zs zE5)~eZvAo8xK6U`XWUd<{Cub9zOX!P(YD#F^TLNV^f20Ru*PcnT~075M)inm?yf0! zPwVQUzYlJ6rDDOVr=bfvB+Z8X0LsCQ>$bcHQ@ycP56b@poF<{@(oxH9=&VGxledf3 z$ScAJ(N-v4F!_Xvigt4Zn+`I$?(n5`?8#?Ct#!Gf9&PhKYE#grs82$jmiW=#J>*pI zb5++)5qw%zRx=}qCTQjtOfz+JkKuSeqAJlNZS*$U80Qwy+gR_l3i_2?b^5bh9+}UK zw|?aI<2w_6xJ^xnZ6VB5^C82{<xNYO8pyK_$%@p!5=`@{14AsWr*xX$Rr@d1N;~j{ zFS2xG7f261@<24rteoow_1b#C<sWRIfKs|IaUk(R!YLp7qrm($gDcM)KMV48a;oq^ zNyz~Ekks6Mn`&tQ^o*sCP0T=vqIJ+>Ice9y4=&`58+4~mqVH9cG04DFuWKN~@dk_g zIpW{iRiWLATmzoidD>c1s~Y$sA#*cTGVORsNU1S1$dB1}2r=BC<f?s7+&ZW)@F8s) zkS(NfZSi*#Hye6_4*!_nru8qAqnpS<7aa$_s~3uqCwQq=E6c@Iv&H|kuz6#Uvg+Q{ za&#}*s0xQfA+2LJLVq$Dl8O4oHAESlkVJGI!|-;xFC{rN21k9HXo{#b3Vioc&{+AQ zcR>@PWHDwp0mFrC^d-e-exS=BWbNVycH^d-*1OSa+#rIxE?t%RF4~#4zI&vo1J)pK zq?aW1?_m0jn9@YhXIx+Tkg!j?fDW_74uZ^{cuY<m$3JdS<f}wl!R2F{K?w2jPf1!L z0$6u_9G_RCG|IYCJ!*+fZHcsO8|0|hDaD;3_pB8+18tp!po@@%oa0(=F<dac(1E4u zmV2@QHt_*x2$=VB!b0>fig*?O1T!X4Yy6ZnpGor(f*#0=xxjLD-NPOUDbloRLu;Ue z{17K^KpE_yG<jgkrO{^OQR$x?b>ne;YmmMeY2A7nn}vp*uBuOfP1*%Bn2bxjP_ZPS zBs9qY<GV%Lr&2;Jc@p3ucB9+LrR1hfQ!TO<bmek73<)#@9*$bmLyw^rA)ib7_P|9m zE$A3TWBo4Qm>S*O=d=u(43W}I<F$ilN*@}p!`+R_HF9D@Ex=L#wJtT35iM5`kY{1j zigc$Mciw}M$nx9xFZ}Q%@4~UgbI78?xo>qfQJzIf*&ud5AzByZIJUh@IPRSnR7|nC zgF4~1b>2VxTn|rEm?iEsaYw0FgG(lyE_Y827Es%(6Vai^7SJG)a~4s@enJ{{V^Z{W z;g=F;S7^CyzykHm0Gzd;2+{bSaRe&xUU2ebf{e-CdFLqgD0r8s3i{4B%R{~H=vt6b z=l=(kUW#uGcA3$|XH_7iz(w6wbkswIB~?cX;|vjMOGc&u>6@afrrh1p6(P$~=yJ?Y zm|`0Zn$1Z;2+g^Hnud3@druKa>5hnG0_sQw%|IHhV4;D;Nthjbl}Q_;0d(M~Xf#|6 zj_w>!obZNvG-;9>XLw|Jw!`=+tUCOl>S3H08LO88G*Y6@LB#ibUpR8b%GW|!p`uyW z(=tKyXAH0MU;re=c&I<RB&>`k@PqN!yp0j5C6<=EO3m`VK{(PkRu57_A|_X-{RHzO zfqkp%#4u%^=L=@q`r@fA3uCm1#w+L8$Y*7Ohy$y8-88pGGV-Kk=aoF?glk*+=~|wQ zCq@geP-5Sn>wLvN<qLSGq$yrVG=Bwb@|O}VEyz6QCqT@W@EH$Xu@Nio!#HQF(@KdN z?zFa8$l=pzJ@2UyG<;?UEj@k7Qi9FTu0w9!+$Uk8pO*i^>ck^0{kc43w0MGQa+}VX zjI(maY>J-AL=IxFY58@zii`0GY5mMED1iSsowTONtUMe|@244JxPmih>^|j-TV{?< zo8%w?%hqZ2bIdfCiW&>;va8d~*jb>gGNw@wr7h!CvMpX0S^BB_G!nn4=S{<J%lOM2 zvKUFsH_z4e+MfDl))Tjbim$q>iF$)p-?c)6>yp#@Wtxv=<yMUfkoFy`ZBnqxU;V&W zH2)M9Wy~}T1p)Zp7PoywA-ZevH`;(8K?*3K8G#L0BZNj4vWRAC`N$krvx03LWRDTS za{B3E1HbsqD(YCu6`t^k?HuASe;8u75knu(dB`Ik^Nb&O`bY<ZJ=HH`;@sW!$lz^O zwH+V4-S?(tlm7bmtBXD22VoQ^X_gmdRX4Ql`e8htlw~xTEmoV|0U(AGBt<hU#|xq) zD^8c&<MsIi!B997jl~m5HI>d}bNNECRIXHO^+vPR?ihx%`C_?RZwP4X1Vj1;wqad8 zJD@czq7t=_#my}erpc6lk;&%rg(A9Cu2gGuCc{rcWXo`5ic!7Mv~0CI-Cln%9E~T_ z*?h6QvbwguvAMOqv%9x{aCmfla(Z@tak*M=w!8h|csgIMxBKJydVdDjqsKkHeNXzI zK70P+<*R|$Z{EIp|Ka1O&tC?=e*6C8^XvQP_wPT7lQc8`uEDDGx5~I4ug`CZBr=6c zv!gTYnJhNPfeZ5xzCb7vOQbTnLa9<~P_0gHFgiLpySTc!dte*@2!kV#C^QC(!xM-k zGKG_in}?T=UqDbuSVUAzTtbp6B`qT>C$FHWq^zQ<rmmr>rLCi@r*Cjt7GpU00Mt3P z$Sl8*7B&Cg=+Pj1{4<mv%NA9i_w#U;=k-^$SGSYfcZO}&>ivVcf7WJoy}f$1+^Cm1 z9{Hn1?ctC(N4P!=PA5@yY!ad!XFdtOt0>udB&5>DabuGKB1|abLhj4Urod4!M3_*< zg;d%&Zfq(*gbC$y@86vCT;YmTv|<&ngzO5y0auT}qjkKQPe&=ExjUOAzIQK{`d-}3 zl8^nGy^A<j&=G^MLnofET+P<w_>mOiy=KD4^+SPBB$h~J@)C@Bjn6s|VL}-fQZ+5w z>z)+N;5i-@?xTMFI1EXH=hn+}4+A)(3vRE!&yaS~TW1q)*8zRkw_55;YH?}MzZ-LT z1}@}Ns(1NZ)Ze48&3p0W6;%~u!AFj@ht787!}f3t&$ZOBp%m`!yClH%LGsm6@oy-) z1jN~OL)*eIA@_6rTw0z(6Z-!hg*ctX3eq@)Nh4q#9B@b`#zkbNZQ^8B+QiAcv>TfM z5Me^y#&&O*{DC>#Hil*;LvqwS4oG7{3u}vo1-CT=h%jMXNTrSA#%2x>VL}-fQfcG3 zvsVBB00000000002qA<JLI@#*5JH3yLI@#*5JCtcj){nfh=_=Yh!7=&5JCtcgb+dq zp_EceDW#NBN-1TGF~%5Uj4=kA?Q(>TLhMVMek*gLSl`~=*Jw!b*R>QK(jO`o-D3yX z8nWnzR{$!xn?nFDk|medC~ADS*cQvT9(J81);X<$Q?c?`8h8(*<)78xIJVy(d=C~$ zV%^gWEQz<_zQ2;`#$}-Xc7Ch9rP&oj2kQ?Lv?<T7R91YWM&|5*uspOoxfy|r8A6z! zd={74za@+pi}PlCxbk&7S9_Anj~X^6$gut)6};yF_8srU?;f3fC0^Hwml;BIH+GtU zVdDEF0EZjSCh=GRU+aa_0sU*^sK5-b1FroN)?0VKB7W)SF9^o1*{fe+T>Ob41k=5l zKU0a7OLF^-dfl$go-h7}QzL+Y){*s_;0$N26)yisn}4qMeR22{5lFgI{&8!-mZ@Zy h9Z0$C=k<T8#YR@s^gjv_(yKm0%ECWkQi3jD1^~R$*$Myv literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Thin.eot b/stylesheets/fonts/Vazir-Thin.eot new file mode 100644 index 0000000000000000000000000000000000000000..c1be9ee573bb84488ea6d2f25f963ae241cb24bd GIT binary patch literal 90746 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	Pp7OlXU@Sh&up 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 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Thin.ttf b/stylesheets/fonts/Vazir-Thin.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b5b326c9225760ad4e2b508f70695e446d91355f GIT binary patch literal 90580 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%0Dqy`17^BuKbh6ih1)` z1^EMh9@eOOv>A_8Q1z#^IS1=|Lbyk|^;8>pDQ-=);js#^>+u)`^sB`#1UQ|hk5YWY z)5&L#PECAgAH^9+hwvSY3*SlTi+KHG{yL#U;Wa|a@Ht+SUWC^_NxmlC1h3yj-(2UC zn*m#2Mu<iQ`7o>&`7(@voM1vGEceh?pnpQv971b~1|U_1i|zUDNNKL3N46ORb<W+A zylq@l;UNI@Zn>t$0I<rgRLF96^V}8P8&d&IYA~dxTGAXd))(dj-73$zVW;}59VUlt z-1gw=&U&SnE$COmo73y&t+%9E%;prc(P%0_zAN;RO~nuNT)yR#gsSq$iypQW3LmQe z70A04sw^K8%HySZVA!k^W$P^3e$pTirNuBG^I16T!GJyFKz%<=NaW(Z!)>R)Oe=0b z!9iwtD}?))TaXg|Yqch;@b<}Fwb!<_t9v}@>UY*}ipAJ2Yi!O+R90S4z3BL?UN&n@ zAtWQF{%mm{o6pYmc-8XJ*QZXsj@7fV^s3cM)UZ16!j$}vJ_2Du;~NBnbWE8dpbC3D zQUIC*MhyS&M4CCoC(L3$nrZSOjP!Y)fJA~#g7RegfPPd7%PP2^Tb3er?H(poN+A<~ z_*`Mx6Eo8-X#io`2WyNh&8uoEP}C)V8aeV-sO8v_*(|t$dHum)p8Slo)RU3v&B}fU z-aIjy>38gWVf2?_w&=$py=89C;knb^2e^}r@nC-?^at#xpCw*%xgW3J;ja^NJ6`{s zzrIPlPd+3$ty5U_FNE&b<J8C5;(f{^cyB7J9z%@&%9U}g?{9j)SiM8KK@f0G+J&OA zRGgD`M8j}v)L1H=6VPj!yp+}G?7*c!y(<`ixmL5qLzx(e>!#3VsQJsfT06>0x5+<Q za92ZR^X^_G8qjwWar3aDL3g3=lKhI=X1rP!gTpC8@rVE>?VL0f2>Rx&%0&zAY^=&@ zj!((oitiVUWe6vQAL9F8skIeD<T}1iwYE-brM6194UCuC!sO}sgNWNN(+S%1jYwfn zJm1Dg4>h0imGz};aH|=QpE{{ixoFGQ{3-F~oT|n<LC@v#Qn5m3w}zoO3s&GIV>CqP zcDV}`hy}cF!T<HlB7BbLi5RbyeJK0|v_cirxGfFzg0==(N7$0#p|J26pEC{GJ^tHC zOun>q+n?y4lI;VF?rW-wpWAok<;h<#k2bK30Aff}gkanc)}g_rONj53q}&815YKB% z6f)CN(;<Te<bXP3yV}Vf+0KqjKRH<@{bV)Usvbh0vw<H42y=`STA)D1Dgjo2T9t$Y zn%iYW&xzy|>K~|46Dn0wt%?FdlSS+(|G|Th4<C@rsb(5nBlNR_DyZRS3A=fPv|)&z zI&|`gwk}7+EMPu7gHUGZHCU+A0_Y3!h*HViK^~CGgXfQAMkf~*O^#+}L?;)~zfxLc zQkmBqZH?e>S!QNgYXoca7a=GO2>-H%1xGs8MsTqE`I_N<`GfKIp)k|?^tnX(m`+$Q z_GkSNa=!!cx%MDUc!zMdfZ85sGgHdW3<K=?koirBN-!xy7_SkM5>?+yN#VRa0^;d( zT1FYFE}gk~&8o!<feZ$G@`AiPGod>0m~}v|!E{cRF`jrq7Dhg|WUaJQvrVESz~!%n z>!vH3T^^Ar$#=fm#(^S|QZJQ;oV~*z+&L>*D023$pnp4mHJX|%9GU!An)T%hlI&e~ zX`<|8DQZeiEp>lU`Q<i$?i63@WGkqEWbdR&z2ikBds|!aVtuo;_bc@$PrhEzjS7?v z6RJy2|H?b!hxxn_%2Xz6QGW3OuR)2mP1H(6zOb3EX`+@ZUhDaJUnktoPD+H;i+p5w zXSJN1(~x!%YfHNe5Jc6i@{i29TKxr!tQL#ZU2La=?bP<?QsKMoZ@eGa7ofdUN2KSV zCko7<a2v$M^KGL8_%t{ns^0*%`85_%f3b!+)xSu`)jbXr@Yv4|Vce)OByCrgVNZe? zVbAFpfj3j7`yEoR;yq;ph++LMAj<C0%5H+EG>F%u&fNppd*56i4TjN$#1_Oa)klN0 zfVc==A5Dy%bIxjYqs%TIR=2W1j&%RLAN*jF=owYno(dYvPVqwVW94z!8gSbu^866X zkwD_ps;eYl@QML$!R-j81B($p?!>lEA_+o40C)I_GkkVmd}T*?*jqWZX!a`ih;r}2 zDKmmyTl!R)ebUlj?H=qL{h5@@*AnP5ke`ktrwr~NtSBxYPNOAwpKw(w2`ff0n)D{4 zes>B(xQ`B{@K&S}7A}QsuMpq`UMv_45srx|CW>}cR+LA}N(&;vTp*Tmj1_Ad9mjzC z6v|2&?9`PJ`bj31jH6q)!PwjZ@t^7~GV@P>Talmqf%3?M`mZ3a=-7~Yy^bwn@2@|F zy0T&5&iOz4GV03D=HH3=Ny7KX{(_u$%KZcurtr9i3kKOt52F@Bqo#TRSc(^g%m5)~ zK>HY2ttkirO93#wWQHPlTIm5K!RwTTK#l+#=ZU^>00>Ai@WyNZ>#yMp^j%KRd;_vy z16j!Q%Zg=@KdrK~I1=)sit(x925C4`{6a_;H<*wfANpn>wesz3VEggSwY8g%Z~x!} zpz7r2_MNx<1L;R!1F$A`jy|FspS0zsMT>6U(z>E{;r5o+9SdufZ-iaLxm%}>$>-8N zE&6co!tl%^qY<*sonvP}%8?K>eFm3uX#dXwezcwMvsv*Od0_7$rsy3e$c`xx-{sD9 z?6PSFrT~x=m2`j-0}nTTcxpM7bK;<=T&~0gK)WuFkmTH<kd=e_1WrNva+cpjd#;*( z5*Gu+5K6nw*5GBNa&=(?k}v8vRGMnGG;Vw0aPQOjGyU-M+nR<OO_jq9i?3N*&yJ}J z*)f#s*mCcddYf%+nsw^ow=cF0+%jLh`0YzNY-#I(HNENHGv)cWV6Vx-)<o^&BB2#N zut8x?e3n-E*kHu%mZ%kkb_r||!D!H-ik0SAM77Vvo-!DCRjYhGvQ}pGbxdh$sEFdY zQn^VDZse;aK$GVQ_nS{E9r)E7FPVaP>VBh=$l{Su+tNl9%_}IFwz8>lS$k-Sv#_PG zu&vDFDQhb(Y%Xvz&)1Yqo?1R$HkoQ7E5uY~Q?x%GqEg5`bUB4u`=ePk1sQpbxN7Lu z$t<kS93A{>P2?}%T8Wy-qA)o2XXF_fg*<rC5eXbhMMXiM4(=JECUW#dMiumUA~_&m z6J~Wl`4!|uY;G>AX~55r0;=Jwwk6mPmjbjZi>NdSdXUK_U3_Zcp}~^cv)ZQYs0mJ5 z)KEF6IT&4Za3G^@@sxkZ7d2(KR8DG7k8ituWs%dhG1DzJ4qUvns<?0Kw7dmR9>2O~ zdB-`6V&asFy%${)53e6ObP!ttYmK;5{VmGV;6xeFUF!(Fssf5(jOjQY7a|8_B&C3b zK#|qz=0cDbQPL%W2whiev!_GQ3E8Z?h8bkS|7LA*0pp6G3NZR3qj!t_qZj_ibZhnP zy`w$b_lgg1We+SB=XaewzoKIP*<I_pcFiv@pTDcCYM?a~Y8|LrS2-{#6q+<p`Nb7q zswuNpx>~LSuZ53>q+SC|mI%WFE+kxe3*j50X~E`<lbw8-s7QpmH8zx$FJe+qqG5X( zavK0@g1>;u`1EMi(P@J>-#ouVWj9T`iJh;+Aokv_4u~1Bz1}za2llpF%-)_1dIM7# zeCASMs^!2Mh05dMAR@7HGH}Rf(<pQZ#TDbR&&ZBWM3iCI1pJ{qe|{i8m|mPqbviW^ zNT8K)6cgecHZ3rN(fu2+Avo93|M>Eb^S3N%4;4&Xe&(J@Lk}I8J}Sg6n!f1!1L~z+ z7uShd)dv?<H|2M(Jo}QKo=eU~amtyOzIbMt`dDQ{LyJ_{TBrV*`Kp>Qbnw&VWB*ic zR;~v>%^^941%!|J`+LUzsq0W4!ux*heReB<e>>hUQ|`w5fyDdg@%PuFpWi5mJr!~H zQ$Gyf18vrf{aLP1{*K(2xX=-wj9f1i`W9HD0vbu3*noglM_e$rBM<5!ME_Ixq{Z;D z#j1<q#qmIn%ZY-Mg{+XU)folc5mp{o7~#nGG5ffjjl<O}x;ft+7q0=e9&Z|6+?!); zUw>q7Nzas42n+SSE8=H8f3S1%o<~Lqy=u}~_nkTKz+h?V`~!0bFI*TkmJjTg)U3*> zg%`hfRgc-7>sn+9`qNjxp}zXV){Fjn-}0V=PYegvJ+i-ZWqkc5(*v`v+|<^8<e7DK zIdi8&0b#;@W2qdMELoQY5vQ0Y_w7<;=0pyr0;LPPE+AjNeKcje^!vZ-nm&6@cMRWe zQU5Mq$M-fWsR7MQH0!XtfiVcrBli{yY$@$Bl8bUAs&m3oERkr46hPE(#6L{(jy@{A z^2IIU{L$M`$asg?iSkqKl?%|1yl~|xf;E_Mt9YOEM~PzNNOuEY_-Y*sf>M$GNbo7* zeJklZaWERvUrj<V?k8Ia1+jBy;|i?%sX{I`2jOaIXrVy~mm~YoX=m5$Qd5@v{hCky zHe-hTBnnUML7x&Z1plo61m_4Cg5XQhc*#IZ$P5J*MMLN~b8ru;YC&8VG{9-=E-5G} zC@v_@<Ipc!=DQr>F?FO=akLZJ-K>y;mejW7Sam6a?f{1p(6lbZ>A{0efEM~sCIP*y zeaq6`=BUk9*4(>fbNjmcc22_1z`INMyU~{3Wt%6jxp(KJ6JsUw_RpPm=3rZ~Taw(x zZ40(eo3n3TiSA&@+<pDiwk>EY_K2dVxNT5-Uo@_J;mUd8c>jXMg@ub3^vA>Vu6$u# zc)j-KLV9zd_U8KV?3;FWH4Ls_HqBIMoVIk`U}M*=8)whHaaUL4;JT&LjD@CY%hnGz zbnU!pw!p>?s$Jp;F#ml5_K6Go#0^Ok83hn#=+c6PlGyz??0P5?;$UZr<~5CR4pXh& zR7u4DbQ>$U`EX86w#8EIT5v|ujLjXn?YUNWS#a69rFY(KGA&b5wr^E(XPz^+*koLy z)1STZa|E4>!U{HBPLqBw1YqHq8Sk}%^V(=z1h7LYm|m{T6%~CO1brRtU<$Xz&?xSM zoYbg)EkgrWAnnct8=#t+imo?5#Q)~f8atqD*HBOo4n4P2k*<v>Xg&C&^evyQiJmhl zzoDwq?~9h#h9+%~O3||>g<|DpK7VC(WB#OFQDb!Xe`q0{(b&#XoL;LX(~;8Iy1TL6 z<jAmCv(i&oS6uy5<K)DL&XleRADUTLD`t45aIN%?{1|LAkSbEm2;;-;AWTIpAJr@Z zm?UDsLBD?dgA8IUmPlFJgjDEA;2KGh7;Yv94x+=YM@bzCg<MDf@95M$Z!zm}HO@wF zn0nw3>M!qSZvn6HM8U7uu<|v`R`AC)>W{(aCu1{QAeSKbFd!^Kj^Z^oJuHehkIoWo zlzX@cLNnzaj?N<K8SS^B{VQ@E+6RSI<L%!}wx@)#Q|&QWFg)o;;0FpUWxzwBSQ-En zQb7GFZeZu>-C9W`nZ3D$U9YZO0vv`{)yI&yGYv%mBclc4JCGdi9=%JP!|#=kg*VxA zN*wk~hu{+Khpg`qGUQHe)b}SwA$QWK@dvmQz?u02Fn1}=*Bys%8q8`T<^1OId!Hk+ z0PqJH@3zW!mMvq}Wy|o58!!r3O|ecp#yVM*K=qOmwo$S#YPQkPxP6aRHPlTF1vfA2 zy{fXRdUac$_UtHVa5K)K2a#5g1I$=hMEHEA`i22QBt!WPqsY;#poGB&k1u&pjRyJ! zL771mNvaX!B{&GXI)G9C?xBY&7M?fjz+q?g<{3M8jgE@#+qa_*$0mTymo*HzeS3Fq zLKzOwfYz}EV|rOfIh9>>FAII*ZOQj_Q%=1PfBmWVH;lg@5xVGo`X2ls)L+7XYSRfH zVA2!3rub~{Xs>=9@<Gek=i)B%s@iny3*JhY=vy6of3#Pu6d#4HbqSBz{#=m0&Iile zy(U&re_9LlxAd$1kuOmHs`4rK7yeYPKr7gE$>t4zVTHDz$(IFR<N0{zC~1uBGvRjm zWwa5KK1I#nC5>wRzyv}4s9)|U=@-WQf5Sh6*I4rgWB%|NE31%iit(}^jBRav5j|X! z>|t!HwnynXqrLL8u<3`{wc7mIcfM)<%2c$Y{&)-YcU`i-3BKxte;H%?U2;sCR~ci% zXVMDzo{`6=d7aS*Bsq;bN#8TA9pW_LPlYey5BQY(SM~egU#%0$;>7@$hPkZ9o8i&x zbPPUVx=c{WB@w|<5zUXJr3iJbmQr9(MRB;~K&2lEK$_!ObF`jvgf%dp^`z62Ynt5D z0jWj3=5FqMWyLJ>5%y!Y>E_KF89P_JXmoQl!r0F4GIx$Yk{^x6puvJuuAI@=oatVz z&P#-TboV{<0KBnR&L5b)q@4R=-`PKN|D=kFU@mgDvm9oZ)lg6{D>v^L_A=iSi)hXa z{=S62lkwMY@x9JzqFW2P{!ycA(sQfPOTQ2PU1X$ao?Xy&mPXfPt7M;u9p8Ypo{e(^ zKd`V^-2gxE`19}?`q17*9~6PXy*28F<bDwn{$H%kpZMA!=Mp~lzoG&NVhE!^tb_1H zd8#t<RPkaTmM<B&LQ9G0;ld!f#Qsx`st++hv?e^^gW?6gEfY0v$;p{li*evjZJ?$3 zThdNnD$4<sK&nS^m<>k7WUmAL5Emq8>8|9y<ad?hn7PJJ5H+nFKXqm&`k%+%R}Ipy zB%pe*-}3c=uUT3((bvp=KTbXFYlduub1y2$@$r!F97*h7jy_5;2p;C4=%W}#!$W8U zEGU9W5o1n~@`#F<+|Bdyy6=dek+U|kH+%lhM0#Fc!|@I0c@ORVaH%_o<Y@jZ@GE2! z<;4T!r(~V5sG({{2ShNKU2$pzggp65ay1MHryk*`MT{sN#)Bz1qk;M9*@@&}#3tjs zINi>4csyT|ADK1s*HuPje4|2!qL`L5AsgW_Yf@#a)$5%erInbMZx^q>5mld3GaW9I zNfK`eRaTZ(n_nuAguR(r5TkXl0m?wW!y0_q$Buoa{F1?c&cFlcJg8H}rU`udgkVbM z_lu96%J1jxG(MeZfz?d#>51)V%}q9g8F%@w#gB#6`1fV0Y-~Et2G$-sAw>@Jf6cnv zxmE9&;m=r4E}yK%mLPd!97|#U=$}(m;2nf1UIIPcYaAYX0XM)B{YtzpV<&WPs@rh` z>DhS-ol86a_6yXFgh6fRhYK`#NbUsYyc0Lvvtx_VE^#g;x2_DmK8l-%dVf?nfq%pJ z7k39*Zi8hP7;EBjZ?d0_@?`OVZaqGIZfwrjE;_^FV`IDc$8-oU6mrDN+3nDmun(~v z1RPVm4>VIkSHQ0(!4yDXBaE&-00E}+c*Zm~`<e{}m4E#`W490NXgKSc7x}t9p)P{7 zoR4QcKei112LqmUT!%+tK6fkqV!y5npS>`)W$bf}myCU`jU&PH+`2yN*Uk-8cwy{p z{*1@v^<ulO1O2=>wr6ZGF`vQH`%(V=_5CEiWx}^W>@gF43uAjqeOX*R_9Q-iX>0%% z8;qMBH}i3056zU^!nNPn-%DeQ$F8FOum`S6^tW67MBJ<EM}IGmb&j<q=Gu1p7<IG1 zvCo&s`o|_E`ka*Lb4*DU8#(=68S5JR7xjr5{Oe17_J4h!px-NFt(<-dyb|zi$d#ab z0wV->$&Fa-({MrXnUCX#L^RY8n@&vSZNLl1_j>|61mC|2pM5)CNEP}6Q832WP#$Cb zY5ftT2(1N=(@`d)znjOOHQ_U974SyF#81%?M;*ZlLe}@m@8SD=5vVcxN#Ks4pYJ65 z8OIyhGI~(7(-~#w@qS((GmrHoPGS%BgARFP^pn6QK|kM3_A`!c!ugW)Jo*7&qVWhV zUzBV8d_h_06R=W<2eY@7O4y++T3hwClQ(N^Pu~31w&FGND`;y?wEgg8O`>hh>1~s^ zC|J*97$3(;p}7fGimk;VM(7W*czgy9?{MVuykRF~n=sFgM$j4ZaYZD%+;iKe%_9Iw znip|A|Aut@<jezC7=Ri=Ym&fI0S(Bu&-aMNW%1cwbt;#w!z5ALkasSHlDru5#yHjr z@nZHC@oYYSv=cUeQ#+vERwU+5?XLa0cEArpOqDW(G2P0?G>+Ip<E1-XY1jBS#&m); z%kz1R8?~Ab3gRnTJHmBAAJ8ReUP&|;nipjEb+QY6X!ANDp8s{2FZ^!pkuOENC4BxT zgiPsnEuId&-JX1wb_dH%Xonk!#w56<+2ieIC)?53F{TeNCfqeNrX+IA_?Uh*KBmva zeUhN{fmTAY5B{uL<-+kXeTF!td&k?|ds@5K6y!rE#`KwxDs_*y>rS?tpj+IbjS1(U zqtswbN!=n$8U?MtxOA*Q>jSL{l6}znbKRm0Ef&y<+H|C4V20o(r|*-5Zt-t%VWQo2 zUu~Bh6ZSp%HaS)f={UeisgK9n;j$s?Z4eS@9u!@eoA3&lA3%2?P>1F8mBbY{b#hBn zs5qR@@g4L?S%aX-PX+$PF)4+lp-<rBAg4`3$f^DsG#x5(C(ExI=l5mae02qaW6Ot* zt|$+wKUAM%0Lf`Tu&*Tnlk+X`I$PhYKQe~_!f>l0Me-W1xL%*0=7~6>%PwDG4jX&a zpS}0e%Z|J(0?&E=o56OTEhs#U3DQ0wnj;Px@^~bi<4Z;E5-cC^7eNLb0uc~Yhv*w5 z^x*emp{O_(L(u6s{zC)v6KD{mK$s;B8e|ZOeyA0plY<&8L?i2CA9uEQdY*Wt$DHAz zG;F8cW+0@X?ROvf<2-S<`r+H^-g^?VsR|HiT~8m11RG7M7OTTV&_J`M&M<EGTro1N zjhWUTnRJK^m{OXZnPIo-MInq;gwuk-l!81O#7O|2BQf+?aj2xYipLpKcI}skiqrw0 zl+fuob_?=L5qt~rHYrupB&A0Tn+LvO1~Z0jjFrsXFvTa!rT2d?O$i&UHmlu0(~5E# zTqD91_Ajv{?`!6^EiGnrl(rW*)3UIb+s`V5?b%>7$|J)Xo`xC@aekD*Lc-a<3+us8 zhK7KYJZGolBqeqDQ#eTpUGZ5Z+lq6>9+oRlKWB2~sq+ZDm#JTBH-64ewF5umxJx)^ zchjMPr@$u%rJD(xAYO>Iz<%<knk7VPep&m@a6==KaqaoI_MJ-^P6%+u8X-9@snX$u zQFb(AGq=qhn#XpC?ojUf^$$1gfpbjOT{Xw$ZF)P$zQ^@kde;(!Wml-R*MEn@j~odF zI=es@K0akHXm$^$8Dwz{sR^I)u_`;k-yj1JZ(@h#%aXiFzAQ-#4T}k}@>+~M(`*y$ zW1NUkJhvFy5$gmBhd`Fm)6!xJ@`0L5mIYDa#Sdz5R0upNIk|EtVmzU%X+OGhGAKmE z3#vx{FaPAeb46yi<*u!^`+Re%EL>fcN^`p^>(s#wD{J<j`^Kd1uKvg^b>T>XG2k)E z1_by?^alx4vd%me^CSDpCDIt?eqVC#8gdjq%YqKN68KWI4>+<E`0cGYK73at@ukp? zaFT#8g}Ea}4eLv<Rp^R+lm{7wm7I0<bT>8>=ck(th{x2y2(By_nO>T}JeV*kUQ<<8 zQdHp0w5ADttdB#1xJYBHh6yEsGX>PC#P6q>SRy*mg?^yki{A=Wr8ArXyeTHHNz+Bk zXV0F)bkdqsQ><nQDtN-aP?onb+JEzd@pX3`82EOis_R&7Y(>7;Yk>kf5G~)ieiCqY zZ`?Ym)f}`tEwF2Q4&HgqH3Kc*j#x$XA|9*UARZOg3l;IQ$$YOYU$(HZHkj)My?AL+ z6m!AwNS#_e)IF`GsR0?I*<J#wAy5VSi_~c7_526_KZVQ1m3`ViJXJzVn9ytF`jUpu zZ3CpJ$HsdCp4Tbb(??P-GI3z{U6rOQkIwEdEF^d?lhK%(2DiF9Gb6_rysvf5eNVT~ z|G3tuNMQ1MOZ~K(SYF74Y-{=>;;Yp)19inkSy^ndznBoU6eIsX{f0lXpHsB8b<@&= zIfu4OV)67qAUn(Bb~sa0b^0r>VmICdD}X86kz+8}9pQqQqfW1*=_UW51Nhj}o#Akj zzPcUQkBcbAdQnqjL!Lh?6_iEdGPa<I;;rP)1`JSfeQs`UI6G+2qq+d%*EL)-vf%OU zH+};ow%ga!PqT24<B8Mq8<t0UURPe;-(Ofn)J$$cm>nOl@4x-Fj<xqDC<u}e1vgBd zY}YA7y0wF~M7b0=N@*Eb|3G=PscCI~z~|GppDV+W>$&T$t2mXURI`_;R8-XOEibMl zx-4~qEHQ8S*U}y2N}gw>3OwOB-oR;3qM{`}Q%}cEV<bIIXhnT!ds-<6@AyodF3sY1 zNa999Z`>1;Y^U4trFL{nX#I`1<2(geY~V470D<%Y9%G7$V?wJiT>!FSLw!jx5*Ky3 z8FY%_m_dLm@H45{3P3@Z>uKY0A1hY5ZPK(Ulcu*#FNoBHGXq8>7lj0cL$eWhNs{rB zdc&_3-17KEV=SkkBxz`ENYTuJ%R>eNY>Wf9g_XP54AwSzq-1;C>ToSwiYz?S=3`N- zecC6tej99C1;=?4Z{Dqr9?Axk8DY59z9`lKV<WWuyTfzS9qB3j-YSfwnhJ`(1;g!n zj`zl1eD58kITD&1odc29L}v!g!oX>OWaRf|=uwlGoZE=tKx99ciN;NN`H|A1NKJlC zNljHn0-Y@o<T+Op<Q{^opwmHs4M4cVnSuY6NKw%&k#$^W*3jzIo2I+HOMhV_QO9cC zdWpqskk?pr(WuKz#5y>zUA;3g@AbzIFRo-7irc<$-g%mQ(=(&xtZMTs9Sh7lCrBc8 zE-$Cq+4CFc#yF;1Vt)5ve)XCJkK4ox30_A?kJu6lwghgTA<P*}cbuO#HcV=1=xppP z!9n%7X*VF!f5JW>8$P$-Yx{w0nn|JWYbGB)ee!;PVh4z#>9@<R_A3#n^1wS0PiBG? z7VFkaCz7I%O*%Ahn|jyT>ga{o0;fn(yR0~|{5Z~isixWOE#FL<Wl{Ft&nMC*ac+U( zhco>>?Q|tk?zGQLG37LTKSrmF-}6Z<Jnc;D%vw7+sNn#zFZDKlrtkSuy9dA8AM|ex zgHJ~od~~LTY}9F3ju?q1s)<!rWI*~pu<vl75fq9*QSC%4wl1vUgach!!GzlCil)k@ zlHyQaFp!mLw@{Tu6J3uyjhY{9r5?sdUKuHIwvkYH8rq<a>7lL=_+nW4GtTce)@m}y zW`{M~neU3G0?0r%?Y^(rYP(W>K|>&%s%)x$>es6JkE|L%58}Mmi=TzV%Z{yCWU=ba z2BZbT{sEx7NS@g^eV1iZ5|Z$fy^=Zu07W>O5lo%$-E8?%%sm?tBl06%_WyvLnBxoO z`igUk^IQ=PJJAX3#N^IAg`ikTl4MASU5T05fD<Cgmk@lUn$4AtBUWRlva#l=_b(U# zh~iy))X@vFF_Y%OG+!W>U=+2(mqr7xJNd-y*1xbWKq<2Ke#W5`jTR$9z&Nk3#Mm2f z?i%BD)#VDZ#C@lqI-Ws>$X_~oB;`YrX=-eXH+D94VhZ{BjoQg0R9Rp?OkAl_k+b1o z;H$GEhufDXmzM2HF-nOwD>oAehbg{(PTXa&cYJhXV%k@5?8usD-aCK(_OH%5*xu^b zmQNP7<uf_GcC!)sJ%=t#B1_J0{g|<?<>jYQgWsRpzQ$R5i0}GwL`gbp+8!sFT0@+K zO#OY{3O0<>&Klnj)K2_<;;cRXwe1k!13Tozc0c%PyCjY!?$3wusfgDH<nKzg!2g;} z8GxM)5holkM$~06Vc~de4X}a%QbGbf2Pxp0BY=io9PySCLI<u*IbBEbu>>*10ZXkM z#{((4KwQu+R9a70065y*65<a<V!U1%@a2#xju>OvU4aAMsD7U{oq5Ol>u>X1``Q-= z`e!j#T3C4C+)Gv+Z(Kb)u&?338MzOzY75Rpn)(a%pVri-j=q8{b4FHKsHHfsrl&9J zx8w(VDykW?{PCd^eP{LNH*aoXxJB;X$_k(IdU`Kw>2E19Inrw9=M8LbNxwl`*q2jo z4CGgZpjEqVW<+&JDbCysOLov(nw5<Rb}pM|OSizbQBC+V)u0T#RRl1DAPfXQ3IuAJ zv;tLC<oPq)@N)n@Lj&O=X`5gn0f8P$C)n2{CT0UrL<qe|lMu0urCE`l-pJ(Iy241h z^IplQH>K#=VYN!#y?`H7X4AKq%19PBDS(ccS=8FU<&hoYwydxdF3o~Sw7l-R*%WmM z5U!mU(KgMoRw_CqS?YU+uNjI3OBvfl>rQ7?K3g&%KcSCgfX<4{6dA!R93TL}oI^m5 zo8Zn9gvMGlt(;bnn?W)_s50r-_D6t;sm-UEcnbg(kef})LxoQv3y#hrx*SzJkP$S% zLCpcaDWHi&c^Ixc;Bcu=zVLuL--GGtQ%qjA<mw_>{Zm`#&;uD|C54f^T<g9|E>jAQ zg>s@ZI;;JawS|S*ZgaZ5^$wPn#;%;1YB67H&9P@W^vcnrG~@Ji<qVH>!zBgN0%eE_ z(;18@`q)7I4TDnVQg)Rm=tx0qu+Er<xF*z;ncNQqFg9amsy&m-yb0`6oY_bC=^+~c zM?A%u<!42qn1*K(Hh}l!B5nhqlU<aw0f4sHD@rTcJ)3CvraW)lRxocuJFI~W+-CM% zqTQ&RKHgt?vK^0G05&Sd^cWu#aR`oxiZN+%A(QCbD`(PEz(*31A!v2lv*1sC70;sB z5DPT<MnYM|-A-d4$5*9&f%uR(+9584x4T!?umh;wobfSnj0yQ3j7j5Ku!d{stC}34 z{8K&~eT?xwPKf`KF4vxgR+lIH;LlQ&m&V6*Lby!+RkEG@tJB(zDzWh~oe=&l_l&nA zFAK<m=aRh}n6Kb%#34m`t^YAlM#Cub)gEsxE4AB54+w*?^#a*Ti!X&$LPKDptVFm; z_1O1N4hkaOo$YNc%{5h#83i+f{(ymw^M8T&>NqVEA3*4I7Bu)+O3UZxh8u5m;_Lqz z0rtoQz*v@(M3S90?IOS?*aF!<YI#{a^S?lX9sTP#Y{>k9381pq&YETM!j34VKmSXR zOtV2qh!+9P;Pc7L4M>S#0(=OkPXeu!KwIe8gWGebzIO7zj5i>*oh3;Z98`aE30Lc7 zDaCY{{eWW)G>z;_#Jh+bYoM=B;wmcK`APz5VD6j*(g5;?wQ<RaTR{vSa^zywRW9HZ zA+qw66oHB+863D&CTW2FP9SzdaR0XPzJ$=5o>E_FNn=wdAm_)!Zq|SE=%shx**|OF zyvD{HzY|3yTw2u4H_n9b(F7hZ_9)%Xuz?~T;W=d~5>ZOyMZRoULG30@btQyi?p@&J z33!SQ_GJ-Zfo+s_Pk_D1R>vgW$vve9HpT>_mu9!1-6u~GM_60iE>eHxl$*|A(m4Q? zS3f%cd;;|y9)5d8Pft~iCv%G8Jz02WbF<#0II$~M#MECOy71g{S<2%a<#*NU?5w)_ z8S@hB!Jdb#=Okah<{QM3ORCnGnp1E%3dq-=K!Bz_f~0zaQAXYf8T`TSqnBQ@Y5rq} zxj`R%`_hBb{U^IFI6fEO*VbJ8A)XN=`)~k)KKUDf9Zm)$fl~PSo@7E!meXOi0IvqQ z4P**SM!6&&iGmK~g&`^-mR{51iYl}LR9$?%vT@H=;8US@`Q^b3&p>i8+s~BVI~m%v z6RI}kg%o*jFt``P0-s6X9Agdt2XBb<TJeatLYwXu=EeJgtgm-NNdf*bilhp%9wEUf zAg4&me#&Ws2Z$;nYpDQsq%7-nJk<uCliC;njHbl8Yr9K|{XQU}I#8FOhSg{aOmbh3 z?`%>@BZOLqV~B}s;C@`vNP;BWft?65xfDS(co-73OLA2d76yaaby?}rGVF5<L)_ET zfBmYn%WEscxmjMPGaJ|&auP84Vio|TG9fi623Mv(FW<#smBnLbv&WM+W#5WeZECK= zm1;3;yHxD)WoIyp#pjzDt7&fTnt-6pmXH1tK+9%NhR0)e2D4li1IJpXbtYLvFI^@c zLoQ)dxb%^z8F&*^_|iCIUfd5?8=$_xqKP?^ug2a5^^c5o^t;&Y?K+-<cD~cvVV7vl zk`UA0|J>2QK-|HE(&AiyR)!rpK|&f!Bk-dTFVO{Ps$eb=kOwo3EB-iKb_hDa6oY9V z##9I#+h)v9F?*N9Z|c*TFaF)8OVW)-quF9zJTFwV^O>AjMRC4uUPIS;4`1m%XI^ix z+1uRuTWi{Pg8P*$64q9iECrUl(UzI(+Hl3CQ|4ah(dZ-h00Y?yPu6XZwmZp1k|YpJ zR>;^=*bpV(h>P`-kxZD#>n0i{UX4>JFtM?;80i*LvZ*ma&iH@VA*kiG+nCVS3X5A& zDA(h%O|ee_)vU})yEWt@2L?&Mq{ksug*Y%wCP@xlbIQo9AykrndOFhve$@6^gCfhY z$2y9ypQ$sK3@oa@=LVOHXi5QMI-SM3c6vC!WqR+DD`yc1lF495Q_{;yr@@FNUeJ;; z<s3H9*IHLl>l1%(O{<z3-gdn^V?S)hnl*H7)xd>qlh`_|&F+BMSn9!Uwr3+d_?*ZF zuD=l`jZ_F3=Lzgn9;=`sduuX|P7;61^{q45XI$<Y<gFl`vCon+3CTF@E%~wuu?qJ{ zcW~JSlBIOV#CC|&XqXVI@C#|?c)OX&c3P}L68}Y$apWxNeAo-hgkT&Pv9L9CKq)~w z0>^AgDkbpQYS$xlGZ^Y7I?XhUX6)|>03)=jl>qW8ll1%8-%u!K<@D6y1&F~j&Dqgm zNeS2Pn*5_)AN$9GLn|s*4)o8iEj6dhN|0T}tk>whw)D|A2A6S}qGVulMQ(X?Uj^Hr z+txX&q^qYgxN+Kf-aNB*<~i<;5Etf9hBT}MN)vpuF!2-@QCTTPhx`d}O%c{QMbrWA zkn?;rAvvVAl?knLTIWpfZmiGs12HyLh_kp+<Ne7!hE$0_0}B%diUxxU4w<|YsZAsX zgC|Kc{4Xvg9c@wvhc1Jr0z)P|AaF63vc)U84}&BaVXUJ6Q8snS<^3I@+<A;0pVr&6 zYjQhdt5^N7t+!6xtP}g-193Xto=k5;;EhL&#%F(P_xrLk%<-YcDW)HY=1gaHhfi}{ z0Ax)$<B1(JM)K4Bvv$4!9j~f-#io&wE#b%t^%eE01B2Ey+SmqUi?Di81Rx^7t!<{J z`Mq0$veI$XAB)-nC<Pv>#f=KJaIC?5RBHoL>Qu@$!TmEt1}I#p3kms?EH3qRZLM`3 z^&N%bSR~)hEiQCd(hW&>3Vf(;eV!CKW#SaU<|xq!Dr`C-$Py>ap^9EeC?Ydi8WP^b zLH7M8i2Il<mWy{<m#MGS$r*2Rt@WjBW<MvRHlDYx+3K+x#HQwRj^!$$M@s*`cSUx- zb5e7xuPR#+)fYbf9d27#Hd)GVUs-fLTbiL+TC&;x^Swb^x1%%`56!r$<4S`V_{Et% zF-2OJGp(;=+B{K=@4kDJALo+Cd?7YS!(`(4_tGlF#^wqYWZwWDF$~=~KBT2U_=5E? zVeDQg>9n0C3KeCMP^QP424<Ek!lnjh29s|R1fPQlax(^@>;~ce*8|6yU`t`-rn?uB zjiR{l$bH`>ApC{<XPU*V0TSrgiVP)J{p&yT*>^fkl6l=w{cMjjr@puRyMEvP3kV5+ z&4&+U8MExBROHyQj3+;-Tse<9!`DCj0+@YUeNBE-!~q6_Ii42NifQoJF#wsCQye=a zNX!tpEi%<+!*iEYDIWp(A^hZ^hjJmBUl=N+Ae9go9jV$t5deqqZ(stn)+yZl1mnh$ zQGQNUdDvb{W&7=~sh_A*h6@^2mHp$R2acXqlT{p^akUYf)u=PDYn4KWhnWoqrF#Cs zb^BOo{Z;qeRCM_ApT5u9V|_&hHGyn{&T7dB+7olqFz&%?pW$2-@lzVIJ@ML;gFI#z z5wGl-ldCze{R3}>xW$tcHp}~<xFCw<wdvRy$v%>?W&AV5@8Yu+$#0H-_OuX?Q*|SV zC46;k^4Kui{7q|vsH0)(9X9W$Vaua7VfJ_Ev{d^HEwwvgyv-NXkG>oIyars?@1NFB zBJObP3+e}LlKt?OT0EZmeLQPIoS!gv^g=lmHa)6$_Q_c9#Qw(P579<By$!~vS?m+Y z+)Ox+#sxXrO)&^=8zd=Q)41>99wW5WQ<f`7FoR<H90d1@lMPuNB|#|I0+Bl+`xi?e zHuz?5tl6l(p#EU<^y@DPr)*R|R5C^vtBZX`?~VtziN6`mMwHS|Q_iv(r95^}ypVL9 z^Jva^em?nKLwP=rjHqtx%)|g_M~!O^j!4)Ev^wZF+5iCBKCZ`c3$X6gfC!dWyqN}6 zv3@3mqKvxvlcN?}-ZkpEo2OrMB%HEI{lf?i`dMvkC!ag}-lg1gmQmSV-B9sXVwe|* z7sdG;kbN~z-K77savv~$^1w0LVac9>8)|{DQdlEw5H<;0g|kqh{s3^V4hu(wt5E&s zMph6XgYc5aI-S)(RW7jEM+AdA>^6jVr!iAuN{VSj2O5W%909u#@?y+w$a4>sut+fr zE0ORDml64b6=2bYDB)P2UFWUMs7W^<b#`G^rpJNE_nfX$mY-j+u#6QH<aU*_qN2iu zQC3*!@5=T2QstBs^P;9;W1u0Y%2ElW<~(!v&Yjz~ZQeXQymsx-(87gt=l1n=bxoe^ za@}~t_19f{&C#o`y7G$4k6d=?C4^af=->tCAK1V5oSnOO?mm0hwzIaKwPX9{t(&)= zxn+3M@TQF;Yd5UjuzuapnxQqTS1nw*@Qfvk<}R4KU~vAxyuLYobNXk`n%M=e+%=<j zdQbP{&dHtAI;KvU6mLdsLRDoH7$&YfS1??V*No!LUxiq3*bwYSK?%H+OHcz1z&!+? zdkvs&pe%~SeJc}h0F(o1fyf)HM3I<4dJv^8kXT&J(y2LaqM(B^f)hVHJ2>&Xqp|{@ z!^@t)ub||!(1hQmnn2U+%BudR+}y_g%1Zp(_CL!u6&6-htzMw+?`(~Cc20^<lOA6{ z)t2Y2UsxM0sQK*qjn6CjFAbkq&#IqS{=#a8PcGP9RasuHyun<fgDib?0dtC`Q@{Vu z!mag<3r~K!k^j->4)Z_k?eZD*et-Rp@{wpC{n8gz9}`2<dcw`t)F~x^knET|efs1P z`XB3659GHLd-`UT71tD>e1$c<x^d&H>I-m>WpBCj&MoS1?>za)oyC!GDFPL@@IRl` zYLAnipHbjb-#WSb^ONbH?biMQ1At1fVDzW@cMO{$H5MSR1DFuxbwm6<sbL~hrb1qW z+==swtQ(2#L+qonA0ZRS(CEiMlDvqD1WuRblH#I5xj-(+$<FXN?Rq4!8zlt^%2f3{ z0sf?~Busj~;1D(4!SqTAIe+vcd!(mMww`R4Es7;0J-4yMThzC;GrnO~l)c7m*?G>o z+UopZRj%#TS6}Uds)LZOnJ3FnmP<eWG$TKdm1eJM=`4s3O^f(iS4{CnAZ}Gv^`L5Y z<)rA~U8CKy=|-7s3LlUCU3gn~7jxA;i1|f}5Fw+tZ`!hXX!DlMkfZ)R_IDsZ(&tn| zMX!Ji(V`IA&<~5Ck-9L^dJBC6p-W?*kNs9mVNdbzqzI-*fyRpONzoz)zT-}O_tKG( z;lkmOVRgyy#u3&#vT^uAyrRE}K1^bY@Znecpzl*Z^!!UV4v!S!E9%mbk&OpNMn>4$ z5%h*1^r7XmAvY1e9ORWFHwVjC?#s^d;(GsTNL^VeIIUf%VwI;Qv}w{X)no}EOJ`!9 z4ryp`BXWsB^Mp$aG^k=gWJ4nrufHC6hbgz*GNn*N**+;PEyJFX*^meBE<ZiP;k$A4 z=ZOq9huz_J+wHc82L=LxX(h{oo@(=BrICo=od$ryl(aNQ*m-j#2LZyOX5W^U;qIDA z(YO%^C<2?=QU-2G*9Z2aAnhjQA5zZ{GzBsfP<}B?0~xlg{IVK%0gvJ#$&577N~%&5 zfpSXO@eUX<6Hv0rdCLJmg{f-3D^0B@VRwRR3JDp}56Z&Hwj8%Nztok}T+qST%7#j- zKajKZL3L6thnB@)I8|6V^RvyHtBbDqeskxv>gPkD?t+Tk!lH_bCI>d4XjOlEi(R~` zeM&}kMW#QT$x5TMrp}!eO>ucgKi$RgWkD~y-R-tL{JmUTaMxWo?<w|gdwRx{sm%d9 z1T0BL(x2UGHSA2~wgTjUBC;V5)d%2%ErM+zmjqpkcLn4W9C=8_hGh{RE0Bs%6+kH_ z)KnEj0zP*-jA(fb<#6FJCtaQLwV*~3nlAXWl^cDNzAL|kxG6%|<zc-XZh+o-@^{t1 zDa`5#FR1ORy)Gb2I{~+QlB)p#xPKv%J5T-j@RE6hg!ODp_hjYdIud}-?8w2AhJ0Y> zM#6b#s6Y2NW~u*JFk90AST<ZkX0Sr9K6CqQXKq%y<^Oy84#2pMGXI&kMbfIc$X&Ml zq_t&PTCI9>)t0xCY&EOcl3TP|t*o^rt+Fe*CdR246CeaIEkFpl9B^E2<&-m_1qdM* zLXJ)@B)JfBcL73x067j~>;L;^=1D8tNg&+)ojgr>-+X<(nKwIcUTW5gg0kH8O6Ci~ zM+~uZu5KN?18aqsc!yfxm(EeJVtuW%s4yiZ2M3Q!-@unJ$T<+I#MWOsd58I1GnXIS zN&ZQb+`^oiz#;gp<Pht(=u6z|a+;RA@-|lHZfUvu;y2a{+1J0^<6gJD89uPwwQk|V zXV+H@Jdka%&ar-3DPK{rx~nmF6TZY(c;V?2O7{G0ed}#KFndZ?`jLn3IFYx|DP}Pz z@QRy=%~(VJgLWRVdn28LgI)j|(=T~Alp9;0I2MCA!`>%EO`N@`EWWX>ytJs$nU}MC zAuXMj@Dh4_=CenASK_E|e5F7>`j8XkT2`BLG4bG&t<fWo_;MK@d6Lii{x#27V9EOc zJp&cLZCCZ~ZM6ky+R6hK>u`=G=i)bBTK3Hi-Af&giSQ@&i%a<Iw<jO`d>%atRqg35 zXg~IuLpef9p7TGy*Y4uS=_zPcT~2!kWabPXD$yQGIZi^#IF7SGxc1lupZ2Ac{EM&b z;&?TNo|VM=8<w}@iR!0R<{K^Vv23<~3v=qPA;Ld^nf#+H<-*VC4LmLJfSQ0`_?h`k z!53T3SlUzS=NGWA|B2oddz3A^@Qj3RGNGR#Xwdq(<%IT<9lvL>NAJHMuwR@0!8E<Y zgB79a`w18iHPiGm5BO-XUS;vwzXaHCEEy4aGcMjM-vb;Gpm>wvUWu32SZ=j!wLb^g zM_&7#fK9vb0^tR^-w`l=n!E6V#9MB;V5zj<Mm$_N1=w$}4HxfJJe)ES-zi}`t)I~@ zq<nDxIzX-D0YHC?rCzkL9O9S<OlTWrK*D@iiR+es)qa-pRkV9#`ajwCMLT|>nBLgZ z65m(Q7wGrUnYXBfE#$kb@=W9p(V58f?iD?&;8#I$CbC-dztK8~(|fVz??im0HGj-J z5Gv=a`RAEy{%f(VMXvjZz?Aee!|a;>VzuhOgm$~&XNT2qyE%3wX2(bEu^ys*Vej%~ zyUkVqTW`|tzp(wr_h#i~r!S%pZfMs#o!5g+@P>ETa7a=Loh{suk2@4&(6w&B&6(#H z<QK5{*@pb(gU)9`pHaVi*qtd0Q|z`4qm!}EOyzFK#<9HDPFSva?c{m6UmD+~#@kaL z1p@KDl?KeS?^`Wels)sl6~-s}9Yw?+`NCCKSFC=+xYgQQk~uK&9qq*nD{k7pEi+&6 zjklvlv<S`@FQs4lv1p4;2iUG7j!nUKKa2>Ff|l6TCmGk+TGryTtEF9boYIh;YsIlK zHjDy@ix&D$2F1WyECFeiV#!wQA-+C+@nU@6ZYd5dT%EJbu{;OAuV<wVR+k^%@$QtL z;nM^2qqQ5;7Vg;pWYva?Kg1vnwc|JV^vu-7?iHz-X?Vq2!=Wd!?UmO4v}+v;tlZ_= zy?ZE4@GsX;&G(zJP5v)`zgd0?3^B@l!TE5*AQp|+UFW`8y+nc+oNJGJ#T(AfHOl|+ z&KQ1k!U-SPS#7!G#pay#Yt0v%#k%RtK0s+_bHXHcy<kCi?_}Q6m3!_V#*Y9g4o7I< zM3#7)Ib}R(?Om76w`?gcJVh)2`0=Z~O})k(I;3UOH`nRheM^}C3jIu-yU+g)3K6^U zX3pIgYd@Arf?<`feH494t&HG3#*d;00*_exIAE3M_iwzo2r#rhBI44;Mbt}e>J?@M z`z`A!L9_S5-GHU_5&?VRZi2PWz^dOalg@SLKQ#H1=eo<ig4$ThDuK_-e8Bf3z=*eE z<x8vz=GzKpyMX!er7&U*<Gh67w+I+oqnU$8t~1Pmp|y}C7>pK}vD=Q|`JT=tUCf%q zcOf?8D;`*~qTQj3a9*$#D`$Aw#A?TbzSXW-dvL}JIV^)JXb8ngK3Z!wj#k4HdP-`J z{ID0EV3Lk4UF%$sQoXj)`p3DamtN>O_#*db@$95SOl!3d26i6;pBjTzY`23qovkxD zldF07oTbx>Wql0Z+@@hs9J6ifHIRnmIfMEyv-Z$Aef#KSyw(LP)+|~lj_I4i$=KN2 zh#vv*>`N2g#ZGx%6uu@yOSXA9A%^(0-G1R4Ja6099qlFllBJP#%?G`k2aSSN<^FX) z;t#yGLU6sE=QM@aZ*5)X+UTs@<1bvjvAe3Esj+eGBbvvQ!GiS>hP|7g7y4~xR}1|P zmGDe^CU<0zj`53VDkj^h_LD3<)0#<#fu^yP)HM7iYG;}0_Dslwql0?z?zDqtIItJ_ za^*KSdbV!dP*a5$zzUtx5Og{!iOc620@D^+qQ(zVbETK-4Yao4*08uhyVq#qrxkPC zp}97DZC9Jya4%g{*igJ?Yw3ze@%F(Do5M|oErA_7T&<BUHIdHBgIE+O+O=<0^|q3> zImYF$EM8N-a%IKZ#S5L~xfMG$tX@^$Rb97#+2UYhP4|Y}ocf)cR#z7+Zt)h><l_Zd z&X)5$?OOhJ*!B(2DbudKaJx3h^M=qy%eDU8dcCdv&DvP6r#9A~qm9)(6A$P4mE#nv zZEUO|D;sO~*a1e%H+Th09@*+dPrxs2wv#kO;3r1fNKa?|(bI!?6Ih(k`le7g#jLNv zv8bT1pwL}JeTIH$pcNlw0c;qffrWlz$ki;SxoFL2%cVutwQOgaHV1l2+9I2`9BeD; zZrt2d*fdbTVW4S!_sR-iVWF=)=Rha@UA(-QPH!$+w!7K6sd(9I?-$Oj1vc+pwj$)O z>#AG15`X-I%a`xjT)l%zJ1*|et6IBg(b}p!e=`ng=kLrdcP?7!tXRFNaiOzpKsmdW zsq+Js4o|YLG^7u}(}f;2{DAGi57UiF-p(`A@rxD|=^#bIzisgE8HM88*jKT%G#o33 zw_E6F*4a}Og_8eQFbP8}IeE?DiSg*6$ezAMg=?fy#OcCs*(iT~H?vo~HT(Vf#9!AP z{{};AMSoT2wK8>Xr1FP@>>nHEHRC6cgNS^>CoIY*HZw;C&v3vOQW4=&Gw5_UD-P(z zx$G>>mX5P)%}$n*V&4Z(fKMcMx4)siu>YbVtl{q6v#ZCsV6n7*CLI#`)~%n7HP;mJ zh$sdY3aaa{*H^B|QshmsFMn(1{?pUt{E3V2$X(o1vw1MEF3*3kxw5~d+&Y}nZ|v>r z->sLe&CU87Y|N+m={+xGtZ;hvZ>kM8tzTK!U2FLIyIS|BW@S4NC)JssGjZ~|hIBtZ z&NQcwm%MI}#5pwkaJKg)_WLW~g}pKsn069}xxQsPrEw>nacO(}t=ZzjzKidT^0A9K zTF>90am)4#h1wVUXsl!S{9olygTd>rnz!i>+Iz6i8vnj~?FIUZBzy9M`{%t@`r4lK zi}?B$W^q&}{-IrJ)t|AWKI2y0x29hdn9RFKwH)mw{BnbT;&(iCM=Qgf>)4OA7WN+N ztITJOvbgQ%Y}EP^8{vD|5$#><7VV=f&k|;<tT(dl{50EyXQXm!V=2LI=_osj>m05K zt^r(x<I}jV!_|uGAg(aM^Y^e#)}^Q$WgoDvW!G5lWZfxk>}u;Y@cb7$Z>wN8*fz8C z)_37Lh4NAMUfXBbc`c89A5oyumVx?OcHaIH?%jjyAiLK3E0G?vEn@duzr=d2-(*!b zFT2zFYqmPY#Wq|2gVkCeW6P}n!gljtvQJsou`;C0(#={e6PP75vjf&<HV7U+YF*9t zTVrg*n$LFQ?7OYjapVWt?fhHp1N{5bAF}*X<UgCTl%2JP+3nU7Y`184n2l&tC}%>> z+t^av`;g_|Sb;s2ZMD3>$}HbzI?`R(tK{bovvWw(Y{%JqN%tt<V%>vpA>79H+5QE3 z|0Z+sFS1Wqf6Rs~SF`un!|agd4Evb%4)%BWEWkCSd;3A$JID@N?6BDu)}y_^T5vUL z4eT201iKUTx^Sw;r(ov+?M`;m@)7oSYHxd-#qAkv&|bq1TRz8n`3T!$8E1D`{OpV+ z$j(5{_iHC`jw1H8TTTGKjUCm-*zJs6sKE92jJ@_*q@zen*?(W?*HYLwEk9%*w!M$J zV7H^%&)9D*o7iqhH6Zd&up2Cc?0wp?=@<DktjMyLoj_V@dyd_R^uCmN?0U;R>;_8d zvh8HI!lvS~Jb`<3;RIc}((YzA(B;UHm+evb3SC}yGhIA)`q`9K>^j?j0bdBXqU=WN zQ|y%OpTGlX5N)DM7x=?jYdi-R_9o%QJjOTR!V?|Ne`K8AN;!daSY1o4QQl^`mffK} z&K|V>BYV*HIiyS2C#~;hr>(zbQOw29&}AKCAGD>i|FqOFe1n1=x0i9hkPAGam-TDw z@ZCHmr;w|O<q*%}szZv4_$Hoh@#$wxzLR+ub(iw;D0oU`@3d}WA4}%Nx(G30J*KrP z)vzaBb3m%SsCygo<bQWU+VA2@`e&<QpRl{wwRBnTfIp6~0rC|d#FvOi*&c0>g|Kqs z*LL8mQU}oAuV>xbS$3P{lk6p19=_Rf65BbSV0%UUKwQy+=pR8AwA_xEah7d?uWq#L zXD6(uaGvLFtl$1l_Ic~A=xb5dWqTgJ`FXY{wUA9&f5Q&h7P1f6SF@1)X?Du~Fgpt0 zKV*F`I|!TKWBoY#=&k4%`&mQk1Y%Xn^gF;ySj3m5%)psqN30H33qSo8;@c$F0FGH( zSef-|w$=U$+lqd?mF$r+%C6HsIsL5m?dfMyzQwMyoQCc%PCq;2kM+nmq7L@548dk( zs~Z9L!1Oa#3));#Ci~ef>;~&9_#xTxIb0EZljCMdL-^spvm3O}%Ch4p?D~vb*^M{_ z>psg;z%FH1Yj?1BBK;Dse^7M~s`M)=J*m=Zk*a>CWy`*%;Y&c|H$)eGtrX>n8M@t| z`{C(lQGXxmML!fep!$!3KKcvsKBJp2NIqxEcgymn`Z4>iP3h~>GWBP~{TpXe>f6w# z=nF$^rRd|>*J96`e#U-$`k711qVLz?{;ku`+W&d_*-OhJ9{du0XA$gGg^S`tav5>L z`YBw_>1VBP!+o>7PL@SKOtwGzt?gCBj(0*Q@Q0LdLnq%wOj33ief42>qjm!Ncmg;m z-mGA!tn-m?n|{Xh1ML#M&iI6~k7*Y(HT}Z+_35wLGN-?a^fjcfS-;M9*)rKKq&FeG ziMnj6oAstvV<*N}r(f2z=|AH7GhJj);mfy4-boJa*DRClieA4F*J3pPInoAPHMq)g zb>h;6uigZiwoJcB{-J%3#b;!Iy=+OoYfF}2@r6lA9IG~m*>WwHh1e-}l+j8~VbXtl z!Ns$DFaM)<m-c1tWlOH5!*Y$~cFO}e<?&T(gSFp!k8O>u*Y<$D%HC^#E@d#~o|K1D zo=mxzx+L{vT3y<3+T)IV$Drdj$AjrB(!J@u>9?exPya!NBcm+iWX9Jr^~{mXr!y~R z)n)C@dVki#S-+UKXkOjCj(HRF&d$4U-V^hi=0AW1l2Z$wUs$m4+`?C~bF+uD&t`va zk-jLl=%K~##kVhhZb{pcvrC@GcX2i>J-GDKOTV|Qa9P8$v&&vt_R8|y<)@dwxMJ^$ zJ61fBb1>(wl}#%jSf#DXUsbf~$yKlB26C^-eRy@%>bBK)ul~;JS9G_&O+TwYrN5+K z%$uKgIPYZMoq3Psv;2bm!}<5+|H+x}9CDs=e#Ci~^Z7N7HDzns*1UhsLu*&A-L`h` z+K;dOML}D^?FET~#|xe<_{}<P-LiGAbq(vf*A1_`X5Gt$T47aTQ{lnFlk4s4SFHc| z`g298MJtPLE4sVr@uKI7eqVgF_#W39SDovq>&cScC1WM0-3#3=_ZIg#_rs-SrQ@aV zF8z4vJ!J)D9c53Hy;NRNey$>;qPyaB#eEe|S8l4jqw-wki&aHcv8q?AmsQ8AZ?67G z_2;S|s`1zCthu}9!J5ZwQ)}nf=3^^qpth~HzjnBGy!L4AsoK-Ezo~1f`*dBR?tI-t zZ}{J1bw8?mzV7$+3+pTDJL_ZhC+pADKT!YNhTIJ;8+tbkZy4UVVWW5BwvA&O&u+YP z<9!=n+*G)!YSUetJ2ww+ern70TVB|@d+Y66|I}b_SlE!;P}K10hDRG-^DOZ+c%Js= zd++hS?6doFecOBkzUzH=_<rGg)vx&%`gMPmzsbMXKjuH>zs-M#|33et{-^!F@Lx3S z#!=&xaoRX*eAYN`JZ}6TP!nhhbOd?>2LpEm{@BPGQyW({mNo8dJl=R?<HsBCY5YOs z^Np`G*_)O$l{IZ?>TMcsy1wbQrn{T&Y5HQ*6HPBPz1nPTUeR3GyrsFNd7$}d^ShhR zHb2z-MDz2_uWoZ}Tei)$ZNs*<Z3Ej5Z@Y2Zhqirg+e6!)*!KLkSGPO1FWi3n_E%db zTCQ(7+w$3#FSk6>n$^0pwXC(S^_JF;wBFPDKwDee#rCu9ceS5yf4u#<_7^*@?|5a$ zsU7d$ap#T)c09J@dz~Gf_jJ{C`MY|%M!HUQo$g-QePhr3p4^^_o<Ps;p5dNrdT#Bx ztLI$LBRx;`yxjBZ&Rcgry{lnY)2_RA{irv;x2X5AzTLZ*>|V3GZg<P>{@ug7AKo*v z=Qn%)xOZUh!M%^~eQNK^dtck<*tc?@dtbx8o%@FO9pCrh{`vdoUv;LR_0R7w>Tl^E z>whvh9{k0?!GRYB{upARWg&OSAKD!n58WKPGxX)qcLs9@+XjyhJ{6uH-WeVa9}nLe zzB_zA{8;$u@XJGNsBI{5paXlXZX7O%xDPHn_y|4KXil7jxCEyKreJmW8tgcGC!$te z<|tN5v7eXah~J-(K`k~_tLGs6&W{pW;~zff$rq@+g*gxjWxW;o)hchpn-1$$-j4cO zmB+iG+@tcDj%6Ir5CUfwyDI$_m7mXS>AzI@1<acM8<o#yDe1olkKBr%aI|IVe^z<U z99h{aud&puRVr^`i?Y_LycPL+mAA2#S*<E>M}0))Q`u0~wJM*vs4VMeDxbx^>@@Mu zXAb9gRs8~%>imhyXR{`!fY0DKXT51nu`fD)EEYL1JfRnc*6S5zWtIBCG2I)%{+?Jk zIO@`y$3kx1Gcuxg5>#C849CN<!{I@<!yi5v+&QU-hJ#}V!f`zq3+s_FeSC6YBofjG zqocvdn8T-T0%uonARN;>gYk*Tp>S+47`tK%x1%jOR)SM+1|p%tmf%EWY`uP9<k<Ky z2#gKtgTaX)Q3)TN2#*bh2ld0@SUeIPlek95qp=B84#lFQdS`SXIuX@}qGJ>KBw%Cu z#Bf;mj0ZzVS|XwFSUl{~cdGUk?lSkz;PFVTdpI&CGWsPs1z2A12CRT6Aqb@fA`{mq zpfbG#IvNbeBL~L7%9R9v3rcCcL<N^gNZN<qNvOfUP+W&2Aeg46Wc(SU>xJ=fSRV+F zM31a@>wkfn-MYgu+Zrkj>Js&gcR5Pl@Snpm1Nm3`VG`ehawP5u>JzcxV0bhbJETX4 zW&xx(I~*P1*k~j!{3a6Dhr_Wj%yb|Y9E0<?;60EY&EVLv18@;IQE=>-J`M+fqeTZM z;MkF|1A0&oq4PKZNsc8QAQ%coN5=t9029N&u8g7=<_neNuNQtC#QxM!BnWzr!Dwi5 zG(0u|UkCc3$O!sUAz>5^^sea8#1WV%f4$%&79Nj92PZ>e*&QP2rjdcki7@dX>^alG zg?<tmnH(fejzlJgqmvV0W;CJ*5e3ol;k8kHlKKLP<I+dNB(+2I<M^;kADp4#BATVq zm>v%!9soK5R+ac9ToP&Ot3V5#fuKXGP7pdWjIK$v=QPlvsG-T&SR_6S_eI0Os2-2H z^!Vh!!Ek7TYDm7J=m>n01PVpR1|y`f_y&ig8|Z=q(ZgXOfsAH?ff*+li%y_#$Pgl| zA{dh%An)n%;o!)KV}N29X$@>3%%Cbs&gdBYBBqZ<(P6G6wmxxeJUkQxA-7~|u8gC> zW9U?9J{TE_kfQ}hCg6I=0BLZLNKQaz;+*1WFb19{M}jd2sY?bFp>7op(TF@W7y^<w zwJ^0B*Ds+&C><am6c!vY<LO)ks*TCVEH<z=HgZglB)PeRLPjh+795q<qD)+eBFQdh z_Xxx1RM0&VjSa^2{FxAuPZATmbi<KP-8NsS3~rzzGc<*sL|7+b1JcRiXhgUMwG-ig zLdQ-}bg$sR2;4uaLJlyK+8t)U0iEE4J{*h#V|Z*v`%=yEB=1fRo3pGs1arEO@Qth* zkB$uLAVOv%=LqVs+yTfRSN#`vLWhC}5LeL;$D$7EYy|k1JC$ixK?(s2V{~|Ah?r_J z^gw%Cx8Btr=-%b&H1y^!y`!^zXS3h%>-nB8l=EHsuIBEh_MUDX5S^a3?moRepnKZ- z^zF@UewS|ac61tDU5@rny}7lcrP)ATbDOWF$KTx6sC&__t-V`sX>M)q2GZ_!(Nv*o zHo6E|tI_Fe0%ngFv*7MNmm|>J-3FXsu2c8u9iGnaW?xT>r&I6f>Fj9lGJwMmv~A68 zflg2{S`7#RM85WpzRu>xrfwG+b)(Yd=<f9RjaE<Rc9#xh?GU+B7a(qM2^_kylNxt5 zd0JX@Z*zB7cc<ZLC0No<V_SQx;Rv+%wD~>V&FyWv*MKM<Zwo07yg>`T7Eg1lOZR(P zJ&h!eNrb?pIJ4?-P=iLJ&FJ*Bxb&_L!`Dn1=&`xe@PTV64!VaXPzy}H_O>o#M-M6h zXOeI^b~PD74hZ1E|31N)5WfxL5}xk%PAEjNva7kvaOs}T<}R{GptBw9l0Dl4!UKAs zPk=VJDSpXDRCl>|0E${GE&2^l3lPFd+6Wd}O7bLlmvJ-{9!Fn`o1I&RMiEA3?8Lx? zJ}H9$Ji2iV9aq+gEQTe_zr^q+quWdz5R*$pc?!KEd>}kxB$A<b@NgIrFiz1v8goP` zm>h}3MNh{NI2x5>o*oa5fEZd)Oc79smBA4-Q$Z0iWlkJ+n1kVXEP^ISVvz~VCH3GW zhR9gtxEh9O21!y034p+qfT+yy@1V)C3z0BBj!`OdI6QL94cHisWyCL{@=!E3szevD zF*LEkoGMJ{2S`&G>n0r0*a5dbJTWo8p|o@m^XkKs?s#-E77C;Nfv|flJW+Ziawt+7 z!9@0`dwh7jRK-b$YINkt5jUQ}Ft>H1MX8!~#7kS6eFmJb#GJFzlvNl1+}QdMW#jm0 zc8o>X0XEDgn2yDp5MG4P@%m30{;Nc801!I!0%igWJ`;crvmhH~F4Q*TwV)7lBj;fw z_)lk@Gq~cS6h@mc+8oB;K|nh2<5ZX(1cse#5)dKK4Fbyn)KZI}z^?<#7)s-S835i0 z;B>T)f^JaUbAbD~EhV2_xIZ8$5-&l)aRduf#KR!UvA==_aoYx(W7u5mK}*6+oZxp! z<R=6lq^kqq@ECX<RuYVX5^+l~LFA+?VJwhMfDgJ$y3mDAVrUZ)G?HZ>1-2+C5<Ec; zAy2ZCO!)Z?*90!AC+^5@lL{}%Hvvw<NIk$36dI;di{PE;lSRmSJCP>SuYi5ZaP35^ z<A9FgSgc{e{cMf?CUtW$mgDn6Zuk=6oyAcygJZ5Qn9`6RkmTfLI&@D`lOD)J$WzBe z$@I)OxA^}bPicG;FL-ksn!Ydn-Lw?h|9{iE_znq<QjmU=+~drie|b-*s6akLUPOIs z1g(!CN>IO_Yr(hLn+X%~btT%;OQ|0vbA5U2!Z!ZD;Xk5&InMw4czC7AYW7SSJL2Gs zauj)kq8CsMj3K7!u)`4kUaqy|*i4djz-lq{rU>jf8*iwji&#N1UB=G?f(peH>T!gJ z{8rjtQj<20iHJ@2Wh9~)PUFP5pcEJWMf?rmzKqxu1rGp%WC`I8jXVw|ff=!qBLGD% zf}>a{v6~nOTJk=(r;xSsle{EfjAYc7`Vfr;#8(JyDKe9M4qQ|-2`bdzh*yg1)H_J> z2z*_RONFSHQFWGr&bk0OggZyjj<iG+XLUj~<EW2<$|R^z|1r546cUh4Bhb+#aL`>z zW43=@PJytK9zx)35_nCW96^p+M+Gh&cO$~yb0somm>uzDtfjGJ655gDf@vM1MS3x9 z?SM4qcpL{Ux_>1(s9wrh3VvurBFu7rAaO@fCd$&IOs>rSePyXl%}IZgenuWW0V^hZ z-K<1Mgg$5td2<S+Rcbi|31iSNmB`-YIg%oI3P}<ba>s=x4gw;C`zDN};{cYZkeA}5 zX(5uFJdrq-9u~(Tz0^Cq1troMjqEg2n(ZO8mNIopv@VYXV`xcu$;(KNS#6npWmaR! zF(A1eNk?-kvXle75Fg3DCbdB|g#Y#JNpezKY5P%;$}&Z(zr+?3Vm=jy9w`ctL^Kzh z)zs^I3VCc$L?X#QQ74^KUp6Be@lO4X`lpO>l2eMV=G=^IKI_Nk9F8Ip&B{p6lfXhH z$BabDGn85Ho;y2~l*|}P(n(GTUTXGI{m`8^mdUg>jT0ontcQ`Lm(EY$h=aLwF4f27 zwu=iLk-cdKOcEqpcs807XQXXi{2fDy;>v8_GHXay>5;Mr$cRjOp^HY3u#k>=X7Wt; zi14vN;raPj7!UK&Qp#;=*KFZH%r<8j`AJ?Tqru!cvz-0NF-i8aG2sQIW3#^<2AxQf zWG21Y**`^#AR-pFodGh0JU!u%Ze*M>eOr1ENom$NE*o#8MQF^Tahygt$s>(r<TZ1B zf0j!r-IZeZ>&-T=q*X_f=E!c+s&BooQfwU&x|5Qaz0DjaXyzdM96c?{ab@oKOY;xv zQ-|=EU`QJ@wo0#Z;EtSkm>B;rBGsk6byg}l!=m0P$HSo+e`{g}cnq+1Ja2X**M(dF zxm|dM>lF8zQKw@b*NHnj@!ai4tsgb{fS@~cKVS65UC4LiAf$HIBXCI^oq!|UeSjt0 z^mN!JO4|Y723!>F4Av`X7{Jzr$kq;egu4~BEl7zb!BGnzYI;znd?V_-ie4L9kqiXi zimO|3+Ku{Is&ly_%p`^6tQDnB;BQhqdw{!H;3NKB;42{Twux5Mjx<M{dT@2%ZzrfW z149p5QHg4MkahsB3#}v{q(9=e4X|y%(J9hK+$RpCB_u~aKy`pNK{SG|ZlMLDMA8u? zan+6c9%zKx6V>ekN^(XzAuAIvvsmc4hiFSaNdG$(KJo#QzXku1Zb^?_f`WnCR@6zn z5~~ibND|_kv_rNhn-YJ`C=mrO?n$eVK3ha-R&UZ5$fh2&Xce4Ody<4SBCSK*Crd&$ zzSKHb@(u@}Bn84nb|X!-2r6CBtN~jQCRsxoA-^Ke_d$YLkCT2+`Zi&u7RWwr!m>Lc zxwMGHM^C89Qjnc?2}{h{Lt211B)=evrp{)qPc(^VlOOVC@-ov7vs$74M?OYelNV5l zC{Q0EA0sQ#J+prj4e}is1A0VT6Dzfwt6y4wp?+k-neE;vc1RtWwC7royp?n*Ih2uv z^dRv{Uy?oH(wHP?WCm8XXofZ}qO6SDa;9rO_a)C7X*85$Px8Ezv|)~uv!jR^qZ=`@ z&{Lp%HZkF5Yvt3DTp^i#dLx|Xn0)#3G5M%mxg@yRS?}!ZL(U%MGZBr6a&AU5BATDe zIUqer%UKD{E$CTRau*Y`ev0wtm@c0JX*^DT&Lhe+Lz9w8TIM`u78gBZ(OMYI7KmDW zhMQS!nlpsUpPU?m7lJgO42c(d{)hq35s{w|T#ca|6r&}<63lUw&1V(44j|VcFSmi5 zqg-kOQ<ls1@0g>1ni<C7LGoEDA~a0%NjEqm$%s?=TxRN5+G9xEqdBX|C0TRU`)F>x zLA0fDo<?1gkY)q4hA4eXt}4?rB+)q_Xwpjf1o+v2m&Qwl_G!KPFm&Sv4$@;x_`IY~ z^9(oeh0&%|X!{U!S1PPUmOF~Ov^G4By1Da72Wpck9YO0OfTr0Y&0=Vl>sEY~3j0$} zlk2x}fsMvEigpxlN-kSx?FI(;jD4N`aXUtQ{QV668unt;VC=IO+RN!4askv5R2A|b zdlSk<0`hS^15oR*J+qX#1;qaX9=SJ5Y^S>L6x4f#f0`4OcqJLH{93Sc316JVt}mQP z#L{4>be6#~@dooeHlHoPftcAiZh0|wiY>)Az?ZWXEQhVciJ-Z7Ye{E$m=rnL8l0$5 zfcJ_Eu{=|R)28tqM<})wi_+y#S|!d5s>b=nwX6=y)f;e*$R>PyWeeNN8bt8*i6K28 z2L5KeExH|MY=zQkO0WX~ordKe4BWdgdFsP^5qq#tcOTo2H$?kckXzZO@GinlI7Rg= zzA}Ha*vIxUd~5SA97AvhXD!{p-p5{Hzhm!WA7rQ5*V(h|xA=naXW1Xv@7b&DPJFKC zN%m9r6ZSNFhCRprjr}_gl1b%h+`-d%2G8X9xCHw&`veXWS%A|mv-u*vm@nZ=`7(Ug zas|)fEAiC{`Y@4>7oPLEldr*9Yy~*0sF1JcMZB21cnQumDCK21tEYlj@+!PCUBhd6 z9k1sbaD2lid@_9t-^v@fhkLn?`?<jbypcEYX1<MY=PkUIxAAt~f$vv#@-E)Zd+=S( zUA&j~@!fn6cK`0<`}tM8p9lE>5Ai`B=0p4dALbE$kRReBe3XyzC?Drn^B9lw2|mdW z^CSEyKZavZPVj5^wfrQ18$ZRb!&iIm<=5k2hzIbU?uYq}__E0T>>Jo){5AG=eiQo# zelvT7za8%`eVKiQzk_{|pW*Lh|IKgV@8a*~@8P%d_ww7=E&P4_{rm$svh{=PLpZ_i z!|d1W?{J#k?d<Q_d)WKg2iWKNhxmu_P1T3^NBQmiWBlX%6Z{VTNq#5)6u%4K{=1w1 zJ^wWS4F4?u2mU$!kNh6~Pdve=_&I(rzmMO~AK?Ft6GT4GAH;d@U*uonU*=!o5Am<^ zuko+*hxs@7BmA5EQT{LdF`Vu7IR7?(g8wW34*xFy9{)c70skTY5&toNlK&fjivNT^ z&7a}V@_*;g@t^YN`Oo+Z{6F}A^8ey5@}Kix@L%$m_^<fO{MY<9{I~oS{yYAA{s$aY z_}@4y@_+cB_@DV}`~ttor}424j-&l8czGY^$!aNDs+OkV%q=ZL%ha;8dD?t!0nS3o z))r}twI$k8ZJD-QTY-1UR%)v>eA`RYwLC3fb82g}wOWC;PAk;bYeibI=F&<uw^pi^ zY2{jlR;g8K)mn{KtJP`sIInf1wh3oaZo!v$8Z?jQ)qI*?Gqix#s5NQL+BR*w)}pm) zZCbn5q3zH*wJxn2uh;F=c4@s@pSD}uqwUr9Y5TRSw0<q94QL^4Pz!5A+5v4?i)aV6 zL)wTos*Pz;ZCtxri)nFfLYveMYe%%B+A;08b|PhREK*ihR-w{*nR?1p>KAE+*C*3J zWg0et9j1*Z18Kn!c2$YoL}X-8<gCLuQ&50bmIYGrv#r=7XPbzQMdO)+5$xrOW3LpI z(t<;gNOf&xU7Y~0DU+0H%By9$+^f=nOe@M&DmksGs8krL%FUYUnVKpETdPt<qe4no zQ{hqdibjQ$uBJlqP+_S1igu;cMop#Sp;A$-tdww-ie9DSy|PBtEBcj+ex;&c=`lI2 zQkbh0W_&`8>`_ytFjpzeRSI*J!d#^=S1HU@3Uif`tV&5%r6j9Tl2s|ms+45aihi}C zU#;j@EBe)nezl@st>{*p5>(b#n3k+JEmB!uHB)EWq_Vzdrml7-S2vTZSGlUPvYA}D zdACk+SEHn=@rgUI2Tqz1`l?ZK)hM}Ym0YzZC)H&p{pvE+rrzYOx=d-&qv&{))E=c( zkHYGmX;H2qyo#<*(eo+$_>>)dO8-7X$x?0lN<g&;D4GGK`GC@VKv4)N%?A|bfZ{%& zcn%02u`5~NLn`ng75HekGHD2@z=u@eLn`ng75I<}d`L}vLIRY%QrG1*HB~9pXDdw# z<<*&D({Mb5-F|}uBbirEV#i4=j7=%npdzVOC~6e}`)Fhg;ldtAoERHS3m*-Q1V_<I z!of~s@kwks#C{X&NF)}tk7E<{L{Q%Kc&)}{EGi1+N`UfmDOh=VO<EWmrblU~Xd1SP zg=rJ^aK^+i_NdByJbefoPgFi54hF|m0b9&QqGRrnvB}Xi!95r{nvRe*8pJkL>^LQo z0k700Qb7`_&}G0|Ep&)f=n$#UAyT2kfLHn}QsD(iMK26^YlUu+3V%kb?$@gOb?Sbd zx?d-}Ea0sZei-o93tJ-<wni#!ja2bhulTDM+DE-=UmwU2@_4G<Ly<9|+<@1kh<g-q zzanlZVGJcqK*0qRTtFcWNT&SKfdhU8XUHxXFlr@}My+JhsFh3_wUSArRw~h`l}a>f zC0(Od(lwN_45chXDa%mGGHN9sMy=$-sFTVuWY7p0b&77CqFblv)=A|Ub&7tSqAv#| zv{UqzF$`r4qfY9<sFQjylyMAY977q$P{uKoaSUY~Lm9_V#xd#@{dz^eUddmt=+{eo z81>Q_jCw`CUeQ;^HR_f8a_9~iGMFJ%@_Us0GPt2$$?sA0J&L|Z(U-vwaEiW1(O3Rr zD1R|LO8+uQ1`My#zgOAatLS?beXr8LSJC$>`d&rftLS@`{9Z-htLV$A2<RyJWe7%D z$uC23!0;*hK1JWB==&6XpQ0~AHsBR~pQ7(m^kpc=eMMh}bd(i+pOW9F==+uYensD} z==&9YzoPF~^!-YHzoPF~^!<vy>W_wB(f2F+`xSk^qVHGq4MpEj^bJMdQ1lH&-%#`o zMc+{LRlhe>zc&n}e?!qX6n#U{HxzwC(U${Tz>otQQbk`5Y$z-Ga$rMQ(U$`o%1VAY zu%WEz2NZoXzNokpP~||tk3H8xyc2U3rkxooTY-GsEL2h<OWhHLtAZ2|%W7&25fEj; zQ$DwVR~aT|?qEB2M70SBFcaT_;LueA!I-?~mjO0iAg?aRe9oJc_sM*fx2&eRJgMGD z$_EsTkpxo(JSGg~MKmv~@p%Lzjy7yDZw<RE%PMBGl^LqGrn<VOD!EXdRH!OXE>uVv z>ZJ^_;7e8z3bQ&vVOA&J<TfbGf}ucQ*%<V9iWd>C!lu+AcLY1NlW5mg&BF+O^(1zP zhhy$oc&I!BW$b+&5`~3gP*=C(qRKIZcTz$U6xyyR^LRxeYi1@OiVKpb1EOYr(wsno zBu@-P4Xv+moU=zqg}&au7#6xF*`#d%t0}p3?#OITELCA!kS&2T&z`s9WQB|U0^;H6 zmr!n-e(B<Nc~VJ&x%33<={5RvefxQqwPSn2-nF|oQI(S@?CT%W&-C;rw6(#{r($_0 z6mkya<mDw;UxN9Z{&V2b*Y7P!a92X_A1X;`cpXJgJk*h}7VJJ($kTmB$Vk|Y-n@im zZC~e}-aH)XdZt%TbabGqp)W^I)KRXkuTP(n(80k(A*xhKPn6O9GJ<@lqgMwvXM#GN zUDb~oo$fg(S3|j){+#~4zP=oAn{fC-3D()0VB(-FK>6@3rd)!`-5xwYpM?nGyp0X? z^$iC561=#t&zWEyz2UyTl7t1j?e&CpZ4k29d>y?Bo70=HJH3z`p#3EYtIG*V^ua0H zfLEtGBx8=`nf@lUej}8y6y@QjPd}rd0fDJ9+ghk)M{j>ePO!7D*V&iXrzaY^dT}p@ zl%eRCBy6rkim&(_-j5WzwWH|tI$<NHH<-`{h7vpkE)uq)l0=G2Css2ci<J!k1k5({ z_Yp|HU$C0$I+v2ce1^9uZ^l|_uDRB8NG!Y<EchUIziymy2Fa2_!z_oakkE6$q{$`h z=?wZMiS*ZLo>+rcXgniYa-$4#I;Zzsy2AqZ$Z_WN73GyAGF?-eW+VoK{*pwN3j*kR zBGb2x<U+>j?Mq})sS~9vlu8owfM&i>i4F~fz;<GuuU|jYuP5d~X(fsIuI=5uQ`SL$ z-<m{b*m<-hvB0%`NALD7S(%fE`fO3Z&^5*8`+9n(=Fj&fc+i`eS4>_GZ}LuM(w{8+ zN$@4Ggk^0<?-aQ{l;u4G`+{s%QJxdc%sjk-?o$(V9=h8HNgBa_BWmZG>U9h_g(HZZ zP_Zw;ww%KWv%(v)UHG=VW_0%^<~zN*k;s7ar90tpUcDdW?_ao(BV>5JXZoiW+KUtK zD9*`;nifH}?BbHdV%HR>bP4oK=~CB}h0<lNDJ!MRT~jtnSGcC^l;*gmQYc;Nno6Z~ zm1`=E()BKALFzqW?}vt+x;w%5Q3okW6eZnUGIR54d9yg_X2HzOn7o<mVu{S+w;<nY z$d?PgbjU|(9^|7mAM#P^gnX2)fqay%g?yA2Kt4*>K|V?gAs?kKm%d4KpAr|;y0BmO z!M6S63qhm_7x}8&l_)7rl%N-uq60L-Q?J+!oxwUM#n3l|fE$)1%1qNvWuzM9X^GOJ zDH~sG^dkO|70Z*<^Lj89F1=cCUI}axk8yc$K+L%!w^YxT(9t`L`L{UhrYiVilC=u@ zfB;u)(~nLPtSd=WyWC4Rl_YB33=|F>0(dP<#Fnhp-FhPh0;sn6%$Y`KBLYt^#ux-z zM28xVV;G^~Iz+4`i3I?&B8aXPU{lzRoJjK(htIg3y1wZQaMsTS)7=tZ!s_&z(0Zbu zVoAe}-g`COqUYSJ6<AjEc`3f8B2<GuIB*8gvtjMI-4ro}7s~-i^Ysrp6Bb`^5Ft+U z1#^(^??YU;v`rAKA?iB=!MYqLC<GuU5<vy{u0RBgP$0G<c)%DoI2^`}OE>|>AR4a~ zOyDoZHHx6KwBRfoOkL>Uz*eAi;oJl@ZJfE4NJS9Q^?<XHh>{gInfHV+Qqu|6-Rssj zVeBUEHCYLyGp0z`*P_&nTQk!HX~fGtuivSx1%68sn@ws$`^sGXG?%zkWYff35I@|c z#Xw?#ueT!yBdNZr&pqYli_mYk&bix}(=q36!<@Tj+hlx~w(z(Tb;Zd5W+RiJ*OjO* zJ_Gk7A3KAd{(8K@pzeelEc%4V<i-V3^TC9}>6N0BJ3G<S+~|2yAU^^V#u)N`;rV}^ zOE+H0!QP4&lfEgAZF1J-<R$q_UZ3LAKme{QHnkE!slGUmY({!f(#)u!5h_?LyFKP4 z=;7J!L=}2@)9chX107$Kou~%PHdmq+$#&AB0d?yE48EqeT3qDNiS1BxtLq#>7&2|h zaLTm1&T&!GfsClxK`;hxbrK9^x(J3c-2_9K9@o8yg&yQ~BF9B;m+M|G>w1xsb$tZK z32ryRiQFE76S=(vCvy9UrVn8Ii6&*PBAS%xCz_NA5=;P@0fM1Sh+rr)NHCNM3%<O_ z4GF#|cR=t(xnaQ<<syPF${iGZQSOl7i*h4^FUpNV#~Wr0I3`MoEw~Yt*{#TqlhO$+ z(SXv`7;BLwn3&8GOkBXw4T70K<Bc;|Cq+rLI4rZ&;)u)=_)*~5C{Z4hSpqmNvjlJg zu$yM^T_Z{Y-?cJJ;3s94z~6?Jn<TzdGD`s0$t(d}57^B!_-+s-f$v6{CGeYMmcVaD z%gqws+hvvjPRlF-yu)>GnpHDrwBF)GYB*t8({a=s#!KK!3=di9otQuJcVm!~k5%JS zEX8|o5vKe_l)Hab>O7m4D)Z~?ODrOv=KVs-DJz|ul7>6!-Y>8Q{3l8l=AT-_Pw&9& z|8(yZl?tfzVCpHHa?)@*gekBEQ(*kNe|72to0d^@o=@MDu)Ygpu>W4$AkL=t|36T! BcUJ%a literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Thin.woff b/stylesheets/fonts/Vazir-Thin.woff new file mode 100644 index 0000000000000000000000000000000000000000..98d349720e31f2d9231db172264d0c5128216fa7 GIT binary patch literal 52052 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 IC#8k{9rQ(c<NyEw literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir-Thin.woff2 b/stylesheets/fonts/Vazir-Thin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a075c3fa75df3b4b0bd3dd2ebbb2a971980b8653 GIT binary patch literal 41580 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 AQUCw| literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir.eot b/stylesheets/fonts/Vazir.eot new file mode 100644 index 0000000000000000000000000000000000000000..c9ece79dfb320aa309f0ed4f923a8cff8b675174 GIT binary patch literal 85414 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 M8`WvNJUjCL0Tx1Qu>b%7 literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir.ttf b/stylesheets/fonts/Vazir.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d2252fef340f6276d1a8aed563e76bba35c001a9 GIT binary patch literal 85252 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/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 V_JjAibsxqW9KKPX#>=zA{||5bS>pfz literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir.woff b/stylesheets/fonts/Vazir.woff new file mode 100644 index 0000000000000000000000000000000000000000..ec279ec2f9c4a47446d62a37d868ef1fc2d34252 GIT binary patch literal 47988 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 X!+T9xt>N&3BH=+&sVD}%W8eP(yG36) literal 0 HcmV?d00001 diff --git a/stylesheets/fonts/Vazir.woff2 b/stylesheets/fonts/Vazir.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..794c6d8b24702f40158d4880be5eabef120db4b1 GIT binary patch literal 38020 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 literal 0 HcmV?d00001 diff --git a/stylesheets/rtl.css b/stylesheets/rtl.css new file mode 100644 index 0000000000..ecf69c36b5 --- /dev/null +++ b/stylesheets/rtl.css @@ -0,0 +1,109 @@ +@font-face { + font-family: Vazir; + src: url('fonts/Vazir.eot'); + src: url('fonts/Vazir.eot?#iefix') format('embedded-opentype'), + url('fonts/Vazir.woff2') format('woff2'), + url('fonts/Vazir.woff') format('woff'), + url('fonts/Vazir.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: Vazir; + src: url('fonts/Vazir-Bold.eot'); + src: url('fonts/Vazir-Bold.eot?#iefix') format('embedded-opentype'), + url('fonts/Vazir-Bold.woff2') format('woff2'), + url('fonts/Vazir-Bold.woff') format('woff'), + url('fonts/Vazir-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} +@font-face { + font-family: Vazir; + src: url('fonts/Vazir-Black.eot'); + src: url('fonts/Vazir-Black.eot?#iefix') format('embedded-opentype'), + url('fonts/Vazir-Black.woff2') format('woff2'), + url('fonts/Vazir-Black.woff') format('woff'), + url('fonts/Vazir-Black.ttf') format('truetype'); + font-weight: 900; + font-style: normal; +} +@font-face { + font-family: Vazir; + src: url('fonts/Vazir-Medium.eot'); + src: url('fonts/Vazir-Medium.eot?#iefix') format('embedded-opentype'), + url('fonts/Vazir-Medium.woff2') format('woff2'), + url('fonts/Vazir-Medium.woff') format('woff'), + url('fonts/Vazir-Medium.ttf') format('truetype'); + font-weight: 500; + font-style: normal; +} +@font-face { + font-family: Vazir; + src: url('fonts/Vazir-Light.eot'); + src: url('fonts/Vazir-Light.eot?#iefix') format('embedded-opentype'), + url('fonts/Vazir-Light.woff2') format('woff2'), + url('fonts/Vazir-Light.woff') format('woff'), + url('fonts/Vazir-Light.ttf') format('truetype'); + font-weight: 300; + font-style: normal; +} +@font-face { + font-family: Vazir; + src: url('fonts/Vazir-Thin.eot'); + src: url('fonts/Vazir-Thin.eot?#iefix') format('embedded-opentype'), + url('fonts/fonts/Vazir-Thin.woff2') format('woff2'), + url('fonts/Vazir-Thin.woff') format('woff'), + url('fonts/Vazir-Thin.ttf') format('truetype'); + font-weight: 100; + font-style: normal; +} + +body { + direction: rtl; + font-family: 'Vazir', "Helvetica Neue", Helvetica, sans-serif !important; +} + +.container { + text-align: right !important; +} + +#search-box { + right: auto; + left: 24px ; +} + +#header h2 { + letter-spacing: normal; +} + +#footer { + text-align: right !important; +} + +#home-page-layout #code { + direction: ltr !important; + text-align: left; +} + +pre { + direction: ltr !important; + text-align: left; +} + +#header div.site-links a { + float: none; +} + +#footer div.site-links a { + float: none; +} + +#footer div.site-links { + text-align: right; + padding: 0 15px 0 0; +} + +#header div.site-links { + padding: 0 8px 0 0; +} \ No newline at end of file From 77fe91b1cd475adc02bab02336377d79fe77e665 Mon Sep 17 00:00:00 2001 From: Goudarz <goudarz.jafari@gmail.com> Date: Tue, 4 Jun 2019 13:00:54 +0430 Subject: [PATCH 02/10] Added Persian translation --- ...2001-01-18-stable-snapshot-is-available.md | 13 - .../2001-04-19-ruby-pocket-reference.md | 13 - fa/news/_posts/2001-06-20-ruby-garden.md | 12 - ...-07-10-removed-language-comparison-page.md | 15 - ...01-07-13-ruby-introduction-presentation.md | 13 - .../2002-01-06-ruby-cvs-repository-guide.md | 39 -- .../2002-02-01-report-security-issues.md | 11 - fa/news/_posts/2002-03-01-167-is-released.md | 12 - ...18-dutch-translation-of-wwwruby-langorg.md | 13 - fa/news/_posts/2002-10-24-raa-replaced.md | 44 -- ...2-11-01-my20021101-ruby-conference-2002.md | 22 - ...by-installer-for-windows-at-sourceforge.md | 28 - ...002-12-05-matzs-slides-at-4-conferences.md | 30 - fa/news/_posts/2002-12-07-raa-2-1-0.md | 50 -- ...02-12-09-raa-xml-interfaces-are-updated.md | 33 -- .../_posts/2002-12-11-ruby-hacking-guide.md | 539 ------------------ ...y-langorg-renewal-trial-website-offered.md | 36 -- ...2-12-18-color-scheme-of-wwwruby-langorg.md | 19 - ...02-12-24-ruby-1-6-8-and-1-8-0-preview-1.md | 24 - ...2003-01-07-ruby-in-2002-contents-wanted.md | 24 - fa/news/_posts/2003-01-31-raa-2-3-0.md | 21 - ...03-02-21-first-europeen-ruby-conference.md | 21 - .../_posts/2003-02-24-happy-birthday-ruby.md | 20 - .../_posts/2003-08-04-ruby-180-released.md | 32 -- .../_posts/2003-10-01-ruby-conference-2003.md | 21 - .../_posts/2003-10-30-ruby-181-preview2.md | 17 - ...-23-ruby-standard-library-documentation.md | 11 - .../_posts/2003-12-05-ruby-181-preview3.md | 14 - ...-19-new-ruby-change-request-rcr-process.md | 24 - .../2003-12-20-oreilly-onlamp-ruby-article.md | 20 - fa/news/_posts/2003-12-25-ruby-181-is-out.md | 24 - .../2004-01-07-matz-on-craftsmanship.md | 15 - fa/news/_posts/2004-01-17-rss-feed-started.md | 10 - .../_posts/2004-01-29-how-to-write-an-rcr.md | 15 - ...ruby-talk-mailing-posting-policy-change.md | 14 - ...004-02-16-ruby-article-in-linux-journal.md | 16 - ...04-12-ruby-track-and-tutorials-at-oscon.md | 17 - ...-rubyconf-2004-pre-registration-is-open.md | 17 - ...04-05-29-heliumruby-langorg-was-cracked.md | 27 - ...by-langorg-mailing-list-service-restart.md | 35 -- .../2004-06-15-wwwftp-service-restart.md | 15 - ...004-06-22-anonymous-cvs-service-restart.md | 26 - .../2004-06-24-cvsweb-service-restart.md | 13 - ...s-added-to-the-anonymous-cvs-repository.md | 19 - ...oap4rlibcsvmodruby-old-to-anonymous-cvs.md | 11 - ...06-suspended-libsoap4r-and-libcsv-again.md | 18 - .../2004-07-21-ruby-182-preview1-released.md | 18 - ...-of-the-intrusion-on-heliumruby-langorg.md | 428 -------------- .../2004-07-30-ruby-182-preview2-released.md | 18 - ...-31-rubyconf-2004-registration-now-open.md | 18 - ...08-08-brad-cox-to-keynote-rubyconf-2004.md | 17 - ...8-korean-translation-of-wwwruby-langorg.md | 13 - fa/news/_posts/2004-09-22-ruby-forum.md | 17 - .../2004-09-29-rsync-service-restart.md | 10 - .../2004-11-08-182-preview3-released.md | 19 - ...t-program-announced-by-ruby-central-inc.md | 18 - ...okshelf-planning-a-series-of-ruby-books.md | 20 - .../2004-12-22-182-preview4-released.md | 19 - ...-chinese-translation-of-wwwruby-langorg.md | 13 - .../_posts/2004-12-26-ruby-182-released.md | 22 - fa/news/_posts/2005-02-20-ruby-weekly-news.md | 19 - ...1-rubycentral-codefest-grants-announced.md | 17 - ...-rubyconf-2005-preregistration-now-open.md | 16 - .../_posts/2005-04-14-server-maintenance.md | 10 - ...005-04-19-anonymous-cvs-service-stopped.md | 13 - ...005-04-27-anonymous-cvs-service-restart.md | 9 - ...005-06-22-upgrade-to-debian-gnulinux-31.md | 11 - ...05-07-01-xmlrpcipimethods-vulnerability.md | 37 -- .../_posts/2005-07-02-securityruby-langorg.md | 12 - ...-20-rubyconf-2005-registration-tops-100.md | 14 - ...f-2005-registration-time-is-running-out.md | 17 - ...ation-for-rubyconf-2005-is-closing-soon.md | 18 - .../_posts/2005-09-21-ruby-183-released.md | 13 - ...ulnerability-in-the-safe-level-settings.md | 61 -- fa/news/_posts/2005-10-10-euruko-2005.md | 18 - ...5-10-11-new-ruby-web-magazine-goes-live.md | 27 - .../2005-12-14-ruby-184-preview-2-released.md | 13 - .../_posts/2005-12-24-ruby-184-released.md | 14 - .../2006-02-09-conference-season-is-here.md | 31 - ...006-04-19-ruby-in-google-summer-of-code.md | 17 - .../_posts/2006-06-20-the-future-of-ruby.md | 23 - .../_posts/2006-08-29-ruby-1-8-5-released.md | 19 - .../2006-08-30-server-maintenance-20060830.md | 11 - .../_posts/2006-09-12-site-launch-at-last.md | 57 -- ...2006-10-18-rubyconf-2006-almost-upon-us.md | 33 -- .../_posts/2006-10-26-rubyconf-2006-recap.md | 53 -- fa/news/_posts/2006-11-03-CVE-2006-5467.md | 49 -- ...nother-dos-vulnerability-in-cgi-library.md | 51 -- ...12-20-ruby-on-rails-bootcamp-in-germany.md | 15 - .../2006-12-22-cvs-repository-moved-to-svn.md | 21 - ...12-27-ruby-on-rails-bootcamp-in-georgia.md | 15 - ...est-rubyconf-2007-registration-now-open.md | 18 - ...-01-26-mountainwest-speaker-list-posted.md | 16 - .../_posts/2007-02-21-ip-address-change.md | 13 - ...ervices-will-be-permanently-unavailable.md | 13 - .../_posts/2007-03-12-ruby-1-8-6-released.md | 42 -- ...ccepted-for-rubyconf-2007-presentations.md | 20 - .../_posts/2007-09-01-ruby-logo-contest.md | 13 - ...-06-rubyconf-2007-registration-now-open.md | 15 - ...uruko-2007-the-european-ruby-conference.md | 19 - .../2007-10-04-net-https-vulnerability.md | 72 --- .../_posts/2007-12-25-ruby-1-9-0-released.md | 28 - .../_posts/2008-01-09-ruby-logo-available.md | 14 - .../2008-01-24-ruby-fools-conference.md | 15 - .../2008-02-04-mountainwest-rubyconf-2008.md | 19 - ...25-european-ruby-conference-2008-euruko.md | 15 - .../2008-02-27-scotland-on-rails-2008.md | 29 - ...03-03-webrick-file-access-vulnerability.md | 83 --- .../_posts/2008-04-11-tulsa-ruby-workshop.md | 32 -- .../2008-05-22-server-maintenance-20080523.md | 10 - ...2008-05-31-ruby-1-8-7-has-been-released.md | 53 -- fa/news/_posts/2008-06-16-rubynation-2008.md | 15 - ...rbitrary-code-execution-vulnerabilities.md | 78 --- ...yconf-2008-proposals-now-being-accepted.md | 17 - ...-08-08-multiple-vulnerabilities-in-ruby.md | 173 ------ ...-ruby-1-8-7-p72-and-1-8-6-p287-released.md | 63 -- .../2008-08-23-dos-vulnerability-in-rexml.md | 103 ---- .../2008-09-09-voices-that-matter-2008.md | 16 - .../2008-10-02-rubyconf-2008-is-sold-out.md | 16 - ...008-10-28-ruby-1-9-1-preview-1-released.md | 43 -- ...ountainwest-rubyconf-2009-dates-and-cfp.md | 24 - .../2008-11-10-scotland-on-rails-2009.md | 29 - .../2008-11-27-rubyconf-2008-summary-video.md | 16 - ...conf-2009-proposal-deadline-approaching.md | 20 - .../2009-01-28-20090131-server-maintenance.md | 8 - .../_posts/2009-01-30-ruby-1-9-1-released.md | 61 -- ...09-02-25-mountainwest-rubyconf-schedule.md | 21 - ...ruby-1-8-7-p160-and-1-8-6-p368-released.md | 71 --- .../2009-05-12-ruby-1-9-1-p129-released.md | 13 - ...-1-8-6-maintenance-moved-to-engine-yard.md | 24 - ...9-06-09-dos-vulnerability-in-bigdecimal.md | 52 -- .../2009-07-20-ruby-1-9-1-p243-released.md | 52 -- ...009-07-20-ruby-1-9-2-preview-1-released.md | 60 -- ...03-call-for-proposals-for-rubyconf-2009.md | 20 - .../_posts/2009-09-04-rubyworld-conference.md | 20 - .../2009-12-03-mountainwest-rubyconf-2010.md | 23 - .../2009-12-07-heap-overflow-in-string.md | 39 -- .../2009-12-07-ruby-1-9-1-p376-is-released.md | 73 --- .../2009-12-25-ruby-1-8-7-p248-released.md | 37 -- ...01-10-webrick-escape-sequence-injection.md | 84 --- fa/news/_posts/2010-03-06-rubynation-2010.md | 17 - .../2010-03-17-red-dirt-rubyconf-2010.md | 115 ---- .../2010-03-26-ruby-summer-of-code-2010.md | 32 -- .../2010-06-23-ruby-1-8-7-p299-released.md | 33 -- .../2010-07-02-ruby-1-9-1-p429-is-released.md | 55 -- .../2010-07-02-ruby-1-9-2-rc1-is-released.md | 61 -- .../2010-07-11-ruby-1-9-2-rc2-is-released.md | 62 -- .../2010-08-16-ruby-1-8-7-p302-is-released.md | 55 -- .../2010-08-16-ruby-1-9-1-p430-is-released.md | 50 -- ...2010-08-16-xss-in-webrick-cve-2010-0541.md | 79 --- .../_posts/2010-08-18-ruby-1-9-2-released.md | 106 ---- ...matz-in-san-francisco-or-silicon-valley.md | 23 - .../2010-11-17-fukuoka-ruby-award-2011.md | 23 - .../2010-12-25-ruby-1-8-7-p330-released.md | 42 -- .../2010-12-25-ruby-1-9-2-p136-is-released.md | 48 -- ...02-18-exception-methods-can-bypass-safe.md | 59 -- ...s-is-vulnerable-to-symlink-race-attacks.md | 66 --- ...ed-maintenance-of-redmine-ruby-lang-org.md | 17 - .../2011-07-02-ruby-1-8-7-p352-released.md | 36 -- .../2011-07-15-ruby-1-9-2-p290-is-released.md | 52 -- ...1-ruby-1-9-3-preview1-has-been-released.md | 61 -- ...confoo-2012-call-for-papers-is-now-open.md | 33 -- ...-09-24-ruby-1-9-3-rc1-has-been-released.md | 37 -- fa/news/_posts/2011-10-06-plans-for-1-8-7.md | 38 -- ...0-12-programming-competitions-with-matz.md | 51 -- .../2011-10-31-ruby-1-9-3-p0-is-released.md | 36 -- ...-for-rubys-hash-algorithm-cve-2011-4815.md | 89 --- .../2012-02-16-ruby-1-9-3-p125-is-released.md | 55 -- ...16-security-fix-for-ruby-openssl-module.md | 50 -- ...earns-the-fsfs-2011-free-software-award.md | 21 - fa/news/_posts/2012-04-10-rubyteach-2012.md | 22 - .../2012-04-20-ruby-1-9-3-p194-is-released.md | 76 --- .../2012-04-21-ruby-1-9-2-p320-is-released.md | 76 --- .../2012-05-30-server-maintenance-20120606.md | 8 - fa/news/_posts/2012-06-02-a-facebook-group.md | 21 - .../2012-06-29-ruby-1-8-7-p370-released.md | 39 -- ...-confoo-2013call-for-papers-is-now-open.md | 34 -- .../2012-10-12-cve-2012-4464-cve-2012-4466.md | 50 -- ...2-10-12-poisoned-NUL-byte-vulnerability.md | 46 -- .../2012-10-12-ruby-1-9-3-p286-is-released.md | 45 -- .../2012-10-22-rupy-2012-coming-very-soon.md | 18 - .../2012-11-09-ruby-1-9-3-p327-is-released.md | 41 -- ...2012-11-09-ruby19-hashdos-cve-2012-5371.md | 61 -- .../2012-11-10-fukuoka-ruby-award-2013.md | 58 -- .../2012-12-25-ruby-1-9-3-p362-is-released.md | 52 -- .../2013-01-17-ruby-1-9-3-p374-is-released.md | 53 -- ...2013-01-23-confoo-with-ruby-in-montreal.md | 30 - .../2013-02-06-rdoc-xss-cve-2013-0256.md | 88 --- .../2013-02-06-ruby-1-9-3-p385-is-released.md | 54 -- .../2013-02-08-ruby-2-0-0-rc2-is-released.md | 120 ---- .../2013-02-15-the-2013-ruby-hero-awards.md | 25 - ...ruby-conference-call-for-papers-is-open.md | 29 - .../2013-02-22-json-dos-cve-2013-0269.md | 104 ---- .../_posts/2013-02-22-rexml-dos-2013-02-22.md | 108 ---- .../2013-02-22-ruby-1-9-3-p392-is-released.md | 58 -- .../2013-02-24-ruby-2-0-0-p0-is-released.md | 191 ------- .../2013-05-14-ruby-1-9-3-p429-is-released.md | 47 -- .../2013-05-14-ruby-2-0-0-p195-is-released.md | 109 ---- ...14-taint-bypass-dl-fiddle-cve-2013-2065.md | 109 ---- .../2013-06-12-new-ruby-lang-org-released.md | 33 -- ...ability-in-openssl-client-cve-2013-4073.md | 62 -- .../2013-06-27-ruby-1-8-7-p374-is-released.md | 42 -- .../2013-06-27-ruby-1-9-3-p448-is-released.md | 44 -- .../2013-06-27-ruby-2-0-0-p247-is-released.md | 82 --- fa/news/_posts/2013-06-30-we-retire-1-8-7.md | 45 -- fa/news/_posts/2013-08-06-status-issue.md | 69 --- fa/news/_posts/2013-08-08-rip-raa.md | 26 - fa/news/_posts/2013-08-29-confoo-cfp.md | 35 -- .../2013-09-03-vietnamese-translation.md | 27 - .../_posts/2013-09-07-we-use-fastly-cdn.md | 18 - ...3-09-23-ruby-2-1-0-preview1-is-released.md | 69 --- fa/news/_posts/2013-09-28-design-contest.md | 23 - fa/news/_posts/2013-10-04-rubyconf-au-2014.md | 31 - .../2013-11-21-fukuoka-ruby-award-2014.md | 71 --- ...in-floating-point-parsing-cve-2013-4164.md | 64 --- .../2013-11-22-ruby-1-9-3-p484-is-released.md | 43 -- .../2013-11-22-ruby-2-0-0-p353-is-released.md | 46 -- ...3-11-22-ruby-2-1-0-preview2-is-released.md | 73 --- .../_posts/2013-11-30-russian-translation.md | 28 - .../_posts/2013-12-09-rubyconf-tw-2014-cfp.md | 31 - .../_posts/2013-12-14-rubyconf-india-2014.md | 26 - ...13-12-17-maintenance-of-1-8-7-and-1-9-2.md | 75 --- .../2013-12-20-ruby-2-1-0-rc1-is-released.md | 68 --- ...-ruby-version-policy-changes-with-2-1-0.md | 64 --- .../2013-12-25-ruby-2-1-0-is-released.md | 52 -- .../2014-01-10-ruby-1-9-3-will-end-on-2015.md | 18 - .../_posts/2014-01-20-abril-pro-ruby-2014.md | 24 - .../2014-02-12-the-2014-ruby-hero-awards.md | 20 - .../2014-02-24-ruby-1-9-3-p545-is-released.md | 51 -- .../2014-02-24-ruby-2-0-0-p451-is-released.md | 41 -- .../2014-02-24-ruby-2-1-1-is-released.md | 40 -- ...regression-of-hash-reject-in-ruby-2-1-1.md | 45 -- .../_posts/2014-03-14-rubyconf-taiwan-2014.md | 16 - fa/news/_posts/2014-03-15-eurucamp-2014.md | 42 -- ...n-yaml-uri-escape-parsing-cve-2014-2525.md | 65 --- ...2014-04-10-severe-openssl-vulnerability.md | 76 --- ...-dispute-of-vulnerability-cve-2014-2734.md | 107 ---- .../2014-05-09-ruby-2-0-0-p481-is-released.md | 45 -- .../2014-05-09-ruby-2-1-2-is-released.md | 45 -- .../2014-05-16-ruby-1-9-3-p547-released.md | 54 -- ...-05-31-stopped-mailing-list-temporarily.md | 30 - ...ubyworld-conference-2014-speaker-invite.md | 17 - .../2014-07-01-eol-for-1-8-7-and-1-9-2.md | 34 -- ...7-26-rubykaigi-2014-registration-online.md | 63 -- .../2014-08-19-ruby-1-9-2-p330-released.md | 55 -- fa/news/_posts/2014-09-10-confoo-cfp.md | 29 - ...2014-09-18-ruby-2-2-0-preview1-released.md | 80 --- .../2014-09-19-ruby-2-0-0-p576-is-released.md | 55 -- .../2014-09-19-ruby-2-1-3-is-released.md | 54 -- ...hanging-default-settings-of-ext-openssl.md | 126 ---- .../2014-10-27-rexml-dos-cve-2014-8080.md | 109 ---- .../2014-10-27-ruby-1-9-3-p550-is-released.md | 65 --- .../2014-10-27-ruby-2-0-0-p594-is-released.md | 58 -- .../_posts/2014-10-27-ruby-2-1-4-released.md | 71 --- .../_posts/2014-11-03-tropicalrb-2015-cfp.md | 20 - .../2014-11-13-rexml-dos-cve-2014-8090.md | 74 --- .../2014-11-13-ruby-1-9-3-p551-is-released.md | 63 -- .../2014-11-13-ruby-2-0-0-p598-is-released.md | 59 -- .../2014-11-13-ruby-2-1-5-is-released.md | 58 -- ...2014-11-28-ruby-2-2-0-preview2-released.md | 94 --- .../2014-12-18-ruby-2-2-0-rc1-released.md | 91 --- .../_posts/2014-12-25-ruby-2-2-0-released.md | 101 ---- ...-02-23-support-for-ruby-1-9-3-has-ended.md | 15 - .../2015-02-25-ruby-2-0-0-p643-is-released.md | 57 -- .../_posts/2015-03-03-ruby-2-2-1-released.md | 52 -- .../2015-03-06-google-summer-of-code-2015.md | 33 -- .../2015-04-13-ruby-2-0-0-p645-released.md | 57 -- .../_posts/2015-04-13-ruby-2-1-6-released.md | 56 -- .../_posts/2015-04-13-ruby-2-2-2-released.md | 54 -- ...openssl-hostname-matching-vulnerability.md | 53 -- fa/news/_posts/2015-06-30-ruby-prize-2015.md | 25 - ...7-14-rubyconftw-2015-call-for-proposals.md | 23 - ...04-rubyconf-taiwan-registration-is-open.md | 16 - .../2015-08-18-ruby-2-0-0-p647-released.md | 57 -- .../_posts/2015-08-18-ruby-2-1-7-released.md | 56 -- .../_posts/2015-08-18-ruby-2-2-3-released.md | 54 -- fa/news/_posts/2015-08-31-confoo-cfp.md | 19 - .../2015-10-13-fukuoka-ruby-award-2016.md | 61 -- ...2015-11-11-ruby-2-3-0-preview1-released.md | 81 --- ...2015-12-11-ruby-2-3-0-preview2-released.md | 91 --- .../2015-12-16-ruby-2-0-0-p648-released.md | 53 -- .../_posts/2015-12-16-ruby-2-1-8-released.md | 55 -- .../_posts/2015-12-16-ruby-2-2-4-released.md | 53 -- ...ng-usage-in-fiddle-and-dl-cve-2015-7551.md | 82 --- .../_posts/2015-12-25-ruby-2-3-0-released.md | 83 --- ...2-24-support-plan-of-ruby-2-0-0-and-2-1.md | 42 -- .../_posts/2016-03-30-ruby-2-1-9-released.md | 58 -- .../_posts/2016-04-01-ruby-2-1-10-released.md | 49 -- .../_posts/2016-04-26-ruby-2-2-5-released.md | 56 -- .../_posts/2016-04-26-ruby-2-3-1-released.md | 51 -- fa/news/_posts/2016-05-16-confoo-cfp.md | 19 - ...2016-06-20-ruby-2-4-0-preview1-released.md | 115 ---- fa/news/_posts/2016-07-25-ruby-prize-2016.md | 31 - fa/news/_posts/2016-08-26-confoo-cfp.md | 20 - ...2016-09-08-ruby-2-4-0-preview2-released.md | 121 ---- .../2016-10-20-fukuoka-ruby-award-2017.md | 66 --- ...2016-11-09-ruby-2-4-0-preview3-released.md | 136 ----- .../_posts/2016-11-15-ruby-2-2-6-released.md | 53 -- .../_posts/2016-11-15-ruby-2-3-2-released.md | 54 -- .../_posts/2016-11-21-ruby-2-3-3-released.md | 55 -- .../2016-12-12-ruby-2-4-0-rc1-released.md | 135 ----- .../_posts/2016-12-25-ruby-2-4-0-released.md | 125 ---- .../_posts/2017-03-22-ruby-2-4-1-released.md | 50 -- .../_posts/2017-03-28-ruby-2-2-7-released.md | 61 -- .../_posts/2017-03-30-ruby-2-3-4-released.md | 66 --- ...017-04-01-support-of-ruby-2-1-has-ended.md | 43 -- fa/news/_posts/2017-07-21-ruby-prize-2017.md | 29 - ...019-03-31-support-of-ruby-2-3-has-ended.md | 37 ++ .../_posts/2019-04-01-ruby-2-4-6-released.md | 62 ++ .../_posts/2019-04-17-ruby-2-6-3-released.md | 51 ++ .../_posts/2019-04-23-move-to-git-from-svn.md | 40 ++ ...2019-05-30-ruby-2-7-0-preview1-released.md | 130 +++++ 312 files changed, 320 insertions(+), 13914 deletions(-) delete mode 100644 fa/news/_posts/2001-01-18-stable-snapshot-is-available.md delete mode 100644 fa/news/_posts/2001-04-19-ruby-pocket-reference.md delete mode 100644 fa/news/_posts/2001-06-20-ruby-garden.md delete mode 100644 fa/news/_posts/2001-07-10-removed-language-comparison-page.md delete mode 100644 fa/news/_posts/2001-07-13-ruby-introduction-presentation.md delete mode 100644 fa/news/_posts/2002-01-06-ruby-cvs-repository-guide.md delete mode 100644 fa/news/_posts/2002-02-01-report-security-issues.md delete mode 100644 fa/news/_posts/2002-03-01-167-is-released.md delete mode 100644 fa/news/_posts/2002-09-18-dutch-translation-of-wwwruby-langorg.md delete mode 100644 fa/news/_posts/2002-10-24-raa-replaced.md delete mode 100644 fa/news/_posts/2002-11-01-my20021101-ruby-conference-2002.md delete mode 100644 fa/news/_posts/2002-11-25-ruby-installer-for-windows-at-sourceforge.md delete mode 100644 fa/news/_posts/2002-12-05-matzs-slides-at-4-conferences.md delete mode 100644 fa/news/_posts/2002-12-07-raa-2-1-0.md delete mode 100644 fa/news/_posts/2002-12-09-raa-xml-interfaces-are-updated.md delete mode 100644 fa/news/_posts/2002-12-11-ruby-hacking-guide.md delete mode 100644 fa/news/_posts/2002-12-16-toward-ruby-langorg-renewal-trial-website-offered.md delete mode 100644 fa/news/_posts/2002-12-18-color-scheme-of-wwwruby-langorg.md delete mode 100644 fa/news/_posts/2002-12-24-ruby-1-6-8-and-1-8-0-preview-1.md delete mode 100644 fa/news/_posts/2003-01-07-ruby-in-2002-contents-wanted.md delete mode 100644 fa/news/_posts/2003-01-31-raa-2-3-0.md delete mode 100644 fa/news/_posts/2003-02-21-first-europeen-ruby-conference.md delete mode 100644 fa/news/_posts/2003-02-24-happy-birthday-ruby.md delete mode 100644 fa/news/_posts/2003-08-04-ruby-180-released.md delete mode 100644 fa/news/_posts/2003-10-01-ruby-conference-2003.md delete mode 100644 fa/news/_posts/2003-10-30-ruby-181-preview2.md delete mode 100644 fa/news/_posts/2003-11-23-ruby-standard-library-documentation.md delete mode 100644 fa/news/_posts/2003-12-05-ruby-181-preview3.md delete mode 100644 fa/news/_posts/2003-12-19-new-ruby-change-request-rcr-process.md delete mode 100644 fa/news/_posts/2003-12-20-oreilly-onlamp-ruby-article.md delete mode 100644 fa/news/_posts/2003-12-25-ruby-181-is-out.md delete mode 100644 fa/news/_posts/2004-01-07-matz-on-craftsmanship.md delete mode 100644 fa/news/_posts/2004-01-17-rss-feed-started.md delete mode 100644 fa/news/_posts/2004-01-29-how-to-write-an-rcr.md delete mode 100644 fa/news/_posts/2004-02-15-ruby-talk-mailing-posting-policy-change.md delete mode 100644 fa/news/_posts/2004-02-16-ruby-article-in-linux-journal.md delete mode 100644 fa/news/_posts/2004-04-12-ruby-track-and-tutorials-at-oscon.md delete mode 100644 fa/news/_posts/2004-05-23-rubyconf-2004-pre-registration-is-open.md delete mode 100644 fa/news/_posts/2004-05-29-heliumruby-langorg-was-cracked.md delete mode 100644 fa/news/_posts/2004-06-01-notice-on-ruby-langorg-mailing-list-service-restart.md delete mode 100644 fa/news/_posts/2004-06-15-wwwftp-service-restart.md delete mode 100644 fa/news/_posts/2004-06-22-anonymous-cvs-service-restart.md delete mode 100644 fa/news/_posts/2004-06-24-cvsweb-service-restart.md delete mode 100644 fa/news/_posts/2004-06-29-modules-added-to-the-anonymous-cvs-repository.md delete mode 100644 fa/news/_posts/2004-07-05-added-libsoap4rlibcsvmodruby-old-to-anonymous-cvs.md delete mode 100644 fa/news/_posts/2004-07-06-suspended-libsoap4r-and-libcsv-again.md delete mode 100644 fa/news/_posts/2004-07-21-ruby-182-preview1-released.md delete mode 100644 fa/news/_posts/2004-07-22-incident-analysis-of-the-intrusion-on-heliumruby-langorg.md delete mode 100644 fa/news/_posts/2004-07-30-ruby-182-preview2-released.md delete mode 100644 fa/news/_posts/2004-07-31-rubyconf-2004-registration-now-open.md delete mode 100644 fa/news/_posts/2004-08-08-brad-cox-to-keynote-rubyconf-2004.md delete mode 100644 fa/news/_posts/2004-09-18-korean-translation-of-wwwruby-langorg.md delete mode 100644 fa/news/_posts/2004-09-22-ruby-forum.md delete mode 100644 fa/news/_posts/2004-09-29-rsync-service-restart.md delete mode 100644 fa/news/_posts/2004-11-08-182-preview3-released.md delete mode 100644 fa/news/_posts/2004-12-02-ruby-codefest-grant-program-announced-by-ruby-central-inc.md delete mode 100644 fa/news/_posts/2004-12-19-pragmatic-bookshelf-planning-a-series-of-ruby-books.md delete mode 100644 fa/news/_posts/2004-12-22-182-preview4-released.md delete mode 100644 fa/news/_posts/2004-12-25-chinese-translation-of-wwwruby-langorg.md delete mode 100644 fa/news/_posts/2004-12-26-ruby-182-released.md delete mode 100644 fa/news/_posts/2005-02-20-ruby-weekly-news.md delete mode 100644 fa/news/_posts/2005-03-11-rubycentral-codefest-grants-announced.md delete mode 100644 fa/news/_posts/2005-03-23-rubyconf-2005-preregistration-now-open.md delete mode 100644 fa/news/_posts/2005-04-14-server-maintenance.md delete mode 100644 fa/news/_posts/2005-04-19-anonymous-cvs-service-stopped.md delete mode 100644 fa/news/_posts/2005-04-27-anonymous-cvs-service-restart.md delete mode 100644 fa/news/_posts/2005-06-22-upgrade-to-debian-gnulinux-31.md delete mode 100644 fa/news/_posts/2005-07-01-xmlrpcipimethods-vulnerability.md delete mode 100644 fa/news/_posts/2005-07-02-securityruby-langorg.md delete mode 100644 fa/news/_posts/2005-08-20-rubyconf-2005-registration-tops-100.md delete mode 100644 fa/news/_posts/2005-08-31-rubyconf-2005-registration-time-is-running-out.md delete mode 100644 fa/news/_posts/2005-09-07-registration-for-rubyconf-2005-is-closing-soon.md delete mode 100644 fa/news/_posts/2005-09-21-ruby-183-released.md delete mode 100644 fa/news/_posts/2005-10-03-ruby-vulnerability-in-the-safe-level-settings.md delete mode 100644 fa/news/_posts/2005-10-10-euruko-2005.md delete mode 100644 fa/news/_posts/2005-10-11-new-ruby-web-magazine-goes-live.md delete mode 100644 fa/news/_posts/2005-12-14-ruby-184-preview-2-released.md delete mode 100644 fa/news/_posts/2005-12-24-ruby-184-released.md delete mode 100644 fa/news/_posts/2006-02-09-conference-season-is-here.md delete mode 100644 fa/news/_posts/2006-04-19-ruby-in-google-summer-of-code.md delete mode 100644 fa/news/_posts/2006-06-20-the-future-of-ruby.md delete mode 100644 fa/news/_posts/2006-08-29-ruby-1-8-5-released.md delete mode 100644 fa/news/_posts/2006-08-30-server-maintenance-20060830.md delete mode 100644 fa/news/_posts/2006-09-12-site-launch-at-last.md delete mode 100644 fa/news/_posts/2006-10-18-rubyconf-2006-almost-upon-us.md delete mode 100644 fa/news/_posts/2006-10-26-rubyconf-2006-recap.md delete mode 100644 fa/news/_posts/2006-11-03-CVE-2006-5467.md delete mode 100644 fa/news/_posts/2006-12-04-another-dos-vulnerability-in-cgi-library.md delete mode 100644 fa/news/_posts/2006-12-20-ruby-on-rails-bootcamp-in-germany.md delete mode 100644 fa/news/_posts/2006-12-22-cvs-repository-moved-to-svn.md delete mode 100644 fa/news/_posts/2006-12-27-ruby-on-rails-bootcamp-in-georgia.md delete mode 100644 fa/news/_posts/2007-01-24-mountainwest-rubyconf-2007-registration-now-open.md delete mode 100644 fa/news/_posts/2007-01-26-mountainwest-speaker-list-posted.md delete mode 100644 fa/news/_posts/2007-02-21-ip-address-change.md delete mode 100644 fa/news/_posts/2007-03-01-cvs-services-will-be-permanently-unavailable.md delete mode 100644 fa/news/_posts/2007-03-12-ruby-1-8-6-released.md delete mode 100644 fa/news/_posts/2007-07-27-proposals-now-being-accepted-for-rubyconf-2007-presentations.md delete mode 100644 fa/news/_posts/2007-09-01-ruby-logo-contest.md delete mode 100644 fa/news/_posts/2007-09-06-rubyconf-2007-registration-now-open.md delete mode 100644 fa/news/_posts/2007-09-18-euruko-2007-the-european-ruby-conference.md delete mode 100644 fa/news/_posts/2007-10-04-net-https-vulnerability.md delete mode 100644 fa/news/_posts/2007-12-25-ruby-1-9-0-released.md delete mode 100644 fa/news/_posts/2008-01-09-ruby-logo-available.md delete mode 100644 fa/news/_posts/2008-01-24-ruby-fools-conference.md delete mode 100644 fa/news/_posts/2008-02-04-mountainwest-rubyconf-2008.md delete mode 100644 fa/news/_posts/2008-02-25-european-ruby-conference-2008-euruko.md delete mode 100644 fa/news/_posts/2008-02-27-scotland-on-rails-2008.md delete mode 100644 fa/news/_posts/2008-03-03-webrick-file-access-vulnerability.md delete mode 100644 fa/news/_posts/2008-04-11-tulsa-ruby-workshop.md delete mode 100644 fa/news/_posts/2008-05-22-server-maintenance-20080523.md delete mode 100644 fa/news/_posts/2008-05-31-ruby-1-8-7-has-been-released.md delete mode 100644 fa/news/_posts/2008-06-16-rubynation-2008.md delete mode 100644 fa/news/_posts/2008-06-20-arbitrary-code-execution-vulnerabilities.md delete mode 100644 fa/news/_posts/2008-08-04-rubyconf-2008-proposals-now-being-accepted.md delete mode 100644 fa/news/_posts/2008-08-08-multiple-vulnerabilities-in-ruby.md delete mode 100644 fa/news/_posts/2008-08-11-ruby-1-8-7-p72-and-1-8-6-p287-released.md delete mode 100644 fa/news/_posts/2008-08-23-dos-vulnerability-in-rexml.md delete mode 100644 fa/news/_posts/2008-09-09-voices-that-matter-2008.md delete mode 100644 fa/news/_posts/2008-10-02-rubyconf-2008-is-sold-out.md delete mode 100644 fa/news/_posts/2008-10-28-ruby-1-9-1-preview-1-released.md delete mode 100644 fa/news/_posts/2008-11-08-mountainwest-rubyconf-2009-dates-and-cfp.md delete mode 100644 fa/news/_posts/2008-11-10-scotland-on-rails-2009.md delete mode 100644 fa/news/_posts/2008-11-27-rubyconf-2008-summary-video.md delete mode 100644 fa/news/_posts/2008-12-23-mountainwest-rubyconf-2009-proposal-deadline-approaching.md delete mode 100644 fa/news/_posts/2009-01-28-20090131-server-maintenance.md delete mode 100644 fa/news/_posts/2009-01-30-ruby-1-9-1-released.md delete mode 100644 fa/news/_posts/2009-02-25-mountainwest-rubyconf-schedule.md delete mode 100644 fa/news/_posts/2009-04-18-ruby-1-8-7-p160-and-1-8-6-p368-released.md delete mode 100644 fa/news/_posts/2009-05-12-ruby-1-9-1-p129-released.md delete mode 100644 fa/news/_posts/2009-05-23-ruby-1-8-6-maintenance-moved-to-engine-yard.md delete mode 100644 fa/news/_posts/2009-06-09-dos-vulnerability-in-bigdecimal.md delete mode 100644 fa/news/_posts/2009-07-20-ruby-1-9-1-p243-released.md delete mode 100644 fa/news/_posts/2009-07-20-ruby-1-9-2-preview-1-released.md delete mode 100644 fa/news/_posts/2009-08-03-call-for-proposals-for-rubyconf-2009.md delete mode 100644 fa/news/_posts/2009-09-04-rubyworld-conference.md delete mode 100644 fa/news/_posts/2009-12-03-mountainwest-rubyconf-2010.md delete mode 100644 fa/news/_posts/2009-12-07-heap-overflow-in-string.md delete mode 100644 fa/news/_posts/2009-12-07-ruby-1-9-1-p376-is-released.md delete mode 100644 fa/news/_posts/2009-12-25-ruby-1-8-7-p248-released.md delete mode 100644 fa/news/_posts/2010-01-10-webrick-escape-sequence-injection.md delete mode 100644 fa/news/_posts/2010-03-06-rubynation-2010.md delete mode 100644 fa/news/_posts/2010-03-17-red-dirt-rubyconf-2010.md delete mode 100644 fa/news/_posts/2010-03-26-ruby-summer-of-code-2010.md delete mode 100644 fa/news/_posts/2010-06-23-ruby-1-8-7-p299-released.md delete mode 100644 fa/news/_posts/2010-07-02-ruby-1-9-1-p429-is-released.md delete mode 100644 fa/news/_posts/2010-07-02-ruby-1-9-2-rc1-is-released.md delete mode 100644 fa/news/_posts/2010-07-11-ruby-1-9-2-rc2-is-released.md delete mode 100644 fa/news/_posts/2010-08-16-ruby-1-8-7-p302-is-released.md delete mode 100644 fa/news/_posts/2010-08-16-ruby-1-9-1-p430-is-released.md delete mode 100644 fa/news/_posts/2010-08-16-xss-in-webrick-cve-2010-0541.md delete mode 100644 fa/news/_posts/2010-08-18-ruby-1-9-2-released.md delete mode 100644 fa/news/_posts/2010-10-01-see-matz-in-san-francisco-or-silicon-valley.md delete mode 100644 fa/news/_posts/2010-11-17-fukuoka-ruby-award-2011.md delete mode 100644 fa/news/_posts/2010-12-25-ruby-1-8-7-p330-released.md delete mode 100644 fa/news/_posts/2010-12-25-ruby-1-9-2-p136-is-released.md delete mode 100644 fa/news/_posts/2011-02-18-exception-methods-can-bypass-safe.md delete mode 100644 fa/news/_posts/2011-02-18-fileutils-is-vulnerable-to-symlink-race-attacks.md delete mode 100644 fa/news/_posts/2011-02-22-planned-maintenance-of-redmine-ruby-lang-org.md delete mode 100644 fa/news/_posts/2011-07-02-ruby-1-8-7-p352-released.md delete mode 100644 fa/news/_posts/2011-07-15-ruby-1-9-2-p290-is-released.md delete mode 100644 fa/news/_posts/2011-08-01-ruby-1-9-3-preview1-has-been-released.md delete mode 100644 fa/news/_posts/2011-08-11-confoo-2012-call-for-papers-is-now-open.md delete mode 100644 fa/news/_posts/2011-09-24-ruby-1-9-3-rc1-has-been-released.md delete mode 100644 fa/news/_posts/2011-10-06-plans-for-1-8-7.md delete mode 100644 fa/news/_posts/2011-10-12-programming-competitions-with-matz.md delete mode 100644 fa/news/_posts/2011-10-31-ruby-1-9-3-p0-is-released.md delete mode 100644 fa/news/_posts/2011-12-28-denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815.md delete mode 100644 fa/news/_posts/2012-02-16-ruby-1-9-3-p125-is-released.md delete mode 100644 fa/news/_posts/2012-02-16-security-fix-for-ruby-openssl-module.md delete mode 100644 fa/news/_posts/2012-03-29-matz-earns-the-fsfs-2011-free-software-award.md delete mode 100644 fa/news/_posts/2012-04-10-rubyteach-2012.md delete mode 100644 fa/news/_posts/2012-04-20-ruby-1-9-3-p194-is-released.md delete mode 100644 fa/news/_posts/2012-04-21-ruby-1-9-2-p320-is-released.md delete mode 100644 fa/news/_posts/2012-05-30-server-maintenance-20120606.md delete mode 100644 fa/news/_posts/2012-06-02-a-facebook-group.md delete mode 100644 fa/news/_posts/2012-06-29-ruby-1-8-7-p370-released.md delete mode 100644 fa/news/_posts/2012-09-07-confoo-2013call-for-papers-is-now-open.md delete mode 100644 fa/news/_posts/2012-10-12-cve-2012-4464-cve-2012-4466.md delete mode 100644 fa/news/_posts/2012-10-12-poisoned-NUL-byte-vulnerability.md delete mode 100644 fa/news/_posts/2012-10-12-ruby-1-9-3-p286-is-released.md delete mode 100644 fa/news/_posts/2012-10-22-rupy-2012-coming-very-soon.md delete mode 100644 fa/news/_posts/2012-11-09-ruby-1-9-3-p327-is-released.md delete mode 100644 fa/news/_posts/2012-11-09-ruby19-hashdos-cve-2012-5371.md delete mode 100644 fa/news/_posts/2012-11-10-fukuoka-ruby-award-2013.md delete mode 100644 fa/news/_posts/2012-12-25-ruby-1-9-3-p362-is-released.md delete mode 100644 fa/news/_posts/2013-01-17-ruby-1-9-3-p374-is-released.md delete mode 100644 fa/news/_posts/2013-01-23-confoo-with-ruby-in-montreal.md delete mode 100644 fa/news/_posts/2013-02-06-rdoc-xss-cve-2013-0256.md delete mode 100644 fa/news/_posts/2013-02-06-ruby-1-9-3-p385-is-released.md delete mode 100644 fa/news/_posts/2013-02-08-ruby-2-0-0-rc2-is-released.md delete mode 100644 fa/news/_posts/2013-02-15-the-2013-ruby-hero-awards.md delete mode 100644 fa/news/_posts/2013-02-16-the-barcelona-ruby-conference-call-for-papers-is-open.md delete mode 100644 fa/news/_posts/2013-02-22-json-dos-cve-2013-0269.md delete mode 100644 fa/news/_posts/2013-02-22-rexml-dos-2013-02-22.md delete mode 100644 fa/news/_posts/2013-02-22-ruby-1-9-3-p392-is-released.md delete mode 100644 fa/news/_posts/2013-02-24-ruby-2-0-0-p0-is-released.md delete mode 100644 fa/news/_posts/2013-05-14-ruby-1-9-3-p429-is-released.md delete mode 100644 fa/news/_posts/2013-05-14-ruby-2-0-0-p195-is-released.md delete mode 100644 fa/news/_posts/2013-05-14-taint-bypass-dl-fiddle-cve-2013-2065.md delete mode 100644 fa/news/_posts/2013-06-12-new-ruby-lang-org-released.md delete mode 100644 fa/news/_posts/2013-06-27-hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073.md delete mode 100644 fa/news/_posts/2013-06-27-ruby-1-8-7-p374-is-released.md delete mode 100644 fa/news/_posts/2013-06-27-ruby-1-9-3-p448-is-released.md delete mode 100644 fa/news/_posts/2013-06-27-ruby-2-0-0-p247-is-released.md delete mode 100644 fa/news/_posts/2013-06-30-we-retire-1-8-7.md delete mode 100644 fa/news/_posts/2013-08-06-status-issue.md delete mode 100644 fa/news/_posts/2013-08-08-rip-raa.md delete mode 100644 fa/news/_posts/2013-08-29-confoo-cfp.md delete mode 100644 fa/news/_posts/2013-09-03-vietnamese-translation.md delete mode 100644 fa/news/_posts/2013-09-07-we-use-fastly-cdn.md delete mode 100644 fa/news/_posts/2013-09-23-ruby-2-1-0-preview1-is-released.md delete mode 100644 fa/news/_posts/2013-09-28-design-contest.md delete mode 100644 fa/news/_posts/2013-10-04-rubyconf-au-2014.md delete mode 100644 fa/news/_posts/2013-11-21-fukuoka-ruby-award-2014.md delete mode 100644 fa/news/_posts/2013-11-22-heap-overflow-in-floating-point-parsing-cve-2013-4164.md delete mode 100644 fa/news/_posts/2013-11-22-ruby-1-9-3-p484-is-released.md delete mode 100644 fa/news/_posts/2013-11-22-ruby-2-0-0-p353-is-released.md delete mode 100644 fa/news/_posts/2013-11-22-ruby-2-1-0-preview2-is-released.md delete mode 100644 fa/news/_posts/2013-11-30-russian-translation.md delete mode 100644 fa/news/_posts/2013-12-09-rubyconf-tw-2014-cfp.md delete mode 100644 fa/news/_posts/2013-12-14-rubyconf-india-2014.md delete mode 100644 fa/news/_posts/2013-12-17-maintenance-of-1-8-7-and-1-9-2.md delete mode 100644 fa/news/_posts/2013-12-20-ruby-2-1-0-rc1-is-released.md delete mode 100644 fa/news/_posts/2013-12-21-ruby-version-policy-changes-with-2-1-0.md delete mode 100644 fa/news/_posts/2013-12-25-ruby-2-1-0-is-released.md delete mode 100644 fa/news/_posts/2014-01-10-ruby-1-9-3-will-end-on-2015.md delete mode 100644 fa/news/_posts/2014-01-20-abril-pro-ruby-2014.md delete mode 100644 fa/news/_posts/2014-02-12-the-2014-ruby-hero-awards.md delete mode 100644 fa/news/_posts/2014-02-24-ruby-1-9-3-p545-is-released.md delete mode 100644 fa/news/_posts/2014-02-24-ruby-2-0-0-p451-is-released.md delete mode 100644 fa/news/_posts/2014-02-24-ruby-2-1-1-is-released.md delete mode 100644 fa/news/_posts/2014-03-10-regression-of-hash-reject-in-ruby-2-1-1.md delete mode 100644 fa/news/_posts/2014-03-14-rubyconf-taiwan-2014.md delete mode 100644 fa/news/_posts/2014-03-15-eurucamp-2014.md delete mode 100644 fa/news/_posts/2014-03-29-heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525.md delete mode 100644 fa/news/_posts/2014-04-10-severe-openssl-vulnerability.md delete mode 100644 fa/news/_posts/2014-05-09-dispute-of-vulnerability-cve-2014-2734.md delete mode 100644 fa/news/_posts/2014-05-09-ruby-2-0-0-p481-is-released.md delete mode 100644 fa/news/_posts/2014-05-09-ruby-2-1-2-is-released.md delete mode 100644 fa/news/_posts/2014-05-16-ruby-1-9-3-p547-released.md delete mode 100644 fa/news/_posts/2014-05-31-stopped-mailing-list-temporarily.md delete mode 100644 fa/news/_posts/2014-06-16-rubyworld-conference-2014-speaker-invite.md delete mode 100644 fa/news/_posts/2014-07-01-eol-for-1-8-7-and-1-9-2.md delete mode 100644 fa/news/_posts/2014-07-26-rubykaigi-2014-registration-online.md delete mode 100644 fa/news/_posts/2014-08-19-ruby-1-9-2-p330-released.md delete mode 100644 fa/news/_posts/2014-09-10-confoo-cfp.md delete mode 100644 fa/news/_posts/2014-09-18-ruby-2-2-0-preview1-released.md delete mode 100644 fa/news/_posts/2014-09-19-ruby-2-0-0-p576-is-released.md delete mode 100644 fa/news/_posts/2014-09-19-ruby-2-1-3-is-released.md delete mode 100644 fa/news/_posts/2014-10-27-changing-default-settings-of-ext-openssl.md delete mode 100644 fa/news/_posts/2014-10-27-rexml-dos-cve-2014-8080.md delete mode 100644 fa/news/_posts/2014-10-27-ruby-1-9-3-p550-is-released.md delete mode 100644 fa/news/_posts/2014-10-27-ruby-2-0-0-p594-is-released.md delete mode 100644 fa/news/_posts/2014-10-27-ruby-2-1-4-released.md delete mode 100644 fa/news/_posts/2014-11-03-tropicalrb-2015-cfp.md delete mode 100644 fa/news/_posts/2014-11-13-rexml-dos-cve-2014-8090.md delete mode 100644 fa/news/_posts/2014-11-13-ruby-1-9-3-p551-is-released.md delete mode 100644 fa/news/_posts/2014-11-13-ruby-2-0-0-p598-is-released.md delete mode 100644 fa/news/_posts/2014-11-13-ruby-2-1-5-is-released.md delete mode 100644 fa/news/_posts/2014-11-28-ruby-2-2-0-preview2-released.md delete mode 100644 fa/news/_posts/2014-12-18-ruby-2-2-0-rc1-released.md delete mode 100644 fa/news/_posts/2014-12-25-ruby-2-2-0-released.md delete mode 100644 fa/news/_posts/2015-02-23-support-for-ruby-1-9-3-has-ended.md delete mode 100644 fa/news/_posts/2015-02-25-ruby-2-0-0-p643-is-released.md delete mode 100644 fa/news/_posts/2015-03-03-ruby-2-2-1-released.md delete mode 100644 fa/news/_posts/2015-03-06-google-summer-of-code-2015.md delete mode 100644 fa/news/_posts/2015-04-13-ruby-2-0-0-p645-released.md delete mode 100644 fa/news/_posts/2015-04-13-ruby-2-1-6-released.md delete mode 100644 fa/news/_posts/2015-04-13-ruby-2-2-2-released.md delete mode 100644 fa/news/_posts/2015-04-13-ruby-openssl-hostname-matching-vulnerability.md delete mode 100644 fa/news/_posts/2015-06-30-ruby-prize-2015.md delete mode 100644 fa/news/_posts/2015-07-14-rubyconftw-2015-call-for-proposals.md delete mode 100644 fa/news/_posts/2015-08-04-rubyconf-taiwan-registration-is-open.md delete mode 100644 fa/news/_posts/2015-08-18-ruby-2-0-0-p647-released.md delete mode 100644 fa/news/_posts/2015-08-18-ruby-2-1-7-released.md delete mode 100644 fa/news/_posts/2015-08-18-ruby-2-2-3-released.md delete mode 100644 fa/news/_posts/2015-08-31-confoo-cfp.md delete mode 100644 fa/news/_posts/2015-10-13-fukuoka-ruby-award-2016.md delete mode 100644 fa/news/_posts/2015-11-11-ruby-2-3-0-preview1-released.md delete mode 100644 fa/news/_posts/2015-12-11-ruby-2-3-0-preview2-released.md delete mode 100644 fa/news/_posts/2015-12-16-ruby-2-0-0-p648-released.md delete mode 100644 fa/news/_posts/2015-12-16-ruby-2-1-8-released.md delete mode 100644 fa/news/_posts/2015-12-16-ruby-2-2-4-released.md delete mode 100644 fa/news/_posts/2015-12-16-unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551.md delete mode 100644 fa/news/_posts/2015-12-25-ruby-2-3-0-released.md delete mode 100644 fa/news/_posts/2016-02-24-support-plan-of-ruby-2-0-0-and-2-1.md delete mode 100644 fa/news/_posts/2016-03-30-ruby-2-1-9-released.md delete mode 100644 fa/news/_posts/2016-04-01-ruby-2-1-10-released.md delete mode 100644 fa/news/_posts/2016-04-26-ruby-2-2-5-released.md delete mode 100644 fa/news/_posts/2016-04-26-ruby-2-3-1-released.md delete mode 100644 fa/news/_posts/2016-05-16-confoo-cfp.md delete mode 100644 fa/news/_posts/2016-06-20-ruby-2-4-0-preview1-released.md delete mode 100644 fa/news/_posts/2016-07-25-ruby-prize-2016.md delete mode 100644 fa/news/_posts/2016-08-26-confoo-cfp.md delete mode 100644 fa/news/_posts/2016-09-08-ruby-2-4-0-preview2-released.md delete mode 100644 fa/news/_posts/2016-10-20-fukuoka-ruby-award-2017.md delete mode 100644 fa/news/_posts/2016-11-09-ruby-2-4-0-preview3-released.md delete mode 100644 fa/news/_posts/2016-11-15-ruby-2-2-6-released.md delete mode 100644 fa/news/_posts/2016-11-15-ruby-2-3-2-released.md delete mode 100644 fa/news/_posts/2016-11-21-ruby-2-3-3-released.md delete mode 100644 fa/news/_posts/2016-12-12-ruby-2-4-0-rc1-released.md delete mode 100644 fa/news/_posts/2016-12-25-ruby-2-4-0-released.md delete mode 100644 fa/news/_posts/2017-03-22-ruby-2-4-1-released.md delete mode 100644 fa/news/_posts/2017-03-28-ruby-2-2-7-released.md delete mode 100644 fa/news/_posts/2017-03-30-ruby-2-3-4-released.md delete mode 100644 fa/news/_posts/2017-04-01-support-of-ruby-2-1-has-ended.md delete mode 100644 fa/news/_posts/2017-07-21-ruby-prize-2017.md create mode 100644 fa/news/_posts/2019-03-31-support-of-ruby-2-3-has-ended.md create mode 100644 fa/news/_posts/2019-04-01-ruby-2-4-6-released.md create mode 100644 fa/news/_posts/2019-04-17-ruby-2-6-3-released.md create mode 100644 fa/news/_posts/2019-04-23-move-to-git-from-svn.md create mode 100644 fa/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md diff --git a/fa/news/_posts/2001-01-18-stable-snapshot-is-available.md b/fa/news/_posts/2001-01-18-stable-snapshot-is-available.md deleted file mode 100644 index 010fa3889b..0000000000 --- a/fa/news/_posts/2001-01-18-stable-snapshot-is-available.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Stable snapshot is available" -author: "Matz" -lang: en ---- - -[Stable snapshot][1] is available. This is tar’ed and gzip’ed file of -the latest stable CVS. It should be better than the last release. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/stable-snapshot.tar.gz diff --git a/fa/news/_posts/2001-04-19-ruby-pocket-reference.md b/fa/news/_posts/2001-04-19-ruby-pocket-reference.md deleted file mode 100644 index b76fbce42b..0000000000 --- a/fa/news/_posts/2001-04-19-ruby-pocket-reference.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Ruby Pocket Reference" -author: "Matz" -lang: en ---- - -O’Reilly finally decided to publish translation of Ruby Pocket -Reference. It will be [full-sized book titled “Ruby in a Nutshell”][1]. - - - -[1]: http://www.ora.com/catalog/ruby diff --git a/fa/news/_posts/2001-06-20-ruby-garden.md b/fa/news/_posts/2001-06-20-ruby-garden.md deleted file mode 100644 index 0734b285d5..0000000000 --- a/fa/news/_posts/2001-06-20-ruby-garden.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: news_post -title: "Ruby Garden" -author: "Matz" -lang: en ---- - -[Ruby Garden][1] – News Portal for Ruby. - - - -[1]: http://www.rubygarden.org/ diff --git a/fa/news/_posts/2001-07-10-removed-language-comparison-page.md b/fa/news/_posts/2001-07-10-removed-language-comparison-page.md deleted file mode 100644 index c4b16d05a8..0000000000 --- a/fa/news/_posts/2001-07-10-removed-language-comparison-page.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "Removed language comparison page" -author: "NaHi" -lang: en ---- - -Matz desided to remove the page. - - - - - "I removed the link to the language comparison page, - because there're too many people to take it too serious. - It was supposed to be funny." diff --git a/fa/news/_posts/2001-07-13-ruby-introduction-presentation.md b/fa/news/_posts/2001-07-13-ruby-introduction-presentation.md deleted file mode 100644 index d12b7a5c46..0000000000 --- a/fa/news/_posts/2001-07-13-ruby-introduction-presentation.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Ruby introduction presentation" -author: "Matz" -lang: en ---- - -[Ruby introduction presentation at New York City CTO club][1] by Jim -Menard on July 10, 2001. - - - -[1]: http://www.io.com/~jimm/downloads/rubytalk/ diff --git a/fa/news/_posts/2002-01-06-ruby-cvs-repository-guide.md b/fa/news/_posts/2002-01-06-ruby-cvs-repository-guide.md deleted file mode 100644 index 1c08d6a908..0000000000 --- a/fa/news/_posts/2002-01-06-ruby-cvs-repository-guide.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: news_post -title: "Ruby CVS Repository Guide" -author: "Unknown Author" -lang: en ---- - -The source code of Ruby is stored in CVS repositories. You can walk them -around by CVSweb: - -* https://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ - -Anonymous CVS is also available: - - $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src login - (Logging in to anonymous@cvs.ruby-lang.org) - CVS password: - $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/src co ruby - - $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/doc login - (Logging in to anonymous@cvs.ruby-lang.org) - CVS password: - $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/doc co doc - - $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/www login - (Logging in to anonymous@cvs.ruby-lang.org) - CVS password: - $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/www co www - -No password is required. Please just press Enter. - -In addition, CVSup is also available: - -* http://cvs.ruby-lang.org/cvsup/ - -You’ll find “supfiles” here. With them, you can get a part of or a whole -repository by means of CVSup. - -That’s all, folks! Happy hacking! diff --git a/fa/news/_posts/2002-02-01-report-security-issues.md b/fa/news/_posts/2002-02-01-report-security-issues.md deleted file mode 100644 index bc6d2f9f27..0000000000 --- a/fa/news/_posts/2002-02-01-report-security-issues.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: news_post -title: "Report Security Issues" -author: "Unknown Author" -lang: en ---- - -Please send a mail to -[security@ruby-lang.org](mailto:security@ruby-lang.org) to report -security issues. Reported problems will be published after fixes. - diff --git a/fa/news/_posts/2002-03-01-167-is-released.md b/fa/news/_posts/2002-03-01-167-is-released.md deleted file mode 100644 index 022939daaa..0000000000 --- a/fa/news/_posts/2002-03-01-167-is-released.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: news_post -title: "1.6.7 is released" -author: "Unknown Author" -lang: en ---- - -The new stable version [1.6.7][1] is released. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.6.7.tar.gz diff --git a/fa/news/_posts/2002-09-18-dutch-translation-of-wwwruby-langorg.md b/fa/news/_posts/2002-09-18-dutch-translation-of-wwwruby-langorg.md deleted file mode 100644 index 9c71324086..0000000000 --- a/fa/news/_posts/2002-09-18-dutch-translation-of-wwwruby-langorg.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Dutch translation of www.ruby-lang.org" -author: "Unknown Author" -lang: en ---- - -[Dutch translation of www.ruby-lang.org][1] is available. Thanks to John -Jacobs. - - - -[1]: http://www.xs4all.nl/~jjacobs/index.html diff --git a/fa/news/_posts/2002-10-24-raa-replaced.md b/fa/news/_posts/2002-10-24-raa-replaced.md deleted file mode 100644 index fbed2daa68..0000000000 --- a/fa/news/_posts/2002-10-24-raa-replaced.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: news_post -title: "RAA replaced" -author: "Unknown Author" -lang: en ---- - -We www-admin@ruby-lang.org rewrote current [RAA][1] which got a little -old and rickety. - -Changes: - -* lightweight top page -* iso8859-1 => UTF-8 -* added simple keyword search -* show projects by the specified owner - -SOAP and XML-RPC interfaces will be updated, too. Users of RAA SOAP and -XML-RPC interfaces, please tell me if the problem occurred. I changed -wire format a little. See below; - -* id and owner\_id element are added to each entry. Those two elements - contain positive integer. -* For SOAP interface users only: element url, download and email are - marked as xsd:anyURI type. Those elements will be unmarshalled as a - URI object at client side, not a String object. - -Except SOAP and XML-RPC we are offering a plain XML or RDF file of RAA -information. Those are at http://raa.ruby-lang.org/xml.xml and -http://raa.ruby-lang.org/rdf.xml. You can also get recent information in -RDF format from http://raa.ruby-lang.org/since.mrb - -Users of pragdave’s XML/RDF feed interfaces should use above for a -while. Pragdave’s former interfaces are not updated now because of -replacing RAA DB. Bare in mind some changes are made to these -interfaces, too. See below; - -* \*.xml files are updated in each 15 minutes, not on the fly. -* Charset encoding scheme was changed from iso-8859-1 to UTF-8. -* XML instance format is changed for user’s convenience. - - - -[1]: http://raa.ruby-lang.org/ diff --git a/fa/news/_posts/2002-11-01-my20021101-ruby-conference-2002.md b/fa/news/_posts/2002-11-01-my20021101-ruby-conference-2002.md deleted file mode 100644 index a95694868e..0000000000 --- a/fa/news/_posts/2002-11-01-my20021101-ruby-conference-2002.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: news_post -title: "Ruby Conference 2002" -author: "NaHi" -lang: en ---- - -(Excerpted from [http://www.rubygarden.org/ruby?RubyIn2002][1].) - -The second annual Ruby Conference was held in November 2002 in Seattle, -WA, USA. - -There were about fifteen presentations, as well as a keynote speech by -Matz. - -Slides of the talks are available at -[http://www.zenspider.com/Languages/Ruby/RubyConf2002/][2]. - - - -[1]: http://www.rubygarden.org/ruby?RubyIn2002 -[2]: http://www.zenspider.com/Languages/Ruby/RubyConf2002/ diff --git a/fa/news/_posts/2002-11-25-ruby-installer-for-windows-at-sourceforge.md b/fa/news/_posts/2002-11-25-ruby-installer-for-windows-at-sourceforge.md deleted file mode 100644 index 58910ce209..0000000000 --- a/fa/news/_posts/2002-11-25-ruby-installer-for-windows-at-sourceforge.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: news_post -title: "Ruby Installer For Windows at sourceforge" -author: "NaHi" -lang: en ---- - -Now you can get Ruby Installer For Windows from -[http://rubyinstaller.sourceforge.net/][1]. - -Excerpted from the site. - - This is a "one-click", self-contained installer that - comprises the Ruby language itself, dozens of popular - extensions and packages, a syntax-highlighting editor - and execution environment, and a Windows help file that - contains the full text of the book, "Programming Ruby: - The Pragmatic Programmer's Guide". - -It’s a must item for Ruby users on Win32 box. Check also -[usa’s binaries][2] and [eban’s win32 binaries][3] to get -Win32 binaries with dozens of popular extensions. - - - -[1]: http://rubyinstaller.sourceforge.net/ -[2]: http://www.dm4lab.to/~usa/ruby/index_en.html#download -[3]: https://www.ruby-lang.org/~eban/ruby/binaries/ diff --git a/fa/news/_posts/2002-12-05-matzs-slides-at-4-conferences.md b/fa/news/_posts/2002-12-05-matzs-slides-at-4-conferences.md deleted file mode 100644 index 80d28a3a0d..0000000000 --- a/fa/news/_posts/2002-12-05-matzs-slides-at-4-conferences.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: news_post -title: "Matz's Slides at 4 conferences" -author: "NaHi" -lang: en ---- - -Matz’s Slides at Ruby Conference 2002, OOPSLA2002, LL2 and -O+F Kansai (Japanese) are available. - -[Ruby Conference 2002][1] -: Slides: [http://www.rubyist.net/~matz/slides/rc2002/](http://www.rubyist.net/~matz/slides/rc2002/) - -[OOPSLA 2002][2] -: Slides: [http://www.rubyist.net/~matz/slides/oopsla2002/](http://www.rubyist.net/~matz/slides/oopsla2002/) - -[LL2][3] -: Slides: [http://www.rubyist.net/~matz/slides/ll2/](http://www.rubyist.net/~matz/slides/ll2/) - -[KANSAI OPENSOURCE+FREEWARE 2002][4] -: Slides: [http://www.rubyist.net/~matz/slides/of-kansai2002/](http://www.rubyist.net/~matz/slides/of-kansai2002/) - -Last item is in Japanese. -Compare it with LL2 slides in English to learn Japanese. :) - - -[1]: http://www.rubyconf.org/index.php -[2]: http://oopsla.acm.org/ -[3]: http://ll2.ai.mit.edu/ -[4]: http://of.good-day.net/ diff --git a/fa/news/_posts/2002-12-07-raa-2-1-0.md b/fa/news/_posts/2002-12-07-raa-2-1-0.md deleted file mode 100644 index 351fa341e7..0000000000 --- a/fa/news/_posts/2002-12-07-raa-2-1-0.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: news_post -title: "RAA.succ!.version #=> 2.1.0" -author: "NaHi" -lang: en ---- - -RAA is upgraded. - -Changes: - -* URL was changed. RAA is at [http://raa.ruby-lang.org/][1] now. Former - URL https://www.ruby-lang.org/en/raa.html is redirected to the new URL. -* Add new page “All” that lists all RAA entries by alphabetical order. -* Show number of projects in each major\_category or minor category in - listing view. We have 753 projects now. Is your stomach full? -* Add AND/OR search option. RAA search is substring search, not a word - search. -* Project’s “name” field is restricted to match - /\\A\[a-z0-9\_-\]\{2,15}\\z/ . - * RAA users can refer a project with a simple name like “druby”. They - don’t have to remember the ID number or a long name like “druby – - distributed ruby”. - * Application owner must specify canonical name(s) of his/her - project(s). - - This field is a freezed (static, const) field. For each existing - entries, I prepared a canonical name created from former name, Project - UNIX Name in sourceforge or filename of its download item. See - [\[ruby-talk:58018\]][2] for your entry. Since I created canonical - names automatically with a script<sup>[1](#fn1)</sup>, some owners - would think that it isn’t a suitable name for their project. So UNTIL - THE END OF THIS <abbr title="2002">YEAR</abbr> owner can change - this “name” field of his/her entry. -* Add new field “short description”. Owners can describe short(63 bytes - or shorter) description here. At now, this field is filled with former - “name” field. Feel free to change this field anytime. -* To add an application entry, you must type pass phrase twice. Don’t - forget your pass phrase. - -\[1\] canonical name generation tool; -https://www.ruby-lang.org/cgi-bin/cvsweb.cgi/app/raa/tool/name\_conv.rb -{: #fn1} - -RAA development team:<br> -NAKAMURA, Hiroshi aka NaHi and U.Nakamura aka usa. - - -[1]: http://raa.ruby-lang.org/ -[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/58018 diff --git a/fa/news/_posts/2002-12-09-raa-xml-interfaces-are-updated.md b/fa/news/_posts/2002-12-09-raa-xml-interfaces-are-updated.md deleted file mode 100644 index bfabcb8197..0000000000 --- a/fa/news/_posts/2002-12-09-raa-xml-interfaces-are-updated.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: news_post -title: "RAA XML Interfaces are updated" -author: "NaHi" -lang: en ---- - -Following RAA/2.1, RAA XML Interfaces are updated. - -* SOAP & XML-RPC interface You can get “short\_description” from - Project object. -* plain XML URLs are changed. - * [http://raa.ruby-lang.org/raa-xml.xml][1] - * [http://raa.ruby-lang.org/raa-xml10.xml][2] - - Latter only includes 10 recently updated items. -* RSS/0.91 URLs are changed. - * [http://raa.ruby-lang.org/raa-rdf.xml][3] - * [http://raa.ruby-lang.org/raa-rdf10.xml][4] - - Is there anyone who can help us to serve RSS/1.0 file? -* YAML (not a XML!) - * [http://raa.ruby-lang.org/raa-yaml.yml][5] - * [http://raa.ruby-lang.org/raa-yaml10.yml][6] - - - -[1]: http://raa.ruby-lang.org/raa-xml.xml -[2]: http://raa.ruby-lang.org/raa-xml10.xml -[3]: http://raa.ruby-lang.org/raa-rdf.xml -[4]: http://raa.ruby-lang.org/raa-rdf10.xml -[5]: http://raa.ruby-lang.org/raa-yaml.yml -[6]: http://raa.ruby-lang.org/raa-yaml10.yml diff --git a/fa/news/_posts/2002-12-11-ruby-hacking-guide.md b/fa/news/_posts/2002-12-11-ruby-hacking-guide.md deleted file mode 100644 index d238a714a2..0000000000 --- a/fa/news/_posts/2002-12-11-ruby-hacking-guide.md +++ /dev/null @@ -1,539 +0,0 @@ ---- -layout: news_post -title: "\"Ruby Hacking Guide\" is out though ..." -author: "NaHi" -lang: en ---- - -[{: -.icon width="70" height="88"}][cover] A book named “Ruby source code Kanzen -Kaisetsu – Ruby Hacking Guide” by Aoki-san is out though it’s written in -Japanese… - -It’s a must-buy item for Ruby hacker, who can read Japanese. :( - -* Publisher: Impress -* Author: AOKI, Minero under the editorship of MATSUMOTO, Yukihiro -* ISBN: 4-8443-1721-0 - -[cover]: http://direct.ips.co.jp/book/Template/Goods/go_BookstempGR.cfm?GM_ID=1721&SPM_ID=1&CM_ID=004000G20&PM_No=&PM_Class=&HN_NO=00420 - -I tried to translate the table of contents. -Bear in mind that it’s an unofficial translation. - - Preface - i Target reader - ii Construction of this book - iii Environment - ix Web site - x Thanks - 0 Preface - 0.1 The characteristics of Ruby - 0.2 How to hack source code - 0.2.1 Principle - 0.2.2 Analytic technique - 0.2.3 Dynamic analysis - 0.2.4 Static analysis - 0.2.5 History knows everything - 0.2.6 Tool for static analysis - 0.3 Build - 0.3.1 Version - 0.3.2 Getting the source code - 0.3.3 Compile - 0.4 Build details - 0.4.1 configure - 0.4.2 autoconf - 0.4.3 make - 0.5 CVS - 0.5.1 Teach yourself CVS in 50 lines - 0.6 The construction of ruby source code - 0.6.1 Physical structure - 0.6.2 Dividing the source code - 0.6.3 Logical structure - Chapter I: Object - 1. Ruby language minimum - 1.1 Object - 1.1.1 String - 1.1.2 Various literals - 1.1.3 Method call - 1.2 Program - 1.2.1 Top-level - 1.2.2 Local variable - 1.2.3 Constant variable - 1.2.4 Control structure - 1.3 Class and method - 1.3.1 Class - 1.3.2 Class definition - 1.3.3 Method definition - 1.3.4 self - 1.3.5 Instance variable - 1.3.6 Initialize - 1.3.7 Inheritance - 1.3.8 Variable inheritance ... ? - 1.3.9 Module - 1.4 Program II - 1.4.1 Nested constant - 1.4.2 Everything is evaluated - 1.4.3 Scope of local variable - 1.4.4 self as a context - 1.4.5 Loading - 1.5 About the class, more - 1.5.1 About constant continues - 1.5.2 Meta-class - 1.5.3 Meta-object - 1.5.4 Singleton method - 1.5.5 Class variable - 1.6 Global variable - 2. Object - 2.1 The structure of the Ruby object - 2.1.1 Guidelines - 2.1.2 VALUE and object structure - 2.1.3 Embedded objects in VALUE - 2.2 Method - 2.2.1 struct RClass - 2.2.2 Method search - 2.3 Instance variable - 2.3.1 rb_ivar_set() - 2.3.2 generic_ivar_set() - 2.3.3 Gap in the structure - 2.3.4 rb_ivar_get() - 2.4 Object structure - 2.4.1 struct RString - 2.4.2 struct RArray - 2.4.3 struct RRegexp - 2.4.4 struct RHash - 2.4.5 struct RFile - 2.4.6 struct RData - 3. Name and name table - 3.1 st_table - 3.1.1 Outline - 3.1.2 Data structure - 3.1.3 Example of st_hash_type - 3.1.4 st_lookup() - 3.1.5 st_add_direct() - 3.1.6 st_insert() - 3.2 ID and symbol - 3.2.1 From char* to ID - 3.2.2 From ID to char* - 3.2.3 Conversion between VALUE and ID - 4. Class and module - 4.1 Definition of class and method - 4.1.1 Definition of class - 4.1.2 Definition of nested class - 4.1.3 Definition of module - 4.1.4 Definition of method - 4.1.5 Definition of singleton method - 4.1.6 Entry point - 4.2 Singleton class - 4.2.1 rb_define_singleton_method() - 4.2.2 rb_singleton_class() - 4.2.3 Usual class and singleton class - 4.2.4 Compression of rb_singleton_class() - 4.2.5 Compression of rb_make_metaclass() - 4.2.6 What is the singleton class - 4.2.7 Singleton class and instance - 4.2.8 Summary - 4.3 Meta-class - 4.3.1 Inheritance of singleton method - 4.3.2 Singleton class of a class - 4.3.3 The class of the class of the class - 4.3.4 Singleton class and meta-class - 4.3.5 Bootstrap - 4.4 Class name - 4.4.1 Name to class - 4.4.2 Class to name - 4.4.3 Nest level 2 or more - 4.4.4 Anonymous class - 4.5 Include - 4.5.1 rb_include_module (1) - 4.5.2 include_class_new() - 4.5.3 Simulation - 4.5.4 rb_include_module (2) - 5. Garbage Collection - 5.1 Memory image at runtime - 5.1.1 Segment - 5.1.2 alloca() - 5.2 Outline - 5.2.1 What's GC - 5.2.2 What's done in GC - 5.2.3 Mark & sweep - 5.2.4 Stop & copy - 5.2.5 Reference count - 5.3 Object management - 5.3.1 struct RVALUE - 5.3.2 Object heap - 5.3.3 freelist - 5.3.4 add_heap() - 5.3.5 rb_newobj() - 5.4 Mark - 5.4.1 rb_gc_mark() - 5.4.2 rb_gc_mark_children() - 5.4.3 rb_gc() - 5.4.4 Ruby stack - 5.4.5 Register - 5.4.6 Machine stack - 5.4.7 Other root objects - 5.5 Sweep - 5.5.1 Special treatment for NODE - 5.5.2 Finalizer - 5.5.3 rb_gc_force_recycle() - 5.6 Consideration - 5.6.1 Freeing the memory space - 5.6.2 Generational GC - 5.6.3 Compaction - 5.6.4 volatile, countermeasure for GC - 5.7 The timing of the start - 5.7.1 gc.c inside - 5.7.2 In the interpreter - 5.8 Object allocation - 5.8.1 Allocation framework - 5.8.2 Allocation of user defined object - 5.8.3 The problem of the allocation framework - 6. Variable and constant - 6.1 Outline of this section - 6.1.1 Variable of Ruby - 6.1.2 Ruby API for the variable - 6.1.3 The point of this section - 6.2 Class variable - 6.2.1 Reference - 6.3 Constant - 6.3.1 Assignment - 6.3.2 Reference - 6.4 Global variable - 6.4.1 General remarks - 6.4.2 Data structure - 6.4.3 Reference - 7. Security - 7.1 Principle - 7.2 Implementation - Chapter II: Syntactic analysis - 8. Ruby language detailed - 8.1 Literal - 8.1.1 String - 8.1.2 Character - 8.1.3 Regular expression - 8.1.4 Array - 8.1.5 Hash - 8.1.6 Range - 8.1.7 Symbol - 8.1.8 Numerical value - 8.2 Method - 8.2.1 Definition and call - 8.2.2 Value of the method - 8.2.3 Omissible argument - 8.2.4 Omission of parenthesis for argument - 8.2.5 Argument and array - 8.2.6 Various call forms - 8.2.7 super - 8.3 Iterator - 8.3.1 Comparison with the higher order function - 8.3.2 Block local variable - 8.3.3 Iterator syntax - 8.3.4 yield - 8.3.5 Proc - 8.4 Expression - 8.4.1 if - 8.4.2 unless - 8.4.3 and && or || - 8.4.4 Condition arithmetic operator - 8.4.5 while until - 8.4.6 case - 8.4.7 Exception - 8.4.8 Variable and constant - 8.4.9 Assignment - 8.4.10 Self-assignment - 8.4.11 defined? - 8.5 Sentence - 8.5.1 Terminal of the sentence - 8.5.2 if/unless modifier - 8.5.3 while/until modifier - 8.5.4 Class definition - 8.5.5 Method definition - 8.5.6 Singleton method definition - 8.5.7 Singleton class definition - 8.5.8 Multiple assignment - 8.5.9 alias - 8.5.10 undef - 8.6 Others - 8.6.1 Comment - 8.6.2 Embedded document - 8.6.3 Multibyte character - 9. yacc in a day - 9.1 Outline - 9.1.1 Parser and scanner - 9.1.2 Symbol sequence - 9.1.3 Parser generator - 9.2 Grammar - 9.2.1 Grammar file - 9.2.2 What yacc does - 9.2.3 BNF - 9.2.4 Terminal and non-terminal symbol - 9.2.5 Test method - 9.2.6 Empty rule - 9.2.7 Recursive definition - 9.3 Building of the value - 9.3.1 Shift and reduce - 9.3.2 Action - 9.3.3 The value of symbol - 9.3.4 yacc and type - 9.3.5 Connecting the parser and the scanner - 9.3.6 Embedded action - 9.4 Realistic topic - 9.4.1 Collision - 9.4.2 Lookahead - 9.4.3 Operator priority order - 10. Parser - 10.1 Guidelines - 10.1.1 Building of a parser - 10.1.2 Dividing parse.y - 10.2 Grammar rule general remarks - 10.2.1 Coding rule - 10.2.2 Important symbol - 10.2.3 Whole structure - 10.2.4 program - 10.2.5 stmt - 10.2.6 expr - 10.2.7 arg - 10.2.8 primary - 10.2.9 Collision of list - 10.3 Scanner - 10.3.1 Parser rough sketch - 10.3.2 Input buffer - 10.3.3 Token buffer - 10.3.4 yylex() - 10.3.5 String kind - 11. State scanner - 11.1 Outline - 11.1.1 Concrete example - 11.1.2 lex_state - 11.1.3 Reading state scanner - 11.1.4 About the each state - 11.2 Controlling line feed - 11.2.1 Problem - 11.2.2 Implementation - 11.3 Method name which is in reserved word - 11.3.1 Problem - 11.3.2 Method definition - 11.3.3 Method call - 11.3.4 Symbol - 11.4 Modifier - 11.4.1 Problem - 11.4.2 Implementation - 11.5 The collision of do - 11.5.1 Problem - 11.5.2 The solution at the rule level - 11.5.3 The solution at the symbol level - 11.5.4 COND_P() - 11.6 tLPAREN_ARG (1) - 11.6.1 Problem - 11.6.2 Investigation - 11.6.3 In case of 1 argument - 11.6.4 Case 2 or more arguments - 11.7 tLPAREN_ARG (2) - 11.7.1 Problem - 11.7.2 The solution at the rule level - 11.7.3 {} iterator - 11.7.4 do end iterator - 11.7.5 The fact and truth - 12. Building of syntax tree - 12.1 Node - 12.1.1 NODE - 12.1.2 Node type - 12.1.3 File name and line number - 12.1.4 rb_node_newnode() - 12.2 Building of syntax tree - 12.2.1 YYSTYPE - 12.2.2 Scenery with a syntax tree - 12.2.3 Leaf - 12.2.4 Branch - 12.2.5 Trunk - 12.2.6 Two lists - 12.3 Semantic analysis - 12.3.1 Error in action - 12.3.2 value_expr() - 12.3.3 The global image of the value check - 12.4 Local variable - 12.4.1 Definition of the local variable - 12.4.2 Block local variable - 12.4.3 Data structure - 12.4.4 Scope of local variable - 12.4.5 push and pop - 12.4.6 Adding a variable - 12.4.7 Summary of local variable - 12.4.8 Block local variable - 12.4.9 ruby_dyna_vars in the parser - Chapter III: Evaluation - 13. The structure of the evaluator - 13.1 Outline of Chapter III - 13.1.1 What's evaluator - 13.1.2 The characteristics of the ruby evaluator - 13.1.3 eval.c - 13.2 Going from main through ruby_run to rb_eval - 13.2.1 Call graph - 13.2.2 main() - 13.2.3 ruby_init() - 13.2.4 ruby_options() - 13.2.5 ruby_run() - 13.3 rb_eval() - 13.3.1 Outline - 13.3.2 NODE_IF - 13.3.3 NODE_NEWLINE - 13.3.4 Pseudo local variable - 13.3.5 Jump tag - 13.3.6 NODE_WHILE - 13.3.7 Evaluating value of while - 13.4 Exception - 13.4.1 raise - 13.4.2 Global image - 13.4.3 ensure - 13.4.4 rescue - 14. Context - 14.1 Ruby stack - 14.1.1 Context and stack - 14.1.2 ruby_frame - 14.1.3 ruby_scope - 14.1.4 ruby_block - 14.1.5 ruby_iter - 14.1.6 ruby_dyna_vars - 14.1.7 ruby_class - 14.1.8 ruby_cref - 14.1.9 PUSH/POP macros - 14.1.10 Other condition - 14.2 Module definition - 14.2.1 Investigation - 14.2.2 NODE_MODULE - 14.2.3 module_setup() - 14.2.4 Building local variable scope - 14.2.5 Allocating local variable memory space - 14.2.6 TMP_ALLOC() - 14.2.7 Changing target of method definition - 14.2.8 Nested class - 14.2.9 Replacing frames - 14.3 Method definition - 14.3.1 Investigation - 14.3.2 NODE_DEFN - 14.3.3 copy_node_scope() - 14.3.4 rb_add_method() - 14.4 Assignment and reference - 14.4.1 Local variable - 14.4.2 Constant - 14.4.3 Class variable - 14.4.4 Multiple assignment - 15. Method - 15.1 Searching method - 15.1.1 Terminology - 15.1.2 Investigation - 15.1.3 SETUP_ARGS() - 15.1.4 rb_call() - 15.1.5 Method cash - 15.2 Invocation - 15.2.1 rb_call0() - 15.2.2 PUSH_FRAME() - 15.2.3 rb_call0() -- NODE_CFUNC - 15.2.4 rb_call0() -- NODE_SCOPE - 15.2.5 Setting argument - 15.2.6 super - 16. Block - 16.1 Iterator - 16.1.1 Global image - 16.1.2 Push block - 16.1.3 Calling iterator method - 16.1.4 Block invocation - 16.1.5 Target designated jump - 16.1.6 Check of block - 16.2 Proc - 16.2.1 Allocating Proc object - 16.2.2 Copying frames - 16.2.3 Proc invocation - 16.2.4 Block and Proc - 17. Dynamic evaluation - 17.1 Outline - 17.1.1 eval - 17.1.2 module_eval and instance_eval - 17.2 eval - 17.2.1 eval() - 17.2.2 top_local - 17.2.3 Block local variable - 17.3 instance_eval - 17.3.1 Global image - 17.3.2 After inlining - 17.3.3 Before inlining - Chapter IV: Fringes of the evaluator - 18. Loading - 18.1 Outline - 18.1.1 Interface - 18.1.2 Flow of the whole management - 18.1.3 Target of this section - 18.2 Library search - 18.2.1 rb_f_require() - 18.2.2 rb_find_file() - 18.2.3 Load wait - 18.3 Loading Ruby program - 18.3.1 rb_load() - 18.3.2 rb_load_file() - 18.4 Loading extension library - 18.4.1 rb_f_require() -- load_dyna - 18.4.2 Review of linking - 18.4.3 Really dynamic linking - 18.4.4 Dynamic loading API - 18.4.5 dln_load() - 18.4.6 dln_load() -- dlopen() - 18.4.7 dln_load()-- Win32 - 19. Thread - 19.1 Outline - 19.1.1 Ruby interface - 19.1.2 ruby thread - 19.1.3 Is it preemptive? - 19.1.4 Control system - 19.1.5 What is thread switch? - 19.1.6 Method of context switch - 19.1.7 Plan of explanation - 19.2 Trigger - 19.2.1 I/O wait - 19.2.2 Waiting other threads - 19.2.3 Time wait - 19.2.4 Switching due to the time expire - 19.3 Scheduling - 19.3.1 rb_thread_schedule() - 19.3.2 select - 19.3.3 Preparation for select - 19.3.4 Calling select - 19.3.5 Deciding the next thread - 19.3.6 Switching thread - 19.4 Context switch - 19.4.1 Basic line - 19.4.2 rb_thread_save_context() - 19.4.3 rb_thread_restore_context() - 19.4.4 Problem - Final chapter: The future of Ruby - 20.1 Problems to be solved - 20.1.1 Performance of GC - 20.1.2 Parser implementation - 20.1.3 Reusable parser - 20.1.4 Code hiding - 20.1.5 Interpreter object - 20.1.6 Structure of evaluator - 20.1.7 Speed of the evaluator - 20.1.8 Thread implementation - 20.2 ruby2 - 20.2.1 Rite - 20.2.2 Description language - 20.2.3 GC - 20.2.4 Parser - 20.2.5 Evaluator - 20.2.6 Thread - 20.2.7 M17N - 20.2.8 IO - 20.3 Ruby Hacking Guide - 20.3.1 Generational GC - 20.3.2 Oniguruma - 20.3.3 ripper - 20.3.4 Substitutive parser - 20.3.5 JRuby - 20.3.6 NETRuby - 20.3.7 How to participate the development of Ruby - 20.3.8 At the end - Appendix A: Function and macros reference - Appendix B: References - Index - diff --git a/fa/news/_posts/2002-12-16-toward-ruby-langorg-renewal-trial-website-offered.md b/fa/news/_posts/2002-12-16-toward-ruby-langorg-renewal-trial-website-offered.md deleted file mode 100644 index 7e0926390d..0000000000 --- a/fa/news/_posts/2002-12-16-toward-ruby-langorg-renewal-trial-website-offered.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: news_post -title: "Toward ruby-lang.org renewal; trial website offered" -author: "Unknown Author" -lang: en ---- - -We webmasters’ team of ruby-lang.org have reformed our official site -design, so that we can provide natural contents navigation and -just-in-time information about Ruby. - -Now we can offer a trial for a future official site. Here we are: - -> [http://dev.ruby-lang.org/en/][1] - -And here is Japanese site: - -> [http://dev.ruby-lang.org/ja/][2] - -Have a go and look at it. - -Our scheme is a double release with ruby 1.6.8; the switchover of the -site will be in the end of this year, if no critical problems are found. -If you find them, feel free to tell us via this list, or mail directly -to the address below. - -Cheers, - -—ruby-lang.org webmaster team<br> -[webmaster@ruby-lang.org](mailto:webmaster@ruby-lang.org) -{: style="text-align: right"} - - - -[1]: http://dev.ruby-lang.org/en/ -[2]: http://dev.ruby-lang.org/ja/ diff --git a/fa/news/_posts/2002-12-18-color-scheme-of-wwwruby-langorg.md b/fa/news/_posts/2002-12-18-color-scheme-of-wwwruby-langorg.md deleted file mode 100644 index 63ec3ede7a..0000000000 --- a/fa/news/_posts/2002-12-18-color-scheme-of-wwwruby-langorg.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "Color scheme of www.ruby-lang.org" -author: "NaHi" -lang: en ---- - -We webmasters decided to change the red only color scheme of this site -following a recommendation in [\[ruby-talk:59202\]][1]. - -You may see somewhat strange color scheme while our CSS development. -Thank you for your kind corporation. - -And we also thank people who are discussing about color scheme on -ruby-talk. - - - -[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/59202 diff --git a/fa/news/_posts/2002-12-24-ruby-1-6-8-and-1-8-0-preview-1.md b/fa/news/_posts/2002-12-24-ruby-1-6-8-and-1-8-0-preview-1.md deleted file mode 100644 index c72e99a6d4..0000000000 --- a/fa/news/_posts/2002-12-24-ruby-1-6-8-and-1-8-0-preview-1.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.6.8 and 1.8.0 preview 1" -author: "Matz" -lang: en ---- - -I just put the 1.6.8 release package on the ftp. 1.6.8 should be the -last release in the 1.6.x series. Check out - -* [https://cache.ruby-lang.org/pub/ruby/ruby-1.6.8.tar.gz][1] - -I also put the first preview of 1.8.0 at - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.0-preview1.tar.gz][2] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.0-preview1-errata.diff][3] - -Merry Christmas! - - - -[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.6.8.tar.gz -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.0-preview1.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.0-preview1-errata.diff diff --git a/fa/news/_posts/2003-01-07-ruby-in-2002-contents-wanted.md b/fa/news/_posts/2003-01-07-ruby-in-2002-contents-wanted.md deleted file mode 100644 index 99fb9dce4e..0000000000 --- a/fa/news/_posts/2003-01-07-ruby-in-2002-contents-wanted.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: news_post -title: "Ruby In 2002: Contents Wanted" -author: "tamura" -lang: en ---- - -Here on the Ruby Garden Wiki comes [a page][1] to compile Ruby’s year -2002 and plans on 2003. The deadline is January 9. RubyIn2002 -[http://www.rubygarden.org/ruby?RubyIn2002][1] This page supports a -following plan: “The Year in Scripting -Languages(Lua/Perl/Python/Ruby/Tcl)”. The aim of that is to encourage -these scripting language communities to collaborate with each other; its -first step is to know neighbors, which will lead us to be able to share -our efforts on scriptings. The chair person is Mitchell N. Charity. see -also: [\[ruby-talk:60604\]][2], [\[ruby-talk:60731\]][3] Final result -can be seen at [http://www.vendian.org/language\_year/][4]. - - - -[1]: http://www.rubygarden.org/ruby?RubyIn2002 -[2]: http://www.ruby-talk.com/60604 -[3]: http://www.ruby-talk.com/60731 -[4]: http://www.vendian.org/language_year/ diff --git a/fa/news/_posts/2003-01-31-raa-2-3-0.md b/fa/news/_posts/2003-01-31-raa-2-3-0.md deleted file mode 100644 index ec1eae2c80..0000000000 --- a/fa/news/_posts/2003-01-31-raa-2-3-0.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: news_post -title: "RAA.succ!.version #=> 2.3.0" -author: "usa" -lang: en ---- - -RAA [Ruby Application Archive][1] has been updated. (see [\[ruby-talk:63170\]][2]) Changes: - -* Change URL: www.ruby-lang.org/raa -> raa.ruby-lang.org. - Access to old URLs should be redirected. -* Add the page to show projects sort by chronologically. -* Introduce “What’s updated” table at the top page. -* Add shortcut search box at top right of each page. -* Combine some sub-categories. [\[ruby-talk:62840\]][3] - - - -[1]: http://raa.ruby-lang.org/ -[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/63170 -[3]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/62840 diff --git a/fa/news/_posts/2003-02-21-first-europeen-ruby-conference.md b/fa/news/_posts/2003-02-21-first-europeen-ruby-conference.md deleted file mode 100644 index a7ac7db24b..0000000000 --- a/fa/news/_posts/2003-02-21-first-europeen-ruby-conference.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: news_post -title: "First Europeen Ruby Conference" -author: "NaHi" -lang: en ---- - -(MNeumann announced the first European Ruby Conference at -[\[ruby-talk:65418\]][1]. Following is excerpted from the post.) - -> The first European Ruby Conference will be held from Saturday 21th to -> Sunday 22th June at the University of Karslruhe in Germany. -> -> Everyone instested in Ruby is welcome! - -(For more detail about the entrance fee, calling for speakers, -mailing-lists, and so on, see [\[ruby-talk:65418\]][1]) - - - -[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/65418 diff --git a/fa/news/_posts/2003-02-24-happy-birthday-ruby.md b/fa/news/_posts/2003-02-24-happy-birthday-ruby.md deleted file mode 100644 index f87b500a47..0000000000 --- a/fa/news/_posts/2003-02-24-happy-birthday-ruby.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "Happy Birthday, Ruby" -author: "NaHi" -lang: en ---- - -(dblack posted an article ‘Happy Birthday, Ruby, and an announcement….’ -\[ruby-talk:65632\]. Following is excerpted from the article.) - -> Today, February 24, 2003, is Ruby’s 10th birthday. Happy Birthday, -> Ruby! And congratz to Matz! - -dblack also annouces the new non-profit organization [Ruby Central, -Inc][1] and RubyConf 2003!. See [\[ruby-talk:65632\]][2]. - - - -[1]: http://rubycentral.org -[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/65632 diff --git a/fa/news/_posts/2003-08-04-ruby-180-released.md b/fa/news/_posts/2003-08-04-ruby-180-released.md deleted file mode 100644 index 2dac5e8ae7..0000000000 --- a/fa/news/_posts/2003-08-04-ruby-180-released.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: news_post -title: "ruby-1.8.0 released!" -author: "sughimsi" -lang: en ---- - -Long time no minor version-up… - -Here is an initial official release of a stable version **ruby 1.8**. - -The _download site_ will lead you to the source code -ruby-1.8.0.tar.gz. Its MD5SUM is: - -<!-- -The [download site][1] will lead you to the source code -ruby-1.8.0.tar.gz. Its MD5SUM is: ---> - -582a65e52598a4a1e9fce523e16e67d6 - -Binaries are going to be there. - -Some features are changed from previous stable version ruby 1.6.x; See -[https://cache.ruby-lang.org/pub/ruby/1.8/changes.1.8.0][2]. - -Thank you matz, and all committers, for all your trouble! - - - -[1]: {{ site.url }}/download-1.8.0.rbx -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/changes.1.8.0 diff --git a/fa/news/_posts/2003-10-01-ruby-conference-2003.md b/fa/news/_posts/2003-10-01-ruby-conference-2003.md deleted file mode 100644 index c0d79a4bc7..0000000000 --- a/fa/news/_posts/2003-10-01-ruby-conference-2003.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: news_post -title: "Ruby Conference 2003" -author: "sughimsi" -lang: en ---- - -[Ruby Conference 2003][1] will soon be held in November 14-16, 2003, on -Austin, Texas U.S.A. - -[The registration is open][2]. Sign in! Full registration will be open -until Sunday, October 26. - -See also [\[ruby-talk:83169\]][3], and [\[ruby-talk:84427\]][4]. - - - -[1]: http://rubycentral.org/03/ -[2]: http://rubycentral.org/03/index.rb?dest=start_reg -[3]: http://www.ruby-talk.org/83169 -[4]: http://www.ruby-talk.org/84427 diff --git a/fa/news/_posts/2003-10-30-ruby-181-preview2.md b/fa/news/_posts/2003-10-30-ruby-181-preview2.md deleted file mode 100644 index 35c10f3db1..0000000000 --- a/fa/news/_posts/2003-10-30-ruby-181-preview2.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "ruby 1.8.1 preview2" -author: "Unknown Author" -lang: en ---- - -Today, Matz announced the availability of ruby 1.8.1 preview1 and, -subsequently, [ruby 1.8.1 preview2][1] \|\| [rubyforge mirror][2] As -always, we encourage Rubyists to download this preview release and put -it through its paces. Your testing, bug reports, and patches will lead -to a stable ruby 1.8.1. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.1-preview2.tar.gz -[2]: http://rubyforge.org/project/showfiles.php?group_id=30&release_id=152 diff --git a/fa/news/_posts/2003-11-23-ruby-standard-library-documentation.md b/fa/news/_posts/2003-11-23-ruby-standard-library-documentation.md deleted file mode 100644 index c53c1b5f28..0000000000 --- a/fa/news/_posts/2003-11-23-ruby-standard-library-documentation.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: news_post -title: "Ruby Standard Library Documentation" -author: "Unknown Author" -lang: en ---- - -” Documentation for the Ruby 1.8 standard library”: -http://www.ruby-doc.org/stdlib/ is available. This is the HTML from the -RDoc comments resulting from Gavin Sinclair’s stdlib-doc project. - diff --git a/fa/news/_posts/2003-12-05-ruby-181-preview3.md b/fa/news/_posts/2003-12-05-ruby-181-preview3.md deleted file mode 100644 index 1c217dbba8..0000000000 --- a/fa/news/_posts/2003-12-05-ruby-181-preview3.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: news_post -title: "ruby 1.8.1 preview3" -author: "NaHi" -lang: en ---- - -Ruby 1.8.1 preview3 is out. Go get [ruby 1.8.1 preview3][1] \|\| -[rubyforge mirror][2]. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.1-preview3.tar.gz -[2]: http://rubyforge.org/project/showfiles.php?group_id=30 diff --git a/fa/news/_posts/2003-12-19-new-ruby-change-request-rcr-process.md b/fa/news/_posts/2003-12-19-new-ruby-change-request-rcr-process.md deleted file mode 100644 index 4dd88b1bf5..0000000000 --- a/fa/news/_posts/2003-12-19-new-ruby-change-request-rcr-process.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: news_post -title: "New Ruby Change Request (RCR) process" -author: "Unknown Author" -lang: en ---- - -In [\[ruby-talk:88503\]][1], David Alan Black announced the launch of -the new official process for RCRs. The new process is the result of -matz’s desire to further formalize the process, as expressed in his -[RubyConf 2003][2] [presentation][3]. - -The new site for Ruby Change Requests is [rcrchive.net][4]. - -Many thanks to [Dave Thomas][5], who facilitated the creation of the RCR -process 3 years ago. - - - -[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/88503 -[2]: http://www.rubyconf.org -[3]: http://www.rubyist.net/%7Ematz/slides/rc2003 -[4]: http://rcrchive.net -[5]: http://pragprog.com/pragdave diff --git a/fa/news/_posts/2003-12-20-oreilly-onlamp-ruby-article.md b/fa/news/_posts/2003-12-20-oreilly-onlamp-ruby-article.md deleted file mode 100644 index bae9c3f092..0000000000 --- a/fa/news/_posts/2003-12-20-oreilly-onlamp-ruby-article.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "O'Reilly ONLamp Ruby article" -author: "Unknown Author" -lang: en ---- - -Mike Stok has written an excellent [ recap][1] of the 3rd International -Ruby Conference, featured on the front page of O’Reilly’s [ ONLamp][2] -site, entitled “Ruby’s Present and Future”. - -For additional post-conference information, see Jim Weirich’s [ site][3] -or Ryan Davis’s [ Archive][4] of the RubyConf presentations. - - - -[1]: http://www.onlamp.com/pub/a/onlamp/2003/12/18/ruby_con.html -[2]: http://www.onlamp.com -[3]: http://onestepback.org/index.cgi/Tech/Conferences/RubyConf2003 -[4]: http://www.zenspider.com/Languages/Ruby/RubyConf2003.html diff --git a/fa/news/_posts/2003-12-25-ruby-181-is-out.md b/fa/news/_posts/2003-12-25-ruby-181-is-out.md deleted file mode 100644 index 6b19f5a6ee..0000000000 --- a/fa/news/_posts/2003-12-25-ruby-181-is-out.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: news_post -title: "ruby 1.8.1 is out" -author: "sughimsi" -lang: en ---- - -Latest stable release _ruby 1.8.1_ is finally announced: This is -mainly a bug fix release. - -<!-- -Latest stable release [ruby 1.8.1][1] is finally announced: This is -mainly a bug fix release. ---> - -Mirroring volunteers are welcome. The Md5 check sum is - -5d52c7d0e6a6eb6e3bc68d77e794898e ruby-1.8.1.tar.gz - -Thank you matz and all committers. Happy Hacking Holidays. - - - -[1]: {{ site.url }}/cgi-bin/download-1.8.1.mrb diff --git a/fa/news/_posts/2004-01-07-matz-on-craftsmanship.md b/fa/news/_posts/2004-01-07-matz-on-craftsmanship.md deleted file mode 100644 index 82263e3a22..0000000000 --- a/fa/news/_posts/2004-01-07-matz-on-craftsmanship.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "Matz on Craftsmanship" -author: "Unknown Author" -lang: en ---- - -Artima.com is running another [segment][1], (part four) of Bill Venners’ -interview with Matz. Matz talks about becoming a better programmer -through reading code, learning languages, focusing on fundamentals, -being lazy, and considering interfaces. - - - -[1]: http://www.artima.com/intv/craft.html diff --git a/fa/news/_posts/2004-01-17-rss-feed-started.md b/fa/news/_posts/2004-01-17-rss-feed-started.md deleted file mode 100644 index 7845783205..0000000000 --- a/fa/news/_posts/2004-01-17-rss-feed-started.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: news_post -title: "RSS feed started" -author: "sho" -lang: en ---- - -We just started RSS feed in this site. Check it. -https://www.ruby-lang.org/en/index.rdf - diff --git a/fa/news/_posts/2004-01-29-how-to-write-an-rcr.md b/fa/news/_posts/2004-01-29-how-to-write-an-rcr.md deleted file mode 100644 index 48a886d320..0000000000 --- a/fa/news/_posts/2004-01-29-how-to-write-an-rcr.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "How to write an RCR" -author: "Unknown Author" -lang: en ---- - -For those interested in submitting a [Ruby Change Request][1], Jim -Weirich has written an article on [How to write an RCR][2]. Future RCR -authors should consider it required reading. - - - -[1]: http://rcrchive.net -[2]: http://onestepback.org/index.cgi/Tech/Ruby/WritingRcrs.rdoc diff --git a/fa/news/_posts/2004-02-15-ruby-talk-mailing-posting-policy-change.md b/fa/news/_posts/2004-02-15-ruby-talk-mailing-posting-policy-change.md deleted file mode 100644 index fb593a5a72..0000000000 --- a/fa/news/_posts/2004-02-15-ruby-talk-mailing-posting-policy-change.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: news_post -title: "Ruby-talk Mailing Posting Policy Change" -author: "Unknown Author" -lang: en ---- - -The ruby-talk mailing has changed its posting policy. The list now -requires one to be a member before posting a message. This is a change -from the previous “anyone may post” policy. If you’ve sent some recent -list messages, but have not seen them on the list, check if you’re using -an appropriate “from” address, and look for any automated list admin -messages coming back. - diff --git a/fa/news/_posts/2004-02-16-ruby-article-in-linux-journal.md b/fa/news/_posts/2004-02-16-ruby-article-in-linux-journal.md deleted file mode 100644 index 8fb2008c8f..0000000000 --- a/fa/news/_posts/2004-02-16-ruby-article-in-linux-journal.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: news_post -title: "Ruby Article in Linux Journal" -author: "Unknown Author" -lang: en ---- - -The March issue of [Linux Journal][1] has an article by James Britt on -manipulating OpenOffice.org documents using Ruby. Please note that the -article has at least one error: James, who, honestly, really does know -better, incorrectly attributed REXML. The creator/owner of REXML is Sean -Russell. - - - -[1]: http://www.linuxjournal.com/modules.php?op=modload&name=NS-lj-issues/issue119&file=index diff --git a/fa/news/_posts/2004-04-12-ruby-track-and-tutorials-at-oscon.md b/fa/news/_posts/2004-04-12-ruby-track-and-tutorials-at-oscon.md deleted file mode 100644 index 85c10e24df..0000000000 --- a/fa/news/_posts/2004-04-12-ruby-track-and-tutorials-at-oscon.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "Ruby Track and Tutorials at OSCON" -author: "Unknown Author" -lang: en ---- - -The [O’Reilly Open Source Convention][1], taking place July 26-30 in -Portland, OR, will include both a [Ruby track][2] and a series of [Ruby -tutorials][3]. This is the first year the Conference has included a Ruby -track. - - - -[1]: http://conferences.oreilly.com/os2004 "OSCON" -[2]: http://conferences.oreillynet.com/pub/w/29/track_ruby.html -[3]: http://conferences.oreillynet.com/pub/w/29/tutorial_ruby.html diff --git a/fa/news/_posts/2004-05-23-rubyconf-2004-pre-registration-is-open.md b/fa/news/_posts/2004-05-23-rubyconf-2004-pre-registration-is-open.md deleted file mode 100644 index 5c7e21d63e..0000000000 --- a/fa/news/_posts/2004-05-23-rubyconf-2004-pre-registration-is-open.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2004 pre-registration is open" -author: "Unknown Author" -lang: en ---- - -Pre-registration is open for the Fourth Annual International Ruby -Conference, to be held in Reston, VA, USA, October 1-3 2004. You can -pre-register, and get more information about the conference, at [the -RubyConf site][1] Even if you’re new to Ruby, have a look—the conference -is designed to be as affordable as possible, and is a good place to -learn more about Ruby and meet other Ruby programmers and enthusiasts. - - - -[1]: http://www.rubycentral.org/conference diff --git a/fa/news/_posts/2004-05-29-heliumruby-langorg-was-cracked.md b/fa/news/_posts/2004-05-29-heliumruby-langorg-was-cracked.md deleted file mode 100644 index 95dd316877..0000000000 --- a/fa/news/_posts/2004-05-29-heliumruby-langorg-was-cracked.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: news_post -title: "helium.ruby-lang.org was cracked" -author: "Shugo Maeda" -lang: en ---- - -On Fri May 28, we found that someone cracked helium.ruby-lang.org -via CVS. - -Fortunately, the cvs process was running in the chroot environment, -so the affects to other services/contents were not so probable, but -we are confirming it now. -Currently there are no interpolations found out of the chroot -environment. - -The most worrisome contents are the CVS repositories, but these -distributions are not affected at least. - - 5d52c7d0e6a6eb6e3bc68d77e794898e ruby-1.8.1.tar.gz - bf48d49dbd94b5c0eda5f75b3bfbac16 ruby-1.6.8.tar.gz - -The mailing list services are restarted, but CVS/WWW/FTP/RSYNC -are stopped yet, sorry. - -Further information will be provided on https://www.ruby-lang.org/. -For more information, send mail to admin@ruby-lang.org please. diff --git a/fa/news/_posts/2004-06-01-notice-on-ruby-langorg-mailing-list-service-restart.md b/fa/news/_posts/2004-06-01-notice-on-ruby-langorg-mailing-list-service-restart.md deleted file mode 100644 index 771d01c68f..0000000000 --- a/fa/news/_posts/2004-06-01-notice-on-ruby-langorg-mailing-list-service-restart.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: news_post -title: "Notice on ruby-lang.org mailing list service restart" -author: "Shugo Maeda" -lang: en ---- - -Sorry for our delayed report on restart operation on ruby-lang.org -mailing list service. We should account current management of the -lists orderly. - -As reported, we found someone's crack against helium.ruby-lang.org and -immediately stopped various services provided on the site, including -mailing list service. We then surveyed mailing system (fml and related -tools) and configuration files for each lists, and found them -credible: they don't have any sign of tampering. - -Our confirmation however does not totally cover the contents of the -messages posted on the lists before, or archived on -helium.ruby-lang.org, and member lists of the lists. - -Based on the fact, and considering the meaning of the list (as a -medium for communication), we at first filled users' convenience. If -you are reading this mail and are not a member of this 'ruby-foo' -mailing list, feel free to contact its administrator -<ruby-foo-admin@ruby-lang.org>. - -Other inquiries on the list may well accepted via the above -address. Inquiries not related to mailing list shall be referred to -the other address: <admin@ruby-lang.org>. - -A series of announcements, past and future, will continue on -http://www.ruby-lang.org. Sorry for some time inconvenient. - -ruby-lang.org administrators' group diff --git a/fa/news/_posts/2004-06-15-wwwftp-service-restart.md b/fa/news/_posts/2004-06-15-wwwftp-service-restart.md deleted file mode 100644 index 709fb88f6b..0000000000 --- a/fa/news/_posts/2004-06-15-wwwftp-service-restart.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "WWW/FTP service restart" -author: "Shugo Maeda" -lang: en ---- - -We have finished the validation on WWW/FTP contents, so we -restarted WWW/FTP services. - -Details of the validation will be reported. - -For a while, the services are subject to pause for maintenance. - -ruby-lang.org administrators' group diff --git a/fa/news/_posts/2004-06-22-anonymous-cvs-service-restart.md b/fa/news/_posts/2004-06-22-anonymous-cvs-service-restart.md deleted file mode 100644 index 536ea309b6..0000000000 --- a/fa/news/_posts/2004-06-22-anonymous-cvs-service-restart.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: news_post -title: "Anonymous CVS service restart" -author: "Shugo Maeda" -lang: en ---- - -Anonymous CVS service is restarted. - -To get the latest source code of ruby, type following commands: - - $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src login - (Logging in to anonymous@cvs.ruby-lang.org) - CVS password: [Enter] - $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/src co ruby - -No password is required. - -CVSup is also available. You can get supfiles at -http://cvs.ruby-lang.org/cvsup/. - -The CVS repository is checked by ruby-lang.org administrators' group. -Details will be reported. Please wait a while. - -Shugo Maeda <shugo@ruby-lang.org><br /> -ruby-lang.org administrators' group diff --git a/fa/news/_posts/2004-06-24-cvsweb-service-restart.md b/fa/news/_posts/2004-06-24-cvsweb-service-restart.md deleted file mode 100644 index 9c7be405ed..0000000000 --- a/fa/news/_posts/2004-06-24-cvsweb-service-restart.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "CVSweb service restart" -author: "Shugo Maeda" -lang: en ---- - -CVSweb service is restarted. -[https://www.ruby-lang.org/cgi-bin/cvsweb.cgi/][1] - - - -[1]: {{ site.url }}/cgi-bin/cvsweb.cgi/ diff --git a/fa/news/_posts/2004-06-29-modules-added-to-the-anonymous-cvs-repository.md b/fa/news/_posts/2004-06-29-modules-added-to-the-anonymous-cvs-repository.md deleted file mode 100644 index 742c7a8c4e..0000000000 --- a/fa/news/_posts/2004-06-29-modules-added-to-the-anonymous-cvs-repository.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "modules added to the Anonymous CVS repository" -author: "Shugo Maeda" -lang: en ---- - -These checked modules are added to the Anonymous CVS repository. - -* app -* lib(except soap4r,csv) -* eruby -* oniguruma -* rough -* rubicon -* ruby-parser -* shim -* vms - diff --git a/fa/news/_posts/2004-07-05-added-libsoap4rlibcsvmodruby-old-to-anonymous-cvs.md b/fa/news/_posts/2004-07-05-added-libsoap4rlibcsvmodruby-old-to-anonymous-cvs.md deleted file mode 100644 index 48b7f1719e..0000000000 --- a/fa/news/_posts/2004-07-05-added-libsoap4rlibcsvmodruby-old-to-anonymous-cvs.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: news_post -title: "added lib/soap4r,lib/csv,mod_ruby-old to Anonymous CVS" -author: "Shugo Maeda" -lang: en ---- - -lib/soap4r, lib/csv, mod\_ruby-old were added to the Anonymous CVS -repository. Then, eruby was renamed to eruby-old. mod\_ruby/eruby are -developed on the Subversion repository now. - diff --git a/fa/news/_posts/2004-07-06-suspended-libsoap4r-and-libcsv-again.md b/fa/news/_posts/2004-07-06-suspended-libsoap4r-and-libcsv-again.md deleted file mode 100644 index 43ad5ca47d..0000000000 --- a/fa/news/_posts/2004-07-06-suspended-libsoap4r-and-libcsv-again.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "suspended lib/soap4r and lib/csv again" -author: "NaHi" -lang: en ---- - -Anonymous CVS repository for csv(lib/csv) and soap4r(lib/soap4r) were -once released to public at 2004-07-05 15:30:00 JST (2004-07-05 06:30:00 UTC). -But I, the maintainer of these repository, found my checking -process of CVS repository was not enough. So I suspended the -repositories again. Users who checkout these repositories from -<abbr title="2004-07-05 06:30:00 UTC">2004-07-05 15:30:00 JST</abbr> -to <abbr title="2004-07-06 07:30:00 UTC">2004-07-06 16:30:00 JST</abbr> -must check your CVS workspace. I’m sorry -for the trouble this error caused you. I’ll report again after -confirmation of these repositories. csv and soap libraries which are -bundled to ruby’s repository(/src/ruby) were confirmed that it is safe. diff --git a/fa/news/_posts/2004-07-21-ruby-182-preview1-released.md b/fa/news/_posts/2004-07-21-ruby-182-preview1-released.md deleted file mode 100644 index cbc5aafe7c..0000000000 --- a/fa/news/_posts/2004-07-21-ruby-182-preview1-released.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "ruby 1.8.2 preview1 released" -author: "Shugo Maeda" -lang: en ---- - -[ruby 1.8.2 preview1][1] was released. - -md5sum is 6cc070a768996f784fc7480d1c61bc85. - -You can download it at: - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview1.tar.gz][1] - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview1.tar.gz diff --git a/fa/news/_posts/2004-07-22-incident-analysis-of-the-intrusion-on-heliumruby-langorg.md b/fa/news/_posts/2004-07-22-incident-analysis-of-the-intrusion-on-heliumruby-langorg.md deleted file mode 100644 index 0bb3373833..0000000000 --- a/fa/news/_posts/2004-07-22-incident-analysis-of-the-intrusion-on-heliumruby-langorg.md +++ /dev/null @@ -1,428 +0,0 @@ ---- -layout: news_post -title: "Incident Analysis of the intrusion on helium.ruby-lang.org" -author: "Shugo Maeda" -lang: en ---- - -As already reported, helium.ruby-lang.org, which is one of the servers -that provided various services relevant to Ruby development, was cracked -by an unauthorized user. We, the ruby-lang.org administrators, are -reporting our analysis of this intrusion and the countermeasures we've -taken. - -## Time-line of the incident - -The time progression about the intrusion is shown below. -Each time is in UTC. - - 19 May The public disclosure of a vulnerability of CVS - (CAN-2004-0396) is announced. We believe that this - vulnerability was used in this intrusion. - 20 May 02:46 The Debian CVS package of the host helium.ruby-lang.org - (hereafter called 'helium') is upgraded. However, the - chrooted CVS package, which provided the actual pserver, - is overlooked. - 23 May 11:15 Oldest (corroborated) time stamp of the trace of intrusion - 27 May 19:03 Opening of the back-door installed by the invader - 28 May 09:26 A ruby-lang.org administrator discovers a trace of the - intrusion. - 28 May 09:35 Administrator disconnects 'helium' from network. - 28 May 11:53 Administrator reboots 'helium' and resumes mailing list - services. - 29 May 07:28 Our first announcement about this intrusion. - -## Machines and services of the time - -Ruby-related services were offered by the following two machines at the -time of intrusion. - -helium.ruby-lang.org -: The following services were provided by 'helium'. - - * CVS (cvs.ruby-lang.org) - * HTTP (www.ruby-lang.org/raa.ruby-lang.org) - * FTP (ftp.ruby-lang.org) - * RSYNC (for mirror sites) - * ML (<ML name>@ruby-lang.org) - -hydrogen.ruby-lang.org (hereafter called 'hydrogen') -: The following services were provided by 'hydrogen'. - - * HTTP (www.rubyist.net) - * NFS (to export /home to 'helium') - -## Details of intrusion - -On 'helium', the pserver service was offered under anoncvs user -permissions in a chroot environment. This CVS service was used for -development of Ruby, and multiple committers had their own accounts. -Public read-only CVS access was allowed via the 'anonymous' user -account. - -As mentioned above, the vulnerability of CVS was announced on 19 May. -Although the Debian CVS package of 'helium' was upgraded on 20 May, the -CVS package of the chroot environment was not upgraded. - -Under these circumstances, an administrator of 'helium' discovered -dubious processes of anoncvs on 28 May, 09:26 (UTC). More than one -suspicious, executable files were discovered to have been installed by -intruder(s), including a program creating a back-door listening on TCP -port #54320. This back-door program was running at the time of the -discovery of the intrusion. The "Time-line" time mentioned above was -determined by the output of the 'ps' command, and by the time stamp of -the intrusive executable file. We should note here that all external -connections to the back-door were prevented by the Linux kernel's IP -packet filtering feature. - -Another note: usually, the pserver process creates a temporary directory -(/tmp/cvs-serv<Process ID>) for each session and deletes it at the end -of the session. At the time of the intrusion, more than one temporary -directories were left in the /tmp directory of the chroot environment. -This suggests that pserver processes were terminated abnormally, perhaps -by the attack of the intruder(s). Of the time stamps of these temporary -directories, the oldest is of 23 May, 11:15 (UTC). The "Time-line" time -mentioned above was determined by this time stamp. Comparing time -stamps of these directories with the pserver session log, it appears -that there were multiple, independent crackers who attacked the -vulnerability. - -This evidence indicates that intruder(s) were exploiting the CVS -vulnerability and received anoncvs user permission on 'helium'. -Intruder(s) could acquire, alter and destroy all information within the -chroot environment. - -Evidence such as the seizing of other accounts, local privilege -escalation, or intrusion to outside of the chroot environment has, to -date, not been found. - -## The possibility of intrusion outside of the chroot environment - -In order for intruders to break chroot protection, promotion to a -privilege user is required. - -At the time of the intrusion, the Linux kernel running on 'helium' was -version 2.4.24. The patch for the vulnerability (backported from kernel -version 2.4.25) had been applied. However, the patch for setsockopt(2) -vulnerability fixed in kernel 2.4.26 had not been applied. - -Code for a DoS attack exploiting a vulnerable setsockopt(2) has been -exhibited, but it is considered difficult to successfully achieve a -local privilege escalation from this. It appears to be impossible to -achieve privilege escalation if the intruder is unable to get the kernel -image of the target environment. On 'helium', the kernel was not from a -binary package, but was built from source code with individually applied -patches. Therefore, the possibility that the intruder was able to -achieve privilege promotion is considered minimal. - -## Restoration of services - -With the first investigation, we inferred that the intrusion was -probably only within the chroot environment. At first we decided to -resume the mailing list service on 'helium', because the impact of a -suspension of mail service, from the users' point of view, was -considered the largest. After checking that there was no alteration of -the binary package, and also that there was no suspicious settings in -the configuration files, we restored the mailing list service. - -We then began the confirmation work for resuming other services on -'helium', but soon decided instead to thoroughly reconstruct the machine -and resume services individually after each was checked. This decision -was made because of the difficulty of inspecting the large number of -files. - -To restore the service, we needed a machine used as substitute for -'helium'. We decided to use 'hydrogen' which hosted www.rubyist.net. -'Hydrogen' did not offer pserver service and no trace of intrusion was -found on the machine, but 'hydrogen' provided /home as NFS-mounted -filesystem to 'helium'. To ensure that hydrogen was not compromised, we -re-installed the OS of 'hydrogen', and set the host name to 'lithium'. -Then we moved the mailing list service from 'helium' to 'lithium', -together with the intrusion announcement page of the web site. - -Next, we re-installed OS of 'helium', and set the host name to -'beryllium'. We plan to migrate all public services to 'beryllium' in -the future. - -## Machines and services at present - -At present, Ruby-related services are offered by the following two -machines. - -lithium.ruby-lang.org -: The following services are provided by lithium.ruby-lang.org. - - * CVS (for committers development, no public access) - * Mailing list (the move to 'beryllium' is planned) - -beryllium.ruby-lang.org -: The following services are provided by beryllium.ruby-lang.org. - - * HTTP (www.ruby-lang.org/raa.ruby-lang.org/www.rubyist.net) - * FTP (ftp.ruby-lang.org) - * Anonymous CVS (cvs.ruby-lang.org) - -## Verification of the contents of each service - -We will hereafter explain the results of our efforts to evaluate -whether there was any alteration or destruction of services -by the intruders. - -### Precondition - -The oldest evidence that we have of the intrusion is from 23 May, and -this has been corroborated; since this trace could have been deleted by -the intruder(s) with anoncvs user permission, we were not able to -conclude that this was the first day of the intrusion. Since the -evidence of the intrusion was from the CVS vulnerability, and since no -other vulnerability which could have been exploited for intrusion into -'helium' is known, we are confident that the intruder(s) abused the CVS -vulnerability and thereby gained access to 'helium'. - -Our verification of alteration or destruction in the services was based -on the assumption that the first intrusion would prove to be after 19 -May, when the CVS vulnerability CAN-2004-0396 was publicly announced. - -### CVS - -Since the intruders are supposed to have gained anoncvs user -permissions, we were most suspicious and anxious about possible damage -to CVS among all of the services on 'helium'. - -At the time of intrusion, there was the following four CVS repositories. - -/src -: Source code - -/www -: Data of WWW - -/doc -: Document - -/admin -: The management file for CVS - -Among these, /www and /doc needed no verification, since their contents -were already unused. Moreover, we decided to suspend use of /admin, and -simply dropped it. - -What we explain hereafter are the results of verification of the -source code of Ruby and of each other module included in /src. - -### The source code of Ruby - -We split possible CVS repository alternations into two categories: - -(1) Alteration of historical data in files in the CVS repository prior - to 19 May - -(2) Alteration which camouflaged the regular submissions after 19 May - -For (1), we checked files in the CVS repository by the log of cvsup -after 19 May which were kept securely outside of 'helium'. We verified -that there has been no sign of alteration of files in the CVS -repository. For (2), we checked all contents of the commits -individually and confirmed the absence of any malicious code after 19 -May. This means that not only is there no malicious code, but also that -we verified each commit with the committer. - -Our verification was supported by data in the following URL. - -* Log of cvsup<br /> - https://www.ruby-lang.org/check-data/cvs/cvsup-log/ -* Contents of the commits from 19 May to 28 May<br /> - https://www.ruby-lang.org/check-data/cvs/cvs-diff/ - -Moreover, in addition to the above-mentioned material, we did the -following supplemental work: - -* We confirmed there was no inconsistency between files in the CVS - repository on 'helium' and files in an exterior, secure server on 21 - May. -* We confirmed there was no inconsistency within the CVS snapshots - from 2003-11-02 to 2004-05-27 (day by day) and snapshots created from - the CVS repository on 'helium'. - -We concluded that there was no alteration or destruction of the source -code of ruby in the CVS repository. - -#### Modules other than the source code of Ruby - -In addition to the source code of Ruby, the /src directory of the CVS -repository has the following modules: - - * app - * lib - * rough - * rubicon - * ruby-parser - * shim - * vms - * pocketruby - * oniguruma - * mod_ruby - * eruby - -First, we found that only the following files were changed after 19 May -by comparing the ctime of the files of the repository with the times of -the files copied to the external server by CVSup: - - * lib/csv/lib/csv.rb,v - * lib/csv/tests/csv_ut.rb,v - * lib/soap4r/lib/wsdl/xmlSchema/parser.rb,v - * lib/soap4r/lib/wsdl/xmlSchema/complexContent.rb,v - * lib/soap4r/lib/wsdl/parser.rb,v - * mod_ruby/lib/apache/eruby-run.rb,v - * mod_ruby/lib/apache/erb-run.rb,v - * mod_ruby/ChangeLog,v - -Second, we compared the copied CVS repository with the CVS repository on -'helium', and we confirmed that there was no inconsistency among them, -except for binary files in 'pocketruby'. Since we had already merged -'wince' in ruby's main branch, we did not do further check on pocketruby -and have ceased offering its source code. - -Each of the files which were changed after 19 May are mentioned below. - -lib/csv/lib/csv.rb,v -lib/csv/tests/csv_ut.rb,v -lib/soap4r/lib/wsdl/xmlSchema/parser.rb,v -lib/soap4r/lib/wsdl/xmlSchema/complexContent.rb,v -lib/soap4r/lib/wsdl/parser.rb,v -: We are unsure about these files. lib/csv and lib/soap4r are already - merged with ruby, and these modules are only used by the maintainers - of each. lib/csv and lib/soap4r have been removed from the CVS - repository, and will be developed elsewhere. - -mod_ruby/lib/apache/eruby-run.rb,v -mod_ruby/lib/apache/erb-run.rb,v -: All revisions including branches had been checked, and no problems - were found. They were each compared with the released source - packages, and it has been confirmed that there are no - inconsistencies. - -mod_ruby/ChangeLog,v -: Usual changes of a ChangeLog file are additions of the content(s). - The ChangeLog can be checked with the following methods: - - (1) We confirmed that there is no problem in the first revision. - - (2) We confirmed that there is no problem in the newest revision. - - (3) We confirmed all revisions which include changes, not only - additions. - - Moreover, we compared it with the released source packages, and it - has been verified that there are no inconsistencies. - -In addition, the development of mod_ruby and eruby has moved to -Subversion, so those CVS module names have been changed to mod_ruby-old -and eruby-old. - -### HTTP (www.ruby-lang.org) - -https://www.ruby-lang.org/{ja, en}/ is generated by tDiary. We performed -the following in order to check that there are no problems executing the -tDiary CGI program: - - * Confirmation of the absence of suspicious code in the CGI programs - * Verification of code in `<script>` elements embedded in the contents - * Confirmation of the absence of suspicious data in the configuration files - -Moreover, we checked the contents and linked URLs, but no problem is -found. If any problems are found, please contact to -webmaster@ruby-lang.org. - -### On-line reference manual - -On-line reference manual was on RWiki. We first restored the contents on -29 Feb, then applied the patches mailed to external e-mail accounts on -29 Feb. Then we compared it with the contents on 'helium'. - -The diff can be obtained from: - - https://www.ruby-lang.org/check-data/ruby-man/man-rd-ja.diff - -The difference of Base64.rd comes from new-lines inserted when receiving -the mail. trap%3A%3ANilClass.rd.rej was rejected, because the same patch -applied twice. The diff script compared files with files from 61 minutes -prior, so the same patch sent twice. - -We confirmed none of them were affected by the intrusion. - -### RAA - -We did the following data verification. - -* We made a daily diff of RAA data from 1) the clean RAA data copy - backed up on 27 Mar, 2) daily backups from 4 Apr to 28 May, and 3) the - latest RAA data of 28 May. - - 2) and 3) are located in a chroot protected area on the machine. - 1) is clean because it is kept in a development environment. - - * RAA data update:<br /> - http://raa.ruby-lang.org/announce/soapbox-diff-all-passphrasemask.txt - * RAA new entry:<br /> - http://raa.ruby-lang.org/announce/soapbox-new-passphrasemask.txt - -* We confirmed the absence of suspicious data in the above diffs. - -It can be concluded that the RAA data of 28 May (the same data we use -for RAA service restart) does not include any suspicious data. -We therefore decided to restart the RAA service as it was on 28 May. We -cannot offer assurances that normal-looking changes by the intruder do not -exist. For example, the change of sampleproject on 18 May is as -follows; - - == sampleproject - - updated: Sun May 09 12:35:19 GMT+9:00 2004 - + updated: Mon May 17 13:00:38 GMT+9:00 2004 - - version: 0.0.8 - + version: 0.1.1 - -None of this data is suspect, but it is possible that the changes were -made by the intruder. Therefore, we request that each RAA project owner -CHECK THEIR RAA ENTRIES AND UPDATE THEM FOR CONFIRMATION. To do this, -take the following steps: - -(1) Open the project page - -(2) Check the project information - -(3) Go to the "update" page - -(4) Press the "submit" button (do this even if no update is needed -- - this step is for confirmation) - -Please contact raa-admin@ruby-lang.org if you find any suspicious data -in RAA, or you have any question. Thank you for your cooperation. - -### FTP - -We compared md5sum values of files on FTP with the files kept in the -exterior, secure server, and there were no differences. - -However, we could not check the following directories. Consequently, -they are not currently provided. - - /pub/ruby/contrib/ - /pub/ruby/doc/ - /pub/ruby/snapshots/ - /pub/ruby/ML/ - /pub/ruby/shim/ - -If you need files in these directories, please contact -ftpadmin@ruby-lang.org. - -### Mailing list - -We investigated the configuration files of each mailing list, and found -no issues. However, member lists and mail archives have not been -thoroughly checked. - -If you have any problems, please contact to <ML name>-admin@ruby-lang.org. - -Shugo Maeda <shugo@ruby-lang.org><br /> -ruby-lang.org administrators' group diff --git a/fa/news/_posts/2004-07-30-ruby-182-preview2-released.md b/fa/news/_posts/2004-07-30-ruby-182-preview2-released.md deleted file mode 100644 index c453c05d67..0000000000 --- a/fa/news/_posts/2004-07-30-ruby-182-preview2-released.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "ruby 1.8.2 preview2 released" -author: "Shugo Maeda" -lang: en ---- - -[ruby 1.8.2 preview2][1] was released. - -md5sum is f40dae2bd20fd41d681197f1229f25e0. - -You can download it at: - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview2.tar.gz][1] - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview2.tar.gz diff --git a/fa/news/_posts/2004-07-31-rubyconf-2004-registration-now-open.md b/fa/news/_posts/2004-07-31-rubyconf-2004-registration-now-open.md deleted file mode 100644 index bd92731b56..0000000000 --- a/fa/news/_posts/2004-07-31-rubyconf-2004-registration-now-open.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2004 registration now open" -author: "David Black" -lang: en ---- - -Registration for [RubyConf 2004][1] is now open. You can register -[here][2]. The conference will be held in Chantilly, Virginia, USA, -October 1-3. Speakers will be announced soon; check the [conference -website][1] for updates. RubyConf 2004 is a production of [Ruby Central, -Inc.][3] - - - -[1]: http://www.rubycentral.org/conference -[2]: http://www.rubycentral.org/conference/register.html -[3]: http://rubycentral.org diff --git a/fa/news/_posts/2004-08-08-brad-cox-to-keynote-rubyconf-2004.md b/fa/news/_posts/2004-08-08-brad-cox-to-keynote-rubyconf-2004.md deleted file mode 100644 index 49fbd0e94d..0000000000 --- a/fa/news/_posts/2004-08-08-brad-cox-to-keynote-rubyconf-2004.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "Brad Cox to keynote RubyConf 2004" -author: "David Black" -lang: en ---- - -Brad Cox, creator of Objective-C, will deliver the keynote address at -this year’s [International Ruby Conference][1] (RubyConf 2004). A -leading expert on dynamic programming languages, Brad will speak on “The -History and Design of Objective-C”. [Registration for RubyConf 2004][2] -is still open. - - - -[1]: http://www.rubycentral.org/conference -[2]: http://www.rubycentral.org/conference/register.html diff --git a/fa/news/_posts/2004-09-18-korean-translation-of-wwwruby-langorg.md b/fa/news/_posts/2004-09-18-korean-translation-of-wwwruby-langorg.md deleted file mode 100644 index 685cfc20d7..0000000000 --- a/fa/news/_posts/2004-09-18-korean-translation-of-wwwruby-langorg.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Korean translation of www.ruby-lang.org" -author: "Shugo Maeda" -lang: en ---- - -[Korean translation of www.ruby-lang.org][1] is available. Thanks to -Bryan Kang. - - - -[1]: http://cafe.naver.com/ruby/ diff --git a/fa/news/_posts/2004-09-22-ruby-forum.md b/fa/news/_posts/2004-09-22-ruby-forum.md deleted file mode 100644 index 78532ec5fe..0000000000 --- a/fa/news/_posts/2004-09-22-ruby-forum.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "Ruby Forum" -author: "Shugo Maeda" -lang: en ---- - -A link to [Ruby Forum][1] was added to [Community](/en/community/) -Alexey Verkhovsky saids, \`Ruby Forum is a newly created bulletin board -for discussing Ruby. Unlike ruby-talk mailing list, it allows anonymous -posting and implements more understandable interface for searching. -Intended target audience of this forum is newcomers to Ruby that are not -committed enough to subscribe to a 100+ posts/day mailing list.’ - - - -[1]: http://www.ruby-forum.org/bb diff --git a/fa/news/_posts/2004-09-29-rsync-service-restart.md b/fa/news/_posts/2004-09-29-rsync-service-restart.md deleted file mode 100644 index acfbc8ae19..0000000000 --- a/fa/news/_posts/2004-09-29-rsync-service-restart.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: news_post -title: "RSYNC service restart" -author: "Shugo Maeda" -lang: en ---- - -RSYNC service is restarted. -[rsync://ftp.ruby-lang.org/](rsync://ftp.ruby-lang.org/) - diff --git a/fa/news/_posts/2004-11-08-182-preview3-released.md b/fa/news/_posts/2004-11-08-182-preview3-released.md deleted file mode 100644 index d46e63b2fb..0000000000 --- a/fa/news/_posts/2004-11-08-182-preview3-released.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "1.8.2 preview3 released" -author: "usa" -lang: en ---- - -Matz announced that [ruby 1.8.2 preview3][1] was released -([ruby-core:03694](ruby-core:03694)). - -md5sum is 64478c70a44a48af1a1c256a43e5dc61. - -You can download it at: - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview3.tar.gz][1] - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview3.tar.gz diff --git a/fa/news/_posts/2004-12-02-ruby-codefest-grant-program-announced-by-ruby-central-inc.md b/fa/news/_posts/2004-12-02-ruby-codefest-grant-program-announced-by-ruby-central-inc.md deleted file mode 100644 index a657a2cba0..0000000000 --- a/fa/news/_posts/2004-12-02-ruby-codefest-grant-program-announced-by-ruby-central-inc.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "Ruby Codefest Grant Program announced by Ruby Central, Inc." -author: "David Black" -lang: en ---- - -[Ruby Central, Inc.][1] has announced its first Ruby Codefest Grant -Program. This program is designed to provide support for local and -regional groups working on development of Ruby libraries. (See [full -text of the announcement][2].) You can [apply for a grant][3] on behalf -of your group. - - - -[1]: http://rubycentral.org -[2]: http://www.rubycentral.org/grant/announce.html -[3]: http://www.rubycentral.org/grant/application.html diff --git a/fa/news/_posts/2004-12-19-pragmatic-bookshelf-planning-a-series-of-ruby-books.md b/fa/news/_posts/2004-12-19-pragmatic-bookshelf-planning-a-series-of-ruby-books.md deleted file mode 100644 index ced5d97294..0000000000 --- a/fa/news/_posts/2004-12-19-pragmatic-bookshelf-planning-a-series-of-ruby-books.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "Pragmatic Bookshelf planning a series of Ruby books" -author: "David Black" -lang: en ---- - -“Programming Ruby” author Dave Thomas of the Pragmatic Programmers -announced plans for a series of Ruby books from the Pragmatic Bookshelf -(the Pragmatic Programmers’ own imprint). “The intent is to create a -series of books with a deeply practical focus. We won’t just document -APIs. Instead, we want to show how to get *value* from those APIs—-how -to solve real-world problems.” - -See [the full announcement][1] for more information, including follow-up -guidelines for potential authors. - - - -[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/123137 diff --git a/fa/news/_posts/2004-12-22-182-preview4-released.md b/fa/news/_posts/2004-12-22-182-preview4-released.md deleted file mode 100644 index 60786ad934..0000000000 --- a/fa/news/_posts/2004-12-22-182-preview4-released.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "1.8.2 preview4 released" -author: "usa" -lang: en ---- - -Matz announced that [ruby 1.8.2 preview4][1] was released -([ruby-core:04000](ruby-core:04000)). - -md5sum is 2f53d4dc4b24e37799143645772aabd0. - -You can download it at: - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview4.tar.gz][1] - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.2-preview4.tar.gz diff --git a/fa/news/_posts/2004-12-25-chinese-translation-of-wwwruby-langorg.md b/fa/news/_posts/2004-12-25-chinese-translation-of-wwwruby-langorg.md deleted file mode 100644 index 6641e4c30b..0000000000 --- a/fa/news/_posts/2004-12-25-chinese-translation-of-wwwruby-langorg.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Chinese translation of www.ruby-lang.org" -author: "Shugo Maeda" -lang: en ---- - -[Chinese translation of www.ruby-lang.org][1] is available now. Thanks, -KOBAYASHI Toshihito. - - - -[1]: http://rubycn.ce-lab.net/ diff --git a/fa/news/_posts/2004-12-26-ruby-182-released.md b/fa/news/_posts/2004-12-26-ruby-182-released.md deleted file mode 100644 index 9b81083456..0000000000 --- a/fa/news/_posts/2004-12-26-ruby-182-released.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.2 released!" -author: "maki" -lang: en ---- - -Matz announced that ruby 1.8.2 was released -([ruby-talk:124413](ruby-talk:124413) and -[ruby-talk:124434](ruby-talk:124434)). - -This is mainly a bug fix release. You can download it at: - -* [https://cache.ruby-lang.org/pub/ruby/ruby-1.8.2.tar.gz][1] - -md5sum is 8ffc79d96f336b80f2690a17601dea9b - -Merry Christmas! - - - -[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.8.2.tar.gz diff --git a/fa/news/_posts/2005-02-20-ruby-weekly-news.md b/fa/news/_posts/2005-02-20-ruby-weekly-news.md deleted file mode 100644 index 09770a64c7..0000000000 --- a/fa/news/_posts/2005-02-20-ruby-weekly-news.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "Ruby Weekly News" -author: "chad" -lang: en ---- - -Tim Sutherland [announced][1] the latest publication of the [Ruby Weekly -News][2]. The Ruby Weekly News is a weekly summary of the [ruby-talk][3] -mailing list. Tim recently resurrected it after an extended hiatus. The -Ruby Weekly News is a great way to stay in touch with what’s happening -in the world of ruby-talk as its volume continues to grow. Many thanks -to Tim for this valuable resource! - - - -[1]: http://ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/131807 -[2]: http://rubygarden.org/ruby/ruby?RubyNews/2005-02-14 -[3]: http://www.ruby-talk.org diff --git a/fa/news/_posts/2005-03-11-rubycentral-codefest-grants-announced.md b/fa/news/_posts/2005-03-11-rubycentral-codefest-grants-announced.md deleted file mode 100644 index 118b3404dd..0000000000 --- a/fa/news/_posts/2005-03-11-rubycentral-codefest-grants-announced.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "RubyCentral CodeFest Grants Announced" -author: "chad" -lang: en ---- - -Ruby Central [announced][1] the the recipients of its first [CodeFest -Grant Program][2]. Five projects were awarded funding to support -regional coding sessions, whose aim are to build working Ruby code to -fill a void in the landscape of available Ruby libraries. -Congratulations to the recipients! - - - -[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/133197 -[2]: http://www.rubycentral.org/grant/announce.html diff --git a/fa/news/_posts/2005-03-23-rubyconf-2005-preregistration-now-open.md b/fa/news/_posts/2005-03-23-rubyconf-2005-preregistration-now-open.md deleted file mode 100644 index a8b6f8d40e..0000000000 --- a/fa/news/_posts/2005-03-23-rubyconf-2005-preregistration-now-open.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2005 Preregistration now open" -author: "Unknown Author" -lang: en ---- - -Preregistration for the upcoming Fifth Annual International Ruby -Conference (RubyConf 2005) is now open. RubyConf 2005 will be held in -San Diego, CA, October 14-16. You can preregister [here][1]. The full -announcement is [here][2]. - - - -[1]: http://www.rubycentral.org/conference/prereg/ -[2]: http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/134660 diff --git a/fa/news/_posts/2005-04-14-server-maintenance.md b/fa/news/_posts/2005-04-14-server-maintenance.md deleted file mode 100644 index 38c08b99f9..0000000000 --- a/fa/news/_posts/2005-04-14-server-maintenance.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: news_post -title: "Server Maintenance" -author: "Unknown Author" -lang: en ---- - -We’ll be performing server maintenance on Thu Apr 14 03:00:00 UTC 2005. -It may be down briefly. - diff --git a/fa/news/_posts/2005-04-19-anonymous-cvs-service-stopped.md b/fa/news/_posts/2005-04-19-anonymous-cvs-service-stopped.md deleted file mode 100644 index ab346e2923..0000000000 --- a/fa/news/_posts/2005-04-19-anonymous-cvs-service-stopped.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Anonymous CVS Service Stopped" -author: "Shugo Maeda" -lang: en ---- - -We stopped the anonymous CVS service because of [Security Update of -CVS][1]. The service will be restarted after Debian package update. - - - -[1]: https://ccvs.cvshome.org/servlets/NewsItemView?newsItemID=141 diff --git a/fa/news/_posts/2005-04-27-anonymous-cvs-service-restart.md b/fa/news/_posts/2005-04-27-anonymous-cvs-service-restart.md deleted file mode 100644 index e50d8f799f..0000000000 --- a/fa/news/_posts/2005-04-27-anonymous-cvs-service-restart.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: news_post -title: "Anonymous CVS Service Restart" -author: "Shugo Maeda" -lang: en ---- - -Anonymous CVS Service was restarted. Thank you. - diff --git a/fa/news/_posts/2005-06-22-upgrade-to-debian-gnulinux-31.md b/fa/news/_posts/2005-06-22-upgrade-to-debian-gnulinux-31.md deleted file mode 100644 index 28750eeabd..0000000000 --- a/fa/news/_posts/2005-06-22-upgrade-to-debian-gnulinux-31.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: news_post -title: "Upgrade to Debian GNU/Linux 3.1" -author: "Shugo Maeda" -lang: en ---- - -We’ll upgrade this host to Debian GNU/Linux 3.1 (sarge) on Wed Jun 29 -05:00:00 UTC 2005. Services will be stopped for a while. Successfully -DONE. Thank you. - diff --git a/fa/news/_posts/2005-07-01-xmlrpcipimethods-vulnerability.md b/fa/news/_posts/2005-07-01-xmlrpcipimethods-vulnerability.md deleted file mode 100644 index cbda7e0867..0000000000 --- a/fa/news/_posts/2005-07-01-xmlrpcipimethods-vulnerability.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: news_post -title: "XMLRPC.iPIMethods Vulnerability" -author: "Shugo Maeda" -lang: en ---- - -On Fri Jun 17 2005, a vulnerability of XMLRPC.iPIMethods was reported in -\[ruby-core:05237\]. Remote attackers can execute arbitrary commands by -this vulnerability. - -#### Affected Programs - -Programs providing XML-RPC services by XMLRPC.iPIMethods are affected. - -#### Fix - -This vulnerability was already fixed in both the CVS HEAD and the -ruby\_1\_8 branch. - -Please apply this patch for ruby-1.8.2. - -* www.ruby-lang.org/patches/ruby-1.8.2-xmlrpc-ipimethods-fix.diff -^ - - --- ruby-1.8.2/lib/xmlrpc/utils.rb.orig 2003-08-15 02:20:14.000000000 +0900 - +++ ruby-1.8.2/lib/xmlrpc/utils.rb 2005-07-01 16:33:19.243521736 +0900 - @@ -138,7 +138,7 @@ - - def get_methods(obj, delim=".") - prefix = @prefix + delim - - obj.class.public_instance_methods.collect { |name| - + obj.class.public_instance_methods(false).collect { |name| - [prefix + name, obj.method(name).to_proc, nil, nil] - } - end -{: .code} diff --git a/fa/news/_posts/2005-07-02-securityruby-langorg.md b/fa/news/_posts/2005-07-02-securityruby-langorg.md deleted file mode 100644 index 87ba5e4064..0000000000 --- a/fa/news/_posts/2005-07-02-securityruby-langorg.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: news_post -title: "security@ruby-lang.org" -author: "Shugo Maeda" -lang: en ---- - -Created [security@ruby-lang.org](mailto:security@ruby-lang.org) . If you -have found vulnerabilities in Ruby, please report to this address. -security@ruby-lang.org is a private ML, and anyone can post to it -without subscription. - diff --git a/fa/news/_posts/2005-08-20-rubyconf-2005-registration-tops-100.md b/fa/news/_posts/2005-08-20-rubyconf-2005-registration-tops-100.md deleted file mode 100644 index ca3ea4d0aa..0000000000 --- a/fa/news/_posts/2005-08-20-rubyconf-2005-registration-tops-100.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2005 Registration Tops 100" -author: "Unknown Author" -lang: en ---- - -David A. Black recently reported on ruby-talk that over 100 people have -registered for [RubyConf 2005][1], to be held this coming October 14-16 -in San Diego. If you haven’t yet registered, now is the time! - - - -[1]: http://www.rubyconf.org/ diff --git a/fa/news/_posts/2005-08-31-rubyconf-2005-registration-time-is-running-out.md b/fa/news/_posts/2005-08-31-rubyconf-2005-registration-time-is-running-out.md deleted file mode 100644 index 2353437811..0000000000 --- a/fa/news/_posts/2005-08-31-rubyconf-2005-registration-time-is-running-out.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2005 Registration: Time is running out" -author: "james" -lang: en ---- - -David Black [announced][1] on ruby-talk that there are now 136 -registrants, from 12 countries, for RubyConf 2005. If you still have not -registered, do it now. Full registration (i.e., full meal plans) ends in -two weeks. Non-full may continue past that, but not forever. Go to the -[RubyConf][2] site for complete registration details. - - - -[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/154337 -[2]: http://www.rubyconf.org diff --git a/fa/news/_posts/2005-09-07-registration-for-rubyconf-2005-is-closing-soon.md b/fa/news/_posts/2005-09-07-registration-for-rubyconf-2005-is-closing-soon.md deleted file mode 100644 index c9447e33f8..0000000000 --- a/fa/news/_posts/2005-09-07-registration-for-rubyconf-2005-is-closing-soon.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "Registration for RubyConf 2005 is CLOSING soon." -author: "james" -lang: en ---- - -Registration for RubyConf 2005 is CLOSING soon. The schedule is as -follows: - -* Friday, September 16: last day for full registration (meals included) -* Friday, September 23: last day for events-only registration (no meals) - -So, all you stragglers, get over to the [RubyConf site][1] - - - -[1]: http://www.rubycentral.org/conference/register diff --git a/fa/news/_posts/2005-09-21-ruby-183-released.md b/fa/news/_posts/2005-09-21-ruby-183-released.md deleted file mode 100644 index 23158fd514..0000000000 --- a/fa/news/_posts/2005-09-21-ruby-183-released.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.3 released" -author: "David Black" -lang: en ---- - -Ruby 1.8.3 has been released. The source is [here][1], and the md5sum is -63d6c2bddd6af86664e338b31f3189a6. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.8.3.tar.gz diff --git a/fa/news/_posts/2005-10-03-ruby-vulnerability-in-the-safe-level-settings.md b/fa/news/_posts/2005-10-03-ruby-vulnerability-in-the-safe-level-settings.md deleted file mode 100644 index 71d7cb6791..0000000000 --- a/fa/news/_posts/2005-10-03-ruby-vulnerability-in-the-safe-level-settings.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: news_post -title: "Ruby vulnerability in the safe level settings" -author: "Matz" -lang: en ---- - -The Ruby versions listed below have a vulnerability that allows an -arbitrary code to run bypassing the safe level check. - - - Date published: 2005-10-02 - Versions affected: - Stable releases(1.8.x) - Versions 1.8.2 and earlier (fixed on Version 1.8.3) - Old releases(1.6.x) - Versions 1.6.8 and earlier - Development versions(1.9.0) - Versions 2005-09-01 and earlier (fixed on Version 2005-09-02) - -#### Solution: - -Users of stable releases (1.8.x) and development versions (1.9.0) should -update Ruby to the latest versions listed above. Users of old releases -(1.6.x) should update to the stable releases (1.8.x) or download the -latest snapshot for 1.6.x from the URL below, build, and install. - -[https://cache.ruby-lang.org/pub/ruby/snapshot-1.6.tar.gz][1] - -A patch from ruby-1.6.8.tar.gz is also provided at the following -location: - -[https://cache.ruby-lang.org/pub/ruby/1.6/1.6.8-patch1.gz][2] - -md5sum: 7a97381d61576e68aec94d60bc4cbbab - -A patch from ruby-1.8.2.tar.gz is also provided at the following -location: - -[https://cache.ruby-lang.org/pub/ruby/1.8/1.8.2-patch1.gz][3] - -md5sum: 4f32bae4546421a20a9211253da103d3 - -#### Description: - -The Object Oriented Scripting Language Ruby supports safely executing an untrusted code with two mechanisms: safe level and taint flag on objects. A vulnerability has been found that allows bypassing these mechanisms. By using the vulnerability, arbitrary code can be executed beyond the restrictions specified in each safe level. Therefore, Ruby has to be updated on all systems that use safe level to execute untrusted code. - -#### Reference: - -JVN#62914675 [http://jvn.jp/jp/JVN%2362914675/index.html][4] (in -Japanese) - -#### Acknowledgment: - -We thank Dr. Yutaka Oiwa, Research Center for Information Security, -National Institute of Advanced Industrial Science and Technology, who -found the vulnerability that allows bypassing safe level. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/snapshot-1.6.tar.gz -[2]: https://cache.ruby-lang.org/pub/ruby/1.6/1.6.8-patch1.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/1.8.2-patch1.gz -[4]: http://jvn.jp/jp/JVN%2362914675/index.html diff --git a/fa/news/_posts/2005-10-10-euruko-2005.md b/fa/news/_posts/2005-10-10-euruko-2005.md deleted file mode 100644 index f0dc4f741a..0000000000 --- a/fa/news/_posts/2005-10-10-euruko-2005.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "EuRuKo 2005" -author: "james" -lang: en ---- - -[EuRuKo 2005][1], the European Ruby Conference, will be in Munich, -Germany, October 15 and 16, 2005. If you have any means whatsoever to -attend, go. It is still fairly small, and the intimate feeling of the -conference is something special. You can see the current agenda -[here][2], but last year there were assorted spontaneous talks and -discussions as well and it will likely be the same this year. - - - -[1]: http://www.approximity.com/cgi-bin/europeRuby/tiki.cgi?c=v&p=Euruko05 -[2]: http://www.approximity.com/cgi-bin/europeRuby/tiki.cgi?c=v&p=Euruko05AgendaDetail diff --git a/fa/news/_posts/2005-10-11-new-ruby-web-magazine-goes-live.md b/fa/news/_posts/2005-10-11-new-ruby-web-magazine-goes-live.md deleted file mode 100644 index e6a7a0eada..0000000000 --- a/fa/news/_posts/2005-10-11-new-ruby-web-magazine-goes-live.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: news_post -title: "New Ruby Web Magazine Goes Live" -author: "james" -lang: en ---- - -The newest on-line resource for serious Ruby information has gone live. -[Ruby Code & Style][1], an on-line magazine from [Artima][2], has -just published issue #1. Check out the names on the advisory board. It’s -a Who’s Who of everybody who’s anybody in the Ruby world. The premiere -issue has three outstanding articles: First up, Jack Herrington, author -of Code Generation in Action (Manning, 2002) and Podcasting Hacks -(O’Reilly, 2005), has written [Modular Architectures with Ruby][3] Next, -Austin Ziegler gives us [Creating Printable Documents with Ruby][4] And -there’s a reprint of Ara Howard’s article, [Linux Clustering with Ruby -Queue: Small is Beautiful][5], which first appeared in Linux Journal but -deserves repeat attention A big thanks to the advisory board, and -especial to Bill Venners for starting this whole thing. - - - -[1]: http://www.artima.com/rubycs/index.html -[2]: http://www.artima.com -[3]: http://www.artima.com/rubycs/articles/modular_apis_with_ruby.html -[4]: http://www.artima.com/rubycs/articles/pdf_writer.html -[5]: http://www.artima.com/rubycs/articles/rubyqueue.html diff --git a/fa/news/_posts/2005-12-14-ruby-184-preview-2-released.md b/fa/news/_posts/2005-12-14-ruby-184-preview-2-released.md deleted file mode 100644 index 8c79bc3c82..0000000000 --- a/fa/news/_posts/2005-12-14-ruby-184-preview-2-released.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.4 preview 2 released" -author: "David Black" -lang: en ---- - -Ruby 1.8.4 preview 2 has been released. You can download the source -[here][1]. The md5 sum is: e5a48054fb34f09da17e8e8f04b8c706 - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.4-preview2.tar.gz diff --git a/fa/news/_posts/2005-12-24-ruby-184-released.md b/fa/news/_posts/2005-12-24-ruby-184-released.md deleted file mode 100644 index 1f0de990fb..0000000000 --- a/fa/news/_posts/2005-12-24-ruby-184-released.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.4 released!" -author: "maki" -lang: en ---- - -Ruby 1.8.4 has been released. The source is -[https://cache.ruby-lang.org/pub/ruby/ruby-1.8.4.tar.gz][1], the md5sum is -bd8c2e593e1fa4b01fd98eaf016329bb, and filesize is 4,312,965 bytes. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.8.4.tar.gz diff --git a/fa/news/_posts/2006-02-09-conference-season-is-here.md b/fa/news/_posts/2006-02-09-conference-season-is-here.md deleted file mode 100644 index de973303d2..0000000000 --- a/fa/news/_posts/2006-02-09-conference-season-is-here.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: news_post -title: "Conference season is here" -author: "David Black" -lang: en ---- - -This coming spring and summer are shaping up to be a real “conference -alley” for Rubyists. (And RubyConf 2006 hasn’t even been announced yet!) -Upcoming events of interest include: - -* [Canada on Rails][1], April 13-14 -* [Silicon Valley Ruby Conference][2], April 22-23, co-produced by - [SDForum][3] and [Ruby Central, Inc.][4] -* the first official [International Rails Conference][5], June 22-25, - produced by [Ruby Central, Inc.][4] -* the [Ruby track][6] at [OSCON][7], July 24-28 (call for papers closing - soon!) - -Check specific events for information about submitting talk proposals -and/or registering to attend. - - - -[1]: http://www.canadaonrails.org -[2]: http://www.sdforum.org/rubyconference -[3]: http://www.sdforum.org -[4]: http://rubycentral.org -[5]: http://www.railsconf.org -[6]: http://conferences.oreillynet.com/cs/os2006/create/e_sess/ -[7]: http://conferences.oreillynet.com/os2006/ diff --git a/fa/news/_posts/2006-04-19-ruby-in-google-summer-of-code.md b/fa/news/_posts/2006-04-19-ruby-in-google-summer-of-code.md deleted file mode 100644 index 3cc17e40aa..0000000000 --- a/fa/news/_posts/2006-04-19-ruby-in-google-summer-of-code.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "Ruby in Google Summer of Code" -author: "David Black" -lang: en ---- - -Student Rubyists will be able to participate in the [Google Summer of -Code][1] this summer, with [Ruby Central, Inc.][2] Ruby Central, Inc. as -mentoring organization. See the [Summer of Code page][3] at Ruby -Central. - - - -[1]: http://code.google.com/soc/ -[2]: http://rubycentral.org -[3]: http://www.rubycentral.org/soc2006 diff --git a/fa/news/_posts/2006-06-20-the-future-of-ruby.md b/fa/news/_posts/2006-06-20-the-future-of-ruby.md deleted file mode 100644 index 435384040b..0000000000 --- a/fa/news/_posts/2006-06-20-the-future-of-ruby.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: news_post -title: "The Future of Ruby" -author: "James Edward Gray II" -lang: en ---- - -There has been much discussion recently on the future directions Ruby -will be exploring, with some official plans coming from Matz himself. If -you are interested to know what’s coming, check out the following links: - -* [Changes in Ruby 1.9][1] -* [1.8.5 Delivery Schedule][2] -* [Matz’s Weird and Wild Ideas][3] - -Please remember that Ruby will continue to grow and change. The above -information is only what we think we know at this point in that process. - - - -[1]: http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9 -[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/197229 -[3]: http://www.rubyist.net/~matz/slides/rc2005/mgp00006.html diff --git a/fa/news/_posts/2006-08-29-ruby-1-8-5-released.md b/fa/news/_posts/2006-08-29-ruby-1-8-5-released.md deleted file mode 100644 index 02f0f913db..0000000000 --- a/fa/news/_posts/2006-08-29-ruby-1-8-5-released.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.5 released!" -author: "maki" -lang: en ---- - -Ruby 1.8.5 has been released. - -The source is [https://cache.ruby-lang.org/pub/ruby/ruby-1.8.5.tar.gz][1], -the md5sum is 3fbb02294a8ca33d4684055adba5ed6f, and filesize is -4,438,603 bytes. - -Mauricio Fernandez wrote [a summary of changes][2]. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/ruby-1.8.5.tar.gz -[2]: http://eigenclass.org/hiki.rb?ruby+1.8.5+changelog diff --git a/fa/news/_posts/2006-08-30-server-maintenance-20060830.md b/fa/news/_posts/2006-08-30-server-maintenance-20060830.md deleted file mode 100644 index d958a5b991..0000000000 --- a/fa/news/_posts/2006-08-30-server-maintenance-20060830.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: news_post -title: "Server maintenance" -author: "Shugo Maeda" -lang: en ---- - -Services except mailinglists will be down for a server maintenance on -Wed Aug 30 08:00:00 UTC 2006. The downtime will be a few hours. Sorry -for inconvenience. - diff --git a/fa/news/_posts/2006-09-12-site-launch-at-last.md b/fa/news/_posts/2006-09-12-site-launch-at-last.md deleted file mode 100644 index fdef7e54d5..0000000000 --- a/fa/news/_posts/2006-09-12-site-launch-at-last.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: news_post -title: "Site Launch At Last!" -author: "John Long" -lang: en ---- - -As you can see the much anticipated redesign is now live. It was over a -year ago that [it was suggested][1] that a “visual identity team” be -formed for the purpose of redesigning the Ruby Web site. The redesign -team created over 20 mockups for the the new site, [posted several][2] -for the Ruby community to comment on, and finally decided on the current -design. - -Once the design was chosen it was lovingly converted to CSS and XHTML -and an [administration system][3] was written for it. The content was -then ported over from the old Web site and massaged by an enthusiastic -group of volunteers. - -The Ruby Visual Identity Team is composed of: - -* Ben Giddings -* James Edward Gray II -* Curt Hibbs -* John Long -* Shugo Maeda -* Michel Martens -* Why the Lucky Stiff - -The following people also contributed expertise or content to the new -Web site: - -* David Alan Black -* Alex Combas -* Damphyr -* Eric Davis -* Yukihiro “Matz” Matsumoto -* Matt Todd -* Usaku Nakamura -* A handful of Japanese volunteers (who did the [translation](/ja/)) - -It would be great if we could list the names of all the people who gave -suggestions, reported bugs, or contributed in some way, but the list -would grow very long indeed. This site is truly a product of the Ruby -community and we want to thank everyone who made it happen. Kudos to -each and every one of you! - -If you have comments or questions about the redesign, you are cordially -invited to join the discussion over on the [VIT-Discuss mailing -list][4]. - - - -[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/131284 -[2]: http://redhanded.hobix.com/redesign2005/ -[3]: http://radiantcms.org -[4]: http://rubyforge.org/mailman/listinfo/vit-discuss/ diff --git a/fa/news/_posts/2006-10-18-rubyconf-2006-almost-upon-us.md b/fa/news/_posts/2006-10-18-rubyconf-2006-almost-upon-us.md deleted file mode 100644 index 86048e7ea7..0000000000 --- a/fa/news/_posts/2006-10-18-rubyconf-2006-almost-upon-us.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2006 Almost Upon Us!" -author: "John Long" -lang: en ---- - -With people traveling from all over the world, [by train][1], by car, -and by air, enthusiasm is building for [RubyConf 2006][2]! The -conference is scheduled to begin Friday morning, but if you arrive early -you may be able to join in on a few preliminary activities. - -There are over [16 talks scheduled][3] with topics ranging from -*Leveraging Mac OS X from Ruby* to *YARV on Rails*. There’s even a talk -on *Natural Language Processing in Ruby* and one on the development of -Iron Mongrel (the hot new Web server written in Ruby). Check out the -[talk descriptions][4] for the gory details. - -Also, if you are planning to attend the conference, be sure to put a bio -up on the [RubyConf 2006 Facebook][5]. If you are blogging or posting -photos about the conference, tag your content with “rubyconf” (one word) -and “rubyconf2006” (also one word). This will make it easy for people to -find your stuff on [Technorati][6] and [Flickr][7]. - - - -[1]: http://mokolabs.com/2006/09/08/the-rubyconf-express/ -[2]: http://rubyconf.org/ -[3]: http://www.rubycentral.org/conference/agenda.html -[4]: http://www.rubyconf.org/agenda_detail.html -[5]: http://wiki.rubygarden.org/Ruby/page/show/RubyConf2006Facebook/ -[6]: http://technorati.com/tags/rubyconf2006/ -[7]: http://flickr.com/photos/tags/rubyconf2006/ diff --git a/fa/news/_posts/2006-10-26-rubyconf-2006-recap.md b/fa/news/_posts/2006-10-26-rubyconf-2006-recap.md deleted file mode 100644 index add9c02f6e..0000000000 --- a/fa/news/_posts/2006-10-26-rubyconf-2006-recap.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2006 Recap" -author: "James Edward Gray II" -lang: en ---- - -Last weekend over 300 Rubyists gathered in Denver, CO to discuss many -aspects of our favorite language. This was my first conference and I -must say they are every bit as impressive as you have probably heard. -The presentations are great, but it’s hard to top talking and hacking -with with fellow Rubyists between the events. Everyone should experience -that at least once. - -If there was a theme to this year’s conference, I would have to say it’s -Ruby implementations. Two presentations focused on alternate Ruby -implementations and a third challenged us to get our planned m17n -additions to Ruby just right. Apple dropped in to show their plans for -Ruby integration in Mac OS X and the first Ruby Implementors Summit was -held. Koichi brought us up to speed on YARV, which plans are currently -underway to merge into the core at long last. As a teaser, he even -showed it running Rails. - -And, of course, Matz answered our questions at the roundtable and shared -his vision of the future with his keynote address. - -Matz opened his keynote by comparing the terms currently used to -describe Ruby. After casually dismissing scripting language, programming -language, lightweight language, and dynamic language for various -reasons, Matz suggested we settle on the term “agile language.” - -With Ruby defined, Matz proposed we take a step beyond the old Ruby 2.0 -plans, including the RCRchive and his own previous speeches. Matz -suggested we play a game suggesting enhancements to Ruby and debating -them as we go. Details on the forum we will use for this are still to -come. - -Finally, Matz announced that Ruby 1.9.1 will release on Christmas of -2007. This release will represent our first steps into the future of -Ruby. Ruby 1.8 will remain a stable bastion for those who need to avoid -incompatible changes. - -For more details on the conference, I suggest the following links: - -* [Nick Sieger’s Blog][1] -* [Kevin Tew’s Blog][2] -* [TechKnow Zenze][3] - - - -[1]: http://blog.nicksieger.com/ -[2]: http://blog.tewk.com/ -[3]: http://juixe.com/techknow/ diff --git a/fa/news/_posts/2006-11-03-CVE-2006-5467.md b/fa/news/_posts/2006-11-03-CVE-2006-5467.md deleted file mode 100644 index 854a9c0655..0000000000 --- a/fa/news/_posts/2006-11-03-CVE-2006-5467.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: news_post -title: "DoS Vulnerability in CGI Library (CVE-2006-5467)" -author: "maki" -lang: en ---- - -A vulnerability has been discovered in the CGI library (cgi.rb) that -ships with Ruby which could be used by a malicious user to create a -denial of service attack (DoS). The problem is triggered by sending the -library an HTTP request that uses multipart MIME encoding and has an -invalid boundary specifier that begins with “-” instead of “--”. Once -triggered it will exhaust all available memory resources effectively -creating a DoS condition. - -**Ruby 1.8.5 and all prior versions are vulnerable.** This vulnerability -is open to the public as [CVE-2006-5467][1]. - -### Vulnerable Versions - -1.8 series -: 1\.8.5 and all prior versions - -Development version (1.9 series) -: All versions before 2006-09-23 - -### Solution - -1.8 series -: Please apply the patch after you update to Ruby 1.8.5: - - * [CGI DoS Patch][2] (367 bytes; md5sum: - 9d25f59d1c33a0b215f6c25260dcb536) - - Please note that a package that corrects this weakness may already be - available through your package management software. - -Development version (1.9 series) -: Please update your Ruby to a version after September 23, 2006. - -### References - -* [ \[SEC\] Mongrel Temporary Fix For cgi.rb 99% CPU DoS Attack][3] - - - -[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5467 -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-cgi-dos-1.patch -[3]: http://rubyforge.org/pipermail/mongrel-users/2006-October/001946.html diff --git a/fa/news/_posts/2006-12-04-another-dos-vulnerability-in-cgi-library.md b/fa/news/_posts/2006-12-04-another-dos-vulnerability-in-cgi-library.md deleted file mode 100644 index cb90a09ab6..0000000000 --- a/fa/news/_posts/2006-12-04-another-dos-vulnerability-in-cgi-library.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: news_post -title: "Another DoS Vulnerability in CGI Library" -author: "Shugo Maeda" -lang: en ---- - -Another vulnerability has been discovered in the CGI library (cgi.rb) -that ships with Ruby which could be used by a malicious user to create a -denial of service attack (DoS). - -This vulnerability is open to the public as [JVN#84798830][1]. - -Please note that the previous patch -([<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-cgi-dos-1.patch>][2]) -does not fix this problem. - -#### Impact - -A specific HTTP request for any web application using cgi.rb causes CPU -consumption on the machine on which the web application is running. Many -such requests result in a denial of service. - -#### Vulnerable versions - -1.8 series -: 1\.8.5 and all prior versions - -Development version (1.9 series) -: All versions before 2006-12-04 - -#### Solution - -1.8 series - -: Please upgrade to 1.8.5-p2. - - [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p2.tar.gz>][3] - (4519151 bytes, md5sum: a3517a224716f79b14196adda3e88057) - - Please note that a package that corrects this weakness may already be - available through your package management software. - -Development version (1.9 series) -: Please update your Ruby to a version after 2006-12-04. - - - -[1]: http://jvn.jp/jp/JVN%2384798830/index.html -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-cgi-dos-1.patch -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p2.tar.gz diff --git a/fa/news/_posts/2006-12-20-ruby-on-rails-bootcamp-in-germany.md b/fa/news/_posts/2006-12-20-ruby-on-rails-bootcamp-in-germany.md deleted file mode 100644 index be0f37570f..0000000000 --- a/fa/news/_posts/2006-12-20-ruby-on-rails-bootcamp-in-germany.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "Ruby on Rails Bootcamp in Germany" -author: "James Edward Gray II" -lang: en ---- - -Big Nerd Ranch Europe is offering their Ruby on Rails Bootcamp classes -in Kloster Eberbach, Germany (near Frankfurt) the week of March -26th-30th. For more information you can find the press release at -[http://www.bignerdranch.com/news/2006-12-20.shtml][1]. - - - -[1]: http://www.bignerdranch.com/news/2006-12-20.shtml diff --git a/fa/news/_posts/2006-12-22-cvs-repository-moved-to-svn.md b/fa/news/_posts/2006-12-22-cvs-repository-moved-to-svn.md deleted file mode 100644 index d60a130f00..0000000000 --- a/fa/news/_posts/2006-12-22-cvs-repository-moved-to-svn.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: news_post -title: "CVS Repository moved to SVN" -author: "Shugo Maeda" -lang: en ---- - -We have moved the source code repository to -[https://svn.ruby-lang.org/repos/ruby/][1]. You can checkout it using the -svn command, or you can also browse it by [ViewVC][2]. - -The new machine for svn.ruby-lang.org is provided by [Sun -Microsystems][3]. We are using [Solaris 10][4] on the new machine, and -it works pretty well. - - - -[1]: https://svn.ruby-lang.org/repos/ruby/ -[2]: https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?root=ruby -[3]: http://www.sun.com -[4]: http://www.sun.com/software/solaris/ diff --git a/fa/news/_posts/2006-12-27-ruby-on-rails-bootcamp-in-georgia.md b/fa/news/_posts/2006-12-27-ruby-on-rails-bootcamp-in-georgia.md deleted file mode 100644 index a75c41295c..0000000000 --- a/fa/news/_posts/2006-12-27-ruby-on-rails-bootcamp-in-georgia.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "Ruby on Rails Bootcamp in Georgia" -author: "James Edward Gray II" -lang: en ---- - -Big Nerd Ranch, Inc. is offering their Ruby on Rails Bootcamp classes in -a retreat setting outside Atlanta, GA the week of February 12th-16th. -For more information you can find the press release at -[http://bignerdranch.com/news/2006-10-11.shtml][1]. - - - -[1]: http://bignerdranch.com/news/2006-10-11.shtml diff --git a/fa/news/_posts/2007-01-24-mountainwest-rubyconf-2007-registration-now-open.md b/fa/news/_posts/2007-01-24-mountainwest-rubyconf-2007-registration-now-open.md deleted file mode 100644 index ed20e53e11..0000000000 --- a/fa/news/_posts/2007-01-24-mountainwest-rubyconf-2007-registration-now-open.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "MountainWest RubyConf 2007 Registration Now Open" -author: "james" -lang: en ---- - -Registration for the upcoming [MountainWest RubyConf][1] is open. - -This regional Ruby conference will be in Salt Lake City, Utah, USA, on -March 16 and 17, 2007. - -$50 gets you a seat and a T-shirt. More details are forthcoming, but, -trust me, this will be good. - - - -[1]: http://mtnwestruby.org diff --git a/fa/news/_posts/2007-01-26-mountainwest-speaker-list-posted.md b/fa/news/_posts/2007-01-26-mountainwest-speaker-list-posted.md deleted file mode 100644 index 6841263184..0000000000 --- a/fa/news/_posts/2007-01-26-mountainwest-speaker-list-posted.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: news_post -title: "MountainWest Speaker List Posted" -author: "james" -lang: en ---- - -The list of speakers and topics for MountainWest RubyConf has [gone -up.][1] - -There’s also a nice [social site][2] for the conference as well. - - - -[1]: http://mtnwestruby.org/speakers -[2]: http://mtnwestruby.conferencemeetup.com/people diff --git a/fa/news/_posts/2007-02-21-ip-address-change.md b/fa/news/_posts/2007-02-21-ip-address-change.md deleted file mode 100644 index 3a8312104a..0000000000 --- a/fa/news/_posts/2007-02-21-ip-address-change.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "IP Address Change" -author: "Shugo Maeda" -lang: en ---- - -The IP address of the server will be changed on Thu Feb 22 03:00:00 UTC -2007, and WWW/FTP/ML and Anonymous CVS services will be stopped in a few -minutes. - -Sorry for inconvenience. - diff --git a/fa/news/_posts/2007-03-01-cvs-services-will-be-permanently-unavailable.md b/fa/news/_posts/2007-03-01-cvs-services-will-be-permanently-unavailable.md deleted file mode 100644 index 1fe7cd3485..0000000000 --- a/fa/news/_posts/2007-03-01-cvs-services-will-be-permanently-unavailable.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "CVS services will be permanently unavailable" -author: "Shugo Maeda" -lang: en ---- - -CVS services (including CVSup and CVSweb) will be permanently -unavailable on Fri Mar 16 03:00 UTC 2007. The source code repositry has -been [moved to SVN](/en/news/2006/12/22/cvs-repository-moved-to-svn/). - -If you require the CVS repositry, please get it by CVSup till that day. - diff --git a/fa/news/_posts/2007-03-12-ruby-1-8-6-released.md b/fa/news/_posts/2007-03-12-ruby-1-8-6-released.md deleted file mode 100644 index 6c7c20f0f8..0000000000 --- a/fa/news/_posts/2007-03-12-ruby-1-8-6-released.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.6 released!" -author: "Shugo Maeda" -lang: en ---- - -Ruby 1.8.6 has been released (see the [announcement on Ruby-Talk][1]). -The source is available in three formats: - -* [ruby-1.8.6.tar.bz2][2] (3.8 MB) - - md5: e558a0e00ae318d43bf6ff9af452bad2 - sha256: 0fc6ad0b31d8ec3997db2a56a2ac1c235283a3607abb876300fc711b3f8e3dd7 - -* [ruby-1.8.6.tar.gz][3] (4.4 MB) - - md5: 23d2494aa94e7ae1ecbbb8c5e1507683 - sha256: 3ef37fb961d04471a1aef2c8079d6fab09932e3281d79859d5cd5d426bde0868 - -* [ruby-1.8.6.zip][4] (5.3 MB) - - md5: 5f4b82cec8f437634e05a3ce9bb3ca67 - sha256: c4b011d66b3f7e3bddbdf61a7404120d5ac80c6b742ad08e7e75b6d14ee56e76 - -For a brief list of user visible changes and a full list of all changes -since 1.8.5, see the bundled files [NEWS][5] and [ChangeLog][6]. - -After this announcement, we will start the development for 1.8.7 as well -as maintaining the “ruby\_1\_8\_6” branch on which only critical bugs -and security vulnerabilities found in the 1.8.6 release are fixed, and -patch releases will follow on appropriate and timely occasions. Please -check them out after upgrading Ruby to 1.8.6. - - - -[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43267 -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz -[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.zip -[5]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_6/NEWS -[6]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_6/ChangeLog diff --git a/fa/news/_posts/2007-07-27-proposals-now-being-accepted-for-rubyconf-2007-presentations.md b/fa/news/_posts/2007-07-27-proposals-now-being-accepted-for-rubyconf-2007-presentations.md deleted file mode 100644 index 1efe4b80eb..0000000000 --- a/fa/news/_posts/2007-07-27-proposals-now-being-accepted-for-rubyconf-2007-presentations.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "Proposals now being accepted for RubyConf 2007 presentations" -author: "james" -lang: en ---- - -David A. Black announced on ruby-talk that presentation proposals for -[RubyConf 2007][1] are now being accepted. - -The form is at [http://proposals.rubycentral.org][2] . You need to sign -up for a password, even if you had one last year. (It just involves -connecting to a confirmation link.) - -The deadline for proposals is August 20, 5:00 PM EDT. - - - -[1]: http://rubyconf.org/ -[2]: http://proposals.rubycentral.org diff --git a/fa/news/_posts/2007-09-01-ruby-logo-contest.md b/fa/news/_posts/2007-09-01-ruby-logo-contest.md deleted file mode 100644 index a69aa87329..0000000000 --- a/fa/news/_posts/2007-09-01-ruby-logo-contest.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Ruby Logo Contest" -author: "Shugo Maeda" -lang: en ---- - -The Ruby Association open [the Ruby Logo Contest][1]. Please submit your -logo! - - - -[1]: http://www.ruby-assn.org/logo-contest.html.en diff --git a/fa/news/_posts/2007-09-06-rubyconf-2007-registration-now-open.md b/fa/news/_posts/2007-09-06-rubyconf-2007-registration-now-open.md deleted file mode 100644 index 9c23f48901..0000000000 --- a/fa/news/_posts/2007-09-06-rubyconf-2007-registration-now-open.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2007 Registration Now Open" -author: "james" -lang: en ---- - -[Registration is now open][1] for RubyConf 2007. - -You can see the [conference agenda][2]. - - - -[1]: http://www.regonline.com/rubyconf2007 -[2]: http://www.rubyconf.org/agenda.html diff --git a/fa/news/_posts/2007-09-18-euruko-2007-the-european-ruby-conference.md b/fa/news/_posts/2007-09-18-euruko-2007-the-european-ruby-conference.md deleted file mode 100644 index bbdeef7a3c..0000000000 --- a/fa/news/_posts/2007-09-18-euruko-2007-the-european-ruby-conference.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "Euruko 2007: The European Ruby Conference" -author: "james" -lang: en ---- - -Planning is underway for [Euruko 2007][1] - -Euruko 2007 will be located in Vienna, Austria, on Saturday & Sunday -10th and 11th November, 2007. - -There is an informal [registration page][2] and a general information -[site][1] . - - - -[1]: http://www.approximity.com/cgi-bin/europeRuby/tiki.cgi?c=v&p=Euruko07 -[2]: http://www.approximity.com/cgi-bin/europeRuby/tiki.cgi?c=v&p=Registration2007 diff --git a/fa/news/_posts/2007-10-04-net-https-vulnerability.md b/fa/news/_posts/2007-10-04-net-https-vulnerability.md deleted file mode 100644 index e6a52bd1c7..0000000000 --- a/fa/news/_posts/2007-10-04-net-https-vulnerability.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: news_post -title: "Net::HTTPS Vulnerability" -author: "Shugo Maeda" -lang: en ---- - -A vulnerability on the net/https library was reported. - -Detailed information should be found at the original advisory: -[<URL:http://www.isecpartners.com/advisories/2007-006-rubyssl.txt>][1] - -#### Impact - -The vulnerability exists in the connect method within http.rb file which -fails to call post\_connection\_check after the SSL connection has been -negotiated. Since the server certificate\'s CN is not validated against -the requested DNS name, the attacker can impersonate the target server -in a SSL connection. The integrity and confidentiality benefits of SSL -are thereby eliminated. - -#### Vulnerable versions - -1.8 series -: * 1\.8.4 and all prior versions - * 1\.8.5-p113 and all prior versions - * 1\.8.6-p110 and all prior versions - -Development version (1.9 series) -: All versions before 2006-09-23 - -#### Solution - -1.8 series - -: Please upgrade to 1.8.6-p111 or 1.8.5-p114. - - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.gz>][2] - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p114.tar.gz>][3] - - Then you should use Net::HTTP#enable\_post\_connection\_check= to - enable post\_connection\_check. - - http = Net::HTTP.new(host, 443) - http.use_ssl = true - http.enable_post_connection_check = true - http.verify_mode = OpenSSL::SSL::VERIFY_PEER - store = OpenSSL::X509::Store.new - store.set_default_paths - http.cert_store = store - http.start { - response = http.get("/") - } - - Please note that a package that corrects this weakness may already be - available through your package management software. - -Development version (1.9 series) -: Please update your Ruby to a version after 2006-09-23. The default - value of Net::HTTP#enable\_post\_connection\_check is true on Ruby - 1.9. - -#### Changes - -* 2007-10-04 16:30 +09:00 added description for - enable\_post\_connection\_check to \`Solution\'. - - - -[1]: http://www.isecpartners.com/advisories/2007-006-rubyssl.txt -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p114.tar.gz diff --git a/fa/news/_posts/2007-12-25-ruby-1-9-0-released.md b/fa/news/_posts/2007-12-25-ruby-1-9-0-released.md deleted file mode 100644 index 63bcccdd44..0000000000 --- a/fa/news/_posts/2007-12-25-ruby-1-9-0-released.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.0 Released" -author: "james" -lang: en ---- - -Matz announced the release of Ruby 1.9.0, a development release. - -You can fetch it from: - -[https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2][1] - - 407cc7d0032e19eb12216c0ebc7f17b3 - -[https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.gz][2] - - b20cce98b284f7f75939c09d5c8e846d - -[https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.zip][3] - - 78b2a5f9a81c5f6775002c4fb24d2d75 - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2 -[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.zip diff --git a/fa/news/_posts/2008-01-09-ruby-logo-available.md b/fa/news/_posts/2008-01-09-ruby-logo-available.md deleted file mode 100644 index 962a3a0016..0000000000 --- a/fa/news/_posts/2008-01-09-ruby-logo-available.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: news_post -title: "Ruby logo available" -author: "Shugo Maeda" -lang: en ---- - -The official Ruby logo is [available to download][1] under Creative -Commons Attribution-Share Alike license now. Available formats are -Illustrator/SVG/PDF/PNG. - - - -[1]: http://www.ruby-assn.org/index.html.en diff --git a/fa/news/_posts/2008-01-24-ruby-fools-conference.md b/fa/news/_posts/2008-01-24-ruby-fools-conference.md deleted file mode 100644 index c31bef38aa..0000000000 --- a/fa/news/_posts/2008-01-24-ruby-fools-conference.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "Ruby Fool's Conference" -author: "James Edward Gray II" -lang: en ---- - -The first [Ruby Fools conference][1] will be held on April Fools’ Day in -Copenhagen, Denmark. The conference organizers intend to cater a bit to -both expert and novice developers, so any Rubyists in the area may want -to consider attending. - - - -[1]: http://jaoo.dk/ruby-cph/conference/ diff --git a/fa/news/_posts/2008-02-04-mountainwest-rubyconf-2008.md b/fa/news/_posts/2008-02-04-mountainwest-rubyconf-2008.md deleted file mode 100644 index 52e6af6cd3..0000000000 --- a/fa/news/_posts/2008-02-04-mountainwest-rubyconf-2008.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "MountainWest RubyConf 2008" -author: "James Edward Gray II" -lang: en ---- - -Registration for [MountainWest RubyConf 2008][1] is now open. This year -features an expanded [schedule and list of speakers][2]. - -The conference will be in Salt Lake City, Utah, USA, on March 28 and 29, -2008. [Registration costs just $100][3] and includes lunch both days, -t-shirt, and more. - - - -[1]: http://mtnwestrubyconf.org -[2]: http://mtnwestrubyconf.org/2008/speakers -[3]: http://www.acteva.com/go/mtnwestruby diff --git a/fa/news/_posts/2008-02-25-european-ruby-conference-2008-euruko.md b/fa/news/_posts/2008-02-25-european-ruby-conference-2008-euruko.md deleted file mode 100644 index 20f1538a4f..0000000000 --- a/fa/news/_posts/2008-02-25-european-ruby-conference-2008-euruko.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "European Ruby Conference 2008 (EURUKO)" -author: "James Edward Gray II" -lang: en ---- - -EURUKO is an annual conference about the Ruby programming language with -an informal atmosphere and lots of opportunities to listen, to talk, to -hack and to have fun. This year it takes place in [Prague, Czech -Republic, on March 29th to 30th.][1] - - - -[1]: http://www.euruko2008.org/ diff --git a/fa/news/_posts/2008-02-27-scotland-on-rails-2008.md b/fa/news/_posts/2008-02-27-scotland-on-rails-2008.md deleted file mode 100644 index 8cbe20f896..0000000000 --- a/fa/news/_posts/2008-02-27-scotland-on-rails-2008.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: news_post -title: "Scotland on Rails 2008" -author: "James Edward Gray II" -lang: en ---- - -Scotland on Rails is pleased to announce that Conference2008 is open for -registration. There is a limit to the number of registrations we’re able -to accept so we’d advise you to get in quickly :-) - -You can register at [http://scotlandonrails.com/register][1] The -conference will take place on April 4th and 5th in Edinburgh (in a -castle!), Scotland and will feature speakers from the UK, Europe, US and -New Zealand including keynotes from Michael Koziarski and David Black. A -list of sessions and speakers is available at -[http://scotlandonrails.com/talks][2]. - -We’re also planning a charity event on Thursday 3rd. This will feature -an beginner level intro to Ruby and Rails in the morning, and sessions -from several of the speakers from the main conference (including Jim -Weirich, Bruce Williams and Giles Bowkett) in the afternoon. All the -money raised from that days event will be going to CHAS – The Childrens -Hospice Association. - - - -[1]: http://scotlandonrails.com/register -[2]: http://scotlandonrails.com/talks diff --git a/fa/news/_posts/2008-03-03-webrick-file-access-vulnerability.md b/fa/news/_posts/2008-03-03-webrick-file-access-vulnerability.md deleted file mode 100644 index 243617d1df..0000000000 --- a/fa/news/_posts/2008-03-03-webrick-file-access-vulnerability.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: news_post -title: "File access vulnerability of WEBrick" -author: "Shugo Maeda" -lang: en ---- - -WEBrick, a standard library of Ruby to implement HTTP servers, has file -access vulnerability. - -## Impact - -The following programs are vulnerable. - -1. Programs that publish files using `WEBrick::HTTPServer.new` with the - `:DocumentRoot` option -2. Programs that publish files using - `WEBrick::HTTPServlet::FileHandler` - -Affected systems are: - -1. Systems that accept backslash (\\) as a path separator, such as - Windows. -2. Systems that use case insensitive filesystems such as NTFS on - Windows, HFS on Mac OS X. - -This vulnerability has the following impacts. - -1. Attacker can access private files by sending a url with url encoded - backslash (\\). This exploit works only on systems that accept - backslash as a path separator. - - Example: - - http://[server]:[port]/..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c/boot.ini - -2. Attacker can access files that matches to the patterns specified by - the `:NondisclosureName` option (the default value is `[".ht*", - "*~"]`). This exploit works only on systems that use case - insensitive filesystems. - -## Vulnerable versions - -1.8 series -: * 1\.8.4 and all prior versions - * 1\.8.5-p114 and all prior versions - * 1\.8.6-p113 and all prior versions - -1.9 series -: * 1\.9.0-1 and all prior versions - -## Solution - -1.8 series -: Please upgrade to 1.8.5-p115 or 1.8.6-p114. - - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p115.tar.gz>][1] - (md5sum: 20ca6cc87eb077296806412feaac0356) - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.gz>][2] - (md5sum: 500a9f11613d6c8ab6dcf12bec1b3ed3) - -1.9 series -: Please apply the following patch to - lib/webrick/httpservlet/filehandler.rb. - - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-1-webrick-vulnerability-fix.diff>][3] - (md5sum: b7b58aed40fa1609a67f53cfd3a13257) - -Please note that a package that corrects this weakness may already be -available through your package management software. - -## Credit - -Credit to Digital Security Research Group -([<URL:http://dsec.ru/>][4]) for disclosing the problem to Ruby -Security Team. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p115.tar.gz -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-1-webrick-vulnerability-fix.diff -[4]: http://dsec.ru/ diff --git a/fa/news/_posts/2008-04-11-tulsa-ruby-workshop.md b/fa/news/_posts/2008-04-11-tulsa-ruby-workshop.md deleted file mode 100644 index b520defbab..0000000000 --- a/fa/news/_posts/2008-04-11-tulsa-ruby-workshop.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: news_post -title: "Tulsa Ruby Workshop" -author: "James Edward Gray II" -lang: en ---- - -I wanted to get the word out about the upcoming Tulsa Ruby Workshop. -This will take place on April 26th, from 10 AM to 4 PM in Tulsa, OK. - -The workshop has a great line up of intro Ruby and Rail content. I’m -honored to have been asked to give two of the talks that day: an -introduction to Ruby talk as well as a Ruby from Java talk. There will -also be a beginning Rails talk from Tulsa.rb’s commander and chief, an -Engine Yard employee on hand sharing deployment advice, as well as other -language specific migration talks. - -That’s pretty much a full day of Ruby learning and the best news is that -attendance is free. They are even throwing in some food. - -If you’re going to be in the area, definitely come join us! - -You can find directions, a schedule, and other details about the -workshop at: - -[http://tulsarb.org/wiki/Tulsa\_Ruby\_Workshop][1] - -Hope to see you there. - - - -[1]: http://tulsarb.org/wiki/Tulsa_Ruby_Workshop diff --git a/fa/news/_posts/2008-05-22-server-maintenance-20080523.md b/fa/news/_posts/2008-05-22-server-maintenance-20080523.md deleted file mode 100644 index e56d2c21e6..0000000000 --- a/fa/news/_posts/2008-05-22-server-maintenance-20080523.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: news_post -title: "Server maintenance" -author: "Shugo Maeda" -lang: en ---- - -Services on ruby-lang.org except SVN will be down for server maintenance -on Fri May 23 02:00:00 UTC 2008. Sorry for inconvenience. - diff --git a/fa/news/_posts/2008-05-31-ruby-1-8-7-has-been-released.md b/fa/news/_posts/2008-05-31-ruby-1-8-7-has-been-released.md deleted file mode 100644 index de4d8900ce..0000000000 --- a/fa/news/_posts/2008-05-31-ruby-1-8-7-has-been-released.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7 has been released" -author: "james" -lang: en ---- - -Akinori MUSHA announced today that Ruby 1.8.7 has been released. - -The new version of Ruby includes many bug fixes, lots of feature -enhancements backported from 1.9 and some performance improvements since -1.8.6 while maintaining stability and backward compatibility with the -previous release to a high degree. See the bundled documentation for -details about compatibility issues. - -The source code package is available in three formats at the following -locations: - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.bz2][1] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz][2] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.zip][3] - -Checksums: - -* MD5 (ruby-1.8.7.tar.bz2) = f17f14c8d55e731b3ce1bc35c42f0a6c -* SHA256 (ruby-1.8.7.tar.bz2) = - 65f2a862ba5e88bac7a78cff15bcb88d7534e741b51a1ffb79a0136c7041359a -* SIZE (ruby-1.8.7.tar.bz2) = 4100024 -^ - -* MD5 (ruby-1.8.7.tar.gz) = de906850f9a012c12ffc6e9f56fb1b66 -* SHA256 (ruby-1.8.7.tar.gz) = - 600dccf13bca3e4179fa6ff554220ce4ba67ffc72bce1ac3bf74c2599c03a0ca -* SIZE (ruby-1.8.7.tar.gz) = 4799732 -^ - -* MD5 (ruby-1.8.7.zip) = 14d3eb37b32e4a26966bdd80f361ccd2 -* SHA256 (ruby-1.8.7.zip) = - 805987ad167d8f9cac90e4b9342686e96a7708664111be27a3c6d680ce21d6c1 -* SIZE (ruby-1.8.7.zip) = 5851408 - -For a brief list of user visible changes and a full list of all changes, -see the bundled files named NEWS and ChangeLog, which are also available -at the following locations: - -* https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_7/NEWS -* https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_7/ChangeLog - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.bz2 -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.zip diff --git a/fa/news/_posts/2008-06-16-rubynation-2008.md b/fa/news/_posts/2008-06-16-rubynation-2008.md deleted file mode 100644 index eb7854cf46..0000000000 --- a/fa/news/_posts/2008-06-16-rubynation-2008.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "RubyNation 2008" -author: "James Edward Gray II" -lang: en ---- - -RubyNation is an annual Ruby conference serving the Virginia, West -Virginia, Maryland, and Washington, DC areas. This year\'s RubyNation -will happen on August 1&2, 2008 in Herndon, VA. Please visit the -[RubyNation site][1] for more details. - - - -[1]: http://rubynation.org/ diff --git a/fa/news/_posts/2008-06-20-arbitrary-code-execution-vulnerabilities.md b/fa/news/_posts/2008-06-20-arbitrary-code-execution-vulnerabilities.md deleted file mode 100644 index 1c8348f615..0000000000 --- a/fa/news/_posts/2008-06-20-arbitrary-code-execution-vulnerabilities.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: news_post -title: "Arbitrary code execution vulnerabilities" -author: "Shugo Maeda" -lang: en ---- - -Multiple vulnerabilities in Ruby may lead to a denial of service (DoS) -condition or allow execution of arbitrary code. - -## Impact - -With the following vulnerabilities, an attacker can lead to denial of -service condition or execute arbitrary code. - -* [CVE-2008-2662][1] -* [CVE-2008-2663][2] -* [CVE-2008-2725][3] -* [CVE-2008-2726][4] -* [CVE-2008-2664][5] - -## Vulnerable versions - -1.8 series -: * 1\.8.4 and all prior versions - * 1\.8.5-p230 and all prior versions - * 1\.8.6-p229 and all prior versions - * 1\.8.7-p21 and all prior versions - -1.9 series -: * 1\.9.0-1 and all prior versions - -## Solution - -1.8 series -: Please upgrade to 1.8.5-p231, or 1.8.6-p230, or 1.8.7-p22. - - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p231.tar.gz>][6] - (md5sum: e900cf225d55414bffe878f00a85807c) - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p230.tar.gz>][7] - (md5sum: 5e8247e39be2dc3c1a755579c340857f) - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.gz>][8] - (md5sum: fc3ede83a98f48d8cb6de2145f680ef2) - -1.9 series -: Please upgrade to 1.9.0-2. - - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-2.tar.gz>][9] - (md5sum: 2a848b81ed1d6393b88eec8aa6173b75) - -These versions also fix the vulnerability of WEBrick -([CVE-2008-1891][10]). - -Please note that a package that corrects this weakness may already be -available through your package management software. - -## Credit - -Credit to Drew Yao of Apple Product Security for disclosing the problem -to Ruby Security Team. - -## Changes - -* 2008-06-21 00:29 +09:00 removed wrong CVE IDs (CVE-2008-2727, - CVE-2008-2728). - - - -[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2662 -[2]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2663 -[3]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2725 -[4]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2726 -[5]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2664 -[6]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p231.tar.gz -[7]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p230.tar.gz -[8]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.gz -[9]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-2.tar.gz -[10]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-1891 diff --git a/fa/news/_posts/2008-08-04-rubyconf-2008-proposals-now-being-accepted.md b/fa/news/_posts/2008-08-04-rubyconf-2008-proposals-now-being-accepted.md deleted file mode 100644 index 306c9a3b8f..0000000000 --- a/fa/news/_posts/2008-08-04-rubyconf-2008-proposals-now-being-accepted.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2008 Proposals Now Being Accepted" -author: "james" -lang: en ---- - -[RubyConf 2008][1] will be held in Orlando, Florida, USA, from November -6 to November 8. - -[Proposals for presentations][2] are now begin accepted. All proposals -must be received by August 21. - - - -[1]: http://www.rubyconf.org -[2]: http://www.rubyconf.org/proposals/new diff --git a/fa/news/_posts/2008-08-08-multiple-vulnerabilities-in-ruby.md b/fa/news/_posts/2008-08-08-multiple-vulnerabilities-in-ruby.md deleted file mode 100644 index 6583d4cf7e..0000000000 --- a/fa/news/_posts/2008-08-08-multiple-vulnerabilities-in-ruby.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -layout: news_post -title: "Multiple vulnerabilities in Ruby" -author: "Shugo Maeda" -lang: en ---- - -Multiple vulnerabilities have been discovered in Ruby. It\'s recommended -that you upgrade to the latest versions. - -## Details - -The following vulnerabilities have been discovered. - -### Several vulnerabilities in safe level - -Several vulnerabilities in safe level have been discovered. - -* untrace\_var is permitted at safe level 4. - - trace_var(:$VAR) {|val| puts "$VAR = #{val}" } - - Thread.new do - $SAFE = 4 - eval %q{ - proc = untrace_var :$VAR - proc.first.call("aaa") - } - end.join - -* $PROGRAM\_NAME may be modified at safe level 4. - - Thread.new do - $SAFE = 4 - eval %q{$PROGRAM_NAME.replace "Hello, World!"} - end.join - - $PROGRAM_NAME #=> "Hello, World!" - -* Insecure methods may be called at safe level 1-3. - - class Hello - def world - Thread.new do - $SAFE = 4 - msg = "Hello, World!" - def msg.size - self.replace self*10 # replace string - 1 # return wrong size - end - msg - end.value - end - end - - $SAFE = 1 # or 2, or 3 - s = Hello.new.world - if s.kind_of?(String) - puts s if s.size < 20 # print string which size is less than 20 - end - -* Syslog operations are permitted at safe level 4. - - require "syslog" - - Syslog.open - - Thread.new do - $SAFE = 4 - eval %q{ - Syslog.log(Syslog::LOG_WARNING, "Hello, World!") - Syslog.mask = Syslog::LOG_UPTO(Syslog::LOG_EMERG) - Syslog.info("masked") - Syslog.close - } - end.join - -These vulnerabilities were reported by Keita Yamaguchi. - -### DoS vulnerability in WEBrick - -WEBrick::HTTP::DefaultFileHandler is faulty of exponential time taking -requests due to a backtracking regular expression in -WEBrick::HTTPUtils.split\_header\_value. - -Exploitable server: - - require 'webrick' - WEBrick::HTTPServer.new(:Port => 2000, :DocumentRoot => "/etc").start - -Attack: - - require 'net/http' - res = Net::HTTP.start("localhost", 2000) { |http| - req = Net::HTTP::Get.new("/passwd") - req['If-None-Match'] = %q{meh=""} + %q{foo="bar" } * 100 - http.request(req) - } - p res - -The request likely won\'t finish in this universe. - -This vulnerability was reported by Christian Neukirchen. - -### Lack of taintness check in dl -{: #label-3} - -dl doesn\'t check taintness, so it could allow attackers to call -dangerous functions. - - require 'dl' - $SAFE = 1 - h = DL.dlopen(nil) - sys = h.sym('system', 'IP') - uname = 'uname -rs'.taint - sys[uname] - -This vulnerability was reported by sheepman. - -### DNS spoofing vulnerability in resolv.rb - -resolv.rb allow remote attackers to spoof DNS answers. This risk can be -reduced by randomness of DNS transaction IDs and source ports, so -resolv.rb is fixed to randomize them. - -* see also: [CVE-2008-1447][1] - -This vulnerability was reported by Tanaka Akira. - -## Vulnerable versions - -1.8 series -: * 1\.8.5 and all prior versions - * 1\.8.6-p286 and all prior versions - * 1\.8.7-p71 and all prior versions - -1.9 series -: * r18423 and all prior revisions - -## Solution - -1.8 series -: Please upgrade to 1.8.6-p287, or 1.8.7-p72. - - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz>][2] - * [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz>][3] - -1.9 series - -: Please check out the latest version using Subversion. - - $ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby - -Please note that a package that corrects this weakness may already be -available through your package management software. - -## Credit - -Credit to Keita Yamaguchi, Christian Neukirchen, sheepman, and Tanaka -Akira for disclosing these problems to Ruby Security Team. - -## Changes - -* 2008-08-08 12:21 +09:00 fixed the revision number of ruby 1.9. -* 2008-08-11 11:23 +09:00 fixed the patchlevel of ruby 1.8. see [the - release announcement of Ruby 1.8.7-p72 and 1.8.6-p287][4] - - - -[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-1447 -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz -[4]: {{ site.url }}/en/news/2008/08/11/ruby-1-8-7-p72-and-1-8-6-p287-released/ diff --git a/fa/news/_posts/2008-08-11-ruby-1-8-7-p72-and-1-8-6-p287-released.md b/fa/news/_posts/2008-08-11-ruby-1-8-7-p72-and-1-8-6-p287-released.md deleted file mode 100644 index b9a4262574..0000000000 --- a/fa/news/_posts/2008-08-11-ruby-1-8-7-p72-and-1-8-6-p287-released.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7-p72 and 1.8.6-p287 released" -author: "Shugo Maeda" -lang: en ---- - -Ruby 1.8.7-p72 and 1.8.6-p287 have been released. The last releases were -incomplete, and the new releases include fixes of [the previously -announced vulnerability of dl][1]. - -The released source archives are available at: - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz>][2] -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.bz2>][3] -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.zip>][4] -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz>][5] -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.bz2>][6] -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.zip>][7] - -Checksums: - - MD5(ruby-1.8.6-p287.tar.gz)= f6cd51001534ced5375339707a757556 - SHA256(ruby-1.8.6-p287.tar.gz)= 6463d1932c34ff72b79174ac7d2c28940d29d147928250928a00a0dbee43db57 - SIZE(ruby-1.8.6-p287.tar.gz)= 4590393 - - MD5(ruby-1.8.6-p287.tar.bz2)= 80b5f3db12531d36e6c81fac6d05dda9 - SHA256(ruby-1.8.6-p287.tar.bz2)= ac15a1cb78c50ec9cc7e831616a143586bdd566bc865c6b769a0c47b3b3936ce - SIZE(ruby-1.8.6-p287.tar.bz2)= 3956902 - - MD5(ruby-1.8.6-p287.zip)= e555d51f5b387fdd52ae53d9bafa13f5 - SHA256(ruby-1.8.6-p287.zip)= 844c66c015565839531a34b83e0526cd4fa2a71cc0f5cc8ddb0d4c158403543a - SIZE(ruby-1.8.6-p287.zip)= 5606238 - - MD5(ruby-1.8.7-p72.tar.gz)= 5e5b7189674b3a7f69401284f6a7a36d - SHA256(ruby-1.8.7-p72.tar.gz)= e15ca005076f5d6f91fc856fdfbd071698a4cadac3c6e25855899dba1f6fc5ef - SIZE(ruby-1.8.7-p72.tar.gz)= 4805594 - - MD5(ruby-1.8.7-p72.tar.bz2)= 0b215c46b89b28d7ab8d56d96e72d5b9 - SHA256(ruby-1.8.7-p72.tar.bz2)= a8f8a28e286dd76747d8e97ea5cfe7a315eb896906ab8c8606d687d9f6f6146e - SIZE(ruby-1.8.7-p72.tar.bz2)= 4127450 - - MD5(ruby-1.8.7-p72.zip)= b44fe5a12d4bf138ba0d3660e13a8216 - SHA256(ruby-1.8.7-p72.zip)= 77e67be4aa8c3e041e1d20d24e5fcf2e33ad9bccb3da3332b6c0a5b648334903 - SIZE(ruby-1.8.7-p72.zip)= 5855902 - -For a full list of all changes, see the bundled files named ChangeLog, -which are also available at the following locations: - -* [<URL:https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_6\_287/ChangeLog>][8] -* [<URL:https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_7\_72/ChangeLog>][9] - - - -[1]: {{ site.url }}/en/news/2008/08/08/multiple-vulnerabilities-in-ruby/#label-3 -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.zip -[5]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.bz2 -[7]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.zip -[8]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_6_287/ChangeLog -[9]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_72/ChangeLog diff --git a/fa/news/_posts/2008-08-23-dos-vulnerability-in-rexml.md b/fa/news/_posts/2008-08-23-dos-vulnerability-in-rexml.md deleted file mode 100644 index d9197abc06..0000000000 --- a/fa/news/_posts/2008-08-23-dos-vulnerability-in-rexml.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: news_post -title: "DoS vulnerability in REXML" -author: "Shugo Maeda" -lang: en ---- - -There is a DoS vulnerability in the REXML library included in the Ruby -Standard Library. A so-called \"XML entity explosion\" attack technique -can be used for remotely bringing down (disabling) any application which -parses user-provided XML using REXML. - -Most Rails applications will be vulnerable because Rails parses -user-provided XML using REXML by default. - -## Impact - -An attacker can cause a denial of service by causing REXML to parse a -document containing recursively nested entities such as: - -{% highlight xml %} -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE member [ - <!ENTITY a "&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;"> - <!ENTITY b "&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;"> - <!ENTITY c "&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;"> - <!ENTITY d "&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;"> - <!ENTITY e "&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;"> - <!ENTITY f "&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;"> - <!ENTITY g "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"> -]> -<member> -&a; -</member> -{% endhighlight %} - -## Vulnerable versions - -### 1.8 series - -* 1\.8.6-p287 and all prior versions -* 1\.8.7-p72 and all prior versions - -### 1.9 series - -* all versions - -## Solution - -Please download the following monkey patch to fix this problem. - -* [<URL:https://www.ruby-lang.org/security/20080823rexml/rexml-expansion-fix2.rb>][1] - -Then fix your application to load rexml-expansion-fix2.rb before using -REXML. - -{% highlight ruby %} -require "rexml-expansion-fix2" -... -doc = REXML::Document.new(str) -... -{% endhighlight %} - -If you have a Rails application, copy rexml-expansion-fix2.rb into a -directory on the load path (such as RAILS\_ROOT/lib/), and put the -following line into config/environment.rb. - -{% highlight ruby %} -require "rexml-expansion-fix2" -{% endhighlight %} - -If your application is Rails 2.1 or later, you can simply copy -rexml-expansion-fix2.rb to RAILS\_ROOT/config/initializers and it will -be required automatically. - -By default, XML entity expansion limit is 10000. You can change it by -changing REXML::Document.entity\_expansion\_limit. e.g. - -{% highlight ruby %} -REXML::Document.entity_expansion_limit = 1000 -{% endhighlight %} - -This fix will be made available as a gem and used by future versions of -rails, but users should take corrective action immediately. - -## Credit - -Credit to Luka Treiber and Mitja Kolsek of ACROS Security for disclosing -the problem to Ruby and Rails Security Teams. - -Credit to Michael Koziarski of Rails Core Team for creating the monkey -patch to fix the vulnerability. - -## Changes - -* 2008-08-29 18:46 +09:00 fixed the summary not to mislead that this - vulnerability is Rails specific. -* 2008-11-09 12:40 +09:00 fixed [a bug of the monkey patch][2]. - - - -[1]: {{ site.url }}/security/20080823rexml/rexml-expansion-fix2.rb -[2]: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502535 diff --git a/fa/news/_posts/2008-09-09-voices-that-matter-2008.md b/fa/news/_posts/2008-09-09-voices-that-matter-2008.md deleted file mode 100644 index e90a2ff351..0000000000 --- a/fa/news/_posts/2008-09-09-voices-that-matter-2008.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: news_post -title: "Voices That Matter 2008" -author: "James Edward Gray II" -lang: en ---- - -Pearson Education is running a [Voices That Matter][1] Ruby conference -this fall in Boston. The conference, from the same people who -Addison-Wesley\'s Professional Ruby Series, will give you a chance to -meet and learn from those very same authors. Don\'t miss a chance to -interact with so many Ruby professionals. - - - -[1]: http://www.voicesthatmatter.com/ruby2008/ diff --git a/fa/news/_posts/2008-10-02-rubyconf-2008-is-sold-out.md b/fa/news/_posts/2008-10-02-rubyconf-2008-is-sold-out.md deleted file mode 100644 index 0d7ec96819..0000000000 --- a/fa/news/_posts/2008-10-02-rubyconf-2008-is-sold-out.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2008 is Sold-out" -author: "james" -lang: en ---- - -[RubyConf 2008][1] is sold out - -However, there is a [waiting list][2] you can join in case of -cancellations. - - - -[1]: http://rubyconf.org/ -[2]: http://www.regonline.com/builder/site/Default.aspx?eventid=636797 diff --git a/fa/news/_posts/2008-10-28-ruby-1-9-1-preview-1-released.md b/fa/news/_posts/2008-10-28-ruby-1-9-1-preview-1-released.md deleted file mode 100644 index ca448d67cf..0000000000 --- a/fa/news/_posts/2008-10-28-ruby-1-9-1-preview-1-released.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.1-preview 1 released" -author: "james" -lang: en ---- - -Yugui (Yuki Sonoda) announced the release of Ruby 1.9.1-preview 1: - -> This is a preview release of Ruby 1.9.1, which will be the first -> stable version of the Ruby 1.9 series. Try it out now and get an early -> taste of a modern, faster, multilingualized, and much improved Ruby -> with clearer syntax. -> If you encounter any bugs or problems, please let us know via the -> official issue tracking system: -> -> [https://bugs.ruby-lang.org][1] - -You can download the release from; - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.bz2][2] - SIZE: 6169022 bytes - MD5: 0d51dc949bb6b438ad4ebfabbb5f6754 - SHA256: dc39000537d7c7528ef26af8e1c3a6215b30b6c579c615eaec7013513410456a -^ - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.gz][3] - SIZE: 7409682 bytes - MD5: 738f701532452fd5d36f5c155f3ba692 - SHA256: 99443bdae9f94ba7b08de187881f8cbee172379edf9c5fa85fc04c869150ff6d -^ - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.zip][4] - SIZE: 8569116 bytes - MD5: 5f68246246c4cd29d8a3b6b34b29b6ac - SHA256: a6c3a7bf7ea83b595024764926353e08596a78e40c57ac58c568662e5e88df95 - - - -[1]: https://bugs.ruby-lang.org -[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.gz -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.zip diff --git a/fa/news/_posts/2008-11-08-mountainwest-rubyconf-2009-dates-and-cfp.md b/fa/news/_posts/2008-11-08-mountainwest-rubyconf-2009-dates-and-cfp.md deleted file mode 100644 index e66d07b27d..0000000000 --- a/fa/news/_posts/2008-11-08-mountainwest-rubyconf-2009-dates-and-cfp.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: news_post -title: "MountainWest RubyConf 2009 dates and CFP" -author: "james" -lang: en ---- - -[MountainWest RubyConf 2009][1] will be held March 13-14, 2009, in Salt -Lake City, Utah, USA. - -Proposals to speak at this regional conference are now being accepted. -Please send your proposal to proposals@mtnwestrubyconf.org. - -The submission deadline is midnight (MST) on December 31st, 2008. - -There are sponsorship opportunities available as well. Please contact -sponsorship@mtnwestruby.org if you are interested. - -Please see [mtnwestrubyconf.org/][1] for more details as they become -available. - - - -[1]: http://mtnwestrubyconf.org diff --git a/fa/news/_posts/2008-11-10-scotland-on-rails-2009.md b/fa/news/_posts/2008-11-10-scotland-on-rails-2009.md deleted file mode 100644 index cca18f7bcc..0000000000 --- a/fa/news/_posts/2008-11-10-scotland-on-rails-2009.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: news_post -title: "Scotland on Rails 2009" -author: "James Edward Gray II" -lang: en ---- - -[Scotland on Rails][1] is pleased to announce that Conference2009 will -be held March 26-28 in Edinburgh, Scotland. - -We are now accepting submissions. The closing date for submissions is -December 1st 2008, so there’s still time! Please mail your plaintext -proposals for 45 minute sessions to -[submissions@scotlandonrails.com](mailto:submissions@scotlandonrails.com). - -Alternatively, if you are interested in sponsoring the conference, -please mail -[sponsorship@scotlandonrails.com](mailto:sponsorship@scotlandonrails.com) -for a prospectus. - -Lastly, if you wish to be notified when we open for registration, you -can sign up on the site. - -Come and enjoy all that Edinburgh has to offer (whisky! castle! volcano! -ruby! whisky!) in March. We hope to see you there. - - - -[1]: http://scotlandonrails.com diff --git a/fa/news/_posts/2008-11-27-rubyconf-2008-summary-video.md b/fa/news/_posts/2008-11-27-rubyconf-2008-summary-video.md deleted file mode 100644 index 7530d8408e..0000000000 --- a/fa/news/_posts/2008-11-27-rubyconf-2008-summary-video.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: news_post -title: "RubyConf 2008 Summary Video" -author: "James Edward Gray II" -lang: en ---- - -While RubyConf fans are waiting on the videos trickle in [Confreaks][1], -hold yourself over with the [31 minute summary video from Rails -Envy][2]. It\'s a perfect way to get an overview of what you missed at -the conference. - - - -[1]: http://rubyconf2008.confreaks.com/ -[2]: http://www.railsenvy.com/2008/11/26/rubyconf-videos diff --git a/fa/news/_posts/2008-12-23-mountainwest-rubyconf-2009-proposal-deadline-approaching.md b/fa/news/_posts/2008-12-23-mountainwest-rubyconf-2009-proposal-deadline-approaching.md deleted file mode 100644 index 38a52b9301..0000000000 --- a/fa/news/_posts/2008-12-23-mountainwest-rubyconf-2009-proposal-deadline-approaching.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "MountainWest RubyConf 2009 Proposal Deadline Approaching" -author: "james" -lang: en ---- - -[MountainWest RubyConf 2009][1] will be held March 13-14, 2009, in Salt -Lake City, Utah, USA. - -The submission deadline for presentation proposals is midnight (MST) on -December 31st, 2008. - -Please send your proposal to proposals@mtnwestrubyconf.org. - -Please see [mtnwestrubyconf.org/][1] for more details. - - - -[1]: http://mtnwestrubyconf.org diff --git a/fa/news/_posts/2009-01-28-20090131-server-maintenance.md b/fa/news/_posts/2009-01-28-20090131-server-maintenance.md deleted file mode 100644 index 304613908d..0000000000 --- a/fa/news/_posts/2009-01-28-20090131-server-maintenance.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: news_post -title: "Server maintenance" -author: "Shugo Maeda" -lang: en ---- - -Services of ruby-lang.org will be unavailable for the server maintenance between 01:00-06:00 on 31 January 2009 (UTC). Sorry for any inconvenience. diff --git a/fa/news/_posts/2009-01-30-ruby-1-9-1-released.md b/fa/news/_posts/2009-01-30-ruby-1-9-1-released.md deleted file mode 100644 index 99a1e4dccf..0000000000 --- a/fa/news/_posts/2009-01-30-ruby-1-9-1-released.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.1 released" -author: "james" -lang: en ---- - -Ruby 1.9.1 is released. This is the first stable release of the Ruby 1.9 -series. - -Ruby 1.9 is a new series of Ruby. It is modern, faster, with clearer -syntax, multilingualized, a much improved version of Ruby. - -Ruby 1.8 series has been used since 2003 and many great products were -born on it. - -Today, the Ruby 1.9 series starts its history as the 1.8 series did. - -Please note that Ruby 1.8 still remains. 1.8.8 will be released this -year. - -You can read about major changes since 1.8.7 [here][1] - -7 [bugs have been fixed][2] since 1.9.1 RC2. - -If you encounter any bugs or any problems, please report them using the -official issue [tracking system][3]. - -Download from - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2][4] - SIZE: 7190271 bytes - - MD5: 0278610ec3f895ece688de703d99143e - - SHA256: de7d33aeabdba123404c21230142299ac1de88c944c9f3215b816e824dd33321 -^ - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz][5] - SIZE: 9025004 bytes - - MD5: 50e4f381ce68c6de72bace6d75f0135b - - SHA256: a5485951823c8c22ddf6100fc9e10c7bfc85fb5a4483844033cee0fad9e292cc -^ - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.zip][6] - SIZE: 10273609 bytes - - MD5: 3377d43b041877cda108e243c6b7f436 - - SHA256: 00562fce4108e5c6024c4152f943eaa7dcc8cf97d5c449ac102673a0d5c1943b - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0/NEWS -[2]: https://bugs.ruby-lang.org/projects/ruby-19/issues?query_id=11 -[3]: https://bugs.ruby-lang.org -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2 -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.zip diff --git a/fa/news/_posts/2009-02-25-mountainwest-rubyconf-schedule.md b/fa/news/_posts/2009-02-25-mountainwest-rubyconf-schedule.md deleted file mode 100644 index 8d2cf18e8c..0000000000 --- a/fa/news/_posts/2009-02-25-mountainwest-rubyconf-schedule.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: news_post -title: "MountainWest RubyConf Schedule" -author: "james" -lang: en ---- - -The schedule for the upcoming [MountainWest RubyConf][1] is -[available.][2] - -You can also keep track of the conference via twitter. Just follow -[@mwrc][3] - -MountainWest RubyConf is being held in Salt Lake City, UT, USA, March 13 -and 14 2009. - - - -[1]: http://mtnwestrubyconf.org/2009/index -[2]: http://mtnwestrubyconf.org/2009/schedule -[3]: http://twitter.com/mwrc diff --git a/fa/news/_posts/2009-04-18-ruby-1-8-7-p160-and-1-8-6-p368-released.md b/fa/news/_posts/2009-04-18-ruby-1-8-7-p160-and-1-8-6-p368-released.md deleted file mode 100644 index 9dae93a36e..0000000000 --- a/fa/news/_posts/2009-04-18-ruby-1-8-7-p160-and-1-8-6-p368-released.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7-p160 and 1.8.6-p368 released" -author: "Urabe Shyouhei" -lang: en ---- - -Updates to already-released Ruby 1.8.7 and 1.8.6 have been released. - -This time we have fixed dozens of bugs, including workarounds for -CVE-2007-1558. Many segfaults are also fixed. For a complete list of -what has been fixed, please read the ChangeLogs. - -The released tarballs are available at: - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.gz][1] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.bz2][2] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.zip][3] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.gz][4] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.bz2][5] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.zip][6] - -Checksums: - - - MD5(ruby-1.8.6-p368.tar.gz)= 508bf1911173ac43e4e6c31d9dc36b8f - SHA256(ruby-1.8.6-p368.tar.gz)= cc8cad3edd02d8c2de3c63a7d8a5cb85af39766dd47360a9c0f26339b101e2a0 - SIZE(ruby-1.8.6-p368.tar.gz)= 4602095 - - MD5(ruby-1.8.6-p368.tar.bz2)= 623447c6d8c973193aae565a5538ccfc - SHA256(ruby-1.8.6-p368.tar.bz2)= 1bd398a125040261f8e9e74289277c82063aae174ada9f300d2bea0a42ccdcc1 - SIZE(ruby-1.8.6-p368.tar.bz2)= 3967709 - - MD5(ruby-1.8.6-p368.zip)= 3d301a4b1aded1922570585bbece2c29 - SHA256(ruby-1.8.6-p368.zip)= 8ba4bfd14d2914bfe2c18ffa9da084234be978fd0eee654f7a5c732a1beb0246 - SIZE(ruby-1.8.6-p368.zip)= 5619494 - - MD5(ruby-1.8.7-p160.tar.gz)= 945398f97e2de6dd8ab6df68d10bb1a1 - SHA256(ruby-1.8.7-p160.tar.gz)= 47c3d1ae6b3dbda230d04f258304516fc1da571fa757d5e1d8d0104b49045530 - SIZE(ruby-1.8.7-p160.tar.gz)= 4818817 - - MD5(ruby-1.8.7-p160.tar.bz2)= f8ddb886b8a81cf005f53e9a9541091d - SHA256(ruby-1.8.7-p160.tar.bz2)= e524a086212d2142c03eb6b82cd602adcac9dcf8bf60049e89aa4ca69864984d - SIZE(ruby-1.8.7-p160.tar.bz2)= 4137518 - - MD5(ruby-1.8.7-p160.zip)= 06319bafa225df47fe26dfb52bc174a7 - SHA256(ruby-1.8.7-p160.zip)= c56fefbb9e7e186bf9feeb864793ad2a53062ce871b47ab0170316e38f738995 - SIZE(ruby-1.8.7-p160.zip)= 5876269 - -The ChangeLogs are bundled into those tarballs, and also available at -the following locations: - -* [https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_6\_368/ChangeLog][7] -* [https://svn.ruby-lang.org/repos/ruby/tags/v1\_8\_7\_160/ChangeLog][8] - -### Updates - -* Earlier version of this document said it fixed CVE-2008-1447, but that - has already been included in 1.8.7-p160 / 1.8.6-p368. Thanks to Tomas - Hoger. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.gz -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.zip -[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.gz -[5]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.bz2 -[6]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.zip -[7]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_6_368/ChangeLog -[8]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_160/ChangeLog diff --git a/fa/news/_posts/2009-05-12-ruby-1-9-1-p129-released.md b/fa/news/_posts/2009-05-12-ruby-1-9-1-p129-released.md deleted file mode 100644 index 94bb68c764..0000000000 --- a/fa/news/_posts/2009-05-12-ruby-1-9-1-p129-released.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.1-p129 released" -author: "Administrator" -lang: en ---- - -Ruby 1.9.1-p129 has been released. - -This is a patch level release for Ruby 1.9.1. This fixes many bugs and -two security vulnerabilities. This release contains security fix so we -recommend all 1.9.1 users to upgrade your ruby. - diff --git a/fa/news/_posts/2009-05-23-ruby-1-8-6-maintenance-moved-to-engine-yard.md b/fa/news/_posts/2009-05-23-ruby-1-8-6-maintenance-moved-to-engine-yard.md deleted file mode 100644 index 2599fbb26c..0000000000 --- a/fa/news/_posts/2009-05-23-ruby-1-8-6-maintenance-moved-to-engine-yard.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.6 maintenance moved to Engine Yard" -author: "Urabe Shyouhei" -lang: en ---- - -Recently we have a welcome, historic development that the Ruby 1.8.6\'s -maintenance stewardship moved from me (Urabe Shyouhei) to Kirk Haines of -Engine Yard. - -Ruby 1.8.6 was released on 2007, and the Ruby core team has provided -supports such as bug fixes and security alerts since then. As Ruby 1.8.6 -became widely used, users asked us to last those support longer than we -thought earlier. That was basically OK for us except one thing: who is -to do that. Engine Yard kindly came forward to do the job, and we have -worked on moving needed privileges from us to them. This announce is to -finish that process. - -This issue do not affect those current Ruby 1.8.6 users in the short -run. Everything remains as they are. Users\' benefit is that bug fixes -and improvements for Ruby 1.8.6 lasts longer than we announced before. I -believe that is what everyone want. - diff --git a/fa/news/_posts/2009-06-09-dos-vulnerability-in-bigdecimal.md b/fa/news/_posts/2009-06-09-dos-vulnerability-in-bigdecimal.md deleted file mode 100644 index 21e94b8bad..0000000000 --- a/fa/news/_posts/2009-06-09-dos-vulnerability-in-bigdecimal.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: news_post -title: "DoS vulnerability in BigDecimal" -author: "Urabe Shyouhei" -lang: en ---- - -A denial of service (DoS) vulnerability was found on the BigDecimal -standard library of Ruby. Conversion from BigDecimal objects into Float -numbers had a problem which enables attackers to effectively cause -segmentation faults. - -ActiveRecord relies on this method, so most Rails applications are -affected by this. Though this is not a Rails-specific issue. - -## Impact - -An attacker can cause a denial of service by causing BigDecimal to parse -an insanely large number, such as: - - - BigDecimal("9E69999999").to_s("F") - -## Vulnerable versions - -### 1.8 series - -* 1\.8.6-p368 and all prior versions -* 1\.8.7-p160 and all prior versions - -### 1.9 series - -* All 1.9.1 versions are not affected by this issue - -## Solution - -### 1.8 series - -Please upgrade to 1.8.6-p369 or ruby-1.8.7-p174. - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p369.tar.gz][1] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz][2] - -## Updates - -* Ruby 1.8.7-p173 had a problem. If you have already downloaded it, - please get a newer one. Ruby 1.8.6-p369 do not have this bug. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p369.tar.gz -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz diff --git a/fa/news/_posts/2009-07-20-ruby-1-9-1-p243-released.md b/fa/news/_posts/2009-07-20-ruby-1-9-1-p243-released.md deleted file mode 100644 index acfab13833..0000000000 --- a/fa/news/_posts/2009-07-20-ruby-1-9-1-p243-released.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.1-p243 released" -author: "Yugui" -lang: en ---- - -Ruby 1.9.1-p243 has been released. - -This is a patch level release in the 1.9.1 series. It includes bug -fixes. - -see the [ChangeLog][1] for more details. - -#### Location - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.bz2>][2] - SIZE - : 7191348 bytes - - MD5 - : 66d4f8403d13623051091347764881a0 - - SHA256 - : 39c9850841c0dd5d368f96b854f97c19b21eb28a02200f8b4e151f608092e687 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz>][3] - SIZE - : 9043825 bytes - - MD5 - : 515bfd965814e718c0943abf3dde5494 - - SHA256 - : 31598e37b3962643bec722921644957be6f8fb9a26f6c91fa627bd668ea68be4 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.zip>][4] - SIZE - : 10307868 bytes - - MD5 - : 7086675f78185d72719132231b810e4d - - SHA256 - : 68a9847299269c5251dc61f7aad8482ab6022a6b1be13635d607fb593208b226 - - - -[1]: https://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_1/ChangeLog -[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.zip diff --git a/fa/news/_posts/2009-07-20-ruby-1-9-2-preview-1-released.md b/fa/news/_posts/2009-07-20-ruby-1-9-2-preview-1-released.md deleted file mode 100644 index 67e5501b48..0000000000 --- a/fa/news/_posts/2009-07-20-ruby-1-9-2-preview-1-released.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.2 preview 1 released" -author: "Yugui" -lang: en ---- - -Ruby 1.9.2 preview 1 has been released. - -This is a preview for the 1.9.2 series. It is just a snapshot. It still -have some known bugs, is sometimes unstable. Let us know your view on -it. - -* Socket API was more objectified. -* Time was reimplemented and enhanced. Now Time has no max/min value, no - year 2038 problem. -* New Random class for random number sequence. -* Good news for merb users: Method#parameters - -see the [NEWS][1] and the [ChangeLog][2] for more detail. - -#### Location - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.tar.bz2>][3] - SIZE - : 7487008 bytes - - MD5 - : 0b8f27ea78afcdc54d5d23e569aa0150 - - SHA256 - : 0681204e52207153250da80b3cc46812f94107807458a7d64b17554b6df71120 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.tar.gz>][4] - SIZE - : 9422226 bytes - - MD5 - : e2b8cdbf300f53472be09699a5837fd1 - - SHA256 - : 7f29ab3b1d5f0074bb82a6bf398f1cacd42fe508a17fc14844560c4d906786b6 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.zip>][5] - SIZE - : 10741739 bytes - - MD5 - : 253b5845e4b0f8250ae79c328b94e049 - - SHA256 - : cb132277476856535ee31e85929a3041877b0912868b7f64d1cf911a79463cdf - - - -[1]: https://svn.ruby-lang.org/repos/ruby/trunk/NEWS%0A -[2]: https://svn.ruby-lang.org/repos/ruby/trunk/ChangeLog%0A -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.tar.gz -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-preview1.zip diff --git a/fa/news/_posts/2009-08-03-call-for-proposals-for-rubyconf-2009.md b/fa/news/_posts/2009-08-03-call-for-proposals-for-rubyconf-2009.md deleted file mode 100644 index cecf8c1e3a..0000000000 --- a/fa/news/_posts/2009-08-03-call-for-proposals-for-rubyconf-2009.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "Call for Proposals for RubyConf 2009" -author: "james" -lang: en ---- - -The Call for Proposals for presenting at RubyConf 2009 is now open. - -The deadline for proposals is August 21, 2009. - -You need to sign up for an account at [rubyconf.org][1], and then you -can submit your proposal. - -RubyConf 2009 will take place November 19-21 2009, at the Embassy Suites -Hotel at the San Francisco Airport, California, USA. - - - -[1]: http://www.rubyconf.org diff --git a/fa/news/_posts/2009-09-04-rubyworld-conference.md b/fa/news/_posts/2009-09-04-rubyworld-conference.md deleted file mode 100644 index d547551512..0000000000 --- a/fa/news/_posts/2009-09-04-rubyworld-conference.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "RubyWorld Conference" -author: "Shugo Maeda" -lang: en ---- - -[The RubyWorld Conference][1] will be held at the Shimane Prefectural -Convention Center “Kunibiki Messe”, Shimane Prefecture, during September -7th – 8th , 2009. - -[The talks at the International Conference Hall][2] will be live -broadcasted at [the official web site][1]. - -Stay tuned! - - - -[1]: http://www.rubyworld-conf.org/en/ -[2]: http://www.rubyworld-conf.org/en/program/ diff --git a/fa/news/_posts/2009-12-03-mountainwest-rubyconf-2010.md b/fa/news/_posts/2009-12-03-mountainwest-rubyconf-2010.md deleted file mode 100644 index b65aadfa01..0000000000 --- a/fa/news/_posts/2009-12-03-mountainwest-rubyconf-2010.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: news_post -title: "MountainWest RubyConf 2010" -author: "james" -lang: en ---- - -MountainWest RubyConf 2010 will be held March 11 and 12, 2010, in Salt -Lake City, UT, USA. - -[http://mtnwestrubyconf.org][1] - -Talk proposals are being accepted right this very minute! - -Submit yours [here.][2] - -But don’t delay! The submission deadline is midnight (MST) on December -31st, 2009. - - - -[1]: http://mtnwestrubyconf.org -[2]: http://spreadsheets.google.com/viewform?formkey=dERsdEVIc0FTSlBtanVxTWFNamdHcmc6MA diff --git a/fa/news/_posts/2009-12-07-heap-overflow-in-string.md b/fa/news/_posts/2009-12-07-heap-overflow-in-string.md deleted file mode 100644 index c83f1936fe..0000000000 --- a/fa/news/_posts/2009-12-07-heap-overflow-in-string.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: news_post -title: "Heap overflow in String (CVE-2009-4124)" -author: "Yugui" -lang: en ---- - -There is a heap overflow vulnerability in `String#ljust`, -`String#center` and `String#rjust`. This has allowed an attacker to run -arbitrary code in some rare cases. - -* [CVE-2009-4124][1] - -## Vulnerable versions - -* All releases of Ruby 1.9.1. - -This vulnerability does not affect Ruby 1.8 series. - -## Solution - -Please upgrade to Ruby 1.9.1-p376. - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2>][2] - -## Credit - -Credit to Emmanouel Kellinis, KPMG London for disclosing the problem to -Ruby Security team. - -## Changes - -* 2009-12-07 14:52 +0900 add link to CVE (but not opened yet when - writing this page) - - - -[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-4124 -[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2 diff --git a/fa/news/_posts/2009-12-07-ruby-1-9-1-p376-is-released.md b/fa/news/_posts/2009-12-07-ruby-1-9-1-p376-is-released.md deleted file mode 100644 index 1d2287a6ac..0000000000 --- a/fa/news/_posts/2009-12-07-ruby-1-9-1-p376-is-released.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.1-p376 is released" -author: "Yugui" -lang: en ---- - -Ruby 1.9.1-p376 just has been released. This is a patch level release of -Ruby 1.9.1 and includes the fix of CVE-2009-4124. - -#### CVE-2009-4124 - -The previous release, Ruby 1.9.1-p243 has a [security vulnerability that -allows heap overflow][1]. This vulnerability was found by Emmanouel -Kellinis, KPMG London. - -I recommend all Ruby 1.9.1 users to upgrade to p376. But the -vulnerability does not affect Ruby 1.8 series. - -#### Other fixes - -In addition, 1.9.1-p376 includes > 100 bug fixes. - -* Irb extension commands had been broken. It was fixed. -* Ripper had not been able to parse some Ruby codes. It was fixed. -* Fixed build failures on AIX. -* Some bug fixes of Matrix. -* Can load gems which is installed in an user\'s home directory. -* Some method became returning a string with a correct encoding. - -See the ChangeLog for more detail. - -* [<URL:https://svn.ruby-lang.org/repos/ruby/branches/ruby\_1\_9\_1/ChangeLog>][2] - -#### Location - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2>][3] - SIZE - : 7293106 bytes - - MD5 - : e019ae9c643c5efe91be49e29781fb94 - - SHA256 - : 79164e647e23bb7c705195e0075ce6020c30dd5ec4f8c8a12a100fe0eb0d6783 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.gz>][4] - SIZE - : 9073007 bytes - - MD5 - : ebb20550a11e7f1a2fbd6fdec2a3e0a3 - - SHA256 - : 58b8fc1645283fcf3d5be195dffcaf55b7c85cbc210074273b57b835409b21ca - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.zip>][5] - SIZE - : 10337871 bytes - - MD5 - : d4d5e62f65cb92a281f1569a7f25371b - - SHA256 - : 486d3efdab269040ce7142964ba3a4e0d46f0a5b812136bcac7e5bafc726c14e - - - -[1]: {{ site.url }}/en/news/2009/12/07/heap-overflow-in-string/ -[2]: https://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_1/ChangeLog -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.gz -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.zip diff --git a/fa/news/_posts/2009-12-25-ruby-1-8-7-p248-released.md b/fa/news/_posts/2009-12-25-ruby-1-8-7-p248-released.md deleted file mode 100644 index 70648d807b..0000000000 --- a/fa/news/_posts/2009-12-25-ruby-1-8-7-p248-released.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7-p248 released" -author: "Urabe Shyouhei" -lang: en ---- - -We now have a series of patches to fix various bugs against 1.8.7 so I -(Urabe Shyouhei) decided to release them. Here they are. - -* [ruby-1.8.7-p248.tar.gz][1] -* [ruby-1.8.7-p248.tar.bz2][2] -* [ruby-1.8.7-p248.zip][3] - -And excuse me for absence of a detailed release note... Please read the -[ChangeLog][4] instead. - -Checksums: - - MD5(ruby-1.8.7-p248.tar.gz)= 60a65374689ac8b90be54ca9c61c48e3 - SHA256(ruby-1.8.7-p248.tar.gz)= 5c9cd617a2ec6b40abd7c7bdfce3256888134482b22f933a061ae18fb4b48755 - SIZE(ruby-1.8.7-p248.tar.gz)= 4831010 - - MD5(ruby-1.8.7-p248.tar.bz2)= 37e19d46b7d4b845f57d3389084b94a6 - SHA256(ruby-1.8.7-p248.tar.bz2)= 3d238c4cf0988797d33169ab05829f1a483194e7cacae4232f3a0e2cc01b6bfc - SIZE(ruby-1.8.7-p248.tar.bz2)= 4153123 - - MD5(ruby-1.8.7-p248.zip)= 819b9db9bcd4aa9a70f1193380a318c9 - SHA256(ruby-1.8.7-p248.zip)= c133ecf35d5509e61443db05c9691bea6c6f63b87600a452b742014767bd98b3 - SIZE(ruby-1.8.7-p248.zip)= 5889980 - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p248.tar.gz -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p248.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p248.zip -[4]: https://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1_8_7_248/ChangeLog diff --git a/fa/news/_posts/2010-01-10-webrick-escape-sequence-injection.md b/fa/news/_posts/2010-01-10-webrick-escape-sequence-injection.md deleted file mode 100644 index 1fcb359591..0000000000 --- a/fa/news/_posts/2010-01-10-webrick-escape-sequence-injection.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: news_post -title: "WEBrick has an Escape Sequence Injection vulnerability" -author: "Urabe Shyouhei" -lang: en ---- - -A vulnerability was found on WEBrick, a part of Ruby\'s standard -library. WEBrick lets attackers to inject malicious escape sequences to -its logs, making it possible for dangerous control characters to be -executed on a victim\'s terminal emulator. - -We already have a fix for it. Releases for every active branches are to -follow this announce. But for a meantime, we recommend you to avoid -looking at your WEBrick logs, until you update your WEBrick process. - -## Detailed description - -Terminal escape sequences are used to allow various forms of interaction -between a terminal and a inside process. The problem is that those -sequences are not intended to be issued by untrusted sources; such as -network inputs. So if a remote attacker could inject escape sequences -into WEBrick logs, and a victim happen to consult them through his/her -terminal, the attacker could take advantages of various [weaknesses in -terminal emulators][1]. - -And WEBrick fails to filter those terminal escape sequences. - -Example: - - % xterm -e ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port=>8080).start' & - % wget http://localhost:8080/%1b%5d%32%3b%6f%77%6e%65%64%07%0a - -Watch out for the window title of xterm. - -## Affected versions - -* Ruby 1.8.6 patchlevel 383 and all prior versions -* Ruby 1.8.7 patchlevel 248 and all prior versions -* Development versions of Ruby 1.8 (1.8.8dev) -* Ruby 1.9.1 patchlevel 376 and all prior versions -* Development versions of Ruby 1.9 (1.9.2dev) - -## Solutions - -* Fixes for 1.8.6, 1.8.7, and 1.9.1 are to follow this announce. - * **Update** 1.8.7 pl. 249 was released to fix this issue. 1.8.7 users - are encouraged to upgrade. - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz][2] - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.bz2][3] - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.zip][4] - - * **Update** 1.9.1 pl. 378 was released to fix this issue. 1.9.1 users - are encouraged to upgrade. - * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz][5] - * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.bz2][6] - * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.zip][7] - - * **Update** 1.8.6 pl. 388 was released to fix this issue. 1.8.6 users - are encouraged to upgrade. - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.gz][8] - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.bz2][9] - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.zip][10] - -* For development versions, please update to the most recent revision - for each development branch. - -## Credit - -Credit to Giovanni \"evilaliv3\" Pellerano, Alessandro \"jekil\" Tanasi, -and Francesco \"ascii\" Ongaro for discovering this vulnerability. - - - -[1]: http://marc.info/?l=bugtraq&m=104612710031920&w=2 "Terminal Emulator Security Issues" -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.zip -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.bz2 -[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.zip -[8]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.gz -[9]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.bz2 -[10]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.zip diff --git a/fa/news/_posts/2010-03-06-rubynation-2010.md b/fa/news/_posts/2010-03-06-rubynation-2010.md deleted file mode 100644 index 659a7e5f30..0000000000 --- a/fa/news/_posts/2010-03-06-rubynation-2010.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "RubyNation 2010" -author: "James Edward Gray II" -lang: en ---- - -RubyNation, Washington D.C.’s Ruby Community Conference, will be held -April 9 and 10, 2010, in Reston, VA, USA. - -You can learn more and register here: [http://rubynation.org/][1] - -But hurry! RubyNation is close to being sold out. - - - -[1]: http://rubynation.org/ diff --git a/fa/news/_posts/2010-03-17-red-dirt-rubyconf-2010.md b/fa/news/_posts/2010-03-17-red-dirt-rubyconf-2010.md deleted file mode 100644 index f9ef87d94c..0000000000 --- a/fa/news/_posts/2010-03-17-red-dirt-rubyconf-2010.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: news_post -title: "Red Dirt RubyConf 2010" -author: "James Edward Gray II" -lang: en ---- - -Registration is now open for the [Red Dirt RubyConf][1]. Our \"early -bird\" special ends in ten days, so [sign-up now][2] for the best -prices. - -We have an excellent program of speakers and a ton of surprises in store -for attendees. We\'re starting this conference with a bang, so don\'t -miss it! - -I\'m really proud of [the program][3] we have put together, so check -this out if you haven\'t seen it yet: - -## Keynotes - -**Living here in hell—Ruby and the search for perfection**<br> -Dave Thomas, The Pragmatic Programmers - -**(Parenthetically Speaking)**<br> -Jim Weirich, EdgeCase - -## Ruby - -**Ruby and the Unix Philosophy**<br> -Matt Yoho, Hashrocket - -**Sinatra: Microapps Running on Rack**<br> -Tim Gourley, Engine Yard - -**Javascript and Friends: Scripting Ruby with JavaScript for Fun and -Profit**<br> -Charles Lowell, The Frontside Software, Inc - -**Design and Modularity in Ruby**<br> -Glenn Vanderburg, Relevance, Inc. - -## Rails 3 - -**Rails in the Large: How We\'re Building One of the Largest Rails Apps -for an Enterprise**<br> -Neal Ford, ThoughtWorks - -**Bundler: Painless Dependency Management**<br> -André Arko, Engine Yard - -**Active Record Makeover: Rekindle the relationship**<br> -Marty Haught, Haught Codeworks - -**With a Mighty Hammer**<br> -Ben Scofield, Viget Labs - -## NoSQL - -**Scaling with Cassandra**<br> -Ryan King, Twitter - -**Data Driven Applications with Ruby and MongoDB**<br> -Kyle Banker and John Taber, 10gen and Tiger Nassau, Inc - -**CouchDB, Ruby, and You**<br> -Will Leinweber, merge.fm - -**Plain Old Tokyo Storage**<br> -Jeremy Hinegardner, Collective Intellect - -## Servers/Hosting - -**Rails and Sinatra on Google AppEngine**<br> -John Woodell, Google - -**Rumble in the Jungle...**<br> -Fernand Galiana, liquidrail llc - -**Redis To The Resque**<br> -Jade Meskill, Integrum Technologies - -**The Rise of DevOps**<br> -Corey Donohoe, Teamsters - -## Trainings - -**The Ruby Your Mother Warned You About**<br> -James Edward Gray II and Glenn Vanderburg, -Gray Productions Software Inc. and Relevance, Inc. - -**The Rails 3 Ropes Course**<br> -Gregg Pollack, Envy Labs - -**Introduction to Riak**<br> -Sean Cribbs, Basho - -**Living Among the Clouds**<br> -Jim Mulholland and Jason Derrett, Squeejee - -## Other Highlights - -* A hackfest is planned -* There will be a live recording of the Ruby5 podcast -* We will have good food (seriously!) - -I hope you all find that as exciting as I do and I hope to see you -there! - -James Edward Gray II - - - -[1]: http://reddirtrubyconf.com/ -[2]: http://reddirtrubyconf.com/register_to_attend -[3]: http://reddirtrubyconf.com/program diff --git a/fa/news/_posts/2010-03-26-ruby-summer-of-code-2010.md b/fa/news/_posts/2010-03-26-ruby-summer-of-code-2010.md deleted file mode 100644 index 7941b51532..0000000000 --- a/fa/news/_posts/2010-03-26-ruby-summer-of-code-2010.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: news_post -title: "Ruby Summer of Code 2010" -author: "James Edward Gray II" -lang: en ---- - -Continuing in Google’s great tradition of encouraging student open -source development, [Ruby Central][1], [Engine Yard][2], and the [Rails -core team][3] are teaming up to present the first annual [Ruby Summer of -Code][4]. - -Head over to [rubysoc.org][4] to get started and follow [@rubysoc][5] -for news. - -The summer will follow Google’s example closely: - -* students are paid a $5000 stipend to work full-time during their - summer break -* a group of Ruby gurus volunteer their time as mentors -* mentors vote on student proposals based on usefulness, benefit to the - Ruby community, and history of motivated open source contribution - -The more we raise, the more students we can fund. [Donate now!][4] - - - -[1]: http://rubycentral.org/ -[2]: http://www.engineyard.com/blog/2010/ruby-summer-of-code-is-here/ -[3]: http://weblog.rubyonrails.org/2010/3/24/ruby-summer-of-code -[4]: http://rubysoc.org/ -[5]: http://twitter.com/rubysoc diff --git a/fa/news/_posts/2010-06-23-ruby-1-8-7-p299-released.md b/fa/news/_posts/2010-06-23-ruby-1-8-7-p299-released.md deleted file mode 100644 index e21ff2046b..0000000000 --- a/fa/news/_posts/2010-06-23-ruby-1-8-7-p299-released.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7-p299 released" -author: "Urabe Shyouhei" -lang: en ---- - -Hello all. It\'s time for a new release of 1.8.7. - -This time we fixed various bugs, including the Unicode inspection bug -that annoyed you a lot. For a complete list of what has been fixed, -please take a look at the ChangeLog. - -* https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.gz -* https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.bz2 -* https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.zip - -Checksums: - - MD5(ruby-1.8.7-p299.tar.gz)= 43533980ee0ea57381040d4135cf9677 - SHA256(ruby-1.8.7-p299.tar.gz)= 32c99c8e3d0a0190942055b8239f1573677a02de2645d81539617011f3a5427b - SIZE(ruby-1.8.7-p299.tar.gz)= 4867600 - - MD5(ruby-1.8.7-p299.tar.bz2)= 244439a87d75ab24170a9c2b451ce351 - SHA256(ruby-1.8.7-p299.tar.bz2)= 3d8a1e4204f1fb69c9e9ffd637c7f7661a062fc2246c559f25fda5312cfd65d8 - SIZE(ruby-1.8.7-p299.tar.bz2)= 4183359 - - MD5(ruby-1.8.7-p299.zip)= b548dbdfc036979bdcb5e0962c87c9eb - SHA256(ruby-1.8.7-p299.zip)= 30e3ed4ce977a770223f34997ea0d025c180c4664a0bd0d35ef09e48d5c89860 - SIZE(ruby-1.8.7-p299.zip)= 5965156 - -Enjoy! - diff --git a/fa/news/_posts/2010-07-02-ruby-1-9-1-p429-is-released.md b/fa/news/_posts/2010-07-02-ruby-1-9-1-p429-is-released.md deleted file mode 100644 index 2cce9d581a..0000000000 --- a/fa/news/_posts/2010-07-02-ruby-1-9-1-p429-is-released.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.1-p429 is released" -author: "Yugui" -lang: en ---- - -Ruby 1.9.1-p429 has just been released. This is a patchlevel release for -Ruby 1.9.1. This fixes many bugs and includes the fix for a security -vulnerability that allows an attacker to execute an arbitrary code. - -## Vulnerability - -### Description - -A security vulnerability that causes buffer overflow when you assign a -danger value to `ARGF.inplace_mode` on Windows. It possibly allows an -attacker to execute an arbitrary code. - -The affected versions are: - -* Ruby 1.9.1 patchlevel 378 and all prior versions; -* Ruby 1.9.2 preview 3 and all prior versions; -* Development versions of Ruby 1.9 (1.9.3dev). - -I recommend you to upgrade your ruby 1.9 to 1.9.1-p429 or 1.9.2-rc1. - -The vulnerability does not directly affect to Ruby 1.8 series. - -### Credit - -The vulnerability was found and reported by Masaya TARUI. - -## Download - -* [ruby-1.9.1-p429.tar.bz2][1] - * SIZE: 7300923 bytes - * MD5: 09df32ae51b6337f7a2e3b1909b26213 - * SHA256: e0b9471d77354628a8041068f45734eb2d99f5b5df08fe5a76d785d989a47bfb - -* [ruby-1.9.1-p429.tar.gz][2] - * SIZE: 9078126 bytes - * MD5: 0f6d7630f26042e00bc59875755cf879 - * SHA256: fdd97f52873b70f378ac73c76a1b2778e210582ce5fe1e1c241c37bd906b43b2 - -* [ruby-1.9.1-p429.zip][3] - * SIZE: 10347659 bytes - * MD5: fcd031414e5e4534f97aa195bb586d6c - * SHA256: c9fe2364b477ad004030f4feeb89aeaa2a01675ff95db1bed31a932806f85680 - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p429.tar.bz2 -[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p429.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p429.zip diff --git a/fa/news/_posts/2010-07-02-ruby-1-9-2-rc1-is-released.md b/fa/news/_posts/2010-07-02-ruby-1-9-2-rc1-is-released.md deleted file mode 100644 index 280fe98189..0000000000 --- a/fa/news/_posts/2010-07-02-ruby-1-9-2-rc1-is-released.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.2 RC1 is released" -author: "Yugui" -lang: en ---- - -Ruby 1.9.2 RC has just been released. This is a release candidate of -Ruby 1.9.2. - -## About Ruby 1.9.2 - -Ruby 1.9.2 will be mostly compatible with 1.9.1, except for the -following changes: - -* many new methods -* new socket API (IPv6 support) -* new encodings -* a `Random` class that supports various random number generators -* `Time` has been reimplemented. There is no longer the year 2038 issue. -* some regexp enhancements -* `$:` no longer includes the current directory -* `dl` is reimplemented on top of `libffi` -* new `psych` library that wraps `libyaml`. You can use the library - instead of `syck` - -See the [NEWS][1] and [ChangeLog][2] files for more details. - -About 130 bugs have been fixed since the 1.9.2 preview 3 release. All -major known bugs in the 1.9.2 were fixed, except for [#3462][3]. - -Due to our schedule, Ruby 1.9.2 will be released in early August. The -schedule of Ruby 1.9.2 has slipped in order to ensure that 1.9.2 passes -the RubySpec. It now passes more than 99% of RubySpecs. Try out the new -Ruby and let us know via [our issue tracker][4] if you have any issues. - -## Download - -* [ruby-1.9.2-rc1.tar.bz2][5] - * SIZE: 8479087 bytes - * MD5: 242dcfaed8359a6918941b55d0806bf0 - * SHA256: c2a680aa5472c8d04a71625afa2b0f75c030d3655a3063fe364cfda8b33c1480 - -* [ruby-1.9.2-rc1.tar.gz](URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc1.tar.gz) - * SIZE: 10779309 bytes - * MD5: fdedd5b42ae89a9a46797823ad2d9acf - * SHA256: 3e90036728342ce8463be00d42d4a36de70dabed96216c5f8a26ec9ba4b29537 - -* [ruby-1.9.2-rc1.zip][6] - * SIZE: 12158992 bytes - * MD5: 3da59c5d3567f6e1f1697abbef71f507 - * SHA256: 4f593a3d0873cea8f371a7fc7484cad7bc03acac0ada1970cb9f83a89bc27997 - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_rc1/NEWS -[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_rc1/ChangeLog -[3]: https://bugs.ruby-lang.org/issues/show/3462 -[4]: https://bugs.ruby-lang.org/projects/show/ruby-19/ -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc1.tar.bz2 -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc1.zip diff --git a/fa/news/_posts/2010-07-11-ruby-1-9-2-rc2-is-released.md b/fa/news/_posts/2010-07-11-ruby-1-9-2-rc2-is-released.md deleted file mode 100644 index 2c117a8b38..0000000000 --- a/fa/news/_posts/2010-07-11-ruby-1-9-2-rc2-is-released.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.2 RC2 is released" -author: "Yugui" -lang: en ---- - -Ruby 1.9.2 RC2 has just been released. This is the second release -candidate of Ruby 1.9.2. - -The psych library has been fixed since the previous candidate, and some -minor bugs were fixed. - -See the [NEWS][1] and [ChangeLog][2] files for more details. - -## About Ruby 1.9.2 - -Ruby 1.9.2 will be mostly compatible with 1.9.1, except for the -following changes: - -* many new methods -* new socket API (IPv6 support) -* new encodings -* a `Random` class that supports various random number generators -* `Time` has been reimplemented. There is no longer the year 2038 issue. -* some regexp enhancements -* `$:` no longer includes the current directory -* `dl` is reimplemented on top of `libffi` -* new `psych` library that wraps `libyaml`. You can use the library - instead of `syck` - -Ruby 1.9.2 has gotten stable as we expected. Due to our schedule, Ruby -1.9.2 will be released in early August. The schedule of Ruby 1.9.2 has -slipped in order to ensure that 1.9.2 passes the RubySpec. It now passes -more than 99% of RubySpecs. Try out the new Ruby and let us know via -[our issue tracker][3] if you have any issues. - -## Download - -* [ruby-1.9.2-rc2.tar.bz2][4] - * SIZE: 8480974 bytes - * MD5: 4e4906d0aab711286b31f5a834860cc3 - * SHA256: 692ebae991b104482dc9f0d220c1afb6b690a338b3b815aaa4f62954d2fa1b4a - -* [ruby-1.9.2-rc2.tar.gz][5] - * SIZE: 10781884 bytes - * MD5: d12cd39eee4d99bc54b52aba5a0ba4e1 - * SHA256: 5d523d99f928705ac1de84ade03283c468415c00f8b6755a8dd7a140828869b4 - -* [ruby-1.9.2-rc2.zip][6] - * SIZE: 12161233 bytes - * MD5: 05229b43981e4e5ce58b5fb2e98eee52 - * SHA256: 33f7f4cdd8444c2594728f70ac07477575a7cba5e7756bd3645f23e52605618c - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_rc2/NEWS -[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_rc2/ChangeLog -[3]: https://bugs.ruby-lang.org/projects/show/ruby-19/ -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc2.tar.bz2 -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc2.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-rc2.zip diff --git a/fa/news/_posts/2010-08-16-ruby-1-8-7-p302-is-released.md b/fa/news/_posts/2010-08-16-ruby-1-8-7-p302-is-released.md deleted file mode 100644 index 46dbab7a40..0000000000 --- a/fa/news/_posts/2010-08-16-ruby-1-8-7-p302-is-released.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7-p302 is released" -author: "maki" -lang: en ---- - -Ruby 1.8.7-p302 has been released([\[ruby-talk:367769\]][1]). This is a -security fix for CVE-2010-0541. See [the vulnerability report][2] for -more details. - -I recommend all Ruby 1.8.7 users to upgrade the 1.8.7 to p302. - -## Downloads - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.bz2>][3] - -SIZE(ruby-1.8.7-p302.tar.bz2): -: 4184764 bytes - -MD5(ruby-1.8.7-p302.tar.bz2): -: a6a9e37079ed8cf8726b455dad3de939 - -SHA256(ruby-1.8.7-p302.tar.bz2): -: 3537cc81cc2378a2bc319cd16c4237ddee14a2839cfd1515b27dce108d061a68 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.gz>][4] - -SIZE(ruby-1.8.7-p302.tar.gz): -: 4866763 bytes - -MD5(ruby-1.8.7-p302.tar.gz): -: f446550dfde0d8162a6ed8d5a38b3ac2 - -SHA256(ruby-1.8.7-p302.tar.gz): -: 5883df5204de70762602ce885b18c8bf6c856d33298c35df9151031b2ce044a1 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.zip>][5] - -SIZE(ruby-1.8.7-p302.zip): -: 5965421 bytes - -MD5(ruby-1.8.7-p302.zip): -: 56cb754af4bbd5ec3bfbdb8af3ee72a7 - -SHA256(ruby-1.8.7-p302.zip): -: f50d6ae1a7247674b6a07e54cbd6704a6951ba20277cd7dc23d1453ffe00fedb - - - -[1]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/367769 -[2]: {{ site.url }}/en/news/2010/08/16/xss-in-webrick-cve-2010-0541/ -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.gz -[5]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.zip diff --git a/fa/news/_posts/2010-08-16-ruby-1-9-1-p430-is-released.md b/fa/news/_posts/2010-08-16-ruby-1-9-1-p430-is-released.md deleted file mode 100644 index bc869e647d..0000000000 --- a/fa/news/_posts/2010-08-16-ruby-1-9-1-p430-is-released.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.1-p430 is released" -author: "Yugui" -lang: en ---- - -Ruby 1.9.1-p430 has been released. This is a security fix for -CVE-2010-0541. See [the vulnerability report][1] for more details. - -I recommend all Ruby 1.9.1 users to upgrade the 1.9.1 to p430. - -### Downloads - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.bz2>][2] - SIZE - : 7299829 bytes - - MD5 - : f855103aebeb3318dccb409319b547a0 - - SHA256 - : 8d5cc11d819e476fb651db783f714cc4100922f47447f7acdce87ed769cf9d97 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.gz>][3] - SIZE - : 9078229 bytes - - MD5 - : 093d17e911b1f7306de95422ec332826 - - SHA256 - : 6d28120e792a4a1cf32dd5f90c1643ecb48760157322a1bb267dd784d14fcb3a - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.zip>][4] - SIZE - : 10347823 bytes - - MD5 - : a16d7e3ef2ddbf230cb4dab6c917c8aa - - SHA256 - : 004713d27bfd1ccadf656e88f23d9a78ff5f9265079e8ce947faa6fff0da40d6 - - - -[1]: {{ site.url }}/en/news/2010/08/16/xss-in-webrick-cve-2010-0541/ -[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.gz -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.zip diff --git a/fa/news/_posts/2010-08-16-xss-in-webrick-cve-2010-0541.md b/fa/news/_posts/2010-08-16-xss-in-webrick-cve-2010-0541.md deleted file mode 100644 index 31510fcbf8..0000000000 --- a/fa/news/_posts/2010-08-16-xss-in-webrick-cve-2010-0541.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: news_post -title: "XSS in WEBrick (CVE-2010-0541)" -author: "Yugui" -lang: en ---- - -A possible security vulnerability on WEBrick. The vulnerability has been -reported as [CVE-2010-0541][1]. - -### CVE-2010-0541 - -#### Description - -WEBrick have had a cross-site scripting vulnerability that allows an -attacker to inject arbitrary script or HTML via a crafted URI. This does -not affect user agents that strictly implement HTTP/1.1, however, some -user agents do not. - -The affected versions are: - -* Ruby 1.8.6-p399 or any prior releases. -* Ruby 1.8.7-p299 or any prior releases. -* Ruby 1.9.1-p429 or any prior releases. -* Ruby 1.9.2 RC2 or any prior releases. -* Development versions of Ruby 1.9 (1.9.3dev). - -We recommend you to upgrade your ruby to the newest patch level -releases. - -#### Solutions - -* Fixes for 1.8.6, 1.8.7 and 1.9.1 are to follow this announce. - * 1\.8.6: - * 1\.8.7: please upgrade to [1.8.7 patchlevel 302][2] - * 1\.9.1: please upgrade to [1.9.1 patchlevel 430][3] - -* For development versions, please update to the most recent revision - for each development branch. -* You can also fix the vulnerability by applying a patch to - `$(libdir)/ruby/${ruby_version}/webrick/httpresponse.rb`. - The patch is available at - [<URL:https://cache.ruby-lang.org/pub/misc/webrick-cve-2010-0541.diff>][4]. - It is written by Hirokazu NISHIO. - - SIZE: - : 466 bytes - - MD5: - : 395585e1aae7ddef842f0d1d9f5e6e07 - - SHA256: - : 6bf7dea0fc78f0425f5cbb90f78c3485793f27bc60c11244b6ba4023445f3567 - -#### Credit - -The vulnerability was found by Apple and reported to the Ruby security -team by Hideki Yamane. <sup>[\*1](#fn1)</sup> - -### Updates - -* Originally published at 2010-08-16 10:26:03 JST. -* 1\.9.1 patchlevel 430 released -* 1\.8.7 patchlevel 301 released -* 1\.8.7 patchlevel 302 released because pl301 was broken. Please use it - instead. - -* * * - -<sup>\*1</sup> <small>[\[ruby-dev:42003\]][5]</small> -{: #fn1} - - - -[1]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-0541 -[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/367769 -[3]: {{ site.url }}/en/news/2010/08/16/ruby-1-9-1-p430-is-released/ -[4]: https://cache.ruby-lang.org/pub/misc/webrick-cve-2010-0541.diff -[5]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/42003 diff --git a/fa/news/_posts/2010-08-18-ruby-1-9-2-released.md b/fa/news/_posts/2010-08-18-ruby-1-9-2-released.md deleted file mode 100644 index 743b575af1..0000000000 --- a/fa/news/_posts/2010-08-18-ruby-1-9-2-released.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.2 is released" -author: "Yugui" -lang: en ---- - -Ruby 1.9.2 is released. This is the latest stable version of 1.9 series. - -### About Ruby 1.9.2 - -The new 1.9.2 is almost compatible with 1.9.1, except these changes: - -* Many new methods -* New socket API (improved IPv6 support) -* New encodings -* New Random class which supports several random numbers generators -* Time is reimplemented. The bug with year 2038 is fixed. -* regex improvements -* $: doesn\'t include the current directory. -* dl is reimplemented on top of libffi. -* new psych library wrapping libyaml which can replace syck. - -See [NEWS][1] and [ChangeLog][2] for more detailed information. - -Ruby 1.9.2 passes more than 99% of [RubySpec][3]. - -### Supported platforms - -Ruby 1.9 supports four levels. - -Supported -: We\'ve checked that Ruby 1.9.2 works well on most of them. - - * Debian GNU/Linux 5.0 на IA32. - -Efforts made for -: We\'ve checked that Ruby 1.9.2 works well on most of them. - - * mswin32, x64-mswin64, mingw32 - * MacOS X 10.5 (Intel) and 10.6 - * FreeBSD 6 and later (amd64, IA32) - * Solaris 10 - * Symbian OS - -Efforts made for -: We\'ve checked that Ruby 1.9.2 works well on most of them with small - modifications. Patches are accepted. - - * Other Linux distributions - * Other versions of MacOS X. - * cygwin - * AIX 5 - * Other POSIX-compatible systems - * BeOS (Haiku) - -### FAQ - -Standard library is installed in /usr/local/lib/ruby/1.9.1 -: This version is a \"library compatible version.\" Ruby 1.9.2 is almost - 1.9.1 compatible, so the library is installed in the 1.9.1 directory. - -It causes a LoadError -: `$:` doesn\'t include the current directory. Some script may need - modifications to work properly. - -### Downloads - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.bz2>][4] - SIZE - : 8495472 bytes - - MD5 - : d8a02cadf57d2571cd4250e248ea7e4b - - SHA256 - : e9710990ed8c2e794123aba509010471915fb13c27dae0118831d2001a9c8d3b - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.gz>][5] - SIZE - : 10787899 bytes - - MD5 - : 755aba44607c580fddc25e7c89260460 - - SHA256 - : 8c0c4e261a921b5c406bf9e76ac23bf3c915651534e9d1b9e8c5d0bee4a7285c - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.zip>][6] - SIZE - : 12159728 bytes - - MD5 - : e57a393ccd62ddece4c63bd549d8cf7f - - SHA256 - : e61521af06da71fde9f0c7c08baaf7415614d00c86ec5a7ab08b60a4f3185b2a - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/NEWS -[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/ChangeLog -[3]: https://github.com/ruby/spec -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.bz2 -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.zip diff --git a/fa/news/_posts/2010-10-01-see-matz-in-san-francisco-or-silicon-valley.md b/fa/news/_posts/2010-10-01-see-matz-in-san-francisco-or-silicon-valley.md deleted file mode 100644 index c0134cd244..0000000000 --- a/fa/news/_posts/2010-10-01-see-matz-in-san-francisco-or-silicon-valley.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: news_post -title: "See Matz in San Francisco or Silicon Valley" -author: "James Edward Gray II" -lang: en ---- - -Matz is visiting San Francisco and Silicon Vally on October 7th and -11th. He will be talking about new opportunities for Ruby such as -embedded applications, cloud computing, and super computing. Keynote -Speech is “Ruby 2.0 What we want to accomplish in the near future.” Not -only Matz but some cool startups from Fukuoka, Japan will give a demo on -some of their latest developments using Ruby. For more info, please go -to [http://investfk.com/][1]. - -By the way, the reason why Matz is coming with startups from Fukuoka is -Fukuoka is the only prefecture that has governmental Ruby committee in -Japan. Fukuoka is one of the most enthusiastic city in Japan in terms of -Ruby. - - - -[1]: http://investfk.com/ diff --git a/fa/news/_posts/2010-11-17-fukuoka-ruby-award-2011.md b/fa/news/_posts/2010-11-17-fukuoka-ruby-award-2011.md deleted file mode 100644 index 305d06761c..0000000000 --- a/fa/news/_posts/2010-11-17-fukuoka-ruby-award-2011.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: news_post -title: "Fukuoka Ruby Award 2011 Competition - Grand Prize, $12,000!" -author: "James Edward Gray II" -lang: en ---- - -Even though it’s last minute, if you are Ruby Rock Star, you have a -chance to win a 1,000,000 Japanese Yen (approximately 12,000 U.S. -dollars!). The Government of Fukuoka Japan (the Fukuoka Ruby Business -Hub Promotion Committee) is hosting the Fukuoka Ruby Award 2011 -Competition. Not only the big prize, but also the inventor and creator -of Ruby, Matz will be testing and reviewing your source code thoroughly. -So it’s very meaningful to apply. The official deadline is November -15th, but they will accept the late entries from the U.S. specially up -until the end of this month(11/30). There aren’t many applicants at this -point (less than 10). Which means you have a very high chance to win the -prize! So, hurry up! It’s Free to enter! Please see [this page][1] for -more details. - - - -[1]: http://www.f-ruby.com/en/news/information/11 diff --git a/fa/news/_posts/2010-12-25-ruby-1-8-7-p330-released.md b/fa/news/_posts/2010-12-25-ruby-1-8-7-p330-released.md deleted file mode 100644 index 90de9e896b..0000000000 --- a/fa/news/_posts/2010-12-25-ruby-1-8-7-p330-released.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7-p330 released" -author: "Urabe Shyouhei" -lang: en ---- - -Here you are an annual release of 1.8.7 updates. - -### Downloads - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.gz][1] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.bz2][2] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.zip][3] - -### Checksums - - MD5(ruby-1.8.7-p330.tar.gz)= 50a49edb787211598d08e756e733e42e - SHA256(ruby-1.8.7-p330.tar.gz)= 6c261a463b5ffce1dc0920c980218379479dbdf94866d5ed53f1c71f1407c561 - SIZE(ruby-1.8.7-p330.tar.gz)= 4873383 - - MD5(ruby-1.8.7-p330.tar.bz2)= 2689719fb42c8cf0aa336f8c8933f413 - SHA256(ruby-1.8.7-p330.tar.bz2)= 486c73b023b564c07e062e2e61114e81de970913b04fac6798d0fbe8b7723790 - SIZE(ruby-1.8.7-p330.tar.bz2)= 4191156 - - MD5(ruby-1.8.7-p330.zip)= 537d424438a0fefe40bed91b022592d6 - SHA256(ruby-1.8.7-p330.zip)= 18df0d26d10a9be32275ba7b39ffd222a153fcc4669e4b772eab142d7e7bde90 - SIZE(ruby-1.8.7-p330.zip)= 5972777 - -It is worth noting that, though Ruby project experienced license change -recently (from GPLv2 to 2-clause BSDL) and this is the first time since -then to release something, that change do not reach to already-released -versions like 1.8.7, Matz said to us. So you do not have to worry about -it. If you are already using 1.8.7, you can continue using it. - -Thank you, happy holidays. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.gz -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.zip diff --git a/fa/news/_posts/2010-12-25-ruby-1-9-2-p136-is-released.md b/fa/news/_posts/2010-12-25-ruby-1-9-2-p136-is-released.md deleted file mode 100644 index 1ce53df5f1..0000000000 --- a/fa/news/_posts/2010-12-25-ruby-1-9-2-p136-is-released.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.2-p136 is released" -author: "Yugui" -lang: en ---- - -Ruby 1.9.2-p136 has been released. This is the second release of Ruby 1.9.2. It fixes many bugs found in -1.9.2-p0. See [ChangeLog][1] for more detail. - -### Download - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.bz2>][2] - SIZE - : 8819324 bytes - - MD5 - : 52958d35d1b437f5d9d225690de94c13 - - SHA256 - : 33092509aad118f07f0483a3db1d4c5adaccf4bb0324cd43f44e3bd3dd1858cb - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.gz>][3] - SIZE - : 11155066 bytes - - MD5 - : 6e17b200b907244478582b7d06cd512e - - SHA256 - : c4314df44f3ab81230685fb51c296ce21034f4c719e2fcc0baba221d19f28746 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.zip>][4] - SIZE - : 12566581 bytes - - MD5 - : f400021058e886786ded510a9f45b2c6 - - SHA256 - : 84ffc047b29032ba848dbbf50d3302de7ac732db1448e57303c27ad4b47c2c5b - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_136/ChangeLog -[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.tar.gz -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p136.zip diff --git a/fa/news/_posts/2011-02-18-exception-methods-can-bypass-safe.md b/fa/news/_posts/2011-02-18-exception-methods-can-bypass-safe.md deleted file mode 100644 index c49ac2bc79..0000000000 --- a/fa/news/_posts/2011-02-18-exception-methods-can-bypass-safe.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: news_post -title: "Exception methods can bypass $SAFE" -author: "Urabe Shyouhei" -lang: en ---- - -Exception#to\_s method can be used to trick $SAFE check, which makes a untrusted codes to modify arbitrary strings. - -### Detailed description - -In Ruby\'s $SAFE semantics, safe level of 4 is used to run a untrusted -code (such as plugin). So in upper safe levels, some sort of operations -are prohibited to prevent untrusted codes from attacking outer (trusted) -data. - -Exception#to\_s was found to be problematic around it. The method can -trick safe level mechanism and destructively modifies an untaitned -string to be tainted. With this an attacker can modify arbitrary -untainted strings like this: - - $secret_path = "foo" - - proc do - $SAFE = 4 - Exception.new($secret_path).to_s - $secret_path.replace "/etc/passwd" - end.call - - open($secret_path) do - ... - end - -### Affected versions - -Luckily this attack is ineffective for 1.9.x series of ruby. Affected -versions are restricted to: - -* Ruby 1.8.6 patchlevel 420 and all prior versions -* Ruby 1.8.7 patchlevel 330 and all prior versions -* Development versions of Ruby 1.8 (1.8.8dev) - -### Solutions - -Please upgrade to a newer version. - -### Updates - -* 1\.8.7-334 was released to fix this issue. 1.8.7 users are encouraged - to upgrade. - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz][1] - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2][2] - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.zip][3] - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.zip diff --git a/fa/news/_posts/2011-02-18-fileutils-is-vulnerable-to-symlink-race-attacks.md b/fa/news/_posts/2011-02-18-fileutils-is-vulnerable-to-symlink-race-attacks.md deleted file mode 100644 index b3a72c05b2..0000000000 --- a/fa/news/_posts/2011-02-18-fileutils-is-vulnerable-to-symlink-race-attacks.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: news_post -title: "FileUtils is vulnerable to symlink race attacks" -author: "Urabe Shyouhei" -lang: en ---- - -A symlink race condition vulnerability was found in -FileUtils.remove\_entry\_secure. The vulnerability allows local users to -delete arbitrary files and directories. - -### Affected versions - -* Ruby 1.8.6 patchlevel 420 and all prior versions -* Ruby 1.8.7 patchlevel 330 and all prior versions -* Development versions of Ruby 1.8 (1.8.8dev) -* Ruby 1.9.1 patchlevel 430 and all prior versions -* Ruby 1.9.2 patchlevel 136 and all prior versions -* Development versions of Ruby 1.9 (1.9.3dev) - -### Solutions - -We have fixed this situation. All affected users are encouraged to -upgrade their ruby installation. - -But please also note, that symlink race attacks are unavoidable when any -of upper directories from where you want to delete are owned by someone -you cannot trust. So if you want to be secure, you must ensure that -**ALL** parent directories cannot be moved by other untrusted users. For -example, parent directories should not be owned by untrusted users, and -should not be world writable except when the sticky bit set. - -### Updates - -* Fixed typo. (vulnerable -> vulnerable) -* 1\.8.7-334 was released to fix this issue. 1.8.7 users are encouraged - to upgrade. - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz][1] - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2][2] - * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.zip][3] - -* 1\.9.1-p431 was released to fix this issue. 1.9.1 users are encouraged - to upgrade. - * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.gz][4] - * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.bz2][5] - * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.zip][6] - -* 1\.9.2-p180 was released to fix this issue. 1.9.2 users are encouraged - to upgrade. - * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.gz][7] - * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.bz2][8] - * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.zip][9] - -* Fixed affected versions for 1.9 series. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.zip -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.gz -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.bz2 -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.zip -[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.gz -[8]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.bz2 -[9]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.zip diff --git a/fa/news/_posts/2011-02-22-planned-maintenance-of-redmine-ruby-lang-org.md b/fa/news/_posts/2011-02-22-planned-maintenance-of-redmine-ruby-lang-org.md deleted file mode 100644 index abfdbb9ba2..0000000000 --- a/fa/news/_posts/2011-02-22-planned-maintenance-of-redmine-ruby-lang-org.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "Planned maintenance of redmine.ruby-lang.org" -author: "Yugui" -lang: en ---- - -[Ruby\'s issue tracker][1] will be down from 2011-02-23 10:00+09:00 to -24:00 for planned maintenance. - -If you have any issue to report, I am afraid but please post a mail to -[ruby-core](mailto:ruby-core@ruby-lang.org) mailing list or wait for -my finishing maintenance. - - - -[1]: https://bugs.ruby-lang.org diff --git a/fa/news/_posts/2011-07-02-ruby-1-8-7-p352-released.md b/fa/news/_posts/2011-07-02-ruby-1-8-7-p352-released.md deleted file mode 100644 index c011dd763c..0000000000 --- a/fa/news/_posts/2011-07-02-ruby-1-8-7-p352-released.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7-p352 released" -author: "Urabe Shyouhei" -lang: en ---- - -Ruby 1.8.7 was released on June 1st, 2008. In commemoration of the third -anniversary of Ruby 1.8.7, we have a new patchlevel release today. It -includes several bug fixes. For the detail please read the -[ChangeLog][1]. - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.gz][2] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.bz2][2] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.zip][2] - -### Checksums: - - MD5(ruby-1.8.7-p352.tar.gz)= 0c33f663a10a540ea65677bb755e57a7 - SHA256(ruby-1.8.7-p352.tar.gz)= 2325b9f9ab2af663469d057c6a1ef59d914a649808e9f6d1a4877c8973c2dad0 - SIZE(ruby-1.8.7-p352.tar.gz)= 4894181 - - MD5(ruby-1.8.7-p352.tar.bz2)= 0c61ea41d1b1183b219b9afe97f18f52 - SHA256(ruby-1.8.7-p352.tar.bz2)= 9df4e9108387f7d24a6ab8950984d0c0f8cdbc1dad63194e744f1a176d1c5576 - SIZE(ruby-1.8.7-p352.tar.bz2)= 4207576 - - MD5(ruby-1.8.7-p352.zip)= 6f745837e50a86fe0c924dccfa65b4ec - SHA256(ruby-1.8.7-p352.zip)= 24fd9eb8734fd81a51806d16bf3a5624e87a58b877a9a9affb1f6c6158cad5c9 - SIZE(ruby-1.8.7-p352.zip)= 5993612 - -Thank you for all the efforts you made in these three years. - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_352/ChangeLog -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.gz diff --git a/fa/news/_posts/2011-07-15-ruby-1-9-2-p290-is-released.md b/fa/news/_posts/2011-07-15-ruby-1-9-2-p290-is-released.md deleted file mode 100644 index 8363c0ef69..0000000000 --- a/fa/news/_posts/2011-07-15-ruby-1-9-2-p290-is-released.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.2-p290 is released" -author: "Shota Fukumori" -lang: en ---- - -Ruby 1.9.2-p290 is released. - -This release doesn\'t include any security fixes, but many bugs are -fixed in this release. - -See [ChangeLog][1] for details. - -### Downloads - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.bz2>][2] - SIZE - : 8811237 bytes - - MD5 - : 096758c3e853b839dc980b183227b182 - - SHA256 - : 403b3093fbe8a08dc69c269753b8c6e7bd8f87fb79a7dd7d676913efe7642487 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz>][3] - SIZE - : 11182217 bytes - - MD5 - : 604da71839a6ae02b5b5b5e1b792d5eb - - SHA256 - : 1cc817575c4944d3d78959024320ed1d5b7c2b4931a855772dacad7c3f6ebd7e - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.zip>][4] - SIZE - : 12600100 bytes - - MD5 - : 6060b410aa15d09ac13b93033b8b5c66 - - SHA256 - : bce3d1c8c78fbafb6a0d67df2b8dec5322301f7b4b0f7594656ad689e9cb461d - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_290/ChangeLog -[2]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.bz2 -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.zip diff --git a/fa/news/_posts/2011-08-01-ruby-1-9-3-preview1-has-been-released.md b/fa/news/_posts/2011-08-01-ruby-1-9-3-preview1-has-been-released.md deleted file mode 100644 index 94b4768560..0000000000 --- a/fa/news/_posts/2011-08-01-ruby-1-9-3-preview1-has-been-released.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3 preview1 has been released" -author: "Moru" -lang: en ---- - -Ruby 1.9.3 preview1 has been released. This is a first preview of next -version and there\'re still minor known issues. But it will be fixed in -next release, Ruby 1.9.3-p0. - -See [ChangeLogs][1] and [NEWS][2] for the descriptions. - -Ruby Inside has published [a review of this release][3]. - -## Downloads - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.tar.bz2>][4] - SIZE: 9507455 bytes - MD5: 7d93dc773c5824f05c6e6630d8c4bf9b - SHA256: a15d7924d74a45ffe48d5421c5fc4ff83b7009676054fa5952b890711afef6fc - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.tar.gz>][5] - SIZE: 12186410 bytes - MD5: 0f0220be4cc7c51a82c1bd8f6a0969f3 - SHA256: 75c2dd57cabd67d8078a61db4ae86b22dc6f262b84460e5b95a0d8a327b36642 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.zip>][6] - SIZE: 13696708 bytes - MD5: 960e08b2dc866c9987f17d0480de63a1 - SHA256: 249483f88156b4ae65cd45742c6f6316660f793b78739657596c63b86f76aaeb - -## Differences from previous version - -Previous Ruby versions was licensed under \"GPLv2\" and \"Ruby\" license -but \"2-clause BSDL\"(AKA Simplfied BSD License) and \"Ruby\" license -been replacement of them. - -### Encoding - -SJIS changed to alias for Windows-31J, instead of Shift\_JIS. - -### Standard Libraries - -* io/console: Add capabilities to IO instances. -* openssl -* test/unit: supports parallel test - -### Other changes - -* pathname and date are re-implemented on current preview. -* A purpose of VM locking is changed. - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_preview1/ChangeLog -[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_preview1/NEWS -[3]: http://www.rubyinside.com/ruby-1-9-3-preview-1-released-5229.html -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.tar.bz2 -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-preview1.zip diff --git a/fa/news/_posts/2011-08-11-confoo-2012-call-for-papers-is-now-open.md b/fa/news/_posts/2011-08-11-confoo-2012-call-for-papers-is-now-open.md deleted file mode 100644 index 9ca0b73b09..0000000000 --- a/fa/news/_posts/2011-08-11-confoo-2012-call-for-papers-is-now-open.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: news_post -title: "ConFoo 2012: Call for Papers is Now Open!" -author: "James Edward Gray II" -lang: en ---- - -We are looking for the best speakers willing to share their skills and -experience with developers and managers. - -This year, ConFoo is dedicated to software development, project -management and best practices. - -The technical part covers different aspects of Web development such as: -Ruby , PHP, Python, .Net, Java, security, content management systems, -frameworks, databases, system administration, Web standards, mobile -development, accessibility and software architecture. - -The management and best practices parts includes: project management, -agile methodology, referencing (SEO), Web marketing analysis, social -networking, and start-ups. - -The conference will be held in Montreal from February 29th to March -2<sup>nd</sup>, 2012 at the prestigious Hotel Hilton Bonaventure and -will be preceded by a few days of training. - -Talk proposals must received by September 2<sup>nd</sup>, 2011. - -Visit [ConFoo.ca][1] in order to submit a proposal. - - - -[1]: http://confoo.ca/ diff --git a/fa/news/_posts/2011-09-24-ruby-1-9-3-rc1-has-been-released.md b/fa/news/_posts/2011-09-24-ruby-1-9-3-rc1-has-been-released.md deleted file mode 100644 index 81c8170f81..0000000000 --- a/fa/news/_posts/2011-09-24-ruby-1-9-3-rc1-has-been-released.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3 rc1 has been released" -author: "Shota Fukumori" -lang: en ---- - -Ruby 1.9.3 rc1 has been released. This is a second preview of next -version and there\'re still minor known issues. But it will be fixed in -next release, ruby 1.9.3-p0. - -See [ChangeLogs][1] and [NEWS][2] for the descriptions. - -## Locations - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.tar.bz2>][3] - SIZE: 9552727 bytes - MD5: 26f0dc51ad981e12c58b48380112fa4d - SHA256: 951a8810086abca0e200f81767a518ee2730d6dc9b0cc2c7e3587dcfc3bf5fc8 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.tar.gz>][4] - SIZE: 12224459 bytes - MD5: 46a2a481536ca0ca0b80ad2b091df68e - SHA256: bb1ae474d30e8681df89599520e766270c8e16450efdc01e099810f5e401eb94 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.zip>][5] - SIZE: 13696517 bytes - MD5: 9c787f5e4963e54d1a11985a73467342 - SHA256: 8e9219b7e6f78a9e171740cbbb3787047383c281c290504dd0e4d8318607a74b - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_rc1/ChangeLog -[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_rc1/NEWS -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.tar.gz -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.zip diff --git a/fa/news/_posts/2011-10-06-plans-for-1-8-7.md b/fa/news/_posts/2011-10-06-plans-for-1-8-7.md deleted file mode 100644 index a1ee0e1625..0000000000 --- a/fa/news/_posts/2011-10-06-plans-for-1-8-7.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: news_post -title: "Plans for 1.8.7" -author: "Urabe Shyouhei" -lang: en ---- - -Hello, and thank you for your getting into our community. - -I know most of you more or less use version 1.8.7 of Ruby today. It was -released in 2008 and was a state-of-art Ruby release back then. -- I am -proud to say it is no longer. Ruby\'s core developers have been actively -working on their new version, 1.9, and they are about to release new -1.9.3. I have been using 1.9 for years and now I cannot go back to the -days without it. Rich features. Faster execution. Rubygems integrated. -Rails works perfectly. I cannot but say it is totally wonderful. -Everyone please, use 1.9. - -But at the same time I know you cannot switch to 1.9 right now for -various reasons. Maybe you have already deployed your application with -1.8.7. Maybe you use a 3rd party library and that is for 1.8.7 only. Or -maybe your Linux distribution only supports 1.8.7. So I hereby announce -you how long you can stick to it. It is OK if you are using 1.8.7 today -but after a while, it will be shut down. - -Please be ready. - -Schedule: - -* We continue to provide normal maintenance for 1.8.7 as usual, until - June 2012. You can safely assume we provide bugfixes and no - incompatibility shall be introduced. - -* After that we stop bugfixes. We still provide security fixes until - June 2013, in case you are still using 1.8.7. - -* We will no longer support 1.8.7 in all senses after June 2013. - diff --git a/fa/news/_posts/2011-10-12-programming-competitions-with-matz.md b/fa/news/_posts/2011-10-12-programming-competitions-with-matz.md deleted file mode 100644 index c47e3f5093..0000000000 --- a/fa/news/_posts/2011-10-12-programming-competitions-with-matz.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: news_post -title: "Upcoming Ruby Programming Competitions with Matz - Grand Prize - 1,000,000 JPY!" -author: "James Edward Gray II" -lang: en ---- - -Dear Ruby Enthusiasts: - -The Government of Fukuoka, Japan together with \"Matz\" Matsumoto would -like to invite you to enter the following Ruby competitions. If you have -developed an interesting Ruby program, please be encouraged to apply. - -* Silicon Valley Competition (November 3, 2011 in Silicon Valley), Entry - Deadline: October 17, 2011 - -Selected finalists will present their Ruby programs in front of Matz on -November 3, 2011 in Silicon Valley (exact location to be announced -later). Matz, together with a panel of judges, will select the winner. -The winner will be invited to Fukuoka, Japan for an award ceremony to be -held in March 2012 (hotel and airfare paid). If you enter the Silicon -Valley competition, you will also be automatically entered in the -Fukuoka competition described below. - -* Fukuoka Competition - Grand Prize - 1 Million Yen! (March 2012 in - Fukuoka, Japan), Entry Deadline: November 15, 2011 - -You can enter the Fukuoka competition exclusively, or enter the above -Silicon Valley Competition and be automatically entered in the Fukuoka -Competition. Matz and a group of panelists will select the winners of -the Fukuoka Competition. The grand prize winner will be invited to -attend the award ceremony in Fukuoka, Japan in March 2012 (hotel and -airfare paid). The grand prize for the Fukuoka Competition is 1 million -yen(approximately $13,000!). Past grand prize winners include Rhomobile -(USA) and APEC Climate Center (Korea). - -Programs entered in these competitions do not have to be written -entirely in Ruby but should take advantage of the unique characteristics -of Ruby. Projects must have been developed or completed within the past -12 months to be eligible. - -Please visit the following Fukuoka website for additional details or to -enter: - -[http://www.myfukuoka.com/events/2012-fukuoka-ruby-award-competition][1] - -Cheers. - - - -[1]: http://www.myfukuoka.com/events/2012-fukuoka-ruby-award-competition diff --git a/fa/news/_posts/2011-10-31-ruby-1-9-3-p0-is-released.md b/fa/news/_posts/2011-10-31-ruby-1-9-3-p0-is-released.md deleted file mode 100644 index 2177ac2749..0000000000 --- a/fa/news/_posts/2011-10-31-ruby-1-9-3-p0-is-released.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3 p0 is released" -author: "Shota Fukumori" -lang: en ---- - -Ruby 1.9.3 p0 is released. This is the latest stable version of 1.9 -series. - -See [ChangeLogs][1] and [NEWS][2] for the descriptions. - -## Locations - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.bz2>][3] - SIZE: 9554576 bytes - MD5: 65401fb3194cdccd6c1175ab29b8fdb8 - SHA256: ca8ba4e564fc5f98b210a5784e43dfffef9471222849e46f8e848b37e9f38acf - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz>][4] - SIZE: 12223217 bytes - MD5: 8e2fef56185cfbaf29d0c8329fc77c05 - SHA256: 3b910042e3561f4296fd95d96bf30322e53eecf083992e5042a7680698cfa34e - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.zip>][5] - SIZE: 13691314 bytes - MD5: 437ac529a7872c8dcc956eab8e7e6f76 - SHA256: 1be16d0172e9cf9e5078a7bee2465a9f3af431920e1e3d9417a4fc2ee074bca4 - - - -[1]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/ChangeLog -[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/NEWS -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.zip diff --git a/fa/news/_posts/2011-12-28-denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815.md b/fa/news/_posts/2011-12-28-denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815.md deleted file mode 100644 index 9f6bcf3a5e..0000000000 --- a/fa/news/_posts/2011-12-28-denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: news_post -title: "Denial of service attack was found for Ruby's Hash algorithm (CVE-2011-4815)" -author: "Urabe Shyouhei" -lang: en ---- - -#### Impact - -This is something related to computational complexity. Specially crafted -series of strings that intentionally collide their hash values each -other was found. With such sequences an attacker can issue a denial of -service attack by, for instance, giving them as POST parameters of HTTP -requests for your Rails application. - -#### Detailed description - -The situation is similar to the one found for Perl in 2003. In 1.8 -series of Ruby, we use a deterministic hash function to hash a string. -Here the \"deterministic\" means no other bits of information than the -input string itself is involved to generate a hash value. So you can -precalculate a string\'s hash value beforehand. By collecting a series -of strings that have the identical hash value, an attacker can let ruby -process collide bins of hash tables (including `Hash` class instances). -Hash tables\' amortized O(1) attribute depends on uniformity of -distribution of hash values. By giving such crafted input, an attacker -can let hash tables work much slower than expected (namely -O(n<sup>2</sup>) to construct a n-elements table this case). - -#### Affected versions - -* Ruby 1.8.7-p352 and all prior versions. - -All Ruby 1.9 series are not affected by this kind of attack. They do not -share hash implementations with Ruby 1.8 series. - -#### Solution - -Our solution is to scramble the string hash function by some -PRNG-generated random bits. By doing so a string\'s hashed value is no -longer deterministic. That is, a `String#hash` result is consistent only -for current process lifetime and will generate a different number for -the next boot. To break this situation an attacker must create a set of -strings which are robust to this kind of scrambling. This is believed to -be quite difficult. - -Please upgrade to [ruby 1.8.7-p357][1]. - -#### Notes - -* Bear in mind that the solution *does* *not* *mean* our hash algorithm - is cryptographically secure. To put it simple, we fixed the hash table - but we didn\'t fix `String#hash` weakness. An attacker could still - exploit it once he / she got a pair of a string and its hash value - returned from `String#hash`. You *must* *not* disclose `String#hash` - outputs. If you need to do such things, consider using secure hash - algorithms instead. Some of them (such as SHA256) are provided in - Ruby\'s standard library. - -* For those who knows alternative hash algorithms inside our code base: - we do not support them (they are disabled by default). By choosing - them we consider you can read C, and you can understand what was wrong - with the default one. Make sure that your choice is safe at your own - risk. - -#### Credit - -Credit to Alexander Klink -[alexander.klink@nruns.com](mailto:alexander.klink@nruns.com) and Julian -Waelde -[jwaelde@cdc.informatik.tu-darmstadt.de](mailto:jwaelde@cdc.informatik.tu-darmstadt.de) -for reporting this issue. - -**EDIT** some related links: - -* [CVE-2011-4815][2] is assigned to this issue. -* oCERT.org published [an advisory][3] about it. -* JRuby released [version 1.6.5.1][4] to fix the identical issue. Other - ruby alternatives might also suffer. -* Twitter account [@hashDoS][5] collects informations about hash - colliision attacks. - - - -[1]: http://mla.n-z.jp/?ruby-talk=391606 -[2]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-4815 -[3]: http://www.ocert.org/advisories/ocert-2011-003.html -[4]: http://jruby.org/2011/12/27/jruby-1-6-5-1 -[5]: https://twitter.com/#!/hashDoS diff --git a/fa/news/_posts/2012-02-16-ruby-1-9-3-p125-is-released.md b/fa/news/_posts/2012-02-16-ruby-1-9-3-p125-is-released.md deleted file mode 100644 index 54801e0818..0000000000 --- a/fa/news/_posts/2012-02-16-ruby-1-9-3-p125-is-released.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p125 is released" -author: "NARUSE, Yui" -lang: en ---- - -Ruby 1.9.3-p125 is released. - -This release include [a security fixes of the Ruby OpenSSL -extension][1]. And many bugs are fixed in this release. - -== Fixes - -* [Fix for Ruby OpenSSL module: Allow \"0/n splitting\" as a prevention - for the TLS BEAST attack][1] -* Fixed: LLVM/clang support [\[Bug #5076\]][2] -* Fixed: GCC 4.7 support [\[Bug #5851\]][3] -* other bug fixes - -See [tickets][4] and [ChangeLog][5] for details. - -== Downloads - -NOTE: Repackaged on 2012-02-17 02:04:00 UTC to fix [\[Bug #6040\]][6]. - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.bz2][7] - - * SIZE: 9733962 bytes - * MD5: 702529a7f8417ed79f628b77d8061aa5 - * SHA256: c67a59443052b5a9219eb4cee3892bdfbc6f250f0c8e214e02256a4cc7ef5526 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz][8] - - * SIZE: 12278584 bytes - * MD5: e3ea86b9d3fc2d3ec867f66969ae3b92 - * SHA256: 8b3c035cf4f0ad6420f447d6a48e8817e5384d0504514939aeb156e251d44cce - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.zip][9] - - * SIZE: 13742164 bytes - * MD5: 2cff031a8801d91a0a0ca8e9a83e2ec8 - * SHA256: c16423182227c765398723da2419e4e962076778ec5e39417fad564e413fde1d - - - -[1]: {{ site.url }}/en/news/2012/02/16/security-fix-for-ruby-openssl-module/ -[2]: https://bugs.ruby-lang.org/issues/show/5076 -[3]: https://bugs.ruby-lang.org/issues/show/5851 -[4]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 -[5]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_125/ChangeLog -[6]: https://bugs.ruby-lang.org/issues/6040 -[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.bz2 -[8]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz -[9]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.zip diff --git a/fa/news/_posts/2012-02-16-security-fix-for-ruby-openssl-module.md b/fa/news/_posts/2012-02-16-security-fix-for-ruby-openssl-module.md deleted file mode 100644 index 89ed543b94..0000000000 --- a/fa/news/_posts/2012-02-16-security-fix-for-ruby-openssl-module.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: news_post -title: "Security Fix for Ruby OpenSSL module: Allow \"0/n splitting\" as a prevention for the TLS BEAST attack." -author: "Urabe Shyouhei" -lang: en ---- - -In OpenSSL, `SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS` option for SSL -connection is used to prevent TLS-CBC-IV vulnerability described at -[\[1\]][1]. It\'s known issue of TLSv1/SSLv3 but it attracts lots of -attention these days as BEAST attack [\[2\]][2] (CVE-2011-3389). Ruby -related topics are at our issue tracker [\[3\]][3]. - -Until now Ruby OpenSSL extension uses `SSL_OP_ALL` option, the combined -option of OpenSSL for various bug workarounds that should be rather -harmless, for all SSL connection by default. And it only allows users to -add other options so you could not remove the feature that is included -in `SSL_OP_ALL` option, like `SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS`. It -was intentional as it didn\'t expose constants like -`SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS`, but we should allow to unset the -option so that Ruby OpenSSL extension inserts empty fragments at the -beginning of SSL connections (named \"0/n splitting\") to prevent the -TLS BEAST attack. - -[This release][4] defines additional constants and allows users to unset -options in `SSL_OP_ALL`. Default option is still `SSL_OP_ALL` but you -can setup the SSLSocket with doing \"0/n splitting\" for BEAST -prevention like this. - - ctx = SSLContext.new - ctx.options = OP_ALL & ~OP_DONT_INSERT_EMPTY_FRAGMENTS - ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER - SSLSocket.new(socket, ctx) - -Credit to Apple for reporting this issue. - -NOTE: Some SSL endpoints are known to have a bug that cannot handle -\"0/n splitting\" correctly so we (and OpenSSL) do not set this as a -default option. Please test SSL connectivity before enabling this in -production environment. If the other endpoint you\'re connecting cannot -handle \"0/n splitting\", you must use another workaround for preventing -the TLS BEAST attack, like enforcing ciphersuite to use RC4. For -details, please find discussions and resources around CVE-2011-3389. - - - -[1]: http://www.openssl.org/~bodo/tls-cbc.txt -[2]: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-3389 -[3]: https://bugs.ruby-lang.org/5353 -[4]: http://mla.n-z.jp/?ruby-talk=393484 diff --git a/fa/news/_posts/2012-03-29-matz-earns-the-fsfs-2011-free-software-award.md b/fa/news/_posts/2012-03-29-matz-earns-the-fsfs-2011-free-software-award.md deleted file mode 100644 index a39d5f4756..0000000000 --- a/fa/news/_posts/2012-03-29-matz-earns-the-fsfs-2011-free-software-award.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: news_post -title: "Matz Earns the FSF's 2011 Free Software Award" -author: "James Edward Gray II" -lang: en ---- - -The Award for the Advancement of Free Software is given annually to an -individual who has made a great contribution to the progress and -development of free software, through activities that accord with the -spirit of free software. - -This year, it was given to Yukihiro Matsumoto (aka Matz), the creator of -the Ruby programming language. Matz has worked on GNU, Ruby, and other -free software for over 20 years… - -[Read the full article.][1] - - - -[1]: https://www.fsf.org/news/2011-free-software-awards-announced diff --git a/fa/news/_posts/2012-04-10-rubyteach-2012.md b/fa/news/_posts/2012-04-10-rubyteach-2012.md deleted file mode 100644 index f5223a9134..0000000000 --- a/fa/news/_posts/2012-04-10-rubyteach-2012.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: news_post -title: "RubyTeach 2012" -author: "James Edward Gray II" -lang: en ---- - -Vancouver, BC - -May 29th to 31st, 2012 - -RubyTeach is part of DevTeach and it offer 3 days of training between -May 29th and May 31st. A total of 11 sessions on Ruby and over 30 -sessions on Web Development (jQuery, HTML5, CSS) and Agile. The best -experts in the industry are presenting their knowledge and expertise. -This is your chance to learn and network with the experts. - -[Learn more…][1] - - - -[1]: http://devteach.com/RubyTeach/ diff --git a/fa/news/_posts/2012-04-20-ruby-1-9-3-p194-is-released.md b/fa/news/_posts/2012-04-20-ruby-1-9-3-p194-is-released.md deleted file mode 100644 index 8b4f29023c..0000000000 --- a/fa/news/_posts/2012-04-20-ruby-1-9-3-p194-is-released.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p194 is released" -author: "NARUSE, Yui" -lang: en ---- - -Ruby 1.9.3-p194 is released. - -This release include Security Fix for RubyGems: SSL server verification -failure for remote repository. And many bugs are fixed in this release. - -## Security Fix for RubyGems: SSL server verification failure for remote repository - -This release includes two security fixes in RubyGems. - -* Turn on verification of server SSL certs -* Disallow redirects from https to http - -Users who uses https source in .gemrc or /etc/gemrc are encouraged to -upgrade to 1.9.3-p194. - -Following is excerpted from RubyGems 1.8.23 release note \[1\]. - -\"This release increases the security used when RubyGems is talking to -an https server. If you use a custom RubyGems server over SSL, this -release will cause RubyGems to no longer connect unless your SSL cert is -globally valid. - -You can configure SSL certificate usage in RubyGems through the -:ssl\_ca\_cert and :ssl\_verify\_mode options in ~/.gemrc and -/etc/gemrc. The recommended way is to set :ssl\_ca\_cert to the CA -certificate for your server or a certificate bundle containing your CA -certification. - -You may also set :ssl\_verify\_mode to 0 to completely disable SSL -certificate checks, but this is not recommended.\" - -Credit to John Firebaugh for reporting this issue. - -\[1\] -[<URL:https://github.com/rubygems/rubygems/blob/1.8/History.txt>][1] - -## Fixes - -* Security Fix for RubyGems: SSL server verification failure for remote - repository -* other bug fixes - -See [tickets][2] and [ChangeLog][3] for details. - -## Downloads - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.bz2>][4] - * SIZE: 9841223 bytes - * MD5: 2278eff4cfed3cbc0653bc73085caa34 - * SHA256: a9d1ea9eaea075c60048369a63b35b3b5a06a30aa214a3d990e0bb71212db8fa - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz>][5] - * SIZE: 12432239 bytes - * MD5: bc0c715c69da4d1d8bd57069c19f6c0e - * SHA256: 46e2fa80be7efed51bd9cdc529d1fe22ebc7567ee0f91db4ab855438cf4bd8bb - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.zip>][6] - * SIZE: 13898712 bytes - * MD5: 77e67b15234e442d4a3dcc450bc70fea - * SHA256: 77474cfb92385b3a0b4c346553048bc65bfe68d4f220128329671a0234cb124d - - - -[1]: https://github.com/rubygems/rubygems/blob/1.8/History.txt -[2]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 -[3]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_194/ChangeLog -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.bz2 -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.zip diff --git a/fa/news/_posts/2012-04-21-ruby-1-9-2-p320-is-released.md b/fa/news/_posts/2012-04-21-ruby-1-9-2-p320-is-released.md deleted file mode 100644 index c9d2d531f3..0000000000 --- a/fa/news/_posts/2012-04-21-ruby-1-9-2-p320-is-released.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.2-p320 is released" -author: "NARUSE, Yui" -lang: en ---- - -Ruby 1.9.2-p320 is released. - -This release include Security Fix for RubyGems: SSL server verification -failure for remote repository. And many bugs are fixed in this release. - -## Security Fix for RubyGems: SSL server verification failure for remote repository - -This release includes two security fixes in RubyGems. - -* Turn on verification of server SSL certs -* Disallow redirects from https to http - -Users who uses https source in .gemrc or /etc/gemrc are encouraged to -upgrade to 1.9.2-p320 or 1.9.3-p194. - -Following is excerpted from RubyGems 1.8.23 release note \[1\]. - -\"This release increases the security used when RubyGems is talking to -an https server. If you use a custom RubyGems server over SSL, this -release will cause RubyGems to no longer connect unless your SSL cert is -globally valid. - -You can configure SSL certificate usage in RubyGems through the -:ssl\_ca\_cert and :ssl\_verify\_mode options in ~/.gemrc and -/etc/gemrc. The recommended way is to set :ssl\_ca\_cert to the CA -certificate for your server or a certificate bundle containing your CA -certification. - -You may also set :ssl\_verify\_mode to 0 to completely disable SSL -certificate checks, but this is not recommended.\" - -Credit to John Firebaugh for reporting this issue. - -\[1\] -[<URL:https://github.com/rubygems/rubygems/blob/1.8/History.txt>][1] - -## Fixes - -* Security Fix for RubyGems: SSL server verification failure for remote - repository -* other bug fixes - -See [tickets][2] and [ChangeLog][3] for details. - -## Downloads - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.tar.bz2>][4] - * SIZE: 8981382 bytes - * MD5: b226dfe95d92750ee7163e899b33af00 - * SHA256: 6777f865cfa21ffdc167fcc4a7da05cb13aab1bd9e59bfcda82c4b32f75e6b51 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.tar.gz>][5] - * SIZE: 11338691 bytes - * MD5: 5ef5d9c07af207710bd9c2ad1cef4b42 - * SHA256: 39a1f046e8756c1885cde42b234bc608196e50feadf1d0f202f7634f4a4b1245 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.zip>][6] - * SIZE: 12730896 bytes - * MD5: 0bdfd04bfeb0933c0bdcd00e4ea94c49 - * SHA256: 83db9c86d5cf20bb91e625c3c9c1da8e61d941e1bc8ff4a1b9ea70c12f2972d3 - - - -[1]: https://github.com/rubygems/rubygems/blob/1.8/History.txt -[2]: https://bugs.ruby-lang.org/projects/ruby-192/issues?set_filter=1&status_id=5 -[3]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_320/ChangeLog -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.tar.bz2 -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p320.zip diff --git a/fa/news/_posts/2012-05-30-server-maintenance-20120606.md b/fa/news/_posts/2012-05-30-server-maintenance-20120606.md deleted file mode 100644 index 63d66354dd..0000000000 --- a/fa/news/_posts/2012-05-30-server-maintenance-20120606.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: news_post -title: "Server maintenance" -author: "Shugo Maeda" -lang: en ---- - -Services of ruby-lang.org including www, mailing lists, and Subversion will be down for a server maintenance from Wed Jun 06 15:00:00 UTC 2012 until Wed Jun 06 20:00:00 UTC 2012. Sorry for inconvenience. diff --git a/fa/news/_posts/2012-06-02-a-facebook-group.md b/fa/news/_posts/2012-06-02-a-facebook-group.md deleted file mode 100644 index fdef599fb7..0000000000 --- a/fa/news/_posts/2012-06-02-a-facebook-group.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: news_post -title: "A Facebook Group" -author: "James Edward Gray II" -lang: en ---- - -There is a new way to communicate with your fellow Ruby developers. -Introducing the new Facebook group for the [Ruby Programming -Language][1]. This group will allow for developers to communicate with -fellow Ruby programmers and provide a means for collaborative solutions -to problems members may face. It will also serve as source for news -about the Ruby project, and events–such as local workshops–related to -it. I present this group with great excitement and encourage all Ruby -developers to join and invite others. We can create a powerful -community, and the people you meet and work with here could possibly be -recruited for projects you will likely be working on in the future. - - - -[1]: https://www.facebook.com/groups/305156209572202/ diff --git a/fa/news/_posts/2012-06-29-ruby-1-8-7-p370-released.md b/fa/news/_posts/2012-06-29-ruby-1-8-7-p370-released.md deleted file mode 100644 index b78b0a0f23..0000000000 --- a/fa/news/_posts/2012-06-29-ruby-1-8-7-p370-released.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7-p370 released" -author: "Urabe Shyouhei" -lang: en ---- - -As we [posted earlier][1], we provide you a normal bugfix-only relrease -of 1.8.7 now. - -Ruby 1.8.7 was released on June 1st, 2008. This release is to celebrate -its fourth birthday. Thank you all. - -### Downloads - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.gz][2] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.bz2][3] -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.zip][4] - -### Checksums - - MD5(ruby-1.8.7-p370.tar.gz)= 98b00bbd1cdde3116155edb6e555b781 - SHA256(ruby-1.8.7-p370.tar.gz)= bcd8db47adf6f5e3822b60a04785eedb1b97d41fbd7cb595d02759faa36581c6 - SIZE(ruby-1.8.7-p370.tar.gz)= 4897464 - - MD5(ruby-1.8.7-p370.tar.bz2)= 1e4c3194537dd8ff92e756993e55a29d - SHA256(ruby-1.8.7-p370.tar.bz2)= 6359b03a1c8ba16630a96fcb5f972c7af15bd33b752e324cd87964224ab1fe31 - SIZE(ruby-1.8.7-p370.tar.bz2)= 4211597 - - MD5(ruby-1.8.7-p370.zip)= c3a83c3eecf2d361880d0bd68077e93f - SHA256(ruby-1.8.7-p370.zip)= 9505d4d6fe4388d1a05a3a0bbb3b018681f6c6005109af24e22d9397b4341202 - SIZE(ruby-1.8.7-p370.zip)= 5997386 - - - -[1]: {{ site.url }}/en/news/2011/10/06/plans-for-1-8-7/ -[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.zip diff --git a/fa/news/_posts/2012-09-07-confoo-2013call-for-papers-is-now-open.md b/fa/news/_posts/2012-09-07-confoo-2013call-for-papers-is-now-open.md deleted file mode 100644 index 80385b61ab..0000000000 --- a/fa/news/_posts/2012-09-07-confoo-2013call-for-papers-is-now-open.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: news_post -title: "ConFoo 2013—Call for Papers is Now Open!" -author: "James Edward Gray II" -lang: en ---- - -{: style="border:0; float:right" width="180" height="250"}ConFoo is one of the most important developer-oriented conferences and -includes Ruby content. ConFoo 2013 will be held on February 25 through -March 1 in Montreal, Canada. - -The team just opened its call for papers. Candidates can submit -proposals **until September 23**. Consult the [call for papers][1] page -for details and to start submitting. That page also explains what -expenses ConFoo can cover for speakers. You can even get [advice][2] on -how to write proposals. - -The call for papers is public, meaning that all proposals get published -on the website for others to vote and comment on. This approach allows -the organizers to pick subjects that have most interest in the -community. The comments are only visible to speakers and organizers to -avoid influencing the votes. - -To stay in touch via Twitter, follow [@confooca][3] and use the -[#confoo][4] tag. You can also help promote the event with these cool -[badges][5] for your site. - - - -[1]: http://confoo.ca/en/call-for-papers -[2]: http://confoo.ca/en/call-for-papers/guidelines -[3]: http://twitter.com/confooca -[4]: http://twitter.com/#!/search/%23confoo -[5]: http://confoo.ca/en/propaganda diff --git a/fa/news/_posts/2012-10-12-cve-2012-4464-cve-2012-4466.md b/fa/news/_posts/2012-10-12-cve-2012-4464-cve-2012-4466.md deleted file mode 100644 index 7d007468e6..0000000000 --- a/fa/news/_posts/2012-10-12-cve-2012-4464-cve-2012-4466.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: news_post -title: "$SAFE escaping vulnerability about Exception#to_s / NameError#to_s (CVE-2012-4464, CVE-2012-4466)" -author: "usa" -lang: en ---- - -Vulnerabilities found for Exception#to\_s, NameError#to\_s, and -name\_err\_mesg\_to\_s() which is Ruby interpreter-internal API. A -malicious user code can bypass $SAFE check by utilizing one of those -security holes. - -## Details - -Ruby\'s $SAFE mechanism enables untrusted user codes to run in $SAFE ->= 4 mode. This is a kind of sandboxing so some operations are -restricted in that mode to protect other data outside the sandbox. - -The problem found was around this mechanism. Exception#to\_s, -NameError#to\_s, and name\_err\_mesg\_to\_s() interpreter-internal API -was not correctly handling the $SAFE bits so a String object which is -not tainted can destructively be marked as tainted using them. By using -this an untrusted code in a sandbox can modify a formerly-untainted -string destructively. - -Ruby 1.8 once had a [similar security issue][1]. It fixed -Exception#to\_s and NameError#to\_s, but name\_err\_mesg\_to\_str() -issue survived previous security fix. - -## Affected versions - -* all Ruby 1.8.7 prior to patchlevel 371 -* all Ruby 1.9.3 prior to patchlevel 286 -* all development branches of Ruby 2.0 prior to revision r37068 - -## Solution - -Upgrade to a latest version. - -## Credit - -This vulnerability was found by Tyler Hickes. - -## Updates - -* Originally published at 2012-10-12 19:17:50 JST. - - - -[1]: {{ site.url }}/en/news/2011/02/18/exception-methods-can-bypass-safe/ diff --git a/fa/news/_posts/2012-10-12-poisoned-NUL-byte-vulnerability.md b/fa/news/_posts/2012-10-12-poisoned-NUL-byte-vulnerability.md deleted file mode 100644 index 8dc840c73e..0000000000 --- a/fa/news/_posts/2012-10-12-poisoned-NUL-byte-vulnerability.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: news_post -title: "Unintentional file creation caused by inserting an illegal NUL character (CVE-2012-4522)" -author: "usa" -lang: en ---- - -A vulnerability was found that file creation routines can create -unintended files by strategically inserting NUL(s) in file paths. This -vulnerability has been reported as CVE-2012-4522. - -## Details - -Ruby can handle arbitrary binary patterns as Strings, including NUL -chars. On the other hand OSes and other libraries tend not. They usually -treat a NUL as an End of String mark. So to interface them with Ruby, -NUL chars should properly be avoided. - -However methods like IO#open did not check the filename passed to them, -and just passed those strings to lower layer routines. This led to -create unintentional files like this: - - p File.exists?("foo") #=> false - open("foo\0bar", "w") { |f| f.puts "hai" } - p File.exists?("foo") #=> true - p File.exists?("foo\0bar") #=> raises ArgumentError - -## Affected versions - -* All Ruby 1.9.3 prior to patchlevel 286 -* All development branches of Ruby 2.0.0 prior to revision r37163 - -## Solution - -Upgrade to a latest version. - -## Credit - -This issue was reported by Peter Bex. - -## Updates - -* Fixed typo at 2012-10-19 14:54:49 JST. -* Added a mention about CVE number at 2012-10-16 08:58:51 JST. -* Originally published at 2012-10-12 19:19:55 JST. - diff --git a/fa/news/_posts/2012-10-12-ruby-1-9-3-p286-is-released.md b/fa/news/_posts/2012-10-12-ruby-1-9-3-p286-is-released.md deleted file mode 100644 index 792dce5804..0000000000 --- a/fa/news/_posts/2012-10-12-ruby-1-9-3-p286-is-released.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p286 is released" -author: "usa" -lang: en ---- - -Ruby 1.9.3-p286 is released. - -This release includes some security fixes, and many other bug fixes. - -* [$SAFE escaping vulnerability about Exception#to\_s / NameError#to\_s - (CVE-2012-4464, CVE-2012-4466)][1] -* [Unintentional file creation caused by inserting an illegal NUL - character][2] -* many other bug fixes. - -See [tickets][3] and [ChangeLog][4] for details. - -## Download - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.bz2>][5] - * SIZE: 9961862 bytes - * MD5: e76848a86606a4fd5dcf14fc4b4e755e - * SHA256: 5281656c7a0ae48b64f28d845a96b4dfa16ba1357a911265752787585fb5ea64 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.gz>][6] - * SIZE: 12459652 bytes - * MD5: e2469b55c2a3d0d643097d47fe4984bb - * SHA256: e94367108751fd6bce79401d947baa66096c757fd3a0856350a2abd05d26d89d - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.zip>][7] - * SIZE: 13906047 bytes - * MD5: 8b3c2d6bd306804ed198260e4f5b6418 - * SHA256: 9d59c5885e66e6fbfbc49a2b6b80429141f8bdd2827747ec9a4eee7c2252b522 - - - -[1]: {{ site.url }}/en/news/2012/10/12/cve-2012-4464-cve-2012-4466/ -[2]: {{ site.url }}/en/news/2012/10/12/poisoned-NUL-byte-vulnerability/ -[3]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 -[4]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_286/ChangeLog -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.bz2 -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.gz -[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.zip diff --git a/fa/news/_posts/2012-10-22-rupy-2012-coming-very-soon.md b/fa/news/_posts/2012-10-22-rupy-2012-coming-very-soon.md deleted file mode 100644 index 37f3179b5e..0000000000 --- a/fa/news/_posts/2012-10-22-rupy-2012-coming-very-soon.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "RuPy 2012 coming very soon" -author: "hosiawak" -lang: en ---- - -[RuPy 2012][1] – the 5th edition Ruby, Python and JavaScript conference -for hackers across the two hemispheres. **16-18 November 2012** in -[Brno][2], **8-9 December** in [São José][3]. - -Don’t miss it! - - - -[1]: http://rupy.eu/ -[2]: http://rupy.eu/#city-carousel -[3]: http://rupy.com.br/#city-carousel diff --git a/fa/news/_posts/2012-11-09-ruby-1-9-3-p327-is-released.md b/fa/news/_posts/2012-11-09-ruby-1-9-3-p327-is-released.md deleted file mode 100644 index 7192a116c3..0000000000 --- a/fa/news/_posts/2012-11-09-ruby-1-9-3-p327-is-released.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p327 is released" -author: "usa" -lang: en ---- - -Ruby 1.9.3-p327 is released. - -This release includes some security fixes, and many other bug fixes. - -* [Hash-flooding DoS vulnerability for ruby 1.9][1] -* many other bug fixes. - -See [tickets][2] and [ChangeLog][3] for details. - -## Download - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.bz2>][4] - * SIZE: 9975835 bytes - * MD5: 7d602aba93f31ceef32800999855fbca - * SHA256: d989465242f9b11a8a3aa8cbd2c75a9b3a8c0ec2f14a087a0c7b51abf164e488 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz>][5] - * SIZE: 12484826 bytes - * MD5: 96118e856b502b5d7b3a4398e6c6e98c - * SHA256: 51dd76462d3f6eb2c659a75e90f949f56da58c42bfb5766212478160b7f23d71 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.zip>][6] - * SIZE: 13925310 bytes - * MD5: 24f4417179a5eae6ce321c0cfadd837e - * SHA256: 51dfb919182f69f02a388a6c4b911cb43a321234a282cbf500f50cee51e2f5fe - - - -[1]: {{ site.url }}/en/news/2012/11/09/ruby19-hashdos-cve-2012-5371/ -[2]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 -[3]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_327/ChangeLog -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.bz2 -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.zip diff --git a/fa/news/_posts/2012-11-09-ruby19-hashdos-cve-2012-5371.md b/fa/news/_posts/2012-11-09-ruby19-hashdos-cve-2012-5371.md deleted file mode 100644 index 1613a0ce67..0000000000 --- a/fa/news/_posts/2012-11-09-ruby19-hashdos-cve-2012-5371.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: news_post -title: "Hash-flooding DoS vulnerability for ruby 1.9 (CVE-2012-5371)" -author: "usa" -lang: en ---- - -Hash-flooding DoS attack reported for the Hash function ruby 1.9 series -were using. This vulnerability is different from [CVE-2011-4815][1] for -ruby 1.8.7. All ruby 1.9 users are recommended to upgrade to [ruby-1.9.3 -patchlevel 327][2] to get this security fix. - -## Impact - -Carefully crafted sequence of strings can cause a denial of service -attack on the service that parses the sequence to create a Hash object -by using the strings as keys. For instance, this vulnerability affects -web application that parses the JSON data sent from untrusted entity. - -## Details - -This vulnerability is similar to [CVE-2011-4815][1] for ruby 1.8.7. ruby -1.9 versions were using modified [MurmurHash function][3] but it\'s -[reported that there is a way to create sequence of strings that collide -their hash values each other][4]. This fix changes the Hash function of -String object from the MurmurHash to [SipHash 2-4][5]. - -## Solution - -Please update to [ruby-1.9.3 patchlevel 327][2] if you are using ruby -1.9 versions. Please update to trunk revision 37575 or later if you are -using ruby 2.0.0 preview1 or ruby trunk. In addition to it, all ruby -applications that accept input data from untrusted entity for parsing -should restrict the size of the input data to reasonable size. We are -not sure if we can provide protection against this kind of vulnerability -at programming language level in the future. - -## Affected versions - -* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 327 -* All ruby 2.0 versions (includes 2.0.0 preview1) prior to trunk - revision 37575 - -## Credit - -This vulnerability is reported by Jean-Philippe Aumasson, one of the -designer of SipHash. The original SipHash implementation for this fix is -presented by Martin Boßlet, one of the ruby committer. - -## Updates - -* A typo fixed at 2012-11-21 22:16:00 -* Originally published at 2012-11-10 04:23:00 - - - -[1]: {{ site.url }}/en/news/2011/12/28/denial-of-service-attack-was-found-for-rubys-hash-algorithm-cve-2011-4815/ -[2]: {{ site.url }}/en/news/2012/11/09/ruby-1-9-3-p327-is-released/ -[3]: https://sites.google.com/site/murmurhash/ -[4]: http://2012.appsec-forum.ch/conferences/#c17 -[5]: https://www.131002.net/siphash/ diff --git a/fa/news/_posts/2012-11-10-fukuoka-ruby-award-2013.md b/fa/news/_posts/2012-11-10-fukuoka-ruby-award-2013.md deleted file mode 100644 index c324950f9f..0000000000 --- a/fa/news/_posts/2012-11-10-fukuoka-ruby-award-2013.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: news_post -title: "2013 Fukuoka Ruby Award Competition—Entries to be judged by Matz" -author: "James Edward Gray II" -lang: en ---- - -Dear Ruby Enthusiasts, - -The Government of Fukuoka, Japan, together with \"Matz\" Matsumoto, -would like to invite you to enter the 2013 Fukuoka Ruby Competition. If -you have developed Ruby programs within the past 12 months, this is the -competition you\'ve been waiting for. This year, in addition to the -Grand Prize, we will also have special awards sponsored by Engine Yard -and Salesforce.com. Details are below. - -2013 Fukuoka Ruby Award Competition - -Entry Deadline: November 30, 2012 at 5 PM Japan Time (GMT+9) - -Grand Prize: 1 Million Yen! - -Engine Yard Award:<br> -Engine Yard Cloud (first 5,000 hours free), invitation to Ruby Kaigi -(includes afterparty and 50,000JPY toward transportation costs for 2 -people), and an Apple iPad Mini 32GB WiFi Black & Slate (engraved -with a special message). - -Salesforce.com Award:<br> -500,000 JPY, introduction on the [http://www.salesforce.com/jp/][1] -website, Dreamforce tickets for 3 people. - -Please visit [this website][2] for additional details or to enter. - -Past winners from US include Rhomobile, Banjo, and VMware. - -Past winners:<br> -[2012][3]<br> -[2011][4]<br> -[2010][5]<br> -[2009][6] - -Engine Yard CEO and VMware CTO of Cloud Applications also joined us at -[the last award ceremony][7]. - -We look forward to receiving your entry! - -Best regards, - - - -[1]: http://www.salesforce.com/jp/ -[2]: http://www.digitalfukuoka.jp/events/index_en.html -[3]: http://www.myfukuoka.com/news/2012-fukuoka-ruby-award-winners.html -[4]: http://www.myfukuoka.com/news/2011-fukuoka-ruby-award-winners.html -[5]: http://www.myfukuoka.com/news/2010-fukuoka-ruby-award-winners.html -[6]: http://www.myfukuoka.com/events/2009-fukuoka-ruby-award-winners.html -[7]: http://www.myfukuoka.com/events/2012-fukuoka-ruby-forum.html diff --git a/fa/news/_posts/2012-12-25-ruby-1-9-3-p362-is-released.md b/fa/news/_posts/2012-12-25-ruby-1-9-3-p362-is-released.md deleted file mode 100644 index 922a8b1c8e..0000000000 --- a/fa/news/_posts/2012-12-25-ruby-1-9-3-p362-is-released.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p362 is released" -author: "usa" -lang: en ---- - -According to this time, as usual, Ruby 1.9.3-p362 is released. - -This release includes other many bug fixes. - -* Resolved build problems on Solaris. -* Windows 8 support (hopefully). -* other many bug fixes. - -See [tickets][1] and [ChangeLog][2] for details. - -In addition, any security fixes are not included in this release. - -## Downloads - -You can download this release from: - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.tar.bz2>][3] - * SIZE: 10021565 bytes - * MD5: 13c26ea368d88a560f07cc8c5eb4fa05 - * SHA256: 9ed456711a4c0fb2969d9144a81a706d2d506070a35a6d5bc98bb5c8407f9985 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.tar.gz>][4] - * SIZE: 12565596 bytes - * MD5: 1efc2316dc50e97591792d90647fade2 - * SHA256: eb593607862b16a28176ae6d086dbe3bd9bd41935ec999a8cd5ef8773e8239d6 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.zip>][5] - * SIZE: 13869324 bytes - * MD5: 764d5e2d8149a7f424fc02089f8a7359 - * SHA256: 713ed8149f819ef3ae6b9ac0e27d0c9ee26d3d78e44d42d02ce426d6cb18068d - -## Release Comment - -Many committers and users who gave bug reports greatly helped me to make -this release. Thank you everyone. - -Have good holidays, and happy hacking! - - - -[1]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 -[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_362/ChangeLog -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.tar.gz -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p362.zip diff --git a/fa/news/_posts/2013-01-17-ruby-1-9-3-p374-is-released.md b/fa/news/_posts/2013-01-17-ruby-1-9-3-p374-is-released.md deleted file mode 100644 index ed5e681f13..0000000000 --- a/fa/news/_posts/2013-01-17-ruby-1-9-3-p374-is-released.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p374 is released" -author: "usa" -lang: en ---- - -Now Ruby 1.9.3-p374 is released. - -This release includes many bug fixes. Especially, - -* Fixed randomly SEGV problem (often reported with Rails) -* Windows 8 support (maybe, hopefully) -* other many bug fixes. - -See [tickets][1] and [ChangeLog][2] for details. - -Any new security fixes are not included in this release, but I recommend -users of previous release (p362) to update. - -## Downloads - -You can download this release from: - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.bz2>][3] - * SIZE: 10017658 bytes - * MD5: 944e73eba9ee9e1f2647ff32ec0b14b2 - * SHA256: 712944f691b79f22f655547826400c26b13bc8c9e7bdc73a4abea45d5e766d85 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.gz>][4] - * SIZE: 12555429 bytes - * MD5: 90b6c327abcdf30a954c2d6ae44da2a9 - * SHA256: 0d0e32a3554867e3eddbb23fbf30a72c4748622e010c23e31302d899fc005574 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.zip>][5] - * SIZE: 13871394 bytes - * MD5: c0001d5d36ad2e3e6a84810abe585b79 - * SHA256: 058af4cf409c93cce1de74a6b3355ddcf740f3efae1ab02d63471fcdbed19088 - -## Release Comment - -Many committers, testers and users who gave bug reports greatly helped -me to make this release. Thank you everyone. - -Happy Hacking! - - - -[1]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 -[2]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_374/ChangeLog -[3]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.bz2 -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.gz -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.zip diff --git a/fa/news/_posts/2013-01-23-confoo-with-ruby-in-montreal.md b/fa/news/_posts/2013-01-23-confoo-with-ruby-in-montreal.md deleted file mode 100644 index c3e6cd1643..0000000000 --- a/fa/news/_posts/2013-01-23-confoo-with-ruby-in-montreal.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: news_post -title: "ConFoo with Ruby in Montreal" -author: "James Edward Gray II" -date: 2013-01-23 19:52:42 +0000 -lang: en ---- - -If you have never heard of ConFoo, it is one of the most important -developer-oriented conferences. The team brings 100 speakers from around -the globe to share their hands-on experience with various web -technologies. The best news is: it’s driven by the community and is non -profit! - -1h presentations cover: Ruby, PHP, JavaScript, Python, .NET, Java, -e-Commerce, Security, Mobile, UX and other topics. [The schedule][1] is -quite impressive. - -They also have hands-on training and a hackaton in the two days before -the main event. - -<iframe width="420" height="236" src="//www.youtube.com/embed/86VcHcaurRQ" allowfullscreen></iframe> - -The event is at the Hilton Bonaventure Montreal, from February 27th to -March 1st. [Tickets are sold online][2]. - - - -[1]: http://confoo.ca/en/2013/schedule -[2]: http://confoo.ca/en/register diff --git a/fa/news/_posts/2013-02-06-rdoc-xss-cve-2013-0256.md b/fa/news/_posts/2013-02-06-rdoc-xss-cve-2013-0256.md deleted file mode 100644 index ca2203db9e..0000000000 --- a/fa/news/_posts/2013-02-06-rdoc-xss-cve-2013-0256.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: news_post -title: "XSS exploit of RDoc documentation generated by rdoc (CVE-2013-0256)" -author: "usa" -date: 2013-02-06 13:35:34 +0000 -lang: en ---- - -RDoc documentation generated by rdoc bundled with ruby are vulnerable to -an XSS exploit. All ruby users are recommended to update ruby to newer -version which includes security-fixed RDoc. If you are publishing RDoc -documentation generated by rdoc, you are recommended to apply a patch -for the documentation or re-generate it with security-fixed RDoc. - -## Impact - -RDoc documentation generated by rdoc 2.3.0 through rdoc 3.12 and -prereleases up to rdoc 4.0.0.preview2.1 are vulnerable to an XSS -exploit. This exploit may lead to cookie disclosure to third parties. - -## Details - -The exploit exists in darkfish.js which is copied from the RDoc install -location to the generated documentation. - -RDoc is a static documentation generation tool. Patching the library -itself is insufficient to correct this exploit. Those hosting rdoc -documentation will need to apply the following patch. - -## Solution - -Please apply the following patch to rdoc documentation. If applied while -ignoring whitespace, this patch will correct all affected versions: - -{% highlight diff %} -diff --git darkfish.js darkfish.js -index 4be722f..f26fd45 100644 ---- darkfish.js -+++ darkfish.js -@@ -109,13 +109,15 @@ function hookSearch() { - function highlightTarget( anchor ) { - console.debug( "Highlighting target '%s'.", anchor ); - -- $("a[name=" + anchor + "]").each( function() { -- if ( !$(this).parent().parent().hasClass('target-section') ) { -- console.debug( "Wrapping the target-section" ); -- $('div.method-detail').unwrap( 'div.target-section' ); -- $(this).parent().wrap( '<div class="target-section"></div>' ); -- } else { -- console.debug( "Already wrapped." ); -+ $("a[name]").each( function() { -+ if ( $(this).attr("name") == anchor ) { -+ if ( !$(this).parent().parent().hasClass('target-section') ) { -+ console.debug( "Wrapping the target-section" ); -+ $('div.method-detail').unwrap( 'div.target-section' ); -+ $(this).parent().wrap( '<div class="target-section"></div>' ); -+ } else { -+ console.debug( "Already wrapped." ); -+ } - } - }); - }; -{% endhighlight %} - -And, if you are using ruby 1.9, please update [ruby-1.9.3 patchlevel -385][1]. If you are using ruby 2.0.0 rc1 or prior or ruby trunk, please -update to ruby 2.0.0 rc2 or trunk revision 39102 or later. You can also -update RDoc itself with rubygems to RDoc 3.12.1 or RDoc 4.0.0.rc.2. - -## Affected versions - -* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 383 -* All ruby 2.0 versions prior to ruby 2.0.0 rc2 or prior to trunk - revision 39102 - -## Credit - -This exploit was discovered by Evgeny Ermakov <corwmh@gmail.com>. - -This vulnerability has been assigned the CVE identifier CVE-2013-0256. - -## History - -* Originally published at 2013-02-06 13:30:00 (UTC) - - - -[1]: {{ site.url }}/en/news/2013/02/06/ruby-1-9-3-p385-is-released/ diff --git a/fa/news/_posts/2013-02-06-ruby-1-9-3-p385-is-released.md b/fa/news/_posts/2013-02-06-ruby-1-9-3-p385-is-released.md deleted file mode 100644 index 3ac881b3b6..0000000000 --- a/fa/news/_posts/2013-02-06-ruby-1-9-3-p385-is-released.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p385 is released" -author: "usa" -date: 2013-02-06 13:35:58 +0000 -lang: en ---- - -Now Ruby 1.9.3-p385 is released. - -This release includes a security fix about bundled RDoc. See [this -page][1] for details. - -And some small bugfixes are also included. - -See [tickets][2] and [ChangeLog][3] for details. - -## Download - -You can download this release from: - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.tar.bz2>][4] - - SIZE: 10021486 bytes - MD5: 5ec9aff670f4912b0f6f0e11e855ef6c - SHA256: f991ee50414dc795696bad0fc5c7b0b94d93b9b38fed943326d20ce4e9dda42b - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.tar.gz>][5] - - SIZE: 12546003 bytes - MD5: 3e0d7f8512400c1a6732327728a56f1d - SHA256: 4b15df007f5935ec9696d427d8d6265b121d944d237a2342d5beeeba9b8309d0 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.zip>][6] - - SIZE: 13862147 bytes - MD5: 044564fe519a2c8e278472c4272b3ff2 - SHA256: 0cb389fcc1ac9fccf32f3db27497908b7365aa910b6dd1559389416e828addc5 - -## Release Comment - -Many committers, testers and users who gave bug reports greatly helped -me to make this release. Thanks for their contributions. - -Happy Hacking! - - - -[1]: {{ site.url }}/en/news/2013/02/06/rdoc-xss-cve-2013-0256/ -[2]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 -[3]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_385/ChangeLog -[4]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.tar.bz2 -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.tar.gz -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p385.zip diff --git a/fa/news/_posts/2013-02-08-ruby-2-0-0-rc2-is-released.md b/fa/news/_posts/2013-02-08-ruby-2-0-0-rc2-is-released.md deleted file mode 100644 index 2dffccf62b..0000000000 --- a/fa/news/_posts/2013-02-08-ruby-2-0-0-rc2-is-released.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-rc2 is released" -author: "Yusuke Endoh" -date: 2013-02-08 14:34:17 +0000 -lang: en ---- - -Ruby 2.0.0-rc2 is released. This will be the last release candidate of -Ruby 2.0.0. - -Please give it a try, and report any issue if you notice. - -## Locations - -* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.bz2>][1] - - SIZE: 10822239 bytes - MD5: e92420131bd7994513e0bf09a3e2a19b - SHA256: d55f897bb04283c5fa80223d96d990fe8ecb598508dd59443b356cbba1f66145 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.gz>][2] - - SIZE: 13616756 bytes - MD5: 9d5e6f26db7c8c3ddefc81fdb19bd41a - SHA256: 87072ab3e6d393d47f7402682364e4f24efe1c518969795cc01fcdeeb0e646f3 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.zip>][3] - - SIZE: 15118480 bytes - MD5: 1a2d33f1c50e32ca1532f8dea4790d53 - SHA256: c28e9baf3aa00b41b8823c16df436ae143e8a63e43e7a53302f23119e13d0ebf - -## New features in 2.0.0 - -* Keyword arguments -* Enumerable#lazy -* Module#prepend -* \#to\_h: Convention for conversion to Hash -* %i: a literal for symbol array -* Updated regexp engine: Onigmo (a fork of Oniguruma) -* Enumerator#size and Range#size were introduced -* DTrace support -* TracePoint -* Optimized require performance (especially, on Windows) -* NativeClient support -* Documentation improvement -* Enhanced asynchronous interrupt handling -* Launch-time stack size tuning parameters -* Refinements \[experimental\] - -... and more improvements. See NEWS for details. - -Here are some introductory articles by third parties: - -* [<URL:https://speakerdeck.com/a\_matsuda/ruby-2-dot-0-on-rails>][4] -* [<URL:http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/>][5] -* [<URL:http://www.infoq.com/news/2012/11/ruby-20-preview1>][6] -* [<URL:http://timelessrepo.com/refinements-in-ruby>][7] - (Refinements) -* [<URL:http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html>][8] - (in Japanese) -* [<URL:https://speakerdeck.com/nagachika/rubyist-enumeratorlazy>][9] - (Enumerator::Lazy, in Japanese) - -(If you volunteer to provide additional articles, we may cite or refer -to them in the next release announcement.) - -## Notes - -### Incompatibility - -There are three notable incompatibilities we know of: - -* The default encoding for ruby scripts is now UTF-8 [\[#6679\]][10]. - Some people report that it affects existing programs, such as some - benchmark programs becoming very slow [\[ruby-dev:46547\]][11]. The - spec may change for the official release. -* iconv was removed, which had already been deprecated when M17N was - introduced in ruby 1.9. Use String#encode, etc. instead. -* There is ABI breakage [\[ruby-core:48984\]][12]. We think that normal - users can/should just reinstall extension libraries. You should be - aware: \"DO NOT COPY .so OR .bundle FILES FROM 1.9\". - -There are some comparatively small incompatibilities. -[\[ruby-core:49119\]][13] Please report any other incompatibility you -notice. - -FYI: We are creating upgrade notes, but some parts are already outdated. - -* [<URL:https://bugs.ruby-lang.org/projects/ruby/wiki/200UpgradeNotesDraft>][14] - -### Status of Refinements - -2\.0.0 will include refinements as an \"experimental feature\" because we -could not agree on its detailed spec. Note that the behavior may change -in future versions of Ruby. - -### Special thanks - -I appreciate all who try preview and rc1 release! I\'m grateful for all -the contributors\' hard work to fix many bugs. I\'m really thankful to -all the people who helped me do this release. - - - -[1]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.bz2 -[2]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.zip -[4]: https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails -[5]: http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/ -[6]: http://www.infoq.com/news/2012/11/ruby-20-preview1 -[7]: http://timelessrepo.com/refinements-in-ruby -[8]: http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html -[9]: https://speakerdeck.com/nagachika/rubyist-enumeratorlazy -[10]: https://bugs.ruby-lang.org/issues/6679 -[11]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/46547 -[12]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/48984 -[13]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/49119 -[14]: https://bugs.ruby-lang.org/projects/ruby/wiki/200UpgradeNotesDraft diff --git a/fa/news/_posts/2013-02-15-the-2013-ruby-hero-awards.md b/fa/news/_posts/2013-02-15-the-2013-ruby-hero-awards.md deleted file mode 100644 index 637b492a07..0000000000 --- a/fa/news/_posts/2013-02-15-the-2013-ruby-hero-awards.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: news_post -title: "The 2013 Ruby Hero Awards" -author: "James Edward Gray II" -date: 2013-02-15 21:34:51 +0000 -lang: en ---- - -The [Ruby Hero Awards][1] are now accepting nominations and we need your -help to find people in our community who thanklessly help others and -perhaps don’t get the recognition they deserve. This could be someone -who contributes to ruby open source software you’ve found useful in the -past year, could be an educator, or maybe someone who’s helped organize -Ruby events. - -If you have a minute please take a moment to nominate someone by heading -over to [RubyHeroes.com][1], typing in the GitHub username of the person -you wish to nominate, and giving us a reason why they deserve to win. -About a month from now all the previous year’s Ruby Heroes will help -decide who will win this year’s 6 awards which will be presented to the -heroes live on stage at Railsconf at the end of April. - - - -[1]: http://rubyheroes.com diff --git a/fa/news/_posts/2013-02-16-the-barcelona-ruby-conference-call-for-papers-is-open.md b/fa/news/_posts/2013-02-16-the-barcelona-ruby-conference-call-for-papers-is-open.md deleted file mode 100644 index 6dfe88c445..0000000000 --- a/fa/news/_posts/2013-02-16-the-barcelona-ruby-conference-call-for-papers-is-open.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: news_post -title: "The Barcelona Ruby Conference Call for Papers is Open" -author: "James Edward Gray II" -date: 2013-02-16 14:47:15 +0000 -lang: en ---- - -**[Barcelona Ruby Conference][1]** is a conference that takes place in -the heart of **Catalunya, Spain** this September 14-15. Starring -[world-class speakers][2] as **Aaron Patterson** (rails and ruby core), -**David Chelimsky** (*The RSpec book* author, RSpec core member), -**Charles Nutter** (JRuby maintainer), **Sandi Metz** (*Practical -Object-Oriented Design in Ruby* author) or **Yukihiro Matz** (the Ruby -language creator), among others. - -The **[call for papers][3] is already open** and admitting submissions -until 10th of March - don\'t miss the chance to be on that list! - -There\'s a total of **4 slots open**, and each one of the **4 selected -speakers** will get a **free ticket** to the conference as well as -**paid accommodation**. You can check out the CFP\'s basis and **send -your proposal [in their website][3].** - - - -[1]: http://baruco.org -[2]: http://baruco.org/speakers -[3]: http://baruco.org/call_for_papers diff --git a/fa/news/_posts/2013-02-22-json-dos-cve-2013-0269.md b/fa/news/_posts/2013-02-22-json-dos-cve-2013-0269.md deleted file mode 100644 index 2783e8abd7..0000000000 --- a/fa/news/_posts/2013-02-22-json-dos-cve-2013-0269.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: news_post -title: "Denial of Service and Unsafe Object Creation Vulnerability in JSON (CVE-2013-0269)" -author: "usa" -date: 2013-02-22 13:08:38 +0000 -lang: en ---- - -There is a denial of service and unsafe object creation vulnerability in -the json bundled with ruby. This vulnerability has been assigned the CVE -identifier CVE-2013-0269. We strongly recommend to upgrade ruby. - -## Details - -When parsing certain JSON documents, the JSON gem (includes bundled with -ruby) can be coerced in to creating Ruby symbols in a target system. -Since Ruby symbols are not garbage collected, this can result in a -denial of service attack. - -The same technique can be used to create objects in a target system that -act like internal objects. These \"act alike\" objects can be used to -bypass certain security mechanisms and can be used as a spring board for -SQL injection attacks in Ruby on Rails. - -Impacted code looks like this: - -{% highlight ruby %} -JSON.parse(user_input) -{% endhighlight %} - -Where the \`user\_input\` variable will have a JSON document like this: - - {"json_class":"foo"} - -The JSON gem will attempt to look up the constant \"foo\". Looking up -this constant will create a symbol. - -In JSON version 1.7.x, objects with arbitrary attributes can be created -using JSON documents like this: - - {"json_class":"JSON::GenericObject","foo":"bar"} - -This document will result in an instance of JSON::GenericObject, with -the attribute \"foo\" that has the value \"bar\". Instantiating these -objects will result in arbitrary symbol creation and in some cases can -be used to bypass security measures. - -PLEASE NOTE: this behavior **does not change** when using \`JSON.load\`. -\`JSON.load\` should **never** be given input from unknown sources. If -you are processing JSON from an unknown source, **always** use -\`JSON.parse\`. - -All users running an affected release should either upgrade or use one -of the workarounds immediately. - -## Workarounds - -For users that cannot upgrade ruby or JSON gem, change your code from -this: - -{% highlight ruby %} -JSON.parse(json) -{% endhighlight %} - -To this: - -{% highlight ruby %} -JSON.parse(json, :create_additions => false) -{% endhighlight %} - -If you cannot change the usage of \`JSON.parse\` (for example you\'re -using a gem which depends on \`JSON.parse\` like multi\_json), then -apply this monkey patch: - -{% highlight ruby %} -module JSON - class << self - alias :old_parse :parse - def parse(json, args = {}) - args[:create_additions] = false - old_parse(json, args) - end - end -end -{% endhighlight %} - -## Affected versions - -* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 392 -* All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 0 -* prior to trunk revision 39208 - -## Credits - -A huge thanks goes to the following people for responsibly disclosing -this issue and working with the Rails team to get it fixed: - -* Thomas Hollstegge of Zweitag (www.zweitag.de) -* Ben Murphy - -## History - -* Originally published at 2013-02-22 12:00:00 (UTC) - diff --git a/fa/news/_posts/2013-02-22-rexml-dos-2013-02-22.md b/fa/news/_posts/2013-02-22-rexml-dos-2013-02-22.md deleted file mode 100644 index 484a0d6328..0000000000 --- a/fa/news/_posts/2013-02-22-rexml-dos-2013-02-22.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: news_post -title: "Entity expansion DoS vulnerability in REXML (XML bomb, CVE-2013-1821)" -author: "usa" -date: 2013-02-22 13:08:51 +0000 -lang: en ---- - -Unrestricted entity expansion can lead to a DoS vulnerability in REXML. -This vulnerability has been assigned the CVE identifier CVE-2013-1821. -We strongly recommend to upgrade ruby. - -## Details - -When reading text nodes from an XML document, the REXML parser can be -coerced in to allocating extremely large string objects which can -consume all of the memory on a machine, causing a denial of service. - -Impacted code will look something like this: - -{% highlight ruby %} -document = REXML::Document.new some_xml_doc -document.root.text -{% endhighlight %} - -When the \`text\` method is called, entities will be expanded. An -attacker can send a relatively small XML document that, when the -entities are resolved, will consume extreme amounts of memory on the -target system. - -Note that this attack is similar to, but different from the Billion -Laughs attack. This is also related to CVE-2013-1664 of Python. - -All users running an affected release should either upgrade or use one -of the workarounds immediately. - -## Workarounds - -If you cannot upgrade Ruby, use this monkey patch as a workaround: - -{% highlight ruby %} -class REXML::Document - @@entity_expansion_text_limit = 10_240 - - def self.entity_expansion_text_limit=( val ) - @@entity_expansion_text_limit = val - end - - def self.entity_expansion_text_limit - @@entity_expansion_text_limit - end -end - -class REXML::Text - def self.unnormalize(string, doctype=nil, filter=nil, illegal=nil) - sum = 0 - string.gsub( /\r\n?/, "\n" ).gsub( REFERENCE ) { - s = self.expand($&, doctype, filter) - if sum + s.bytesize > REXML::Document.entity_expansion_text_limit - raise "entity expansion has grown too large" - else - sum += s.bytesize - end - s - } - end - - def self.expand(ref, doctype, filter) - if ref[1] == ?# - if ref[2] == ?x - [ref[3...-1].to_i(16)].pack('U*') - else - [ref[2...-1].to_i].pack('U*') - end - elsif ref == '&' - '&' - elsif filter and filter.include?( ref[1...-1] ) - ref - elsif doctype - doctype.entity( ref[1...-1] ) or ref - else - entity_value = DocType::DEFAULT_ENTITIES[ ref[1...-1] ] - entity_value ? entity_value.value : ref - end - end -end -{% endhighlight %} - -This monkey patch will limit the size of the entity substitutions to 10k -per node. REXML already defaults to only allow 10000 entity -substitutions per document, so the maximum amount of text that can be -generated by entity substitution will be around 98 megabytes. - -## Affected versions - -* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 392 -* All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 0 -* prior to trunk revision 39384 - -## Credits - -Thanks to Ben Murphy for reporting this issue. - -## History - -* Added about CVE number at 2013-03-11 07:45:00 (UTC) -* Originally published at 2013-02-22 12:00:00 (UTC) - diff --git a/fa/news/_posts/2013-02-22-ruby-1-9-3-p392-is-released.md b/fa/news/_posts/2013-02-22-ruby-1-9-3-p392-is-released.md deleted file mode 100644 index 649fa37af4..0000000000 --- a/fa/news/_posts/2013-02-22-ruby-1-9-3-p392-is-released.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p392 is released" -author: "usa" -date: 2013-02-22 13:09:05 +0000 -lang: en ---- - -Now Ruby 1.9.3-p392 is released. I apologize for updating too -frequently. - -This release includes security fixes about bundled JSON and REXML. - -* [Denial of Service and Unsafe Object Creation Vulnerability in JSON - (CVE-2013-0269)][1] -* [Entity expansion DoS vulnerability in REXML (XML bomb, - CVE-2013-1821)][2] - -And some small bugfixes are also included. - -See [tickets][3] and [ChangeLog][4] for details. - -## Download - -You can download this release from: - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.bz2>][5] - - SIZE: 10024221 bytes - MD5: a810d64e2255179d2f334eb61fb8519c - SHA256: 5a7334dfdf62966879bf539b8a9f0b889df6f3b3824fb52a9303c3c3d3a58391 - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz>][6] - - SIZE: 12557294 bytes - MD5: f689a7b61379f83cbbed3c7077d83859 - SHA256: 8861ddadb2cd30fb30e42122741130d12f6543c3d62d05906cd41076db70975f - -* [<URL:https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.zip>][7] - - SIZE: 13863402 bytes - MD5: 212fb3bc41257b41d1f8bfe0725916b7 - SHA256: f200ce4a63ce57bea64028a507350717c2a16bdbba6d9538bc69e9e7c2177c8b - -## Release Comment - -Many committers, testers and users who gave bug reports helped me to -make this release. Thanks for their contributions. - - - -[1]: {{ site.url }}/en/news/2013/02/22/json-dos-cve-2013-0269/ -[2]: {{ site.url }}/en/news/2013/02/22/rexml-dos-2013-02-22/ -[3]: https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5 -[4]: https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_392/ChangeLog -[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.bz2 -[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz -[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.zip diff --git a/fa/news/_posts/2013-02-24-ruby-2-0-0-p0-is-released.md b/fa/news/_posts/2013-02-24-ruby-2-0-0-p0-is-released.md deleted file mode 100644 index cbfbf9d258..0000000000 --- a/fa/news/_posts/2013-02-24-ruby-2-0-0-p0-is-released.md +++ /dev/null @@ -1,191 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p0 is released" -author: "Yusuke Endoh" -date: 2013-02-24 09:06:22 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.0.0-p0. - -Ruby 2.0.0 is the first stable release of the Ruby 2.0 series, with many -new features and improvements in response to the increasingly diverse -and expanding demands for Ruby. - -Enjoy programming with Ruby 2.0.0! - -## Download - -* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.bz2>][1] - - SIZE: 10814890 bytes - MD5: 895c1c581f8d28e8b3bb02472b2ccf6a - SHA256: c680d392ccc4901c32067576f5b474ee186def2fcd3fcbfa485739168093295f - -* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz>][2] - - SIZE: 13608925 bytes - MD5: 50d307c4dc9297ae59952527be4e755d - SHA256: aff85ba5ceb70303cb7fb616f5db8b95ec47a8820116198d1c866cc4fff151ed - -* [<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip>][3] - - SIZE: 15037340 bytes - MD5: db5af5d6034646ad194cbdf6e50f49ee - SHA256: 0d0af6a9c8788537efd8d7d2358ce9468e6e2b7703dacba9ebd064d8b7da5f99 - -## What is Ruby 2.0.0 - -### New Features - -Some of the highlights: - -* Language core features - * Keyword arguments, which give flexibility to API design - * Module#prepend, which is a new way to extend a class - * A literal %i, which creates an array of symbols easily - * \_\_dir\_\_, which returns the dirname of the file currently being - executed - * The UTF-8 default encoding, which make many magic comments omissible - -* Built-in libraries - * Enumerable#lazy and Enumerator::Lazy, for (possibly infinite) lazy - stream - * Enumerator#size and Range#size, for lazy size evaluation - * \#to\_h, which is a new convention for conversion to Hash - * Onigmo, which is a new regexp engine (a fork of Oniguruma) - * Asynchronous exception handling API - -* Debug support - * DTrace support, which enables run-time diagnosis in production - * TracePoint, which is an improved tracing API - -* Performance improvements - * GC optimization by bitmap marking - * Kernel#require optimization which makes Rails startup very fast - * VM optimization such as method dispatch - * Float operation optimization - -In addition, albeit as an experimental feature, 2.0.0 includes -Refinements, which adds a new concept to Ruby\'s modularity. - -See also NEWS for more features, improvements and details. - -### Compatibility - -We have also taken care with the 2.0.0 design to make it compatible with -1.9. It will be easier to migrate from 1.9 to 2.0 than it was from 1.8 -to 1.9. (The notable incompatibilities are described later.) - -In fact, thanks to the dedicated work of third parties, some popular -applications such as Rails and tDiary have been reported to work on the -release candidate version of 2.0.0. - -### Documentation - -We have also made documentation improvements which many rubyists have -requested. We have added a huge amount of rdoc for modules and methods. -2.0.0 will be around 75% documented while 1.9.3 was about 60%. Also, we -have added a description of Ruby\'s syntax. You can see: - -{% highlight sh %} -ri ruby:syntax -{% endhighlight %} - -### Stability - -Note that unlike 1.9.0, 2.0.0 IS a stable release, even though its TEENY -is 0. All library authors are strongly recommended to support 2.0.0. As -mentioned above, it will be comparatively easy to migrate from 1.9 to -2.0. - -Ruby 2.0.0 is ready for practical use, and will absolutely improve your -Ruby life. - -## Notes - -### Introductory articles - -Here are some introductory articles of 2.0.0 features by third parties: - -* [<URL:http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example>][4] - (comprehensive, recommended) -* [<URL:https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0>][5] - (comprehensive, recommended) -* [<URL:http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html>][6] - (brief, in Japanese) -* [<URL:https://speakerdeck.com/nagachika/rubyist-enumeratorlazy>][7] - (only Enumerator::Lazy, in Japanese) - -The following articles are also helpful, but outdated with regards to -refinement: - -* [<URL:http://rubysource.com/a-look-at-ruby-2-0/>][8] -* [<URL:https://speakerdeck.com/a\_matsuda/ruby-2-dot-0-on-rails>][9] -* [<URL:http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/>][10] -* [<URL:http://www.infoq.com/news/2012/11/ruby-20-preview1>][11] - -Also, the recent issue of \"Rubyist Magazine\" includes some articles -that were written by the feature authors themselves for introducing some -new 2.0.0 features. - -* [<URL:http://jp.rubyist.net/magazine/?0041-200Special>][12] - -Though they will be written in Japanese, English translations are -planned for the future. - -### Incompatibility - -There are five notable incompatibilities we know of: - -* The default encoding for ruby scripts is now UTF-8 \[#6679\]. Some - people report that it affects existing programs, such as some - benchmark programs becoming very slow \[ruby-dev:46547\]. -* Iconv was removed, which had already been deprecated when M17N was - introduced in ruby 1.9. Use String#encode, etc. instead. -* There is ABI breakage \[ruby-core:48984\]. We think that normal users - can/should just reinstall extension libraries. You should be aware: DO - NOT COPY .so OR .bundle FILES FROM 1.9. -* \#lines, #chars, #codepoints, #bytes now returns an Array instead of an - Enumerator \[#6670\]. This change allows you to avoid the common idiom - \"lines.to\_a\". Use #each\_line, etc. to get an Enumerator. -* Object#inspect does always return a string like - #<ClassName:0x...> instead of delegating to #to\_s. \[#2152\] - -There are some comparatively small incompatibilities. -\[ruby-core:49119\] - -### Status of Refinements - -We have added a feature called Refinements, which adds a new concept to -Ruby\'s modularity. However, please be aware that Refinements is still -an experimental feature: we may change its specification in the future. -Despite that, we would like you to play with it and give us your -thoughts. Your feedback will help to forge this interesting feature. - -## Acknowledgment - -A great many people contributed to 2.0.0. Even an incomplete -acknowledgment for only a few parts of contributions became too big to -insert here. Sorry but let me just add a link to the special thanks -page. - -* [<URL:https://bugs.ruby-lang.org/projects/ruby/wiki/200SpecialThanks>][13] - -Thank you all! - - - -[1]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.bz2 -[2]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz -[3]: https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip -[4]: http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example -[5]: https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0 -[6]: http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html -[7]: https://speakerdeck.com/nagachika/rubyist-enumeratorlazy -[8]: http://rubysource.com/a-look-at-ruby-2-0/ -[9]: https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails -[10]: http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/ -[11]: http://www.infoq.com/news/2012/11/ruby-20-preview1 -[12]: http://jp.rubyist.net/magazine/?0041-200Special -[13]: https://bugs.ruby-lang.org/projects/ruby/wiki/200SpecialThanks diff --git a/fa/news/_posts/2013-05-14-ruby-1-9-3-p429-is-released.md b/fa/news/_posts/2013-05-14-ruby-1-9-3-p429-is-released.md deleted file mode 100644 index 3b930b1067..0000000000 --- a/fa/news/_posts/2013-05-14-ruby-1-9-3-p429-is-released.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p429 is released" -author: "usa" -translator: -date: 2013-05-14 17:00:00 +0000 -lang: en ---- - -Now Ruby 1.9.3-p429 is released. -We once released p426 some hours before, but it had build problems on some platforms. -Use this p429 instead, please. - -This release includes a security fix about bundled DL / Fiddle. - -* [Object taint bypassing in DL and Fiddle in Ruby (CVE-2013-2065)](/en/news/2013/05/14/taint-bypass-dl-fiddle-cve-2013-2065/) - -And some small bugfixes are also included. - -See [tickets](https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5) and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_429/ChangeLog) for details. - -## Download - -You can download this release from: - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.bz2) - - SIZE: 10042323 bytes - MD5: c2b2de5ef15ea9b1aaa3152f9112af1b - SHA256: 9d8949c24cf6fe810b65fb466076708b842a3b0bac7799f79b7b6a8791dc2a70 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.gz) - - SIZE: 12553234 bytes - MD5: 993c72f7f805a9eb453f90b0b7fe0d2b - SHA256: d192d1afc46a7ef27b9d0a3c7a67b509048984db2c38907aa82641bdf980acf4 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.zip) - - SIZE: 13869978 bytes - MD5: 1986f3934e61b999873d21a79d69d88d - SHA256: 8bd0ecc2dd8eec471aa44f88abdcd82f4b398e9110ca06f76eff066b653b8b90 - -## Release Comment - -Many committers, testers and users who gave bug reports helped me to -make this release. Thanks for their contributions. diff --git a/fa/news/_posts/2013-05-14-ruby-2-0-0-p195-is-released.md b/fa/news/_posts/2013-05-14-ruby-2-0-0-p195-is-released.md deleted file mode 100644 index 35c02cac40..0000000000 --- a/fa/news/_posts/2013-05-14-ruby-2-0-0-p195-is-released.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p195 is released" -author: "nagachika" -translator: -date: 2013-05-14 13:00:01 +0000 -lang: en ---- - -Ruby 2.0.0-p195 is released. This is the first patchlevel release of 2.0.0. - -This release includes a security fix of Ruby DL / Fiddle extension. - -* [Object taint bypassing in DL and Fiddle in Ruby - (CVE-2013-2065)](/en/news/2013/05/14/taint-bypass-dl-fiddle-cve-2013-2065/) - -And there are many bug-fixes and some optimization, and documentation fixes. - -## Downloads - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.bz2) - - SIZE: 10807456 bytes - MD5: 2f54faea6ee1ca500632ec3c0cb59cb6 - SHA256: 0be32aef7a7ab6e3708cc1d65cd3e0a99fa801597194bbedd5799c11d652eb5b - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz) - - SIZE: 13641558 bytes - MD5: 0672e5af309ae99d1703d0e96eff8ea5 - SHA256: a2fe8d44eac3c27d191ca2d0ee2d871f9aed873c74491b2a8df229bfdc4e5a93 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.zip) - - SIZE: 15092199 bytes - MD5: 924fe4bea72b1b258655211998631791 - SHA256: 81a4dc6cc09e491d417a51e5983c4584eff849e2a186ec3affdbe5bc15cd7db5 - -## Changes - -Major fixes are below. -See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_195/ChangeLog) -or [Tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) -for details. - -Thank you all committers/contributors. - -### Core - prepend - - #7841 Module#prepend now detect cyclic prepend. - #7843 removing prepended methods causes exceptions. - #8357 Module#prepend breaks Module's comparison operators. - #7983 Module#prepend can't override Fixnum's operator methods. - #8005 methods made private/protected after definition become uncallable on prepended class. - #8025 Module#included_modules include classes when prepended. - -### Core - keyword arguments - - #7922 unnamed keyword rest argument cause SyntaxError. - #7942 support define method only receive keyword arguments without paren. - #8008 fix a bug in super with keyword arguments. - #8236 fix a treatment of rest arguments and keyword arguments through `super'. - #8260 non-symbol key should not treated as keyword arguments. - -### Core - refinements - - #7925 fix a bug of refinements with a method call super in a block. - -### Core - GC - - #8092 improve accuracy of GC.stat[:heap_live_num] - #8146 avoid unnecessary heap growth. - #8145 fix unlimited memory growth with large values of RUBY_FREE_MIN. - -### Core - Regexp - - #7972 Regexp POSIX space class is location sensitive. - #7974 Regexp case-insensitive group doesn't work. - #8023 Regexp lookbehind assertion fails with /m mode enabled - #8001 Regexp \Z matches where it shouldn't - -### Core - other - - #8063 fix a potential memory violation and avoid abort on the environment _FORTIFY_SOURCE=2 (ex. Ubuntu). - #8175 ARGF#skip doesn't work as documented. - #8069 File.expand_path('something', '~') now support home path on Windows. - #8220 fix a Segmentation fault when defined? (). - #8367 fix a regression in defined?(super). - #8283 Dir.glob doesn't recurse hidden directories. - #8165 fix a bug of multiple require with non-ascii file path. - #8290 fix an incompatible String#inspect behavior with NUL character. - #8360 fix a Segmentation fault of Thread#join(Float::INFINITY) on some platforms. - -### RubyGems - - Bundled RubyGems version is updated to 2.0.2+ - #7698 fix an rubygems' incompatibility about installation of extension libraries. - #8019 fix a bug of gem list --remote doesn't work. - -### Libraries - - #7911 File.fnmatch with US-ASCII pattern and UTF-8 path raise an exception. - #8240 fix a bug about OpenSSL::SSL::SSLSocket breaks other connections or files on GC. - #8183 CGI.unescapeHTML can't decode Numeric Character References with uppercase (&#Xnnnn). - -### Build/Platform specific - - #7830 fix build failure with compiler warning. - #7950 fix a build failure on mswin/VC with --with-static-linked-ext. diff --git a/fa/news/_posts/2013-05-14-taint-bypass-dl-fiddle-cve-2013-2065.md b/fa/news/_posts/2013-05-14-taint-bypass-dl-fiddle-cve-2013-2065.md deleted file mode 100644 index f21eebddc1..0000000000 --- a/fa/news/_posts/2013-05-14-taint-bypass-dl-fiddle-cve-2013-2065.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: news_post -title: "Object taint bypassing in DL and Fiddle in Ruby (CVE-2013-2065)" -author: "usa" -translator: -date: 2013-05-14 13:00:00 +0000 -tags: security -lang: en ---- - -There is a vulnerability in DL and Fiddle in Ruby where tainted strings can be -used by system calls regardless of the $SAFE level set in Ruby. This -vulnerability has been assigned the CVE identifier CVE-2013-2065. - -## Impact - -Native functions exposed to Ruby with DL or Fiddle do not check the taint -values set on the objects passed in. This can result in tainted objects being -accepted as input when a SecurityError exception should be raised. - -Impacted DL code will look something like this: - -{% highlight ruby %} -def my_function(user_input) - handle = DL.dlopen(nil) - sys_cfunc = DL::CFunc.new(handle['system'], DL::TYPE_INT, 'system') - sys = DL::Function.new(sys_cfunc, [DL::TYPE_VOIDP]) - sys.call user_input -end - -$SAFE = 1 -my_function "uname -rs".taint -{% endhighlight %} - -Impacted Fiddle code will look something like this: - -{% highlight ruby %} -def my_function(user_input) - handle = DL.dlopen(nil) - sys = Fiddle::Function.new(handle['system'], - [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT) - sys.call user_input -end - -$SAFE = 1 -my_function "uname -rs".taint -{% endhighlight %} - -All users running an affected release should either upgrade or use one of the -workarounds immediately. - -Note that this *does not* prevent numeric memory offsets from being used as -pointer values. Numbers cannot be tainted, so code passing a numeric memory -offset cannot be checked. For example: - -{% highlight ruby %} -def my_function(input) - handle = DL.dlopen(nil) - sys = Fiddle::Function.new(handle['system'], - [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT) - sys.call input -end - -$SAFE = 1 -user_input = "uname -rs".taint -my_function DL::CPtr[user_input].to_i -{% endhighlight %} - -In this case, the memory location is passed, and taintedness of the object -cannot be determined by DL / Fiddle. In this case, please check the tainting -of the user input before passing the memory location: - -{% highlight ruby %} -user_input = "uname -rs".taint -raise if $SAFE >= 1 && user_input.tainted? -my_function DL::CPtr[user_input].to_i -{% endhighlight %} - -## Workarounds - -If you cannot upgrade Ruby, this monkey patch can be used as a workaround: - -{% highlight ruby %} -class Fiddle::Function - alias :old_call :call - def call(*args) - if $SAFE >= 1 && args.any? { |x| x.tainted? } - raise SecurityError, "tainted parameter not allowed" - end - old_call(*args) - end -end -{% endhighlight %} - -## Affected versions - -* All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 426 -* All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 195 -* prior to trunk revision 40728 - -ruby 1.8 versions are not affected. - -## Credits - -Thanks to Vit Ondruch for reporting this issue. - -## History - -* Originally published at 2013-05-14 13:00:00 (UTC) diff --git a/fa/news/_posts/2013-06-12-new-ruby-lang-org-released.md b/fa/news/_posts/2013-06-12-new-ruby-lang-org-released.md deleted file mode 100644 index 7e1e93f9a2..0000000000 --- a/fa/news/_posts/2013-06-12-new-ruby-lang-org-released.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: news_post -title: "A brand-new ruby-lang.org has been released" -author: "Jean-Denis Vauguet" -translator: -date: 2013-06-12 12:00:00 +0000 -lang: en ---- - -On behalf of the Ruby community, we are pleased to announce to you that -a brand-new ruby-lang.org is now live! - -Ruby's official website has stalled over the years, leading to a situation -where only a subset of the available languages were actually maintained. -Still, their content may not even be relevant in the current Ruby ecosystem. -Something had to be done! A few rubyists thus gathered to build a whole new -contribution platform, switching from a private CMS to an open process. - -Everyone is now able to edit the content and fix kinks in no time! -We have set up a git-based process and Jekyll now powers the website: -visit [https://github.com/ruby/www.ruby-lang.org/wiki][1] to learn more -about the project and how to contribute. - -We hope to be hearing from you and reviewing your Pull Requests, - -Hal Brodigan (postmodern),<br /> -Jean-Denis Vauguet (chikamichi),<br /> -Marcus Stollsteimer (stomar),<br /> -James Edward Gray II (JEG2),<br /> -Hiroshi Shibata (hsbt). - - -[1]: https://github.com/ruby/www.ruby-lang.org/wiki diff --git a/fa/news/_posts/2013-06-27-hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073.md b/fa/news/_posts/2013-06-27-hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073.md deleted file mode 100644 index 1df6990b6e..0000000000 --- a/fa/news/_posts/2013-06-27-hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: news_post -title: "Hostname check bypassing vulnerability in SSL client (CVE-2013-4073)" -author: "nahi" -translator: -date: 2013-06-27 11:00:00 +0000 -tags: security -lang: en ---- - -A vulnerability in Ruby's SSL client that could allow man-in-the-middle -attackers to spoof SSL servers via valid certificate issued by a trusted -certification authority. - -This vulnerability has been assigned the CVE identifier CVE-2013-4073. - -## Summary - -Ruby's SSL client implements hostname identity check but it does not -properly handle hostnames in the certificate that contain null bytes. - -## Details - -`OpenSSL::SSL.verify_certificate_identity` implements RFC2818 Server -Identity check for Ruby's SSL client but it does not properly handle -hostnames in the subjectAltName X509 extension that contain null bytes. - -Existing code in `lib/openssl/ssl.rb` uses `OpenSSL::X509::Extension#value` -for extracting identity from subjectAltName. `Extension#value` depends on the -OpenSSL function `X509V3_EXT_print()` and for dNSName of subjectAltName it -utilizes `sprintf()` that is known as null byte unsafe. As a result -`Extension#value` returns 'www.ruby-lang.org' if the subjectAltName is -'www.ruby-lang.org\0.example.com' and -`OpenSSL::SSL.verify_certificate_identity` wrongly identifies the -certificate as one for 'www.ruby-lang.org'. - -When a CA that is trusted by an SSL client allows to issue a server certificate -that has a null byte in subjectAltName, remote attackers can obtain the -certificate for 'www.ruby-lang.org\0.example.com' from the CA to spoof -'www.ruby-lang.org' and do a man-in-the-middle attack between Ruby's SSL client -and SSL servers. - -## Affected versions - - * All ruby 1.8 versions prior to ruby 1.8.7 patchlevel 374 - * All ruby 1.9 versions prior to ruby 1.9.3 patchlevel 448 - * All ruby 2.0 versions prior to ruby 2.0.0 patchlevel 247 - * prior to trunk revision 41671 - -## Solution - -All users are recommended to upgrade to Ruby 2.0.0-p247, 1.9.3-p448 or -1.8.7-p374. - -## Credit - -This vulnerability has been found by William (B.J.) Snow Orvis and coordinated -with security@ruby-lang.org by David Thiel from iSEC Partners. - -## History - - * Originally published at 2013-06-27 11:00:00 (UTC) diff --git a/fa/news/_posts/2013-06-27-ruby-1-8-7-p374-is-released.md b/fa/news/_posts/2013-06-27-ruby-1-8-7-p374-is-released.md deleted file mode 100644 index 2594b9c9aa..0000000000 --- a/fa/news/_posts/2013-06-27-ruby-1-8-7-p374-is-released.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.8.7-p374 is released" -author: "hsbt" -translator: -date: 2013-06-27 11:00:01 +0000 -lang: en ---- - -Now Ruby 1.8.7-p374 is released. - -This release includes follow security fixes: - - * [Hostname check bypassing vulnerability in SSL client - (CVE-2013-4073)](/en/news/2013/06/27/hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073/) - * [Entity expansion DoS vulnerability in REXML (XML bomb, - CVE-2013-1821)](/en/news/2013/02/22/rexml-dos-2013-02-22/) - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.bz2) - - SIZE: 4250351 bytes - MD5: 83c92e2b57ea08f31187060098b2200b - SHA256: b4e34703137f7bfb8761c4ea474f7438d6ccf440b3d35f39cc5e4d4e239c07e3 - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.gz) - - SIZE: 4903749 bytes - MD5: b72a0bc5b824398537762e5272bbb8dc - SHA256: 876eeeaaeeab10cbf4767833547d66d86d6717ef48fd3d89e27db8926a65276c - -* [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.zip](https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.zip) - - SIZE: 6000586 bytes - MD5: 07b1b9032b616faeafb5ac1063494925 - SHA256: ed1fcc402d77814b277e2ef552c5f1e4ce3b6d1affacf5d6ba845ec0d4df67d0 - -## Release Comment - -Many people (committers, contributors and reporters) helped me to make this release. -Thank you! diff --git a/fa/news/_posts/2013-06-27-ruby-1-9-3-p448-is-released.md b/fa/news/_posts/2013-06-27-ruby-1-9-3-p448-is-released.md deleted file mode 100644 index 5dd8073294..0000000000 --- a/fa/news/_posts/2013-06-27-ruby-1-9-3-p448-is-released.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p448 is released" -author: "usa" -translator: -date: 2013-06-27 11:00:02 +0000 -lang: en ---- - -Now Ruby 1.9.3-p448 is released. - -This release includes a security fix about bundled OpenSSL: - - * [Hostname check bypassing vulnerability in SSL client - (CVE-2013-4073)](/en/news/2013/06/27/hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073/) - -And some bugfixes are also included. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_448/ChangeLog) for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.bz2) - - SIZE: 10052488 bytes - MD5: aa710d386e5903f78f0231868255e6af - SHA256: a7372230357bfff8e4525fb8019046da521561fe66b02c25d8efc10c9877bc91 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz) - - SIZE: 12559260 bytes - MD5: a893cff26bcf351b8975ebf2a63b1023 - SHA256: 2f35e186543a03bec5e603296d6d8828b94ca58bab049b67b1ceb61d381bc8a7 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.zip) - - SIZE: 13873826 bytes - MD5: bb3b1108847abaab312c024f3c0bc6c3 - SHA256: d9f778d08a4c888d19379b09f0c661b1d2af3c062e25b94f647c29350f064cba - -## Release Comment - -Many people (committers, contributors and reporters) helped me to make this release. -Thank you! diff --git a/fa/news/_posts/2013-06-27-ruby-2-0-0-p247-is-released.md b/fa/news/_posts/2013-06-27-ruby-2-0-0-p247-is-released.md deleted file mode 100644 index a31c2a43f8..0000000000 --- a/fa/news/_posts/2013-06-27-ruby-2-0-0-p247-is-released.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p247 is released" -author: "nagachika" -translator: -date: 2013-06-27 11:00:03 +0000 -lang: en ---- - -Now Ruby 2.0.0-p247 is released. - -This release includes a security fix about bundled OpenSSL. - -* [Hostname check bypassing vulnerability in SSL client - (CVE-2013-4073)](/en/news/2013/06/27/hostname-check-bypassing-vulnerability-in-openssl-client-cve-2013-4073/) - -And some bugfixes are also included. - -## Download - -You can download this release from: - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.bz2) - - SIZE: 10804581 bytes - MD5: 60913f3eec0c4071f44df42600be2604 - SHA256: 08e3d4b85b8a1118a8e81261f59dd8b4ddcfd70b6ae554e0ec5ceb99c3185e8a - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz) - - SIZE: 13652782 bytes - MD5: c351450a0bed670e0f5ca07da3458a5b - SHA256: 3e71042872c77726409460e8647a2f304083a15ae0defe90d8000a69917e20d3 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.zip) - - SIZE: 15100206 bytes - MD5: 7548f781d868456e84afcd0327c7f894 - SHA256: 40c938238075b1e7e8df5d7ebfd069a45b93066318d91da9024d81b20a1c5a8a - -## Changes - -Major fixes are listed below. - -See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_247/ChangeLog) for details. - -### Keyword Arguments - -* [#8040](https://bugs.ruby-lang.org/issues/8040) change priority between keyword arguments and mandatory arguments. -* [#8416](https://bugs.ruby-lang.org/issues/8416) super does not forward either named or anonymous `**` -* [#8463](https://bugs.ruby-lang.org/issues/8463) Proc auto-splat bug with named arguments - -### VM/Language Processing - -* [#8424](https://bugs.ruby-lang.org/issues/8424) fix infinite loop when stack overflow with TH_PUSH_TAG() -* [#8436](https://bugs.ruby-lang.org/issues/8436) \__dir__ not working in eval with binding -* [#8489](https://bugs.ruby-lang.org/issues/8489) Tracepoint API: B_RETURN_EVENT not triggered when "next" used -* [#8341](https://bugs.ruby-lang.org/issues/8341) block_given? (and the actual block) persist between calls to a proc created from a method (using method().to_proc()). -* [#8531](https://bugs.ruby-lang.org/issues/8531) block_given? (and the actual block) persist between calls to a proc created by Symbol#to_proc. - -### RubyGems - -Bundled RubyGems version is updated to 2.0.3 - -### Encoding - -* [#8516](https://bugs.ruby-lang.org/issues/8516) IO#readchar returns wrong codepoints when converting encoding - -### Windows - -* [#8431](https://bugs.ruby-lang.org/issues/8431) File.read() crash on Win32SP3 32bit - -### Libraries - -* [#8467](https://bugs.ruby-lang.org/issues/8467) Rewinding and iterating through gzipped IO leads to segmentation fault -* [#8415](https://bugs.ruby-lang.org/issues/8415) Net::IMAP#capability_response raises "Net::IMAP::ResponseParseError: unexpected token CRLF" for common CAPABILITY - -## Release Comment - -Many committers, testers and users who gave bug reports helped me to -make this release. Thanks for their contributions. diff --git a/fa/news/_posts/2013-06-30-we-retire-1-8-7.md b/fa/news/_posts/2013-06-30-we-retire-1-8-7.md deleted file mode 100644 index 421b0ef5d3..0000000000 --- a/fa/news/_posts/2013-06-30-we-retire-1-8-7.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: news_post -title: "We retire Ruby 1.8.7" -author: "shyouhei" -translator: -date: 2013-06-30 23:59:59 +0000 -lang: en ---- - -I wish I could say something epic but sadly my English skill is very -limited, so I just say what I say: it's the end, [as planned][1]. - -[1]: {{ site.url }}/en/news/2011/10/06/plans-for-1-8-7/ - -## About Ruby 1.8.7 - -Now, a majority of you are using Ruby 1.9.x or 2.0.0 (**IF NOT PLEASE DO**). -In the past however, there were other versions like 1.4.x, 1.6.x, and 1.8.x. -They were the lineal descendents of original Ruby 1.0, so-called MRI. -When Matz released 1.8.0 it was the state-of-art release. 1.8.7 was -the last scion of that clan. - -Technically speaking, it's been a decade since we released 1.8.0, and 5 years -since we released 1.8.7. Back then, Ruby was used to write CGI scripts. -Then the situation changed dramatically with the raise of Rails. -So many users started using Ruby. And internally, we finally merged -ko1's new engine (called YARV back then). The engine became the -canonical Ruby that you use today. - -So after 10 years, I'm really glad that I can say 1.8.7 became a legacy. -It made history. It changed our lives literally. And to continue the -change, we're moving forward. Ruby 2.0.0 is just great but to make -forthcoming 2.1 even more fascinating, I'm going to sunset 1.8.7 and -focus on our bleeding-edge Ruby trunk. - -Thank you 1.8.7, it was a good life for a program. - -## About YOUR Ruby 1.8.7 - -You might still have an executable of Ruby 1.8.7 somewhere in your system. -Depending on how you installed it, your Ruby 1.8.7 might or might not be -supported by someone else, because there are some 3rd-parties that do -continue supporting 1.8.7. The only thing I can say is _I_ won't support it -any longer. So if you're using what I've released, watch out and find -a solution that suits your situation. diff --git a/fa/news/_posts/2013-08-06-status-issue.md b/fa/news/_posts/2013-08-06-status-issue.md deleted file mode 100644 index 8428e252b8..0000000000 --- a/fa/news/_posts/2013-08-06-status-issue.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: news_post -title: "Service issue of ruby-lang.org" -author: "hsbt" -translator: "antipop" -date: 2013-08-06 04:00:00 +0000 -lang: en ---- - -Some services provided by ruby-lang.org are stopped, -because the servers of ruby-lang.org are currently down. - -Impact is as follows: - - * All mailing lists provided by ruby-lang.org are down. - * Ruby's tar packages distributed by ftp.ruby-lang.org are unreachable. - * If you lookup old DNS cache, you cannot reach www.ruby-lang.org. - -We are repairing these services now. - -## Update (2013-08-06 9:33 UTC) - -The reason of today's problems is a hardware failure. -We repaired the following issues: - - * All mailing lists are back, but we still have some problem. We are repairing it. - * ftp.ruby-lang.org is available again via http and ftp. - -If you discover other problems, please report them to -https://github.com/ruby/www.ruby-lang.org/issues. - -## Update (2013-08-06 13:18 UTC) - -We stopped ftp.ruby-lang.org via http and ftp, because some old packages of Ruby are broken. MD5 doesn't match as expected. - -We are investigating now. Detail information can be found in the following issue. -https://github.com/ruby/www.ruby-lang.org/issues/259 - -## Update (2013-08-07 05:08 UTC) - -We confirmed that the following packages were broken. We restored these packages via http://mirrorservice.org/sites/ftp.ruby-lang.org/pub/ruby/. - -<pre> -ruby-1.9.3-p426.tar.bz2 -ruby-1.9.3-p426.tar.gz -ruby-1.9.3-p426.zip -ruby-1.9.3-p429.tar.bz2 -ruby-1.9.3-p429.tar.gz -ruby-1.9.3-p429.zip -ruby-2.0.0-p0.tar.bz2 -ruby-2.0.0-p0.tar.gz -ruby-2.0.0-p0.zip -ruby-2.0.0-p195.tar.bz2 -ruby-2.0.0-p195.tar.gz -ruby-2.0.0-p195.zip -</pre> - -We checked that the MD5 checksums of these files are the same as in our release announcements. ftp.ruby-lang.org via http and ftp is available now. - -## Update (2013-08-09 10:30 UTC) - -Some of our services have been backed now, which had been suspended since Aug. 6 2013 by the server accident we reported before: - - * Mailing lists: We changed the software that provides the service from FML to Mailman. - * For details, please check out http://lists.ruby-lang.org. - * Package distribution: You can now download the packages we're providing from ftp.ruby-lang.org via both http and ftp. - * Snapshot packages: We restarted daily snapshot building and packaging. - -If you find any problems on our services, please notify us at https://github.com/ruby/www.ruby-lang.org/issues. diff --git a/fa/news/_posts/2013-08-08-rip-raa.md b/fa/news/_posts/2013-08-08-rip-raa.md deleted file mode 100644 index 123cca94d9..0000000000 --- a/fa/news/_posts/2013-08-08-rip-raa.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: news_post -title: "We retire raa.ruby-lang.org" -author: "hsbt" -translator: -date: 2013-08-08 12:30:00 +0000 -lang: en ---- - -We decided to suspend raa.ruby-lang.org, also known as -"Ruby Application Archive (RAA)". -We have no server or human resources to continue hosting raa.ruby-lang.org. -If you still need to browse raa.ruby-lang.org, please visit -[RAA in the Internet Archive][1]. - -The "Ruby Application Archive" was first started in 1997. -It moved to raa.ruby-lang.org in 2003 and introduced a lot of -useful libraries to Rubyists. -Please use [RubyGems.org][2] and [The Ruby Toolbox][3] instead. -Thanks. - - - -[1]: http://web.archive.org/web/*/http://raa.ruby-lang.org/ -[2]: https://rubygems.org/ -[3]: https://www.ruby-toolbox.com/ diff --git a/fa/news/_posts/2013-08-29-confoo-cfp.md b/fa/news/_posts/2013-08-29-confoo-cfp.md deleted file mode 100644 index aa726031c4..0000000000 --- a/fa/news/_posts/2013-08-29-confoo-cfp.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: news_post -title: "ConFoo 2014 is looking for Ruby speakers" -author: "afilina" -translator: -date: 2013-08-29 16:00:00 +0000 -lang: en ---- - -We are looking for Ruby professionals to share their skills and experience at -the next ConFoo. [Submit your proposals][1] until **September 22nd**. - -![ConFoo web dev conference. Feb 26 - 28, 2014 | Montreal, Canada][logo]{: style="border:0; float:right; margin-left:20px;" width="180" height="250"} - -ConFoo is a conference for developers that has built a reputation as a prime -destination for exploring new technologies, diving deeper into familiar -topics, and experiencing the best of community and culture. - - * ConFoo 2014 will be hosted on February 26-28 in Montreal, at the Hilton - Bonaventure Hotel. - * We take good care of our speakers by covering most expenses including - travel, accommodation, lunch, full conference ticket, etc. - * Presentations are 45 minutes including questions, and may be delivered in - English or French. - * ConFoo is an open environment where everyone is welcome to submit. We are - simply looking for quality proposals by skilled and friendly people. - -If you would simply prefer to attend the conference, we have a -[$230 discount][2] until October 16th. - - - -[logo]: http://confoo.ca/images/propaganda/2014/en/t-ruby.gif -[1]: http://confoo.ca/en/call-for-papers -[2]: http://confoo.ca/en/register diff --git a/fa/news/_posts/2013-09-03-vietnamese-translation.md b/fa/news/_posts/2013-09-03-vietnamese-translation.md deleted file mode 100644 index 7b7967fa13..0000000000 --- a/fa/news/_posts/2013-09-03-vietnamese-translation.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: news_post -title: "Vietnamese translation of ruby-lang.org" -author: "Marcus Stollsteimer" -translator: -date: 2013-09-03 12:00:00 +0000 -lang: en ---- - -We just released the [Vietnamese translation of ruby-lang.org][1]. - -Many thanks to the team of translators: - - * Trung Lê (joneslee85) - * Hiếu Lê (modology) - * Thanh Chinh Ban (thanhbc) - * Phạm Tiến Đạt (tiendat0510) - -If you want to contribute to the Ruby community, too, -you can do so by helping to keep this site up-to-date. -Simply visit [ruby-lang.org on GitHub][2] and start -submitting issues or pull requests today! - - - -[1]: {{ site.url }}/vi/ -[2]: https://github.com/ruby/www.ruby-lang.org/ diff --git a/fa/news/_posts/2013-09-07-we-use-fastly-cdn.md b/fa/news/_posts/2013-09-07-we-use-fastly-cdn.md deleted file mode 100644 index e1d8e55922..0000000000 --- a/fa/news/_posts/2013-09-07-we-use-fastly-cdn.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "We started distributing source packages via Fastly" -author: "hsbt" -translator: "Marcus Stollsteimer" -date: 2013-09-07 11:30:00 +0000 -lang: en ---- - -ruby-lang.org started to provide https://cache.ruby-lang.org for -distributing official Ruby source packages. -We can now fastly distribute packages all over the world -using a content delivery network (CDN). - -This CDN is provided by the open source plan of [Fastly][1]. -Many thanks to Fastly for their support. - -[1]: http://www.fastly.com diff --git a/fa/news/_posts/2013-09-23-ruby-2-1-0-preview1-is-released.md b/fa/news/_posts/2013-09-23-ruby-2-1-0-preview1-is-released.md deleted file mode 100644 index 5d8c4f6159..0000000000 --- a/fa/news/_posts/2013-09-23-ruby-2-1-0-preview1-is-released.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.0-preview1 is released" -author: "nurse" -translator: -date: 2013-09-23 07:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.1.0-preview1. -Please check out the new features in Ruby 2.1 before the final release! - -## Download - -We recommend to use -[https://cache.ruby-lang.org/pub/ruby/2.1/](https://cache.ruby-lang.org/pub/ruby/2.1/) -via Fastly. - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.tar.bz2) - - SIZE: 11475553 bytes - MD5: d32d1ea23988399afadbd21c5a7a37fc - SHA256: 860b90d28b214393fd9d77ac2ad65b384d8249cd59b658c668cf0c7bad1db341 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.tar.gz) - - SIZE: 14449544 bytes - MD5: 9df4f546f6b961895ba58a8afdf857da - SHA256: 747472fb33bcc529f1000e5320605a7e166a095d3805520b989e73b33c05b046 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview1.zip) - - SIZE: 16124069 bytes - MD5: f9bc3f9a10174a022381ce2c60a59e64 - SHA256: 28855621f7d364277e7f258d5cc380e005896ef8ebc36e5cbf78d2bf763c291b - -## Changes - -The notable changes are: - -* VM (method cache) -* RGenGC (See ko1's [RubyKaigi presentation](http://rubykaigi.org/2013/talk/S73) and [EuRuKo presentation](http://www.atdot.net/~ko1/activities/Euruko2013-ko1.pdf)) -* refinements -* syntax - * Decimal Literal - * Frozen String Literal -* def's return value -* Bignum - * 128bit - * GMP -* String#scrub -* Socket.getifaddrs -* new RubyGems - -See more details of changes: [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/trunk/NEWS). - -ko1 exhibited toruby presentation: [Summary of Ruby 2.1](http://www.atdot.net/~ko1/activities/toruby05-ko1.pdf) - -Konstantin Haase (@konstantinhaase) wrote a good summary in his blog post: [What's new in Ruby 2.1?](http://rkh.im/ruby-2.1). - -## Release Comment - -Known issues are: - -[https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102) - -See also the release schedule and other information: - -[https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210) diff --git a/fa/news/_posts/2013-09-28-design-contest.md b/fa/news/_posts/2013-09-28-design-contest.md deleted file mode 100644 index 61fea169df..0000000000 --- a/fa/news/_posts/2013-09-28-design-contest.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: news_post -title: "Design Contest for www.ruby-lang.org" -author: "hsbt" -translator: -date: 2013-09-28 23:30:00 +0000 -lang: en ---- - -The Ruby Association will be hosting a design contest for the new design of -ruby-lang.org. - -ruby-lang.org has switched its platform from Radiant CMS to Jekyll in -spring 2013. Everyone can now edit the content through GitHub. How about that? -However, the current design is built for the typical size of a desktop or -laptop but not for smartphones and tablets. We still need more work for the -design! - -Ruby's 20th anniversary this year seems like an appropriate occasion for -a call to submit design ideas for ruby-lang.org. -Please read the [instructions][1] and send your design entry. - -[1]: http://www.ruby.or.jp/en/news/20130924.html diff --git a/fa/news/_posts/2013-10-04-rubyconf-au-2014.md b/fa/news/_posts/2013-10-04-rubyconf-au-2014.md deleted file mode 100644 index 1deb4e9dfe..0000000000 --- a/fa/news/_posts/2013-10-04-rubyconf-au-2014.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: news_post -title: "RubyConf Australia 2014 Call For Proposals and Tickets Now Open!" -author: "Andrew Grimm" -translator: -date: 2013-10-04 11:11:43 +0000 -lang: en ---- - -[RubyConf Australia 2014][1] will be held in Sydney on February 19 to 21. -It will be the second Ruby conference held in Australia. - -The Call For Proposals is open until October 31. Proposals will be -by GitHub pull request, like EuRuKo and Sapporo RubyKaigi. - -"Egg" (pre early-bird) tickets are available until October 28. -Scholarships to attend the event are also available. - -Our first conference had many speakers from overseas, but also local speakers -you may not have seen before. The topics were very diverse and the talks were -enlightening. We also had a variety of workshops, and afterwards people -socialized and explored the city it was hosted in. - -You can get additional information by following us on twitter at -[@rubyconf_au][2], subscribing to our mailing list, or viewing 2013's talks -on Vimeo. - -We hope to see you there! - -[1]: http://www.rubyconf.org.au/ -[2]: http://twitter.com/rubyconf_au diff --git a/fa/news/_posts/2013-11-21-fukuoka-ruby-award-2014.md b/fa/news/_posts/2013-11-21-fukuoka-ruby-award-2014.md deleted file mode 100644 index 4db2feaff1..0000000000 --- a/fa/news/_posts/2013-11-21-fukuoka-ruby-award-2014.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: news_post -title: "2014 Fukuoka Ruby Award Competition - Entries to be judged by Matz" -author: "Fukuoka Ruby" -translator: -date: 2013-11-21 08:17:06 +0000 -lang: en ---- - -Dear Ruby Enthusiasts, - -The Government of Fukuoka, Japan together with "Matz" Matsumoto would -like to invite you to enter the following Ruby competition. If you have -developed an interesting Ruby program, please be encouraged to apply. - -2014 Fukuoka Ruby Award Competition - Grand Prize - 1 Million Yen! - -Entry Deadline: November 29, 2013 - -Matz and a group of panelists will select the winners of the Fukuoka Competition. -The grand prize for the Fukuoka Competition is 1 million yen. Past grand -prize winners include Rhomobile (USA) and APEC Climate Center (Korea). - -See the winners from last year: - -[http://www.myfukuoka.com/category/ruby-award-winners][1] - -Programs entered in the competition do not have to be written entirely in Ruby -but should take advantage of the unique characteristics of Ruby. - -Projects must have been developed or completed within the past 12 months to be -eligible. Please visit the following Fukuoka website for additional details or -to enter: - -[http://www.digitalfukuoka.jp/events/22?locale=ja][2] -or -[http://www.myfukuoka.com/news/technology-news/2014-fukuoka-ruby-award-guidelines-for-applicants.html][3] - -[http://www.digitalfukuoka.jp/uploaded/26/RubyAward_ApplicationForm_2014.doc][4] - -Please email the application form to [award@f-ruby.com][5]. - -This year, we have the following special prizes: -The winner of the Engine Yard Prize will receive: - -* Credit for 5,000 hours of Engine Yard Cloud -* A pair of tickets to RubyKaigi (incl. 50,000 yen per person for transport expenses) -* Engine Yard novelty goods set - -The winner of Heroku Prize will receive: - -* 100,000 yen -* A pair of tickets to RubyKaigi (incl. 50,000 yen per person for transport expenses) -* Heroku novelty goods set - -The winner of the paperboy&co. Prize will receive: - -* Free pair tickets to Shimane (Ruby City Matsue) for 3 days - (transportation expenses up to 50,000 yen per person) -* Free gTLD (com, net, org, info, biz) for 10 years - -"Matz will be testing and reviewing your source code thoroughly, so it's very -meaningful to apply! The competition is free to enter." - -Cheers! - -[1]: http://www.myfukuoka.com/category/ruby-award-winners -[2]: http://www.digitalfukuoka.jp/events/22?locale=ja -[3]: http://www.myfukuoka.com/news/technology-news/2014-fukuoka-ruby-award-guidelines-for-applicants.html -[4]: http://www.digitalfukuoka.jp/uploaded/26/RubyAward_ApplicationForm_2014.doc -[5]: mailto:award@f-ruby.com diff --git a/fa/news/_posts/2013-11-22-heap-overflow-in-floating-point-parsing-cve-2013-4164.md b/fa/news/_posts/2013-11-22-heap-overflow-in-floating-point-parsing-cve-2013-4164.md deleted file mode 100644 index 391147fc1f..0000000000 --- a/fa/news/_posts/2013-11-22-heap-overflow-in-floating-point-parsing-cve-2013-4164.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: news_post -title: "Heap Overflow in Floating Point Parsing (CVE-2013-4164)" -author: "tenderlove" -translator: -date: 2013-11-22 5:00:00 +0000 -tags: security -lang: en ---- - -There is an overflow in floating point number parsing in Ruby. This -vulnerability has been assigned the CVE identifier CVE-2013-4164. - -## Details - -Any time a string is converted to a floating point value, a specially crafted -string can cause a heap overflow. This can lead to a denial of service attack -via segmentation faults and possibly arbitrary code execution. Any program -that converts input of unknown origin to floating point values (especially -common when accepting JSON) are vulnerable. - -Vulnerable code looks something like this: - - untrusted_data.to_f - -But any code that produces floating point values from external data is -vulnerable, such as this: - - JSON.parse untrusted_data - -Note that this bug is similar to CVE-2009-0689. - -All users running an affected release should upgrade to the FIXED versions -of Ruby. - -## Affected versions - -* All Ruby 1.8 versions after Ruby 1.8.6 patchlevel 230 -* All Ruby 1.9 versions prior to Ruby 1.9.3 patchlevel 484 -* All Ruby 2.0 versions prior to Ruby 2.0.0 patchlevel 353 -* All Ruby 2.1 versions prior to Ruby 2.1.0 preview2 -* prior to trunk revision 43780 - -## Solutions - -All users are recommended to upgrade to Ruby 1.9.3 patchlevel 484, -Ruby 2.0.0 patchlevel 353 or Ruby 2.1.0 preview2. - -Please note that Ruby 1.8 series or any earlier releases are already -obsoleted. There is no plan to release new FIXED versions for them. -Users of such versions are advised to upgrade as soon as possible as -we cannot guarantee the continued availability of security fixes for -unsupported releases. - -## Credits - -Thanks to Charlie Somerville for reporting this issue! - -## History - -* Originally published at 2013-11-22 04:00:00 UTC -* Secondary published at 2013-11-22 06:46:00 UTC -* Thirdly published at 2013-11-22 22:46:00 UTC -* Fourthly published at 2013-12-10 12:09:38 UTC diff --git a/fa/news/_posts/2013-11-22-ruby-1-9-3-p484-is-released.md b/fa/news/_posts/2013-11-22-ruby-1-9-3-p484-is-released.md deleted file mode 100644 index 5debf35515..0000000000 --- a/fa/news/_posts/2013-11-22-ruby-1-9-3-p484-is-released.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p484 is released" -author: "usa" -translator: -date: 2013-11-22 04:00:00 +0000 -lang: en ---- - -Now Ruby 1.9.3-p484 is released. - -This release includes a security fix about Ruby interpreter core: - - * [Heap Overflow in Floating Point Parsing (CVE-2013-4164)](/en/news/2013/11/22/heap-overflow-in-floating-point-parsing-cve-2013-4164/) - -And some bugfixes are also included. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_484/ChangeLog) for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.bz2) - - SIZE: 10041514 bytes - MD5: 03f5b08804927ceabe5122cb90f5d0a9 - SHA256: 0fdc6e860d0023ba7b94c7a0cf1f7d32908b65b526246de9dfd5bb39d0d7922b - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.gz) - - SIZE: 12576996 bytes - MD5: 8ac0dee72fe12d75c8b2d0ef5d0c2968 - SHA256: d684bc3a5ba72cda9ef30039f783c0f8cdc325bae5c8738c7bf05577cbe8f31d - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.zip) - - SIZE: 13958042 bytes - MD5: 1b74a8a3b1e8f13bb306dd59cc1e12d1 - SHA256: 7496c972c716f0bc9f9c718155ef36281e9f22375867e95abc2ba64c1fb09d2e - -## Release Comment - -Many people (committers, contributors and reporters) helped me to make this release. -Thank you! diff --git a/fa/news/_posts/2013-11-22-ruby-2-0-0-p353-is-released.md b/fa/news/_posts/2013-11-22-ruby-2-0-0-p353-is-released.md deleted file mode 100644 index 72ab39b7ea..0000000000 --- a/fa/news/_posts/2013-11-22-ruby-2-0-0-p353-is-released.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p353 is released" -author: "nagachika" -translator: -date: 2013-11-22 03:00:00 +0000 -lang: en ---- - -Now Ruby 2.0.0-p353 is released. - -This release includes a security fix about floating point parsing. - -* [Heap Overflow in Floating Point Parsing - (CVE-2013-4164)](/en/news/2013/11/22/heap-overflow-in-floating-point-parsing-cve-2013-4164/) - -And some bugfixes are also included. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_353/ChangeLog) for details. - -## Download - -You can download this release from: - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.bz2) - - SIZE: 10730412 bytes - MD5: 20eb8f067d20f6b76b7e16cce2a85a55 - SHA256: 3de4e4d9aff4682fa4f8ed2b70bd0d746fae17452fc3d3a8e8f505ead9105ad9 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz) - - SIZE: 13572794 bytes - MD5: 78282433fb697dd3613613ff55d734c1 - SHA256: 465afc77d201b5815bb7ce3660a1f5a131f4429a3fa483c126ce66923e4726cc - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.zip) - - SIZE: 15083211 bytes - MD5: 0f8aeb1f1b1cd606ab9790badabd0fb4 - SHA256: 878c9cec05751a4c7019ad255a9e737d0f47ec7188cee1c522545ac7e3bc73a3 - -## Release Comment - -Many committers, testers and users who gave bug reports helped me to -make this release. Thanks for their contributions. diff --git a/fa/news/_posts/2013-11-22-ruby-2-1-0-preview2-is-released.md b/fa/news/_posts/2013-11-22-ruby-2-1-0-preview2-is-released.md deleted file mode 100644 index 08ea3b31b6..0000000000 --- a/fa/news/_posts/2013-11-22-ruby-2-1-0-preview2-is-released.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.0-preview2 is released" -author: "nurse" -translator: -date: 2013-11-22 22:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.1.0-preview2. -Please test the new features in Ruby 2.1 before the final release! - -## Notable changes from preview 1 - -* fix [Heap Overflow in Floating Point Parsing (CVE-2013-4164)](https://www.ruby-lang.org/en/news/2013/11/22/heap-overflow-in-floating-point-parsing-cve-2013-4164/) -* "literal".freeze is now optimized [#9042](https://bugs.ruby-lang.org/issues/9042) -* f suffix of String Literal is removed [#9042](https://bugs.ruby-lang.org/issues/9042) -* fix memory consuming issue on RGenGC ([r43532](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=43532) and [r43755](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=43755)) -* add Exception#cause [#8257](https://bugs.ruby-lang.org/issues/8257) -* update libraries like json, nkf, rake, RubyGems, and RDoc. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.tar.bz2) - - SIZE: 11432454 bytes - MD5: 9d566a9b2d2e7e35ad6125e2a14ce672 - SHA256: 780fddf0e3c8a219057d578e83367ecfac5e945054b9f132b3b93ded4802d1ce - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.tar.gz) - - SIZE: 14416029 bytes - MD5: ba2b95d174e156b417a4d580a452eaf5 - SHA256: a9b1dbc16090ddff8f6c6adbc1fd0473bcae8c69143cecabe65d55f95f6dbbfb - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-preview2.zip) - - SIZE: 16110720 bytes - MD5: 2ad1aa3d89ae32607cf14fc73b192de1 - SHA256: cc2f7f8e05daed716489e5480e6365a711a13ed7747dbc59e989a41fe2805076 - -## Changes from 2.0 - -The notable changes are: - -* VM (method cache) -* RGenGC (See ko1's [RubyKaigi presentation](http://rubykaigi.org/2013/talk/S73) and [RubyConf 2013 presentation](http://www.atdot.net/~ko1/activities/rubyconf2013-ko1_pub.pdf)) -* refinements [#8481](https://bugs.ruby-lang.org/issues/8481) [#8571](https://bugs.ruby-lang.org/issues/8571) -* syntax changes - * Rational/Complex Literal [#8430](https://bugs.ruby-lang.org/issues/8430) - * def's return value [#3753](https://bugs.ruby-lang.org/issues/3753) -* Bignum - * use 128bit integers [#8509](https://bugs.ruby-lang.org/issues/8509) - * use GMP [#8796](https://bugs.ruby-lang.org/issues/8796) -* String#scrub [#8414](https://bugs.ruby-lang.org/issues/8414) -* Socket.getifaddrs [#8368](https://bugs.ruby-lang.org/issues/8368) -* RDoc 4.1.0.preview.2 and RubyGems 2.2.0.preview.2 - -See more details of changes: [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_1_0_preview2/NEWS). - -ko1 talked about the new features of Ruby 2.1 at toruby: [All about Ruby 2.1](http://www.atdot.net/~ko1/activities/toruby05-ko1.pdf) - -Konstantin Haase (@konstantinhaase) wrote a good summary in his blog post: [What's new in Ruby 2.1?](http://rkh.im/ruby-2.1). - -## Release Comment - -Known issues are: - -[https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102) - -See also the release schedule and other information: - -[https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210) diff --git a/fa/news/_posts/2013-11-30-russian-translation.md b/fa/news/_posts/2013-11-30-russian-translation.md deleted file mode 100644 index ae2dc55875..0000000000 --- a/fa/news/_posts/2013-11-30-russian-translation.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: news_post -title: "Russian translation of ruby-lang.org" -author: "Marcus Stollsteimer" -translator: -date: 2013-11-30 12:00:00 +0000 -lang: en ---- - -We just released the [Russian translation of ruby-lang.org][1]. - -Many thanks to the team of translators: - - * Alexey Gaziev (gazay) - * Vlad Bokov (razum2um) - -We are very happy that we can already announce the second new translation -since our switch to a GitHub based workflow earlier this year. - -If you want to contribute to the Ruby community, too, -you can do so by helping to keep this site up-to-date. -Simply visit [ruby-lang.org on GitHub][2] and start -submitting issues or pull requests today! - - - -[1]: {{ site.url }}/ru/ -[2]: https://github.com/ruby/www.ruby-lang.org/ diff --git a/fa/news/_posts/2013-12-09-rubyconf-tw-2014-cfp.md b/fa/news/_posts/2013-12-09-rubyconf-tw-2014-cfp.md deleted file mode 100644 index 8daab25d69..0000000000 --- a/fa/news/_posts/2013-12-09-rubyconf-tw-2014-cfp.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: news_post -title: "The RubyConf Taiwan 2014 Call For Proposals is Now Open" -author: "Juanito Fatas" -translator: -date: 2013-12-09 13:40:00 +0000 -lang: en ---- - -The RubyConf Taiwan 2014 will take place on April 25-26, 2014 in Taipei, Taiwan. - -If you want to give a presentation at RubyConf Taiwan 2014, please submit your -proposal. Any topics related to Ruby are welcomed. - -There are two kinds of presentations: - -* Talk (25 minutes), -* Session (50 minutes). - -**Proposals will be accepted until January 28, 2014.** - -[Please submit your proposal here.][submit-proposal] - -If you have any questions, feel free to email: - -contact@rubyconf.tw - -[See RubyConf Taiwan 2014 on Lanyrd.][rubyconf-tw-2014-lanyrd] - -[rubyconf-tw-2014-lanyrd]: http://lanyrd.com/2014/rubyconftw/ -[submit-proposal]: https://kktix.com/events/rubyconftw2014-cfp?locale=en diff --git a/fa/news/_posts/2013-12-14-rubyconf-india-2014.md b/fa/news/_posts/2013-12-14-rubyconf-india-2014.md deleted file mode 100644 index 14000b97db..0000000000 --- a/fa/news/_posts/2013-12-14-rubyconf-india-2014.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: news_post -title: "RubyConf India 2014 Call For Proposals and Tickets Now Open!" -author: "Manu S Ajith" -translator: -date: 2013-12-14 18:53:33 +0000 -lang: en ---- - -RubyConf India 2014 will be held in Goa, India on 22-23 March, 2014. - -If you want to give a presentation at RubyConf India 2014, please submit -your proposal. The Call For Proposals is open till Dec 31st, 2013. - -[Please submit your proposal here][proposals]. - -To book your tickets, visit [here][tickets]. - -You can get additional information by following us -on twitter at @rubyconfindia. - -We hope to see you there! - - -[proposals]: https://rubyconfindia2014.busyconf.com/proposals/new -[tickets]: http://rubyconfindia.org/2014/tickets.html diff --git a/fa/news/_posts/2013-12-17-maintenance-of-1-8-7-and-1-9-2.md b/fa/news/_posts/2013-12-17-maintenance-of-1-8-7-and-1-9-2.md deleted file mode 100644 index 3d22ba47ac..0000000000 --- a/fa/news/_posts/2013-12-17-maintenance-of-1-8-7-and-1-9-2.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: news_post -title: "Security Maintenance Extension of Ruby 1.8.7 and 1.9.2" -author: "zzak" -translator: -date: 2013-12-17 20:49:03 +0000 -lang: en ---- - -Effective immediately, 1.8.7 and 1.9.2 will be supported for security patches -until June 2014. - -* Terence Lee ([@hone02](https://twitter.com/hone02)) - and Zachary Scott ([@_zzak](https://twitter.com/_zzak)) - will assume maintainership. -* After the 6 month maintenance period, we can add more committers to extend - another 6 months. - -This maintenance extension is made possible by [Heroku][heroku], -see their blog post [A Patch in Time: Securing Ruby][securing-ruby] -for more information. - -### Reporting issues - -During this extended maintenance period we will _only_ apply security patches -to the source code repository for [1.8.7][source-187] and [1.9.2][source-192]. - -We take security very seriously, if you find a vulnerability please report it -to security@ruby-lang.org immediately. This mailing list is private and -reported problems will be published after a fix is released. - -Please see [ruby-lang.org/en/security][security-en] for more information. - -### On Release Management - -As I mentioned above, we will only be applying security patches and -incrementing the patch level. - -We will not be releasing a patched version of 1.8.7 or 1.9.2 to ruby-lang.org. -However, you are free to repackage binaries from source. - -Reason being, we don't want any new tickets, as an official release will result -in continued responsibility of ruby-core to follow up on maintenance. Our team -resources are already low, and we want to encourage upgrades, not support -outdated versions. - -### Why resurrect 1.8.7? - -You may remember an announcement approximately 6 months ago that -[sunset 1.8.7][sunset-187-en]. - -While ruby-core will no longer resume maintenance of 1.8.7 or 1.9.2, Terence -and Zachary will support these versions for security maintenance as part of a -corporate sponsorship. - -In the past we have supported vendors who wish to maintain legacy versions. In -2009 the maintenance of Ruby 1.8.6 was transferred to Engine Yard when they -released 1.8.6-p369. - -### Words of encouragement - -We would like to take this chance to strongly encourage you to upgrade to a -supported version of Ruby as soon as possible. Many ruby-core members have put -countless hours into improving the performance and features of Ruby in 2.0+ and -we wish you would take advantage of it. - -Thank you for your continued support and lets keep making Ruby better! - - -[heroku]: http://heroku.com/ -[securing-ruby]: https://blog.heroku.com/archives/2013/12/5/a_patch_in_time_securing_ruby/ -[source-187]: https://bugs.ruby-lang.org/projects/ruby-187/repository -[source-192]: https://bugs.ruby-lang.org/projects/ruby-192/repository -[security-en]: https://www.ruby-lang.org/en/security/ -[sunset-187-en]: https://www.ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7/ diff --git a/fa/news/_posts/2013-12-20-ruby-2-1-0-rc1-is-released.md b/fa/news/_posts/2013-12-20-ruby-2-1-0-rc1-is-released.md deleted file mode 100644 index 2acc6f2116..0000000000 --- a/fa/news/_posts/2013-12-20-ruby-2-1-0-rc1-is-released.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.0-rc1 is released" -author: "nurse" -translator: -date: 2013-12-20 16:53:05 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.1.0-rc1. -Please test the new features in Ruby 2.1 before the final release scheduled on 2013-12-25! - -## Notable changes since preview 2 - -* remove curses [#8584](https://bugs.ruby-lang.org/issues/8584) - -for other changes, see [NEWS](https://github.com/ruby/ruby/blob/v2_1_0_rc1/NEWS). - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.tar.bz2) - * SIZE: 11394226 bytes - * MD5: cae095b90349b5b0f7026060cc3dd2c5 - * SHA256: af828bc0fe6aee5ffad0f8f10b48ee25964f54d5118570937ac7cf1c1df0edd3 -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.tar.gz) - * SIZE: 14450990 bytes - * MD5: a16561f64d78a902fab08693a300df98 - * SHA256: 1b467f13be6d3b3648a4de76b34b748781fe4f504a19c08ffa348c75dd62635e -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0-rc1.zip) - * SIZE: 16107702 bytes - * MD5: b6cdc0e63185b4aeb268bdf6ebd4de9f - * SHA256: 4d6a256b73b79f5b64182e1f55db3e61042bbe0166a45917e69c1b4e47247276 - -## Changes since 2.0 - -The notable changes are: - -* VM (method cache) -* RGenGC (See ko1's [RubyKaigi presentation](http://rubykaigi.org/2013/talk/S73) and [RubyConf 2013 presentation](http://www.atdot.net/~ko1/activities/rubyconf2013-ko1_pub.pdf)) -* refinements [#8481](https://bugs.ruby-lang.org/issues/8481) [#8571](https://bugs.ruby-lang.org/issues/8571) -* syntax changes - * Rational/Complex Literal [#8430](https://bugs.ruby-lang.org/issues/8430) - * def's return value [#3753](https://bugs.ruby-lang.org/issues/3753) -* Bignum - * use GMP [#8796](https://bugs.ruby-lang.org/issues/8796) -* String#scrub [#8414](https://bugs.ruby-lang.org/issues/8414) -* Socket.getifaddrs [#8368](https://bugs.ruby-lang.org/issues/8368) -* RDoc 4.1.0 and RubyGems 2.2.0 -* "literal".freeze is now optimized [#9042](https://bugs.ruby-lang.org/issues/9042) -* add Exception#cause [#8257](https://bugs.ruby-lang.org/issues/8257) -* update libraries like BigDecimal, JSON, NKF, Rake, RubyGems, and RDoc -* remove curses [#8584](https://bugs.ruby-lang.org/issues/8584) - -See more details of changes: [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_1_0_rc1/NEWS). - -ko1 talked about the new features of Ruby 2.1 at toruby: [All about Ruby 2.1](http://www.atdot.net/~ko1/activities/toruby05-ko1.pdf) - -Konstantin Haase (@konstantinhaase) wrote a good summary in his blog post: [What's new in Ruby 2.1?](http://rkh.im/ruby-2.1). - -## Release Comment - -Known issues are: - -<https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=102> - -See also the release schedule and other information: - -<https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering210> diff --git a/fa/news/_posts/2013-12-21-ruby-version-policy-changes-with-2-1-0.md b/fa/news/_posts/2013-12-21-ruby-version-policy-changes-with-2-1-0.md deleted file mode 100644 index 7e387e08ed..0000000000 --- a/fa/news/_posts/2013-12-21-ruby-version-policy-changes-with-2-1-0.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: news_post -title: "Ruby version policy changes starting with Ruby 2.1.0" -author: "zzak" -translator: -date: 2013-12-21 2:00:00 +0000 -lang: en ---- - -We've decided to change the Ruby versioning policy to a more -[Semantic Versioning](http://semver.org/) type starting with -the release of Ruby 2.1.0. - -In order to provide a more well defined and properly utilized versioning scheme -for Ruby, we've decided to gradually switch to the following policy. - -## Policy Changes - -This policy is based off a proposal by ruby-lang.org system administrator -Hiroshi Shibata ([@hsbt](https://twitter.com/hsbt)). - -### Version Schema - -* `MAJOR`: increased when incompatible change which can't be released in MINOR - * Reserved for special events -* `MINOR`: increased every christmas, may be API incompatible -* `TEENY`: security or bug fix which maintains API compatibility - * May be increased more than 10 (such as `2.1.11`), and will be released every 2-3 months. -* `PATCH`: number of commits since last `MINOR` release (will be reset at 0 when releasing `MINOR`) - -### Branching Schema - -We will continue to maintain the following branches: - -* trunk -* `ruby_{MAJOR}_{MINOR}_{TEENY}` - -### API Compatibility - -The following traits can be marked as an incompatible change, requiring an -increase in the `MINOR` version: - -* Removal of C-level api features -* Backwards incompatible changes or additions - -### ABI Compatibility - -ABI will comply with the following scheme: `{MAJOR}.{MINOR}.0` - -We will give our best effort to keep ABI compatibility within the same `MINOR` -level releases, so `TEENY` will be fixed at 0. - -## References - -To read up more on this proposal please see the following links: - -* [Introducing a semantic versioning scheme and branching policy](https://bugs.ruby-lang.org/issues/8835) -* [Accepted proposal in English](https://gist.github.com/sorah/7803201) -* [Accepted proposal in Japanese](https://gist.github.com/hsbt/7719305) - -## Thank you! - -I'd like to personally thank everyone who contributed to this discussion. -Each step we take is closer to a more stable and effective Ruby. diff --git a/fa/news/_posts/2013-12-25-ruby-2-1-0-is-released.md b/fa/news/_posts/2013-12-25-ruby-2-1-0-is-released.md deleted file mode 100644 index 8d0ae4b127..0000000000 --- a/fa/news/_posts/2013-12-25-ruby-2-1-0-is-released.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.0 is released" -author: "nurse" -translator: -date: 2013-12-25 16:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.1.0. - -Ruby 2.1 has many improvements including speedup without severe -incompatibilities. - -Try it! - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.bz2) - * SIZE: 12007442 bytes - * MD5: 1546eeb763ac7754365664be763a1e8f - * SHA256: 1d3f4ad5f619ec15229206b6667586dcec7cc986672c8fbb8558161ecf07e277 -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.gz) - * SIZE: 15076389 bytes - * MD5: 9e6386d53f5200a3e7069107405b93f7 - * SHA256: 3538ec1f6af96ed9deb04e0965274528162726cc9ba3625dcf23648df872d09d -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.zip) - * SIZE: 16603067 bytes - * MD5: 2fc3a80b56da81b906a9bb6fc7ca8399 - * SHA256: d40d7bfb39ca2e462dea61dcbbcf33426b60e6e553335c3afb39b4d827a6891c - -## Changes since 2.0 - -The notable changes are: - -* VM (method cache) -* RGenGC (See ko1's [RubyKaigi presentation](http://rubykaigi.org/2013/talk/S73) and [RubyConf 2013 presentation](http://www.atdot.net/~ko1/activities/rubyconf2013-ko1_pub.pdf)) -* refinements [#8481](https://bugs.ruby-lang.org/issues/8481) [#8571](https://bugs.ruby-lang.org/issues/8571) -* syntax changes - * Rational/Complex Literal [#8430](https://bugs.ruby-lang.org/issues/8430) - * def's return value [#3753](https://bugs.ruby-lang.org/issues/3753) -* Bignum - * use GMP [#8796](https://bugs.ruby-lang.org/issues/8796) -* String#scrub [#8414](https://bugs.ruby-lang.org/issues/8414) -* Socket.getifaddrs [#8368](https://bugs.ruby-lang.org/issues/8368) -* RDoc 4.1.0 and RubyGems 2.2.0 -* "literal".freeze is now optimized [#9042](https://bugs.ruby-lang.org/issues/9042) -* add Exception#cause [#8257](https://bugs.ruby-lang.org/issues/8257) -* update libraries like BigDecimal, JSON, NKF, Rake, RubyGems, and RDoc -* remove curses [#8584](https://bugs.ruby-lang.org/issues/8584) - -See more details of changes: [NEWS in Ruby repository](https://github.com/ruby/ruby/blob/v2_1_0/NEWS). diff --git a/fa/news/_posts/2014-01-10-ruby-1-9-3-will-end-on-2015.md b/fa/news/_posts/2014-01-10-ruby-1-9-3-will-end-on-2015.md deleted file mode 100644 index 64fb320fd3..0000000000 --- a/fa/news/_posts/2014-01-10-ruby-1-9-3-will-end-on-2015.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: news_post -title: "Support for Ruby version 1.9.3 will end on February 23, 2015" -author: "hsbt" -translator: -date: 2014-01-10 00:00:00 +0000 -lang: en ---- - -Today we are announcing our plans for the future of Ruby version 1.9.3. - -Currently this branch is in maintenance mode, and will remain so until -February 23, 2014. - -After February 23 2014, we will only provide security fixes for 1.9.3 until -February 23 2015, after which all support will end for 1.9.3. - -We highly recommend that you upgrade to Ruby 2.1 or 2.0.0 as soon as possible. diff --git a/fa/news/_posts/2014-01-20-abril-pro-ruby-2014.md b/fa/news/_posts/2014-01-20-abril-pro-ruby-2014.md deleted file mode 100644 index 55289ed578..0000000000 --- a/fa/news/_posts/2014-01-20-abril-pro-ruby-2014.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: news_post -title: "Abril Pro Ruby 2014, The Tropical Ruby Conference" -author: "lailsonbm" -translator: -date: 2014-01-20 11:22:14 +0000 -lang: en ---- - -[Abril Pro Ruby 2014](http://abrilproruby.com/), the third edition of -the Tropical Ruby Conference, will happen in **April 26, 2014** at the -**Porto de Galinhas beach**, a sunny paradise in the northeast of Brazil. - -Come and meet top notch Rubyists while having a great time exploring this -beautiful place. -The [conference official activities](http://abrilproruby.com/en/conference/) -include scuba diving, raft boat sailing and catamaran ride, which will happen -one day before and one day after the event. - -**Jim Weirich** (the creator of Rake), **Rafael França** (from the Rails Core -Team) and **Nell Shamrell** (the Regular Expressions guru) are confirmed -speakers and the **Call for Proposals** is currently open. If you want to -give a talk, [submit your proposal](http://cfp.abrilproruby.com/) until -the end of this month (**January 31st**). diff --git a/fa/news/_posts/2014-02-12-the-2014-ruby-hero-awards.md b/fa/news/_posts/2014-02-12-the-2014-ruby-hero-awards.md deleted file mode 100644 index 80a946c131..0000000000 --- a/fa/news/_posts/2014-02-12-the-2014-ruby-hero-awards.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "2014 Ruby Hero Award Nominations" -author: "Gregg Pollack" -translator: -date: 2014-02-12 14:02:03 +0000 -lang: en ---- - -Has anyone helped you greatly in the Ruby community this past year? Maybe they -taught you something, wrote a gem, or gave you some tech support? If anyone -comes to mind, then please take the time to -[nominate them](http://rubyheroes.com/) for a Ruby Hero Award. - -In the past 6 years I've given away 38 trophies to those in our community who -don't get the recognition they deserve. In three weeks, the Ruby Heroes from -all previous years will look at the nominations and decide who should receive -the awards (this way there’s no popularity contest). However, your nominations -do matter, so please take a moment and spread the gratitude. -[Vote today!](http://rubyheroes.com/) diff --git a/fa/news/_posts/2014-02-24-ruby-1-9-3-p545-is-released.md b/fa/news/_posts/2014-02-24-ruby-1-9-3-p545-is-released.md deleted file mode 100644 index f687c6014c..0000000000 --- a/fa/news/_posts/2014-02-24-ruby-1-9-3-p545-is-released.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p545 is released" -author: "usa" -translator: -date: 2014-02-24 05:00:00 +0000 -lang: en ---- - -Happy birthday, Ruby! -Today, Feb. 24th, is the 21st anniversary of Ruby. -In commemoration of it, Ruby 1.9.3-p545 is released. - -This is the last ordinal release of Ruby 1.9.3. -It means that Ruby 1.9.3 goes into the state of the security maintenance -phase, and will never be released unless any critical regressions -or security issues are found. -This phase is planned to be maintained for 1 year. -Then, maintenance of Ruby 1.9.3 will be ended at Feb. 24th, 2015. - -This release includes many bugfixes. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-193/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_545/ChangeLog) for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.bz2) - - SIZE: 10038164 bytes - MD5: 4743c1dc48491070bae8fc8b423bc1a7 - SHA256: 2533de9f56d62f11c06a02dd32b5ab6d22a8f268c94b8e1e1ade6536adfd1aab - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.gz) - - SIZE: 12582277 bytes - MD5: 8e8f6e4d7d0bb54e0edf8d9c4120f40c - SHA256: 05fb00ebd374ef800475eb40b71ebc42cc18c1f61f4885c11737f310d3d23111 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.zip) - - SIZE: 13970747 bytes - MD5: d056aefa64237737fedb127257b502d2 - SHA256: 2d0d17840da0dfbea8ace8a77050a7710d2ef3c9e05dd88f2731464532aea31e - -## Release Comment - -I'm grateful to everybody who supports Ruby. -Thank you. - -This release is dedicated to the memory of our best comrade, Jim Weirich. -Thank you, Jim. Rest in peace. diff --git a/fa/news/_posts/2014-02-24-ruby-2-0-0-p451-is-released.md b/fa/news/_posts/2014-02-24-ruby-2-0-0-p451-is-released.md deleted file mode 100644 index 8a152ab589..0000000000 --- a/fa/news/_posts/2014-02-24-ruby-2-0-0-p451-is-released.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p451 is released" -author: "nagachika" -translator: -date: 2014-02-24 12:00:00 +0000 -lang: en ---- - -Today, Feb. 24th, is the 21st anniversary of Ruby, -so we happily announce a new patch release, Ruby 2.0.0-p451. - -This release includes many bugfixes. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_451/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.bz2) - - SIZE: 10725438 bytes - MD5: 908e4d1dbfe7362b15892f16af05adf8 - SHA256: 5bf8a1c7616286b9dbc962912c3f58e67bc3a70306ca90b0882ef0bd442e02f5 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.gz) - - SIZE: 13587580 bytes - MD5: 9227787a9636551f1749ee8394b5ffe5 - SHA256: e6d6900eb4084053058349cfdbf63ad1414b6a8d75d58b47ed81010a9947e73b - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.zip) - - SIZE: 15097530 bytes - MD5: e90cb32e9cf534d180754d7492988748 - SHA256: 8999133f35ad5ddc9a6174860c795c5022e3868ff3b6587448b86af81ea2d5ec - -## Release Comment - -Many committers, developers and users who gave bug reports helped me to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2014-02-24-ruby-2-1-1-is-released.md b/fa/news/_posts/2014-02-24-ruby-2-1-1-is-released.md deleted file mode 100644 index 1540e7d5af..0000000000 --- a/fa/news/_posts/2014-02-24-ruby-2-1-1-is-released.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.1 is released" -author: "naruse" -translator: -date: 2014-02-24 05:00:00 +0000 -lang: en ---- - -Today, Feb. 24th, is the 21st anniversary of Ruby, -so we happily announce a new patch release of Ruby 2.1, Ruby 2.1.1. - -Ruby 2.1 has many improvements including speedup without -severe incompatibilities. You can use this on Rails and other applications, -and get a more comfortable experience. - -This release includes many bugfixes. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_1/ChangeLog) for details. - -Following the previously announced [changed versioning policy of Ruby 2.1](https://www.ruby-lang.org/en/news/2013/12/21/ruby-version-policy-changes-with-2-1-0/), -this version is simply called "2.1.1". - -**Update:** We've noticed a regression in `Hash#reject`. For more details, see: -[Regression of Hash#reject in Ruby 2.1.1](https://www.ruby-lang.org/en/news/2014/03/10/regression-of-hash-reject-in-ruby-2-1-1/). - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.bz2> - * SIZE: 11990697 bytes - * MD5: 53edc33b2f590ecdd9f6a344b9d92d0d - * SHA256: 96aabab4dd4a2e57dd0d28052650e6fcdc8f133fa8980d9b936814b1e93f6cfc -* <https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz> - * SIZE: 15092388 bytes - * MD5: e57fdbb8ed56e70c43f39c79da1654b2 - * SHA256: c843df31ae88ed49f5393142b02b9a9f5a6557453805fd489a76fbafeae88941 -* <https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.zip> - * SIZE: 16618363 bytes - * MD5: 02c1dbff9c550d2d808444c8fef483bc - * SHA256: 6c226d3f3a4bd1a9356077473d1915968f45af6775660bb8ec5e245a337e3b14 diff --git a/fa/news/_posts/2014-03-10-regression-of-hash-reject-in-ruby-2-1-1.md b/fa/news/_posts/2014-03-10-regression-of-hash-reject-in-ruby-2-1-1.md deleted file mode 100644 index c03330abde..0000000000 --- a/fa/news/_posts/2014-03-10-regression-of-hash-reject-in-ruby-2-1-1.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: news_post -title: "Regression of Hash#reject in Ruby 2.1.1" -author: "sorah" -translator: -date: 2014-03-10 14:00:00 +0000 -lang: en ---- - -In Ruby 2.1.0 or earlier, the `reject` method in any class that inherits -`Hash` returns an object of its own class. -But in Ruby 2.1.1, this behavior has changed accidentally to return always -a plain Hash object, not of the inherited class. - -{% highlight ruby %} -class SubHash < Hash -end - -p Hash.new.reject { }.class -#=> 2.1.0: Hash, 2.1.1: Hash -p SubHash.new.reject { }.class -#=> 2.1.0: SubHash, 2.1.1: Hash -{% endhighlight %} - -(To be exact, extra states such as instance variables, etc. aren't -copied either.) - -Ruby 2.1.1 shouldn't include such behavior changes, because with the release -of Ruby 2.1.0 we've [changed our versioning policy](https://www.ruby-lang.org/en/news/2013/12/21/ruby-version-policy-changes-with-2-1-0/), -so Ruby 2.1.1 is a patch level release and it shouldn't break backwards -compatibility. - -This regression could potentially affect many libraries, one such case is -Rails' `HashWithIndifferentAccess` and `OrderedHash`. They are broken: -[Rails' issue #14188](https://github.com/rails/rails/issues/14188). - -This behavior will be reverted to the 2.1.0 behavior in Ruby 2.1.2, -but is expected to be the default behavior for Ruby 2.2.0: -[Feature #9223](https://bugs.ruby-lang.org/issues/9223). -So we recommend to fix your code in order to expect this behavior change. - -This accident is caused by one missing backport commit. For more details, see -[http://blog.sorah.jp/2014/03/10/hash-reject-regression-in-ruby211](http://blog.sorah.jp/2014/03/10/hash-reject-regression-in-ruby211). - -Sorry for any inconvenience, and thank you for your support. diff --git a/fa/news/_posts/2014-03-14-rubyconf-taiwan-2014.md b/fa/news/_posts/2014-03-14-rubyconf-taiwan-2014.md deleted file mode 100644 index 78e55fd975..0000000000 --- a/fa/news/_posts/2014-03-14-rubyconf-taiwan-2014.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: news_post -title: "RubyConf Taiwan 2014 Registration Now Open" -author: "Juanito Fatas" -translator: -date: 2014-03-14 05:58:31 +0000 -lang: en ---- - -RubyConf Taiwan 2014 will be held in Taipei, Taiwan on 25-26 April, 2014. - -For details about speakers and schedule please visit the [conference site](http://rubyconf.tw/2014/) and the [RubyConf Taiwan press release](http://rubytaiwan.tumblr.com/post/79134654151/rubyconftaiwan2014-press-release-en). - -Tickets are open till March 31st, 2014. - -[Reserve Your Ticket!](http://rubytaiwan.kktix.cc/events/rubyconftw2014?locale=en) diff --git a/fa/news/_posts/2014-03-15-eurucamp-2014.md b/fa/news/_posts/2014-03-15-eurucamp-2014.md deleted file mode 100644 index e17aeb02d2..0000000000 --- a/fa/news/_posts/2014-03-15-eurucamp-2014.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: news_post -title: "eurucamp 2014 dates and CFP" -author: "Florian Gilcher" -translator: -date: 2014-03-15 14:00:00 +0000 -lang: en ---- - -[eurucamp 2014][1] will be held around Berlin on August 1st to 3rd. -eurucamp is an offspring of EuRuKo 2011 and has been held ever since. - -The [Call for Proposals][2] is open until May 1st. -The CFP is anonymous and fair, all speaking slots will be filled through it. In -addition to that, eurucamp has an -[unconditional mentorship program][3]. - -We are searching for both talks and workshops about Ruby and the community. -We are very welcoming towards new speakers or seasoned speakers trying out new topics. -Find details in our [CFP guide][4]. - -eurucamp is a summer conference with ample free time for socializing and many -opportunities to come up with your own ideas. See our -[2012 video][5] on our [Vimeo page][6] -for an impression. Also have a look at our [activities app][7] -as a sample of what happens in and around eurucamp. - -eurucamp has a strict [Code of Conduct][8]. We are family friendly and -offer child care. We welcome anyone with accessibility issues. - -We are an international conference and have seen guests from all around the world. - -Ticket sales will open soon. - -[1]: http://2014.eurucamp.org -[2]: http://cfp.eurucamp.org -[3]: http://cfp.eurucamp.org/mentorship -[4]: http://cfp.eurucamp.org/guide -[5]: https://vimeo.com/51200145 -[6]: https://vimeo.com/eurucamp -[7]: http://activities.eurucamp.org -[8]: http://cfp.eurucamp.org/coc diff --git a/fa/news/_posts/2014-03-29-heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525.md b/fa/news/_posts/2014-03-29-heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525.md deleted file mode 100644 index 17c6d4b7ec..0000000000 --- a/fa/news/_posts/2014-03-29-heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: news_post -title: "Heap Overflow in YAML URI Escape Parsing (CVE-2014-2525)" -author: "hone and zzak" -translator: -date: 2014-03-29 01:49:25 +0000 -tags: security -lang: en ---- - -There is an overflow in URI escape parsing of YAML in Ruby. -This vulnerability has been assigned the CVE identifier -[CVE-2014-2525](http://www.ocert.org/advisories/ocert-2014-003.html). - -## Details - -Any time a string in YAML with tags is parsed, a specially crafted string can cause -a heap overflow which can lead to arbitrary code execution. - -For example: - -{% highlight ruby %} -YAML.load <code_from_unknown_source> -{% endhighlight %} - -## Affected Versions - -Ruby 1.9.3-p0 and above include psych as the default YAML parser. -Any versions of psych linked against libyaml `<= 0.1.5` are affected. - -And, these versions of Ruby bundle an affected version of libyaml: - -* Ruby 2.0.0-p451 and earlier, -* Ruby 2.1.0 and Ruby 2.1.1. - -You can verify the version of libyaml used by running: - -{% highlight sh %} -$ ruby -rpsych -e 'p Psych.libyaml_version' -[0, 1, 5] -{% endhighlight %} - -## Solutions - -Users who install libyaml to the system are recommended to update libyaml to `0.1.6`. -When recompiling Ruby, point to the newly updated libyaml: - -{% highlight sh %} -$ ./configure --with-yaml-dir=/path/to/libyaml -{% endhighlight %} - -Users without a system libyaml rely on the embedded libyaml and are recommended -to update psych to `2.0.5` which vendors libyaml `0.1.6`: - -{% highlight sh %} -$ gem install psych -{% endhighlight %} - -or, update your Ruby to 2.0.0-p481, 2.1.2 or newer. - -## History - -* Originally published at 2014-03-29 01:49:25 UTC -* Update published at 2014-03-29 09:37:00 UTC -* Update published at 2014-05-09 03:00:00 UTC diff --git a/fa/news/_posts/2014-04-10-severe-openssl-vulnerability.md b/fa/news/_posts/2014-04-10-severe-openssl-vulnerability.md deleted file mode 100644 index 1fe5380466..0000000000 --- a/fa/news/_posts/2014-04-10-severe-openssl-vulnerability.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: news_post -title: "OpenSSL Severe Vulnerability in TLS Heartbeat Extension (CVE-2014-0160)" -author: "hone and zzak" -translator: -date: 2014-04-10 01:04:27 +0000 -tags: security -lang: en ---- - -There is a severe vulnerability in OpenSSL's implementation of the TLS/DTLS -(transport layer security protocols) heartbeat extension (`RFC6520`). -This a serious vulnerability which has been assigned the CVE identifier -[CVE-2014-0160](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0160). - -Exploitation may lead to disclosure of memory contents from the server to the -client and from the client to the server. An attacker can remotely retrieve -sensitive data from memory, including, but not limited to secret keys used for -SSL encryption and authentication tokens. - -For more information on the attacks see [heartbleed.com](http://heartbleed.com). - -## How is Ruby affected? - -Ruby is affected when statically compiled against a vulnerable version of -OpenSSL through the standard library OpenSSL C extension. - -OpenSSL versions 1.0.1 through 1.0.1f (inclusive) are vulnerable to this -attack. To verify which version of the OpenSSL library you link to Ruby, -use the following: - -{% highlight sh %} -ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)' -{% endhighlight %} - -To verify the version of OpenSSL currently installed with Ruby, -use the following: - -{% highlight sh %} -ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION' -{% endhighlight %} - -You can verify if your client software or a running service are vulnerable -by using [emboss’s script](https://github.com/emboss/heartbeat). - -## Solutions - -To upgrade to the latest version of OpenSSL version `1.0.1g` or newer, -you should check with your current operating system package manager to ensure -they provide an up-to-date OpenSSL. You may need to consult with your -operating system distributor to verify their version of OpenSSL is patched, -regardless of the version number available. - -If upgrade is not an option, recompile a patched OpenSSL with the -option `-DOPENSSL_NO_HEARTBEATS` at build time. - -With an upgraded OpenSSL, it’s recommended to recompile Ruby to ensure -there are no links to a vulnerable version of OpenSSL. - -This means updating any tools used to build Ruby such as RVM or ruby-build. -If you build Ruby yourself, use the `--with-openssl-dir` option at -compile time to link an upgraded OpenSSL install directory. - -{% highlight sh %} -$ ./configure --with-openssl-dir=/path/to/openssl -$ make -$ make install -{% endhighlight %} - -After upgrading OpenSSL and Ruby, it’s important to restart all programs -using the vulnerable version. - -Many operating system distributions already provide (or will soon be -providing) patched versions and rebuilt packages for libraries vulnerable to -this attack. It’s important to monitor your operating system distributor to -ensure you remain secure. diff --git a/fa/news/_posts/2014-05-09-dispute-of-vulnerability-cve-2014-2734.md b/fa/news/_posts/2014-05-09-dispute-of-vulnerability-cve-2014-2734.md deleted file mode 100644 index 899bc844e5..0000000000 --- a/fa/news/_posts/2014-05-09-dispute-of-vulnerability-cve-2014-2734.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: news_post -title: "Dispute of Vulnerability CVE-2014-2734" -author: "emboss" -translator: -date: 2014-05-09 05:33:54 +0000 -tags: security -lang: en ---- - -We were recently informed about a possible security vulnerability that has -been published as -[CVE-2014-2734](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-2734). -However, based on our detailed analysis below, we do **not** consider Ruby -to be vulnerable. - -This vulnerability could possibly allow an attacker to forge arbitrary root -certificates by modifying the certificate’s signature, effectively replacing -the certificate’s original private key with one chosen by the attacker. - -## Proof of Concept - -The following is our analysis of CVE-2014-2734, we were able to reduce the -original PoC, which we believe captures the essence of the proof of concept: - -{% highlight ruby %} -require 'openssl' - -forge_key = OpenSSL::PKey::RSA.new(2048) -raw_certificate = File.read("arbitrary.cer") -cert = OpenSSL::X509::Certificate.new(raw_certificate) -resigned_cert = cert.sign(spoof, OpenSSL::Digest::SHA1.new) - -resigned_cert.verify(key) #=> true -{% endhighlight %} - -It may come as a surprise that `X509Certificate#verify` returns `true`. -The original certificate may contain a -[Subject Public Key Info](http://tools.ietf.org/html/rfc5280#section-4.1.2.7) -pointing to the original public key which is different from the public key of -`forge_key`. Clearly, the public / private key pair that was used to re-sign -the certificate no longer matches the original public key referenced in the -Subject Public Key Info. Why does `#verify` return `true`? - -### How keys are verified - -`X509Certificate#verify` uses OpenSSL’s -[`X509_verify`](https://github.com/openssl/openssl/blob/master/crypto/x509/x_all.c#L74) -function internally, which delegates to -[`ASN1_item_verify`](https://github.com/openssl/openssl/blob/master/crypto/asn1/a_verify.c#L134). -These functions establish the validity of the signature given the public key -that was presented. However, they will **not** verify if the given key -actually matches any subject public key referenced in the certificate. -This means that returning `true` is expected behavior for `X509Certificate#verify` -in this scenario. Omitting this check has no significant impact on the overall -security of the X.509 trust model. - -Section 4.1.1.3 of RFC 5280 explicitly states that by computing a -certificate’s signature, the CA confirms the correctness of the information -contained in the certificate. While this principle is violated in the above -example code, it poses no threat to security. A certificate forged or modified -in this way cannot be exploited unless someone is able to convince you to -explicitly trust a certificate that violates this principle. - -## Potential risks - -There are two cases to consider: - -### Re-signing a root certificate - -As users, we trust root certificates unconditionally. Even if they do not -contain valid information, the status of being a publicly acknowledged root -certificate alone is what keeps them pristine. They are preconfigured values -in the trust stores of our browsers or operating systems. Simply possessing -them establishes their status as valid trust anchors. For example, OpenSSL -itself does not check the signature of self-signed root certificates by -default for the same reasons, -cf. [X509_V_FLAG_CHECK_SS_SIGNATURE documentation](https://www.openssl.org/docs/crypto/X509_VERIFY_PARAM_set_flags.html). - -A re-signed root certificate becomes a de facto “self-signed” certificate -(albeit with incorrect Subject Public Key Info). This is not any more -dangerous than a normal self-signed root certificate. In fact, anyone can -produce self-signed root certificates which may completely match that of a -valid root certificate - except for the signature. Since we trust root -certificates merely by possession, such an imposter certificate is meaningless -without a client’s active consent to trust it. - -### Re-signing an intermediate or leaf certificate - -Also, re-signing a non-root certificate does not violate the security of the -X.509 trust model. While we usually do not possess these kinds of certificates -in advance, their forgery would be detected during the -[path validation procedure](http://tools.ietf.org/html/rfc5280#section-6). -Here, any non-root certificate’s signature is verified using the public key -of the issuing certificate. At some point in the certificate chain, the forgery -would be ultimately detected in the form of an invalid certificate signature -value. - -## Conclusion - -In conclusion, we believe that `X509Certificate#verify` operates as expected. -Others have independently arrived at the -[same conclusion](https://github.com/adrienthebo/cve-2014-2734/) -and we have therefore disputed CVE-2014-2734, and asked for its revocation. -You can find our complete analysis of the -[original proof of concept](https://gist.github.com/emboss/91696b56cd227c8a0c13) -including comments. diff --git a/fa/news/_posts/2014-05-09-ruby-2-0-0-p481-is-released.md b/fa/news/_posts/2014-05-09-ruby-2-0-0-p481-is-released.md deleted file mode 100644 index ffa8595d43..0000000000 --- a/fa/news/_posts/2014-05-09-ruby-2-0-0-p481-is-released.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p481 is released" -author: "usa" -translator: -date: 2014-05-09 03:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.0.0-p481. - -This release includes many bugfixes, such as: - -* support for build with Readline-6.3, -* a fix for old OpenSSL (regression in p451), -* an updated bundled version of libyaml - (see [Heap Overflow in YAML URI Escape Parsing (CVE-2014-2525)](https://www.ruby-lang.org/en/news/2014/03/29/heap-overflow-in-yaml-uri-escape-parsing-cve-2014-2525/)). - -See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_481/ChangeLog) for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.bz2) - - SIZE: 10727244 bytes - MD5: ea406a8d415a1a5d8365596d4288f3da - SHA256: 0762dad7e96d8091bdf33b3e3176c2066fbf3dc09dfe85fbf40e74e83c63d8e2 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.gz) - - SIZE: 13586757 bytes - MD5: 3913e0ad6cc572b7358e4c6a8c4b2551 - SHA256: 00dd3d72435eb77f2bd94537c1738e5219ca42b6d68df3d4f20c183f4bd12d0f - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.zip) - - SIZE: 15101944 bytes - MD5: 1cdf06d1a58f3103e9ed7e072d680b19 - SHA256: 7457cdfac36cefcb0721b0520371939926fa755759631c90dd91e64e986eb23d - -## Release Comment - -I'm grateful to everybody who supports Ruby. -Thank you. diff --git a/fa/news/_posts/2014-05-09-ruby-2-1-2-is-released.md b/fa/news/_posts/2014-05-09-ruby-2-1-2-is-released.md deleted file mode 100644 index 02ef65a50f..0000000000 --- a/fa/news/_posts/2014-05-09-ruby-2-1-2-is-released.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.2 is released" -author: "nagachika" -translator: -date: 2014-05-09 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.1.2. - -This release contains a fix for a -[regression of Hash#reject in Ruby 2.1.1](https://www.ruby-lang.org/en/news/2014/03/10/regression-of-hash-reject-in-ruby-2-1-1/), -support for build with Readline-6.3 -(see [Bug #9578](https://bugs.ruby-lang.org/issues/9578)), -an updated bundled version of libyaml with psych, and some bug fixes. - -See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_2/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.bz2) - - SIZE: 11976939 bytes - MD5: ed9b8565bdeccb401d628ec8d54a0774 - SHA256: 6948b02570cdfb89a8313675d4aa665405900e27423db408401473f30fc6e901 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz) - - SIZE: 15096114 bytes - MD5: a5b5c83565f8bd954ee522bd287d2ca1 - SHA256: f22a6447811a81f3c808d1c2a5ce3b5f5f0955c68c9a749182feb425589e6635 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.zip) - - SIZE: 16621119 bytes - MD5: 7c303050d1e28e18398aed0fd59d334c - SHA256: b62a0ded5cfce7d08e539bf5875d543e24208096a37f85bee3304c1284337fa2 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped me to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2014-05-16-ruby-1-9-3-p547-released.md b/fa/news/_posts/2014-05-16-ruby-1-9-3-p547-released.md deleted file mode 100644 index fdc1f14d3a..0000000000 --- a/fa/news/_posts/2014-05-16-ruby-1-9-3-p547-released.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p547 Released" -author: "usa" -translator: -date: 2014-05-16 14:59:59 +0000 -lang: en ---- - -Ruby 1.9.3-p547 has just been released. - -Ruby 1.9.3 is now in the security maintenance phase. -This means that we release Ruby 1.9.3 only when a security incident occurs. -However, there is one exception. -As stated previously, we release if a critical regression is found. - -Some users reported problems in environments that use an old OpenSSL version, -such as Ubuntu 10.04 LTS. -This is a regression introduced in Ruby 1.9.3-p545. -(The same problem also occurred in Ruby 2.1.1 and Ruby 2.0.0-p451 and has -already been fixed with Ruby 2.1.2 and Ruby 2.0.0-p481.) -Please see [Bug #9592](https://bugs.ruby-lang.org/issues/9592) for more details. - -So, we decided to release this fix. -You should only upgrade if you are affected by this problem. - -This release includes only two changes: - -* a fix for an old OpenSSL version (see above), -* a trivial change of `common.mk` for our release management (does not affect users). - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.bz2) - - SIZE: 10036828 bytes - MD5: 5363d399be7f827c77bf8ae5d1a69b38 - SHA256: ef588ed3ff53009b4c1833c83187ae252dd6c20db45e21a326cd4a16a102ef4c - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.gz) - - SIZE: 12582375 bytes - MD5: 7531f9b1b35b16f3eb3d7bea786babfd - SHA256: 9ba118e4aba04c430bc4d5efb09b31a0277e101c9fd2ef3b80b9c684d7ae57a1 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.zip) - - SIZE: 13970935 bytes - MD5: 40ce2040860b18a330efe70b5ef072ba - SHA256: 89c7639c75dd58af7ac77d01a6d035992f8c39de90fc5cbfcf6e8b54a6305900 - -## Release Comment - -Thank you for reports. diff --git a/fa/news/_posts/2014-05-31-stopped-mailing-list-temporarily.md b/fa/news/_posts/2014-05-31-stopped-mailing-list-temporarily.md deleted file mode 100644 index 580d436d39..0000000000 --- a/fa/news/_posts/2014-05-31-stopped-mailing-list-temporarily.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: news_post -title: "Stopped mailing lists temporarily" -author: "hsbt" -translator: -date: 2014-05-31 12:30:00 +0000 -lang: en ---- - -We stopped the mailing lists on ruby-lang.org temporarily. - -Our mailing lists were attacked by a spam bomb. -We stopped the following lists: - - * ruby-core - * ruby-talk - * ruby-dev - * ruby-list - * ruby-cvs - * ruby-doc - * ruby-ext - * ruby-fr - * ruby-math - -We are sorry if the outage affects you and are working on -resuming the lists as soon as we can. - -### Status update 2014-06-16 9:00 +0000 - -We resumed the mailing lists on ruby-lang.org. diff --git a/fa/news/_posts/2014-06-16-rubyworld-conference-2014-speaker-invite.md b/fa/news/_posts/2014-06-16-rubyworld-conference-2014-speaker-invite.md deleted file mode 100644 index 41e3a4d908..0000000000 --- a/fa/news/_posts/2014-06-16-rubyworld-conference-2014-speaker-invite.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: news_post -title: "RubyWorld Conference 2014 Speaker Invite" -author: "zzak" -translator: -date: 2014-06-16 23:57:01 +0000 -lang: en ---- - -[RubyWorld Conference](http://www.rubyworld-conf.org/en/) will be held in -Matsue, Japan on November 13-14, 2014. - -The RubyWorld Conference Executive Committee is inviting speakers from around -the world to apply to give a presentation at the conference. - -See the [CFP](http://www.rubyworld-conf.org/en/news/2014/06/speaker-invite/) -for more information on how you can apply! diff --git a/fa/news/_posts/2014-07-01-eol-for-1-8-7-and-1-9-2.md b/fa/news/_posts/2014-07-01-eol-for-1-8-7-and-1-9-2.md deleted file mode 100644 index ae905c0116..0000000000 --- a/fa/news/_posts/2014-07-01-eol-for-1-8-7-and-1-9-2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: news_post -title: "EOL for Ruby 1.8.7 and 1.9.2" -author: "zzak and hone" -translator: -date: 2014-07-01 07:50:34 +0000 -lang: en ---- - -Extended maintenance of Ruby versions 1.8.7 and 1.9.2 will end on July 31, 2014. - -## Further information - -[Last December](https://www.ruby-lang.org/en/news/2013/12/17/maintenance-of-1-8-7-and-1-9-2/), -we extended the supported lifetime of Ruby versions 1.8.7 and 1.9.2 -by six months. -[Heroku sponsored](https://blog.heroku.com/archives/2013/12/5/a_patch_in_time_securing_ruby) -this extension to support customers on their Bamboo and Cedar stacks. - -We’re now coming to the close of this time window. -Ruby 1.8.7 came out in June 2008, making it just over six years old. -Ruby 1.9.2 was released in August of 2010, making it just under four years old. -With every passing day, backporting and maintaining security patches to these -code bases is becoming increasingly difficult. -[Ruby 2.1.2 has just been released](https://www.ruby-lang.org/en/news/2014/05/09/ruby-2-1-2-is-released/) -and Ruby 2.2.0 is scheduled to come out in six months. We recommend you -upgrade to a more modern Ruby immediately. This will get you all the -[improvements](https://www.ruby-lang.org/en/news/2013/12/25/ruby-2-1-0-is-released/) -we’ve made to the Ruby language and runtime. -In addition, this will ensure your apps continue to receive bug and -security updates in the future. - -For any parties concerned with continuing maintenance of Ruby 1.8.7 or 1.9.2, -please contact us at hone@ruby-lang.org and zzak@ruby-lang.org. diff --git a/fa/news/_posts/2014-07-26-rubykaigi-2014-registration-online.md b/fa/news/_posts/2014-07-26-rubykaigi-2014-registration-online.md deleted file mode 100644 index 420075aaac..0000000000 --- a/fa/news/_posts/2014-07-26-rubykaigi-2014-registration-online.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: news_post -title: "RubyKaigi 2014 Registration Online" -author: "snoozer05" -translator: -date: 2014-07-26 16:02:34 +0000 -lang: en ---- - -[RubyKaigi 2014](http://rubykaigi.org/2014) registration page is now online. - -* What: RubyKaigi 2014 is a 3 day, double-track conference for Rubyists -* Where: Tokyo, Japan -* When: Sep 18 - Sep 20 (Thu - Sat) -* How many: 550+ rubyists - -## Keynote Speakers: - -* Yukihiro "Matz" Matsumoto -* Koichi Sasada -* and... (To Be Announced) - -## Registration: - -EarlyBird Ticket is open now and limited. Be quick! - -[http://rubykaigi.doorkeeper.jp/events/12215](http://rubykaigi.doorkeeper.jp/events/12215) - -Ruby core committers can get discounts on the EarlyBird price (JPY 18,000), -depending on [your commit counts to Ruby repo from 2.0.0-p0 to 2.1.0-p0](https://gist.github.com/snoozer05/ca9860c57683e4221d10): - -* 100% off if you made 100+ commits (Free) -* 50% for 20+ commits (JPY 9,000) -* 25% for 1+ commit(s) (JPY 13,500) - -Contact us (2014 at rubykaigi dot org) if you meet the conditions. -We will send you a corresponding coupon code valid for a discount on -the ticket price. - -## Notes for Non-Japanese Rubyists: - -In RubyKaigi 2014, You'll get: - -* the huge chance to say hi and thanks to Ruby committers!! (RubyKaigi -will have the largest number of Ruby committers in conferences all -around the world!) -* the opportunity to understand what Japanese Rubyist are saying in -their presentations! There will be JA -> EN interpreters available -during RubyKaigi this time! We will provide a great environment for -Rubyists from around the world. - -## More Info: - -* [http://rubykaigi.org/2014](http://rubykaigi.org/2014) -* [http://blog.rubykaigi.org](http://blog.rubykaigi.org) -* [@rubykaigi](https://twitter.com/rubykaigi) -* [http://lanyrd.com/2014/rubykaigi/](http://lanyrd.com/2014/rubykaigi) - -## Contact: - -2014 at rubykaigi dot org - -Look forward to see you rubyists in Japan <3 diff --git a/fa/news/_posts/2014-08-19-ruby-1-9-2-p330-released.md b/fa/news/_posts/2014-08-19-ruby-1-9-2-p330-released.md deleted file mode 100644 index 8f3ce89848..0000000000 --- a/fa/news/_posts/2014-08-19-ruby-1-9-2-p330-released.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.2-p330 Released" -author: "zzak and hone" -translator: -date: 2014-08-19 01:38:12 +0000 -lang: en ---- - -We have released 1.9.2-p330, the final release of the 1.9.2 series. - -Soon after announcing the -[End of Life for 1.9.2 (and 1.8.7)](https://www.ruby-lang.org/en/news/2014/07/01/eol-for-1-8-7-and-1-9-2/), -a critical security regression was found in 1.9.2. This vulnerability has been -assigned the CVE identifier [CVE-2014-6438]. - -This bug occurs when parsing a long string is using the URI method -`decode_www_form_component`. This can be reproduced by running the following -on vulnerable Rubies: - -{% highlight ruby %} -ruby -v -ruri -e'URI.decode_www_form_component "A string that causes catastrophic backtracking as it gets longer %"' -{% endhighlight %} - -Since it was found and patched just before the release of 1.9.3, versions of -Ruby 1.9.3-p0 and later are _not_ affected; however versions of Ruby 1.9.2 -older than 1.9.2-p330 _are_ affected. - -You can read the original report on the bug tracker: -<https://bugs.ruby-lang.org/issues/5149#note-4> - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/ruby-1.9.2-p330.tar.bz2> - - SIZE: 9081661 bytes - MD5: 8ba4aaf707023e76f80fc8f455c99858 - SHA256: 6d3487ea8a86ad0fa78a8535078ff3c7a91ca9f99eff0a6a08e66c6e6bf2040f - -* <https://cache.ruby-lang.org/pub/ruby/ruby-1.9.2-p330.tar.gz> - - SIZE: 11416473 bytes - MD5: 4b9330730491f96b402adc4a561e859a - SHA256: 23ef45fdaecc5d6c7b4e9e2d51b23817fc6aa8225a20f123f7fa98760e8b5ca9 - -* <https://cache.ruby-lang.org/pub/ruby/ruby-1.9.2-p330.zip> - - SIZE: 12732739 bytes - MD5: 42d261b28d1b7e500dd3bdbdbfba7fa5 - SHA256: 7a04a028564de7f2ad09f26c8d57fd40fe2b0a6a0e1d9ff7205010ca6e70cea6 - -We encourage you to upgrade to a stable and maintained -[version of Ruby](https://www.ruby-lang.org/en/downloads/). - -[CVE-2014-6438]: https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6438 diff --git a/fa/news/_posts/2014-09-10-confoo-cfp.md b/fa/news/_posts/2014-09-10-confoo-cfp.md deleted file mode 100644 index ec163d76d3..0000000000 --- a/fa/news/_posts/2014-09-10-confoo-cfp.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: news_post -title: "ConFoo 2015 is looking for Ruby speakers" -author: "ylarrivee" -translator: -date: 2014-09-10 06:00:00 +0000 -lang: en ---- - -We are looking for Ruby professionals to share their skills and experience at -the next ConFoo. [Submit your proposals][1] until **September 22nd**. - -![ConFoo web dev conference. Feb 18 - 20, 2015 | Montreal, Canada][logo]{: style="border:0; float:right; margin-left:20px;" width="180" height="130"} - -ConFoo is a conference for developers that has built a reputation as a prime -destination for exploring new technologies, diving deeper into familiar -topics, and experiencing the best of community and culture. - - * ConFoo 2015 will be hosted on February 18th-20th in Montreal, at the Hilton Bonaventure Hotel. - * We take good care of our speakers by covering most expenses including travel, accommodation, lunch, full conference ticket, etc. - * Presentations are 35 min + 10 min for questions, and may be delivered in English or French. - * ConFoo is an open environment where everyone is welcome to submit. Are you skilled and friendly? Come join us. - -If you would simply prefer to attend the conference, we have a -[$290 discount][2] until October 13th. - -[logo]: http://confoo.ca/images/propaganda/2015/en/like.gif -[1]: http://confoo.ca/en/call-for-papers -[2]: http://confoo.ca/en/register diff --git a/fa/news/_posts/2014-09-18-ruby-2-2-0-preview1-released.md b/fa/news/_posts/2014-09-18-ruby-2-2-0-preview1-released.md deleted file mode 100644 index 83d1aa6e1b..0000000000 --- a/fa/news/_posts/2014-09-18-ruby-2-2-0-preview1-released.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.0-preview1 Released" -author: "naruse" -translator: -date: 2014-09-18 09:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.2.0-preview1. - -Ruby 2.2.0-preview1 is the first preview of Ruby 2.2.0. -Many new features and improvements are included for the increasingly -diverse and expanding demands for Ruby. - -For example, Symbol GC makes Symbols garbage collectable. -This reduces memory usage of Symbols; because GC couldn't collect Symbols before -Ruby 2.2. So Rails 5.0 will require Symbol GC. It will support only Ruby 2.2 -or later. (See [Rails' blog post](http://weblog.rubyonrails.org/2014/8/20/Rails-4-2-beta1/) for details.) - -Also, new Incremental GC decreases pause time of garbage collection. -It is helpful for running Rails applications. - -Enjoy programming with Ruby 2.2.0-preview1! - -## Notable Changes since 2.1 - -* [Incremental GC](https://bugs.ruby-lang.org/issues/10137) -* [Symbol GC](https://bugs.ruby-lang.org/issues/9634) -* core libraries: - * Support Unicode 7.0 [#9092](https://bugs.ruby-lang.org/issues/9092) - * New methods: - * Enumerable#slice_after - * Float#next_float, Float#prev_float - * File.birthtime, File#birthtime -* bundled libraries: - * Update Psych 2.0.6 - * Update Rake 10.3.2+ (e47d0239) - * Update RDoc 4.2.0.alpha (21b241a) - * Update RubyGems 2.4.1+ (713ab65) - * Update test-unit 3.0.1 (removed from repository but bundled in tarball) - * Update minitest 5.4.1 (removed from repository but bundled in tarball) - * Deprecate mathn -* C API - * Remove deprecated APIs - -See [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_2_0_preview1/NEWS) for details. - -With those changes, 1239 files changed, 98343 insertions(+), 61858 deletions(-). - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview1.tar.bz2> - * SIZE: 12385780 bytes - * MD5: 767b132eec3e70b14afe5884a7a767b1 - * SHA256: a3614c389de06b1636d8b919f2cd07e85311486bda2cb226a5549657a3610af5 - * SHA512: 2f1190f5d8cd1fa9962d1ff416dae97759d032a96801d77bc6b10136eba59dde1a554ff8c0c2d9ce0d3c1361d4dd12ad573b1266fd53b90ab238d8ce39e6b862 -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview1.tar.gz> - * SIZE: 15419211 bytes - * MD5: f78fc9ec907fe622822abf3aa839c1b4 - * SHA256: 7a49493d148a38eff9ab13e88601686985cadf2de86276ae796f5443deab3abb - * SHA512: 34381eee1d31cc1dad87e6d57ba71153c4db034b697cf7f0010fa432bb037e8eef5a90936a658f8f07b9b1eaa18f0b5c02ea113c78f39061514724373622a3b5 -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview1.tar.xz> - * SIZE: 9617132 bytes - * MD5: 96cde140b3211780d58b36af023143d5 - * SHA256: 7ed01a518b8c4d65bfb887cf6e0809977c88abeb5bb70c9fe8df754966820411 - * SHA512: 1241fd9a6e583544576177f372e245845b9df1427104b595963e37d7348a7d1c5558c6f6bf6ca5f1856d0d4a8f4a54a8948d4b6d78fb7943d6c7458691f34f6d -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview1.zip> - * SIZE: 17161678 bytes - * MD5: df34e9d6a447b21a4e7fa261d51bb881 - * SHA256: 2fa6c0cbddd1566a8658e16a34b6ae2f9eda2a8eeee4113561b3948d066f44a0 - * SHA512: 615b35c0a0bc408b28af9d9220ccd1658c718c7657ae7ad3f8318d38850bec760b1738c43454986b105857a7ffc2fea95294b964e5ea26a915d6fd9d510351b7 - -## Release Comment - -* [2.2.0 Known issues](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=115) - -See also the release schedule and other information: - -[ReleaseEngineering22](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering22) diff --git a/fa/news/_posts/2014-09-19-ruby-2-0-0-p576-is-released.md b/fa/news/_posts/2014-09-19-ruby-2-0-0-p576-is-released.md deleted file mode 100644 index 866a6a7132..0000000000 --- a/fa/news/_posts/2014-09-19-ruby-2-0-0-p576-is-released.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p576 Released" -author: "usa" -translator: -date: 2014-09-19 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.0.0-p576, to celebrate the -holding of [RubyKaigi2014](http://rubykaigi.org/2014) in Japan now. - -This release includes many bugfixes, such as: - -* many fixes of memory leaks and using extra memory, -* many fixes of platform-specific issues (especially in build process), -* many documentation fixes. - -See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_576/ChangeLog) for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.bz2) - - SIZE: 10753403 bytes - MD5: eccd42d43620544a085c5e3834572f37 - SHA256: 8cfdbffc81cebd1d25304225ffadc7dcb612a500c81ba6f5f95c5296dfa62059 - SHA512: e089cca4867cd9c715f4f37e40a1db9af6ba0c74b47e79568121bb980476f8877a87ccb848b973381edb4667c0c73165f5e1761f60db839e67f6326302dbd864 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.gz) - - SIZE: 13610215 bytes - MD5: 2e1f4355981b754d92f7e2cc456f843d - SHA256: 9f5a593d81768c856155be6b2d2e357b961b5c43e04ba54c1ee511987fac2b66 - SHA512: f5b7e7fba87ed21ee5a422ea978794adbd2f63669db7c361cec3698b3ebba2e95fc113791de2e22513bbe23c5fecc0605d1b76cadb0e714162a2c0e94cbd77b9 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.tar.xz) - - SIZE: 8318772 bytes - MD5: d64d6a92d6101c83396ef4a2754d9d2a - SHA256: 4aeac1cbca1b5ead0ace5625ba5ea50bb11ee6f8c41ff7cd305f7ff760e09496 - SHA512: e556435df9e6b4aae1ad27f986307a5aa6718b4b6a3365f6572b1eb3be72f1fa7cdda3cf5b9c142b878617770497ea2660595f505d1fe6924dcffacb5ccabecf - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p576.zip) - - SIZE: 15122735 bytes - MD5: 620e105c4f9a4274a8351516d0f6a53a - SHA256: cb0166d9afb0126612dff10d15848483984df4900c1b34cd053b1be6893ea38b - SHA512: adce5f044283e97fccbc80c770f999d20e366f7ee8e13782ca71490b5a16198ae0cdbc6df7419f085e2f7adea30552704141d37496cefcb9b147802b55d3ff82 - -## Release Comment - -I'm grateful to everybody who supports Ruby. -Thank you. diff --git a/fa/news/_posts/2014-09-19-ruby-2-1-3-is-released.md b/fa/news/_posts/2014-09-19-ruby-2-1-3-is-released.md deleted file mode 100644 index 88cda09541..0000000000 --- a/fa/news/_posts/2014-09-19-ruby-2-1-3-is-released.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.3 Released" -author: "nagachika" -translator: -date: 2014-09-19 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.1.3. -This is a patchlevel release of the stable 2.1 series. - -This release contains a change of full GC timing to reduce memory consumption -(see [Bug #9607](https://bugs.ruby-lang.org/issues/9607)), and many bugfixes. - -See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_3/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.bz2) - - SIZE: 11998074 bytes - MD5: 02b7da3bb06037c777ca52e1194efccb - SHA256: 36ce72f84ae4129f6cc66e33077a79d87b018ea7bf1dbc3d353604bf006f76d6 - SHA512: 9b48adb161e5e4550a71f61252c8edf59944affb82250babcb64240749af4b672e4a54ccd0feac5b36ea447a358b350b5080125ef2d4acf6e9e8b1ab82612f48 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.gz) - - SIZE: 15129183 bytes - MD5: 74a37b9ad90e4ea63c0eed32b9d5b18f - SHA256: 0818beb7b10ce9a058cd21d85cfe1dcd233e98b7342d32e9a5d4bebe98347f01 - SHA512: 364c391f669a37917ab1ee0c01d8430763d0c958c6d06fe5c3632d6e81316cafcae8b392b680d64c1692744585ac9286cb6408d7514e8a1f4dbd88ee314be99e - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.xz) - - SIZE: 9358664 bytes - MD5: fbc50ae56e7ac74501c8955abc248d34 - SHA256: 28832f4c198f7ee3909ee01d30aac7a3ec4eb1968f8f2db22b0b052329c3075c - SHA512: 87290ab55ff51bf48e8f8b419ab24170cef7eee458b8b684dc64ce60dceca8a1e9d527975b032e89c693880c22a57853d5fc93e247c38682320c8831006c48ca - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.zip) - - SIZE: 16652733 bytes - MD5: 06bcee40bb2da9408c41ac3e49918f1f - SHA256: 855981e029d90092f56f540b0e32f27aaa788db53f6e554abfb24982bf537909 - SHA512: d6b06edcab5f6b70810f838ba942ec5072f7018c0b21709884126d997bbd06028ef74f4b2f7bf439255e165599ee6a94e097bcfc52b72d5cfbf16b2e4476316f - - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2014-10-27-changing-default-settings-of-ext-openssl.md b/fa/news/_posts/2014-10-27-changing-default-settings-of-ext-openssl.md deleted file mode 100644 index 389749522e..0000000000 --- a/fa/news/_posts/2014-10-27-changing-default-settings-of-ext-openssl.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: news_post -title: "Changed default settings of ext/openssl" -author: "usa" -translator: -date: 2014-10-27 12:00:00 +0000 -tags: security -lang: en ---- - -We changed the default setting of ext/openssl in Ruby 2.1.4, Ruby 2.0.0-p594 and Ruby 1.9.3-p550. -With this change, insecure SSL/TLS options are now disabled by default. -However, by this change, there is a possibility of some problems in the SSL connection. - -## Details - -OpenSSL still implements protocols and ciphers that are considered insecure today by historical circumstances. -Like POODLE vulnerability ([CVE-2014-3566](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3566)), if you continue to use OpenSSL with such insecure features, you may not be able to keep the safety of network communication. -So, based on the discussion in [Bug #9424](https://bugs.ruby-lang.org/issues/9424), we have decided to disable such insecure SSL/TLS options by default. -If you need to cancel this change (shown below), apply the reverse patch to revoke it. - -2.1.4 -: [r48098](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48098&view=revision) - -2.0.0-p594 -: [r48110](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48110&view=revision) - -1.9.3-p550 -: [r48121](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48121&view=revision) - -However, if you cancel this change, there is a risk that you can not guarantee the safety of network communication. -You should understand the implications of this change before removing it. - -### Bundled libraries of Ruby - -This change is reflected in net/http, net/imap and net/pop. -Since DRb and WEBrick receive the setting separately, this change does not effect them. - -### Scripts that use ext/openssl directly - -This change is reflected when an `OpenSSL::SSL::SSLContext` object is instantiated and the instance method `set_params` is called. - -In particular, code such as: - -{% highlight ruby %} -ctx = OpenSSL::SSL::SSLContext.new -ctx.set_params # if you want to change some options, such as cert store, verify mode and so on, you can pass such parameters within a hash -ssl = OpenSSL::SSL::SSLSocket.new(socket, ctx) -{% endhighlight %} - -When using ext/openssl as a client side, we assume that there may be no problem with this change. -However, if you are using ext/openssl as a server side and reflect this change, some old clients (Internet Explorer 6 on Windows XP, browsers in old cellular phones, etc.) may not be able to connect to the server. - -It is your decision whether to enable this change or not, consider the trade-offs. - -## Workaround - -If you cannot update Ruby but you have to cope to insecure SSL/TLS options, apply the following monkey-patch: - -{% highlight ruby %} -module OpenSSL - module SSL - class SSLContext - remove_const(:DEFAULT_PARAMS) - DEFAULT_PARAMS = { - :ssl_version => "SSLv23", - :verify_mode => OpenSSL::SSL::VERIFY_PEER, - :ciphers => %w{ - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - DHE-RSA-AES128-GCM-SHA256 - DHE-DSS-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 - DHE-DSS-AES256-GCM-SHA384 - ECDHE-ECDSA-AES128-SHA256 - ECDHE-RSA-AES128-SHA256 - ECDHE-ECDSA-AES128-SHA - ECDHE-RSA-AES128-SHA - ECDHE-ECDSA-AES256-SHA384 - ECDHE-RSA-AES256-SHA384 - ECDHE-ECDSA-AES256-SHA - ECDHE-RSA-AES256-SHA - DHE-RSA-AES128-SHA256 - DHE-RSA-AES256-SHA256 - DHE-RSA-AES128-SHA - DHE-RSA-AES256-SHA - DHE-DSS-AES128-SHA256 - DHE-DSS-AES256-SHA256 - DHE-DSS-AES128-SHA - DHE-DSS-AES256-SHA - AES128-GCM-SHA256 - AES256-GCM-SHA384 - AES128-SHA256 - AES256-SHA256 - AES128-SHA - AES256-SHA - ECDHE-ECDSA-RC4-SHA - ECDHE-RSA-RC4-SHA - RC4-SHA - }.join(":"), - :options => -> { - opts = OpenSSL::SSL::OP_ALL - opts &= ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS if defined?(OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS) - opts |= OpenSSL::SSL::OP_NO_COMPRESSION if defined?(OpenSSL::SSL::OP_NO_COMPRESSION) - opts |= OpenSSL::SSL::OP_NO_SSLv2 if defined?(OpenSSL::SSL::OP_NO_SSLv2) - opts |= OpenSSL::SSL::OP_NO_SSLv3 if defined?(OpenSSL::SSL::OP_NO_SSLv3) - opts - }.call - } - end - end -end -{% endhighlight %} - -## Affected versions of this change - -* Ruby 1.9.3 patchlevel 550 and later -* Ruby 2.0.0 patchlevel 594 and later -* Ruby 2.1.4 and later -* revision 48097 and later of trunk - -## History - -* Originally published at 2014-10-27 12:00:00 (UTC) diff --git a/fa/news/_posts/2014-10-27-rexml-dos-cve-2014-8080.md b/fa/news/_posts/2014-10-27-rexml-dos-cve-2014-8080.md deleted file mode 100644 index f831c27830..0000000000 --- a/fa/news/_posts/2014-10-27-rexml-dos-cve-2014-8080.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: news_post -title: "CVE-2014-8080: Denial of Service XML Expansion" -author: "zzak" -translator: -date: 2014-10-27 12:00:00 +0000 -tags: security -lang: en ---- - -Unrestricted entity expansion can lead to a DoS vulnerability in REXML. -This vulnerability has been assigned the CVE identifier -[CVE-2014-8080](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8080). -We strongly recommend to upgrade Ruby. - -## Details - -When reading text nodes from an XML document, the REXML parser can be -coerced into allocating extremely large string objects which can -consume all of the memory on a machine, causing a denial of service. - -Impacted code will look something like this: - -{% highlight ruby %} -require 'rexml/document' - -xml = <<XML -<!DOCTYPE root [ - # ENTITY expansion vector -]> -<cd></cd> -XML - -p REXML::Document.new(xml) -{% endhighlight %} - -All users running an affected release should either upgrade or use one -of the workarounds immediately. - -## Affected versions - -* All Ruby 1.9 versions prior to Ruby 1.9.3 patchlevel 550 -* All Ruby 2.0 versions prior to Ruby 2.0.0 patchlevel 594 -* All Ruby 2.1 versions prior to Ruby 2.1.4 -* prior to trunk revision 48161 - -## Workarounds - -If you cannot upgrade Ruby, use this monkey patch as a workaround on versions of Ruby 2.1.0+: - -{% highlight ruby %} -class REXML::Entity - def value - if @value - matches = @value.scan(PEREFERENCE_RE) - rv = @value.clone - if @parent - sum = 0 - matches.each do |entity_reference| - entity_value = @parent.entity( entity_reference[0] ) - if sum + entity_value.bytesize > Security.entity_expansion_text_limit - raise "entity expansion has grown too large" - else - sum += entity_value.bytesize - end - rv.gsub!( /%#{entity_reference.join};/um, entity_value ) - end - end - return rv - end - nil - end -end -{% endhighlight %} - -For versions of Ruby older than 2.1.0, you can use the following monkey patch: - -{% highlight ruby %} -class REXML::Entity - def value - if @value - matches = @value.scan(PEREFERENCE_RE) - rv = @value.clone - if @parent - sum = 0 - matches.each do |entity_reference| - entity_value = @parent.entity( entity_reference[0] ) - if sum + entity_value.bytesize > Document.entity_expansion_text_limit - raise "entity expansion has grown too large" - else - sum += entity_value.bytesize - end - rv.gsub!( /%#{entity_reference.join};/um, entity_value ) - end - end - return rv - end - nil - end -end -{% endhighlight %} - -## Credits - -Thanks to Willis Vandevanter for reporting this issue. - -## History - -* Originally published at 2014-10-27 12:00:00 (UTC) diff --git a/fa/news/_posts/2014-10-27-ruby-1-9-3-p550-is-released.md b/fa/news/_posts/2014-10-27-ruby-1-9-3-p550-is-released.md deleted file mode 100644 index 4902c45ea5..0000000000 --- a/fa/news/_posts/2014-10-27-ruby-1-9-3-p550-is-released.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p550 Released" -author: "usa" -translator: -date: 2014-10-27 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 1.9.3-p550. - -This release includes a security fix for DoS vulnerability of REXML. - -* [CVE-2014-8080: Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) - -This release also includes the change of default settings of ext/openssl. -Insecure SSL/TLS options are now turned off by default. - -* [Changed default settings of ext/openssl](https://www.ruby-lang.org/en/news/2014/10/27/changing-default-settings-of-ext-openssl/) - -And, in addition, bundled jQuery for darkfish template of RDoc is also updated. - - -## Notice - -Ruby 1.9.3 is now in the security maintenance phase. -This means that we never fix bugs except about security issues. -And, at this time, the end of the maintenance of 1.9.3 has been scheduled for February next year. -We recommend that users of Ruby 1.9.3 should migrate to a newer version as soon as possible. - - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.bz2) - - SIZE: 10053787 bytes - MD5: c2169c8b14ccefd036081aba5ffa96da - SHA256: d3da003896db47fb10ba4d2e0285eea7fe8cdc785b86c02ebad5bc9cdeaa4748 - SHA512: 38767e98df25484f7292437f3cb0f798b3a43e9a7414a5401677e96ad1cc367cb3fa23ac3abe568d5bf2b2ca553713469a8770d41b79bc63daf3fa59cb4e15c6 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.gz) - - SIZE: 12605180 bytes - MD5: e05135be8f109b2845229c4f47f980fd - SHA256: d6cf008d9f3a9aeed2ef04428f19d66e28aed8a71456f7edba68627d3302cd6b - SHA512: 420d4f9fe027ffc3ec5cc4ea19cf6e1f1473199ee4af06ef364c08f4a04bf65e253b32e76f37370b8e56ad2e26d0c09e6fa5b1f7c0b407b0c68b63acd2cce975 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.xz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.tar.xz) - - SIZE: 7714228 bytes - MD5: c0261155faec6cfc9aa16790ee56448f - SHA256: c87f04392010ec7f01b12dcbb6d985c61d5f481e71d2a7b25b5f1e72d2d61faa - SHA512: cd68e60e01c31642fac08d88846dd8ce9ba287d8322f779490a4e016611090af0cbdee5be4ac611c5468cab90c6a2cdfe2a08c0c05106b6fe61c1253e49273d5 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p550.zip) - - SIZE: 13987149 bytes - MD5: 4946e5f3d083894372a7a46342e885f7 - SHA256: 6e7eceddca615c19f81c125f9864de3570b9687df858cfb27298d867521d5beb - SHA512: 0daa8fafa950f1e6ddf79815a615c7d730d234042718bd70e8211e4c23d7cc93126c924ad42673844c3a8cb908bf02a8d03ae2857658a027935f46c13bb17a13 - -## Release Comment - -I'm grateful to everybody who supports Ruby. -Thank you. diff --git a/fa/news/_posts/2014-10-27-ruby-2-0-0-p594-is-released.md b/fa/news/_posts/2014-10-27-ruby-2-0-0-p594-is-released.md deleted file mode 100644 index 60ac960596..0000000000 --- a/fa/news/_posts/2014-10-27-ruby-2-0-0-p594-is-released.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p594 Released" -author: "usa" -translator: -date: 2014-10-27 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.0.0-p594. - -This release includes a security fix for DoS vulnerability of REXML. - -* [CVE-2014-8080: Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) - -This release also includes the change of default settings of ext/openssl. -Insecure SSL/TLS options are now turned off by default. - -* [Changed default settings of ext/openssl](https://www.ruby-lang.org/en/news/2014/10/27/changing-default-settings-of-ext-openssl/) - -And, many bug fixes are also included. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_594/ChangeLog) for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.bz2) - - SIZE: 10756895 bytes - MD5: 58469c0daf5f3a892a70cc674ea59c7f - SHA256: e5aee3cf36898315f87771a5e657c81befb88b6afa585b70aaa57c47cc0e99a4 - SHA512: 8301a51c73fb63a8cfeb14af47d0c18b5bc3c45e3d62fc2ed56a673a1cd6b0015c41f275e70eb14a9e40036b1530977199321e05285e107a6adf58514bef1b3d - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.gz) - - SIZE: 13606970 bytes - MD5: a9caa406da5d72f190e28344e747ee74 - SHA256: ee515dd7b17cdbc106396cd432f5662bb0b5afc05044469175914aab65f3c6e7 - SHA512: a6544f68a87aa3d00a59cee8c090386cf1fa6d6bfe5730af909d614e90bff9ee64c2cf9f542f7a43f8352b86e3945693504ffed6cefc57f736c6e26670ddb9ca - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.tar.xz) - - SIZE: 8316772 bytes - MD5: fc64932b4d4af0f91c03d7966fbbc9b2 - SHA256: 561465447428a5bc52ed3cca98c6067948b2c81811e1445a196b1c24913b3e72 - SHA512: d5ba88dd5eb3569203cbe91e75bf21bea6897338885479e34a839569de15ca2f09e4eff655636923892e9234a0f0b6a2c058442ebc1b13a3d2ddced25bd88fa8 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p594.zip) - - SIZE: 15125232 bytes - MD5: d5801bbe794a07236c3bcf4a28ad3509 - SHA256: 38a8db127d5b241ac2090ef75e9f7941a34851d4c6b61135b88019129f9c04a3 - SHA512: 1f7d94029e5af480a0ae0ebd21129a01b0066fecd15278b272754e6e80b6a6fb1ded53fd1288e7375a17021d482a59b40414270923c2ecfb06999ea66a91fc54 - -## Release Comment - -I'm grateful to everybody who supports Ruby. -Thank you. diff --git a/fa/news/_posts/2014-10-27-ruby-2-1-4-released.md b/fa/news/_posts/2014-10-27-ruby-2-1-4-released.md deleted file mode 100644 index 8e5017f302..0000000000 --- a/fa/news/_posts/2014-10-27-ruby-2-1-4-released.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.4 Released" -author: "nagachika" -translator: -date: 2014-10-27 12:00:00 +0000 -lang: en ---- - -Ruby 2.1.4 has been released. - -This release includes security fixes for the following vulnerabilities: - -* [CVE-2014-8080: Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) -* [Changed default settings of ext/openssl related to CVE-2014-3566](https://www.ruby-lang.org/en/news/2014/10/27/changing-default-settings-of-ext-openssl/) - -And there are some bug-fixes. - -See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_4/ChangeLog) -for details. - -**Update:** There was a regression introduced in 2.1.3 that is now fixed: - -{% highlight irb %} ->> { key: if true then 0 else 1 end } -SyntaxError: (irb):1: syntax error, unexpected modifier_if -{ key: if true then 0 else 1 end } - ^ -{% endhighlight %} - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.bz2) - - SIZE: 11992171 bytes - MD5: f4136e781d261e3cc20748005e1740b7 - SHA256: f37f11a8c75ab9215bb9f61246ef98e0e57e1409f0872e5cf59033edcf5b8d2a - SHA512: 68db1567751166c5e7d24b6e5015124b8a15568c50556e1f429486395352fa56c4a195a74820ab135697924149d014b445b345a1b9755678aaf824fba79c606b - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.gz) - - SIZE: 15127418 bytes - MD5: 89b2f4a197621346f6724a3c35535b19 - SHA256: bf9952cdeb3a0c6a5a27745c9b4c0e5e264e92b669b2b08efb363f5156549204 - SHA512: 7a6c70ec60db9866d5988e53c75e5c7e7288d68d87ba74ad317a0f74be79b387d05f665d9273d24dc64edc011d396b6396d2c7b1de6fd6a03569103e5acdcc36 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.xz) - - SIZE: 9392500 bytes - MD5: 99aa2b01240d91edaecc2fc9d8254e44 - SHA256: e1cc5cbbcaa8644e282f04763d96057ddd6f443338a5019200e8726273e84fcf - SHA512: b0fbecca0ffec8f6a3c5d27f62087628b8a79874b7bdbfd8ce39cfc5b6f5cb4da2f8a3e6031abae9c59273cf629f41cf5987e2a5f4c083b0f3a3b02eeb5d7dca - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.zip) - - SIZE: 16656312 bytes - MD5: 71c7afca08734f0105a06d2feea11422 - SHA256: bdb26a725e1fd7982f12d5390209064687def61c330b92597322e3898131391e - SHA512: 7fd8d13810a4336dc498a6eb05e140825d52eca0317d0848152688060b95ce4c79ab6a10cf14ab2499ae559fb4676d86538eacd94fb262c16795067fb4f47614 - - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us to make this release. -Thanks for their contributions. - -## History - -* Update published at 2014-10-27 21:00:00 (UTC) -* Originally published at 2014-10-27 12:00:00 (UTC) diff --git a/fa/news/_posts/2014-11-03-tropicalrb-2015-cfp.md b/fa/news/_posts/2014-11-03-tropicalrb-2015-cfp.md deleted file mode 100644 index cc6a64719e..0000000000 --- a/fa/news/_posts/2014-11-03-tropicalrb-2015-cfp.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "Tropical Ruby 2015 CFP is open" -author: "Guilherme Cavalcanti" -translator: -date: 2014-11-03 15:20:57 +0000 -lang: en ---- - -[Tropical Ruby 2015](http://tropicalrb.com), the beach Ruby conference, -will take place during March 5–8th at Porto de Galinhas, -a paradisiac beach located in the Brazilian northeast coast. - -[Avdi Grimm](https://twitter.com/avdi) and -[Nick Sutterer](https://twitter.com/apotonick) are confirmed keynotes but the -[CFP is still open](http://cfp.tropicalrb.com/events/tropicalrb-2015). -If you want to give a talk or workshop, submit your proposal until December 7th. - -Enjoy amazing conversations, stunning landscapes and a superb nature. -Come and talk with some of the best Rubyists in this tropical conference. diff --git a/fa/news/_posts/2014-11-13-rexml-dos-cve-2014-8090.md b/fa/news/_posts/2014-11-13-rexml-dos-cve-2014-8090.md deleted file mode 100644 index 96a0ab8043..0000000000 --- a/fa/news/_posts/2014-11-13-rexml-dos-cve-2014-8090.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: news_post -title: "CVE-2014-8090: Another Denial of Service XML Expansion" -author: "usa" -translator: -date: 2014-11-13 12:00:00 +0000 -tags: security -lang: en ---- - -Unrestricted entity expansion can lead to a DoS vulnerability in REXML, like -["Entity expansion DoS vulnerability in REXML (XML bomb, CVE-2013-1821)"](https://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/) -and ["CVE-2014-8080: Parameter Entity expansion DoS vulnerability in REXML"](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/). -This vulnerability has been assigned the CVE identifier -[CVE-2014-8090](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8090). -We strongly recommend to upgrade Ruby. - -## Details - -This is an additional fix for -[CVE-2013-1821](https://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/) -and [CVE-2014-8080](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/). -The previous patches fixed recursive expansions in a number of places and -the total size of created Strings. However, they did not take into account the former -limit used for entity expansion. 100% CPU utilization can occur as a result -of recursive expansion with an empty String. -When reading text nodes from an XML document, the REXML parser can be coerced -into allocating extremely large string objects which can consume all of the -memory on a machine, causing a denial of service. - -Impacted code will look something like this: - -{% highlight ruby %} -require 'rexml/document' - -xml = <<XML -<!DOCTYPE root [ - # ENTITY expansion vector -]> -<cd></cd> -XML - -p REXML::Document.new(xml) -{% endhighlight %} - -All users running an affected release should either upgrade or use one -of the workarounds immediately. - -## Affected versions - -* All Ruby 1.9 versions prior to Ruby 1.9.3 patchlevel 551 -* All Ruby 2.0 versions prior to Ruby 2.0.0 patchlevel 598 -* All Ruby 2.1 versions prior to Ruby 2.1.5 -* prior to trunk revision 48402 - -## Workarounds - -If you cannot upgrade Ruby, use this monkey patch as a workaround: - -{% highlight ruby %} -class REXML::Document - def document - self - end -end -{% endhighlight %} - -## Credits - -Thanks to Tomas Hoger for reporting this issue. - -## History - -* Originally published at 2014-11-13 12:00:00 UTC diff --git a/fa/news/_posts/2014-11-13-ruby-1-9-3-p551-is-released.md b/fa/news/_posts/2014-11-13-ruby-1-9-3-p551-is-released.md deleted file mode 100644 index 4b11943a32..0000000000 --- a/fa/news/_posts/2014-11-13-ruby-1-9-3-p551-is-released.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: news_post -title: "Ruby 1.9.3-p551 Released" -author: "usa" -translator: -date: 2014-11-13 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 1.9.3-p551. - -This release includes a security fix for a DoS vulnerability of REXML. -It is similar to the -[fixed vulnerability](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) -in the [previous release](https://www.ruby-lang.org/en/news/2014/10/27/ruby-1-9-3-p550-is-released/), -but this handles another case for entity expansion. -Please view the topic below for more details. - -* [CVE-2014-8090: Another Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/11/13/rexml-dos-cve-2014-8090/) - - -## Notice - -Ruby 1.9.3 is now in the security maintenance phase. -This means that we never fix bugs except for security issues. -And, at this time, the end of the maintenance of 1.9.3 has been scheduled for February next year. -We recommend that users of Ruby 1.9.3 should migrate to a newer version as soon as possible. - - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2) - - SIZE: 10049332 bytes - MD5: 0d8b272b05c3449dc848bb7570f65bfe - SHA256: b0c5e37e3431d58613a160504b39542ec687d473de1d4da983dabcf3c5de771e - SHA512: 5ea40f8c40cf116030ffdedbe436c1fdbf9a50b7bb44bc890845c9c2a885c34da711bc1a9e9694788c2f4710f7e6e0adc4410aec1ab18a25a27168f25ac3d68c - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.gz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.gz) - - SIZE: 12605119 bytes - MD5: 0d8212f7bc89bab8ef521b04cd9df278 - SHA256: bb5be55cd1f49c95bb05b6f587701376b53d310eb1bb7c76fbd445a1c75b51e8 - SHA512: be12adf581ee76af70db117b44c6647c1df3d28fffa1b3379c6067e4aa1fb523dae7c9b130a51dcdcff268a8ee21a3d74f6f946135fb3ac6b90664f0a9df4a08 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.xz](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.xz) - - SIZE: 7704072 bytes - MD5: 7367b1dfb2ba1d6abf6fd7db70e765f5 - SHA256: 44228297861f4dfdf23a47372a3e3c4c5116fbf5b0e10883417f2379874b55c6 - SHA512: 2dd4cd7494d0d9b1cc2a5c3710a2c771617a367d1ba6f5099adc2785e37efcb668c6508780562359a4a4c83733e349aa5cb4f8532e1f334f9f96543670d35729 - -* [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.zip](https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.zip) - - SIZE: 13987275 bytes - MD5: 14a394b1d7b7031b34d4d1af64ee657e - SHA256: cf468ccabd5cdef5047b8f02f4f71052fd3a9c87c12aba314f04748a451a63ec - SHA512: 6ee550c7e435622114e3669393220a90946652eade0a83dab74970fff7088d5c2051bee9c272e2e6eccc36885b4f64928fc2d27c36584c1cc8dac91ce730d3ea - -## Release Comment - -Sorry for the inconvenience of releasing frequently. -Thanks to everyone who helped with the release. diff --git a/fa/news/_posts/2014-11-13-ruby-2-0-0-p598-is-released.md b/fa/news/_posts/2014-11-13-ruby-2-0-0-p598-is-released.md deleted file mode 100644 index 791346e257..0000000000 --- a/fa/news/_posts/2014-11-13-ruby-2-0-0-p598-is-released.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p598 Released" -author: "usa" -translator: -date: 2014-11-13 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.0.0-p598. - -This release includes a security fix for a DoS vulnerability of REXML. -It is similar to the -[fixed vulnerability](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) -in the [previous release](https://www.ruby-lang.org/en/news/2014/10/27/ruby-2-0-0-p594-is-released/), -but this handles another case for entity expansion. -Please view the topic below for more details. - -* [CVE-2014-8090: Another Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/11/13/rexml-dos-cve-2014-8090/) - -And, some bug fixes are also included. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_598/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.bz2) - - SIZE: 10758882 bytes - MD5: a3f3908103a7d209d1d1cf4712e3953c - SHA256: 67b2a93690f53e12b635ba1bcdbd41e8c5593f13d575fea92fdd8801ca088f0f - SHA512: 10026a04e01a8ad14ea9c99bbdf4f7d04029b73ee0c01bbf6c2eb2817332d49adacf127b646693b67b5dd7010eaf3b696b23b6335cc0f7ee5a6b56dbba0f6f82 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.gz) - - SIZE: 13608640 bytes - MD5: e043a21ce0d138fd408518a80aa31bba - SHA256: 4136bf7d764cbcc1c7da2824ed2826c3550f2b62af673c79ddbf9049b12095fd - SHA512: 0548aba9bf45e380e5f73e73168ea7fea341fc9739e108c7d530d11b677f6a78b2c4e29062d16a73b4286acaa2333ed20cb34e16b65b5b6898da66661f1717da - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.tar.xz) - - SIZE: 8316092 bytes - MD5: 2ec36f7018eef05003bf8cf0e0f05def - SHA256: 9dccf4c30e1bb004b18cb1129d9daac3c0ec510a671f4f4f13a2747897ffab35 - SHA512: bf7b93d9fbaab98a64d1f45c3f3bbcdfebd3e1d0584dfb27696b2716d93c2ba13881e1edaef6d3eccd769ac2e21d6157024c902f3d891951a20b972c1942ef99 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p598.zip) - - SIZE: 15126384 bytes - MD5: aa6ac22747947e6562d5b0dc9767ecda - SHA256: d5bdafd7b0fbd4254902ba10385c6e5812beac4ad221805aa4d92a37eff47f97 - SHA512: 6cdaf7f2d27a5f0ead9b94325b9c9fe90cf04c64dedaea8e1d45a8855a73ad61c5c72f1fda835eab73693c25c15a74c7e4e639ed5c18a9433dd79e398600b3ea - -## Release Comment - -Sorry for the inconvenience of releasing frequently. -Thanks to everyone who helped with the release. diff --git a/fa/news/_posts/2014-11-13-ruby-2-1-5-is-released.md b/fa/news/_posts/2014-11-13-ruby-2-1-5-is-released.md deleted file mode 100644 index 6695967d62..0000000000 --- a/fa/news/_posts/2014-11-13-ruby-2-1-5-is-released.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.5 Released" -author: "nagachika" -translator: -date: 2014-11-13 12:00:00 +0000 -lang: en ---- - -Ruby 2.1.5 has been released. - -This release includes a security fix for a DoS vulnerability of REXML. -It is similar to the -[fixed vulnerability](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/) -in the [previous release](https://www.ruby-lang.org/en/news/2014/10/27/ruby-2-1-4-released/), -but new and different from it. - -* [CVE-2014-8090: Another Denial of Service XML Expansion](https://www.ruby-lang.org/en/news/2014/11/13/rexml-dos-cve-2014-8090/) - -And, some bug fixes are also included. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_5/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.bz2) - - SIZE: 11994454 bytes - MD5: a7c3e5fec47eff23091b566e9e1dac1b - SHA256: 0241b40f1c731cb177994a50b854fb7f18d4ad04dcefc18acc60af73046fb0a9 - SHA512: d4b1e3c2b6a0dc79846cce056043c48a2a2a97599c76e9a07af21a77fd10e04c8a34f3a60b6975181bff17b2c452af874fa073ad029549f3203e59095ab70196 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz) - - SIZE: 15127433 bytes - MD5: df4c1b23f624a50513c7a78cb51a13dc - SHA256: 4305cc6ceb094df55210d83548dcbeb5117d74eea25196a9b14fa268d354b100 - SHA512: a7da8dc755e5c013f42269d5e376906947239b41ece189294d4355494a0225590ca73b85261ddd60292934a8c432231c2308ecfa137ed9e347e68a2c1fc866c8 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.xz) - - SIZE: 9371780 bytes - MD5: 8a30ed4b022a24acbb461976c9c70789 - SHA256: 22ba1eb8d475c9ed7e0541418d86044c1ea4c093ab79c300c38fc0f721afe9a3 - SHA512: 8a257da64158d49bc2810695baf4b5849ef83e3dde452bf1e4823e52e8261225427d729fce2fb4e9b53d6d17ca9c96d491f242535c2f963738b74f90944e2a0b - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.zip) - - SIZE: 16657694 bytes - MD5: 810cd05eb03c00f89b0b03b10e9a3606 - SHA256: 69c517a6d3ea65264455a9316719ffdec49cf6a613a24fd89b3f6da7146a8aa7 - SHA512: a55cf5970203904e7bc8cef2b6fbf7b8d5067a160289a1a49d13c4dfef8c95002bcdf697f5d04d420ef663efad5ee80d5a9e4e7445c4db9a02f9cbc9e4b8444e - -## Release Comment - -Sorry for the inconvenience of frequent releases. -Thanks to everyone who gave the cooperation to release. diff --git a/fa/news/_posts/2014-11-28-ruby-2-2-0-preview2-released.md b/fa/news/_posts/2014-11-28-ruby-2-2-0-preview2-released.md deleted file mode 100644 index 0d026bfb8c..0000000000 --- a/fa/news/_posts/2014-11-28-ruby-2-2-0-preview2-released.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.0-preview2 Released" -author: "naruse" -translator: -date: 2014-11-28 09:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.2.0-preview2. - -Ruby 2.2.0-preview2 is the second preview of Ruby 2.2.0. -Many new features and improvements are included for the increasingly -diverse and expanding demands for Ruby. - -For example, Symbol GC makes Symbols garbage collectable. -This reduces memory usage of Symbols; because GC couldn't collect Symbols before -Ruby 2.2. Since Rails 5.0 will require Symbol GC, it will support only Ruby 2.2 -or later. (See [Rails' blog post](http://weblog.rubyonrails.org/2014/8/20/Rails-4-2-beta1/) for details.) - -Also, new Incremental GC decreases pause time of garbage collection, which is also helpful for running Rails applications. - -Another feature related to memory management is adding an option for configure.in to use jemalloc -[Feature #9113](https://bugs.ruby-lang.org/issues/9113). -This is an experimental feature, and is disabled by default. -We need to gather use cases and performance data. -When we get convinced of the benefits, the feature will be enabled by default. - -One more topic is [using vfork(2) in system() and spawn() (Japanese)](http://www.a-k-r.org/d/2014-09.html#a2014_09_06). -It is expected that it brings a huge speed-up when a large process executes external commands many times. -But vfork(2) is a risky system call. -We want to know how much benefit it brings through gathering use cases and performance data. - -Try and enjoy programming with Ruby 2.2.0-preview2, and report us your knowledge! - -## Notable Changes since 2.1 - -* [Incremental GC](https://bugs.ruby-lang.org/issues/10137) ([YARV Maniacs No.12](http://magazine.rubyist.net/?0048-YARVManiacs)) -* [Symbol GC](https://bugs.ruby-lang.org/issues/9634) ([presentation at RubyKaigi 2014](http://www.slideshare.net/authorNari/symbol-gc)) -* configure --with-jemalloc [Feature #9113](https://bugs.ruby-lang.org/issues/9113) -* core libraries: - * Support Unicode 7.0 [#9092](https://bugs.ruby-lang.org/issues/9092) - * New methods: - * Enumerable#slice_after [#9071](https://bugs.ruby-lang.org/issues/9071), Enumerable#slice_when [#9826](https://bugs.ruby-lang.org/issues/9826) - * Float#next_float, Float#prev_float [#9834](https://bugs.ruby-lang.org/issues/9834) - * File.birthtime, File#birthtime [#9647](https://bugs.ruby-lang.org/issues/9647) - * String#unicode_normalize [#10084](https://bugs.ruby-lang.org/issues/10084) -* bundled libraries: - * Update Psych 2.0.6 - * Update Rake 10.4.0 - * Update RDoc 4.2.0.alpha (21b241a) - * Update RubyGems 2.4.4+ (2f6e42e) - * rubygems 2.4.4+ (2f6e42e) - * Update test-unit 3.0.7 (removed from repository but bundled -in tarball) - * Update minitest 5.4.3 (removed from repository but bundled in tarball) - * Deprecate mathn -* C API - * Remove deprecated APIs - -See [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_2_0_preview2/NEWS) for details. - -With those changes, 1239 files changed, 98343 insertions(+), 61858 deletions(-). - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview2.tar.bz2> - * SIZE: 12505279 bytes - * MD5: d7abace25a8ffe861cb2807bef1c58a6 - * SHA256: 9e49583f3fad3888fefc85b719fdb210a88ef54d80f9eac439b7ca4232fa7f0b - * SHA512: c654d4c047f9463a5fb81eaea0fa5ab7bf316962bc7fb0fb356861e6336ce8ce2162c7779d8b27f72d7bc0e9604b5e5af2910abcb0b0a1f197b3138eaddfd4a5 -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview2.tar.gz> - * SIZE: 15505521 bytes - * MD5: bde388d6f10012a92d5dc36196fd6755 - * SHA256: dfcef7b01bd3acb41da6689993ac8dd30e2ecd4fd14bc1a833f46188a9fe2614 - * SHA512: e2d316a679c15c021e40b0f9b7810b319c6a5e771a9b869fda35b6745aecac881bbb05d62192893799816a8673e05c8f17713f10ccdec077f546483608ab85c1 -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview2.tar.xz> - * SIZE: 9649216 bytes - * MD5: 0d582e28b92ce9d1456e40fb8d821422 - * SHA256: d14d1fa045263fa242a515d7b9e8c485bf8a9ee9d9d3012dc2b6add0f3a370c6 - * SHA512: 4a8a75ab21b2bd43db4a22d9c63f189f3c7805d575d662b07a4ddc25aa5b156b0c23053d8c48eecf23d5e22f1ea7131467f1cdc48f9ae0a83214b4cd46b08491 -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-preview2.zip> - * SIZE: 17239396 bytes - * MD5: d94160c214016863932c25cc1ac6ff90 - * SHA256: 88d6c73ee1a4f5fe1f8ad37fe1f56c1ca50622f1338c20b9d46bbb5c2cd94040 - * SHA512: 0a021d31f54c47c5c3901ef6f2ab02a1bfb5cc698f971978c1e16b1aeda78fdadec0c1cdd48af1c8784b8f72ad00d35cf2433d78e20d4447fa0630e02b4e3917 - -## Release Comment - -* [2.2.0 Known issues](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=115) - -See also the release schedule and other information: - -[ReleaseEngineering22](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering22) diff --git a/fa/news/_posts/2014-12-18-ruby-2-2-0-rc1-released.md b/fa/news/_posts/2014-12-18-ruby-2-2-0-rc1-released.md deleted file mode 100644 index 47aeb2171a..0000000000 --- a/fa/news/_posts/2014-12-18-ruby-2-2-0-rc1-released.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.0-rc1 Released" -author: "naruse" -translator: -date: 2014-12-18 09:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.2.0-rc1. -After RC1, all changes will be limited to bug fix only. -The final release of Ruby 2.2.0 is scheduled on December 25, 2014. - -Ruby 2.2 includes many new features and improvements for the increasingly -diverse and expanding demands for Ruby. - -For example, Ruby's Garbage Collector is now able to collect Symbol type objects. -This reduces memory usage of Symbols; because GC was previously unable to collect them before 2.2. -Since Rails 5.0 will require Symbol GC, it will support only Ruby 2.2 or later. -(See [Rails 4.2 release post](http://weblog.rubyonrails.org/2014/12/19/Rails-4-2-final/) for details.) - -Also, a reduced pause time thanks to the new Incremental Garbage Collector will be helpful for running Rails applications. Recent developments mentioned on the [Rails blog](http://weblog.rubyonrails.org/) suggest that Rails 5.0 will take advantage of Incremental GC as well as Symbol GC. - -Another feature related to memory management is an additional option for `configure.in` to use jemalloc -[Feature #9113](https://bugs.ruby-lang.org/issues/9113). -This feature is still experimental and currently disabled by default until we gather performance data and more use cases. When we are convinced of the benefits, this feature will be enabled by default. - -Experimental support for using vfork(2) with system() and spawn() have also been added. You can read more detail on [tanaka-san's blog in japanese](http://www.a-k-r.org/d/2014-09.html#a2014_09_06). -This could potentially bring huge speed-up when a large process executes external commands many times. -However vfork(2) is still not well understood and a potentially harmful system call. We would like to experiment to find out how much benefit can be gained by gathering performance data and use cases. - -Try and enjoy programming with Ruby 2.2.0-rc1, and report us your findings! - -## Notable Changes since 2.1 - -* [Incremental GC](https://bugs.ruby-lang.org/issues/10137) ([YARV Maniacs No.12](http://magazine.rubyist.net/?0048-YARVManiacs)) -* [Symbol GC](https://bugs.ruby-lang.org/issues/9634) ([presentation at RubyKaigi 2014](http://www.slideshare.net/authorNari/symbol-gc)) -* configure --with-jemalloc [Feature #9113](https://bugs.ruby-lang.org/issues/9113) -* core libraries: - * Support Unicode 7.0 [#9092](https://bugs.ruby-lang.org/issues/9092) - * New methods: - * Enumerable#slice_after [#9071](https://bugs.ruby-lang.org/issues/9071), Enumerable#slice_when [#9826](https://bugs.ruby-lang.org/issues/9826) - * Float#next_float, Float#prev_float [#9834](https://bugs.ruby-lang.org/issues/9834) - * File.birthtime, File#birthtime [#9647](https://bugs.ruby-lang.org/issues/9647) - * String#unicode_normalize [#10084](https://bugs.ruby-lang.org/issues/10084) -* bundled libraries: - * Update Psych 2.0.8 - * Update Rake 10.4.0 - * Update RDoc 4.2.0.alpha (21b241a) - * Update RubyGems 2.4.5 - * Update test-unit 3.0.8 (removed from repository but bundled -in tarball) - * Update minitest 5.4.3 (removed from repository but bundled in tarball) - * Deprecate mathn -* C API - * Remove deprecated APIs - -See [NEWS in Ruby repository (WIP)](https://github.com/ruby/ruby/blob/v2_2_0_rc1/NEWS) for details. - -With those changes, 1548 files changed, 123658 insertions(+), 74306 deletions(-) from v2.1.0! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-rc1.tar.bz2> - * SIZE: 12475612 bytes - * MD5: 7144732d30dd4547c0a59862b3345d54 - * SHA256: e6a1f8d45ea749bdc92eb1269b77ec475bc600b66039ff90d77db8f50820a896 - * SHA512: 181201168360bee37dceeef3481a69e8a333a5d329680031fd9d371d30ac64460bbdf4db07546133024f541774e51301f1630cfd988c5e5bf2464834f3abe6bf -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-rc1.tar.gz> - * SIZE: 15531233 bytes - * MD5: 51f218fabc3ceb7bf3fe5f4f87ddebd3 - * SHA256: a59c8db71b967015ad7c259ba8ef638c7943ec78580412bb86e97791a9322b6b - * SHA512: 4a35e78c4c0747f9c79e506e98acc117efb0be72fc103d6f9c13d5eb5efa5c6d6748f491526fc7ebb24397f25238f06d552f841e9e898be30aa7cd6c2df38494 -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-rc1.tar.xz> - * SIZE: 9675108 bytes - * MD5: 3f482b88eda45c1bc6bab1921763ce52 - * SHA256: dcfad9bb6e0b513b03f08f86b195da6a6a7045559b558d3493decac0e0abb86c - * SHA512: 3ec8955d8a269a1e5f28c3e0e6023bd613f244c83914a4a8c96d2761b11914c21ce67cfadb2bcebc480d9c0b9c7b54da6dfa67cdf4b4350db2a85d379265ffed -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0-rc1.zip> - * SIZE: 17219660 bytes - * MD5: 49f5aae44c00f4d57be47576c29a53bd - * SHA256: 1bd3e83d44b4e5879b4ecdc496d19905bc03637a8c88027c2dc98a369f1ebb83 - * SHA512: bf0e39e5add532ca338095ad6eaaafbe4f84cc9df1e8d4bad986c44e17614623430c2670d9751865e8d645cb483007d5473be82536b985ccab40a7dde72c4161 - -## Release Comment - -* [2.2.0 Known issues](https://bugs.ruby-lang.org/projects/ruby-trunk/issues?query_id=115) - -See also the release schedule and other information: - -[ReleaseEngineering22](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering22) diff --git a/fa/news/_posts/2014-12-25-ruby-2-2-0-released.md b/fa/news/_posts/2014-12-25-ruby-2-2-0-released.md deleted file mode 100644 index 129bc438bc..0000000000 --- a/fa/news/_posts/2014-12-25-ruby-2-2-0-released.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.0 Released" -author: "naruse" -translator: -date: 2014-12-25 09:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.2.0. - -Ruby 2.2 includes many new features and improvements for the increasingly -diverse and expanding demands for Ruby. - -For example, Ruby's Garbage Collector is now able to collect Symbol type objects. -This reduces memory usage of Symbols; because GC was previously unable -to collect them before 2.2. -Since Rails 5.0 will require Symbol GC, it will support only Ruby 2.2 or later. -(See [Rails 4.2 release post](http://weblog.rubyonrails.org/2014/12/19/Rails-4-2-final/) for details.) - -Also, a reduced pause time thanks to the new Incremental Garbage Collector will -be helpful for running Rails applications. Recent developments mentioned on the -[Rails blog](http://weblog.rubyonrails.org/) -suggest that Rails 5.0 will take advantage of Incremental GC as well as -Symbol GC. - -Another feature related to memory management is an additional option -for `configure.in` to use jemalloc -[Feature #9113](https://bugs.ruby-lang.org/issues/9113). -This feature is still experimental and currently disabled by default until we -gather performance data and more use cases. When we are convinced of the -benefits, this feature will be enabled by default. - -Experimental support for using vfork(2) with system() and spawn() have also -been added. You can read more detail on -[tanaka-san's blog in Japanese](http://www.a-k-r.org/d/2014-09.html#a2014_09_06). -This could potentially bring huge speed-up when a large process executes -external commands many times. -However vfork(2) is still not well understood and a potentially harmful -system call. We would like to experiment to find out how much benefit can be -gained by gathering performance data and use cases. - -Try and enjoy programming with Ruby 2.2.0, and report us your findings! - -## Notable Changes since 2.1 - -* [Incremental GC](https://bugs.ruby-lang.org/issues/10137) - ([presentation at RubyConf 2014: "Incremental GC for Ruby interpreter"](http://www.atdot.net/~ko1/activities/2014_rubyconf_pub.pdf)) -* [Symbol GC](https://bugs.ruby-lang.org/issues/9634) - ([presentation at RubyKaigi 2014](http://www.slideshare.net/authorNari/symbol-gc)) -* configure --with-jemalloc - [Feature #9113](https://bugs.ruby-lang.org/issues/9113) -* core libraries: - * Support Unicode 7.0 [#9092](https://bugs.ruby-lang.org/issues/9092) - * New methods: - * Enumerable#slice_after [#9071](https://bugs.ruby-lang.org/issues/9071), - Enumerable#slice_when [#9826](https://bugs.ruby-lang.org/issues/9826) - * Float#next_float, Float#prev_float - [#9834](https://bugs.ruby-lang.org/issues/9834) - * File.birthtime, File#birthtime - [#9647](https://bugs.ruby-lang.org/issues/9647) - * String#unicode_normalize [#10084](https://bugs.ruby-lang.org/issues/10084) -* bundled libraries: - * Update Psych 2.0.8 - * Update Rake 10.4.2 - * Update RDoc 4.2.0 - * Update RubyGems 2.4.5 - * Update test-unit 3.0.8 (removed from repository but bundled in tarball) - * Update minitest 5.4.3 (removed from repository but bundled in tarball) - * Deprecate mathn -* C API - * Remove deprecated APIs - -See [NEWS in Ruby repository](https://github.com/ruby/ruby/blob/v2_2_0/NEWS) -for details. - -With those changes, 1557 files changed, 125039 insertions(+), 74376 deletions(-) -from v2.1.0! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.bz2> - * SIZE: 13304042 bytes - * MD5: d03cd4690fec1fff81d096d1c1255fde - * SHA256: 1c031137999f832f86be366a71155113675b72420830ce432b777a0ff4942955 - * SHA512: 04edc53e8cd1732c3ca61ebeb1d6133614beb10f77f9abb80d8d36352fe8aa205112068e460bf600b2c7e81e0ddcc3b311e7e027c320366f1bd992b3e378a6ad -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz> - * SIZE: 16494584 bytes - * MD5: cd03b28fd0b555970f5c4fd481700852 - * SHA256: 7671e394abfb5d262fbcd3b27a71bf78737c7e9347fa21c39e58b0bb9c4840fc - * SHA512: 1ba0c68e1c8d2b60bbd1e218cf36463edbe34cf9418d7593702b631e68d02297465f752e71395f6cfa4104f4cd70a1eb44381ffb74bc7801758b830931fdcfc6 -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.xz> - * SIZE: 10304244 bytes - * MD5: 54b43c6c6c9dd4c4b08ceb03ad0ded7a - * SHA256: 848714e280fc5fb44dbac3b060b206e56c1947006324ee68a174d68b483ef8ca - * SHA512: cd7e52faa464df8aca7ccfa23a5f06248e1ad82bc8c9f1829aa1b51ff37b15973b8caaa68e914d837325b8d59427fda4f3cad82c50925e1c84e688324a2a155d -* <https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.zip> - * SIZE: 18441027 bytes - * MD5: f8e1d0cee4f2d9535a9529ed23ae3700 - * SHA256: e06c1e2b1248cf881749833084b2bec93f7612676009190ff9bc89b8fd07c29f - * SHA512: 364dd927b496520d95a1b06c68e1a265015f4cab08bdf3efaa323d385e7bf075eae47f2e1db78a629db0f3c0c1ed24e086603ba21e2da02ac06dd3c8b716766e diff --git a/fa/news/_posts/2015-02-23-support-for-ruby-1-9-3-has-ended.md b/fa/news/_posts/2015-02-23-support-for-ruby-1-9-3-has-ended.md deleted file mode 100644 index 9df41ffa84..0000000000 --- a/fa/news/_posts/2015-02-23-support-for-ruby-1-9-3-has-ended.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: news_post -title: "Support for Ruby 1.9.3 has ended" -author: "Olivier Lacan" -translator: -date: 2015-02-23 00:00:00 +0000 -lang: en ---- - -As of today, all support for Ruby 1.9.3 has ended. Bug and security fixes -from more recent Ruby versions will no longer be backported to 1.9.3. - -This end of life was [announced over a year ago](https://www.ruby-lang.org/en/news/2014/01/10/ruby-1-9-3-will-end-on-2015/). - -We highly recommend that you upgrade to Ruby 2.0.0 or above as soon as possible. Please contact us if you'd like to continue maintaining the 1.9.3 branch for some reason you can't upgrade. diff --git a/fa/news/_posts/2015-02-25-ruby-2-0-0-p643-is-released.md b/fa/news/_posts/2015-02-25-ruby-2-0-0-p643-is-released.md deleted file mode 100644 index 1107a6c1b3..0000000000 --- a/fa/news/_posts/2015-02-25-ruby-2-0-0-p643-is-released.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p643 Released" -author: "usa" -translator: -date: 2015-02-25 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.0.0-p643. - -This is the last ordinal release of Ruby 2.0.0. -Ruby 2.0.0 goes into the state of the security maintenance phase, -and will never be released unless any critical regressions -or security issues are found. -This phase is planned to be maintained for 1 year. -Then, maintenance of Ruby 2.0.0 will be ended at Feb. 24th, 2016. -We recommend to start planning to migrate to newer versions of Ruby, such as 2.1 or 2.2. - -This release includes many bugfixes. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-200/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_643/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.bz2) - - SIZE: 10772113 bytes - SHA1: d1d7d324a1f2530d67d54464fe09646583e4dda1 - SHA256: 1f626f20647693a215a8db3ea0d6ab5ab9cee7c1945cc441b9f8f7b9612b91a0 - SHA512: 453117152e6facdcd5bedaa9c3b1e349382bc5bc1dd3d650ec58b398cb9d2519a2822d05da10bcc5dbbb4f513fc5fef310caa3529d176fa2d453befb28e4d83a - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.gz) - - SIZE: 13625546 bytes - SHA1: 544840583939175886a0885bce1cf07f0b9550b7 - SHA256: 4bd267a4187e4bc25c1db08f9f9bdc0ce595a705569cac460d98c4f5b02e614e - SHA512: cfb88bb4d312861c7c5305593b251648df336f3bf4a4e3f2acc3d66c1a93dc989cf5b60ce9158418ef3fbe4b2e41e7bc86e08942a6624441cfe1297325166b32 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.tar.xz) - - SIZE: 8318532 bytes - SHA1: 11568586a6361200efbff33892aaee345625f1f0 - SHA256: 73f6d939beda8865e12069689ddabd2658b3f637a9adebeee5e374388715c432 - SHA512: edcff2154eec9c8a84d4c5eac8ffb370e273a5e949923009756cbc069a7ef52de5c91981bd726ae5043bc2784d8ff5080444bc29d0693abc08ff66a8783a7cbc - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p643.zip) - - SIZE: 15136932 bytes - SHA1: 41bd52d9bc1dabc5fa3209c0a04a0b26b8206ef8 - SHA256: 0f0ac0b075c924cfdd0e95e66560d99d9de36256af6fe51d375efe9dd0a0b996 - SHA512: 2c5780972bd27f5160c1f7524b3bc221dc8fba857863e53216fc3511df0415003ed1d4bc8c49533a34eedab0de72a261e5d4f2cecc251c64be843194ce3efbb6 - -## Release Comment - -Thanks to everyone who helped with this and previous releases. diff --git a/fa/news/_posts/2015-03-03-ruby-2-2-1-released.md b/fa/news/_posts/2015-03-03-ruby-2-2-1-released.md deleted file mode 100644 index 6b9a4867f9..0000000000 --- a/fa/news/_posts/2015-03-03-ruby-2-2-1-released.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.1 Released" -author: "hsbt" -translator: -date: 2015-03-03 03:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.2.1. -This is the first TEENY version release of the stable 2.2 series. - -This release includes the fix for ffi build failure and memory leak issue on Symbol GC (See [Bug #10686](https://bugs.ruby-lang.org/issues/10686)). - -See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_1/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.bz2) - - SIZE: 13326768 bytes - MD5: 06973777736d8e6bdad8dcaa469a9da3 - SHA256: 4e5676073246b7ade207be3e80a930567a88100513591a0f19fc38e247370065 - SHA512: af6a8e75a66b953ff33ecbca5111bcf1c6560b6b48b370b700820fcbe91363146c5ac8abd670a14e693b44343ae598bab472ed2902834304c03ffcd9550886d1 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.gz) - - SIZE: 16512208 bytes - MD5: b49fc67a834e4f77249eb73eecffb1c9 - SHA256: 5a4de38068eca8919cb087d338c0c2e3d72c9382c804fb27ab746e6c7819ab28 - SHA512: 97b92251c612e40ad84c3ce612b0f410010ed72f564a4223af1c8df3f7c9d7b7acea9d75423f033752902e4829272c5c94496eae7f504d2be7442e44519b8e93 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.xz) - - SIZE: 10320352 bytes - MD5: f7570579539faaa734c02e2857370298 - SHA256: 3b2852c07fdc12d0ba2b5698c7587ae2b46141539a526d143da5860b55a626c0 - SHA512: 853517426cd4735bab42298a13cef6f4864b6f8787c3985eaa39a4d1efb40e121bdb51e874b567f0ec339fe001920bcd165067633992b2be30e7804191559151 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.zip) - - SIZE: 18457205 bytes - MD5: fc0a654425419e9397a1a6858a76325d - SHA256: 73af1b1a9d5ceebfc129f270652fe81d9f760082c9fb3206a81bb7162b2a4087 - SHA512: 7150f0b6c6d27e6053ac88309903adf42fce537b8228740b97929712689c5623757aeb8a76dab1126cb70970c860fedb55a28c4660d818845921c0c74f8563f8 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped -us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2015-03-06-google-summer-of-code-2015.md b/fa/news/_posts/2015-03-06-google-summer-of-code-2015.md deleted file mode 100644 index bc8887be1c..0000000000 --- a/fa/news/_posts/2015-03-06-google-summer-of-code-2015.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: news_post -title: "Google Summer of Code 2015" -author: "Federico Builes" -translator: -date: 2015-03-06 10:48:37 +0000 -lang: en ---- - -Ruby will be participating in the [Google Summer of Code 2015][gsoc] as a top-level organization. We will be acting as an -umbrella for Ruby-related projects including [Ruby][ruby-ideas], [JRuby][jruby-ideas], [Celluloid][celluloid] and -[others][ideas]. Student applications can be submitted starting March 16 and the deadline is March 27 -(here's the [timeline][timeline]). - -If you are interested in participating as a student or as a mentor please join our -[mailing list][ml]. You can find a list of ideas for projects in the [RubyGSoC wiki][ideas]. - -[Ruby on Rails][ror] and [SciRuby][sciruby] will also be joining us as top-level -organizations in this year's program. If you have an idea that would fit better in these projects, please read their -[respective][ror-announcement] [announcements][sciruby-ideas]. - - -[gsoc]: http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/about_page -[timeline]: http://www.google-melange.com/gsoc/events/google/gsoc2015 -[jruby-ideas]: https://github.com/jruby/jruby/wiki/Google-Summer-of-Code-2015 -[celluloid]: https://github.com/rubygsoc/rubygsoc/wiki/Ideas-List#celluloid -[ideas]: https://github.com/rubygsoc/rubygsoc/wiki/Ideas-List -[ml]: https://groups.google.com/forum/?hl=en#!forum/rubygsoc -[ror-announcement]: http://weblog.rubyonrails.org/2015/3/4/google-summer-of-code-2015/ -[sciruby-ideas]: https://github.com/SciRuby/sciruby/wiki/Google-Summer-of-Code-2015-Ideas -[ruby-ideas]: https://github.com/rubygsoc/rubygsoc/wiki/Ideas-List#mri-matz-ruby-interpreter -[ror]: http://rubyonrails.org/ -[sciruby]: http://sciruby.com/ diff --git a/fa/news/_posts/2015-04-13-ruby-2-0-0-p645-released.md b/fa/news/_posts/2015-04-13-ruby-2-0-0-p645-released.md deleted file mode 100644 index 2c92c267c8..0000000000 --- a/fa/news/_posts/2015-04-13-ruby-2-0-0-p645-released.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p645 Released" -author: "usa" -translator: -date: 2015-04-13 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.0.0-p645. - -This release includes a security fix for OpenSSL extension. -Please view the topic below for more details. - -* [CVE-2015-1855: Ruby OpenSSL Hostname Verification](https://www.ruby-lang.org/en/news/2015/04/13/ruby-openssl-hostname-matching-vulnerability/) - -Ruby 2.0.0 is now under the state of the security maintenance phase, until Feb. 24th, 2016. -After the date, maintenance of Ruby 2.0.0 will be ended. -We recommend you start planning migration to newer versions of Ruby, such as 2.1 or 2.2. - -This release includes the security fix mentioned above along with small changes required for test environment (that shouldn't affect normal users). - -See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_0_0_645/ChangeLog) for full details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.bz2) - - SIZE: 10786492 bytes - SHA1: e724dd0e4a1e820a368be307aa0863a8ecf4b694 - SHA256: 2dcdcf9900cb923a16d3662d067bc8c801997ac3e4a774775e387e883b3683e9 - SHA512: e9ca186b1cf0877cdbecd43dcab2c5161a53103e926609d5e1b769a4980eab4571bfd0951788b4fc92dfd9d10175b0f5f36ea2c7289e575a9db9b62c02f93185 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.gz) - - SIZE: 13620967 bytes - SHA1: 4f922cda8d8f745f7b80cef8f79a0b51c252bbf5 - SHA256: 5e9f8effffe97cba5ef0015feec6e1e5f3bacf6ace78cd1cdf72708cd71cf4ab - SHA512: 4503e9d52d2f740ed00437f645cd532044a684b523b8044c0ba4e1b4e69649d2274d5b94fc8273acbbc19d3bb3f15375b93de5140d39f973f2fbb746500633b8 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.xz) - - SIZE: 8295192 bytes - SHA1: eee2d0d06de5b22d7542c605b4f2db24b0cb26bc - SHA256: 875be4f57bdbb2d2be0d64bfd8fc5022f004d55261ead8fd0cdc2e9e415e9f7b - SHA512: 440f8ea50f51c53f90e42a8dfd7cd41f806b290d5c12c09f84d9159ab9c95e19b036cd8a5dc788844da501b9fcd1fa8ad8352ef7417998debc1b43a61a4ea4dc - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.zip) - - SIZE: 15139168 bytes - SHA1: 384cc548291e91d0b9d7297bbc9aed46b88f254a - SHA256: 2ad4eaabfd92d627baffc6c971e4b8987b38c06baf42dc2fc2e05131095499e7 - SHA512: 271373873570a0b47124cbc0232fff6be353264a0891dd04800c1c9f79b1297f66e0d4e817f474432b20cbf055c8f421548a11a6ec19b68dad16cc78f1ba9876 - -## Release Comment - -Thanks to everyone who helped with this release, especially, zzak. diff --git a/fa/news/_posts/2015-04-13-ruby-2-1-6-released.md b/fa/news/_posts/2015-04-13-ruby-2-1-6-released.md deleted file mode 100644 index aa3bb295c5..0000000000 --- a/fa/news/_posts/2015-04-13-ruby-2-1-6-released.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.6 Released" -author: "usa" -translator: -date: 2015-04-13 12:00:00 +0000 -lang: en ---- - -Ruby 2.1.6 has been released. - -This release includes a security fix for OpenSSL extension. -Please view the topic below for more details. - -* [CVE-2015-1855: Ruby OpenSSL Hostname Verification](https://www.ruby-lang.org/en/news/2015/04/13/ruby-openssl-hostname-matching-vulnerability/) - -And, many bug fixes are also included. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_6/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.bz2) - - SIZE: 12011651 bytes - SHA1: 380c3a5fa508fdaa2b227dbc00c56f703fd271d4 - SHA256: 7b5233be35a4a7fbd64923e42efb70b7bebd455d9d6f9d4001b3b3a6e0aa6ce9 - SHA512: 75d58120b5f387bcadbf6d19e85624f78c74f81b9018baef39207214673f7ebc0700ab31145acd88b4071c896ba8e1302a29c90955bcf5f8c863634125022aa6 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.gz) - - SIZE: 15141710 bytes - SHA1: 426289b6647ce35ad101091825b6e7e5fce207f3 - SHA256: 1e1362ae7427c91fa53dc9c05aee4ee200e2d7d8970a891c5bd76bee28d28be4 - SHA512: 6563d8f39623ed5ba227725c54e630886412938bdf7c4cf03337d6c245af58d92274a098ea0e03bfd0e94970f4ee82909c366ae81db4b9317c10b92167bfc46d - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.xz) - - SIZE: 9381724 bytes - SHA1: e429644f27c243474268bf548e6fa95d05579aaf - SHA256: 137b27bffefd795fd97c288fff539d135f42320f8a1afddde99a34e1fbe7314e - SHA512: 0cf91fe7ae53a3f9c034fa5996eeed91889b942b8e595e84be4e244adc30d79aa3f540cc6f657982715069dfb14af20786557689d9a8fe4bbfc66280e84dd6cf - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.zip) - - SIZE: 16671680 bytes - SHA1: e79a033ab847e0d67940e31bac0debf197fad615 - SHA256: ecbc4b97cc78e96e01375b961936133279db806044fd4d23771136dae4c1056d - SHA512: d1450bd013dbaabf10d7097e9dcd8c3f027110c08693ee7c94c002ea96b7e6e171c951b8b1ca3971b7f89e05b15df00ec56a006f9393889ae7f8045e9b328fad - -## Release Comment - -Thanks to everyone who helped with this release, especially, nagachika. - -The maintenance of Ruby 2.1, include this release, is based on the "Agreement for the Ruby stable version" of [the Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2015-04-13-ruby-2-2-2-released.md b/fa/news/_posts/2015-04-13-ruby-2-2-2-released.md deleted file mode 100644 index 90ffd4ab10..0000000000 --- a/fa/news/_posts/2015-04-13-ruby-2-2-2-released.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.2 Released" -author: "nagachika" -translator: -date: 2015-04-13 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.2.2. -This is a TEENY version release of the stable 2.2 series. - -This release includes the security fix for a OpenSSL extension's hostname verification vulnerability. - -* [CVE-2015-1855: Ruby OpenSSL Hostname Verification](https://www.ruby-lang.org/en/news/2015/04/13/ruby-openssl-hostname-matching-vulnerability/) - -There are also some bugfixes. -See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_2/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.bz2) - - SIZE: 13314437 bytes - SHA1: de97ec6132ac76bb7c0f92b5ca4682138093af1b - SHA256: f3b8ffa6089820ee5bdc289567d365e5748d4170e8aa246d2ea6576f24796535 - SHA512: d6693251296e9c6e8452786ce6b0447c8730aff7f92d0a92733444dbf298a1e7504b7bd29bb6ee4f2155ef94ccb63148311c3ed7ac3403b60120a3ab5c70a162 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz) - - SIZE: 16613636 bytes - SHA1: 29c51a17639d921b1ae51cd80a9d7584f67d5e1c - SHA256: 5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44 - SHA512: 0603f962980e14d206f8f1b3d5bb1b19d65f369bde71a686f3b4cef1d1dd09ef39afac3170947324f29a4ac17b99f9d406e5ca33b4950ece2e5baca0a42c791c - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.xz) - - SIZE: 10463044 bytes - SHA1: 58cfec8db9b51ad1ff3bd2b9065da087913a6268 - SHA256: f033b5d08ab57083e48c1d81bcd7399967578c370b664da90e12a32891424462 - SHA512: bd72d0a4c017e2527659f64ef2781bbe8bd540a2302eaa60234a12282fd53c359e04205c56385402c67e81bb9dab3b88de53de82e12bb13e3386c26301043b64 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.zip) - - SIZE: 18448642 bytes - SHA1: 7d26835cb7711dfe75f2c10fe38cb85f5ed56df5 - SHA256: dd96db09348034b21889df1b561c7482ee553558486707503c83908eddb3c768 - SHA512: 7487032e9108ea4b35f909e26c7202994524090b3c237713b8b406917cf65543ec7372d260dcacd5c9b269bb7645e1703b3a64ca3cc2efc8b2135c1d06729246 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2015-04-13-ruby-openssl-hostname-matching-vulnerability.md b/fa/news/_posts/2015-04-13-ruby-openssl-hostname-matching-vulnerability.md deleted file mode 100644 index 7db6745ee7..0000000000 --- a/fa/news/_posts/2015-04-13-ruby-openssl-hostname-matching-vulnerability.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: news_post -title: "CVE-2015-1855: Ruby OpenSSL Hostname Verification" -author: "zzak" -translator: -tags: security -date: 2015-04-13 12:00:00 +0000 -lang: en ---- - -Ruby's OpenSSL extension suffers a vulnerability through overly permissive matching of hostnames, which can lead to similar bugs such as [CVE-2014-1492][CVE-2014-1492]. Similar issues were found in [Python][python-hostname-bug]. - -This vulnerability has been assigned the CVE identifier [CVE-2015-1855][CVE-2015-1855]. - -We strongly recommend you upgrade Ruby. - -## Details - -After reviewing [RFC 6125][RFC-6125] and [RFC 5280][RFC-5280], we found multiple violations of matching hostnames and particularly wildcard certificates. - -Ruby's OpenSSL extension will now provide a string-based matching algorithm which follows _more_ strict behavior, as recommended by these RFCs. In particular, matching of more than one wildcard per subject/SAN is no-longer allowed. As well, comparison of these values is now case-insensitive. - -This change will affect Ruby's `OpenSSL::SSL#verify_certificate_identity` behavior. - -Specifically: - -* Only one wildcard character in the left-most part of the hostname is allowed. -* IDNA names can now only be matched by a simple wildcard (e.g. '\*.domain'). -* Subject/SAN should be limited to ASCII characters only. - -All users running an affected release should upgrade immediately. - -## Affected versions - -* All Ruby 2.0 versions prior to Ruby 2.0.0 patchlevel 645 -* All Ruby 2.1 versions prior to Ruby 2.1.6 -* All Ruby 2.2 versions prior to Ruby 2.2.2 -* prior to trunk revision 50292 - -## Credits - -Thanks to Tony Arcieri, Jeffrey Walton, and Steffan Ullrich for reporting this issue. Originally reported as [Bug #9644][Bug-9644], and patches submitted by Tony Arcieri and Hiroshi Nakamura. - -## History - -* Originally published at 2015-04-13 12:00:00 (UTC) - -[CVE-2014-1492]: https://bugzilla.mozilla.org/show_bug.cgi?id=903885 -[python-hostname-bug]: https://bugs.python.org/issue17997 -[CVE-2015-1855]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1855 -[RFC-6125]: https://tools.ietf.org/html/rfc6125 -[RFC-5280]: https://tools.ietf.org/html/rfc5280 -[Bug-9644]: https://bugs.ruby-lang.org/issues/9644 diff --git a/fa/news/_posts/2015-06-30-ruby-prize-2015.md b/fa/news/_posts/2015-06-30-ruby-prize-2015.md deleted file mode 100644 index d558bc6783..0000000000 --- a/fa/news/_posts/2015-06-30-ruby-prize-2015.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: news_post -title: "Ruby Prize 2015 nominations are now open" -author: "Koji Shimada" -translator: "zzak" -date: 2015-06-30 19:15:00 +0000 -lang: en ---- - -Ruby Prize 2015 nominations are now being accepted for new and outstanding members in the Ruby community. - -The Ruby Prize is given to recognize the efforts of remarkable activity and achievements in the Ruby Community. The prize will be awarded by the executive committee comprised of three parties, the Ruby Association, Nihon Ruby no Kai and Matsue City. - -Ruby Prize winner and final nominee (1-2 people) will receive an award at the RubyWorld Conference 2015, to be held in Matsue, Shimane Prefecture on November 12th & 13th. - -In addition, the Ruby Prize winner will also be awarded 1 million yen (approx. 8,213 USD at exchange rates as of June 30th, 2015). - -Nominees will be selected by the following: - -* Recommendations from the "Prize Member" executive committee -* Recommendations from the general public (you). - -The final selection will be made by the executive committee. Please see below for more details. - -[Ruby Association: Now accepting nominations for the Ruby Prize Award 2015](http://www.ruby.or.jp/en/news/20150630.html) diff --git a/fa/news/_posts/2015-07-14-rubyconftw-2015-call-for-proposals.md b/fa/news/_posts/2015-07-14-rubyconftw-2015-call-for-proposals.md deleted file mode 100644 index 190b55d327..0000000000 --- a/fa/news/_posts/2015-07-14-rubyconftw-2015-call-for-proposals.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: news_post -title: "RubyConf Taiwan 2015 CFP is open" -author: "Juanito Fatas" -translator: -date: 2015-07-14 15:30:00 +0000 -lang: en ---- - -[RubyConf Taiwan 2015](http://rubyconf.tw) will take place during September -11–12nd at Taipei, Taiwan, a tropical island located in the heart of Asia. - -[Matz](https://twitter.com/yukihiro_matz), -[Aaron Patterson](https://twitter.com/tenderlove), -[Sarah Allen](https://twitter.com/ultrasaurus), -and [Ruddy Lee](https://ruddyblog.wordpress.com) are confirmed keynote speakers. -[CFP is open](http://rubytaiwan.kktix.cc/events/rubyconftw2015-cfp) -until July 20th (GMT +8) and -[Lightening talk CFP](http://rubytaiwan.kktix.cc/events/rubyconftw2015-ltcfp) -is open until August 10th (GMT +8). - -If you want to give a talk, please submit your proposal. Any topics related to -Ruby are welcome. We look forward to seeing you in Taiwan. diff --git a/fa/news/_posts/2015-08-04-rubyconf-taiwan-registration-is-open.md b/fa/news/_posts/2015-08-04-rubyconf-taiwan-registration-is-open.md deleted file mode 100644 index d78e55d916..0000000000 --- a/fa/news/_posts/2015-08-04-rubyconf-taiwan-registration-is-open.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: news_post -title: "RubyConf Taiwan 2015 Registration Online" -author: "Mu-Fan Teng (@ryudoawaru)" -translator: -date: 2015-08-04 15:30:22 +0000 -lang: en ---- - -RubyConf Taiwan 2015 will be held in Taipei, Taiwan on 11-12 September, 2015. - -For details about speakers and schedule please visit the [conference site](http://rubyconf.tw). - -Tickets are open till September 12nd, 2015. [Reserve Your Ticket!](http://rubytaiwan.kktix.cc/events/rubyconftw2015?locale=en) - -We look forward to seeing you in Taiwan! diff --git a/fa/news/_posts/2015-08-18-ruby-2-0-0-p647-released.md b/fa/news/_posts/2015-08-18-ruby-2-0-0-p647-released.md deleted file mode 100644 index 161f1710b9..0000000000 --- a/fa/news/_posts/2015-08-18-ruby-2-0-0-p647-released.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p647 Released" -author: "usa" -translator: -date: 2015-08-18 12:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.0.0-p647. - -This release includes the security fix for a RubyGems domain name verification vulnerability. -Please view the topic below for more details. - -* [CVE-2015-3900 Request hijacking vulnerability in RubyGems 2.4.6 and earlier](http://blog.rubygems.org/2015/05/14/CVE-2015-3900.html) - -And, this release also includes the fix for a regression of lib/resolv.rb. - -* [Uninitialized constant bug introduced by typo in backport of [#10712]](https://bugs.ruby-lang.org/issues/11204) - -Ruby 2.0.0 is now under the state of the security maintenance phase, until Feb. 24th, 2016. -After the date, maintenance of Ruby 2.0.0 will be ended. -We recommend you start planning migration to newer versions of Ruby, such as 2.1 or 2.2. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.bz2) - - SIZE: 10785285 bytes - SHA1: 537f0e212e337022f28ead8e67ffc834fcd468c6 - SHA256: 3c3782e313d1ec3ed06c104eafd133cc54ff5183b991786ece9e957fd6cf1cb9 - SHA512: 3416af771ebb0b27ceacf23d309bd2a1ede832c2edf48a5ca46f0b0b84b2ab94fb6362a0c7fe4f77b21253539db8161ae26d23a78d1ba729bf03812454d93d04 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.gz) - - SIZE: 13621258 bytes - SHA1: 1d5f2748104cb1011d2888d5ca6ecdb3bee1115a - SHA256: c88aaf5b4ec72e2cb7d290ff854f04d135939f6134f517002a9d65d5fc5e5bec - SHA512: 988b694dc05a9b94b3626587abdb5c7bb6bd64e20c9f0cae1cfdab40896358696077ef975fbdfc6bcd0c108a21b9529d8f384df49902d3bc3c5cd0d640c5ac99 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.tar.xz) - - SIZE: 8301008 bytes - SHA1: 4b7d395e9e0d097be948718dde115f977f3730e1 - SHA256: 9f793880df1209ea4e5c10ee9d8ef79caa0e73ee769f745f1c191505255e2847 - SHA512: 38fd2ad631588a0e8adf9a7ae01cb5274eca4fd794c5ed7030e5fae9e53cd8920eaac9d388c73b844a154c7eb56fa6fed8e2ee5df5617efd624b6a568ea4953b - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p647.zip) - - SIZE: 15139508 bytes - SHA1: 74bb7a18b18f8c2401abe14fc925124357e0740c - SHA256: 788c34fa034088bc49b9a0c622a0d81e0b0c6dd0f993c2cacf3b839fce8d4780 - SHA512: 251737a35562b96813e5418c1fa1ff213147818e21af26d079714236d1a1e0eaf29f58b92bb8aae6cecc4be825630bb0a203270d828b909a60b120265523f062 - -## Release Comment - -Thanks to everyone who helped with this release, especially, hsbt. diff --git a/fa/news/_posts/2015-08-18-ruby-2-1-7-released.md b/fa/news/_posts/2015-08-18-ruby-2-1-7-released.md deleted file mode 100644 index 674c8ced73..0000000000 --- a/fa/news/_posts/2015-08-18-ruby-2-1-7-released.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.7 Released" -author: "usa" -translator: -date: 2015-08-18 16:00:00 +0000 -lang: en ---- - -Ruby 2.1.7 has been released. - -This release includes the security fix for a RubyGems domain name verification vulnerability. -Please view the topic below for more details. - -* [CVE-2015-3900 Request hijacking vulnerability in RubyGems 2.4.6 and earlier](http://blog.rubygems.org/2015/05/14/CVE-2015-3900.html) - -And, many bug fixes are also included. -See [tickets](https://bugs.ruby-lang.org/projects/ruby-21/issues?set_filter=1&status_id=5) -and [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_7/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.bz2) - - SIZE: 12019706 bytes - SHA1: 9c2d3c73b3d2aed2c8f018d3a27e970846dcf143 - SHA256: b02c1a5ecd718e3f6b316384d4ed6572f862a46063f5ae23d0340b0a245859b6 - SHA512: f610d2dd6a93f0a5e84e04ddedf847bbcea5dd3289b3164cdf60be64f67a80dfd5f9836ea5d169970cd0ce24a7e05ea6190699706567cb0d5cf450de6a70e445 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz) - - SIZE: 15151458 bytes - SHA1: e2e195a4a58133e3ad33b955c829bb536fa3c075 - SHA256: f59c1596ac39cc7e60126e7d3698c19f482f04060674fdfe0124e1752ba6dd81 - SHA512: 0e2ee9ebf47f10c43bf5f29a03a3655f3507800b1e091e0c7b2ac335f36d2bf05621383e31fae2659b9cb9cb3e0f2452698a269249da12710443ffa62e4e0a8d - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.xz) - - SIZE: 9371208 bytes - SHA1: b5786048a934112936e5001bf265e39f6b397622 - SHA256: 225c067d9820fe52fcffbfb91d5b5243708a0b666b9929bea466e9379eb40ad7 - SHA512: a4f2a3a684517678442b4ad3bda50433634317c910e8c13c844dffe470532bae5fd8d72b3f83c9a36865f303fe0464703e30854b3e55a558a758252b5e594406 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.zip) - - SIZE: 16680721 bytes - SHA1: 8753a89e735df5608f909ab4f71887cc9a3636df - SHA256: caa60d82ef958232ecbd0ac7cb95ba9f13b15c268ef4ebeef7083d21b8c9d0e9 - SHA512: 8e8dfc78f2ea7348d20b616f28cd91c0b1d7803aa17fd92a9d24abf846a49353930437ad868e2eb6e91be27f253ee66393200ffc902b8a8339a75b4d8a4b16bc - -## Release Comment - -Thanks to everyone who helped with this release, especially, nagachika. - -The maintenance of Ruby 2.1, include this release, is based on the "Agreement for the Ruby stable version" of [the Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2015-08-18-ruby-2-2-3-released.md b/fa/news/_posts/2015-08-18-ruby-2-2-3-released.md deleted file mode 100644 index 3242736fb4..0000000000 --- a/fa/news/_posts/2015-08-18-ruby-2-2-3-released.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.3 Released" -author: "nagachika" -translator: -date: 2015-08-18 16:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.2.3. -This is a TEENY version release of the stable 2.2 series. - -This release includes the security fix for a RubyGems domain name verification vulnerability. - -* [CVE-2015-3900 Request hijacking vulnerability in RubyGems 2.4.6 and earlier](http://blog.rubygems.org/2015/05/14/CVE-2015-3900.html) - -There are also some bugfixes. -See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_3/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.bz2) - - SIZE: 13333814 bytes - SHA1: 59fe80aeeb518ffb396bb1df74b47b25541fb207 - SHA256: c745cb98b29127d7f19f1bf9e0a63c384736f4d303b83c4f4bda3c2ee3c5e41f - SHA512: 795f1b66a6d4f0baef897068899c3a1a4370ce1268618e6a7d6d4720234444259f371d1ba2e174b2f7580265e9f18eda3f295fbb087447aa6e8fb7a0f07526ce - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz) - - SIZE: 16626772 bytes - SHA1: 0d9e158534cb31e72740138b8f697b57b448e5c3 - SHA256: df795f2f99860745a416092a4004b016ccf77e8b82dec956b120f18bdc71edce - SHA512: 360ce8a99284c77b5789d292ac1669c299a66264691af7c29cb93df9b9136adbfa9965f3259eba561b082650770e2f5552f273ab8178e9c81f93bf0091a7056b - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.xz) - - SIZE: 10453204 bytes - SHA1: cff5421e3a7f6dbe72009ef44164d4b9e6d1801f - SHA256: c6ec90e9ed018e6d9a578fc93755d8565839908d5796809e1aecd1798c7ea8a7 - SHA512: e3ce3333e8d59f4f3bfc84cf9bbbc6f74272470e12913d299fd1d41fc166dee21921eed1789591f50c3f3b6e5fd38fd1b99855c16aff28bdc4ae8fcc680c71bd - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.zip) - - SIZE: 18462870 bytes - SHA1: d0baec39caa5d3bb0c65175b8fdc38a8a98b120d - SHA256: 0af3035be23120e5a617fcae0d34bc6cd5ee313ed7a6e1b68591268b415c95e4 - SHA512: ae288d7c0c21a159cf8173b4b4d51281616cf92a50ec63fe3b17b0af2b97302106406330aaf203a997c1169dda215068b480b5947a6bed56db5d378b0a4d2be5 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2015-08-31-confoo-cfp.md b/fa/news/_posts/2015-08-31-confoo-cfp.md deleted file mode 100644 index 33f7e22bda..0000000000 --- a/fa/news/_posts/2015-08-31-confoo-cfp.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "ConFoo 2016 is looking for Ruby speakers" -author: "afilina" -translator: -date: 2015-08-31 16:00:00 +0000 -lang: en ---- - -ConFoo is once more seeking passionate speakers for the upcoming conference. - -{: style="border:0; float:right; margin-left:20px;" width="350" height="157"}The event is happening in Montreal, Canada, between February 24th and 26th, 2016. It is an exciting conference for web developers with speakers from all over the world. It unites many web programming languages under one roof, as well as other topics related to web development. The [call for papers][1] closes on September 20th. - -For the last few years, ConFoo renewed 50% of its speakers. If you're new to this conference, you should definitely submit. - -If you would just like to attend, there is a [discount][2] until October 13th. - -[1]: https://confoo.ca/en/call-for-papers -[2]: https://confoo.ca/en/register diff --git a/fa/news/_posts/2015-10-13-fukuoka-ruby-award-2016.md b/fa/news/_posts/2015-10-13-fukuoka-ruby-award-2016.md deleted file mode 100644 index a174de7ffc..0000000000 --- a/fa/news/_posts/2015-10-13-fukuoka-ruby-award-2016.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: news_post -title: "2016 Fukuoka Ruby Award Competition - Entries to be judged by Matz" -author: "Fukuoka Ruby" -translator: -date: 2015-10-13 08:00:00 +0000 -lang: en ---- - -Dear Ruby Enthusiasts, - -The Government of Fukuoka, Japan together with "Matz" Matsumoto would like to -invite you to enter the following Ruby competition. If you have developed an -interesting Ruby program, please be encouraged to apply. - -2016 Fukuoka Ruby Award Competition - - Grand Prize - 1 Million Yen! - -Entry Deadline: November 27, 2015 - -Matz and a group of panelists will select the winners of the Fukuoka Competition. -The grand prize for the Fukuoka Competition is 1 million yen. -Past grand prize winners include Rhomobile (USA) and APEC Climate Center (Korea). - -[http://myfukuoka.com/category/news/ruby-news/](http://myfukuoka.com/category/news/ruby-news/) - -Programs entered in the competition do not have to be written entirely in Ruby -but should take advantage of the unique characteristics of Ruby. - -Projects must have been developed or completed within the past 12 months to be -eligible. Please visit the following Fukuoka website for additional details or -to enter: - -[http://www.digitalfukuoka.jp/events/84](http://www.digitalfukuoka.jp/events/84) -or -[http://myfukuoka.com/events/2016-fukuoka-ruby-award-guidelines-for-applicants/](http://myfukuoka.com/events/2016-fukuoka-ruby-award-guidelines-for-applicants/) - -[http://www.digitalfukuoka.jp/uploads/event_detail/file/210/RubyAward_ApplicationForm_2016.doc](http://www.digitalfukuoka.jp/uploads/event_detail/file/210/RubyAward_ApplicationForm_2016.doc) - -Please email the application form to award@f-ruby.com. - -This year, we have the following special prizes: - -The winner of the AWS Prize will receive: - -* Kindle Fire HDX (subject to change) -* AWS architect technical consultation - -The winner of the GMO Pepabo Prize will receive: - -* 50,000 yen gift certificate toward domain services from MuuMuu Domain -* Gift basket filled with local foods and snacks (30,000 yen value) - -The winner of the IIJ GIO Prize will receive: - -* IIJ GIO free coupon worth 500,000 yen (up to 6 months) - -"Matz will be testing and reviewing your source code thoroughly, so it's very -meaningful to apply! The competition is free to enter." - -Cheers! diff --git a/fa/news/_posts/2015-11-11-ruby-2-3-0-preview1-released.md b/fa/news/_posts/2015-11-11-ruby-2-3-0-preview1-released.md deleted file mode 100644 index 27d8a7de31..0000000000 --- a/fa/news/_posts/2015-11-11-ruby-2-3-0-preview1-released.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.0-preview1 Released" -author: "naruse" -translator: -date: 2015-11-11 14:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.3.0-preview1. - -Ruby 2.3.0-preview1 is the first preview of Ruby 2.3.0. -Many new features and improvements are included. - -A [Frozen String Literal Pragma](https://bugs.ruby-lang.org/issues/11473) -is introduced. -With Ruby 2.1, `"str".freeze` has been optimized to reduce object allocation. -Ruby 2.3 introduces a new magic comment and command line option to -freeze all string literals in the source files. -Additionally for debugging, you can get where the object is created on -`"can't modify frozen String"` error by -`--enable-frozen-string-literal-debug`. - -A [safe navigation operator](https://bugs.ruby-lang.org/issues/11537), -which already exists in C#, Groovy, and Swift, is introduced to ease -`nil` handling as `obj&.foo`. `Array#dig` and `Hash#dig` are also added. - -The [did_you_mean gem is bundled](https://bugs.ruby-lang.org/issues/11252). -The did_you_mean gem -shows the candidates on the `NameError` and `NoMethodError` to ease -debugging. - -Try and enjoy programming with Ruby 2.3.0-preview1, and report us your -knowledge! - -## Notable Changes since 2.2 - -* TBD - -See [NEWS](https://github.com/ruby/ruby/blob/v2_3_0_preview1/NEWS) and -[ChangeLog](https://github.com/ruby/ruby/blob/v2_3_0_preview1/ChangeLog) -for detail. - -With those changes, 1036 files changed, 81312 insertions(+), 51322 -deletions(-) since Ruby 2.2.0. - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview1.tar.bz2> - - * SIZE: 14174035 bytes - * SHA1: 55ad4f04d7a33ab780458ee0999de9f6124217ea - * SHA256: 42b9c9e1740a5abe2855d11803524370bd95744c8dcb0068572ed5c969ac7f0f - * SHA512: ae6d46c87f59e1fd3703b76dfc45bfcf208625f95ab9f4559f0b9f7050e8681f1a6e419f5fa06b704c83e56879c3a9ff1337dba443bcfca76fadb49c97d97a93 - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview1.tar.gz> - - * SIZE: 17560800 bytes - * SHA1: 6249572e5dca27d8c73a0cbf036e24e5d88fe82f - * SHA256: dc8f9d48392a2bb226df5f4b4fd2074d81af155cdf3f3799139a6e31e012aefe - * SHA512: 58384ef6e743dde20ea263692dab86ce9d6d22d722ef4c02a84396aa3128ce06d933d9b69078a3cd666d72320a8a6ffdc93296bc0d5338595b2a44c29d4db383 - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview1.tar.xz> - - * SIZE: 11225228 bytes - * SHA1: 85b4f631efa4b6435b2b41df6ce6c46da294c4d4 - * SHA256: a88e19d9dc001db8f49ca3986a8a4e69980affff876854585725e40de0eedcd8 - * SHA512: 3be0f3ed4de73509b2f6975fe3fbe28bb4d51df87db6e2c0019e8a107edf49be60b2127ba5b18bca91f9f5964b07f1adde3042dac6327017359eeb130760672b - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview1.zip> - - * SIZE: 19777010 bytes - * SHA1: 3458666c250dd333ac4b537be25f1913dd311ea1 - * SHA256: 0fc1d4450e9141f541038a4433f8fb49fb929e43c7bf5985685a4fa7b213a811 - * SHA512: f53653cf11d8dce1d627f7db3a15acca29c74c78735406a5d64bbbdc39fac232ef63110eb4d83521bef40c6f3006d55bbeaf54d1ddab1d4b6e5a13cee9247e85 - -## Release Comment - -See also the release schedule and other information: - -[ReleaseEngineering23](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering23) diff --git a/fa/news/_posts/2015-12-11-ruby-2-3-0-preview2-released.md b/fa/news/_posts/2015-12-11-ruby-2-3-0-preview2-released.md deleted file mode 100644 index 896872cc96..0000000000 --- a/fa/news/_posts/2015-12-11-ruby-2-3-0-preview2-released.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.0-preview2 Released" -author: "naruse" -translator: -date: 2015-12-11 14:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.3.0-preview2. - -Ruby 2.3.0-preview2 is the second preview of Ruby 2.3.0. -Many new features and improvements are included. - -A [Frozen String Literal Pragma](https://bugs.ruby-lang.org/issues/11473) -is introduced. -With Ruby 2.1, `"str".freeze` has been optimized to reduce object allocation. -Ruby 2.3 introduces a new magic comment and command line option to -freeze all string literals in the source files. -Additionally for debugging, you can get where the object is created on -`"can't modify frozen String"` error by using the -`--debug=frozen-string-literal` command line option. - -A [safe navigation operator](https://bugs.ruby-lang.org/issues/11537) -([so-called lonely operator](https://instagram.com/p/-M9l6mRPLR/)) `&.`, -which already exists in C#, Groovy, and Swift, is introduced to ease -`nil` handling as `obj&.foo`. `Array#dig` and `Hash#dig` are also added. - -The [did_you_mean gem is bundled](https://bugs.ruby-lang.org/issues/11252). -The did_you_mean gem -shows the candidates on the `NameError` and `NoMethodError` to ease -debugging. - -[RubyVM::InstructionSequence#to_binary and .load_from_binary](https://bugs.ruby-lang.org/issues/11788) -are introduced as experimental features. -With these features, we can make an ISeq (bytecode) pre-compilation system. - -Ruby 2.3 includes many performance tuning fixes. -For example, -[optimizing Proc#call](https://bugs.ruby-lang.org/issues/11569), -[reconsidering method entry data structure](https://bugs.ruby-lang.org/issues/11278), -[introducing new table data structure](https://bugs.ruby-lang.org/issues/11420), -machine code level tuning for object allocation and method calling code, -and many other optimizations. - -Try and enjoy programming with Ruby 2.3.0-preview2, and report us your -knowledge! - -## Notable Changes since 2.2 - -See [NEWS](https://github.com/ruby/ruby/blob/v2_3_0_preview2/NEWS) -and [ChangeLog](https://github.com/ruby/ruby/blob/v2_3_0_preview2/ChangeLog) -for details. - -With those changes, [1097 files changed, 97466 insertions(+), 58685 deletions(-)](https://github.com/ruby/ruby/compare/v2_2_0...v2_3_0_preview2) since Ruby 2.2.0! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview2.tar.bz2> - - * SIZE: 14126752 bytes - * SHA1: 7e717ef7a0a1523ad696b5fe693f7f7a613a3810 - * SHA256: e9b0464e50b2e5c31546e6b8ca8cad71fe2d2146ccf88b7419bbe9626af741cb - * SHA512: e397f321d4338edba8d005d871408775f03d975da90c8abcfdb457a1bc7e6c87efe58c53b2c3bc122e9f58f619767b271bcc8d5d9663ed4b4288c60556e8d288 - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview2.tar.gz> - - * SIZE: 17623519 bytes - * SHA1: 2deaf3ccbbfc5e08d3d840a4f1c33ff5f62f931d - * SHA256: cb1c745bda33ba9e812b48c87852571ef6486f985c5e6ff4508a137d1c9734a3 - * SHA512: 83022f99775eb139beec281d59029dcc7c59de1e313182685b0a785334ac53d0c445212460d00d065169b922949263f30a1f981e19fc6e59814e79e6e53ae8e0 - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview2.tar.xz> - - * SIZE: 11249780 bytes - * SHA1: e1dfca06cd3c2cf6456a7feb0b1cd0752bde1a3b - * SHA256: 7c3119268af87c137f415301b299281762453ad78f86e35562be014dabd67b11 - * SHA512: ab3376145d95a2188e6345984f0e5592c8d33515d7046a2ab2565dc418fa2306cdcf797aae9494d4d10446ada54ba638d8a8ad2d4b7510544d7eaea3de4faa87 - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0-preview2.zip> - - * SIZE: 19841531 bytes - * SHA1: db7fa5291d90e0a9c6f75c0cd068bc54050520d6 - * SHA256: 90d036fd1ec40aa8f5493821ac162bf69f505c5977db54afe53b8bf689d79b9d - * SHA512: 05784df420018aaae7d09d41e872df708e861cacc74dc8ee97a9e3ac7458cb12b937523ad6def34d5ae2890a0cf037a8d61e365beb88d28acd84879b9391ad65 - -## Release Comment - -See also the release schedule and other information: - -[ReleaseEngineering23](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering23) diff --git a/fa/news/_posts/2015-12-16-ruby-2-0-0-p648-released.md b/fa/news/_posts/2015-12-16-ruby-2-0-0-p648-released.md deleted file mode 100644 index e59e08a025..0000000000 --- a/fa/news/_posts/2015-12-16-ruby-2-0-0-p648-released.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.0.0-p648 Released" -author: "usa" -translator: -date: 2015-12-16 12:00:00 +0000 -lang: en ---- - -Ruby 2.0.0-p648 has been released. - -This release includes a security fix for the Fiddle and DL extensions. -Please view the topic below for more details. - -* [CVE-2015-7551: Unsafe tainted string usage in Fiddle and DL](https://www.ruby-lang.org/en/news/2015/12/16/unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551/) - -Ruby 2.0.0 is now under the state of the security maintenance phase, until Feb. 24th, 2016. -After that date, maintenance of Ruby 2.0.0 will be ended. -We recommend you start planning migration to newer versions of Ruby, such as 2.1, 2.2 or 2.3 (scheduled to release within a few weeks). - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.bz2) - - SIZE: 10785918 bytes - SHA1: 504be2eae6cdfe93aa7ed02ec55e35043d067ad5 - SHA256: 087ad4dec748cfe665c856dbfbabdee5520268e94bb81a1d8565d76c3cc62166 - SHA512: 609acf6d6352c9746e21cd7f0e7d29f5eb522e6fff2d5fad0431d63c568cc084ed5b7141f84cd33512d8213200d2d1a22e8d7df71469a980a3a92886133fea38 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.gz) - - SIZE: 13622628 bytes - SHA1: 2323df55f5e941c45be13500df9daf216098f884 - SHA256: 8690bd6b4949c333b3919755c4e48885dbfed6fd055fe9ef89930bde0d2376f8 - SHA512: 285745fa359be124a7ee5eea7ec8ae23a76ebd1f768c1214291ef5a65991c5c4a6ed73eb89e42d2673b16ed9a726bebe7e336ac73082c657f4e460014db30c94 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.tar.xz) - - SIZE: 8303584 bytes - SHA1: 4500e7b65a3788a2c9d787dc3b7d7e16014d4daf - SHA256: 22fe97739110ba9171b13fc4dcd1a92e767f16769de3593ee41ef1283d218402 - SHA512: 95df515d37f04193eaceaded4a4f568f83041683349cd44767803f77361a66533226d83eac6586ac894ae61d79bd36ce047f951aed43f9a8356dbb3244280774 - -* [https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.zip](https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p648.zip) - - SIZE: 15139871 bytes - SHA1: 2d5521cc12823af20269b9380a9d605a21509b43 - SHA256: 6d1fb8b285c80bfc1838880626d04f128561a649161c80d1748423c731d548bd - SHA512: c5f136fd75cd85a00312a5a44831fc114c1c329d224b5b45a8fe41de222daef16ed890413085574e62c5d86e743e0172f3523d309be6547c1976dffdba066ea2 - -## Release Comment - -Thanks to everyone who helped with this release. diff --git a/fa/news/_posts/2015-12-16-ruby-2-1-8-released.md b/fa/news/_posts/2015-12-16-ruby-2-1-8-released.md deleted file mode 100644 index e38845548b..0000000000 --- a/fa/news/_posts/2015-12-16-ruby-2-1-8-released.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.8 Released" -author: "usa" -translator: -date: 2015-12-16 12:00:00 +0000 -lang: en ---- - -Ruby 2.1.8 has been released. - -This release includes a security fix for the Fiddle and DL extensions. -Please view the topic below for more details. - -* [CVE-2015-7551: Unsafe tainted string usage in Fiddle and DL](https://www.ruby-lang.org/en/news/2015/12/16/unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551/) - -And, many bug fixes are also included. -See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_8/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.bz2) - - SIZE: 12014426 bytes - SHA1: 0284eaf42ac76a641abd5cd4b6bd933abeb9934e - SHA256: 250d0b589cba97caddc86a28849365ad0d475539448cf76bbae93190985b3387 - SHA512: 7129c012bca7f0e7cfa51c73ba0898697f7a9f31abd5ae57d38be5b6b646fd80ab33be9b262cd3e2486c66f65aaf4ec6e881ae6e5a82ec9df62f00fa072510fc - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.gz) - - SIZE: 15154017 bytes - SHA1: c7e50159357afd87b13dc5eaf4ac486a70011149 - SHA256: afd832b8d5ecb2e3e1477ec6a9408fdf9898ee73e4c5df17a2b2cb36bd1c355d - SHA512: 155121ed00a1a56e40a74bafd93dcc34a0ea65c56589cf36daa8318368acc12cc88cb73aba548ef204c8d2ad917b0feccf90b5608a86d1aca1203feca2263386 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.xz) - - SIZE: 9382672 bytes - SHA1: e1f4e043006a762604c042e6aac7540854a92d8c - SHA256: 94eeae3b3e3ac93cfd205e1aaef4c5325227b7656cbb2fc1ee217618145dd19d - SHA512: c712ee69cb1d41ad8420177b9564e451ab795e4903f1edc20c14aa189b8e38c54c5119d913204d13a5f8fa424f2ec43bfad04c77b313ea4533e23a9b1d161392 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.zip) - - SIZE: 16686848 bytes - SHA1: b554328fb3d9f2a527adc5830de221b00e3ce2b9 - SHA256: 6e0491e029a6f4c40bc091033c5bc91f65438f3f9153f93f1b86889521e79cee - SHA512: 2f9409460c8729fff96522baf5c4a74e1a648db1749a471ee3b6523d8c01e1faaf5f17afdffcaf355654f23e8c2ac392830109dd68dfc4e5a694d95155c593b6 - -## Release Comment - -Thanks to everyone who helped with this release. - -The maintenance of Ruby 2.1, including this release, is based on the "Agreement for the Ruby stable version" of the [Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2015-12-16-ruby-2-2-4-released.md b/fa/news/_posts/2015-12-16-ruby-2-2-4-released.md deleted file mode 100644 index c57c7922ff..0000000000 --- a/fa/news/_posts/2015-12-16-ruby-2-2-4-released.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.4 Released" -author: "nagachika" -translator: -date: 2015-12-16 12:00:00 +0000 -lang: en ---- - -Ruby 2.2.4 has been released. - -This release includes a security fix for the Fiddle extension. -Please view the topic below for more details. - -* [CVE-2015-7551: Unsafe tainted string usage in Fiddle and DL](https://www.ruby-lang.org/en/news/2015/12/16/unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551/) - -There are also some bugfixes. -See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_4/ChangeLog) for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2) - - SIZE: 13336518 bytes - SHA1: 6132840a859dbf2ac1498ba313021f299a870038 - SHA256: 31203696adbfdda6f2874a2de31f7c5a1f3bcb6628f4d1a241de21b158cd5c76 - SHA512: d27ca2f19c214ce87f906b57edd41f2f8af35b2871c191470facded9cfda15ba46e5c3bc7d5540225a38da6bd65050fcc8aaa4ffbadbb6bf7dc891c1821da0df - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.gz) - - SIZE: 16638151 bytes - SHA1: 818e5e157f76d4912ba3a7c7b4fc5156105e83c3 - SHA256: b6eff568b48e0fda76e5a36333175df049b204e91217aa32a65153cc0cdcb761 - SHA512: 5f5d4a5b6bb55643a2c2e4df9ec81062f62d97b2aa0de5faf5b4251f7e585b65a0ff07b4edf23c0969525e36916a132362f8349b6ab441ced8a86d0337532832 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.xz) - - SIZE: 10464500 bytes - SHA1: 9216cf34df7fd5ce8059a6403951d6d47964442a - SHA256: d28bff4641e382681c58072ddc244d025ac47ff71dd9426a92fcfc3830d1773c - SHA512: 755257eea0cb79f28f1d2dc6e2a5ee4b1954280f51153e5fe90605a875b1d52077660b87e4e04d11552591a1f60a1241e4c70056f073a217b3bad896f64780da - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.zip) - - SIZE: 18472352 bytes - SHA1: b6de8559d6e56ad09a3f4b57ef2c01e8c0754d5a - SHA256: 9b7f9e96ef84eef97f44bd5ab1fa70ece1668a52585a88ba6a3487579f12e6f4 - SHA512: 7a6678d3f9bc81eb7bb60de342820ed1bf44e834ee3e5ed6c713c8fa0a80c758c5a5260f17aa5ceae32e1f180187c9cb4e278e9fc6a7b8ad4386f9261426ad5b - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2015-12-16-unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551.md b/fa/news/_posts/2015-12-16-unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551.md deleted file mode 100644 index 528b35a0b1..0000000000 --- a/fa/news/_posts/2015-12-16-unsafe-tainted-string-usage-in-fiddle-and-dl-cve-2015-7551.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: news_post -title: "CVE-2015-7551: Unsafe tainted string usage in Fiddle and DL" -author: "usa" -translator: -date: 2015-12-16 12:00:00 +0000 -tags: security -lang: en ---- - -There is an unsafe tainted string usage vulnerability in Fiddle and DL. -This vulnerability has been assigned the CVE identifier -[CVE-2015-7551](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-7551). - -## Details - -There is an unsafe tainted string vulnerability in Fiddle and DL. -This issue was originally reported and fixed with [CVE-2009-5147](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-5147) in DL, -but reappeared after DL was reimplemented using Fiddle and libffi. - -And, about DL, [CVE-2009-5147](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-5147) was fixed at Ruby 1.9.1, -but not fixed at other branches, then rubies which bundled DL -except Ruby 1.9.1 are still vulnerable. - -Impacted code looks something like this: - -{% highlight ruby %} -handle = Fiddle::Handle.new(dangerous_user_input) -{% endhighlight %} - -Or: - -{% highlight ruby %} -handle = Fiddle::Handle.new(some_library) -function_pointer = handle[dangerous_user_input] -{% endhighlight %} - -All users running an affected release should either upgrade or use one of -the workarounds immediately. - -## Affected Versions - -* All patch releases of Ruby 1.9.2 and Ruby 1.9.3 (DL and Fiddle). -* All patch releases of Ruby 2.0.0 prior to Ruby 2.0.0 patchlevel 648 (DL and Fiddle). -* All versions of Ruby 2.1 prior to Ruby 2.1.8 (DL and Fiddle). -* All versions of Ruby 2.2 prior to Ruby 2.2.4 (Fiddle). -* Ruby 2.3.0 preview 1 and preview 2 (Fiddle). -* prior to trunk revision 53153 (Fiddle). - -## Workarounds - -If you cannot upgrade, the following monkey patch can be applied as a -workaround for Fiddle: - -{% highlight ruby %} -class Fiddle::Handle - alias :old_initialize :initialize - - def initialize file, *args - raise SecurityError if file.tainted? && $SAFE > 0 - old_initialize file, *args - end - - alias :sym :[] - alias :old_call :[] - - def [] fun - raise SecurityError if fun.tainted? && $SAFE > 0 - old_call fun - end -end -{% endhighlight %} - -If you are using DL, use Fiddle instead of it. - -## Credits - -Thanks to Christian Hofstaedtler <zeha@debian.org> for reporting this issue! - -## History - -* Originally published at 2015-12-16 12:00:00 UTC diff --git a/fa/news/_posts/2015-12-25-ruby-2-3-0-released.md b/fa/news/_posts/2015-12-25-ruby-2-3-0-released.md deleted file mode 100644 index 5d09fe4136..0000000000 --- a/fa/news/_posts/2015-12-25-ruby-2-3-0-released.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.0 Released" -author: "naruse" -translator: -date: 2015-12-25 17:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.3.0. - -This is the first stable release of the Ruby 2.3 series. -It introduces many new features, for example: - -A [frozen string literal pragma](https://bugs.ruby-lang.org/issues/11473) -is introduced. -With Ruby 2.1, `"str".freeze` has been optimized to reduce object allocation. -Ruby 2.3 introduces a new magic comment and command line option to -freeze all string literals in the source files. -Additionally for debugging, you can get where the object is created on -`"can't modify frozen String"` error by using the -`--debug=frozen-string-literal` command line option. - -A [safe navigation operator](https://bugs.ruby-lang.org/issues/11537) -([so-called lonely operator](https://instagram.com/p/-M9l6mRPLR/)) `&.`, -which already exists in C#, Groovy, and Swift, is introduced to ease -`nil` handling as `obj&.foo`. `Array#dig` and `Hash#dig` are also added. -Note that this behaves like [try! of Active Support](http://api.rubyonrails.org/v4.2.5/classes/Object.html#method-i-try-21), -which specially handles only `nil`. - -The [did_you_mean gem is bundled](https://bugs.ruby-lang.org/issues/11252). -The did_you_mean gem -shows the candidates on the `NameError` and `NoMethodError` to ease -debugging. - -[RubyVM::InstructionSequence#to_binary and .load_from_binary](https://bugs.ruby-lang.org/issues/11788) are introduced as experimental features. With these features, we can make a ISeq (bytecode) pre-compilation system. - -Ruby 2.3 also includes many performance improvements, for example -[reconsidering method entry data structure](https://bugs.ruby-lang.org/issues/11278), -[introducing new table data structure](https://bugs.ruby-lang.org/issues/11420), -[optimizing Proc#call](https://bugs.ruby-lang.org/issues/11569), -machine code level tuning for object allocation and method calling code, -[smarter instance variable data structure](https://bugs.ruby-lang.org/issues/11170), -[`exception: false` keyword argument support on Socket#*_nonblock methods](https://bugs.ruby-lang.org/issues/11229), -and so on. Check the "Implementation improvements" section in the NEWS file. - -For a complete list of new features and compatibility notes, please see -[NEWS](https://github.com/ruby/ruby/blob/v2_3_0/NEWS) and -[ChangeLog](https://github.com/ruby/ruby/blob/v2_3_0/ChangeLog). - -With those changes, [2946 files changed, 104057 insertions(+), 59478 deletions(-)](https://github.com/ruby/ruby/compare/v2_2_0...v2_3_0) since Ruby 2.2.0! - -Merry Christmas, Happy Holidays, and enjoy programming with Ruby 2.3! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.bz2> - - SIZE: 14185617 bytes - SHA1: 6c8a832d49d22755ea8c45b6d53faf2ccc6d6ac9 - SHA256: ec7579eaba2e4c402a089dbc86c98e5f1f62507880fd800b9b34ca30166bfa5e - SHA512: 77b707359e754c3616699d21697752741497c719dc3d6fdfb55ed639e76d52560d293ae54cbe5c63be78dc73fbe60f1b8615d704d017bdfe1994aa9747d26a6c - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz> - - SIZE: 17648682 bytes - SHA1: 2dfcf7f33bda4078efca30ae28cb89cd0e36ddc4 - SHA256: ba5ba60e5f1aa21b4ef8e9bf35b9ddb57286cb546aac4b5a28c71f459467e507 - SHA512: 914d0201ecefaeb67aca0531146d2e89900833d8d2a597ec8a19be94529ab6b4be367f9b0cee2868b407288896cc14b64d96150223cac0aef8aafc46fc3dd7cc - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.xz> - - SIZE: 11294412 bytes - SHA1: 96e620e38af351c8da63e40cfe217ec79f912ba1 - SHA256: 70125af0cfd7048e813a5eecab3676249582bfb65cfd57b868c3595f966e4097 - SHA512: d893c5e6db5a0533e0da48d899c619964388852ef90e7d1b92a4363d5f189cd2dba32a009581f62b9f42a8e6027975fc3c18b64faf356f5e3ac43a8d69ec5327 - -* <https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.zip> - - SIZE: 19840511 bytes - SHA1: 3f88617568d9a4f491e8b32dca532363f73eaa71 - SHA256: 8270bdcbc6b62a18fdf1b75bd28d5d6fc0fc26b9bd778d422393a1b98006020a - SHA512: a3f397bb3c9c19d9b797552c5d60bb01c82db884cfa966df84881125bea35713cffd99f88fb86b271bae72d9cfb09ad9b33838cffcf6365c091459479914fdef diff --git a/fa/news/_posts/2016-02-24-support-plan-of-ruby-2-0-0-and-2-1.md b/fa/news/_posts/2016-02-24-support-plan-of-ruby-2-0-0-and-2-1.md deleted file mode 100644 index dab1a23c46..0000000000 --- a/fa/news/_posts/2016-02-24-support-plan-of-ruby-2-0-0-and-2-1.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: news_post -title: "Support plans for Ruby 2.0.0 and Ruby 2.1" -author: "usa" -translator: -date: 2016-02-24 09:00:00 +0000 -lang: en ---- - -We announce the future support plans for Ruby 2.0.0 and Ruby 2.1. - -## About Ruby 2.0.0 - -As it has been announced before, all support for Ruby 2.0.0 has ended today. -Bug and security fixes from more recent Ruby versions will no longer be -backported to 2.0.0, and no further patch release of 2.0.0 will be released. - -We highly recommend that you upgrade to Ruby 2.3 or 2.2 as soon as possible. - -Please contact us via the ruby-core ML if you'd like to continue maintaining -the 2.0.0 branch as for some justifiable reason you can't upgrade. - -## About Ruby 2.1 - -We are planning to release Ruby 2.1.9 by the end of March. -After the release, we will end the normal maintenance phase of 2.1, -and start the security maintenance phase of it. -This means that after the release of 2.1.9 we will never backport -any bug fixes to 2.1 except security fixes. - -We recommend that you start planning to upgrade to Ruby 2.3 or 2.2. - -By the way, we are also planning to release Ruby 2.1.10 just after -releasing 2.1.9. This is not a bug fix release nor a security fix release. -We have never experienced a two-digit version number of Ruby. -Therefore, we consider it important to test such a release -without any critical security fixes. - -Ruby 2.1.10 will not include any changes from 2.1.9, -except for its version number. -You do not have to use it on production, but you should test it before -the release of 2.1.11 which will probably include security fixes. diff --git a/fa/news/_posts/2016-03-30-ruby-2-1-9-released.md b/fa/news/_posts/2016-03-30-ruby-2-1-9-released.md deleted file mode 100644 index 6a179b46e9..0000000000 --- a/fa/news/_posts/2016-03-30-ruby-2-1-9-released.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.9 Released" -author: "usa" -translator: -date: 2016-03-30 12:00:00 +0000 -lang: en ---- - -Ruby 2.1.9 has been released. - -This release includes many bug fixes. -See [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_1_9/ChangeLog) -for details. - -[As announced before](https://www.ruby-lang.org/en/news/2016/02/24/support-plan-of-ruby-2-0-0-and-2-1/), this is the last normal release of the Ruby 2.1 series. -After this release we will never backport any bug fixes to 2.1 except security fixes. -We recommend that you start planning to upgrade to Ruby 2.3 or 2.2. - -By the way, we are planning to release Ruby 2.1.10 in a few days. -Ruby 2.1.10 will not include any changes from 2.1.9, except for its version number. -You do not have to use it on production, but you should test it because it has a two-digit version number. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.bz2) - - SIZE: 12016421 bytes - SHA1: 39524185b580a3390a3b5019819c8b28d3249766 - SHA256: 4f21376aa11e09b499c3254bbd839e68e053c0d18e28d61c428a32347269036e - SHA512: a86422132e4c64007a84a91696f4557bdcbc8716fbfe1962f1eef3754ee7f994f4de0b5b7e7231c25057515767040d5c4af33339750b6db15744662e9bd24f38 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.gz) - - SIZE: 15166126 bytes - SHA1: dd68afc652fe542f83a9a709a74f4da2662054bf - SHA256: 034cb9c50676d2c09b3b6cf5c8003585acea05008d9a29fa737c54d52c1eb70c - SHA512: 1e03aa720e932f019c4651c355e8ef35b87fdf69b054c9d39a319467d2a8e5bfe4995cbacd9add36b832c77761a47c9d1040f00e856ad5888d69ec7221455e35 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar.xz) - - SIZE: 9395648 bytes - SHA1: 5e89efa5189c3def8ee8de18ce750a7e4a20ac32 - SHA256: 39f203f7498aed2456fb500147fada5adcbf102d89d4f6aca773ebcadd8ea82a - SHA512: 1f331a8910fd7a9ab9c41bf56aef12041dd413ad49c696f6df2c9a7ec3a3d5cdf383f2a3d30949ea37b8ecb39f50355e526412b36ed4e07b60733d9db4d2bd14 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.zip) - - SIZE: 16696728 bytes - SHA1: 4aa288b65fbf12692ac53577adc561c9a0f6a6ca - SHA256: 8610fdb1836d493c19600cfed4828083f85197096c0aea3f73fa1ed532cbb5a7 - SHA512: a212b6a58637f6bf4f456d7ecc7bbd8ceaa0c3f16cb844b872eb62eaf261b5874fdb79705241d05a356fcdc1d3fdd8a94fcd8e6ca62190e9f544c8f45a9f41af - -## Release Comment - -Thanks to everyone who helped with this release. - -The maintenance of Ruby 2.1, including this release, is based on the "Agreement for the Ruby stable version" of the [Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2016-04-01-ruby-2-1-10-released.md b/fa/news/_posts/2016-04-01-ruby-2-1-10-released.md deleted file mode 100644 index b26b59085a..0000000000 --- a/fa/news/_posts/2016-04-01-ruby-2-1-10-released.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.1.10 Released" -author: "usa" -translator: -date: 2016-04-01 02:00:00 +0000 -lang: en ---- - -Ruby 2.1.10 has been released. -This release is not intended for production use, but for compatibility tests with two-digit version numbers. -You don't have to replace Ruby 2.1.9 by 2.1.10 in normal use. - -As announced in the [2.1.9 release post](https://www.ruby-lang.org/en/news/2016/03/30/ruby-2-1-9-released/), Ruby 2.1.10 does not include any changes from 2.1.9, except for its version number (and only one small related change in its test suite). -Please test your applications and/or libraries for compatibility with two-digit version numbers. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.bz2) - - SIZE: 12015299 bytes - SHA1: 22dcd759d8cbb14c8735988fbc7ee5c35f9d4720 - SHA256: a74675578a9a801ac25eb7152bef3023432d6267f875b198eb9cd6944a5bf4f1 - SHA512: 4b7213695416876e4de3cbce912f61ac89db052c74f0daa8424477991cfc49b07300e960177ff576b634a97ee8afef3c5aded5d5806329dbd01d0ce7b42b9b63 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.gz) - - SIZE: 15165837 bytes - SHA1: 2a5194b1fd42a3f1f23f1e0844ae78332a9efd5d - SHA256: fb2e454d7a5e5a39eb54db0ec666f53eeb6edc593d1d2b970ae4d150b831dd20 - SHA512: 5f9c0cc3d10b4e04c63f001b4add782c34b9f260368f48b443b397cea57680d328f7c28cbb2a9be4c2f5acd114bac07dacb100d57018fa4d2a1792fc03083418 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.tar.xz) - - SIZE: 9362868 bytes - SHA1: adcc9e10b8f7add0e19f8c70afc134c069a862ca - SHA256: 5be9f8d5d29d252cd7f969ab7550e31bbb001feb4a83532301c0dd3b5006e148 - SHA512: 72406ac133af7f057d4633d2a300e49e133881f6b36ff4cdf6c72b4ff4325de332fc5a45c96ea407140a8bf09cdc307e13107c539196902e5b67b7d24cd72dc9 - -* [https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.zip](https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.10.zip) - - SIZE: 16706304 bytes - SHA1: 402158192b7673cb4e7a67f48f6d93945bc9fd13 - SHA256: 21cf83156ec782d17827fb9c8a945626dfd68cf0d9eb5ca7a78b12eb91c6f1fb - SHA512: 5490fc4726a1efaea8c7c541ca3102013b00a0af2903d15009307265c93b218bb13aab0007d279823c740a9b173d957ca79f2d8f25932f04763ec1aa18d164e8 - -## Release Comment - -Thanks to everyone who helped with this release. diff --git a/fa/news/_posts/2016-04-26-ruby-2-2-5-released.md b/fa/news/_posts/2016-04-26-ruby-2-2-5-released.md deleted file mode 100644 index 2196e5e3aa..0000000000 --- a/fa/news/_posts/2016-04-26-ruby-2-2-5-released.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.5 Released" -author: "usa" -translator: -date: 2016-04-26 12:00:00 +0000 -lang: en ---- - -Ruby 2.2.5 has been released. - -This release includes many bug fixes. -See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_5/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.bz2) - - SIZE: 13350551 bytes - SHA1: f78473fe60a632b778599374ae64612592c2c9c1 - SHA256: 22f0c6f34c0024e0bcaaa8e6831b7c0041e1ef6120c781618b833bde29626700 - SHA512: d3224814361c297bc36646c2e40f63c461ccf5a77fea5a3acdcb2c7ad1705bb229ac6abbd7ad1ae61cbe0fefd7a008c6102568d11366ad3107179302cd3e734e - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.gz) - - SIZE: 16654395 bytes - SHA1: 457707459827bd527347a5cee7b4dc509b486713 - SHA256: 30c4b31697a4ca4ea0c8db8ad30cf45e6690a0f09687e5d483c933c03ca335e3 - SHA512: 3dd8688c64b8b143bdd6b0f123b7c2ecdd1b93c7c9ee51b2774a3b0b864897789932c7ad406293a6ab12c9eb9db9cfb2940fc14e2afc4f79718994f7668cbd5f - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.tar.xz) - - SIZE: 10457620 bytes - SHA1: 58484284dd613e139e8f7023b1168e9034a8766d - SHA256: f86feaa0a578e8da0924ced3ec68b25b50d69fc9a72cc8d919bc3c73f85f87d7 - SHA512: 6da4bdb0a43d56c7a8e4dddbcacf237e998ebb54706c8f835b53713dbdf924e40d5f89f63017515e1d66904ca01f28058cf296567104e06540c57f036dcdd0fe - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.5.zip) - - SIZE: 18493821 bytes - SHA1: e4f497e5b79768ae93dd73ac26da4ff5dd722bfe - SHA256: d5094d7cc50266772a8352c68b7fcd865889fd174c09e2f11bb003696cd04bb3 - SHA512: b3789063252e361aa4598ecd9170fc360f0d5685497975ce09442fe5815c438b67b95fc67e56b99ab4044a49715ed1a8b1fb089f757c7c0d1a777536e06de8cf - -## Release Comment - -Thanks to everyone who helped with this release. - -With this release, the maintainer of Ruby 2.2 changed from nagachika-san to usa. -About two thirds of the changes included in this release were made by nagachika-san. -Thanks for his great contributions. - -The maintenance of Ruby 2.2, including this release, -is based on the "Agreement for the Ruby stable version" of the -[Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2016-04-26-ruby-2-3-1-released.md b/fa/news/_posts/2016-04-26-ruby-2-3-1-released.md deleted file mode 100644 index e564d209e9..0000000000 --- a/fa/news/_posts/2016-04-26-ruby-2-3-1-released.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.1 Released" -author: "nagachika" -translator: -date: 2016-04-26 12:00:00 +0000 -lang: en ---- - -Ruby 2.3.1 has been released. - -This is the first TEENY version release of the stable 2.3 series. - -There are many bugfixes. -See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_1/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2) - - SIZE: 14432088 bytes - SHA1: 4ee76c7c1b12d5c5b0245fc71595c5635d2217c9 - SHA256: 4a7c5f52f205203ea0328ca8e1963a7a88cf1f7f0e246f857d595b209eac0a4d - SHA512: a8659b96a3a481a3dbdbb6997eb18ff1f8cd926a9707a90d071e937315c21d372c89252f0d44732ae5007d2678fda8c8fbceafa4e4b4ff500d236fb796284d8d - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz) - - SIZE: 17797997 bytes - SHA1: c39b4001f7acb4e334cb60a0f4df72d434bef711 - SHA256: b87c738cb2032bf4920fef8e3864dc5cf8eae9d89d8d523ce0236945c5797dcd - SHA512: 7399d59b54764e02760ed6cac525a43c5e7212aebbbff8a04234dc45adbc0cd9fe1ff9a9328eefd38f02d3b6c5b2e3ca843808784755ff4e66ded624f55c150a - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.xz) - - SIZE: 11407048 bytes - SHA1: 83499c14c674cf2d88e495031434a94c06330879 - SHA256: 6725b5534d5a3a21ec4f14d6d7b9921a0d00d08acb88fd04cd50b47b70496338 - SHA512: e9d89aeefb1b1e72cee9d3d414b27c793cf09ff3ed5e0ea5277a2b6ae1cae9fdbf6b404a84b42c0c6835754eb04674fc4f1470fbfedabeee3f57e518f13db633 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.zip) - - SIZE: 19842037 bytes - SHA1: ab9dec602b11ee4cfc295d6aa87ebe712372d123 - SHA256: 4c8ae431b33f78d64cabb31911e0890e9a3ac380b4f22b11738f9baeeda51763 - SHA512: a26d3ab5983c6f3ea454e3e75554137305525479e4c15c0ae424689e870e2c5a9f0fe194975cf362cc5528ce601e31a0a15b87c7af200fd0d1da17459435b953 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2016-05-16-confoo-cfp.md b/fa/news/_posts/2016-05-16-confoo-cfp.md deleted file mode 100644 index 1e39cb8bf5..0000000000 --- a/fa/news/_posts/2016-05-16-confoo-cfp.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: news_post -title: "ConFoo Vancouver 2016 is looking for Ruby speakers" -author: "afilina" -translator: -date: 2016-05-16 20:06:00 +0000 -lang: en ---- - -ConFoo is once more seeking passionate speakers for the upcoming conference. - -{: style="border:0; float:right; margin-left:20px;" width="180" height="130"}ConFoo is happy to open the [call for papers][1] of the Vancouver 2016 edition! If you are interested in speaking about Ruby or other web development topics, please submit until June 6th. ConFoo will cover travel and hotel for the speakers who require it. - -ConFoo Vancouver will be held on December 5-7, 2016. For those who are familiar with ConFoo Montreal, that conference will still be running annually in addition to Vancouver. [Visit their site][2] to learn more. - -Talks are 35 minutes for the topic and 10 minutes for Q&A, for a total of 45 minutes. ConFoo is eagerly expecting your proposals! - -[1]: https://confoo.ca/en/yvr2016/call-for-papers -[2]: https://confoo.ca/en/yvr2016 diff --git a/fa/news/_posts/2016-06-20-ruby-2-4-0-preview1-released.md b/fa/news/_posts/2016-06-20-ruby-2-4-0-preview1-released.md deleted file mode 100644 index 1dd186e812..0000000000 --- a/fa/news/_posts/2016-06-20-ruby-2-4-0-preview1-released.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.0-preview1 Released" -author: "naruse" -translator: -date: 2016-06-20 09:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.4.0-preview1. - -Ruby 2.4.0-preview1 is the first preview of Ruby 2.4.0. -This preview1 is released earlier than usual because it includes so -many new features and improvements. -Feel free to -[send feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport) -since you can still change the features. - -## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) - -Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) -doesn't specify details of the Integer class, -CRuby has two visible Integer classes: Fixnum and Bignum. -Ruby 2.4 unifies them into Integer. - -## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) - -`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle -Unicode case mappings instead of only ASCII case mappings. - -## Performance improvements - -Ruby 2.4 also contains the following performance improvements including -language changes: - -### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) - -`[x, y].max` and `[x, y].min` are optimized to not create a temporary array -under certain conditions. - -### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) - -Added `Regexp#match?`, which executes a regexp match without creating -a back reference object and changing `$~` to reduce object allocation. - -### Other performance improvements - -* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) - -## Debugging - -### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) - -Ruby ignores exceptions in threads unless another thread explicitly joins them. -With `report_on_exception = true`, -you can notice if a thread has died due to an unhandled exception. - -Send us feedback what should be the default for `report_on_exception` -and about report-on-GC. - -### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) - -Ruby has deadlock detection around waiting threads, but its report doesn't -include enough information for debugging. -Ruby 2.4's deadlock detection shows threads with their backtrace and -dependent threads. - -Try and enjoy programming with Ruby 2.4.0-preview1, and -[send us feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport)! - -## Notable Changes since 2.3 - -See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0_preview1/NEWS) -and [ChangeLog](https://github.com/ruby/ruby/blob/v2_4_0_preview1/ChangeLog) -for details. - -With those changes, -[1140 files changed, 33126 insertions(+), 50993 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0_preview1) -since Ruby 2.3.0! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.tar.bz2> - - * SIZE: 14108114 bytes - * SHA1: 7dcc42548d0724d83b6589ab98f34282845d7bcd - * SHA256: 17570f0b84215ca82252f10c167ee50bc075383c018420c6b2601ae1cade0649 - * SHA512: c9873e8686eb54dbde61d6e23cd5197beebccd6cb31fd12c82763ebe1fde17095d7514d9d93c2c82b238032c98691df5479dc2d666a8a590e0fc54450ec29cb5 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.tar.gz> - - * SIZE: 17605452 bytes - * SHA1: 1003a1e57547d81f4bb979c0f40f242afc284cd5 - * SHA256: 80d02f49f40e7ce07b70bee7efda751b0595a349a017306e9fe8caad5da13e64 - * SHA512: 4b603ab4ff9ea7e8bb8053aa4b638839d534241466d7f0e4d5bca3f2ea416694c2ea391790f1ffdc07fa538918d27707621741eb0ddc7bd00eb9d7628622787a - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.tar.xz> - - * SIZE: 11155800 bytes - * SHA1: bc33085277266f5a09a143bf6817affcb77f8e7f - * SHA256: 62942c7300727469fe3d2b43e5a5c772d4836cf624a1d644bdece2afaca472c8 - * SHA512: dfc2c6642d49fa95383817a6dc82c416b3218ddfdaf882d6d2e5a7da22d0a5ac142e516a57aa96214070f3c7551d275044233ac052c82d67189b01c39847aad4 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview1.zip> - - * SIZE: 19904781 bytes - * SHA1: 25c16ee91bbcb0224f80e20d938f5c08832973f7 - * SHA256: fd588aea1558b1171f87a3dd342ee207b8995a2c0a8241d7aa15bcfa16036854 - * SHA512: f2fff35ff9157a4b31177b3d6b91bdaad04c22b3c626c3a5e5ec9a31b103f9607b31c909ef27880065cfdbcfa5d6901a6db89d22e0c645666d069c5b6dd1818b - -## Release Comment - -See also the release schedule and other information: - -[ReleaseEngineering24](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering24) diff --git a/fa/news/_posts/2016-07-25-ruby-prize-2016.md b/fa/news/_posts/2016-07-25-ruby-prize-2016.md deleted file mode 100644 index dd37e4f231..0000000000 --- a/fa/news/_posts/2016-07-25-ruby-prize-2016.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: news_post -title: "Ruby Prize 2016 nominations are now open" -author: "Ruby Association" -translator: -date: 2016-07-25 12:00:00 +0000 -lang: en ---- - -Ruby Prize 2016 nominations are now being accepted for new and outstanding -members in the Ruby community. - -The Ruby Prize is given to recognize the efforts of remarkable activity and -achievements in the Ruby Community. The prize will be awarded by the executive -committee comprised of three parties, the Ruby Association, Nihon Ruby no Kai -and Matsue City. - -Ruby Prize winner and final nominee (1-2 people) will receive an award at the -RubyWorld Conference 2016, to be held in Matsue, Japan on November 3rd & 4th. - -In addition, the Ruby Prize winner will also be awarded 1 million yen -(approx. 9,683 USD at exchange rates as of July 12, 2016). - -Nominees will be selected by the following: - -* Recommendations from the "Prize Member" executive committee -* Recommendations from the general public (you). - -Please see below for more details. - -[Ruby Association: Now accepting nominations for the Ruby Prize Award 2016](http://www.ruby.or.jp/en/news/20160725.html) diff --git a/fa/news/_posts/2016-08-26-confoo-cfp.md b/fa/news/_posts/2016-08-26-confoo-cfp.md deleted file mode 100644 index 4287bf16c1..0000000000 --- a/fa/news/_posts/2016-08-26-confoo-cfp.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: news_post -title: "ConFoo Montreal 2017 is looking for Ruby speakers" -author: "afilina" -translator: -date: 2016-08-26 16:00:00 +0000 -lang: en ---- - -Want to get your web development ideas in front of a live audience? The [call for papers][1] for the ConFoo Montreal 2017 conference is open! If you have a burning desire to hold forth about Ruby, databases, JavaScript, or any other web development topics, ConFoo wants to see your proposals. - -{: style="border:0; float:right; margin-left:20px;" width="180" height="130"} -The window is open only from August 21 to September 20, 2016, so hurry. An added benefit: If your proposal is selected and you live outside of the Montreal area, ConFoo will cover your travel and hotel. - -You’ll have 45 minutes to wow the crowd, with 35 minutes for your topic and 10 minutes for Q&A. ConFoo can’t wait to see your proposals. Knock us out! - -ConFoo Montreal will be held on March 8-10, 2017. For those of you who already know about our conference, be aware that this annual tradition will still be running in addition to ConFoo Vancouver. Visit [ConFoo's site][2] to learn more about both events. - -[1]: https://confoo.ca/en/yul2017/call-for-papers -[2]: https://confoo.ca/en diff --git a/fa/news/_posts/2016-09-08-ruby-2-4-0-preview2-released.md b/fa/news/_posts/2016-09-08-ruby-2-4-0-preview2-released.md deleted file mode 100644 index dbce24696f..0000000000 --- a/fa/news/_posts/2016-09-08-ruby-2-4-0-preview2-released.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.0-preview2 Released" -author: "naruse" -translator: -date: 2016-09-08 09:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.4.0-preview2. - -Ruby 2.4.0-preview2 is the second preview of Ruby 2.4.0. -This preview2 is released to get feedback from the community. -Feel free to -[send feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport) -since you can still influence the features. - -## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) - -Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) -doesn't specify details of the Integer class, -Ruby had two visible Integer classes: Fixnum and Bignum. -Ruby 2.4 unifies them into Integer. -All C extensions which touch the Fixnum or Bignum class need to be fixed. - -See also [the ticket](https://bugs.ruby-lang.org/issues/12005) and [akr's slides](http://www.a-k-r.org/pub/2016-09-08-rubykaigi-unified-integer.pdf). - -## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) - -`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle -Unicode case mappings instead of only ASCII case mappings. - -## Performance improvements - -Ruby 2.4 also contains the following performance improvements including -language changes: - -### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) - -`[x, y].max` and `[x, y].min` are optimized to not create a temporary array -under certain conditions. - -### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) - -Added `Regexp#match?`, which executes a regexp match without creating -a back reference object and changing `$~` to reduce object allocation. - -### Other performance improvements - -* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) - -## Debugging - -### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) - -Ruby ignores exceptions in threads unless another thread explicitly joins them. -With `report_on_exception = true`, -you can notice if a thread has died due to an unhandled exception. - -Send us feedback what should be the default for `report_on_exception` -and about report-on-GC, which shows a report when a thread is -garbage collected without join. - -### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) - -Ruby has deadlock detection around waiting threads, but its report doesn't -include enough information for debugging. -Ruby 2.4's deadlock detection shows threads with their backtrace and -dependent threads. - -Try and enjoy programming with Ruby 2.4.0-preview2, and -[send us feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport)! - -## Other notable changes since 2.3 - -* Support OpenSSL 1.1.0 -* ext/tk is now removed from stdlib [Feature #8539](https://bugs.ruby-lang.org/issues/8539) - -See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0_preview2/NEWS) -and [ChangeLog](https://github.com/ruby/ruby/blob/v2_4_0_preview2/ChangeLog) -for details. - -With those changes, -[2353 files changed, 289057 insertions(+), 73847 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0_preview2) -since Ruby 2.3.0! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview2.tar.bz2> - - * SIZE: 12463225 bytes - * SHA1: 95a501624f1cf4bb0785d3e17afd0ad099f66385 - * SHA256: 2224c55b2d87b5c0f08d23a4618e870027dbc1cffbfb4a05efd19eac4ff4cf1d - * SHA512: 0c9a59a2f57a99c4ee8539a30f41da1de7547566203f89d856e1be9dbb44365754e6c470145dc9336eb324e0feb2f53d9fef18a1564968ac21f9ee528905949f - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview2.tar.gz> - - * SIZE: 15586514 bytes - * SHA1: 492a13c4ddc1c0c218433acb00dcf7ddeef96fe0 - * SHA256: fec544836428aada2dc593a8cc42ce330798a805e49ecb807a0e21b386fd0b14 - * SHA512: 5a3de852a7611e79f38219ed7bb13772aaabb25538ca843d38743180a0cc939a4e34c008b61d578da785285196b6b8882270bddc17cbed481237db8afa4c54e4 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview2.tar.xz> - - * SIZE: 9886832 bytes - * SHA1: 95d5fd7d54d86497194f69ec433755a517dcde8f - * SHA256: 6c2d25bedc50c2f19b0e349f0ffd9b9a83000d9cb6a677bf5372fb493d33e16a - * SHA512: b9bd898d17583103ee61b4764ac86eb62c9661fca1f41ff0d06a15965a0a1ba581491d4b8a342e527d63e102b6ddcb2acebdabe5b246409ce9711e13f9428d5b - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview2.zip> - - * SIZE: 17401564 bytes - * SHA1: 5f3a5b2fd03f70d49e74ec36be3e0c110f6c17cc - * SHA256: 4d0e466148283ad52208b1e1b70b018aefb7fa95b490fc862d5ea4ca284ecdd2 - * SHA512: 0ef2098d995238580245a4bcee843641199c1194189be13614611e2ffec329278072319a799d409eaf13b1cff45f05a0eae02d9ea8ccc69058fa49e03eca0130 - -## Release Comment - -See also the release schedule and other information: - -[ReleaseEngineering24](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering24) diff --git a/fa/news/_posts/2016-10-20-fukuoka-ruby-award-2017.md b/fa/news/_posts/2016-10-20-fukuoka-ruby-award-2017.md deleted file mode 100644 index 90672f1b0e..0000000000 --- a/fa/news/_posts/2016-10-20-fukuoka-ruby-award-2017.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: news_post -title: "2017 Fukuoka Ruby Award Competition - Entries to be judged by Matz" -author: "Fukuoka Ruby" -translator: -date: 2016-10-20 00:00:00 +0000 -lang: en ---- - -Dear Ruby Enthusiasts, - -The Government of Fukuoka, Japan, together with "Matz" Matsumoto would like to -invite you to enter the following Ruby competition. If you have developed an -interesting Ruby program, please be encouraged to apply. - -2017 Fukuoka Ruby Award Competition - Grand Prize - 1 Million Yen! - -Entry Deadline: December 27, 2016 - - - -Matz and a group of panelists will select the winners of the Fukuoka Competition. -The grand prize for the Fukuoka Competition is 1 million yen. -Past grand prize winners include Rhomobile (USA) and APEC Climate Center (Korea). - -[http://myfukuoka.com/category/news/ruby-news/](http://myfukuoka.com/category/news/ruby-news/) - -Programs entered in the competition do not have to be written entirely in Ruby -but should take advantage of the unique characteristics of Ruby. - -Projects must have been developed or completed within the past 12 months to be -eligible. Please visit the following Fukuoka websites for additional details or -to enter: - -[http://www.digitalfukuoka.jp/events/114](http://www.digitalfukuoka.jp/events/114) -or -[http://myfukuoka.com/events/2017-fukuoka-ruby-award-guidelines-for-applicants/](http://myfukuoka.com/events/2017-fukuoka-ruby-award-guidelines-for-applicants/) - -[http://www.digitalfukuoka.jp/uploads/event_detail/file/305/RubyAward_ApplicationForm_2017.doc](http://www.digitalfukuoka.jp/uploads/event_detail/file/305/RubyAward_ApplicationForm_2017.doc) - -Please email the application form to award@f-ruby.com. - -This year, we have the following special prizes: - -The winner of the AWS Prize will receive: - -* Amazon Fire Tablet (subject to change) -* AWS architect technical consultation - -The winner of the GMO Pepabo Prize will receive: - -* Gift basket filled with local foods and snacks (30,000 yen value) -* 50,000 yen gift certificate toward domain services - -The winner of the IIJ GIO Prize will receive: - -* IIJ GIO free coupon worth 500,000 yen (up to 6 months) - -The winner of the Salesforce Prize will receive: - -* salesforce.com novelty goods - -"Matz will be testing and reviewing your source code thoroughly, so it's very -meaningful to apply! The competition is free to enter." - -Thanks! diff --git a/fa/news/_posts/2016-11-09-ruby-2-4-0-preview3-released.md b/fa/news/_posts/2016-11-09-ruby-2-4-0-preview3-released.md deleted file mode 100644 index 397af579b5..0000000000 --- a/fa/news/_posts/2016-11-09-ruby-2-4-0-preview3-released.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.0-preview3 Released" -author: "naruse" -translator: -date: 2016-11-09 09:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.4.0-preview3. - -Ruby 2.4.0-preview3 is the third preview of Ruby 2.4.0. -This preview3 is released to get feedback from the community. -Feel free to -[send feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport) -since you can still influence the features. - -## [Introduce hash table improvement (by Vladimir Makarov)](https://bugs.ruby-lang.org/issues/12142) - -Improve the internal structure of hash table (st_table) by introducing open addressing -and an inclusion order array. -This improvement has been discussed with many people, especially with Yura Sokolov. - -## Binding#irb: Start a REPL session similar to `binding.pry` - -While you are debugging, you may often use `p` to see the value of variables. -With [pry](https://github.com/pry/pry) you can use `binding.pry` in your application -to launch a REPL and run any Ruby code. -[r56624](https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a) -introduces `binding.irb` which behaves like that with irb. - -## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) - -Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) -doesn't specify details of the Integer class, -Ruby had two visible Integer classes: Fixnum and Bignum. -Ruby 2.4 unifies them into Integer. -All C extensions which touch the Fixnum or Bignum class need to be fixed. - -See also [the ticket](https://bugs.ruby-lang.org/issues/12005) and [akr's slides](http://www.a-k-r.org/pub/2016-09-08-rubykaigi-unified-integer.pdf). - -## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) - -`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle -Unicode case mappings instead of only ASCII case mappings. - -## Performance improvements - -Ruby 2.4 also contains the following performance improvements including -language changes: - -### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) - -`[x, y].max` and `[x, y].min` are optimized to not create a temporary array -under certain conditions. - -### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) - -Added `Regexp#match?`, which executes a regexp match without creating -a back reference object and changing `$~` to reduce object allocation. - -### Other performance improvements - -* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) - -## Debugging - -### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) - -Ruby ignores exceptions in threads unless another thread explicitly joins them. -With `report_on_exception = true`, -you can notice if a thread has died due to an unhandled exception. - -Send us feedback what should be the default for `report_on_exception` -and about report-on-GC, which shows a report when a thread is -garbage collected without join. - -### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) - -Ruby has deadlock detection around waiting threads, but its report doesn't -include enough information for debugging. -Ruby 2.4's deadlock detection shows threads with their backtrace and -dependent threads. - -Try and enjoy programming with Ruby 2.4.0-preview3, and -[send us feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport)! - -## Other notable changes since 2.3 - -* Support OpenSSL 1.1.0 -* ext/tk is now removed from stdlib [Feature #8539](https://bugs.ruby-lang.org/issues/8539) -* XMLRPC is now removed from stdlib [Feature #12160](https://bugs.ruby-lang.org/issues/12160) - -See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0_preview3/NEWS) -and [ChangeLog](https://github.com/ruby/ruby/blob/v2_4_0_preview3/ChangeLog) -for details. - -With those changes, -[2470 files changed, 283051 insertions(+), 64902 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0_preview3) -since Ruby 2.3.0! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.bz2> - - SIZE: 12615328 bytes - SHA1: fefe49f6a7d5b642936c324f3b05aaac827355db - SHA256: 305a2b2c627990e54965393f6eb1c442eeddfa149128ccdd9f4334e2e00a2a52 - SHA512: 6602c65a7b1e3bc680acc48217108f4335e84fdd74a9cf06f2e2f9ad00a2fccacf9fa035a912bc9d5cc3f0c7a5e21475971dfac37b0364311ef3645f25c7ddf9 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.gz> - - SIZE: 15758023 bytes - SHA1: f6a6ec9f7fedad0bf4efee2e42801cc963f60dca - SHA256: c35fe752ccfabf69bf48e6aab5111c25a05938b428936f780638e2111934c9dd - SHA512: 68556d5252b6813b4c8eeba32733e940207f80694b5c5d20e69bf01eb52929ed2466496b05a895a5ad4831d430695e17624eb35b728b2d4d7cf02df756ac48b4 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.xz> - - SIZE: 9957596 bytes - SHA1: 66592b1a52f985638d639e7c3dd6bdda4e0569d0 - SHA256: b14be2b5c80bff0d6894ae2b37afdb17a968413e70236ec860f3e2d670b4c317 - SHA512: 5be20f0b2609745790c2b22f2228e69a840f63c34a117a1f95fd5436af211f0a6db2758d513d3e095a2d97c53c80793579cb2a1e00e70cf72c487a88c4a40d33 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.zip> - - SIZE: 17579012 bytes - SHA1: 15d08cff952da3844ae54887b7f74b12d47c9ee2 - SHA256: b95a8f67fb7d6e852db77c5660c8878c14d68eb72c5501dac164a7e640ecb06e - SHA512: fa15e1b7ab0cab56c9a580e1b1e2fee250ee0b9c59546079675a1931a36e37131bd37d64033c75e05d8e9d9fcc33ce7850254d3acaca2136cf3bd08b070244f0 - -## Release Comment - -See also the release schedule and other information: - -[ReleaseEngineering24](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering24) diff --git a/fa/news/_posts/2016-11-15-ruby-2-2-6-released.md b/fa/news/_posts/2016-11-15-ruby-2-2-6-released.md deleted file mode 100644 index 347eb9b8f8..0000000000 --- a/fa/news/_posts/2016-11-15-ruby-2-2-6-released.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.6 Released" -author: "usa" -translator: -date: 2016-11-15 12:00:00 +0000 -lang: en ---- - -Ruby 2.2.6 has been released. - -This release includes new SSL certificates for RubyGems. -And, this also includes about 80 bug fixes after the previous release. -See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_6/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.bz2) - - SIZE: 13378616 bytes - SHA1: 67b15fcc394bb1ffb5a7e926dcd6222d8e988188 - SHA256: e845ba41ea3525aafaa4094212f1eadc57392732232b67b4394a7e0f046dddf7 - SHA512: 7a93f72d236521ac28c8a0bc0c73cf805797a8813d22e02f42c5fc05dd39f6e422817272e0db6a24c245f6f97ad4b2b412a9a47ac50156ab186df596918a5f34 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.gz) - - SIZE: 16663387 bytes - SHA1: a5aaf19694470e543c8216e3f1189e48b6dbb0da - SHA256: de8e192791cb157d610c48a9a9ff6e7f19d67ce86052feae62b82e3682cc675f - SHA512: 221ea2d18ff23e65539ee184e09ef78643e46266a0ca18ccd2cb251970a6c057b843363f7c97541b2a6e68e1c3c41a36e2ae5c8218da888e0429473504abf66d - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.tar.xz) - - SIZE: 10487776 bytes - SHA1: 6248eb97cbb5533009ef91c100d42e72af283f16 - SHA256: 9414ecc0d09cf71c9a24e8dc82fcc87919ac7359fb08db2791d6c32bfd157339 - SHA512: a2cfde1c6df4df6b996f8d86c52b255fd43b469f8b9f0d7a81ce5f4de949a67025d8bead4ce61f03263eb6a8378b156b843f97b429208afaa1d3bfd0a7af4ef4 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.6.zip) - - SIZE: 18506149 bytes - SHA1: 6e207a91f13e301379d4fd37b7af847808185e41 - SHA256: 71bafc98c0b6f7b70cd79473952060e9b9fc36c8d57ee21c6b775451a16e6f9a - SHA512: dfce7a0e1c3e3d64490dfad101897e8aaacb6f1c0b193a97a38a4288532ec65464796de898685497ba35f199ed6d8eeaf9bb84d31cab0ea4cfd762466597a840 - -## Release Comment - -Thanks to everyone who helped with this release. - -The maintenance of Ruby 2.2, including this release, -is based on the "Agreement for the Ruby stable version" of the -[Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2016-11-15-ruby-2-3-2-released.md b/fa/news/_posts/2016-11-15-ruby-2-3-2-released.md deleted file mode 100644 index 6da9dec500..0000000000 --- a/fa/news/_posts/2016-11-15-ruby-2-3-2-released.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.2 Released" -author: "nagachika" -translator: -date: 2016-11-15 12:00:00 +0000 -lang: en ---- - -Ruby 2.3.2 has been released. - -This is a TEENY version release of the stable 2.3 series. - -This release contains an update to RubyGems 2.5.2 -and updates of the included SSL certificates. - -There are many bugfixes, too. -See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_2/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.bz2) - - SIZE: 14428572 bytes - SHA1: 7adc23d308d335486a03f0099dad2b2f44b8a4a8 - SHA256: e6ce83d46819c4120c9295ff6b36b90393dd5f6bef3bb117a06d7399c11fc7c0 - SHA512: 78699bae5b0a2382a58f9d51f7d891341f00ad3a90d9ca06b68b1b245cf5acebc3a82133e39bf6a412ac999a5c0f778a0dab177c2569ffbee085ffff6f6ec38e - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.gz) - - SIZE: 17814200 bytes - SHA1: baef56b27941bfbfac6e2cd005b686d320c7f124 - SHA256: 8d7f6ca0f16d77e3d242b24da38985b7539f58dc0da177ec633a83d0c8f5b197 - SHA512: 833e76555c72fd142d89701715e6c6d838121347c4c7aa857478ba1e8f7596aa7c4fd1950046322747e46db041288747e4c1943cf9b13e064c6e85ee60d6515a - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.tar.xz) - - SIZE: 11420276 bytes - SHA1: b7c780dbfc34b5baea116504ae700f68c92379a0 - SHA256: 5c78f311045ce48160092160444dec2744941a5e37d7865032978bd5bf392f0c - SHA512: f2e602281cbcfad81b8197b9555bf637a1ef34f51dbc7548e5e0c5996ab1b7db5bd9eeb902128d37eed90f39b559c569aa75f2b29fe5f65085be65a63206fd72 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.2.zip) - - SIZE: 19861601 bytes - SHA1: 1ac64ad7cb1ed9004101812f5b707c151570dd84 - SHA256: b8ad5b47fad22610476a4abc1c32b8e558265f9b20a5865a12836709028cbd76 - SHA512: 8a794c8eed53380b026b150b0ce176af2a6ba278d5f7a5067e27615940ae85b6af28ac7187adc5d7af04c82442271ed0d8530d9fe751810ecc6c75340f81bd03 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2016-11-21-ruby-2-3-3-released.md b/fa/news/_posts/2016-11-21-ruby-2-3-3-released.md deleted file mode 100644 index b765da406c..0000000000 --- a/fa/news/_posts/2016-11-21-ruby-2-3-3-released.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.3 Released" -author: "nagachika" -translator: -date: 2016-11-21 10:30:00 +0000 -lang: en ---- - -Ruby 2.3.3 has been released. - -This release contains a bug fix concerning Refinements and Module#prepend. -The combined use of Module#refine and Module#prepend to the same class -could cause an unexpected `NoMethodError`. -This is a regression on Ruby 2.3.2 released last week. -See [Bug #12920](https://bugs.ruby-lang.org/issues/12920) for details. - -There are some other bugfixes, too. -See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_3/ChangeLog) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.bz2) - - SIZE: 14433673 bytes - SHA1: a8db9ce7f9110320f33b8325200e3ecfbd2b534b - SHA256: 882e6146ed26c6e78c02342835f5d46b86de95f0dc4e16543294bc656594cc5b - SHA512: 88f7782effd35bfe0b4c33140b5eb147d09b63fbb35b9c42d2200c010f387e2b70984ead1eca86569e8ec31f08b35289d440c0ca76b662dadb760f848e863d91 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.gz) - - SIZE: 17813577 bytes - SHA1: 1014ee699071aa2ddd501907d18cbe15399c997d - SHA256: 241408c8c555b258846368830a06146e4849a1d58dcaf6b14a3b6a73058115b7 - SHA512: 80d9f3aaf1d60b9b2f4a6fb8866713ce1e201a3778ef9e16f1bedb7ccda35aefdd7babffbed1560263bd95ddcfe948f0c9967b5077a89db8b2e18cacc7323975 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.xz) - - SIZE: 11444164 bytes - SHA1: f2318460606d410e80dd5c82862a93e5736534de - SHA256: 1a4fa8c2885734ba37b97ffdb4a19b8fba0e8982606db02d936e65bac07419dc - SHA512: 73dd6ed896ff52d953b153b2cab359c87953ea77521878f1ee16c1e217cc46bcb253100debe61ba631e6ffa0bc773e592d603a374508ed5189a311136ccd8d20 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.zip) - - SIZE: 19862248 bytes - SHA1: f0723ce176a829c9c33c31cdab6eca6ce0aef73e - SHA256: cbffda17fdb1bbd86dd36de093524b0a9b5c92e007fd60acac1c9804b429886e - SHA512: 5f75b77962c9d01fe591d87e20900d71a54c737e0d1198fae437729f21a9af84278a91ee73e850b5f49361b3cbf48af7a0a3ed9920cce932b58fd8e2420d5b26 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2016-12-12-ruby-2-4-0-rc1-released.md b/fa/news/_posts/2016-12-12-ruby-2-4-0-rc1-released.md deleted file mode 100644 index ae4cd395f3..0000000000 --- a/fa/news/_posts/2016-12-12-ruby-2-4-0-rc1-released.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.0-rc1 Released" -author: "naruse" -translator: -date: 2016-12-12 09:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.4.0-rc1. - -Ruby 2.4.0-rc1 is the first release candidate of Ruby 2.4.0. -This rc1 is released to get feedback from the community. -Feel free to -[send feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport) -since you can still fix the features. - -## [Introduce hash table improvement (by Vladimir Makarov)](https://bugs.ruby-lang.org/issues/12142) - -Improve the internal structure of hash table (st_table) by introducing open addressing -and an inclusion order array. -This improvement has been discussed with many people, especially with Yura Sokolov. - -## Binding#irb: Start a REPL session similar to `binding.pry` - -While you are debugging, you may often use `p` to see the value of variables. -With [pry](https://github.com/pry/pry) you can use `binding.pry` in your application -to launch a REPL and run any Ruby code. -[r56624](https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a) -introduces `binding.irb` which behaves like that with irb. - -## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) - -Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) -doesn't specify details of the Integer class, -Ruby had two visible Integer classes: Fixnum and Bignum. -Ruby 2.4 unifies them into Integer. -All C extensions which touch the Fixnum or Bignum class need to be fixed. - -See also [the ticket](https://bugs.ruby-lang.org/issues/12005) and [akr's slides](http://www.a-k-r.org/pub/2016-09-08-rubykaigi-unified-integer.pdf). - -## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) - -`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle -Unicode case mappings instead of only ASCII case mappings. - -## Performance improvements - -Ruby 2.4 also contains the following performance improvements including -language changes: - -### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) - -`[x, y].max` and `[x, y].min` are optimized to not create a temporary array -under certain conditions. - -### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) - -Added `Regexp#match?`, which executes a regexp match without creating -a back reference object and changing `$~` to reduce object allocation. - -### Other performance improvements - -* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) - -## Debugging - -### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) - -Ruby ignores exceptions in threads unless another thread explicitly joins them. -With `report_on_exception = true`, -you can notice if a thread has died due to an unhandled exception. - -Send us feedback what should be the default for `report_on_exception` -and about report-on-GC, which shows a report when a thread is -garbage collected without join. - -### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) - -Ruby has deadlock detection around waiting threads, but its report doesn't -include enough information for debugging. -Ruby 2.4's deadlock detection shows threads with their backtrace and -dependent threads. - -Try and enjoy programming with Ruby 2.4.0-rc1, and -[send us feedback](https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport)! - -## Other notable changes since 2.3 - -* Support OpenSSL 1.1.0 (drop support for 0.9.7 or prior) -* ext/tk is now removed from stdlib [Feature #8539](https://bugs.ruby-lang.org/issues/8539) -* XMLRPC is now removed from stdlib [Feature #12160](https://bugs.ruby-lang.org/issues/12160) - -See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0_rc1/NEWS) -or commit logs for details. - -With those changes, -[2519 files changed, 288606 insertions(+), 83896 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0_rc1) -since Ruby 2.3.0! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.tar.bz2> - - SIZE: 12512729 bytes - SHA1: a0439652a97a2406b691e8a1e586e2cf08c258ba - SHA256: 3b156b20f9df0dd62cbeeb8e57e66ea872d2a5b55fabdef1889650122bcc2ea7 - SHA512: b43902ac7794487197df55a45256819d2e7540b77f1ed4eb68def3e0473ee98860a400862075bafadbde74f242e1dfe36a18cd6fe05ac42aae1ea6dddc9978ce - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.tar.gz> - - SIZE: 14098505 bytes - SHA1: 6b242f9ec7b908c9aa26e497440684ba06d86927 - SHA256: e41ada7650eed2a5800534d1201ba7c88f1627085659df994f47ab4c5e327745 - SHA512: 26d3c60483ce2d6eaabd7077085102fad6633f18cf5d772bacf6f563670030cb7bba22d54d8b7dfa5eac8b52990371c4a6ad1c095dff6f6b3a7bbe1a8ffb3754 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.tar.xz> - - SIZE: 9930088 bytes - SHA1: 7c404e8bec9859f708927f7203d4f42187e678b7 - SHA256: 3f014b3186d10676da6c512d14c65db23ccc4bf200fed9d7c6f9a58fd1e3295b - SHA512: 22e209e28da1f2394f50c0a7dd5d0d4d4c0c5a6b5b0b02260fad0267a0940b98f0e2b0f36a44f87d1612555cb3022f43cd136a5186c7f87650aa20264408d415 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-rc1.zip> - - SIZE: 15785968 bytes - SHA1: 7d82386434ccbb1701f2995286bf29c8b9179e01 - SHA256: 14e6910e36618cddffeb22bad5f1052f907dc31ec93d4aa945bca0905d8a52c4 - SHA512: 5dd89320d429e5bd5faf3709be7e5b70f7355304d6324d7ac13a69187e5f1446ad5988c8186bc33f4fea8934288294f9d16fea173f39b2b39967746c4b03d1d4 - -## Release Comment - -See also the release schedule and other information: - -[ReleaseEngineering24](https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/ReleaseEngineering24) diff --git a/fa/news/_posts/2016-12-25-ruby-2-4-0-released.md b/fa/news/_posts/2016-12-25-ruby-2-4-0-released.md deleted file mode 100644 index a4cfa29195..0000000000 --- a/fa/news/_posts/2016-12-25-ruby-2-4-0-released.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.0 Released" -author: "naruse" -translator: -date: 2016-12-25 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.4.0. - -Ruby 2.4.0 is the first stable release of the Ruby 2.4 series. -It introduces many new features, for example: - -## [Introduce hash table improvement (by Vladimir Makarov)](https://bugs.ruby-lang.org/issues/12142) - -Improve the internal structure of hash table (st_table) by introducing open addressing -and an inclusion order array. -This improvement has been discussed with many people, especially with Yura Sokolov. - -## Binding#irb: Start a REPL session similar to `binding.pry` - -While you are debugging, you may often use `p` to see the value of variables. -With [pry](https://github.com/pry/pry) you can use `binding.pry` in your application -to launch a REPL and run any Ruby code. -[r56624](https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a) -introduces `binding.irb` which behaves like that with irb. - -## [Unify Fixnum and Bignum into Integer](https://bugs.ruby-lang.org/issues/12005) - -Though [ISO/IEC 30170:2012](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579) -doesn't specify details of the Integer class, -Ruby had two visible Integer classes: Fixnum and Bignum. -Ruby 2.4 unifies them into Integer. -All C extensions which touch the Fixnum or Bignum class need to be fixed. - -See also [the ticket](https://bugs.ruby-lang.org/issues/12005) and [akr's slides](http://www.a-k-r.org/pub/2016-09-08-rubykaigi-unified-integer.pdf). - -## [String supports Unicode case mappings](https://bugs.ruby-lang.org/issues/10085) - -`String/Symbol#upcase/downcase/swapcase/capitalize(!)` now handle -Unicode case mappings instead of only ASCII case mappings. - -## Performance improvements - -Ruby 2.4 also contains the following performance improvements including -language changes: - -### [Array#max, Array#min](https://bugs.ruby-lang.org/issues/12172) - -`[x, y].max` and `[x, y].min` are optimized to not create a temporary array -under certain conditions. - -### [Regexp#match?](https://bugs.ruby-lang.org/issues/8110) - -Added `Regexp#match?`, which executes a regexp match without creating -a back reference object and changing `$~` to reduce object allocation. - -### Other performance improvements - -* [speed up instance variable access](https://bugs.ruby-lang.org/issues/12274) - -## Debugging - -### [Thread#report_on_exception and Thread.report_on_exception](https://bugs.ruby-lang.org/issues/6647) - -Ruby ignores exceptions in threads unless another thread explicitly joins them. -With `report_on_exception = true`, -you can notice if a thread has died due to an unhandled exception. - -Send us feedback what should be the default for `report_on_exception` -and about report-on-GC, which shows a report when a thread is -garbage collected without join. - -### [Thread deadlock detection now shows threads with their backtrace and dependency](https://bugs.ruby-lang.org/issues/8214) - -Ruby has deadlock detection around waiting threads, but its report doesn't -include enough information for debugging. -Ruby 2.4's deadlock detection shows threads with their backtrace and -dependent threads. - -## Other notable changes since 2.3 - -* Support OpenSSL 1.1.0 (drop support for 0.9.7 or prior) -* ext/tk is now removed from stdlib [Feature #8539](https://bugs.ruby-lang.org/issues/8539) -* XMLRPC is now removed from stdlib [Feature #12160](https://bugs.ruby-lang.org/issues/12160) - -See [NEWS](https://github.com/ruby/ruby/blob/v2_4_0/NEWS) -or commit logs for details. - -With those changes, -[2523 files changed, 289129 insertions(+), 84670 deletions(-)](https://github.com/ruby/ruby/compare/v2_3_0...v2_4_0) -since Ruby 2.3.0! - -Merry Christmas, Happy Holidays, and enjoy programming with Ruby 2.4! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2> - - SIZE: 12572424 bytes - SHA1: 944d2588308391b20a89642472454d1dfe7b2360 - SHA256: 440bbbdc49d08d3650f340dccb35986d9399177ad69a204def56e5d3954600cf - SHA512: bef7bb53f63fb74073d071cc125fb67b273ed0779ef43c2d2969089b9ca21fff1bd012281c5b748f7a3c24dd26e71730d7248c05a01cb23ab2089eb4d02115fe - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.gz> - - SIZE: 14104044 bytes - SHA1: d44a3c50a0e742341ed3033d5db79d865151a4f4 - SHA256: 152fd0bd15a90b4a18213448f485d4b53e9f7662e1508190aa5b702446b29e3d - SHA512: 21c9f596b42dd9cba7a53963a59fed0c2e0c1eb960a4ac7087ea3eaa991ce9252d32639e1edcb75b1d709bc07c4820a6dc336ab427d0643c6e6498e0eacdbc8b - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.xz> - - SIZE: 9906880 bytes - SHA1: 038804bbd0e77508dd2510b729a9f3b325489b2e - SHA256: 3a87fef45cba48b9322236be60c455c13fd4220184ce7287600361319bb63690 - SHA512: 975a5388592adc038461e0acebb6c0efee242891b2ea8621476401458efe2bc0fdd317d3bf99beb745b0b3808410efdff33862da29c95c027f457943721e3ab6 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.zip> - - SIZE: 15758757 bytes - SHA1: 29e1bab11551011718c35a51827edcb55bd656fc - SHA256: 5c2bbfa26fd6a15a2d70961874b0f3a386206fcc5f698e240dd8b0c9f0f18c5e - SHA512: 31d932372ce490eeac0a70bc8dcf842909a90435422398d069c05cf01d994936064b8f4e60879e28a8655c1296eb8e180e348cb95e001ed6ca73cda0ff77de23 diff --git a/fa/news/_posts/2017-03-22-ruby-2-4-1-released.md b/fa/news/_posts/2017-03-22-ruby-2-4-1-released.md deleted file mode 100644 index 79a5031c3f..0000000000 --- a/fa/news/_posts/2017-03-22-ruby-2-4-1-released.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.1 Released" -author: "naruse" -translator: -date: 2017-03-22 03:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.4.1. -This is the first TEENY version release of the stable 2.4 series. - -See [commit logs](https://github.com/ruby/ruby/compare/v2_4_0...v2_4_1) -for details. - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.bz2> - - SIZE: 12571597 bytes - SHA1: b0bec75c260dcb81ca386fafef27bd718f8c28ad - SHA256: ccfb2d0a61e2a9c374d51e099b0d833b09241ee78fc17e1fe38e3b282160237c - SHA512: 1c80d4c30ecb51758a193b26b76802a06d214de7f15570f1e85b5fae4cec81bda7237f086b81f6f2b5767f2e93d347ad1fa3f49d7b5c2e084d5f57c419503f74 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz> - - SIZE: 14174752 bytes - SHA1: 47909a0f77ea900573f027d27746960ad6d07d15 - SHA256: a330e10d5cb5e53b3a0078326c5731888bb55e32c4abfeb27d9e7f8e5d000250 - SHA512: 6cddac19733870f372750a276a2c59f99dea9a17731cd7c24a44b615794ff1a5d194660949628217107f2301f3b1ff3b6c18223896c87c76e84c64f4078769dc - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.xz> - - SIZE: 9939188 bytes - SHA1: eb3e25346431214379e3b92c6f6b6e02f7b2503f - SHA256: 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654 - SHA512: e6fd290b6edd166348b70f0f1c56f7ed9d956c4c1eb91d97d0548041ca4196b9b75ec1ad35c745bdbfd4de195899093e7205d7f02b014ecf1c48e6f31cf25903 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.zip> - - SIZE: 15830344 bytes - SHA1: 19bdb47299a39316df2c80107314940d17b26d88 - SHA256: f98a3b50439ffdd270f9ae86d99ff0be431c81b85215c9aafac942ef40b89cbf - SHA512: 4dc8991a5f8751a5853798b2e438eb3879c959a02517aa4d0efa045412e47ba7036679fd4c6797249a502f0bfac9ef43740f7bff29b017d10e0b3f51d63f161f - -## Release Comment - -Many committers, developers, and users who provided bug reports helped -us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2017-03-28-ruby-2-2-7-released.md b/fa/news/_posts/2017-03-28-ruby-2-2-7-released.md deleted file mode 100644 index bfc0d0e0fb..0000000000 --- a/fa/news/_posts/2017-03-28-ruby-2-2-7-released.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.7 Released" -author: "usa" -translator: -date: 2017-03-28 11:00:00 +0000 -lang: en ---- - -Ruby 2.2.7 has been released. - -This release includes about 70 bug fixes after the previous release. -See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_2_7/ChangeLog) -for details. - -After this release, we will end the normal maintenance phase of Ruby 2.2, -and start the security maintenance phase of it. -This means that after the release of 2.2.7 we will never backport any bug fixes -to 2.2 except security fixes. -The term of the security maintenance phase is scheduled for 1 year. -By the end of this term, official support of Ruby 2.2 will be over. -Therefore, we recommend that you start planning to upgrade to Ruby 2.4 or 2.3. - - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.bz2) - - SIZE: 13381078 bytes - SHA1: 0b5b79f55a1e7a7c2f6600e75167c1b9cc435042 - SHA256: 80486c5991783185afeceeb315060a3dafc3889a2912e145b1a8457d7b005c5b - SHA512: 83756cd1c91516962b83961e0de59d858618f7ed3e9795f930aab4f199d47a95ed8f867d8aa9b51d508be26d9babf2140117c88241168bac41e6ef702cfadf20 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz) - - SIZE: 16678101 bytes - SHA1: dc819c4810b009f282f3b794f61f0db313f03b19 - SHA256: 374184c6c5bbc88fb7bad422368d4053a236fb6587f0eff76146dcba57f93da5 - SHA512: 056f4b59afdd5e7697e96e64f0c0308392d9dce386abfdb101a2260d1d906877c55ae135cb86a1598a778ca7beb39424ad38bce0deb860981a10e8f5d48bf359 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.xz) - - SIZE: 10507528 bytes - SHA1: 8b811b08c1ba790949fa67c6856c9b3ba3f12691 - SHA256: 234c8aee6543da9efd67008e6e7ee740d41ed57a52e797f65043c3b5ec3bcb53 - SHA512: 21bebec6d0972f4e6f2988f471c58520e32096e43a61d627eb2210df283a6fd6d0fc49da9063f2d086f3d489f13e948462a6f084f9e931b4fde6102f490cc225 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.zip) - - SIZE: 18519665 bytes - SHA1: 5214c5b4c0c64b6af1d77c2d9ff890481e7e4e01 - SHA256: db3852d3f23b5eab2b9862ff01c16486eb5700cd7cb5a78234254fd8a330e183 - SHA512: 3bb978c510ecb9f962c4613124fffd64e1348d1fa2779218727c1c7c8ff3cbcf88ff0232acb815f3363af67e9f5ce546ca84990ee95269f9512270830daa588a - -## Release Comment - -Thanks to everyone who helped with this release. - -The maintenance of Ruby 2.2, including this release, -is based on the "Agreement for the Ruby stable version" of the -[Ruby Association](http://www.ruby.or.jp/). diff --git a/fa/news/_posts/2017-03-30-ruby-2-3-4-released.md b/fa/news/_posts/2017-03-30-ruby-2-3-4-released.md deleted file mode 100644 index 1ba2389837..0000000000 --- a/fa/news/_posts/2017-03-30-ruby-2-3-4-released.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.4 Released" -author: "nagachika" -translator: -date: 2017-03-30 00:00:00 +0000 -lang: en ---- - -Ruby 2.3.4 has been released. - -This release contains about 80 bug fixes after the previous release. -See the [commit logs](https://github.com/ruby/ruby/compare/v2_3_3...v2_3_4) -for details. - -And this release contains a bug fix of Symbol#hash to be non-deterministic. -This is a regression on the 2.3 series before 2.3.4. -See [Bug #13376](https://bugs.ruby-lang.org/issues/13376) for more details. - - -## Known Problem - -_(This section was added at April 11, 2017.)_ - -An API incompatibility has been found for Ruby 2.3.4. -It is the accidental removal of the API function `rb_thread_fd_close`. -We will fix this problem with the next release, but if you are facing -the problem now and need to overcome it immediately, use this patch: - -* [patch for rb_thread_fd_close problem](https://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_2_3/thread.c?r1=58289&r2=58288&pathrev=58289&view=patch) - - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.bz2) - - SIZE: 14434361 bytes - SHA1: f5b18e7149ec7620444c91962e695708829d0216 - SHA256: cd9808bb53824d6edb58beaadd3906cb23b987438ce75ab7bb279b2229930e2f - SHA512: ad1f16142615498232d0de85149585be1d2c5de2bc40ec160d272a09e098ef6f317d8b25026001735261fd1c5bc0d1f8513a8474e89f0d86eed5b2fe7338d64e - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.gz) - - SIZE: 17820518 bytes - SHA1: d064b9c69329ca2eb2956ad57b7192184178e35d - SHA256: 98e18f17c933318d0e32fed3aea67e304f174d03170a38fd920c4fbe49fec0c3 - SHA512: 23b68ff1f7ab0323876d6135f232f895a5d5009b4128711a685003563828492afb330e589ca614581a49e43027c34e251d96a3fc10330cdfdd11a2537af0233f - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.xz) - - SIZE: 11450108 bytes - SHA1: 8ee952fa7c2466d53868143e867dc08a153e20df - SHA256: 341cd9032e9fd17c452ed8562a8d43f7e45bfe05e411d0d7d627751dd82c578c - SHA512: 9e3adc2de6703e50e75db37db2981006d4c69759929d61db6a0d63627cfe5977d0ad66d2c69d7161cfc0c0d1c2cb38e5181a06ccd2790df2f72ec25c2ad01e02 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.zip) - - SIZE: 19869837 bytes - SHA1: 47a926289e4f007b1a338617f925dd858ea3da97 - SHA256: e70b716982be704375129d4fc0ef305fd8d8151f64e0fcb12de791ab956a526d - SHA512: 6fab3a737f494d33f91a40881d4ab16a938e98cf0f344fba90104d5cf9e6d02d7c17f64512c2f1ffd67f64ad5dd38477fab0d17614c1ff22627f18232186315a - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2017-04-01-support-of-ruby-2-1-has-ended.md b/fa/news/_posts/2017-04-01-support-of-ruby-2-1-has-ended.md deleted file mode 100644 index 631cf13d35..0000000000 --- a/fa/news/_posts/2017-04-01-support-of-ruby-2-1-has-ended.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: news_post -title: "Support of Ruby 2.1 has ended" -author: "usa" -translator: -date: 2017-04-01 00:00:00 +0000 -lang: en ---- - -We announce that all support of the Ruby 2.1 series has ended. - -After the release of Ruby 2.1.10 at the end of March of the last year, -the support of the Ruby 2.1 series was in the security maintenance phase. -Now, after one year has passed, this phase has ended. -Therefore, at March 31, 2017, all support of the Ruby 2.1 series has ended. -Bug and security fixes from more recent Ruby versions will no longer be -backported to 2.1, and no further patch release of 2.1 will be released. -We highly recommend that you upgrade to Ruby 2.4 or 2.3 as soon as possible. - - -## About currently supported Ruby versions - -### Ruby 2.4 series - -Currently in normal maintenance phase. -We will backport bug fixes and release with the fixes whenever necessary. -And, if a critical security issue is found, we will release an urgent fix -for it. - -### Ruby 2.3 series - -Currently in normal maintenance phase. -We will backport bug fixes and release with the fixes whenever necessary. -And, if a critical security issue is found, we will release an urgent fix -for it. - -### Ruby 2.2 series - -Currently in security maintenance phase. -We will never backport any bug fixes to 2.2 except security fixes. -If a critical security issue is found, we will release an urgent fix for it. -We are planning to end the support of the Ruby 2.2 series at the end of -March 2018. diff --git a/fa/news/_posts/2017-07-21-ruby-prize-2017.md b/fa/news/_posts/2017-07-21-ruby-prize-2017.md deleted file mode 100644 index 7bcfdda37c..0000000000 --- a/fa/news/_posts/2017-07-21-ruby-prize-2017.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: news_post -title: "Nominations now being accepted for Ruby Prize 2017" -author: "Ruby Association" -translator: -date: 2017-07-21 00:00:00 +0000 -lang: en ---- - -We are very pleased to announce you that Ruby Prize will be held this year! - -The Ruby Prize is given to recognize the efforts of remarkable activities and -achievements in the Ruby Community. The prize will be awarded by the executive -committee comprised of three parties, the Ruby Association, Nihon Ruby no Kai -and Matsue City. - -The Ruby Prize winner and final nominee (1-2 people) will receive an award at the -RubyWorld Conference 2017, to be held in Matsue, Japan on November 1st & 2nd. - -In addition, the Ruby Prize winner will also be awarded 1 million yen. Yay! - -Nominees will be selected by the following: - -* Recommendations from the "Prize Member" executive committee -* Recommendations from the general public (you). - -Please see below for more details. - -[Nominations now being accepted for Ruby Prize 2017](http://www.ruby.or.jp/rubyprize2017/about_en.html) diff --git a/fa/news/_posts/2019-03-31-support-of-ruby-2-3-has-ended.md b/fa/news/_posts/2019-03-31-support-of-ruby-2-3-has-ended.md new file mode 100644 index 0000000000..53be592e17 --- /dev/null +++ b/fa/news/_posts/2019-03-31-support-of-ruby-2-3-has-ended.md @@ -0,0 +1,37 @@ +--- +layout: news_post +title: "پشتیبانی از روبی ۲٫۳ به پایان رسید" +author: "antonpaisov" +translator: "Goudarz Jafari" +date: 2019-03-31 00:00:00 +0000 +lang: fa +--- + +ما اعلام میکنیم که تمام پشتیبانی از سری روبی ۲٫۳ به پایان رسیده است. + +After the release of Ruby 2.3.7 on March 28, 2018, +the support of the Ruby 2.3 series was in the security maintenance phase. +Now, after one year has passed, this phase has ended. +Therefore, on March 31, 2019, all support of the Ruby 2.3 series ends. +Security and bug fixes from more recent Ruby versions will no longer be +backported to 2.3. There won't be any patches of 2.3 either. +We highly recommend that you upgrade to Ruby 2.6 or 2.5 as soon as possible. + +## درباره نسخههای روبی در حال حاضر پشتیبانی شده + +### سری روبی ۲٫۶ + +در حال حاضر در فاز نگهداری عادی است. +ما مشکلات را برطرف میکنیم و هر زمان نیاز هست آن را منتشر میکنیم. و اگر یک مسئله امنیتی بحرانی پیدا شود، ما یک راه حل فوری برای آن عرضه خواهیم کرد. + +### سری روبی ۲٫۵ + +در حال حاضر در فاز نگهداری عادی است. +ما مشکلات را برطرف میکنیم و هر زمان نیاز هست آن را منتشر میکنیم. و اگر یک مسئله امنیتی بحرانی پیدا شود، ما یک راه حل فوری برای آن عرضه خواهیم کرد. + +### سری روبی ۲٫۴ + +در حال حاضر در مرحله نگهداری امنیتی است. +We will never backport any bug fixes to 2.4 except security fixes. +If a critical security issue is found, we will release an urgent fix for it. +We are planning to end the support of the Ruby 2.4 series on March 31, 2020. diff --git a/fa/news/_posts/2019-04-01-ruby-2-4-6-released.md b/fa/news/_posts/2019-04-01-ruby-2-4-6-released.md new file mode 100644 index 0000000000..d897a61d6a --- /dev/null +++ b/fa/news/_posts/2019-04-01-ruby-2-4-6-released.md @@ -0,0 +1,62 @@ +--- +layout: news_post +title: "Ruby 2.4.6 Released" +author: "usa" +translator: +date: 2019-04-01 06:00:00 +0000 +lang: fa +--- + +Ruby 2.4.6 has been released. + +This release includes about 20 bug fixes after the previous release, and also includes several security fixes. +Please check the topics below for details. + +* [Multiple vulnerabilities in RubyGems](/en/news/2019/03/05/multiple-vulnerabilities-in-rubygems/) + +See the [commit log](https://github.com/ruby/ruby/compare/v2_4_5...v2_4_6) for details. + +After this release, we will end the normal maintenance phase of Ruby 2.4, +and start the security maintenance phase of it. +This means that after the release of 2.4.6 we will never backport any bug fixes +to 2.4 except security fixes. +The term of the security maintenance phase is scheduled for 1 year. +By the end of this term, official support of Ruby 2.4 will be over. +Therefore, we recommend that you start planning to upgrade to Ruby 2.6 or 2.5. + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.tar.bz2> + + SIZE: 12623913 bytes + SHA1: b44b5c6637a69b3b95971b1937ecb583dc1de568 + SHA256: 909f360debed1f22fdcfc9f5335c6eaa0713198db4a6c13bab426f8b89b28b02 + SHA512: 292802984e5cff6d526d817bde08216fe801d255c4cede0646e450f22d4a3a81ae612ec5d193dcc2a888e3e98b2531af845b6b863a2952bcf3fb863f95368bcf + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.tar.gz> + + SIZE: 15880585 bytes + SHA1: 3bc2d9ab3381887c57e0fb7937dc14e9f419f06c + SHA256: de0dc8097023716099f7c8a6ffc751511b90de7f5694f401b59f2d071db910be + SHA512: 7eb7720961e98e22e4335c38eeead9db96d049ef3ac1da437769b98fee7a10feb092643ce75822a2fe3bd5fd94938417ab5c2de7c6056afe0abf6e4cf03ca282 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.tar.xz> + + SIZE: 10005544 bytes + SHA1: 86a4fa22cb3547005ec4bfcf77489a4254226187 + SHA256: 25da31b9815bfa9bba9f9b793c055a40a35c43c6adfb1fdbd81a09099f9b529c + SHA512: eafb2257747f99e2ed262af142e71175b70f7cceaa4d1253b92c8337f075a9a58a2d93b029d75e11a9b124f112a8f0983273b2b30afc147b5cf71a8dbb5fa0ba + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.zip> + + SIZE: 17469891 bytes + SHA1: 0e55d231c0e119304e077e42923ce6a1c3daa1d1 + SHA256: c5de9f11d4b7608d57139b96f7bc94899bb2fc9dee2e192c8951f6647a9d60f7 + SHA512: cfa779cdb970dfd35dc2a97951310cb3cde1d380b040c283fda6609c591039817a2847ab7174f7a9ee7f7adbb610709b57914bb26e5c015a20d5fe880c569855 + +## Release Comment + +Sorry for making you wait for a long time. +Thanks to everyone who helped with this release. + +The maintenance of Ruby 2.4, including this release, is based on the “Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2019-04-17-ruby-2-6-3-released.md b/fa/news/_posts/2019-04-17-ruby-2-6-3-released.md new file mode 100644 index 0000000000..cfe4e0ba52 --- /dev/null +++ b/fa/news/_posts/2019-04-17-ruby-2-6-3-released.md @@ -0,0 +1,51 @@ +--- +layout: news_post +title: "Ruby 2.6.3 Released" +author: "naruse" +translator: +date: 2019-04-17 00:00:00 +0000 +lang: en +--- + +Ruby 2.6.3 has been released. + +This release adds support for New Japanese Era "令和" (Reiwa). +It updates the Unicode version to 12.1 beta ([#15195](https://bugs.ruby-lang.org/issues/15195)) and updates the date library ([#15742](https://bugs.ruby-lang.org/issues/15742)). + +This release also includes some bug fixes. +See the [commit logs](https://github.com/ruby/ruby/compare/v2_6_2...v2_6_3) for details. + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz> + + SIZE: 16784748 bytes + SHA1: 2347ed6ca5490a104ebd5684d2b9b5eefa6cd33c + SHA256: 577fd3795f22b8d91c1d4e6733637b0394d4082db659fccf224c774a2b1c82fb + SHA512: 8503b86da60e38da4f1a1553b2570d4125c1823280e6fb6d07825a0e92dd7b628e13147ebde085702cbf5c5eddfe7fa5a2445996bc29164196a53bc917b02112 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.zip> + + SIZE: 20611578 bytes + SHA1: 85e9ffe707fb1c1eb4131c953530bb01105a5948 + SHA256: 5ef6b8e5b5f242d41e4b3d9ab21a40d3f494dfca42b00b25ab8fd3122325fe2d + SHA512: 5c87e1eda0002e95684c08ea4eb55b5ce1941dd6304806117647c0bd44ab0714d50fe3b24c322a4f5978286a5442ceaa2d141ebe7cfe07198e0a0b876af6c004 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.bz2> + + SIZE: 14509165 bytes + SHA1: aed3bd3c5346b3b85a6b184bb320465d98994fe3 + SHA256: dd638bf42059182c1d04af0d5577131d4ce70b79105231c4cc0a60de77b14f2e + SHA512: c63c3f527bef88922345f4abb4b9ad467117b63f2132e41722ea6b4234cec3446626c3338e673065a06d2894feee92472807c284cbe613a442c8fda234ea7f88 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.xz> + + SIZE: 11904360 bytes + SHA1: ee231856cee812cfc67440d643f7451857a760c9 + SHA256: 11a83f85c03d3f0fc9b8a9b6cad1b2674f26c5aaa43ba858d4b0fcc2b54171e1 + SHA512: 959a613f5cf5b3185a1d7a7ba0e1921166b3930f30461b391b1c9fcfe396f56dc3c736123dfc7b4e72c32a97dc5a1eb1fd7f09bcc3793a3c5526f6644ba421c8 + +## Release Comment + +Many committers, developers, and users who provided bug reports helped us make this release. +Thanks for their contributions. diff --git a/fa/news/_posts/2019-04-23-move-to-git-from-svn.md b/fa/news/_posts/2019-04-23-move-to-git-from-svn.md new file mode 100644 index 0000000000..87beadd995 --- /dev/null +++ b/fa/news/_posts/2019-04-23-move-to-git-from-svn.md @@ -0,0 +1,40 @@ +--- +layout: news_post +title: "Ruby Repository Moved to Git from Subversion" +author: "hsbt" +translator: +date: 2019-04-23 00:00:00 +0000 +lang: en +--- + +Today, the canonical repository of the Ruby programming language was moved to Git from Subversion. + +The web interface for the new repository is [https://git.ruby-lang.org](https://git.ruby-lang.org), and is provided by cgit. We can keep the commit hash from the contributor on the Ruby repository directly. + +## Development policy + +* We don't use a topic branch on cgit. +* The GitHub repository will still be just a mirror. We don't use the "Merge pull request" feature. +* The ruby_2_4, ruby_2_5, and ruby_2_6 branches will continue to use SVN. We don't push anything to these branches on cgit. +* Starting with ruby_2_7, we'll use cgit to develop stable branches. +* We don't use merge commits. + +## Special Thanks + +* k0kubun + + k0kubun aggressively developed toolchains related to release and backport workflows and also updated the hook script for git. + +* naruse + + naruse updated the feature changes for Ruby CI and Redmine (bugs.ruby-lang.org). + +* mame + + mame created the commit notification script for slack. + +## Future Work + +We still have to complete some tasks. If you find an issue related to the Git migration, please file it to [https://bugs.ruby-lang.org/issues/14632](https://bugs.ruby-lang.org/issues/14632). + +Enjoy! diff --git a/fa/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md b/fa/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md new file mode 100644 index 0000000000..9eeaf38063 --- /dev/null +++ b/fa/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md @@ -0,0 +1,130 @@ +--- +layout: news_post +title: "Ruby 2.7.0-preview1 Released" +author: "naruse" +translator: +date: 2019-05-30 00:00:00 +0000 +lang: en +--- + +We are pleased to announce the release of Ruby 2.7.0-preview1. + +A preview version is released to gather feedback for the final release planned to release on December. It introduces a number of new features and performance improvements, most notably: + +* Compaction GC +* Pattern Matching +* REPL improvement + +## Compaction GC + +This release introduces Compaction GC which can defragment a fragmented memory space. + +Some multithread Ruby programs may cause memory fragmentation, leading to high memory usage and degraded speed. + +The `GC.compact` method is introduced for compacting the heap. This function compacts live objects in the heap so that fewer pages may be used, and the heap may be more CoW friendly. [#15626](https://bugs.ruby-lang.org/issues/15626) + +## Pattern Matching [Experimental] + +Pattern matching, widely used feature in functional programming languages, is introduced as an experimental feature. [#14912](https://bugs.ruby-lang.org/issues/14912) +It can traverse a given object and assign its value if it matches a pattern. + +```ruby +case JSON.parse('{...}', symbolize_names: true) +in {name: "Alice", children: [{name: "Bob", age: age}]} + p age + ... +end +``` + +For more details, please see [Pattern matching - New feature in Ruby 2.7](https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7). + +## REPL improvement + +`irb`, bundled interactive environment (REPL; Read-Eval-Print-Loop), now supports multi-line editing. It's powered by `reline`, `readline` compatible pure Ruby implementation. +It also provides rdoc integration. In `irb` you can display the reference for a given class, module, or method. [#14683](https://bugs.ruby-lang.org/issues/14683), [#14787](https://bugs.ruby-lang.org/issues/14787), [#14918](https://bugs.ruby-lang.org/issues/14918) +Besides, source lines shown at `binding.irb` and inspect results for core-class objects are now colorized. + +<video autoplay="autoplay" controls="controls" muted="muted" width="576" height="259"> + <source src="https://cache.ruby-lang.org/pub/media/irb_improved_with_key_take2.mp4" type="video/mp4"> +</video> + +## Other Notable New Features + +* A method reference operator, <code>.:</code>, is introduced as an experimental feature. [#12125]( https://bugs.ruby-lang.org/issues/12125), [#13581]( https://bugs.ruby-lang.org/issues/13581) + +* Numbered parameter as the default block parameter is introduced as an experimental feature. [#4475](https://bugs.ruby-lang.org/issues/4475) + +* A beginless range is experimentally introduced. It might not be as useful + as an endless range, but would be good for DSL purpose. [#14799](https://bugs.ruby-lang.org/issues/14799) + + ary[..3] # identical to ary[0..3] + rel.where(sales: ..100) + +* `Enumerable#tally` is added. It counts the occurrence of each element. + + ["a", "b", "c", "b"].tally + #=> {"a"=>1, "b"=>2, "c"=>1} + +## Performance improvements + +* JIT [Experimental] + + * JIT-ed code is recompiled to less-optimized code when an optimization assumption is invalidated. + + * Method inlining is performed when a method is considered as pure. This optimization is still experimental and many methods are NOT considered as pure yet. + + * Default value of `--jit-min-calls` is changed from 5 to 10,000 + + * Default value of `--jit-max-cache` is changed from 1,000 to 100 + +## Other notable changes since 2.6 + +* `Proc.new` and `proc` with no block in a method called with a block is warned now. + +* `lambda` with no block in a method called with a block errs. + +* Update Unicode version and Emoji version from 11.0.0 to 12.0.0. [[Feature #15321]](https://bugs.ruby-lang.org/issues/15321) + +* Update Unicode version to 12.1.0, adding support for U+32FF SQUARE ERA NAME REIWA. [[Feature #15195]](https://bugs.ruby-lang.org/issues/15195) + +* `Date.jisx0301`, `Date#jisx0301`, and `Date.parse` provisionally support the new Japanese era as an informal extension, until the new JIS X 0301 is issued. [[Feature #15742]](https://bugs.ruby-lang.org/issues/15742) + +* Require compilers to support C99 [[Misc #15347]](https://bugs.ruby-lang.org/issues/15347) + * Details of our dialect: <https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/C99> + +See [NEWS](https://github.com/ruby/ruby/blob/v2_7_0_preview1/NEWS) or [commit logs](https://github.com/ruby/ruby/compare/v2_6_0...v2_7_0_preview1) for more details. + +With those changes, [1727 files changed, 76022 insertions(+), 60286 deletions(-)](https://github.com/ruby/ruby/compare/v2_6_0...v2_7_0_preview1) since Ruby 2.6.0! + +Enjoy programming with Ruby 2.7! + +## Download + +* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.gz> + + SIZE: 16021286 bytes + SHA1: 2fbecf42b03a9d4391b81de42caec7fa497747cf + SHA256: c44500af4a4a0c78a0b4d891272523f28e21176cf9bc1cc108977c5f270eaec2 + SHA512: f731bc9002edd3a61a4955e4cc46a75b5ab687a19c7964f02d3b5b07423d2360d25d7be5df340e884ca9945e3954e68e5eb11b209b65b3a687c71a1abc24b91f +* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.zip> + + SIZE: 20283343 bytes + SHA1: 7488346fa8e58203a38158752d03c8be6b1da65b + SHA256: fdf25573e72e1769b51b8d541d0e1a894a5394dbfdf1b08215aa093079cca64c + SHA512: b3b1f59dce94c242ef88a4e68381a4c3a6f90ba0af699083e5a1a00b0fb1dce580f057dad25571fe789ac9aa95aa6e9c071ebb330328dc822217ac9ea9fbeb3f +* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.bz2> + + SIZE: 14038296 bytes + SHA1: f7e70cbc2604c53a9e818a2fc59cd0e2d6c859fa + SHA256: d45b4a1712ec5c03a35e85e33bcb57c7426b856d35e4f04f7975ae3944d09952 + SHA512: a36b241fc1eccba121bb7c2cc5675b11609e0153e25a3a8961b67270c05414b1aa669ce5d4a5ebe4c6b2328ea2b8f8635fbba046b70de103320b3fdcb3d51248 +* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.xz> + + SIZE: 11442988 bytes + SHA1: 45e467debc194847a9e3afefb20b11e6dc28ea31 + SHA256: 8c546df3345398b3edc9d0ab097846f033783d33762889fd0f3dc8bb465c3354 + SHA512: d416e90bfa3e49cc0675c4c13243c8ec319b7a0836add1bd16bd7662d09eaf46656d26e772ef3b097e10779896e643edd8a6e4f885147e3235257736adfdf3b5 + +## What is Ruby + +Ruby was first developed by Matz (Yukihiro Matsumoto) in 1993, and is now developed as Open Source. It runs on multiple platforms and is used all over the world especially for web development. From 2403829b0269610f1aa1c0c00140955156185697 Mon Sep 17 00:00:00 2001 From: Goudarz Jafari <goudarz.jafari@gmail.com> Date: Wed, 5 Jun 2019 01:05:56 +0430 Subject: [PATCH 03/10] Update _config.yml --- _config.yml | 115 +--------------------------------------------------- 1 file changed, 2 insertions(+), 113 deletions(-) diff --git a/_config.yml b/_config.yml index 540341b6a1..76abaee0c8 100644 --- a/_config.yml +++ b/_config.yml @@ -99,21 +99,6 @@ locales: url: /es/security - text: Acerca de Ruby url: /es/about - fa: - - text: دانلودها - url: /fa/downloads - - text: مستندات - url: /fa/documentation - - text: کتابخانهها - url: /fa/libraries - - text: جامعه - url: /fa/community - - text: اخبار - url: /fa/news - - text: امنیت - url: /fa/security - - text: درباره روبی - url: /fa/about fr: - text: Téléchargements url: /fr/downloads @@ -308,8 +293,6 @@ locales: cx_id: "013598269713424429640:g5orptiw95w" es: text: Buscar - fa: - text: جستجو fr: text: Recherche cx_id: "016749562256550695330:efcmgh3a1ac" @@ -343,7 +326,6 @@ locales: de: "Der beste Freund eines Programmierers" en: "A Programmer's Best Friend" es: "El mejor amigo de un desarrollador" - fa: "بهترین دوست یک برنامه نویس" fr: "A Programmer's Best Friend" id: "Sahabat Terbaik Programmer" it: "Il migliore amico dei programmatori" @@ -362,7 +344,6 @@ locales: de: "Ruby" en: "Ruby" es: "Ruby" - fa: "روبی" fr: "Ruby" id: "Ruby" it: "Ruby" @@ -381,7 +362,6 @@ locales: de: [Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] en: [January, February, March, April, May, June, July, August, September, October, November, December] es: [Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] - fa: [ژانویه, فوریه, مارس, آوریل, مه, ژوئن, جولای, اوت, سپتامبر, اکتبر, نوامبر, دسامبر] fr: [Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre] id: [Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember] it: [Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre] @@ -396,7 +376,6 @@ locales: de: "Geschrieben von AUTHOR am %-d.%-m.%Y" en: "Posted by AUTHOR on %-d %b %Y" es: "Publicado por AUTHOR el %Y-%m-%d" - fa: "ارسال شده توسط AUTHOR در تاریخ %-d %b %Y" fr: "Posté par AUTHOR le %Y-%m-%d" id: "Ditulis oleh AUTHOR tanggal %Y-%m-%d" it: "Inserito da AUTHOR il %Y-%m-%d" @@ -415,7 +394,6 @@ locales: de: "Übersetzt von" en: "Translated by" es: "Traducción de" - fa: "ترجمه شده توسط" fr: "Traduit par" id: "Diterjemahkan oleh" it: "Tradotto da" @@ -446,10 +424,6 @@ locales: title: Noticias de Ruby por RSS description: Las últimas noticias de ruby-lang.org en español. lang_code: es-ES - fa: - title: اخبار روبی - description: آخرین اخبار از ruby-lang.org. - lang_code: fa-IR fr: title: Actualités de Ruby-lang description: Les dernières news sur ruby-lang.org. @@ -548,18 +522,6 @@ locales: monthly_archives: Noticias por mes yearly_archive_link: "Noticias de %Y" monthly_archive_link: "%B %Y" - fa: - other_news: سایر اخبار - more_news: اخبار بیشتر... - continue: در ادامه بخوانید... - back_to_year: "بازگشت به بایگانی %Y" - recent_news: آخرین اخبار - yearly_archive_title: "بایگانی %Y" - monthly_archive_title: "بایگانی %Y %B" - yearly_archives: بایگانی سالیانه - monthly_archives: بایگانی ماهانه - yearly_archive_link: "بایگانی %Y" - monthly_archive_link: "%B %Y" fr: other_news: Autres actualités more_news: Plus d’actualités... @@ -942,66 +904,6 @@ locales: recent_news: text: En español url: /es/feeds/news.rss - fa: - get_started: - text: <strong>شروع کنید</strong>، آسان است! - try_ruby: - text: روبی را امتحان کن! (در مرورگر خود) - <<: *try_ruby - quickstart: - text: روبی در ۲۰ دقیقه - url: /fa/documentation/quickstart/ - ruby_from_other_languages: - text: روبی از زبانهای دیگر - url: /fa/documentation/ruby-from-other-languages/ - explore: - text: <strong>کاوش</strong> در دنیای جدید… - documentation: - text: مستندات - url: /fa/documentation/ - # books: - # text: کتابها - rubybib: - text: تحقیقات دانشگاهی - <<: *rubybib - libraries: - text: کتابخانهها - url: /fa/libraries/ - success_stories: - text: داستانهای موفقیت - url: /fa/documentation/success-stories/ - participate: - text: <strong>مشارکت</strong> در یک جامعه دوستانه و رو به رشد. - mailing_lists: - text: فهرستهای ایمیل - url: /fa/community/mailing-lists/ - description: | - در مورد روبی با برنامه نویسان سراسر جهان صحبت کنید. - user_groups: - text: گروههای کاربری - url: /fa/community/user-groups/ - description: | - با Rubyists در منطقه خود تماس بگیرید. - weblogs: - text: وبلاگها - url: /fa/community/weblogs/ - description: | - اطلاعات بیشتر در مورد آنچه که الان در جامعه روبی اتفاق میافتد. - ruby_core: - text: هسته روبی - url: /fa/community/ruby-core/ - description: | - Help polish the rough edges of the latest Ruby. - issue_tracking: - text: ردیابی موضوع - url: https://bugs.ruby-lang.org/ - description: | - گزارش یا کمک به حل مسائل در روبی. - syndicate: - text: سندیکا - recent_news: - text: آخرین اخبار (آراساس) - url: /fa/feeds/news.rss fr: get_started: text: <strong>Lancez-vous</strong>, c’est facile ! @@ -1742,15 +1644,6 @@ locales: subscribe: Subscribe unsubscribe: Unsubscribe submit: Enviar - fa: - list: Mailing List - first_name: نام - last_name: نام خانوادگی - email: آدرس ایمیل - action: عمل - subscribe: اشتراک - unsubscribe: لغو اشتراک - submit: ثبت فرم fr: list: Liste de diffusion first_name: Prénom @@ -1864,8 +1757,7 @@ locales: bg: "Този сайт на други езици:" de: "Diese Website in anderen Sprachen:" en: "This site in other languages:" - fa: "این سایت به زبانهای دیگر:" - fr: "Autres langues disponibles :" + fr: "Autres langues disponibles :" id: "Situs ini dalam bahasa lain:" it: "Questo sito in altre lingue:" pl: "Ta strona w innych językach:" @@ -1890,9 +1782,6 @@ locales: Si quieres contribuir, por favor hazlo en <a href="https://github.com/ruby/www.ruby-lang.org/">GitHub</a> o contacta a nuestro <a href="mailto:webmaster@ruby-lang.org">webmaster</a> si tienes preguntas o comentarios. - fa: | - <a href="/fa/about/website/">این وبسایت</a> - با افتخار توسط اعضای جامعه روبی نگهداری میشود. fr: | Ce site est propulsé par Ruby et <a href="http://www.jekyllrb.com/">Jekyll</a>. Il est fièrement maintenu par des membres de la communauté Ruby. @@ -1924,7 +1813,7 @@ locales: ru: | <a href="/ru/about/website/">Этот сайт</a> с гордостью поддерживается членами сообщества Ruby. tr: | - <a href="/en/about/website/">Bu web sitesi</a> + <a href="/tr/about/website/">Bu web sitesi</a> Ruby topluluğunun üyeleri tarafından gururla sürdürülmektedir. vi: | Website này được tạo ra với Ruby sử dụng <a href="http://www.jekyllrb.com/">Jekyll</a>. From ed63b134ab663cf6baf4b93ea587ad14142be616 Mon Sep 17 00:00:00 2001 From: Goudarz <goudarz.jafari@gmail.com> Date: Fri, 18 Oct 2019 01:57:16 +0330 Subject: [PATCH 04/10] Update Persian translation and Fix RTL style --- _config.yml | 111 +++++++++++++ _plugins/translation_status.rb | 2 +- ...29-multiple-vulnerabilities-in-rubygems.md | 59 ------- ...09-14-json-heap-exposure-cve-2017-14064.md | 39 ----- ...ssl-asn1-buffer-underrun-cve-2017-14033.md | 40 ----- .../_posts/2017-09-14-ruby-2-2-8-released.md | 57 ------- .../_posts/2017-09-14-ruby-2-3-5-released.md | 68 -------- .../_posts/2017-09-14-ruby-2-4-2-released.md | 67 -------- ...4-sprintf-buffer-underrun-cve-2017-0898.md | 34 ---- ...scape-sequence-injection-cve-2017-10784.md | 36 ----- ...2017-10-10-ruby-2-5-0-preview1-released.md | 79 --------- ...et-ftp-command-injection-cve-2017-17405.md | 40 ----- .../_posts/2017-12-14-ruby-2-2-9-released.md | 53 ------- .../_posts/2017-12-14-ruby-2-3-6-released.md | 54 ------- .../_posts/2017-12-14-ruby-2-4-3-released.md | 53 ------- .../2017-12-14-ruby-2-5-0-rc1-released.md | 90 ----------- .../_posts/2017-12-25-ruby-2-5-0-released.md | 130 --------------- .../2017-12-27-fukuoka-ruby-award-2018.md | 75 --------- ...17-multiple-vulnerabilities-in-rubygems.md | 61 ------- ...2018-02-24-ruby-2-6-0-preview1-released.md | 106 ------------- ...-buffer-under-read-unpack-cve-2018-8778.md | 37 ----- ...nse-splitting-in-webrick-cve-2017-17742.md | 35 ---- ...ge-request-dos-in-webrick-cve-2018-8777.md | 35 ---- ...-28-poisoned-nul-byte-dir-cve-2018-8780.md | 37 ----- ...soned-nul-byte-unixsocket-cve-2018-8779.md | 40 ----- .../_posts/2018-03-28-ruby-2-2-10-released.md | 60 ------- .../_posts/2018-03-28-ruby-2-3-7-released.md | 67 -------- .../_posts/2018-03-28-ruby-2-4-4-released.md | 60 ------- .../_posts/2018-03-28-ruby-2-5-1-released.md | 60 ------- ...-with-directory-traversal-cve-2018-6914.md | 38 ----- ...2018-05-31-ruby-2-6-0-preview2-released.md | 127 --------------- ...018-06-20-support-of-ruby-2-2-has-ended.md | 43 ----- ...-in-some-formats-of-pack-cve-2018-16396.md | 45 ------ ...-does-not-work-correctly-cve-2018-16395.md | 60 ------- .../_posts/2018-10-17-ruby-2-3-8-released.md | 58 ------- .../_posts/2018-10-17-ruby-2-4-5-released.md | 57 ------- .../_posts/2018-10-17-ruby-2-5-2-released.md | 55 ------- .../_posts/2018-10-18-ruby-2-5-3-released.md | 55 ------- ...2018-11-06-ruby-2-6-0-preview3-released.md | 130 --------------- fa/news/_posts/2018-11-08-snap.md | 63 -------- .../2018-11-29-fukuoka-ruby-award-2019.md | 63 -------- .../2018-12-06-ruby-2-6-0-rc1-released.md | 140 ---------------- .../2018-12-15-ruby-2-6-0-rc2-released.md | 144 ----------------- .../_posts/2018-12-25-ruby-2-6-0-released.md | 150 ------------------ .../_posts/2019-04-01-ruby-2-4-6-released.md | 62 -------- .../_posts/2019-04-17-ruby-2-6-3-released.md | 51 ------ .../_posts/2019-04-23-move-to-git-from-svn.md | 40 ----- ...2019-05-30-ruby-2-7-0-preview1-released.md | 130 --------------- stylesheets/rtl.css | 9 ++ 49 files changed, 121 insertions(+), 3084 deletions(-) delete mode 100644 fa/news/_posts/2017-08-29-multiple-vulnerabilities-in-rubygems.md delete mode 100644 fa/news/_posts/2017-09-14-json-heap-exposure-cve-2017-14064.md delete mode 100644 fa/news/_posts/2017-09-14-openssl-asn1-buffer-underrun-cve-2017-14033.md delete mode 100644 fa/news/_posts/2017-09-14-ruby-2-2-8-released.md delete mode 100644 fa/news/_posts/2017-09-14-ruby-2-3-5-released.md delete mode 100644 fa/news/_posts/2017-09-14-ruby-2-4-2-released.md delete mode 100644 fa/news/_posts/2017-09-14-sprintf-buffer-underrun-cve-2017-0898.md delete mode 100644 fa/news/_posts/2017-09-14-webrick-basic-auth-escape-sequence-injection-cve-2017-10784.md delete mode 100644 fa/news/_posts/2017-10-10-ruby-2-5-0-preview1-released.md delete mode 100644 fa/news/_posts/2017-12-14-net-ftp-command-injection-cve-2017-17405.md delete mode 100644 fa/news/_posts/2017-12-14-ruby-2-2-9-released.md delete mode 100644 fa/news/_posts/2017-12-14-ruby-2-3-6-released.md delete mode 100644 fa/news/_posts/2017-12-14-ruby-2-4-3-released.md delete mode 100644 fa/news/_posts/2017-12-14-ruby-2-5-0-rc1-released.md delete mode 100644 fa/news/_posts/2017-12-25-ruby-2-5-0-released.md delete mode 100644 fa/news/_posts/2017-12-27-fukuoka-ruby-award-2018.md delete mode 100644 fa/news/_posts/2018-02-17-multiple-vulnerabilities-in-rubygems.md delete mode 100644 fa/news/_posts/2018-02-24-ruby-2-6-0-preview1-released.md delete mode 100644 fa/news/_posts/2018-03-28-buffer-under-read-unpack-cve-2018-8778.md delete mode 100644 fa/news/_posts/2018-03-28-http-response-splitting-in-webrick-cve-2017-17742.md delete mode 100644 fa/news/_posts/2018-03-28-large-request-dos-in-webrick-cve-2018-8777.md delete mode 100644 fa/news/_posts/2018-03-28-poisoned-nul-byte-dir-cve-2018-8780.md delete mode 100644 fa/news/_posts/2018-03-28-poisoned-nul-byte-unixsocket-cve-2018-8779.md delete mode 100644 fa/news/_posts/2018-03-28-ruby-2-2-10-released.md delete mode 100644 fa/news/_posts/2018-03-28-ruby-2-3-7-released.md delete mode 100644 fa/news/_posts/2018-03-28-ruby-2-4-4-released.md delete mode 100644 fa/news/_posts/2018-03-28-ruby-2-5-1-released.md delete mode 100644 fa/news/_posts/2018-03-28-unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914.md delete mode 100644 fa/news/_posts/2018-05-31-ruby-2-6-0-preview2-released.md delete mode 100644 fa/news/_posts/2018-06-20-support-of-ruby-2-2-has-ended.md delete mode 100644 fa/news/_posts/2018-10-17-not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396.md delete mode 100644 fa/news/_posts/2018-10-17-openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395.md delete mode 100644 fa/news/_posts/2018-10-17-ruby-2-3-8-released.md delete mode 100644 fa/news/_posts/2018-10-17-ruby-2-4-5-released.md delete mode 100644 fa/news/_posts/2018-10-17-ruby-2-5-2-released.md delete mode 100644 fa/news/_posts/2018-10-18-ruby-2-5-3-released.md delete mode 100644 fa/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md delete mode 100644 fa/news/_posts/2018-11-08-snap.md delete mode 100644 fa/news/_posts/2018-11-29-fukuoka-ruby-award-2019.md delete mode 100644 fa/news/_posts/2018-12-06-ruby-2-6-0-rc1-released.md delete mode 100644 fa/news/_posts/2018-12-15-ruby-2-6-0-rc2-released.md delete mode 100644 fa/news/_posts/2018-12-25-ruby-2-6-0-released.md delete mode 100644 fa/news/_posts/2019-04-01-ruby-2-4-6-released.md delete mode 100644 fa/news/_posts/2019-04-17-ruby-2-6-3-released.md delete mode 100644 fa/news/_posts/2019-04-23-move-to-git-from-svn.md delete mode 100644 fa/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md diff --git a/_config.yml b/_config.yml index 76abaee0c8..4452425b8f 100644 --- a/_config.yml +++ b/_config.yml @@ -99,6 +99,21 @@ locales: url: /es/security - text: Acerca de Ruby url: /es/about + fa: + - text: دانلودها + url: /fa/downloads + - text: مستندات + url: /fa/documentation + - text: کتابخانهها + url: /fa/libraries + - text: جامعه + url: /fa/community + - text: اخبار + url: /fa/news + - text: امنیت + url: /fa/security + - text: درباره روبی + url: /fa/about fr: - text: Téléchargements url: /fr/downloads @@ -293,6 +308,8 @@ locales: cx_id: "013598269713424429640:g5orptiw95w" es: text: Buscar + fa: + text: جستجو fr: text: Recherche cx_id: "016749562256550695330:efcmgh3a1ac" @@ -326,6 +343,7 @@ locales: de: "Der beste Freund eines Programmierers" en: "A Programmer's Best Friend" es: "El mejor amigo de un desarrollador" + fa: "بهترین دوست برنامه نویس" fr: "A Programmer's Best Friend" id: "Sahabat Terbaik Programmer" it: "Il migliore amico dei programmatori" @@ -344,6 +362,7 @@ locales: de: "Ruby" en: "Ruby" es: "Ruby" + fa: "روبی" fr: "Ruby" id: "Ruby" it: "Ruby" @@ -362,6 +381,7 @@ locales: de: [Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] en: [January, February, March, April, May, June, July, August, September, October, November, December] es: [Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] + fa: [ژانویه, فوریه, مارس, آوریل, مه, ژوئن, جولای, اوت, سپتامبر, اکتبر, نوامبر, دسامبر] fr: [Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre] id: [Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember] it: [Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre] @@ -376,6 +396,7 @@ locales: de: "Geschrieben von AUTHOR am %-d.%-m.%Y" en: "Posted by AUTHOR on %-d %b %Y" es: "Publicado por AUTHOR el %Y-%m-%d" + fa: "ارسال شده توسط AUTHOR در تاریخ %-d %b %Y" fr: "Posté par AUTHOR le %Y-%m-%d" id: "Ditulis oleh AUTHOR tanggal %Y-%m-%d" it: "Inserito da AUTHOR il %Y-%m-%d" @@ -394,6 +415,7 @@ locales: de: "Übersetzt von" en: "Translated by" es: "Traducción de" + fa: "ترجمه شده توسط" fr: "Traduit par" id: "Diterjemahkan oleh" it: "Tradotto da" @@ -424,6 +446,10 @@ locales: title: Noticias de Ruby por RSS description: Las últimas noticias de ruby-lang.org en español. lang_code: es-ES + fa: + title: اخبار روبی + description: آخرین اخبار از ruby-lang.org. + lang_code: fa-IR fr: title: Actualités de Ruby-lang description: Les dernières news sur ruby-lang.org. @@ -522,6 +548,18 @@ locales: monthly_archives: Noticias por mes yearly_archive_link: "Noticias de %Y" monthly_archive_link: "%B %Y" + fa: + other_news: سایر اخبار + more_news: اخبار بیشتر... + continue: در ادامه بخوانید... + back_to_year: "بازگشت به بایگانی %Y" + recent_news: آخرین اخبار + yearly_archive_title: "بایگانی %Y" + monthly_archive_title: "بایگانی %Y %B" + yearly_archives: بایگانی سالیانه + monthly_archives: بایگانی ماهانه + yearly_archive_link: "بایگانی %Y" + monthly_archive_link: "%B %Y" fr: other_news: Autres actualités more_news: Plus d’actualités... @@ -904,6 +942,66 @@ locales: recent_news: text: En español url: /es/feeds/news.rss + fa: + get_started: + text: <strong>شروع کنید</strong>، آسان است! + try_ruby: + text: روبی را امتحان کن! (در مرورگر خود) + <<: *try_ruby + quickstart: + text: روبی در ۲۰ دقیقه + url: /fa/documentation/quickstart/ + ruby_from_other_languages: + text: روبی از زبانهای دیگر + url: /fa/documentation/ruby-from-other-languages/ + explore: + text: <strong>کاوش</strong> در دنیای جدید… + documentation: + text: مستندات + url: /fa/documentation/ + # books: + # text: کتابها + rubybib: + text: تحقیقات دانشگاهی + <<: *rubybib + libraries: + text: کتابخانهها + url: /fa/libraries/ + success_stories: + text: داستانهای موفقیت + url: /fa/documentation/success-stories/ + participate: + text: <strong>مشارکت</strong> در یک جامعه دوستانه و رو به رشد. + mailing_lists: + text: فهرستهای ایمیل + url: /fa/community/mailing-lists/ + description: | + در مورد روبی با برنامه نویسان سراسر جهان صحبت کنید. + user_groups: + text: گروههای کاربری + url: /fa/community/user-groups/ + description: | + با Rubyists در منطقه خود تماس بگیرید. + weblogs: + text: وبلاگها + url: /fa/community/weblogs/ + description: | + اطلاعات بیشتر در مورد آنچه که الان در جامعه روبی اتفاق میافتد. + ruby_core: + text: هسته روبی + url: /fa/community/ruby-core/ + description: | + Help polish the rough edges of the latest Ruby. + issue_tracking: + text: ردیابی موضوع + url: https://bugs.ruby-lang.org/ + description: | + گزارش یا کمک به حل مسائل در روبی. + syndicate: + text: سندیکا + recent_news: + text: آخرین اخبار (آراساس) + url: /fa/feeds/news.rss fr: get_started: text: <strong>Lancez-vous</strong>, c’est facile ! @@ -1644,6 +1742,15 @@ locales: subscribe: Subscribe unsubscribe: Unsubscribe submit: Enviar + fa: + list: Mailing List + first_name: نام + last_name: نام خانوادگی + email: آدرس ایمیل + action: عمل + subscribe: اشتراک + unsubscribe: لغو اشتراک + submit: ثبت فرم fr: list: Liste de diffusion first_name: Prénom @@ -1757,6 +1864,7 @@ locales: bg: "Този сайт на други езици:" de: "Diese Website in anderen Sprachen:" en: "This site in other languages:" + fa: "این سایت به زبانهای دیگر:" fr: "Autres langues disponibles :" id: "Situs ini dalam bahasa lain:" it: "Questo sito in altre lingue:" @@ -1782,6 +1890,9 @@ locales: Si quieres contribuir, por favor hazlo en <a href="https://github.com/ruby/www.ruby-lang.org/">GitHub</a> o contacta a nuestro <a href="mailto:webmaster@ruby-lang.org">webmaster</a> si tienes preguntas o comentarios. + fa: | + <a href="/fa/about/website/">این وبسایت</a> + با افتخار توسط اعضای جامعه روبی نگهداری میشود. fr: | Ce site est propulsé par Ruby et <a href="http://www.jekyllrb.com/">Jekyll</a>. Il est fièrement maintenu par des membres de la communauté Ruby. diff --git a/_plugins/translation_status.rb b/_plugins/translation_status.rb index 56ba749e27..04d51f3b2b 100644 --- a/_plugins/translation_status.rb +++ b/_plugins/translation_status.rb @@ -8,7 +8,7 @@ module Jekyll # Outputs HTML. module TranslationStatus - LANGS = %w[en de es id ja ko pt tr zh_cn zh_tw] + LANGS = %w[en de es fa id ja ko pt tr zh_cn zh_tw] START_DATE = '2013-04-01' OK_CHAR = '✓' diff --git a/fa/news/_posts/2017-08-29-multiple-vulnerabilities-in-rubygems.md b/fa/news/_posts/2017-08-29-multiple-vulnerabilities-in-rubygems.md deleted file mode 100644 index 9849872ba3..0000000000 --- a/fa/news/_posts/2017-08-29-multiple-vulnerabilities-in-rubygems.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: news_post -title: "Multiple vulnerabilities in RubyGems" -author: "usa" -translator: -date: 2017-08-29 12:00:00 +0000 -tags: security -lang: en ---- - -There are multiple vulnerabilities in RubyGems bundled by Ruby. -It is [reported at the official blog of RubyGems](http://blog.rubygems.org/2017/08/27/2.6.13-released.html). - -## Details - -The following vulnerabilities have been reported. - -* a DNS request hijacking vulnerability. (CVE-2017-0902) -* an ANSI escape sequence vulnerability. (CVE-2017-0899) -* a DoS vulnerability in the query command. (CVE-2017-0900) -* a vulnerability in the gem installer that allowed a malicious gem to overwrite arbitrary files. (CVE-2017-0901) - -It is strongly recommended for Ruby users to upgrade or take one of the following workarounds as soon as possible. - -## Affected Versions - -* Ruby 2.2 series: 2.2.7 and earlier -* Ruby 2.3 series: 2.3.4 and earlier -* Ruby 2.4 series: 2.4.1 and earlier -* prior to trunk revision 59672 - -## Workarounds - -If you can't upgrade Ruby itself, upgrade RubyGems to the latest version. -RubyGems 2.6.13 or later includes the fix for the vulnerabilities. - -``` -gem update --system -``` - -If you can't upgrade RubyGems, you can apply the following patches as a workaround. - -* [for Ruby 2.2.7](https://bugs.ruby-lang.org/attachments/download/6690/rubygems-2613-ruby22.patch) -* [for Ruby 2.3.4](https://bugs.ruby-lang.org/attachments/download/6691/rubygems-2613-ruby23.patch) -* for Ruby 2.4.1: need 2 patches. Apply sequentially as follows: - 1. [RubyGems 2.6.11 to 2.6.12](https://bugs.ruby-lang.org/attachments/download/6692/rubygems-2612-ruby24.patch) - 2. [RubyGems 2.6.12 to 2.6.13](https://bugs.ruby-lang.org/attachments/download/6693/rubygems-2613-ruby24.patch) - -About the trunk, update to the latest revision. - -## Credits - -This report is based on [the official blog of RubyGems](http://blog.rubygems.org/2017/08/27/2.6.13-released.html). - -## History - -* Originally published at 2017-08-29 12:00:00 UTC -* Added CVE numbers at 2017-08-31 2:00:00 UTC -* Mention about upgrading Rubies at 2017-09-15 12:00:00 UTC diff --git a/fa/news/_posts/2017-09-14-json-heap-exposure-cve-2017-14064.md b/fa/news/_posts/2017-09-14-json-heap-exposure-cve-2017-14064.md deleted file mode 100644 index dd4eca25d5..0000000000 --- a/fa/news/_posts/2017-09-14-json-heap-exposure-cve-2017-14064.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: news_post -title: "CVE-2017-14064: Heap exposure vulnerability in generating JSON" -author: "usa" -translator: -date: 2017-09-14 12:00:00 +0000 -tags: security -lang: en ---- - -There is a heap exposure vulnerability in JSON bundled by Ruby. -This vulnerability has been assigned the CVE identifier [CVE-2017-14064](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14064). - -## Details - -The `generate` method of `JSON` module optionally accepts an instance of `JSON::Ext::Generator::State` class. -If a malicious instance is passed, the result may include contents of heap. - -All users running an affected release should either upgrade or use one of the workarounds immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.7 and earlier -* Ruby 2.3 series: 2.3.4 and earlier -* Ruby 2.4 series: 2.4.1 and earlier -* prior to trunk revision 58323 - -## Workaround - -The JSON library is also distributed as a gem. -If you can't upgrade Ruby itself, install JSON gem newer than version 2.0.4. - -## Credit - -Thanks to [ahmadsherif](https://hackerone.com/ahmadsherif) for reporting this issue. - -## History - -* Originally published at 2017-09-14 12:00:00 (UTC) diff --git a/fa/news/_posts/2017-09-14-openssl-asn1-buffer-underrun-cve-2017-14033.md b/fa/news/_posts/2017-09-14-openssl-asn1-buffer-underrun-cve-2017-14033.md deleted file mode 100644 index 22a45a8274..0000000000 --- a/fa/news/_posts/2017-09-14-openssl-asn1-buffer-underrun-cve-2017-14033.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: news_post -title: "CVE-2017-14033: Buffer underrun vulnerability in OpenSSL ASN1 decode" -author: "usa" -translator: -date: 2017-09-14 12:00:00 +0000 -tags: security -lang: en ---- - -There is a buffer underrun vulnerability in OpenSSL bundled by Ruby. -This vulnerability has been assigned the CVE identifier [CVE-2017-14033](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14033). - -## Details - -If a malicious string is passed to the `decode` method of `OpenSSL::ASN1`, buffer underrun may be caused and the Ruby interpreter may crash. - -All users running an affected release should either upgrade or use one of the workarounds immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.7 and earlier -* Ruby 2.3 series: 2.3.4 and earlier -* Ruby 2.4 series: 2.4.1 and earlier -* prior to trunk revision 56946 - -## Workaround - -The OpenSSL library is also distributed as a gem. -If you can't upgrade Ruby itself, install OpenSSL gem newer than version 2.0.0. -But this workaround is only available with Ruby 2.4 series. -When using Ruby 2.2 series or 2.3 series, the gem does not override the bundled version of OpenSSL. - -## Credit - -Thanks to [asac](https://hackerone.com/asac) for reporting this issue. - -## History - -* Originally published at 2017-09-14 12:00:00 (UTC) diff --git a/fa/news/_posts/2017-09-14-ruby-2-2-8-released.md b/fa/news/_posts/2017-09-14-ruby-2-2-8-released.md deleted file mode 100644 index 6488550f9c..0000000000 --- a/fa/news/_posts/2017-09-14-ruby-2-2-8-released.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.8 Released" -author: "usa" -translator: -date: 2017-09-14 12:00:00 +0000 -lang: en ---- - -Ruby 2.2.8 has been released. -This release includes several security fixes. -Please check the topics below for details. - -* [CVE-2017-0898: Buffer underrun vulnerability in Kernel.sprintf](/en/news/2017/09/14/sprintf-buffer-underrun-cve-2017-0898/) -* [CVE-2017-10784: Escape sequence injection vulnerability in the Basic authentication of WEBrick](/en/news/2017/09/14/webrick-basic-auth-escape-sequence-injection-cve-2017-10784/) -* [CVE-2017-14033: Buffer underrun vulnerability in OpenSSL ASN1 decode](/en/news/2017/09/14/openssl-asn1-buffer-underrun-cve-2017-14033/) -* [CVE-2017-14064: Heap exposure vulnerability in generating JSON](/en/news/2017/09/14/json-heap-exposure-cve-2017-14064/) -* [Multiple vulnerabilities in RubyGems](/en/news/2017/08/29/multiple-vulnerabilities-in-rubygems/) -* Updated bundled libyaml to version 0.1.7 - -Ruby 2.2 is now under the state of the security maintenance phase, until the end of the March of 2018. -After the date, maintenance of Ruby 2.2 will be ended. -We recommend you start planning migration to newer versions of Ruby, such as 2.4 or 2.3. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.bz2) - - SIZE: 13374522 bytes - SHA1: d851324bf783221108ce79343fabbcd559b9e60b - SHA256: b19085587d859baf9d7763f92e34a84632fceac5cc593ca2c0efa28ed8c6e44e - SHA512: aa1c65f76a51a57d9059a38a13a823112b53850a9e7d6f72c3f3e38d381412014521049f7065c1b00877501b3b554235135d0f308045c2a9da133c766f5b9e46 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.gz) - - SIZE: 16681654 bytes - SHA1: 15a6fca1bfe0488b24a204708a287904028aa367 - SHA256: 8f37b9d8538bf8e50ad098db2a716ea49585ad1601bbd347ef84ca0662d9268a - SHA512: b9d355232c1ca3e17b5d4dcb70f0720da75b82787e45eb4ede281290bf42643665385e55428495eb55c17f744395130b4d64ef78ca66c5a5ecb9f4c3b732fdea - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.tar.xz) - - SIZE: 10520648 bytes - SHA1: 3a25914aafedc81952899298a18f9c3a4881d2d1 - SHA256: 37eafc15037396c26870f6a6c5bcd0658d14b46cd5e191a3b56d89dd22d561b0 - SHA512: e21004bee537f0c706f4ac9526507b414ddb6a8d721e8fad8d7fe88992a4f048eb5eb79f8d8b8af2a8b331dcfa74b560490218a1acb3532c2cdb4fb4909da3c9 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.8.zip) - - SIZE: 18521461 bytes - SHA1: 3b0142bad47e29f429903f6c4ca84540764b5e93 - SHA256: 58bf98b62d21d6cc622e6ef5c7d024db0458c6860199ab4c1bf68cdc4b36fa9d - SHA512: 08cadfa72713f9e3348093c96af4c53f06f681bc29ada2d80f1c55faca6a59a3b2913aa2443bf645fea6f3840b32ce8ce894b358f972b1a295ee0860b656eb02 - -## Release Comment - -Thanks to everyone who helped with this release, especially, reports of vulnerabilities. diff --git a/fa/news/_posts/2017-09-14-ruby-2-3-5-released.md b/fa/news/_posts/2017-09-14-ruby-2-3-5-released.md deleted file mode 100644 index 624ba1528c..0000000000 --- a/fa/news/_posts/2017-09-14-ruby-2-3-5-released.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.5 Released" -author: "usa" -translator: -date: 2017-09-14 12:00:00 +0000 -lang: en ---- - -Ruby 2.3.5 has been released. - -This release includes about 70 bug fixes after the previous release, and also includes several security fixes. -Please check the topics below for details. - -* [CVE-2017-0898: Buffer underrun vulnerability in Kernel.sprintf](/en/news/2017/09/14/sprintf-buffer-underrun-cve-2017-0898/) -* [CVE-2017-10784: Escape sequence injection vulnerability in the Basic authentication of WEBrick](/en/news/2017/09/14/webrick-basic-auth-escape-sequence-injection-cve-2017-10784/) -* [CVE-2017-14033: Buffer underrun vulnerability in OpenSSL ASN1 decode](/en/news/2017/09/14/openssl-asn1-buffer-underrun-cve-2017-14033/) -* [CVE-2017-14064: Heap exposure vulnerability in generating JSON](/en/news/2017/09/14/json-heap-exposure-cve-2017-14064/) -* [Multiple vulnerabilities in RubyGems](/en/news/2017/08/29/multiple-vulnerabilities-in-rubygems/) -* Updated bundled libyaml to version 0.1.7 - -See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_5/ChangeLog) for details. - -## Known Problem - -_(This section was added at September 15, 2017.)_ - -An incompatibility has been found for Ruby 2.3.5. -Ruby 2.3.5 can not link with libgmp nor jemalloc. -We will fix this problem with the next release, but if you are facing the problem now and need to overcome it immediately, get a patch from this link: - -* [Ruby 2.4.2 and 2.3.5 cannot link with libgmp nor jemalloc](https://bugs.ruby-lang.org/issues/13899) - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.bz2) - - SIZE: 14439326 bytes - SHA1: 48302800c78ef9bbfc293ffcc4b6e2c728705bca - SHA256: f71c4b67ba1bef424feba66774dc9d4bbe02375f5787e41596bc7f923739128b - SHA512: 3ecc7c0ac10672166e1a58cfcd5ae45dfc637c22cec549a30975575cbe59ec39945d806e47661f45071962ef9404566007a982aedccb7d4241b4459cb88507df - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz) - - SIZE: 17836997 bytes - SHA1: 3247e217d6745c27ef23bdc77b6abdb4b57a118f - SHA256: 5462f7bbb28beff5da7441968471ed922f964db1abdce82b8860608acc23ddcc - SHA512: cd6bbba4fb5a0ab5ce7aa6f3b89d021ea742c5aa7934e24b87554d10e2a3233d416051c11aee90f3d8714d168db523a7bf56ef4dafdd256fc8595169c2db496a - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.xz) - - SIZE: 11437868 bytes - SHA1: ef388992fa71cd77c5be960dd7e3bec1280c4441 - SHA256: 7d3a7dabb190c2da06c963063342ca9a214bcd26f2158e904f0ec059b065ffda - SHA512: c55e3b71241f505b6bbad78b3bd40235064faae3443ca14b77b6356556caed6a0d055dc2e2cd7ebdb5290ab908e06d2b7d68f72469af5017eda4b29664b0d889 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.zip) - - SIZE: 19887946 bytes - SHA1: 09c80f9021fa2bfc04ae30a1939faad03b0f5b14 - SHA256: c9971e1ccb6e2f1ab32b1fe05416fce0b19a1cd9ba8fa095c77c4bdf2058e514 - SHA512: 6f14d0cc48d6eaf6168316cb45e22af8d2118ba058fd888ce930f12a22cf7e849e2e185cc7c516fe980f30ee9a942accf9d9e2d4b8a2e79c97b87d4bab704495 - -## Release Comment - -Thanks to everyone who helped with this release. - -The maintenance of Ruby 2.3, including this release, is based on the “Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2017-09-14-ruby-2-4-2-released.md b/fa/news/_posts/2017-09-14-ruby-2-4-2-released.md deleted file mode 100644 index 7ddd739535..0000000000 --- a/fa/news/_posts/2017-09-14-ruby-2-4-2-released.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.2 Released" -author: "nagachika" -translator: -date: 2017-09-14 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.4.2. -This release contains some security fixes. - -* [CVE-2017-0898: Buffer underrun vulnerability in Kernel.sprintf](/en/news/2017/09/14/sprintf-buffer-underrun-cve-2017-0898/) -* [CVE-2017-10784: Escape sequence injection vulnerability in the Basic authentication of WEBrick](/en/news/2017/09/14/webrick-basic-auth-escape-sequence-injection-cve-2017-10784/) -* [CVE-2017-14033: Buffer underrun vulnerability in OpenSSL ASN1 decode](/en/news/2017/09/14/openssl-asn1-buffer-underrun-cve-2017-14033/) -* [CVE-2017-14064: Heap exposure in generating JSON](/en/news/2017/09/14/json-heap-exposure-cve-2017-14064/) -* [Multiple vulnerabilities in RubyGems](/en/news/2017/08/29/multiple-vulnerabilities-in-rubygems/) -* Update bundled libyaml to version 0.1.7. - -There are also many bug-fixes. -See [commit logs](https://github.com/ruby/ruby/compare/v2_4_1...v2_4_2) for more details. - -## Known Problem - -_(This section was added at September 15, 2017.)_ - -An incompatibility has been found for Ruby 2.4.2. -Ruby 2.4.2 can not link with libgmp nor jemalloc. -We will fix this problem with the next release, but if you are facing the problem now and need to overcome it immediately, get a patch from this link: - -* [Ruby 2.4.2 and 2.3.5 cannot link with libgmp nor jemalloc](https://bugs.ruby-lang.org/issues/13899) - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.bz2> - - SIZE: 12607283 bytes - SHA1: a8a50a9297ff656e5230bf0f945acd69cc02a097 - SHA256: 08e72d0cbe870ed1317493600fbbad5995ea3af2d0166585e7ecc85d04cc50dc - SHA512: 1a5302d2558089a6b91b815fff9b75a29e690f10861de5fdd48211f3f45025a70dad7495f216e6af9c62d72e69ed316f1a52fada704bdc7e6d8c094d141ea77c - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz> - - SIZE: 14187859 bytes - SHA1: b096124469e31e4fc3d00d2b61b11d36992e6bbd - SHA256: 93b9e75e00b262bc4def6b26b7ae8717efc252c47154abb7392e54357e6c8c9c - SHA512: 96c236bdcd09b2e7cf429da631a487fc00f1255443751c03c8abeb4c2ce57079ad60ef566fecc0bf2c7beb2f080e2b8c4d30f321664547b2dc7d2a62aa1075ef - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.xz> - - SIZE: 10046412 bytes - SHA1: 8373e32c63bba2180799da091b572664aa9faf6f - SHA256: 748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735 - SHA512: c1d42272fb0d94b693452e703b0ea4942bf59cbd4b08ba83bf039f54be97ebc88511632413da0164970b4cf97bc302bccb88aab48edfa8fa147498e7ee741595 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.zip> - - SIZE: 15645325 bytes - SHA1: 861b51de9db0d822ef141ad04383c76aa3cd2fff - SHA256: 37d7cb27d8abd4b143556260506306659930548652343076f7f8470f07818824 - SHA512: 234765091528be1310ac315868f84ae6c505aa696672929df2f00828c1bbdc7cbcb2fc690eab4e73efde6be9104584ba7b6944853861f6d05e775b124ce8dfd5 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped -us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2017-09-14-sprintf-buffer-underrun-cve-2017-0898.md b/fa/news/_posts/2017-09-14-sprintf-buffer-underrun-cve-2017-0898.md deleted file mode 100644 index 33fdb3af1e..0000000000 --- a/fa/news/_posts/2017-09-14-sprintf-buffer-underrun-cve-2017-0898.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: news_post -title: "CVE-2017-0898: Buffer underrun vulnerability in Kernel.sprintf" -author: "usa" -translator: -date: 2017-09-14 12:00:00 +0000 -tags: security -lang: en ---- - -There is a buffer underrun vulnerability in the `sprintf` method of `Kernel` module. -This vulnerability has been assigned the CVE identifier [CVE-2017-0898](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0898). - -## Details - -If a malicious format string which contains a precious specifier (`*`) is passed and a huge minus value is also passed to the specifier, buffer underrun may be caused. -In such situation, the result may contains heap, or the Ruby interpreter may crash. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.7 and earlier -* Ruby 2.3 series: 2.3.4 and earlier -* Ruby 2.4 series: 2.4.1 and earlier -* prior to trunk revision 58453 - -## Credit - -Thanks to [aerodudrizzt](https://hackerone.com/aerodudrizzt) for reporting this issue. - -## History - -* Originally published at 2017-09-14 12:00:00 (UTC) diff --git a/fa/news/_posts/2017-09-14-webrick-basic-auth-escape-sequence-injection-cve-2017-10784.md b/fa/news/_posts/2017-09-14-webrick-basic-auth-escape-sequence-injection-cve-2017-10784.md deleted file mode 100644 index 7bfeea30a5..0000000000 --- a/fa/news/_posts/2017-09-14-webrick-basic-auth-escape-sequence-injection-cve-2017-10784.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: news_post -title: "CVE-2017-10784: Escape sequence injection vulnerability in the Basic authentication of WEBrick" -author: "usa" -translator: -date: 2017-09-14 12:00:00 +0000 -tags: security -lang: en ---- - -There is an escape sequence injection vulnerability in the Basic authentication of WEBrick bundled by Ruby. -This vulnerability has been assigned the CVE identifier [CVE-2017-10784](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10784). - -## Details - -When using the Basic authentication of WEBrick, clients can pass an arbitrary string as the user name. -WEBrick outputs the passed user name intact to its log, then an attacker can inject malicious escape sequences to the log and dangerous control characters may be executed on a victim's terminal emulator. - -This vulnerability is similar to [a vulnerability already fixed](/en/news/2010/01/10/webrick-escape-sequence-injection/), but it had not been fixed in the Basic authentication. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.7 and earlier -* Ruby 2.3 series: 2.3.4 and earlier -* Ruby 2.4 series: 2.4.1 and earlier -* prior to trunk revision 58453 - -## Credit - -Thanks to Yusuke Endoh <mame@ruby-lang.org> for reporting this issue. - -## History - -* Originally published at 2017-09-14 12:00:00 (UTC) diff --git a/fa/news/_posts/2017-10-10-ruby-2-5-0-preview1-released.md b/fa/news/_posts/2017-10-10-ruby-2-5-0-preview1-released.md deleted file mode 100644 index 7cce063b06..0000000000 --- a/fa/news/_posts/2017-10-10-ruby-2-5-0-preview1-released.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.5.0-preview1 Released" -author: "naruse" -translator: -date: 2017-10-10 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.5.0-preview1. - -Ruby 2.5.0-preview1 is the first preview release toward Ruby 2.5.0. -It introduces some new features and performance improvements, for example: - -## New Features - -* Print backtrace and error message in reverse order if STDERR is unchanged and a tty. - [Feature #8661] [experimental] - -* Top-level constant look-up is removed. [Feature #11547] - -* rescue/else/ensure are allowed inside do/end blocks. [Feature #12906] - -* yield\_self [Feature #6721] - -## Other notable changes since 2.4 - -* Merge Onigmo to 6.1.1. - It adds [absence operator](https://github.com/k-takata/Onigmo/issues/87) - Note that Ruby 2.4.1 also includes this change. -* Merge bundler to standard libraries. -* Merge rubygems-2.6.13. -* Merge rdoc-6.0.0.beta2. - Change lexer IRB based one to Ripper. - It much improves the speed of generating document. - https://github.com/ruby/rdoc/pull/512 - This also includes - * Fix so many bugs in the last dozen years or so - * Support new Ruby syntaxes in the last several years -* Update supported Unicode version to 10.0.0. - -See [NEWS](https://github.com/ruby/ruby/blob/v2_5_0_preview1/NEWS) -or commit logs for details. - -With those changes, -[6162 files changed, 339744 insertions(+), 28699 deletions(-)](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0_preview1) -since Ruby 2.4.0! - -Enjoy Ruby 2.5.0-preview1! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-preview1.tar.gz> - - SIZE: 16088348 bytes - SHA1: 8d1bad4faea258ac7f97ae2b4c7d76335b044c37 - SHA256: 30994fe5efbf4759a2a616f288121857c69b45665926174680387e286bb83b05 - SHA512: bcca05333e0aa09c75492ec09e4a82bf7aebef1b96e1c40000b92fa654fd96ae1d70e4f92ecf619b199cba73d754be6c6d97fc488d1e47831bc671f64ce0ab6d - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-preview1.zip> - - SIZE: 20036401 bytes - SHA1: e1ad073a17dc814fc8ddb3cbbed761a2278dcc12 - SHA256: 1a61196a845cb9d9b5a71fd66cb77fbc215f82cb6f90371e309ceddb25e7107b - SHA512: 35033b5426142e271d95d438b8442e73cade9462b02014371866882a4a90911b98805b7199b15bedc9847fd2560e211f015fa09b0b1d9efc31a947e41e088b30 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-preview1.tar.bz2> - - SIZE: 14110768 bytes - SHA1: 0b664c41b75d54ff88c70b5437b20b90675e3348 - SHA256: 1158e0eac184a1d8189fae985f58c9be185d6e7074b022e66567aec798fa3446 - SHA512: 2d39ef64aaf7a52014905f4ad59b53e83b71433e50a9227f9f50cbb7a2c9a5db9cd69fa7dbe01234819f7edd2216b3d915f21676f07d12bb5f0f3276358bce7f - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-preview1.tar.xz> - - SIZE: 11383812 bytes - SHA1: eef2901270c235a97d132ebcfb275f130ba368fd - SHA256: c2f518eb04b38bdd562ba5611abd2521248a1608fc466368563dd794ddeddd09 - SHA512: 1153a1fc4eb1a9556af2d392743998eb9cffd2a07e4648bf124dea1044bb378c7f4534dd87c0d30563ec438d2995ba1832faaaf4261db5d0840ca32ae7ea65d9 diff --git a/fa/news/_posts/2017-12-14-net-ftp-command-injection-cve-2017-17405.md b/fa/news/_posts/2017-12-14-net-ftp-command-injection-cve-2017-17405.md deleted file mode 100644 index ed9000e796..0000000000 --- a/fa/news/_posts/2017-12-14-net-ftp-command-injection-cve-2017-17405.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: news_post -title: "CVE-2017-17405: Command injection vulnerability in Net::FTP" -author: "nagachika" -translator: -date: 2017-12-14 16:00:00 +0000 -tags: security -lang: en ---- - -There is a command injection vulnerability in Net::FTP bundled with Ruby. -This vulnerability has been assigned the CVE identifier -[CVE-2017-17405](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17405). - -## Details - -`Net::FTP#get`, `getbinaryfile`, `gettextfile`, `put`, `putbinaryfile`, and -`puttextfile` use `Kernel#open` to open a local file. If the `localfile` -argument starts with the pipe character `"|"`, the command following the -pipe character is executed. The default value of `localfile` is -`File.basename(remotefile)`, so malicious FTP servers could cause arbitrary -command execution. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.8 and earlier -* Ruby 2.3 series: 2.3.5 and earlier -* Ruby 2.4 series: 2.4.2 and earlier -* Ruby 2.5 series: 2.5.0-preview1 -* prior to trunk revision r61242 - -## Credit - -Thanks to Etienne Stalmans from the Heroku product security team for reporting the issue. - -## History - -* Originally published at 2017-12-14 16:00:00 (UTC) diff --git a/fa/news/_posts/2017-12-14-ruby-2-2-9-released.md b/fa/news/_posts/2017-12-14-ruby-2-2-9-released.md deleted file mode 100644 index 0fdf93bc93..0000000000 --- a/fa/news/_posts/2017-12-14-ruby-2-2-9-released.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.9 Released" -author: "usa" -translator: -date: 2017-12-14 16:00:00 +0000 -lang: en ---- - -Ruby 2.2.9 has been released. -This release includes several security fixes. -Please check the topics below for details. - -* [CVE-2017-17405: Command injection vulnerability in Net::FTP](/en/news/2017/12/14/net-ftp-command-injection-cve-2017-17405/) -* [Unsafe Object Deserialization Vulnerability in RubyGems](http://blog.rubygems.org/2017/10/09/unsafe-object-deserialization-vulnerability.html) - -Ruby 2.2 is now under the state of the security maintenance phase, until the end of the March of 2018. -After the date, maintenance of Ruby 2.2 will be ended. -We recommend you start planning migration to newer versions of Ruby, such as 2.4 or 2.3. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.bz2) - - SIZE: 13371232 bytes - SHA1: 773ba9b51bde612866f656c4531f59660e2b0087 - SHA256: 5e3cfcc3b69638e165f72f67b1321fa05aff62b0f9e9b32042a5a79614e7c70a - SHA512: 2a8c8770fda20a22b79c9115b6f468f8e7ea1092c84a5089af7a3122163e5ad298b493e6637e4d93ba02d899d8a619c94064dda8ac98cf3b93f64f45d5401085 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.gz) - - SIZE: 16681209 bytes - SHA1: cbeb1b892ffcaca8728c1cb8d513e1b485bc5eba - SHA256: 2f47c77054fc40ccfde22501425256d32c4fa0ccaf9554f0d699ed436beca1a6 - SHA512: 34e440d529b3bb6b2a7c0e68e64c66c903b96b736ca527398d4493e7451353c08f7cc68b83c55011b53d76411c118fcb3c9e70c1a08439a591eeee98c430c297 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.tar.xz) - - SIZE: 10511456 bytes - SHA1: 1144e19b4cdc77ee036847d261013c88fc59b5f8 - SHA256: 313b44b1105589d00bb30b9cccf7da44d263fe20a2d8d269ada536d4a7ef285c - SHA512: c4ef84cd00f72f60d6c168f0726d9d7e9573549c2bbae83893e1a9d5e64fc7938f4c9d50a47147b28b37cbf36263f95e10a810c0797bad941775a48d75a8c933 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.9.zip) - - SIZE: 18523114 bytes - SHA1: ebc8ba0ae1178bf4a84b38dd0fdd97de82406cf4 - SHA256: c3055ef4f985079d392dddebb1eab1e91851bfc19c0e8a11779872647d89b3b1 - SHA512: 41de195641bc8cca43a726c1d707720dc9d3b8a853002548a31d171508b78dc353328c9a526dfbbc76493307c0e9e5fce669cc9fc3efc9626f84f2af5aca1a55 - -## Release Comment - -Thanks to everyone who helped with this release. diff --git a/fa/news/_posts/2017-12-14-ruby-2-3-6-released.md b/fa/news/_posts/2017-12-14-ruby-2-3-6-released.md deleted file mode 100644 index b5f62b260a..0000000000 --- a/fa/news/_posts/2017-12-14-ruby-2-3-6-released.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.6 Released" -author: "usa" -translator: -date: 2017-12-14 16:00:00 +0000 -lang: en ---- - -Ruby 2.3.6 has been released. - -This release includes about 10 bug fixes after the previous release, and also includes several security fixes. -Please check the topics below for details. - -* [CVE-2017-17405: Command injection vulnerability in Net::FTP](/en/news/2017/12/14/net-ftp-command-injection-cve-2017-17405/) -* [Unsafe Object Deserialization Vulnerability in RubyGems](http://blog.rubygems.org/2017/10/09/unsafe-object-deserialization-vulnerability.html) - -See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_6/ChangeLog) for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.bz2) - - SIZE: 14429114 bytes - SHA1: 07c3b66d544dd22c22fbae3f16cfb3eeb88b7b1e - SHA256: 07aa3ed3bffbfb97b6fc5296a86621e6bb5349c6f8e549bd0db7f61e3e210fd0 - SHA512: bc3c7a115745a38e44bd91eb5637b1e412011c471d9749db7960185ef75737b944dd0e524f22432809649952ca7d93f46d458990e9cd2b0db5ca8abf4bc8ea99 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.gz) - - SIZE: 17840901 bytes - SHA1: 4e6a0f828819e15d274ae58485585fc8b7caace0 - SHA256: 8322513279f9edfa612d445bc111a87894fac1128eaa539301cebfc0dd51571e - SHA512: 104553d888f7d49d1b8df0cff0a3e8aee3086183d75e1a88289730e34c2da669874d7abe83e84bf1b3be9a3337a34f19ea9f9dcfbf1f7fc1136bb8f922776ea4 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.xz) - - SIZE: 11445628 bytes - SHA1: 55e97913180a313f161d2e4e541dd904a477c31d - SHA256: e0d969ac22d4a403c1204868bb9c0d068aa35045bb3934cf50b17b7f66059f56 - SHA512: a09c8715097d16190ee17ee39e7a74438cefc9013add350217b7e3fb4d60aa9dcb30595adf832b0d67a5c45b1fe9d4effb767c995af2759420859f8d763c693a - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.zip) - - SIZE: 19892406 bytes - SHA1: 0d631f32e7b360dcbfb9f8f46dfff2445f0a6a51 - SHA256: 6fee49a2099d49a1b98bf0637fe974fd87af3ae64978392c802ba4d10ac70fb5 - SHA512: c6dc2ee01a4ef84850b0ca4d1e60841f07fbff263ebbbc44c8bd0f72ced3172c2e0b9c883496bfc4f5a42f4827a061f8f479d05bda5f693a274c451914e0b03e - -## Release Comment - -Thanks to everyone who helped with this release. - -The maintenance of Ruby 2.3, including this release, is based on the “Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2017-12-14-ruby-2-4-3-released.md b/fa/news/_posts/2017-12-14-ruby-2-4-3-released.md deleted file mode 100644 index c30e1a461f..0000000000 --- a/fa/news/_posts/2017-12-14-ruby-2-4-3-released.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.3 Released" -author: "nagachika" -translator: -date: 2017-12-14 00:00:00 +0000 -lang: en ---- - -Ruby 2.4.3 has been released. - -This release includes some bug fixes and a security fix. - -* [CVE-2017-17405: Command injection vulnerability in Net::FTP](/en/news/2017/12/14/net-ftp-command-injection-cve-2017-17405/) - -There are also some bug fixes. -See [commit logs](https://github.com/ruby/ruby/compare/v2_4_2...v2_4_3) for more details. - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2> - - SIZE: 12615068 bytes - SHA1: 3ca96536320b915762d57fe1ee540df6810bf631 - SHA256: 0a703dffb7737f56e979c9ebe2482f07751803c71e307c20446b581e0f12cf30 - SHA512: fb4339e30c04d03b1422b6c32ede45902e072cd26325b36f3fc05c341d42eea6431d88718242dcc9ce24d9cad26f3d26772f2e806bd7d93f40be50268c318409 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.gz> - - SIZE: 14178729 bytes - SHA1: 787b7f4e90fb4b39a61bc1a31eb7765f875a590c - SHA256: fd0375582c92045aa7d31854e724471fb469e11a4b08ff334d39052ccaaa3a98 - SHA512: e6859cee49f74bbfbcfc9dd583aa0f1af007354f9b56ec09959d24764e69ed6ea3d1d59a229ad25b451161a1ea2ac60e0621dbbcc484ad219eed9e55f3825e05 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.xz> - - SIZE: 10040072 bytes - SHA1: f0a49dddb4e7903a11a80554fd7a317a854cd365 - SHA256: 23677d40bf3b7621ba64593c978df40b1e026d8653c74a0599f0ead78ed92b51 - SHA512: 8bcf60c994a96787da5d743c66f5609a5a6d834d6d61243cdea7fd059197c3b10da43c99e5649be85e2f2329eedcbb1dd76e89ce3ac586be9056348f7449ed09 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.zip> - - SIZE: 15649173 bytes - SHA1: 19744d7673914804b46f75b374faee87b2ea18d9 - SHA256: a4cd07af2cef121582b8bf7ec57fb9a916d99556c713538bc4469be68bfc1961 - SHA512: 5e51b4337ee12041925dd6b91df6d0c7fc5bf19846c1c8d5aa43823f5410d1291cd428bdb5245f08a399051d06c2cb59fde73a7d3da379cbbd24f9c2b60fcc8c - -## Release Comment - -Many committers, developers, and users who provided bug reports helped -us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2017-12-14-ruby-2-5-0-rc1-released.md b/fa/news/_posts/2017-12-14-ruby-2-5-0-rc1-released.md deleted file mode 100644 index c2a10a439d..0000000000 --- a/fa/news/_posts/2017-12-14-ruby-2-5-0-rc1-released.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.5.0-rc1 Released" -author: "naruse" -translator: -date: 2017-12-14 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.5.0-rc1. - -Ruby 2.5.0-rc1 is the first release candidate of Ruby 2.5.0. -It introduces some new features and performance improvements, for example: - -## New Features - -* Print backtrace and error message in reverse order if STDERR is unchanged and a tty. - [Feature #8661] [experimental] - -* Top-level constant look-up is removed. [Feature #11547] - -* rescue/else/ensure are allowed inside do/end blocks. [Feature #12906] - -* Add yield\_self. [Feature #6721] - -## Performance improvements - -* Dynamic instrumentation for TracePoint hooks instead of using "trace" - instruction to avoid overhead. [Feature #14104] - -* Performance of block passing using block parameters is improved by - lazy Proc allocation. [Feature #14045] - -* Mutex is rewritten to be smaller and faster. [Feature #13517] - -* SecureRandom now prefers OS-provided sources over OpenSSL. [Bug #9569] - -## Other notable changes since 2.4 - -* Update to Onigmo 6.1.3. - It adds the [absence operator](https://github.com/k-takata/Onigmo/issues/87). - Note that Ruby 2.4.1 also includes this change. -* Add Bundler to standard libraries. -* Update to RubyGems 2.7.0. -* Update to RDoc 6.0.0. - * Change lexer from IRB based one to Ripper; - this much improves the speed of generating documentation. - [https://github.com/ruby/rdoc/pull/512] - * Fix so many bugs from the last dozen years or so. - * Support new Ruby syntaxes from the last several years. -* Update supported Unicode version to 10.0.0. - -See [NEWS](https://github.com/ruby/ruby/blob/v2_5_0_rc1/NEWS) -or commit logs for details. - -With those changes, -[6162 files changed, 339744 insertions(+), 28699 deletions(-)](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0_rc1) -since Ruby 2.4.0! - -Enjoy Ruby 2.5.0-rc1! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-rc1.tar.gz> - - SIZE: 31049529 bytes - SHA1: 15df7e8ff99f360a14f7747a07a3021447d65594 - SHA256: 46c11b347522de174566503d35d2b46e1529b979d292b1f7f7019cfedcd4b07f - SHA512: 41cd298e99d7a25fe5f2ec42946ae5dbc4421bb18f39350ba8a1b02e999541ec1b21b5f6ce0489b3a159f47e37d409178ba7c21c00e177b0fdb410ca6e9d6142 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-rc1.zip> - - SIZE: 35579788 bytes - SHA1: b7ae42eb733d4a0e3a2d135c9f8d4af043daa728 - SHA256: 9858e39fd2e7bf207cc9f8846197b11ada5f4424f433ff4df149fe3d48be8e36 - SHA512: 86c93791d312fd2175909020e448a44892740feb809a532ed706c6d850cb92722fb7ca02ecbdf7a1fbeb5b4f42f1338ce9a15b7c0a41055937bd1fdfb4be6f11 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-rc1.tar.bz2> - - SIZE: 29238901 bytes - SHA1: 6aad74ed3d30de63c6ff22048cd0fcbcbe123586 - SHA256: 862a8e9e52432ba383660a23d3e87af11dbc18c863a19ef6367eb8259fc47c09 - SHA512: bf0eb114097f9e505ff846f25e7556a2fb393573b4e8b773f94cf5b47998e221f3962a291db15a3cdbdf4ced5a523812937f80d95f4ee3f7b13c4e37f178d7a7 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0-rc1.tar.xz> - - SIZE: 26096412 bytes - SHA1: 05cacd0341b7a23cc68239c2061640643a30da38 - SHA256: a479a1bce69b2cf656821f10104dcb8b426922b56d3d6cbdf48318842fae752c - SHA512: 9f9040abf69337439a3f31b80d440d97736555b0df6533d9d34c141ce52226bc40c3f4f7e596e74b080c879e933649c17a073c893be1a304d9a883bab02e9494 diff --git a/fa/news/_posts/2017-12-25-ruby-2-5-0-released.md b/fa/news/_posts/2017-12-25-ruby-2-5-0-released.md deleted file mode 100644 index 1fa70b99f0..0000000000 --- a/fa/news/_posts/2017-12-25-ruby-2-5-0-released.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.5.0 Released" -author: "naruse" -translator: -date: 2017-12-25 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.5.0. - -Ruby 2.5.0 is the first stable release of the Ruby 2.5 series. -It introduces many new features and performance improvements. -The notable changes are as follows: - -## New Features - -* `rescue`/`else`/`ensure` are now allowed to be used directly with - `do`/`end` blocks. - [[Feature #12906]](https://bugs.ruby-lang.org/issues/12906) -* Add `yield_self` to yield given block in its context. - Unlike `tap`, it returns the result of the block. - [[Feature #6721]](https://bugs.ruby-lang.org/issues/6721) -* Support branch coverage and method coverage measurement. - The branch coverage indicates which branches are executed and which are not. - The method coverage indicates which methods are invoked and which are not. - By running a test suite with these new features, you will know which - branches and methods are executed, and evaluate total coverage of the test - suite more strictly. - [[Feature #13901]](https://bugs.ruby-lang.org/issues/13901) -* Hash#slice [[Feature #8499]](https://bugs.ruby-lang.org/issues/8499) - and Hash#transform_keys [[Feature #13583]](https://bugs.ruby-lang.org/issues/13583) -* Struct.new can create classes that accept keyword arguments. - [[Feature #11925]](https://bugs.ruby-lang.org/issues/11925) -* Enumerable#any?, all?, none?, and one? accept a pattern argument. - [[Feature #11286]](https://bugs.ruby-lang.org/issues/11286) -* Top-level constant look-up is no longer available. - [[Feature #11547]](https://bugs.ruby-lang.org/issues/11547) -* One of our most loved libraries, pp.rb, is now automatically loaded. - You no longer have to write `require "pp"`. - [[Feature #14123]](https://bugs.ruby-lang.org/issues/14123) -* Print backtrace and error message in reverse order (oldest call first, - most recent call last). When a long backtrace appears on your terminal (TTY), - you can easily find the cause line at the bottom of the backtrace. - Note that the order is reversed only when the backtrace is printed out - to the terminal directly. - [[Feature #8661]](https://bugs.ruby-lang.org/issues/8661) [experimental] - -## Performance improvements - -* About 5-10% performance improvement by removing all `trace` instructions - from overall bytecode (instruction sequences). - The `trace` instruction was added to support the `TracePoint`. - However, in most cases, `TracePoint` is not used and `trace` instructions - are pure overhead. Instead, now we use a dynamic instrumentation technique. - See [[Feature #14104]](https://bugs.ruby-lang.org/issues/14104) for more details. -* Block passing by a block parameter (e.g. `def foo(&b); bar(&b); end`) - is about 3 times faster than Ruby 2.4 by "Lazy Proc allocation" technique. - [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) -* Mutex is rewritten to be smaller and faster. - [[Feature #13517]](https://bugs.ruby-lang.org/issues/13517) -* ERB now generates code from a template twice as fast as Ruby 2.4. -* Improve performance of some built-in methods including `Array#concat`, - `Enumerable#sort_by`, `String#concat`, `String#index`, `Time#+`, and more. -* IO.copy_stream uses copy_file_range(2) to copy offload. - [[Feature #13867]](https://bugs.ruby-lang.org/issues/13867) - -## Other notable changes since 2.4 - -* SecureRandom now prefers OS-provided sources over OpenSSL. - [[Bug #9569]](https://bugs.ruby-lang.org/issues/9569) -* Promote cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, - scanf, sdbm, stringio, strscan, webrick, zlib from standard libraries - to default gems. -* Update to [Onigmo](https://github.com/k-takata/Onigmo/) 6.1.3. - * It adds the [absence operator](https://github.com/k-takata/Onigmo/issues/87). - * Note that [Ruby 2.4.1](https://www.ruby-lang.org/en/news/2017/03/22/ruby-2-4-1-released/) also includes this change. -* Update to Psych 3.0.2. -* Update to RubyGems 2.7.3. -* Update to RDoc 6.0.1. - * [Switch the lexer from IRB based one to Ripper](https://github.com/ruby/rdoc/pull/512). - This dramatically improves the performance of document generation. - * Fix a significant amount of bugs that existed over ten years. - * Add support for new Ruby syntax from the latest versions. -* Update supported Unicode version to 10.0.0. -* `Thread.report_on_exception` is now set to true by default. - This change helps debugging of multi-threaded programs. - [[Feature #14143]](https://bugs.ruby-lang.org/issues/14143) -* IO#write now receives multiple arguments. - [[Feature #9323]](https://bugs.ruby-lang.org/issues/9323) - -See [NEWS](https://github.com/ruby/ruby/blob/v2_5_0/NEWS) -or [commit logs](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0) -for details. - -With those changes, -[6158 files changed, 348484 insertions(+), 82747 deletions(-)](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0) -since Ruby 2.4.0! - -Merry Christmas, Happy Holidays, and enjoy programming with Ruby 2.5! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz> - - SIZE: 15834941 bytes - SHA1: 58f77301c891c1c4a08f301861c26b1ea46509f6 - SHA256: 46e6f3630f1888eb653b15fa811d77b5b1df6fd7a3af436b343cfe4f4503f2ab - SHA512: 0712fe68611f5d0cd6dd54b814f825478e64b6a62bdf67bce431f4dca2dc00b1a33f77bebfbcd0a151118a1152554ab457decde435b424aa1f004bc0aa40580d - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.zip> - - SIZE: 19495617 bytes - SHA1: 700b6f55d689a5c8051c8c292b9e77a1b50bf96e - SHA256: 94559ea6e3c619423da604e503ce1dc1c465d6e0747a07fbdc5f294acaf14c24 - SHA512: e4324064cee8c65b80192e3eff287e915d2d40464d300744c36fb326ae4b1846911400a99d4332192d8a217009d3a5209b43eb5e8bc0b739035bef89cc493e84 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2> - - SIZE: 13955820 bytes - SHA1: 827b9a3bcffa86d1fc9ed96d403cb9dc37731688 - SHA256: d87eb3021f71d4f62e5a5329628ac9a6665902173296e551667edd94362325cc - SHA512: 8f6fdf6708e7470f55bc009db2567cd8d4e633ad0678d83a015441ecf5b5d88bd7da8fb8533a42157ff83b74d00b6dc617d39bbb17fc2c6c12287a1d8eaa0f2c - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.xz> - - SIZE: 11292472 bytes - SHA1: 9c7babcf9e299be3f197d9091024ae458f1a1273 - SHA256: 1da0afed833a0dab94075221a615c14487b05d0c407f991c8080d576d985b49b - SHA512: 55714a33d7661fe8b432f73c34fd67b49699f8b79df1cbd680a74899124d31111ab0f444677672aac1ba725820182940d485efb2db0bf2bc96737c5d40c54578 diff --git a/fa/news/_posts/2017-12-27-fukuoka-ruby-award-2018.md b/fa/news/_posts/2017-12-27-fukuoka-ruby-award-2018.md deleted file mode 100644 index 2f6a4f4aaa..0000000000 --- a/fa/news/_posts/2017-12-27-fukuoka-ruby-award-2018.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: news_post -title: "2018 Fukuoka Ruby Award Competition - Entries to be judged by Matz" -author: "Fukuoka Ruby" -translator: -date: 2017-12-27 00:00:00 +0000 -lang: en ---- - -Dear Ruby Enthusiasts, - -The Government of Fukuoka, Japan, together with "Matz" Matsumoto would like -to invite you to enter the following Ruby competition. If you have developed -an interesting Ruby program, please be encouraged to apply. - -2018 Fukuoka Ruby Award Competition - Grand Prize - 1 Million Yen! - -Entry Deadline: January 31, 2018 - - - -Matz and a group of panelists will select the winners of the -Fukuoka Competition. The grand prize for the Fukuoka Competition -is 1 million yen. Past grand prize winners include Rhomobile (USA) -and APEC Climate Center (Korea). - -[http://myfukuoka.com/category/news/ruby-news/](http://myfukuoka.com/category/news/ruby-news/) - -Programs entered in the competition do not have to be written entirely -in Ruby but should take advantage of the unique characteristics of Ruby. - -Projects must have been developed or completed within the past 12 months -to be eligible. Please visit the following Fukuoka websites for additional -details or to enter: - -[http://www.digitalfukuoka.jp/events/152](http://www.digitalfukuoka.jp/events/152) -or -[http://myfukuoka.com/events/2018-fukuoka-ruby-award-guidelines-for-applicants/](http://myfukuoka.com/events/2018-fukuoka-ruby-award-guidelines-for-applicants/) - -[http://www.digitalfukuoka.jp/uploads/event_detail/file/393/RubyAward_ApplicationForm_2018.doc](http://www.digitalfukuoka.jp/uploads/event_detail/file/393/RubyAward_ApplicationForm_2018.doc) - -Please email the application form to award@f-ruby.com. - -This year, there are the following special prizes: - -The winner of the AWS Prize will receive: - -* Amazon Fire Tablet (subject to change) -* AWS architect technical consultation - -The winner of the GMO Pepabo Prize will receive: - -* Lolipop! shared hosting service: 10-year free subscription of the Standard - Plan, or JPY 100,000 coupon for the metered plan of the Managed Cloud. -* Muumuu Domain DNS registration service: 10-year free subscription of one - domain (for a domain that costs JPY 10,000 or less per year). - -The winner of the IIJ GIO Prize will receive: - -* Further details will be announced later. - -The winner of the Money Forward Prize will receive: - -* dinner with Money Forward's Ruby committers. -* a 10 years free ticket for the premium services of our personal - financial management service "Money Forward". - -The winner of the Salesforce Prize will receive: - -* salesforce.com novelty goods - -"Matz will be testing and reviewing your source code thoroughly, -so it's very meaningful to apply! The competition is free to enter." - -Thanks! diff --git a/fa/news/_posts/2018-02-17-multiple-vulnerabilities-in-rubygems.md b/fa/news/_posts/2018-02-17-multiple-vulnerabilities-in-rubygems.md deleted file mode 100644 index 38571d1628..0000000000 --- a/fa/news/_posts/2018-02-17-multiple-vulnerabilities-in-rubygems.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: news_post -title: "Multiple vulnerabilities in RubyGems" -author: "usa" -translator: -date: 2018-02-17 03:00:00 +0000 -tags: security -lang: en ---- - -There are multiple vulnerabilities in RubyGems bundled by Ruby. -It is [reported at the official blog of RubyGems](http://blog.rubygems.org/2018/02/15/2.7.6-released.html). - -## Details - -The following vulnerabilities have been reported. - -* Prevent path traversal when writing to a symlinked basedir outside of the root. -* Fix possible Unsafe Object Deserialization Vulnerability in gem owner. -* Strictly interpret octal fields in tar headers. -* Raise a security error when there are duplicate files in a package. -* Enforce URL validation on spec homepage attribute. -* Mitigate XSS vulnerability in homepage attribute when displayed via gem server. -* Prevent Path Traversal issue during gem installation. - -It is strongly recommended for Ruby users to upgrade your Ruby installation or take one of the following workarounds as soon as possible. - -## Affected Versions - -* Ruby 2.2 series: 2.2.9 and earlier -* Ruby 2.3 series: 2.3.6 and earlier -* Ruby 2.4 series: 2.4.3 and earlier -* Ruby 2.5 series: 2.5.0 and earlier -* prior to trunk revision 62422 - -## Workarounds - -In principle, you should upgrade your Ruby installation to the latest version. -RubyGems 2.7.6 or later includes the fix for the vulnerabilities, so upgrade RubyGems to the latest version if you can't upgrade Ruby itself. - -``` -gem update --system -``` - -If you can't upgrade RubyGems, you can apply the following patches as a workaround. - -* [for Ruby 2.2.9](https://bugs.ruby-lang.org/attachments/download/7030/rubygems-276-for-ruby22.patch) -* [for Ruby 2.3.6](https://bugs.ruby-lang.org/attachments/download/7029/rubygems-276-for-ruby23.patch) -* [for Ruby 2.4.3](https://bugs.ruby-lang.org/attachments/download/7028/rubygems-276-for-ruby24.patch) -* [for Ruby 2.5.0](https://bugs.ruby-lang.org/attachments/download/7027/rubygems-276-for-ruby25.patch) - -About the trunk, update to the latest revision. - -## Credits - -This report is based on [the official blog of RubyGems](http://blog.rubygems.org/2018/02/15/2.7.6-released.html). - -## History - -* Originally published at 2018-02-17 03:00:00 UTC -* Mention about upgrading Rubies at 2018-03-29 01:00:00 UTC diff --git a/fa/news/_posts/2018-02-24-ruby-2-6-0-preview1-released.md b/fa/news/_posts/2018-02-24-ruby-2-6-0-preview1-released.md deleted file mode 100644 index da4fd839a5..0000000000 --- a/fa/news/_posts/2018-02-24-ruby-2-6-0-preview1-released.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.6.0-preview1 Released" -author: "naruse" -translator: -date: 2018-02-24 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.6.0-preview1. - -Ruby 2.6.0-preview1 is the first preview toward Ruby 2.6.0. -This preview1 is released earlier than usual because it includes an important new feature, JIT. - -## JIT - -Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler. - -JIT compiler aims to improve performance of any Ruby program execution. -Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which prints C code to a disk and spawns common C compiler process to generate native code. -See also: [MJIT organization by Vladimir Makarov](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). - -How to use: Just specify `--jit` in command line or `$RUBYOPT` environment variable. Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. - -The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. -Currently JIT compiler is supported only when Ruby is built by gcc or clang and the compiler is available on runtime. Otherwise you can't use it for now. - -As of 2.6.0-preview1, we're just preparing infrastructure for JIT and very few optimizations are implemented. You can measure some of potential improvements in micro benchmarks with this release, but it is NOT ready for benchmarking final performance of Ruby's JIT compiler, especially for large programs like Rails applications. - -We're going to implement method inlining in JIT compiler, which is expected to increase Ruby's performance significantly. - -Also, we're planning to increase the supported platforms, and the next plan is to support Visual Studio. - -Stay tuned for the new age of Ruby's performance. - -## New Features - -* Add `Random.bytes`. [Feature #4938] -* Add `Binding#source_location`. [Feature #14230] - - This method returns the source location of binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores `binding`'s source location [Bug #4352]. So, users should use this newly-introduced method instead of `Kernel#eval`. - -* Add `:exception` option to let `Kernel.#system` raise error instead of returning `false`. [Feature #14386] - -## Performance improvements - -* Speedup `Proc#call` because we don't need to care about `$SAFE` any more. - [Feature #14318] - - With `lc_fizzbuzz` benchmark which uses `Proc#call` so many times we can measure - x1.4 improvements [Bug #10212]. - -* Speedup `block.call` where `block` is passed block parameter. [Feature #14330] - - Ruby 2.5 improves block passing performance. [Feature #14045] - Additionally, Ruby 2.6 improves the performance of passed block calling. - With micro-benchmark we can observe 2.6x improvement. - -## Other notable changes since 2.5 - -* `$SAFE` is a process global state and we can set `0` again. [Feature #14250] - -* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [Feature #14256] - -* Merged RubyGems 2.7.6 - -See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_preview1/NEWS) -or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview1) -for details. - -With those changes, -[1115 files changed, 23023 insertions(+), 14748 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview1) -since Ruby 2.5.0! - -Today, Feburary 24th, is Ruby's 25th birthday. -Happy birthday Ruby, and enjoy programming with Ruby 2.6.0-preview1! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.gz> - - SIZE: 16082501 bytes - SHA1: 94b4a2f5f992dc9855364284e9c64316bf129c90 - SHA256: 2023c42676d9237481e1a97157d5e2ecc10db5e320d5b9cf872ec1d293265d61 - SHA512: 004696c4f087333ba7cb2285418dcce70f399966ae8fed817aab9759fd2d75beb088c4aeb294fcd4260112e8422f490cd4dbdfce402d73f96bb679b8bb3e1607 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.zip> - - SIZE: 19807007 bytes - SHA1: 24d76f67bf913348eca783a2ecf6f3faf37299ae - SHA256: 6c883927e80430cf07f2d90728d6c2c71164223f378a48ebf964d3b66319f623 - SHA512: 1e7f318cec1b7875fd9891df671078de7585b556695a2a85708483ddcacfd6e0b63b70ec2535e92ff981b4f72063721ed552df49688e066666fcd7ae520ae667 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.bz2> - - SIZE: 14104578 bytes - SHA1: 9f0fb79643a4673a839b0c8496eccc6e1dbd022d - SHA256: 8bd6c373df6ee009441270a8b4f86413d101b8f88e8051c55ef62abffadce462 - SHA512: d9cb270529a97670d54f43a0236fab072714e715c39277dab70b7a1843ec818e6700e47e1384c7256f9e0ae41ab2c0b768a0de38a5ecf4f4fff5da6ef5ad4944 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.xz> - - SIZE: 11423984 bytes - SHA1: bbbc89d760cdaadbca3cbff587295864edeff0af - SHA256: 1d99139116e4e245ce543edb137b2a8873c26e9f0bde88d8cee6789617cc8d0e - SHA512: d12ff29778d8d940344619881b4d8247c2fb6b44ac2b2dbddb7078828e893cfac9a5a95b5588f0afdbed52bdb6dea95cff1b9ce3ad47dfa62209e97dab8810b6 diff --git a/fa/news/_posts/2018-03-28-buffer-under-read-unpack-cve-2018-8778.md b/fa/news/_posts/2018-03-28-buffer-under-read-unpack-cve-2018-8778.md deleted file mode 100644 index 1a6dce6524..0000000000 --- a/fa/news/_posts/2018-03-28-buffer-under-read-unpack-cve-2018-8778.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: news_post -title: "CVE-2018-8778: Buffer under-read in String#unpack" -author: "usa" -translator: -date: 2018-03-28 14:00:00 +0000 -tags: security -lang: en ---- - -There is a buffer under-read vulnerability in `String#unpack` method. -This vulnerability has been assigned the CVE identifier [CVE-2018-8778](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8778). - -## Details - -`String#unpack` receives format specifiers as its parameter, and can be specified the position of parsing the data by the specifier `@`. -If a big number is passed with `@`, the number is treated as the negative value, and out-of-buffer read is occurred. -So, if a script accepts an external input as the argument of `String#unpack`, the attacker can read data on heaps. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.9 and earlier -* Ruby 2.3 series: 2.3.6 and earlier -* Ruby 2.4 series: 2.4.3 and earlier -* Ruby 2.5 series: 2.5.0 and earlier -* Ruby 2.6 series: 2.6.0-preview1 -* prior to trunk revision r62992 - -## Credit - -Thanks to [aerodudrizzt](https://hackerone.com/aerodudrizzt) for reporting the issue. - -## History - -* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-http-response-splitting-in-webrick-cve-2017-17742.md b/fa/news/_posts/2018-03-28-http-response-splitting-in-webrick-cve-2017-17742.md deleted file mode 100644 index 7e2b449b7e..0000000000 --- a/fa/news/_posts/2018-03-28-http-response-splitting-in-webrick-cve-2017-17742.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: news_post -title: "CVE-2017-17742: HTTP response splitting in WEBrick" -author: "usa" -translator: -date: 2018-03-28 14:00:00 +0000 -tags: security -lang: en ---- - -There is an HTTP response splitting vulnerability in WEBrick bundled with Ruby. -This vulnerability has been assigned the CVE identifier [CVE-2017-17742](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17742). - -## Details - -If a script accepts an external input and outputs it without modification as a part of HTTP responses, an attacker can use newline characters to deceive the clients that the HTTP response header is stopped at there, and can inject fake HTTP responses after the newline characters to show malicious contents to the clients. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.9 and earlier -* Ruby 2.3 series: 2.3.6 and earlier -* Ruby 2.4 series: 2.4.3 and earlier -* Ruby 2.5 series: 2.5.0 and earlier -* Ruby 2.6 series: 2.6.0-preview1 -* prior to trunk revision r62968 - -## Credit - -Thanks to Aaron Patterson <tenderlove@ruby-lang.org> for reporting the issue. - -## History - -* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-large-request-dos-in-webrick-cve-2018-8777.md b/fa/news/_posts/2018-03-28-large-request-dos-in-webrick-cve-2018-8777.md deleted file mode 100644 index de1f84b782..0000000000 --- a/fa/news/_posts/2018-03-28-large-request-dos-in-webrick-cve-2018-8777.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: news_post -title: "CVE-2018-8777: DoS by large request in WEBrick" -author: "usa" -translator: -date: 2018-03-28 14:00:00 +0000 -tags: security -lang: en ---- - -There is a out-of-memory DoS vulnerability with a large request in WEBrick bundled with Ruby. -This vulnerability has been assigned the CVE identifier [CVE-2018-8777](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8777). - -## Details - -If an attacker sends a large request which contains huge HTTP headers, WEBrick try to process it on memory, so the request causes the out-of-memory DoS attack. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.9 and earlier -* Ruby 2.3 series: 2.3.6 and earlier -* Ruby 2.4 series: 2.4.3 and earlier -* Ruby 2.5 series: 2.5.0 and earlier -* Ruby 2.6 series: 2.6.0-preview1 -* prior to trunk revision r62965 - -## Credit - -Thanks to Eric Wong <e@80x24.org> for reporting the issue. - -## History - -* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-poisoned-nul-byte-dir-cve-2018-8780.md b/fa/news/_posts/2018-03-28-poisoned-nul-byte-dir-cve-2018-8780.md deleted file mode 100644 index db5110a454..0000000000 --- a/fa/news/_posts/2018-03-28-poisoned-nul-byte-dir-cve-2018-8780.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: news_post -title: "CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir" -author: "usa" -translator: -date: 2018-03-28 14:00:00 +0000 -tags: security -lang: en ---- - -There is an unintentional directory traversal in some methods in `Dir`. -This vulnerability has been assigned the CVE identifier [CVE-2018-8780](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8780). - -## Details - -`Dir.open`, `Dir.new`, `Dir.entries` and `Dir.empty?` accept the path of the target directory as their parameter. -If the parameter contains NUL (`\0`) bytes, these methods recognize that the path is completed before the NUL bytes. -So, if a script accepts an external input as the argument of these methods, the attacker can make the unintentional directory traversal. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.9 and earlier -* Ruby 2.3 series: 2.3.6 and earlier -* Ruby 2.4 series: 2.4.3 and earlier -* Ruby 2.5 series: 2.5.0 and earlier -* Ruby 2.6 series: 2.6.0-preview1 -* prior to trunk revision r62989 - -## Credit - -Thanks to [ooooooo_q](https://hackerone.com/ooooooo_q) for reporting the issue. - -## History - -* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-poisoned-nul-byte-unixsocket-cve-2018-8779.md b/fa/news/_posts/2018-03-28-poisoned-nul-byte-unixsocket-cve-2018-8779.md deleted file mode 100644 index 107c41e393..0000000000 --- a/fa/news/_posts/2018-03-28-poisoned-nul-byte-unixsocket-cve-2018-8779.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: news_post -title: "CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket" -author: "usa" -translator: -date: 2018-03-28 14:00:00 +0000 -tags: security -lang: en ---- - -There is a unintentional socket creation vulnerability in `UNIXServer.open` method of socket library bundled with Ruby. -And there is also a unintentional socket access vulnerability in `UNIXSocket.open` method. -This vulnerability has been assigned the CVE identifier [CVE-2018-8779](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8779). - -## Details - -`UNIXServer.open` accepts the path of the socket to be created at the first parameter. -If the path contains NUL (`\0`) bytes, this method recognize that the path is completed before the NUL bytes. -So, if a script accepts an external input as the argument of this method, the attacker can make the socket file in the unintentional path. -And, `UNIXSocket.open` also accepts the path of the socket to be created at the first parameter without checking NUL bytes like `UNIXServer.open`. -So, if a script accepts an external input as the argument of this method, the attacker can accepts the socket file in the unintentional path. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.9 and earlier -* Ruby 2.3 series: 2.3.6 and earlier -* Ruby 2.4 series: 2.4.3 and earlier -* Ruby 2.5 series: 2.5.0 and earlier -* Ruby 2.6 series: 2.6.0-preview1 -* prior to trunk revision r62991 - -## Credit - -Thanks to [ooooooo_q](https://hackerone.com/ooooooo_q) for reporting the issue. - -## History - -* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-03-28-ruby-2-2-10-released.md b/fa/news/_posts/2018-03-28-ruby-2-2-10-released.md deleted file mode 100644 index 678c397d4c..0000000000 --- a/fa/news/_posts/2018-03-28-ruby-2-2-10-released.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.2.10 Released" -author: "usa" -translator: -date: 2018-03-28 17:00:00 +0000 -lang: en ---- - -Ruby 2.2.10 has been released. -This release includes several security fixes. -Please check the topics below for details. - -* [CVE-2017-17742: HTTP response splitting in WEBrick](/en/news/2018/03/28/http-response-splitting-in-webrick-cve-2017-17742/) -* [CVE-2018-8777: DoS by large request in WEBrick](/en/news/2018/03/28/large-request-dos-in-webrick-cve-2018-8777/) -* [CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir](/en/news/2018/03/28/unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914/) -* [CVE-2018-8778: Buffer under-read in String#unpack](/en/news/2018/03/28/buffer-under-read-unpack-cve-2018-8778/) -* [CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket](/en/news/2018/03/28/poisoned-nul-byte-unixsocket-cve-2018-8779/) -* [CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir](/en/news/2018/03/28/poisoned-nul-byte-dir-cve-2018-8780/) -* [Multiple vulnerabilities in RubyGems](/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/) - -Ruby 2.2 is under the state of the security maintenance phase, until the end of the March of 2018. -After the date, maintenance of Ruby 2.2 will be ended. -So, this release is expected to be the last release of Ruby 2.2. -We will never make a new release of Ruby 2.2 unless Ruby 2.2.10 has a serious regression bug. -We recommend you migrating to newer versions of Ruby, such as 2.5. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.bz2) - - SIZE: 13365461 bytes - SHA1: 72ee1dcfd96199d2c3092b77db7a7f439c0abd08 - SHA256: a54204d2728283c9eff0cf81d654f245fa5b3447d0824f1a6bc3b2c5c827381e - SHA512: f8ec96c2a5f4ecf22052ee0b1029989ded52d7bf5d41be24fef67e732e76f72119302240bca08f0547510a9cd29e941a32e263cad9c8a2bf80023d6bc97b2373 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.gz) - - SIZE: 16694179 bytes - SHA1: b0207c861f3fa41cbe4909ecb89bd2fcac81fe7c - SHA256: cd51019eb9d9c786d6cb178c37f6812d8a41d6914a1edaf0050c051c75d7c358 - SHA512: 051124922240d2e20e74903b9c629fa897279072d2aa9b0a4e3a02331b843fa9c97c16e7073d6faec1b9f2024c3a7e36346014c30eee256f0715c5de226b5db8 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.tar.xz) - - SIZE: 10508612 bytes - SHA1: c46737f81df819c3d7423df5c644431b3fcb8fee - SHA256: bf77bcb7e6666ccae8d0882ea12b05f382f963f0a9a5285a328760c06a9ab650 - SHA512: 1f35458f2b1c334e64aecf42cd1df3b223fef119b6ad23394285d9f2e72da26b3ba5418950694c4a8c0b4afc43672f78459f2f7281a595cff0967eb239662ae4 - -* [https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.zip](https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.10.zip) - - SIZE: 18540424 bytes - SHA1: 0f4b9c6695d000cb456fe8b89f8bf6d42fb95069 - SHA256: 6933eb989afb1b916c438d8eeecff1cfb0a6569c07e7190beca56b10b822207a - SHA512: dfaa9a76170b0eed9cb2bf41178f2193dd3428492413b1616aaabd67ec35b9b7705b422b0fdfe38b18a1800bbce3ba161b53d229d307ea7f5c0269ef3d031980 - -## Release Comment - -Thanks to everyone who reported vulnerabilities, fixed the vulnerabilities and helped with this release. diff --git a/fa/news/_posts/2018-03-28-ruby-2-3-7-released.md b/fa/news/_posts/2018-03-28-ruby-2-3-7-released.md deleted file mode 100644 index 0d0d242505..0000000000 --- a/fa/news/_posts/2018-03-28-ruby-2-3-7-released.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.7 Released" -author: "usa" -translator: -date: 2018-03-28 17:00:00 +0000 -lang: en ---- - -Ruby 2.3.7 has been released. - -This release includes about 70 bug fixes after the previous release, and also includes several security fixes. -Please check the topics below for details. - -* [CVE-2017-17742: HTTP response splitting in WEBrick](/en/news/2018/03/28/http-response-splitting-in-webrick-cve-2017-17742/) -* [CVE-2018-8777: DoS by large request in WEBrick](/en/news/2018/03/28/large-request-dos-in-webrick-cve-2018-8777/) -* [CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir](/en/news/2018/03/28/unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914/) -* [CVE-2018-8778: Buffer under-read in String#unpack](/en/news/2018/03/28/buffer-under-read-unpack-cve-2018-8778/) -* [CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket](/en/news/2018/03/28/poisoned-nul-byte-unixsocket-cve-2018-8779/) -* [CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir](/en/news/2018/03/28/poisoned-nul-byte-dir-cve-2018-8780/) -* [Multiple vulnerabilities in RubyGems](/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/) - -See the [ChangeLog](https://svn.ruby-lang.org/repos/ruby/tags/v2_3_7/ChangeLog) for details. - -After this release, we will end the normal maintenance phase of Ruby 2.3, -and start the security maintenance phase of it. -This means that after the release of 2.3.7 we will never backport any bug fixes -to 2.3 except security fixes. -The term of the security maintenance phase is scheduled for 1 year. -By the end of this term, official support of Ruby 2.3 will be over. -Therefore, we recommend that you start planning to upgrade to Ruby 2.5 or 2.4. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.bz2) - - SIZE: 14421177 bytes - SHA1: 3bb88965405da5e4de2432eeb445fffa8a66fb33 - SHA256: 18b12fafaf37d5f6c7139c1b445355aec76baa625a40300598a6c8597fc04d8e - SHA512: e72754f7703f0706c4b0bccd053035536053451fe069a55427984cc0bc5692b86bd51c243c5f62f78527c66b08300d2e4aa19b73e6ded13d6020aa2450e66a7d - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.gz) - - SIZE: 17859100 bytes - SHA1: 540996fec64984ab6099e34d2f5820b14904f15a - SHA256: 35cd349cddf78e4a0640d28ec8c7e88a2ae0db51ebd8926cd232bb70db2c7d7f - SHA512: 1ceccf00981d6d60e7587e89a04cc028f976950313ee445db5afd03e323472d3e69a35423733b24f9cbd9729f034cf80d2233b5c159764839f5bee4ca7052fe0 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.xz) - - SIZE: 11438124 bytes - SHA1: c489248730cbce7721edd3e97de81e68eec938b2 - SHA256: c61f8f2b9d3ffff5567e186421fa191f0d5e7c2b189b426bb84498825d548edb - SHA512: fd91c8db3d3aa4cc962a62f27b4d1a71f6b5567ab836e6dbfbbb1553eb269d11e12faf9e36af6c489c33b54fd89dab99bfe81a563158b704877f0628d6f5bc5a - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.zip) - - SIZE: 19911423 bytes - SHA1: ec6870b39125238d8d57d642225592896ed3b6d9 - SHA256: ffa42eeff928624a05dc7ad39426c855c6e9a757417f17b6fe9e54664ec91012 - SHA512: c85255a7f43c7df2fb11be4f9aa96e2ae70a94d3e963ccff4d8c1349ad6d455d9a436812efb24c91e451e68b8f81e5d335c6d5811b2a0e945a7070c305054434 - -## Release Comment - -Thanks to everyone who helped with this release. - -The maintenance of Ruby 2.3, including this release, is based on the “Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2018-03-28-ruby-2-4-4-released.md b/fa/news/_posts/2018-03-28-ruby-2-4-4-released.md deleted file mode 100644 index 33b693e688..0000000000 --- a/fa/news/_posts/2018-03-28-ruby-2-4-4-released.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.4 Released" -author: "nagachika" -translator: -date: 2018-03-28 17:10:00 +0000 -lang: en ---- - -Ruby 2.4.4 has been released. - -This release includes some bug fixes and some security fixes. - -* [CVE-2017-17742: HTTP response splitting in WEBrick](/en/news/2018/03/28/http-response-splitting-in-webrick-cve-2017-17742/) -* [CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir](/en/news/2018/03/28/unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914/) -* [CVE-2018-8777: DoS by large request in WEBrick](/en/news/2018/03/28/large-request-dos-in-webrick-cve-2018-8777/) -* [CVE-2018-8778: Buffer under-read in String#unpack](/en/news/2018/03/28/buffer-under-read-unpack-cve-2018-8778/) -* [CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket](/en/news/2018/03/28/poisoned-nul-byte-unixsocket-cve-2018-8779/) -* [CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir](/en/news/2018/03/28/poisoned-nul-byte-dir-cve-2018-8780/) -* [Multiple vulnerabilities in RubyGems](/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/) - - -There are also some bug fixes. -See [commit logs](https://github.com/ruby/ruby/compare/v2_4_3...v2_4_4) for more details. - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.bz2> - - SIZE: 12659705 bytes - SHA1: 1cc548ba3eb821e29ab92ac13e1d5c7bf23b1526 - SHA256: 45a8de577471b90dc4838c5ef26aeb253a56002896189055a44dc680644243f1 - SHA512: ae632852a5f413561d8134e9ef3bb82adb37317696dd293ef92cb76709ecd45718f14116ecce35b12f1c2dd53ccae8dabc7a924a270072b697512d11f4922347 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.gz> - - SIZE: 14225338 bytes - SHA1: ec82b0d53bd0adad9b19e6b45e44d54e9ec3f10c - SHA256: 254f1c1a79e4cc814d1e7320bc5bdd995dc57e08727d30a767664619a9c8ae5a - SHA512: fa1f6d3a4856046d4f9c3e652be225ae67f3e9ff0d117b6ed327d58cfb717fb9b1ce81d06a3302e486e7da0b5f67b16341666ceb02a554a428d221d008263ed8 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.xz> - - SIZE: 10049304 bytes - SHA1: 0eac83a0818e1d6bc661abd9f90457cff8868cff - SHA256: 1d0034071d675193ca769f64c91827e5f54cb3a7962316a41d5217c7bc6949f0 - SHA512: 4dc112a149273d4221484ccbf1260c6c5fcad7e0a6e4bc91e4ef69cbc093d3191f7abd71420f80d680f8ea5d111e6803ba2af32166aa501913639e6d5696fde0 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.zip> - - SIZE: 15685143 bytes - SHA1: 4ac11e6915c168a235b854014aa2a0d540cabd68 - SHA256: d0ca0561be0045f2e094f2ba94f1585e66e9c1e91fe6de3f3035f4d67dce7650 - SHA512: 79b655fda332d44097e108a76c4ff74f16930cd3ef3951c7988df325781aa0b3e724697107d964735f31a2457a835f08fa72c4eadd5ef7d3ccc1e6c9185f37e3 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped -us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2018-03-28-ruby-2-5-1-released.md b/fa/news/_posts/2018-03-28-ruby-2-5-1-released.md deleted file mode 100644 index ea09f2cb9d..0000000000 --- a/fa/news/_posts/2018-03-28-ruby-2-5-1-released.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.5.1 Released" -author: "naruse" -translator: -date: 2018-03-28 17:20:00 +0000 -lang: en ---- - -Ruby 2.5.1 has been released. - -This release includes some bug fixes and some security fixes. - -* [CVE-2017-17742: HTTP response splitting in WEBrick](/en/news/2018/03/28/http-response-splitting-in-webrick-cve-2017-17742/) -* [CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir](/en/news/2018/03/28/unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914/) -* [CVE-2018-8777: DoS by large request in WEBrick](/en/news/2018/03/28/large-request-dos-in-webrick-cve-2018-8777/) -* [CVE-2018-8778: Buffer under-read in String#unpack](/en/news/2018/03/28/buffer-under-read-unpack-cve-2018-8778/) -* [CVE-2018-8779: Unintentional socket creation by poisoned NUL byte in UNIXServer and UNIXSocket](/en/news/2018/03/28/poisoned-nul-byte-unixsocket-cve-2018-8779/) -* [CVE-2018-8780: Unintentional directory traversal by poisoned NUL byte in Dir](/en/news/2018/03/28/poisoned-nul-byte-dir-cve-2018-8780/) -* [Multiple vulnerabilities in RubyGems](/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/) - - -There are also some bug fixes. -See [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_5_1) for more details. - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz> - - SIZE: 15923244 bytes - SHA1: 93fafd57a724974b951957c522cdc4478a6bdc2e - SHA256: dac81822325b79c3ba9532b048c2123357d3310b2b40024202f360251d9829b1 - SHA512: 67badcd96fd3808cafd6bc86c970cd83aee7e5ec682f34e7353663d96211a6af314a4c818e537ec8ca51fbc0737aac4e28e0ebacf1a4d1e13db558b623a0f6b1 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.zip> - - SIZE: 19525307 bytes - SHA1: 4fe511496f1eea0c3c1ac0c5f75ef11168ad1695 - SHA256: 5d8e490896c8353aa574be56ca9aa52c250390e76e36cd23df450c0434ada4d4 - SHA512: 490a52081e740b37f06215740734e9a6598ee9b492995b3161d720b5b05beadb4570aa526b3df01f686881b1e259aa7d4a59c1f398989dc2d5f8250342d986f7 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2> - - SIZE: 14000644 bytes - SHA1: 251fdb5ac10783b036fe923aa7986be582062361 - SHA256: 0f5d20f012baca865381a055e73f22db814615fee3c68083182cb78a4b3b30cb - SHA512: 82e799ecf7257a9f5fe8691c50a478b0f91bd4bdca50341c839634b0da5cd76c5556965cb9437264b66438434c94210c949fe9dab88cbc5b3b7fa34b5382659b - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.xz> - - SIZE: 11348108 bytes - SHA1: 0fb5da56f9e5fca45e36aa24ba842d935d1691c2 - SHA256: 886ac5eed41e3b5fc699be837b0087a6a5a3d10f464087560d2d21b3e71b754d - SHA512: 31bacf58469953282cd5d8b51862dcf4b84dedb927c1871bc3fca32fc157fe49187631575a70838705fe246f4555647577a7ecc26894445a7d64de5503dc11b4 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped -us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2018-03-28-unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914.md b/fa/news/_posts/2018-03-28-unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914.md deleted file mode 100644 index ef992ed3e7..0000000000 --- a/fa/news/_posts/2018-03-28-unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: news_post -title: "CVE-2018-6914: Unintentional file and directory creation with directory traversal in tempfile and tmpdir" -author: "usa" -translator: -date: 2018-03-28 14:00:00 +0000 -tags: security -lang: en ---- - -There is an unintentional directory creation vulnerability in tmpdir library bundled with Ruby. -And there is also an unintentional file creation vulnerability in tempfile library bundled with Ruby, because it uses tmpdir internally. -This vulnerability has been assigned the CVE identifier [CVE-2018-6914](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6914). - -## Details - -`Dir.mktmpdir` method introduced by tmpdir library accepts the prefix and the suffix of the directory which is created as the first parameter. -The prefix can contain relative directory specifiers `"../"`, so this method can be used to target any directory. -So, if a script accepts an external input as the prefix, and the targeted directory has inappropriate permissions or the ruby process has inappropriate privileges, the attacker can create a directory or a file at any directory. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.2 series: 2.2.9 and earlier -* Ruby 2.3 series: 2.3.6 and earlier -* Ruby 2.4 series: 2.4.3 and earlier -* Ruby 2.5 series: 2.5.0 and earlier -* Ruby 2.6 series: 2.6.0-preview1 -* prior to trunk revision r62990 - -## Credit - -Thanks to [ooooooo_q](https://hackerone.com/ooooooo_q) for reporting the issue. - -## History - -* Originally published at 2018-03-28 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-05-31-ruby-2-6-0-preview2-released.md b/fa/news/_posts/2018-05-31-ruby-2-6-0-preview2-released.md deleted file mode 100644 index e873b88acd..0000000000 --- a/fa/news/_posts/2018-05-31-ruby-2-6-0-preview2-released.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.6.0-preview2 Released" -author: "naruse" -translator: -date: 2018-05-31 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.6.0-preview2. - -Ruby 2.6.0-preview2 is the second preview toward Ruby 2.6.0. -This preview2 is released earlier than usual because it includes an important new feature, JIT. - -## JIT - -Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler. - -JIT compiler aims to improve performance of any Ruby program execution. -Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which prints C code to a disk and spawns common C compiler process to generate native code. -See also: [MJIT organization by Vladimir Makarov](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). - -How to use: Just specify `--jit` in command line or `$RUBYOPT` environment variable. -Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. - -The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. -Currently JIT compiler is supported only when Ruby is built by gcc or clang and the compiler is available on runtime. Otherwise you can't use it for now. - -As of 2.6.0-preview2, we're just preparing infrastructure for JIT and very few optimizations are implemented. -You can measure some of potential improvements in micro benchmarks with this release, but it is NOT ready for benchmarking final performance of Ruby's JIT compiler, especially for larger programs like Rails applications. - -We're going to implement method iniling in JIT compiler, which is expected to increase Ruby's performance in order of magnitude. -Also, we're planning to increase the supported platforms, and the next plan is to support Visual Studio. - -Stay tuned for the new age of Ruby's performance. - -## RubyVM::AST [Experimental] - -Ruby 2.6 introduces `RubyVM::AST` module. - -This module has `parse` method which parses a given ruby code of string and returns AST (Abstract Syntax Tree) nodes, and `parse_file` method which parses a given ruby code file and returns AST nodes. - -`RubyVM::AST::Node` class is also introduced you can get location information and children nodes from `Node` objects. This feature is experimental. Compatibility of the structure of AST nodes are not guaranteed. - -## New Features - -* Add a new alias `then` to `Kernel#yield_self`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) - -* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL] - -* constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) - -* endless range [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) - - An endless range, `(1..)`, is introduced. It works as it has no end. This shows typical use cases: - - ary[1..] # identical to ary[1..-1] without magical -1 - (1..).each {|index| ... } # inifinite loop from index 1 - ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { ... } - -* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) - - This method returns the source location of binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). So, users should use this newly-introduced method instead of `Kernel#eval`. - -* Add `:exception` option to let `Kernel.#system` raise error instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) - -## Performance improvements - -* Speedup `Proc#call` because we dont' need to care about `$SAFE` any more. - [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) - - With `lc_fizzbuzz` benchmark which uses `Proc#call` so many times we can measure - x1.4 improvements [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212). - -* Speedup `block.call` where `block` is passed block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) - - Ruby 2.5 improves block passing performance. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) - Additionally, Ruby 2.6 improves the performance of passed block calling. - With micro-benchmark we can observe x2.6 improvement. - -## Other notable changes since 2.5 - -* `$SAFE` is a process global state and we can set `0` again. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) - -* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) - -* Merge RubyGems 3.0.0.beta1 - -See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_preview2/NEWS) -or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview2) -for details. - -With those changes, -[4699 files changed, 45744 insertions(+), 30885 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview2) -since Ruby 2.5.0! - -Enjoy programming with Ruby 2.6.0-preview2! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.tar.gz> - - SIZE: 16170732 bytes - SHA1: 6867b00e81af0b70fcb6f1aa7fc22d89d48a7d12 - SHA256: ee15ab35f17c942b1f41bd792f2494f639affff6e03babf44708b72fdbb6de34 - SHA512: 95c5a277785dfeb3006503e1b9ccccefdf6ce29669d4576f0191ee6986ba0e3567fbbed18a8d2b1f147d637434e4a3a4fdf47d84995e10ad4a354950e9092690 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.zip> - - SIZE: 19850776 bytes - SHA1: eba80a09b552ce3142fd571ff5867a13736d170e - SHA256: 97fc187b90570fce110d22803a319ab04e68700692b2b6b4e9961886f1a931e5 - SHA512: d5501819635bda64ac3dc717815652b692302b44a7cdf4c08edfa5cb9ec7f79a70fffc534879b316a4a9584825ed3c0948667beae2d7c313de58583931b981f4 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.tar.bz2> - - SIZE: 14209461 bytes - SHA1: a9b1b4f359601b94b3f5b77115fcbf3790ff69cd - SHA256: d8ede03d5ad3abd9d2c81cf0ad17a41d22b747c003cc16fd59befb2aaf48f0b2 - SHA512: 3872227e9b1c97c206d19bf1e6ce15a38ee15a26c431b4436605dea67affcf16372358984df76b35e7abaa902c15c16f533ac7af47e3031dea9451bbe459b693 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.tar.xz> - - SIZE: 11525372 bytes - SHA1: e795abe1a4f828b3d851f7148b4bf6c9d9a7e7fd - SHA256: 00ddfb5e33dee24469dd0b203597f7ecee66522ebb496f620f5815372ea2d3ec - SHA512: bef3e90e97d6e58889cd500c591c579b728ca5833022b690182c0bf4d661e437b3a2ca33470dac35fcf693897819b9d7f500c0f71b707e2fcdcb0644028f2c03 diff --git a/fa/news/_posts/2018-06-20-support-of-ruby-2-2-has-ended.md b/fa/news/_posts/2018-06-20-support-of-ruby-2-2-has-ended.md deleted file mode 100644 index 6930364352..0000000000 --- a/fa/news/_posts/2018-06-20-support-of-ruby-2-2-has-ended.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: news_post -title: "Support of Ruby 2.2 has ended" -author: "antonpaisov" -translator: -date: 2018-06-20 00:00:00 +0000 -lang: en ---- - -We announce that all support of the Ruby 2.2 series has ended. - -After the release of Ruby 2.2.7 on March 28, 2017, -the support of the Ruby 2.2 series was in the security maintenance phase. -Now, after one year has passed, this phase has ended. -Therefore, on March 31, 2018, all support of the Ruby 2.2 series has ended. -Bug and security fixes from more recent Ruby versions will no longer be -backported to 2.2, and no further patch release of 2.2 will be released. -We highly recommend that you upgrade to Ruby 2.5 or 2.4 as soon as possible. - - -## About currently supported Ruby versions - -### Ruby 2.5 series - -Currently in normal maintenance phase. -We will backport bug fixes and release with the fixes whenever necessary. -And, if a critical security issue is found, we will release an urgent fix -for it. - -### Ruby 2.4 series - -Currently in normal maintenance phase. -We will backport bug fixes and release with the fixes whenever necessary. -And, if a critical security issue is found, we will release an urgent fix -for it. - -### Ruby 2.3 series - -Currently in security maintenance phase. -We will never backport any bug fixes to 2.3 except security fixes. -If a critical security issue is found, we will release an urgent fix for it. -We are planning to end the support of the Ruby 2.3 series at the end of -March 2019. diff --git a/fa/news/_posts/2018-10-17-not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396.md b/fa/news/_posts/2018-10-17-not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396.md deleted file mode 100644 index 73b7616aa2..0000000000 --- a/fa/news/_posts/2018-10-17-not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: news_post -title: "CVE-2018-16396: Tainted flags are not propagated in Array#pack and String#unpack with some directives" -author: "usa" -translator: -date: 2018-10-17 14:00:00 +0000 -tags: security -lang: en ---- - -In `Array#pack` and `String#unpack` with some formats, the tainted flags -of the original data are not propagated to the returned string/array. -This vulnerability has been assigned the CVE identifier -[CVE-2018-16396](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16396). - -## Details - -The `Array#pack` method converts the receiver's contents into a string with -a specified format. If the receiver contains some tainted objects, the -returned string also should be tainted. The `String#unpack` method which -converts the receiver into an array also should propagate its tainted -flag to the objects contained in the returned array. -But, with the `B`, `b`, `H`, and `h` directives, the tainted flags are not -propagated. So, if a script processes unreliable inputs by `Array#pack` -and/or `String#unpack` with these directives and checks the reliability -with tainted flags, the check might be wrong. - -All users running an affected release should upgrade immediately. - -## Affected Versions - -* Ruby 2.3 series: 2.3.7 and earlier -* Ruby 2.4 series: 2.4.4 and earlier -* Ruby 2.5 series: 2.5.1 and earlier -* Ruby 2.6 series: 2.6.0-preview2 and earlier -* prior to trunk revision r65125 - -## Credit - -Thanks to [Chris Seaton](https://hackerone.com/chrisseaton) -for reporting the issue. - -## History - -* Originally published at 2018-10-17 14:00:00 (UTC) diff --git a/fa/news/_posts/2018-10-17-openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395.md b/fa/news/_posts/2018-10-17-openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395.md deleted file mode 100644 index ed99905c8f..0000000000 --- a/fa/news/_posts/2018-10-17-openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: news_post -title: "CVE-2018-16395: OpenSSL::X509::Name equality check does not work correctly" -author: "usa" -translator: -date: 2018-10-17 14:00:00 +0000 -tags: security -lang: en ---- - -The equality check of `OpenSSL::X509::Name` is not correct in the openssl -extension library bundled with Ruby. -This vulnerability has been assigned the CVE identifier -[CVE-2018-16395](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16395). - -## Details - -An instance of `OpenSSL::X509::Name` contains entities such as CN, C, -and so on. Some two instances of `OpenSSL::X509::Name` are equal only -when all entities are exactly equal. However, there is a bug that the -equality check is not correct if the value of an entity of the argument -(right-hand side) starts with the value of the receiver (left-hand side). -So, if a malicious X.509 certificate is passed to compare with an -existing certificate, there is a possibility to be judged incorrectly -that they are equal. - -It is strongly recommended for Ruby users to upgrade your Ruby installation -or take one of the following workarounds as soon as possible. - -## Affected Versions - -* Ruby 2.3 series: 2.3.7 and earlier -* Ruby 2.4 series: 2.4.4 and earlier -* Ruby 2.5 series: 2.5.1 and earlier -* Ruby 2.6 series: 2.6.0-preview2 and earlier -* prior to trunk revision r65139 - -## Workaround - -The openssl 2.1.2 gem or later includes a fix for the vulnerability, -so upgrade the openssl gem to the latest version if you are using Ruby 2.4 -or a later series. - -``` -gem install openssl -v ">= 2.1.2" -``` - -However, in the Ruby 2.3 series, you can not override the bundled version -of openssl with the openssl gem. -Please upgrade your Ruby installation to the latest version. - -## Credit - -Thanks to [Tyler Eckstein](https://hackerone.com/tylereckstein) -for reporting the issue. - -## History - -* Originally published at 2018-10-17 14:00:00 (UTC) -* Mention the fixed revision of trunk at 2018-10-19 00:00:00 (UTC) diff --git a/fa/news/_posts/2018-10-17-ruby-2-3-8-released.md b/fa/news/_posts/2018-10-17-ruby-2-3-8-released.md deleted file mode 100644 index fdca2242c6..0000000000 --- a/fa/news/_posts/2018-10-17-ruby-2-3-8-released.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.3.8 Released" -author: "usa" -translator: -date: 2018-10-17 17:00:00 +0000 -lang: en ---- - -Ruby 2.3.8 has been released. - -This release includes several security fixes. -Please check the topics below for details. - -* [CVE-2018-16396: Tainted flags are not propagated in Array#pack and String#unpack with some directives](/en/news/2018/10/17/not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396/) -* [CVE-2018-16395: OpenSSL::X509::Name equality check does not work correctly](/en/news/2018/10/17/openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395/) - -This release also includes a non-security fix to support Visual Studio 2014 -with Windows 10 October 2018 Update for maintenance reasons. - -Ruby 2.3 is now under the state of the security maintenance phase, until -the end of March of 2019. After that date, maintenance of Ruby 2.3 -will be ended. We recommend you start planning the migration to newer -versions of Ruby, such as 2.5 or 2.4. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.bz2) - - SIZE: 14418609 bytes - SHA1: 91b31abdba00a346c155fd32bd32d3cec3b73bc4 - SHA256: 4d1a3a88e8cf9aea624eb73843fbfc60a9a281582660f86d5e4e00870397407c - SHA512: 6d79e0d25757fd37188a8db3e630a52539bce7927fcb779a2ce9a97b9e5f330753035c16843552f1a1fb6c9a1e5c0f916b3cc8b5c0bfe81e20f35f8442e40ae8 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.gz) - - SIZE: 17858806 bytes - SHA1: 69311991a9cd2c8e3c86a0dbbaaf915ae91f0bec - SHA256: b5016d61440e939045d4e22979e04708ed6c8e1c52e7edb2553cf40b73c59abf - SHA512: 43b02f2f9de6baf281f09a49fd07367127b4de1fb14473380d06bfa7667990d8f722ae2d33cf7d15b02f7e799515f21aebd308897c4c2a5461ebab4049d6c7ef - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.xz) - - SIZE: 11465792 bytes - SHA1: 9771acdad851bbf0ef349bb7da5d0ffc91a860ed - SHA256: 910f635d84fd0d81ac9bdee0731279e6026cb4cd1315bbbb5dfb22e09c5c1dfe - SHA512: 06373050e6c1af9cb6a5863aef878b21c8a45fd0e68414e3d546cb73ec3028207d3acc0a9326428f172b9347a30bbe69a16f9dc0bdb739161d677adb2d888095 - -* [https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.zip](https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.zip) - - SIZE: 19911652 bytes - SHA1: ad9e0ec7c874701832c9e224eb5b9e2258f3a041 - SHA256: ec9792d0473a22954ad25cd0c531fc672679c1a5eaeefa08caf9e1288852796f - SHA512: 732d69cd55f1c273a02005306720fd8fc9d77398177db9509452be31820976b54b30319d9e6bc36fb6bcd7af656f807ef6c26d8955012c8b20424912a2f51bf8 - -## Release Comment - -Thanks to everyone who helped with this release. diff --git a/fa/news/_posts/2018-10-17-ruby-2-4-5-released.md b/fa/news/_posts/2018-10-17-ruby-2-4-5-released.md deleted file mode 100644 index 8c3147bc57..0000000000 --- a/fa/news/_posts/2018-10-17-ruby-2-4-5-released.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.5 Released" -author: "usa" -translator: -date: 2018-10-17 17:00:00 +0000 -lang: en ---- - -Ruby 2.4.5 has been released. - -This release includes about 40 bug fixes after the previous release, -and also includes several security fixes. -Please check the topics below for details. - -* [CVE-2018-16396: Tainted flags are not propagated in Array#pack and String#unpack with some directives](/en/news/2018/10/17/not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396/) -* [CVE-2018-16395: OpenSSL::X509::Name equality check does not work correctly](/en/news/2018/10/17/openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395/) - -See the [commit logs](https://github.com/ruby/ruby/compare/v2_4_4...v2_4_5) -for details. - -## Download - -* [https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.bz2](https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.bz2) - - SIZE: 12667524 bytes - SHA1: 0e1f184556507c22bc59054496c0af7cf28fb188 - SHA256: 276c8e73e51e4ba6a0fe81fb92669734e741ccea86f01c45e99f2c7ef7bcd1e3 - SHA512: 7034fcaeaee41f14bc0ecce0d3d93bd1abe95310e1a0b95fac66eaba867adfb2bf7ba4d0d70d67a15ce8df16052dee405c38cdb18987602e64a2f701d37d3df0 - -* [https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.gz](https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.gz) - - SIZE: 14232887 bytes - SHA1: 4d650f302f1ec00256450b112bb023644b6ab6dd - SHA256: 6737741ae6ffa61174c8a3dcdd8ba92bc38827827ab1d7ea1ec78bc3cefc5198 - SHA512: 39863b404b02bb3d2430fd19fb057bdded5e816842a1a1f00092de69cc360db836225b2186e18b6ee099ec5e8c60f89178a4297b2d221234b4962c70594c2b8e - -* [https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.xz](https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.xz) - - SIZE: 10064712 bytes - SHA1: b5be590b37487248da3a85541a62fb81f7f7e29a - SHA256: 2f0cdcce9989f63ef7c2939bdb17b1ef244c4f384d85b8531d60e73d8cc31eeb - SHA512: 658f676c623109f4c7499615e191c98c3dd72cfcaeeaf121337d0b8a33c5243145edd50ec5e2775f988e3cd19788984f105fa165e3049779066566f67172c1b4 - -* [https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.zip](https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.zip) - - SIZE: 15694028 bytes - SHA1: 0bded7dfabfce5615162a1acd1341966a63e40f4 - SHA256: 33694b03ac178cf96aa728b74de7b0bc5d848fcfabc64a7c74ea093198142601 - SHA512: 9baec2b33604d5b2180b83bef9b39349d3f73b2eb5a7d44410572d893f76e6a0e1c39c572e6084a4e2466ca148ff2f377b5458144fe9b859a80cdf7b41fd5d72 - -## Release Comment - -Thanks to everyone who helped with this release. - -The maintenance of Ruby 2.4, including this release, is based on the -“Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2018-10-17-ruby-2-5-2-released.md b/fa/news/_posts/2018-10-17-ruby-2-5-2-released.md deleted file mode 100644 index 9c00fe1d89..0000000000 --- a/fa/news/_posts/2018-10-17-ruby-2-5-2-released.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.5.2 Released" -author: "nagachika" -translator: -date: 2018-10-17 14:00:00 +0000 -lang: en ---- - -Ruby 2.5.2 has been released. - -This release includes some bug fixes and some security fixes. - -* [CVE-2018-16396: Tainted flags are not propagated in Array#pack and String#unpack with some directives](/en/news/2018/10/17/not-propagated-taint-flag-in-some-formats-of-pack-cve-2018-16396/) -* [CVE-2018-16395: OpenSSL::X509::Name equality check does not work correctly](/en/news/2018/10/17/openssl-x509-name-equality-check-does-not-work-correctly-cve-2018-16395/) - -There are also some bug fixes. -See the [commit logs](https://github.com/ruby/ruby/compare/v2_5_1...v2_5_2) -for more details. - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.2.tar.bz2> - - SIZE: 13592827 bytes - SHA1: 562d6b8be5a0804ed7617bb0465b288d44b2defc - SHA256: ea3bcecc3b30cee271b4decde5e9ff3e17369d5fd1ed828d321c198307c9f0df - SHA512: 9f9388a162a3ae9c14ec8999fa3b12ff5397de14f55996cc8761d21c757113db37ace4d326b9606de7ad3a5875aa94fec900dd9b81b2fb0dff558c39422f4aa1 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.2.tar.gz> - - SIZE: 15600481 bytes - SHA1: 7e503e75621b69cedb1d8b3fa2bee5aef2f1a714 - SHA256: b32340e64a0c7ecbf31486c41fe429a55c7984d980eca7a78138367d9209f471 - SHA512: 9aee69d2ac6aefe2d81649055ba7b99e4e58cf203ac75083ba1b35b3a4fd7f72ee257e26ca80460da5c2a7817fd507aecec9c143f170e16980625e95eeb31686 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.2.tar.xz> - - SIZE: 11071052 bytes - SHA1: ea352c9bcaa47ab094cdec0f4946c62b1a1769d7 - SHA256: 8be6b6afdf09957a6e2c2a6ada4b1982a391a828b34e49072c4beb60febb678d - SHA512: b6b805b18ba6da7b28c7e2bdf3da7eaf1dcc15ae22744228d032e8ddec2fbba4cc4fb822b9ef7f6b561052113a4f28dc50ccfa4f00e3728a35ce27137f4a70e6 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.2.zip> - - SIZE: 18786735 bytes - SHA1: 98fdbae195bbbc3f131d49d9e60bf3fbb8b56111 - SHA256: f148947fee070f30826ef0bda77228b9c374b388050db81ad07f5cd8608e3624 - SHA512: 1b804337099ecfa045eecf1a4e3f35fa786bd6e835dc50267d6a3792a782b193ec9708564e3ac5169a95ef4afc2c131782af937dafd8122117e8cff577736c0f - -## Release Comment - -Many committers, developers, and users who provided bug reports helped -us to make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2018-10-18-ruby-2-5-3-released.md b/fa/news/_posts/2018-10-18-ruby-2-5-3-released.md deleted file mode 100644 index 4ed5f3ca39..0000000000 --- a/fa/news/_posts/2018-10-18-ruby-2-5-3-released.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.5.3 Released" -author: "nagachika" -translator: -date: 2018-10-18 12:30:00 +0000 -lang: en ---- - -Ruby 2.5.3 has been released. - -There were some missing files in the release packages of 2.5.2 which are -necessary for building. -See details in [[Bug #15232]](https://bugs.ruby-lang.org/issues/15232). - -This release is just for fixing the packaging issue. -It does not contain any additional bug fixes from 2.5.2. - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.bz2> - - SIZE: 14159874 bytes - SHA1: d47ede7dab79de25fcc274dfcad0f92f389a4313 - SHA256: 228a787ba68a7b20ac6e1d5af3d176d36e8ed600eb754d6325da341c3088ed76 - SHA512: 6fe89fe9d406bb454457442f908774577369ab2501da4fd15725ccbab77675b88faad739a6c8ad1c7b6690b439a27de5e08035b7546406cdeca65c7b295e2c77 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz> - - SIZE: 15972577 bytes - SHA1: f919a9fbcdb7abecd887157b49833663c5c15fda - SHA256: 9828d03852c37c20fa333a0264f2490f07338576734d910ee3fd538c9520846c - SHA512: d13dc55655076f7d983481155cccc06eb51c51c8eabfc3edcc22e1dabad931eb28c0b2a23d9589b5132faf18c3c0077f8719cf33a91d71bb72213d306edde1a0 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.xz> - - SIZE: 11453336 bytes - SHA1: 5acbdea1ced1e36684268e1cb6f8a4e7669bce77 - SHA256: 1cc9d0359a8ea35fc6111ec830d12e60168f3b9b305a3c2578357d360fcf306f - SHA512: 6dcae0e8d0bacdb2cbde636e2030596308b5af53f2eb85d3adccb67b02e6f8f9751e8117d12f8484829fdd9d995f6e327f701d9b433bcf94f1f59d13a1fd7518 - -* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.zip> - - SIZE: 19170700 bytes - SHA1: c34a5a47d5ac64ef25368b5dffc3df2854531d7a - SHA256: 622ffa051470e967f3e51cc6347783e93d9b09a4557d4f5a78efb87b959f87a3 - SHA512: 7807641e65516670dc10426364a3d45ecfb65555827e551b4a595bad373e1292797414abf0f67bed5d66815090afe6a6a3e3e29f8b7dbc4da462c43a3e8791b6 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped -us to make this release. -Thanks for their contributions. - -Especially thank you wanabe for reporting the issue about the 2.5.2 packages. diff --git a/fa/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md b/fa/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md deleted file mode 100644 index 8c1fdca43f..0000000000 --- a/fa/news/_posts/2018-11-06-ruby-2-6-0-preview3-released.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.6.0-preview3 Released" -author: "naruse" -translator: -date: 2018-11-06 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.6.0-preview3. - -Ruby 2.6.0-preview3 is the third preview toward Ruby 2.6.0. -This preview3 is released to test new features before coming Release Candidate. - -## JIT - -Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler. - -JIT compiler aims to improve performance of any Ruby program execution. -Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which prints C code to a disk and spawns common C compiler process to generate native code. -See also: [MJIT organization by Vladimir Makarov](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). - -How to use: Just specify `--jit` in command line or `$RUBYOPT` environment variable. -Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. - -The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. -JIT compiler is supported when Ruby is built by GCC, Clang, or Microsoft VC++, which needs to be available on runtime. Otherwise you can't use it for now. - -As of Ruby 2.6.0 preview3, we achieved 1.7x faster performance than Ruby 2.5 on CPU-intensive non-trivial benchmark workload called Optcarrot <https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208>. We're going to improve the performance on memory-intensive workload like Rails application as well. - -Stay tuned for the new age of Ruby's performance. - -## RubyVM::AST [Experimental] - -Ruby 2.6 introduces `RubyVM::AST` module. - -This module has `parse` method which parses a given ruby code of string and returns AST (Abstract Syntax Tree) nodes, and `parse_file` method which parses a given ruby code file and returns AST nodes. -`RubyVM::AST::Node` class is also introduced. You can get location information and children nodes from `Node` objects. This feature is experimental. Compatibility of the structure of AST nodes are not guaranteed. - -## New Features - -* Add a new alias `then` to `Kernel#yield_self`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) - -* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL] - -* constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) - -* endless range [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) - - An endless range, `(1..)`, is introduced. It works as it has no end. This shows typical use cases: - - ary[1..] # identical to ary[1..-1] without magical -1 - (1..).each {|index| ... } # inifinite loop from index 1 - ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { ... } - -* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) - - This method returns the source location of binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). So, users should use this newly-introduced method instead of `Kernel#eval`. - -* Add `:exception` option to let `Kernel.#system` raise error instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) - -## Performance improvements - -* Speedup `Proc#call` because we don't need to care about `$SAFE` any more. - [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) - - With `lc_fizzbuzz` benchmark which uses `Proc#call` so many times we can measure - x1.4 improvements [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212). - -* Speedup `block.call` where `block` is passed block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) - - Ruby 2.5 improves block passing performance. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) - Additionally, Ruby 2.6 improves the performance of passed block calling. - With micro-benchmark we can observe x2.6 improvement. - -* Transient Heap (theap) is introduced. [Bug #14858] [Feature #14989] - theap is managed heap for short-living memory objects which are pointed by - specific classes (Array, Hash, Object, and Struct). For example, making small - and short-living Hash object is x2 faster. With rdoc benchmark, we observed - 6-7% performance improvement. - -## Other notable changes since 2.5 - -* `$SAFE` is a process global state and we can set `0` again. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) - -* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) - -* Merge RubyGems 3.0.0.beta2. `--ri` and `--rdoc` options was removed. Please use `--document` and `--no-document` options instead of them. - -* Merge [Bundler](https://github.com/bundler/bundler) as Default gems. - -See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_preview3/NEWS) -or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview3) -for details. - -With those changes, -[6474 files changed, 171888 insertions(+), 46617 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_preview3) -since Ruby 2.5.0! - -Enjoy programming with Ruby 2.6.0-preview3! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.tar.gz> - - SIZE: 17071670 bytes - SHA1: 67836fda11fa91e0b988a6cc07989fbceda025b4 - SHA256: 60243e3bd9661e37675009ab66ba63beacf5dec748885b9b93916909f965f27a - SHA512: 877278cd6e9b947f5bb6ed78136efb232dcc9c5c218b7236576171e7c3cd7f6b7d10d07d8402014a14aba1fcd1913a4370f0725c561ead41d8a3fe92029f7f76 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.zip> - - SIZE: 21537655 bytes - SHA1: 45f3c90dfffe03b746f21f24152666e361cbb41a - SHA256: 9152af9e700349dcfa2eec196dd91587d42d70a6837fa2c415ebba1167587be1 - SHA512: 335de36cf56706326f4acc4bbd35be01e0ac5fff30d0a69b2e1630ba4c78f0e711822d1623d0099a517c824b154917d2f60be192dfb143a422cf1d17b38e1183 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.tar.bz2> - - SIZE: 14973451 bytes - SHA1: 5f2df5d8c5a3888ccb915d36a3532ba32cda8791 - SHA256: 1f09a2ac1ab26721923cbf4b9302a66d36bb302dc45e72112b41d6fccc5b5931 - SHA512: d1693625723796e8902f3e4c4fae444f2912af9173489f7cf18c99db2a217afc971b082fce7089e39f8edd54d762d2b4e72843c8306ed29b05ccb15ac03dbb5b - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.tar.xz> - - SIZE: 12291692 bytes - SHA1: 7f8216247745215e9645568e7a02140f9a029b31 - SHA256: 9856d9e0e32df9e5cdf01928eec363d037f1a76dab2abbf828170647beaf64fe - SHA512: b4d3b17ecf96272c43cd7518c0b54dee63fc1150ad143e1d9c9d708506fe78676c80eb96cc47b8d46d1128bd483a53f16c944963a03d1f99f00131b74714df7b diff --git a/fa/news/_posts/2018-11-08-snap.md b/fa/news/_posts/2018-11-08-snap.md deleted file mode 100644 index 9dd8b48fbb..0000000000 --- a/fa/news/_posts/2018-11-08-snap.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: news_post -title: The official Ruby snap is available -author: Hiroshi SHIBATA -translator: -date: 2018-11-08 14:58:28 +0000 -lang: en ---- - -We released the official snap package of the Ruby language. - -<https://snapcraft.io/ruby> - -Snap is a package system developed by Canonical. It allows you to distribute -a software with its dependencies for many different Linux systems. -This solves the problem that a user cannot install the latest Ruby release -from the default repository of their system like in `rpm` or `apt`. - -On Ubuntu 16.04 or later, you can install the Ruby snap with the -following command: - -``` -sudo snap install ruby --classic -``` - -(If you use other Linux distributions, please refer to -<https://docs.snapcraft.io/installing-snapd/6735>.) - -Our snap uses the "channel" feature to release multiple Ruby series -concurrently. For example, without specifying a channel, currently -Ruby 2.5.3 will be installed. But if you want to use Ruby 2.4, -specify the 2.4 channel as follows: - -``` -sudo snap install ruby --classic --channel=2.4/stable -``` - -You can also use multiple channels. The following commands switch to Ruby 2.3: - -``` -sudo snap switch ruby --channel=2.3/stable -sudo snap refresh -``` - -Our snap sets the `GEM_HOME` and `GEM_PATH` environment variables -to `$HOME/.gem`. -So if you want to execute commands installed by gems, such as `rails` and -`rspec`, without using `bundle exec`, you have to add the following line -to your shell rc files (like `.bashrc`): - -``` -eval `ruby.env` -``` - -Since `$HOME/.gem` is shared by multiple versions, if you switch versions -and use them, you will need to recompile C extensions using the -`gem pristine --extensions` command. - -The initial version of the official Ruby snap has been released during -the Snapcraft summit held at the Canonical office in London on Nov 6-8th, 2018. -Any feedback is welcome at <https://github.com/ruby/snap.ruby>. - -Enjoy! diff --git a/fa/news/_posts/2018-11-29-fukuoka-ruby-award-2019.md b/fa/news/_posts/2018-11-29-fukuoka-ruby-award-2019.md deleted file mode 100644 index 5ebf6179e6..0000000000 --- a/fa/news/_posts/2018-11-29-fukuoka-ruby-award-2019.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: news_post -title: "2019 Fukuoka Ruby Award Competition - Entries to be judged by Matz" -author: "Fukuoka Ruby" -translator: -date: 2018-11-29 00:00:00 +0000 -lang: en ---- - -Dear Ruby Enthusiasts, - -The Government of Fukuoka, Japan together with "Matz" Matsumoto would like to invite you to enter the following Ruby competition. If you have developed an interesting Ruby program, please be encouraged to apply. - -2019 Fukuoka Ruby Award Competition - Grand Prize - 1 Million Yen! - -Entry Deadline: January 31, 2019 - - - -Matz and a group of panelists will select the winners of the Fukuoka Competition. The grand prize for the Fukuoka Competition is 1 million yen. Past grand prize winners include Rhomobile (USA) and APEC Climate Center (Korea). - -[http://myfukuoka.com/category/news/ruby-news/](http://myfukuoka.com/category/news/ruby-news/) - -Programs entered in the competition do not have to be written entirely in Ruby but should take advantage of the unique characteristics of Ruby. - -Projects must have been developed or completed within the past 12 months to be eligible. Please visit the following Fukuoka website for additional details or to enter: - -[http://www.digitalfukuoka.jp/events/185](http://www.digitalfukuoka.jp/events/185) -or -[http://myfukuoka.com/events/2019-fukuoka-ruby-award-guidelines-for-applicants/](http://myfukuoka.com/events/2019-fukuoka-ruby-award-guidelines-for-applicants/) - -[http://www.digitalfukuoka.jp/uploads/event_detail/file/465/RubyAward_ApplicationForm_2019.doc](http://www.digitalfukuoka.jp/uploads/event_detail/file/465/RubyAward_ApplicationForm_2019.doc) - -Please email the application form to award@f-ruby.com - -This year, there are the following special prizes: - -The winner of the AWS Prize will receive: - -* Amazon Echo (subject to change) -* AWS architect technical consultation - -The winner of the GMO Pepabo Prize will receive: - -* Lolipop! shared hosting service: 10-year free subscription of the Standard Plan, or JPY 100,000 coupon for the metered plan of the Managed Cloud -* Muumuu Domain DNS registration service: 10-year free subscription of one domain (for a domain that costs JPY 10,000 or less per year) - -The winner of the IIJ GIO Prize will receive: - -* IIJ GIO free coupon worth 500,000 yen (Up to 6 months) - -The winner of the Money Forward Prize will receive: - -* dinner with Money Forward's Ruby committers. -* a 10 years free ticket for the premium services of our personal financial management service "Money Forward". - -The winner of the Salesforce Prize will receive: - -* salesforce.com novelty goods - -"Matz will be testing and reviewing your source code thoroughly, so it's very meaningful to apply! The competition is free to enter." - -Thanks! diff --git a/fa/news/_posts/2018-12-06-ruby-2-6-0-rc1-released.md b/fa/news/_posts/2018-12-06-ruby-2-6-0-rc1-released.md deleted file mode 100644 index 58f415f403..0000000000 --- a/fa/news/_posts/2018-12-06-ruby-2-6-0-rc1-released.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.6.0-rc1 Released" -author: "naruse" -translator: -date: 2018-12-06 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.6.0-rc1. - -Ruby 2.6.0-rc1 is the first release candidate of Ruby 2.6.0. -It introduces some new features and performance improvements, for example: - -## JIT - -Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler. - -JIT compiler aims to improve performance of any Ruby program execution. -Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which prints C code to a disk and spawns common C compiler process to generate native code. -See also: [MJIT organization by Vladimir Makarov](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). - -How to use: Just specify `--jit` in command line or `$RUBYOPT` environment variable. -Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. - -The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. -JIT compiler is supported when Ruby is built by GCC, Clang, or Microsoft VC++, which needs to be available on runtime. Otherwise you can't use it for now. - -As of Ruby 2.6.0-rc1, we achieved 1.7x faster performance than Ruby 2.5 on CPU-intensive non-trivial benchmark workload called Optcarrot <https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208>. We're going to improve the performance on memory-intensive workload like Rails application as well. - -Stay tuned for the new age of Ruby's performance. - -## RubyVM::AbstractSyntaxTree [Experimental] - -Ruby 2.6 introduces `RubyVM::AbstractSyntaxTree` module. - -This module has `parse` method which parses a given ruby code of string and returns AST (Abstract Syntax Tree) nodes, and `parse_file` method which parses a given ruby code file and returns AST nodes. -`RubyVM::AbstractSyntaxTree::Node` class is also introduced. You can get location information and children nodes from `Node` objects. This feature is experimental. Compatibility of the structure of AST nodes are not guaranteed. - -## New Features - -* Add a new alias `then` to `Kernel#yield_self`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) - -* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL] - -* constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) - -* endless range [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) - - An endless range, `(1..)`, is introduced. It works as it has no end. This shows typical use cases: - - ary[1..] # identical to ary[1..-1] without magical -1 - (1..).each {|index| ... } # inifinite loop from index 1 - ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { ... } - -* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) - - This method returns the source location of binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). So, users should use this newly-introduced method instead of `Kernel#eval`. - -* Add `:exception` option to let `Kernel#system` raise error instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) - -* add the oneshot mode [[Feature#15022]](https://bugs.ruby-lang.org/issues/15022) - * This mode checks "whether each line was executed at least once or not", instead of "how many times each line was executed". A hook for each line is fired at most once, and after it is fired the hook flag is removed, i.e., it runs with zero overhead. - * Add `:oneshot_lines` keyword argument to Coverage.start. - * Add `:stop` and `:clear` keyword arguments to Coverage.result. If `clear` is true, it clears the counters to zero. If `stop` is true, it disables coverage measurement. - * Coverage.line_stub, which is a simple helper function that creates the "stub" of line coverage from a given source code. - -* `FileUtils#cp_lr`. [[Feature #4189]](https://bugs.ruby-lang.org/issues/4189) - -## Performance improvements - -* Speedup `Proc#call` because we don't need to care about `$SAFE` any more. - [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) - - With `lc_fizzbuzz` benchmark which uses `Proc#call` so many times we can measure - x1.4 improvements [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212). - -* Speedup `block.call` where `block` is passed block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) - - Ruby 2.5 improves block passing performance. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) - Additionally, Ruby 2.6 improves the performance of passed block calling. - With micro-benchmark we can observe x2.6 improvement. - -* Transient Heap (theap) is introduced. [[Bug #14858]](https://bugs.ruby-lang.org/issues/14858) [[Feature #14989]](https://bugs.ruby-lang.org/issues/14989) - theap is managed heap for short-living memory objects which are pointed by - specific classes (Array, Hash, Object, and Struct). For example, making small - and short-living Hash object is x2 faster. With rdoc benchmark, we observed - 6-7% performance improvement. - -## Other notable changes since 2.5 - -* `$SAFE` is a process global state and we can set `0` again. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) - -* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) - -* Supported Unicode version is updated to 11. It is planed to update 12 and 12.1 in future TEENY releases of Ruby 2.6. - -* Merge RubyGems 3.0.0.beta3. `--ri` and `--rdoc` options was removed. Please use `--document` and `--no-document` options instead of them. - -* Merge [Bundler](https://github.com/bundler/bundler) as Default gems. - -See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_rc1/NEWS) -or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc1) -for details. - -With those changes, -[6376 files changed, 227364 insertions(+), 51599 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc1) -since Ruby 2.5.0! - -Enjoy programming with Ruby 2.6.0-rc1! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc1.tar.gz> - - SIZE: 16823448 bytes - SHA1: 889db7731fd43f6dbf7f31ffdb0a29bba1a8d356 - SHA256: 6d6183639ed9c02320d7132e97c65489a39e24d8b55fc4ed35ac53d1189cb61d - SHA512: ad101adee5c43f3645561e73970f15d4e9141f707da69a92e224575c665949e18ca53389e5315fca2ea3934d77967a59e304353cde4a915537e7c4e4ee20be73 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc1.zip> - - SIZE: 20737499 bytes - SHA1: 457e39aee1978da5e42af42a6ad230421544aa07 - SHA256: 2bcdf468de499e4d6983d60d63dcc883f4c54fdc05a08a54eb93d315477bc4cc - SHA512: 0842fae8a199f6c1e76f5d775edbf468e18a54f0419324eb73595e0268c728c71733371d71dc2fa342105dbc487987ca5556948a9ef067276a7b5f552462802a - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc1.tar.bz2> - - SIZE: 14607078 bytes - SHA1: 269fe9d414d7731e4a63959fadffe5c50c08ce0e - SHA256: b4e9c0e8801946e9f0baba30948955f4341e9e04f363c206b7bd774208053eb5 - SHA512: cbd6281b2aab6fbce3f699c1ab57e5423304dca7a547a0b3cd4e8e980326dc7b85b2ca2bfaf3f3a648d40f4222fdf1740d81d422790ee7ae1ba1ed33eb11e3e8 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc1.tar.xz> - - SIZE: 11851908 bytes - SHA1: 3b93fdf1c5bd969ab4fe0a8176a6cf64e4597e6e - SHA256: 21d9d54c20e45ccacecf8bea4dfccd05edc52479c776381ae98ef6a7b4afa739 - SHA512: 3d93d8d80e4900e8b3a27f904ed60581cebc6c55f4ab7acafc81e95001f92f3ea4ddec2da6169b1ed5e0146f7b7c35c1c13b3243955d5825c72170834fe933f3 diff --git a/fa/news/_posts/2018-12-15-ruby-2-6-0-rc2-released.md b/fa/news/_posts/2018-12-15-ruby-2-6-0-rc2-released.md deleted file mode 100644 index 7e33e1a0ac..0000000000 --- a/fa/news/_posts/2018-12-15-ruby-2-6-0-rc2-released.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.6.0-rc2 Released" -author: "naruse" -translator: -date: 2018-12-15 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.6.0-rc2. - -Ruby 2.6.0-rc2 is the second release candidate of Ruby 2.6.0. -RC2 is released to test bundled Bundler 1.17 instead of 2.0. -It introduces some new features and performance improvements, for example: - -## JIT - -Ruby 2.6 introduces an initial implementation of a JIT (Just-in-time) compiler. - -The JIT compiler aims to improve performance of any Ruby program execution. -Unlike ordinary JIT compilers for other languages, Ruby's JIT compiler does JIT compilation in a unique way, which writes C code to a disk and spawns a common C compiler process to generate native code. -See also: [MJIT organization (by Vladimir Makarov)](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization). - -How to use: Just specify `--jit` in the command line or `$RUBYOPT` environment variable. -Specifying `--jit-verbose=1` allows to print basic information of ongoing JIT compilation. See `ruby --help` for other options. - -The main purpose of this JIT release is to provide a chance to check if it works for your platform and to find out security risks before the 2.6 release. -The JIT compiler is supported when Ruby is built by GCC, Clang, or Microsoft VC++, which needs to be available at runtime. Otherwise you can't use it for now. - -As of Ruby 2.6.0-rc2, we achieved 1.7x faster performance than Ruby 2.5 on a CPU-intensive non-trivial benchmark workload called Optcarrot <https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208>. We're going to improve the performance on memory-intensive workloads like Rails applications as well. - -Stay tuned for the new age of Ruby's performance. - -## RubyVM::AbstractSyntaxTree [Experimental] - -Ruby 2.6 introduces the `RubyVM::AbstractSyntaxTree` module. - -This module has a `parse` method which parses Ruby code from a given string and returns AST (Abstract Syntax Tree) nodes, and a `parse_file` method which parses Ruby code from a given file and returns AST nodes. -The `RubyVM::AbstractSyntaxTree::Node` class is also introduced. You can get location information and children nodes from `Node` objects. This feature is experimental. Compatibility of the structure of AST nodes is not guaranteed. - -## New Features - -* Add a new alias `then` to `Kernel#yield_self`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) - -* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL][[Feature #14606]](https://bugs.ruby-lang.org/issues/14606) - -* Constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) - -* Introduce endless ranges. [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) - - An endless range, `(1..)`, is introduced. It works as if it has no end. This shows typical use cases: - - ary[1..] # identical to ary[1..-1] without magical -1 - (1..).each {|index| block } # inifinite loop from index 1 - ary.zip(1..) {|elem, index| block } # ary.each.with_index(1) { } - -* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) - - This method returns the source location of the binding, a 2-element array of `__FILE__` and `__LINE__`. Traditionally, the same information could be retrieved by `eval("[__FILE__, __LINE__]", binding)`, but we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). So, users should use this newly-introduced method instead of `Kernel#eval`. - -* Add `:exception` option to let `Kernel#system` raise an exception on failure instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) - -* Add a oneshot mode to `Coverage`. [[Feature#15022]](https://bugs.ruby-lang.org/issues/15022) - - * This mode checks "whether each line was executed at least once or not", instead of "how many times each line was executed". A hook for each line is fired at most once, and after it is fired the hook flag is removed, i.e., it runs with zero overhead. - * Add `:oneshot_lines` keyword argument to Coverage.start. - * Add `:stop` and `:clear` keyword arguments to Coverage.result. If `clear` is true, it clears the counters to zero. If `stop` is true, it disables coverage measurement. - * Coverage.line_stub, which is a simple helper function that creates the "stub" of line coverage from a given source code. - -* Add `FileUtils#cp_lr`. [[Feature #4189]](https://bugs.ruby-lang.org/issues/4189) - -## Performance improvements - -* Speedup `Proc#call` because we don't need to care about `$SAFE` any more. - [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) - - With `lc_fizzbuzz` benchmark which uses `Proc#call` many times we can measure - x1.4 improvements. [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212). - -* Speedup `block.call` where `block` is passed block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) - - Ruby 2.5 improves block passing performance. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) - - Additionally, Ruby 2.6 improves the performance of passed block calling. - With micro-benchmark we can observe x2.6 improvement. - -* Transient Heap (theap) is introduced. [[Bug #14858]](https://bugs.ruby-lang.org/issues/14858) [[Feature #14989]](https://bugs.ruby-lang.org/issues/14989) - - theap is a managed heap for short-living memory objects which are pointed to by - specific classes (Array, Hash, Object, and Struct). For example, making a small - and short-living Hash object is x2 faster. With rdoc benchmark, we observed - 6-7% performance improvement. - -## Other notable changes since 2.5 - -* `$SAFE` now is a process global state and can be set to `0` again. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) - -* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments are changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) - -* Supported Unicode version is updated to 11. It is planed to update to 12 and 12.1 in future TEENY releases of Ruby 2.6. - -* Merge RubyGems 3.0.0.beta3. `--ri` and `--rdoc` options were removed. Please use `--document` and `--no-document` options instead. - -* Merge [Bundler](https://github.com/bundler/bundler) as default gem. - -See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_rc2/NEWS) -or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc2) -for details. - -With those changes, -[6411 files changed, 228864 insertions(+), 97600 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc2) -since Ruby 2.5.0! - -Enjoy programming with Ruby 2.6.0-rc2! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.gz> - - SIZE: 16723556 bytes - SHA1: a4d7f8c8c3584a60fe1a57d03d80162361fe3c78 - SHA256: 9c0245e96379246040f1fd0978f8e447e7f47cdccbdaffdb83302a995276b62b - SHA512: 789f608f93db6e12835911f3105d9abe2fabb67cd22dc3bafdff38716ac56974925738e7f7788ebef5bdf67b6fd91f84a4ee78a3e5d072cfc8ee0972de737b08 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.zip> - - SIZE: 20643747 bytes - SHA1: c1a2898949d929dd952880f1c1c2bac2ef2609b4 - SHA256: e8a446cf1f2ffc14483604de0a5e12c2578dd2f672ae87798ca2bbb9b7b73899 - SHA512: 2d06feae13f485f5da59574672b14d03881ed532d652648f94e2435f5d81df623b5ef532b8ba8e0b9bc4ee6baf7c0328a5610eab753a9020a0fea2673254c76c - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.bz2> - - SIZE: 14581998 bytes - SHA1: 94bbee97de4955e67effb7f512c58300617a3a09 - SHA256: b3d03e471e3136f43bb948013d4f4974abb63d478e8ff7ec2741b22750a3ec50 - SHA512: 9bfbe83fd3699b71bae2350801d8c967eb128e79b62a9d36fc0f011b83c53cab28a280939f4cc9f0a28f9bf02dce8eea30866ca4d06480dc44289400abf580ba - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.xz> - - SIZE: 11908088 bytes - SHA1: 13a7f06d832dc28989e3e4321490a6ba528ed023 - SHA256: d620b3d87b3190867304067f3ce77f5305f7ec1b2e73b09c17710c97c028986d - SHA512: a3dc43c0bc70dfdb9ff0d18b5b9797bbf332524f5d3bbb7940cf4e32286ca715808acfd11ebf3cdbe358a2466b7c6b5be3a7a784af7eb95c071fe1f8b4ab1261 diff --git a/fa/news/_posts/2018-12-25-ruby-2-6-0-released.md b/fa/news/_posts/2018-12-25-ruby-2-6-0-released.md deleted file mode 100644 index 3edae6e84b..0000000000 --- a/fa/news/_posts/2018-12-25-ruby-2-6-0-released.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.6.0 Released" -author: "naruse" -translator: -date: 2018-12-25 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.6.0. - -It introduces a number of new features and performance improvements, most notably: - - * A new JIT compiler. - * The `RubyVM::AbstractSyntaxTree` module. - -## JIT [Experimental] - -Ruby 2.6 introduces an initial implementation of a JIT (Just-In-Time) compiler. - -The JIT compiler aims to improve the performance of Ruby programs. Unlike traditional JIT compilers which operate in-process, Ruby's JIT compiler writes out C code to disk and spawns a common C compiler to generate native code. For more details about it, see the [MJIT organization by Vladimir Makarov](https://bugs.ruby-lang.org/projects/ruby/wiki/MJIT#MJIT-organization). - -In order to enable the JIT compiler, specify `--jit` on the command line or in the `$RUBYOPT` environment variable. Specifying `--jit-verbose=1` will cause the JIT compiler to print additional information. Read the output of `ruby --help` or the [documentation](https://bugs.ruby-lang.org/projects/ruby/wiki/MJIT#Basic-usage) for other options. - -The JIT compiler is supported when Ruby is built by GCC, Clang, or Microsoft VC++, which needs to be available at runtime. - -As of Ruby 2.6.0, we have achieved [1.7x faster performance](https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208) compared to Ruby 2.5 on a CPU-intensive, non-trivial benchmark called [Optcarrot](https://github.com/mame/optcarrot). However, it is still experimental and many other memory-intensive workloads like Rails applications might not benefit from it at the moment. For more details, see [Ruby 2.6 JIT - Progress and Future](https://medium.com/@k0kubun/ruby-2-6-jit-progress-and-future-84e0a830ecbf). - -Stay tuned for the new age of Ruby's performance. - -## `RubyVM::AbstractSyntaxTree` [Experimental] - -Ruby 2.6 introduces the `RubyVM::AbstractSyntaxTree` module. **Future compatibility of this module is not guaranteed**. - -This module has a `parse` method, which parses the given string as Ruby code and returns the AST (Abstract Syntax Tree) nodes of the code. The `parse_file` method opens and parses the given file as Ruby code and returns AST nodes. - -The `RubyVM::AbstractSyntaxTree::Node` class is also introduced. You can get source location and children nodes from `Node` objects. This feature is experimental. - -## Other Notable New Features - -* Add an alias of `Kernel#yield_self` named `#then`. [[Feature #14594]](https://bugs.ruby-lang.org/issues/14594) - -* Constant names may start with a non-ASCII capital letter. [[Feature #13770]](https://bugs.ruby-lang.org/issues/13770) - -* Introduce endless ranges. [[Feature #12912]](https://bugs.ruby-lang.org/issues/12912) - - An endless range, `(1..)`, works as if it has no end. Here are some typical use cases: - - ary[1..] # identical to ary[1..-1] without magical -1 - (1..).each {|index| ... } # enumerates values starting from index 1 - ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { ... } - -* Add `Enumerable#chain` and `Enumerator#+`. [[Feature #15144]](https://bugs.ruby-lang.org/issues/15144) - -* Add function composition operators `<<` and `>>` to `Proc` and `Method`. [[Feature #6284]](https://bugs.ruby-lang.org/issues/6284) - - f = proc{|x| x + 2} - g = proc{|x| x * 3} - (f << g).call(3) # -> 11; identical to f(g(3)) - (f >> g).call(3) # -> 15; identical to g(f(3)) - -* Add `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230) - - This method returns the source location of the binding, a 2-element array of `__FILE__` and `__LINE__`. Technically speaking, this is identical to `eval("[__FILE__, __LINE__]", binding)`. However, we are planning to change this behavior so that `Kernel#eval` ignores binding's source location [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352). As such, it is recommended to use `Binding#source_location` instead of `Kernel#eval`. - -* Add an `exception:` option to `Kernel#system` which causes it to raise an exception on failure instead of returning `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386) - -* Add a oneshot mode to `Coverage`. [[Feature#15022]](https://bugs.ruby-lang.org/issues/15022) - - * This mode checks "whether each line was executed at least once or not", instead of "how many times each line was executed". A hook for each line is fired only once, and once it is fired the hook flag will be removed, i.e., it runs with zero overhead. - * Add `oneshot_lines:` keyword argument to `Coverage.start`. - * Add `stop:` and `clear:` keyword arguments to `Coverage.result`. If `clear` is true, it clears the counters to zero. If `stop` is true, it disables coverage measurement. - * `Coverage.line_stub` is a simple helper function that creates the "stub" of line coverage from a given source code. - -* Add `FileUtils#cp_lr`. It works just like `cp_r` but links instead of copies. [[Feature #4189]](https://bugs.ruby-lang.org/issues/4189) - -## Performance improvements - -* Speed up `Proc#call` by removing the temporary allocation for `$SAFE`. - [[Feature #14318]](https://bugs.ruby-lang.org/issues/14318) - - We have observed a 1.4x peformance improvement in the `lc_fizzbuzz` benchmark that calls `Proc#call` numerous times. [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212) - -* Speed up `block.call` when `block` is passed in as a block parameter. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330) - - Combined with improvements around block handling introduced in Ruby 2.5, block evaluation now performs 2.6x faster in a micro-benchmark in Ruby 2.6. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) - -* Transient Heap (`theap`) is introduced. [[Bug #14858]](https://bugs.ruby-lang.org/issues/14858) [[Feature #14989]](https://bugs.ruby-lang.org/issues/14989) - - `theap` is a managed heap for short-living memory objects which are pointed to by specific classes (`Array`, `Hash`, `Object`, and `Struct`). Making small and short-living Hash objects is 2x faster. With rdoc benchmark, we observed 6-7% performance improvement. - -* Native implementations (`arm32`, `arm64`, `ppc64le`, `win32`, `win64`, `x86`, `amd64`) of coroutines to improve context switching performance of Fiber significantly. [[Feature #14739]](https://bugs.ruby-lang.org/issues/14739) - - `Fiber.yield` and `Fiber#resume` is about 5x faster on 64-bit Linux. Fiber intensive programs can expect up to 5% improvement overall. - -## Other notable changes since 2.5 - -* `$SAFE` is now a process global state and it can be set back to `0`. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250) - -* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and `eoutvar` arguments have been changed to keyword arguments. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256) - -* Unicode support is updated to version 11. We have plans to add support for Unicode version 12 and 12.1 in a future TEENY release of Ruby 2.6. This will include support for the [new Japanese era](http://blog.unicode.org/2018/09/new-japanese-era.html). - -* Merge RubyGems 3.0.1. The `--ri` and `--rdoc` options have been removed. Please use the `--document` and `--no-document` options instead. - -* [Bundler](https://github.com/bundler/bundler) is now installed as a default gem. - -* In exception handling blocks, `else` without `rescue` now causes a syntax error. [EXPERIMENTAL][[Feature #14606]](https://bugs.ruby-lang.org/issues/14606) - -See [NEWS](https://github.com/ruby/ruby/blob/v2_6_0/NEWS) or [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0) for more details. - -With those changes, [6437 files changed, 231471 insertions(+), 98498 deletions(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0) since Ruby 2.5.0! - -Merry Christmas, Happy Holidays, and enjoy programming with Ruby 2.6! - -## Known Problem - -_(This section was added at January 28, 2019.)_ - -* [Net::Protocol::BufferedIO#write raises NoMethodError when sending large multi-byte string](https://github.com/ruby/ruby/pull/2058) - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.tar.gz> - - SIZE: 16687800 bytes - SHA1: c95f4e86e21390270dad3ebb94491fd42ee2ce69 - SHA256: f3c35b924a11c88ff111f0956ded3cdc12c90c04b72b266ac61076d3697fc072 - SHA512: 01f886b0c0782a06315c4a46414e9f2b66ee634ba4349c8e0697f511793ae3c56d2ad3cad6563f2b0fdcedf0ff3eba51b9afab907e7e1ac243475772f8688382 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.zip> - - SIZE: 20582054 bytes - SHA1: a804e63d18da12107e1d101918a3d8f4c5462a27 - SHA256: 8a4fb6ca58202495c9682cb88effd804398bd0ef023e3e36f001ca88d8b5855a - SHA512: 16d66ec4a2c6a2e928d5b50e094a5efa481ac6e4d5ed77459d351ef19fe692aa59b68307e3e25229eec5f30ae2f9adae2663bafe9c9d44bfb45d3833d77839d4 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.tar.bz2> - - SIZE: 14585856 bytes - SHA1: b8638eb806efbf7b6af87b24ccc6ad915f262318 - SHA256: c89ca663ad9a6238f4b1ec4d04c7dff630560c6e6eca6d30857c4d394f01a599 - SHA512: ca3daf9acf11d3db2900af21b66231bd1f025427a9d2212b35f6137ca03f77f57171ddfdb99022c8c8bcd730ff92a7a4af54e8a2a770a67d8e16c5807aa391f1 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.tar.xz> - - SIZE: 11918536 bytes - SHA1: 9ddaeba3505d2855460c8c653159fc0ac8928c0f - SHA256: acb00f04374899ba8ee74bbbcb9b35c5c6b1fd229f1876554ee76f0f1710ff5f - SHA512: c56eaf85ef7b79deb34ee4590b143c07f4fc83eb79775290761aee5a7c63374659613538a41f25706ed6e19e49d5c67a1014c24d17f29948294c7abd0b0fcea8 diff --git a/fa/news/_posts/2019-04-01-ruby-2-4-6-released.md b/fa/news/_posts/2019-04-01-ruby-2-4-6-released.md deleted file mode 100644 index d897a61d6a..0000000000 --- a/fa/news/_posts/2019-04-01-ruby-2-4-6-released.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.4.6 Released" -author: "usa" -translator: -date: 2019-04-01 06:00:00 +0000 -lang: fa ---- - -Ruby 2.4.6 has been released. - -This release includes about 20 bug fixes after the previous release, and also includes several security fixes. -Please check the topics below for details. - -* [Multiple vulnerabilities in RubyGems](/en/news/2019/03/05/multiple-vulnerabilities-in-rubygems/) - -See the [commit log](https://github.com/ruby/ruby/compare/v2_4_5...v2_4_6) for details. - -After this release, we will end the normal maintenance phase of Ruby 2.4, -and start the security maintenance phase of it. -This means that after the release of 2.4.6 we will never backport any bug fixes -to 2.4 except security fixes. -The term of the security maintenance phase is scheduled for 1 year. -By the end of this term, official support of Ruby 2.4 will be over. -Therefore, we recommend that you start planning to upgrade to Ruby 2.6 or 2.5. - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.tar.bz2> - - SIZE: 12623913 bytes - SHA1: b44b5c6637a69b3b95971b1937ecb583dc1de568 - SHA256: 909f360debed1f22fdcfc9f5335c6eaa0713198db4a6c13bab426f8b89b28b02 - SHA512: 292802984e5cff6d526d817bde08216fe801d255c4cede0646e450f22d4a3a81ae612ec5d193dcc2a888e3e98b2531af845b6b863a2952bcf3fb863f95368bcf - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.tar.gz> - - SIZE: 15880585 bytes - SHA1: 3bc2d9ab3381887c57e0fb7937dc14e9f419f06c - SHA256: de0dc8097023716099f7c8a6ffc751511b90de7f5694f401b59f2d071db910be - SHA512: 7eb7720961e98e22e4335c38eeead9db96d049ef3ac1da437769b98fee7a10feb092643ce75822a2fe3bd5fd94938417ab5c2de7c6056afe0abf6e4cf03ca282 - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.tar.xz> - - SIZE: 10005544 bytes - SHA1: 86a4fa22cb3547005ec4bfcf77489a4254226187 - SHA256: 25da31b9815bfa9bba9f9b793c055a40a35c43c6adfb1fdbd81a09099f9b529c - SHA512: eafb2257747f99e2ed262af142e71175b70f7cceaa4d1253b92c8337f075a9a58a2d93b029d75e11a9b124f112a8f0983273b2b30afc147b5cf71a8dbb5fa0ba - -* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.zip> - - SIZE: 17469891 bytes - SHA1: 0e55d231c0e119304e077e42923ce6a1c3daa1d1 - SHA256: c5de9f11d4b7608d57139b96f7bc94899bb2fc9dee2e192c8951f6647a9d60f7 - SHA512: cfa779cdb970dfd35dc2a97951310cb3cde1d380b040c283fda6609c591039817a2847ab7174f7a9ee7f7adbb610709b57914bb26e5c015a20d5fe880c569855 - -## Release Comment - -Sorry for making you wait for a long time. -Thanks to everyone who helped with this release. - -The maintenance of Ruby 2.4, including this release, is based on the “Agreement for the Ruby stable version” of the Ruby Association. diff --git a/fa/news/_posts/2019-04-17-ruby-2-6-3-released.md b/fa/news/_posts/2019-04-17-ruby-2-6-3-released.md deleted file mode 100644 index cfe4e0ba52..0000000000 --- a/fa/news/_posts/2019-04-17-ruby-2-6-3-released.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.6.3 Released" -author: "naruse" -translator: -date: 2019-04-17 00:00:00 +0000 -lang: en ---- - -Ruby 2.6.3 has been released. - -This release adds support for New Japanese Era "令和" (Reiwa). -It updates the Unicode version to 12.1 beta ([#15195](https://bugs.ruby-lang.org/issues/15195)) and updates the date library ([#15742](https://bugs.ruby-lang.org/issues/15742)). - -This release also includes some bug fixes. -See the [commit logs](https://github.com/ruby/ruby/compare/v2_6_2...v2_6_3) for details. - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz> - - SIZE: 16784748 bytes - SHA1: 2347ed6ca5490a104ebd5684d2b9b5eefa6cd33c - SHA256: 577fd3795f22b8d91c1d4e6733637b0394d4082db659fccf224c774a2b1c82fb - SHA512: 8503b86da60e38da4f1a1553b2570d4125c1823280e6fb6d07825a0e92dd7b628e13147ebde085702cbf5c5eddfe7fa5a2445996bc29164196a53bc917b02112 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.zip> - - SIZE: 20611578 bytes - SHA1: 85e9ffe707fb1c1eb4131c953530bb01105a5948 - SHA256: 5ef6b8e5b5f242d41e4b3d9ab21a40d3f494dfca42b00b25ab8fd3122325fe2d - SHA512: 5c87e1eda0002e95684c08ea4eb55b5ce1941dd6304806117647c0bd44ab0714d50fe3b24c322a4f5978286a5442ceaa2d141ebe7cfe07198e0a0b876af6c004 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.bz2> - - SIZE: 14509165 bytes - SHA1: aed3bd3c5346b3b85a6b184bb320465d98994fe3 - SHA256: dd638bf42059182c1d04af0d5577131d4ce70b79105231c4cc0a60de77b14f2e - SHA512: c63c3f527bef88922345f4abb4b9ad467117b63f2132e41722ea6b4234cec3446626c3338e673065a06d2894feee92472807c284cbe613a442c8fda234ea7f88 - -* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.xz> - - SIZE: 11904360 bytes - SHA1: ee231856cee812cfc67440d643f7451857a760c9 - SHA256: 11a83f85c03d3f0fc9b8a9b6cad1b2674f26c5aaa43ba858d4b0fcc2b54171e1 - SHA512: 959a613f5cf5b3185a1d7a7ba0e1921166b3930f30461b391b1c9fcfe396f56dc3c736123dfc7b4e72c32a97dc5a1eb1fd7f09bcc3793a3c5526f6644ba421c8 - -## Release Comment - -Many committers, developers, and users who provided bug reports helped us make this release. -Thanks for their contributions. diff --git a/fa/news/_posts/2019-04-23-move-to-git-from-svn.md b/fa/news/_posts/2019-04-23-move-to-git-from-svn.md deleted file mode 100644 index 87beadd995..0000000000 --- a/fa/news/_posts/2019-04-23-move-to-git-from-svn.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: news_post -title: "Ruby Repository Moved to Git from Subversion" -author: "hsbt" -translator: -date: 2019-04-23 00:00:00 +0000 -lang: en ---- - -Today, the canonical repository of the Ruby programming language was moved to Git from Subversion. - -The web interface for the new repository is [https://git.ruby-lang.org](https://git.ruby-lang.org), and is provided by cgit. We can keep the commit hash from the contributor on the Ruby repository directly. - -## Development policy - -* We don't use a topic branch on cgit. -* The GitHub repository will still be just a mirror. We don't use the "Merge pull request" feature. -* The ruby_2_4, ruby_2_5, and ruby_2_6 branches will continue to use SVN. We don't push anything to these branches on cgit. -* Starting with ruby_2_7, we'll use cgit to develop stable branches. -* We don't use merge commits. - -## Special Thanks - -* k0kubun - - k0kubun aggressively developed toolchains related to release and backport workflows and also updated the hook script for git. - -* naruse - - naruse updated the feature changes for Ruby CI and Redmine (bugs.ruby-lang.org). - -* mame - - mame created the commit notification script for slack. - -## Future Work - -We still have to complete some tasks. If you find an issue related to the Git migration, please file it to [https://bugs.ruby-lang.org/issues/14632](https://bugs.ruby-lang.org/issues/14632). - -Enjoy! diff --git a/fa/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md b/fa/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md deleted file mode 100644 index 9eeaf38063..0000000000 --- a/fa/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: news_post -title: "Ruby 2.7.0-preview1 Released" -author: "naruse" -translator: -date: 2019-05-30 00:00:00 +0000 -lang: en ---- - -We are pleased to announce the release of Ruby 2.7.0-preview1. - -A preview version is released to gather feedback for the final release planned to release on December. It introduces a number of new features and performance improvements, most notably: - -* Compaction GC -* Pattern Matching -* REPL improvement - -## Compaction GC - -This release introduces Compaction GC which can defragment a fragmented memory space. - -Some multithread Ruby programs may cause memory fragmentation, leading to high memory usage and degraded speed. - -The `GC.compact` method is introduced for compacting the heap. This function compacts live objects in the heap so that fewer pages may be used, and the heap may be more CoW friendly. [#15626](https://bugs.ruby-lang.org/issues/15626) - -## Pattern Matching [Experimental] - -Pattern matching, widely used feature in functional programming languages, is introduced as an experimental feature. [#14912](https://bugs.ruby-lang.org/issues/14912) -It can traverse a given object and assign its value if it matches a pattern. - -```ruby -case JSON.parse('{...}', symbolize_names: true) -in {name: "Alice", children: [{name: "Bob", age: age}]} - p age - ... -end -``` - -For more details, please see [Pattern matching - New feature in Ruby 2.7](https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7). - -## REPL improvement - -`irb`, bundled interactive environment (REPL; Read-Eval-Print-Loop), now supports multi-line editing. It's powered by `reline`, `readline` compatible pure Ruby implementation. -It also provides rdoc integration. In `irb` you can display the reference for a given class, module, or method. [#14683](https://bugs.ruby-lang.org/issues/14683), [#14787](https://bugs.ruby-lang.org/issues/14787), [#14918](https://bugs.ruby-lang.org/issues/14918) -Besides, source lines shown at `binding.irb` and inspect results for core-class objects are now colorized. - -<video autoplay="autoplay" controls="controls" muted="muted" width="576" height="259"> - <source src="https://cache.ruby-lang.org/pub/media/irb_improved_with_key_take2.mp4" type="video/mp4"> -</video> - -## Other Notable New Features - -* A method reference operator, <code>.:</code>, is introduced as an experimental feature. [#12125]( https://bugs.ruby-lang.org/issues/12125), [#13581]( https://bugs.ruby-lang.org/issues/13581) - -* Numbered parameter as the default block parameter is introduced as an experimental feature. [#4475](https://bugs.ruby-lang.org/issues/4475) - -* A beginless range is experimentally introduced. It might not be as useful - as an endless range, but would be good for DSL purpose. [#14799](https://bugs.ruby-lang.org/issues/14799) - - ary[..3] # identical to ary[0..3] - rel.where(sales: ..100) - -* `Enumerable#tally` is added. It counts the occurrence of each element. - - ["a", "b", "c", "b"].tally - #=> {"a"=>1, "b"=>2, "c"=>1} - -## Performance improvements - -* JIT [Experimental] - - * JIT-ed code is recompiled to less-optimized code when an optimization assumption is invalidated. - - * Method inlining is performed when a method is considered as pure. This optimization is still experimental and many methods are NOT considered as pure yet. - - * Default value of `--jit-min-calls` is changed from 5 to 10,000 - - * Default value of `--jit-max-cache` is changed from 1,000 to 100 - -## Other notable changes since 2.6 - -* `Proc.new` and `proc` with no block in a method called with a block is warned now. - -* `lambda` with no block in a method called with a block errs. - -* Update Unicode version and Emoji version from 11.0.0 to 12.0.0. [[Feature #15321]](https://bugs.ruby-lang.org/issues/15321) - -* Update Unicode version to 12.1.0, adding support for U+32FF SQUARE ERA NAME REIWA. [[Feature #15195]](https://bugs.ruby-lang.org/issues/15195) - -* `Date.jisx0301`, `Date#jisx0301`, and `Date.parse` provisionally support the new Japanese era as an informal extension, until the new JIS X 0301 is issued. [[Feature #15742]](https://bugs.ruby-lang.org/issues/15742) - -* Require compilers to support C99 [[Misc #15347]](https://bugs.ruby-lang.org/issues/15347) - * Details of our dialect: <https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/C99> - -See [NEWS](https://github.com/ruby/ruby/blob/v2_7_0_preview1/NEWS) or [commit logs](https://github.com/ruby/ruby/compare/v2_6_0...v2_7_0_preview1) for more details. - -With those changes, [1727 files changed, 76022 insertions(+), 60286 deletions(-)](https://github.com/ruby/ruby/compare/v2_6_0...v2_7_0_preview1) since Ruby 2.6.0! - -Enjoy programming with Ruby 2.7! - -## Download - -* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.gz> - - SIZE: 16021286 bytes - SHA1: 2fbecf42b03a9d4391b81de42caec7fa497747cf - SHA256: c44500af4a4a0c78a0b4d891272523f28e21176cf9bc1cc108977c5f270eaec2 - SHA512: f731bc9002edd3a61a4955e4cc46a75b5ab687a19c7964f02d3b5b07423d2360d25d7be5df340e884ca9945e3954e68e5eb11b209b65b3a687c71a1abc24b91f -* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.zip> - - SIZE: 20283343 bytes - SHA1: 7488346fa8e58203a38158752d03c8be6b1da65b - SHA256: fdf25573e72e1769b51b8d541d0e1a894a5394dbfdf1b08215aa093079cca64c - SHA512: b3b1f59dce94c242ef88a4e68381a4c3a6f90ba0af699083e5a1a00b0fb1dce580f057dad25571fe789ac9aa95aa6e9c071ebb330328dc822217ac9ea9fbeb3f -* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.bz2> - - SIZE: 14038296 bytes - SHA1: f7e70cbc2604c53a9e818a2fc59cd0e2d6c859fa - SHA256: d45b4a1712ec5c03a35e85e33bcb57c7426b856d35e4f04f7975ae3944d09952 - SHA512: a36b241fc1eccba121bb7c2cc5675b11609e0153e25a3a8961b67270c05414b1aa669ce5d4a5ebe4c6b2328ea2b8f8635fbba046b70de103320b3fdcb3d51248 -* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.xz> - - SIZE: 11442988 bytes - SHA1: 45e467debc194847a9e3afefb20b11e6dc28ea31 - SHA256: 8c546df3345398b3edc9d0ab097846f033783d33762889fd0f3dc8bb465c3354 - SHA512: d416e90bfa3e49cc0675c4c13243c8ec319b7a0836add1bd16bd7662d09eaf46656d26e772ef3b097e10779896e643edd8a6e4f885147e3235257736adfdf3b5 - -## What is Ruby - -Ruby was first developed by Matz (Yukihiro Matsumoto) in 1993, and is now developed as Open Source. It runs on multiple platforms and is used all over the world especially for web development. diff --git a/stylesheets/rtl.css b/stylesheets/rtl.css index ecf69c36b5..4552afd369 100644 --- a/stylesheets/rtl.css +++ b/stylesheets/rtl.css @@ -106,4 +106,13 @@ pre { #header div.site-links { padding: 0 8px 0 0; +} + +#header_content > a { + text-decoration: none; + color: black; + background: url(/images/header-ruby-logo.png) no-repeat right 8px; + display: inline-block; + padding: 15px 74px 0 74px; + margin: 0 0 15px -4px; } \ No newline at end of file From d9aaa706fa9e3088e11b8b46096ad0d1e2a8a1e0 Mon Sep 17 00:00:00 2001 From: Goudarz <goudarz.jafari@gmail.com> Date: Fri, 18 Oct 2019 03:59:52 +0330 Subject: [PATCH 05/10] Fix Travis CI build failed --- fa/news/_posts/2019-03-13-ruby-2-5-4-released.md | 1 - 1 file changed, 1 deletion(-) diff --git a/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md b/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md index 79eeabd65e..948ec405fc 100644 --- a/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md +++ b/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md @@ -46,4 +46,3 @@ lang: fa از کلیه متقاضیان، برنامهنویسان و کاربران که گزارشهای اشکالات را ارسال کردند، و ما را در انتشار این نسخه کمک کردند. از مشارکت شما بسیار متشکریم. - From 51a3cd2258b90b84c095f63a44006d926c7a19b5 Mon Sep 17 00:00:00 2001 From: Goudarz <goudarz.jafari@gmail.com> Date: Fri, 18 Oct 2019 04:21:40 +0330 Subject: [PATCH 06/10] Fix Travis CI build failed --- fa/community/conferences/index.md | 3 --- fa/community/index.md | 2 +- fa/community/mailing-lists/index.md | 2 +- fa/community/mailing-lists/manual-instructions/index.md | 2 +- fa/community/mailing-lists/ruby-talk-guidelines/index.md | 2 +- fa/community/podcasts/index.md | 2 +- fa/community/ruby-core/index.md | 2 +- fa/community/ruby-core/writing-patches/index.md | 2 +- fa/community/user-groups/index.md | 2 +- fa/community/weblogs/index.md | 2 +- fa/conduct/index.md | 2 +- fa/documentation/faq/1/index.md | 2 +- fa/documentation/faq/10/index.md | 2 +- fa/documentation/faq/11/index.md | 2 +- fa/documentation/faq/2/index.md | 2 +- fa/documentation/faq/3/index.md | 2 +- fa/documentation/faq/4/index.md | 2 +- fa/documentation/faq/5/index.md | 2 +- fa/documentation/faq/6/index.md | 2 +- fa/documentation/faq/7/index.md | 2 +- fa/documentation/faq/8/index.md | 2 +- fa/documentation/faq/9/index.md | 2 +- fa/documentation/faq/index.md | 2 +- .../ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md | 2 +- .../ruby-from-other-languages/to-ruby-from-java/index.md | 2 +- .../ruby-from-other-languages/to-ruby-from-perl/index.md | 2 +- .../ruby-from-other-languages/to-ruby-from-php/index.md | 2 +- .../ruby-from-other-languages/to-ruby-from-python/index.md | 2 +- fa/documentation/success-stories/index.md | 2 +- fa/downloads/branches/index.md | 2 +- fa/downloads/releases/index.md | 2 +- fa/news/_posts/2019-03-13-ruby-2-5-4-released.md | 2 +- 32 files changed, 31 insertions(+), 34 deletions(-) diff --git a/fa/community/conferences/index.md b/fa/community/conferences/index.md index 227d37bbc2..85cceb7dbe 100644 --- a/fa/community/conferences/index.md +++ b/fa/community/conferences/index.md @@ -13,7 +13,6 @@ the Ruby community. published collaboratively with the Ruby community. There you will find event dates, location, CFP (Call For Proposals) and Registration information. - ### Major Ruby Conferences [RubyConf][1] @@ -71,8 +70,6 @@ have also been devoted to [Ruby on Rails][11], including Ruby Central’s Central and [Skills Matter][14], and in 2007 by Ruby Central and O’Reilly), and Canada on Rails. - - [rc]: http://rubyconferences.org/ [1]: http://rubyconf.org/ [2]: http://rubycentral.org diff --git a/fa/community/index.md b/fa/community/index.md index 2c2fc2a80d..c6b6ea651e 100644 --- a/fa/community/index.md +++ b/fa/community/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Community" -lang: en +lang: fa --- The community that grows up around a programming language is one of its diff --git a/fa/community/mailing-lists/index.md b/fa/community/mailing-lists/index.md index 8b67cde270..e4e4c20d35 100644 --- a/fa/community/mailing-lists/index.md +++ b/fa/community/mailing-lists/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Mailing Lists" -lang: en +lang: fa --- Mailing-lists are a great way to keep your finger on the pulse of the diff --git a/fa/community/mailing-lists/manual-instructions/index.md b/fa/community/mailing-lists/manual-instructions/index.md index e60d18366f..817efab201 100644 --- a/fa/community/mailing-lists/manual-instructions/index.md +++ b/fa/community/mailing-lists/manual-instructions/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Manual Mailing List Instructions" -lang: en +lang: fa --- NOTE: If you cannot subscribe, please refer to diff --git a/fa/community/mailing-lists/ruby-talk-guidelines/index.md b/fa/community/mailing-lists/ruby-talk-guidelines/index.md index a9879ea121..52f7e83d60 100644 --- a/fa/community/mailing-lists/ruby-talk-guidelines/index.md +++ b/fa/community/mailing-lists/ruby-talk-guidelines/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Posting Guidelines for the Ruby-Talk Mailing List" -lang: en +lang: fa --- You should follow these guidelines when posting to the ruby-talk mailing list. diff --git a/fa/community/podcasts/index.md b/fa/community/podcasts/index.md index 187c76cafe..9b4e05315c 100644 --- a/fa/community/podcasts/index.md +++ b/fa/community/podcasts/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Podcasts" -lang: en +lang: fa --- Listen to news, interviews, and discussions about Ruby and its community. diff --git a/fa/community/ruby-core/index.md b/fa/community/ruby-core/index.md index d12fd8e2bb..27e84d2bd4 100644 --- a/fa/community/ruby-core/index.md +++ b/fa/community/ruby-core/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Ruby Core" -lang: en +lang: fa --- Now is a fantastic time to follow Ruby’s development. With the increased diff --git a/fa/community/ruby-core/writing-patches/index.md b/fa/community/ruby-core/writing-patches/index.md index da58f110a8..5342e8b9f6 100644 --- a/fa/community/ruby-core/writing-patches/index.md +++ b/fa/community/ruby-core/writing-patches/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Patch Writer’s Guide" -lang: en +lang: fa --- Here follow some tips, straight from Matz, on how to get diff --git a/fa/community/user-groups/index.md b/fa/community/user-groups/index.md index 3788b4fce0..b5a33a7fdf 100644 --- a/fa/community/user-groups/index.md +++ b/fa/community/user-groups/index.md @@ -1,7 +1,7 @@ --- layout: page title: "User Groups" -lang: en +lang: fa --- In the programming community, user groups form support networks for diff --git a/fa/community/weblogs/index.md b/fa/community/weblogs/index.md index 5acfeb5ea2..c7ffcf07cb 100644 --- a/fa/community/weblogs/index.md +++ b/fa/community/weblogs/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Blogs" -lang: en +lang: fa --- Ruby blogs have exploded over the past years and given sufficient diff --git a/fa/conduct/index.md b/fa/conduct/index.md index 7dbdc22974..f320a70536 100644 --- a/fa/conduct/index.md +++ b/fa/conduct/index.md @@ -1,7 +1,7 @@ --- layout: page title: "The Ruby Community Conduct Guideline" -lang: en +lang: fa --- We have picked the following conduct guideline based on an early proposed draft diff --git a/fa/documentation/faq/1/index.md b/fa/documentation/faq/1/index.md index f12ebf27f5..49f99a91d8 100644 --- a/fa/documentation/faq/1/index.md +++ b/fa/documentation/faq/1/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/10/index.md b/fa/documentation/faq/10/index.md index d361458b60..7a8f25a730 100644 --- a/fa/documentation/faq/10/index.md +++ b/fa/documentation/faq/10/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/11/index.md b/fa/documentation/faq/11/index.md index 4e87342532..482fa9b2e0 100644 --- a/fa/documentation/faq/11/index.md +++ b/fa/documentation/faq/11/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/2/index.md b/fa/documentation/faq/2/index.md index eda470ace3..ddd4cfefd5 100644 --- a/fa/documentation/faq/2/index.md +++ b/fa/documentation/faq/2/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/3/index.md b/fa/documentation/faq/3/index.md index d2a7f82f41..d779062103 100644 --- a/fa/documentation/faq/3/index.md +++ b/fa/documentation/faq/3/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/4/index.md b/fa/documentation/faq/4/index.md index 800c496e45..e7e2f834eb 100644 --- a/fa/documentation/faq/4/index.md +++ b/fa/documentation/faq/4/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/5/index.md b/fa/documentation/faq/5/index.md index 566518ee56..372c79b380 100644 --- a/fa/documentation/faq/5/index.md +++ b/fa/documentation/faq/5/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/6/index.md b/fa/documentation/faq/6/index.md index c37ed43051..f8a29a62c0 100644 --- a/fa/documentation/faq/6/index.md +++ b/fa/documentation/faq/6/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/7/index.md b/fa/documentation/faq/7/index.md index 5524ec547a..309a72eed1 100644 --- a/fa/documentation/faq/7/index.md +++ b/fa/documentation/faq/7/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/8/index.md b/fa/documentation/faq/8/index.md index 7d79609d38..b57ecee3e9 100644 --- a/fa/documentation/faq/8/index.md +++ b/fa/documentation/faq/8/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/9/index.md b/fa/documentation/faq/9/index.md index c89a09b315..555b5123f2 100644 --- a/fa/documentation/faq/9/index.md +++ b/fa/documentation/faq/9/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/faq/index.md b/fa/documentation/faq/index.md index cc2c6f6947..b6c85da8df 100644 --- a/fa/documentation/faq/index.md +++ b/fa/documentation/faq/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Official Ruby FAQ" -lang: en +lang: fa header: | <div class="multi-page"> diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md index 222a3b119c..de6383a29c 100644 --- a/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md @@ -1,7 +1,7 @@ --- layout: page title: "To Ruby From C and C++" -lang: en +lang: fa --- It’s difficult to write a bulleted list describing how your code will be diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-java/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-java/index.md index eb4dc12ff5..c4987d984a 100644 --- a/fa/documentation/ruby-from-other-languages/to-ruby-from-java/index.md +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-java/index.md @@ -1,7 +1,7 @@ --- layout: page title: "To Ruby From Java" -lang: en +lang: fa --- Java is mature. It’s tested. And it’s fast (contrary to what the diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md index e5f9eda7b1..5ddf445142 100644 --- a/fa/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md @@ -1,7 +1,7 @@ --- layout: page title: "To Ruby From Perl" -lang: en +lang: fa --- Perl is awesome. Perl’s docs are awesome. The Perl community is … diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md index 5d2bb3afa7..f85b16d88a 100644 --- a/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md @@ -1,7 +1,7 @@ --- layout: page title: "To Ruby From PHP" -lang: en +lang: fa --- PHP is in widespread use for web applications, but if you want to use diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md index 55509c296f..41ff09f098 100644 --- a/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md @@ -1,7 +1,7 @@ --- layout: page title: "To Ruby From Python" -lang: en +lang: fa --- Python is another very nice general purpose programming language. Going diff --git a/fa/documentation/success-stories/index.md b/fa/documentation/success-stories/index.md index 5d8d4454ab..e6d9a9049e 100644 --- a/fa/documentation/success-stories/index.md +++ b/fa/documentation/success-stories/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Success Stories" -lang: en +lang: fa --- Many people use Ruby in their daily jobs. Others just as a hobby. Here diff --git a/fa/downloads/branches/index.md b/fa/downloads/branches/index.md index 7f39e85866..d43eca54f5 100644 --- a/fa/downloads/branches/index.md +++ b/fa/downloads/branches/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Ruby Maintenance Branches" -lang: en +lang: fa --- {% comment %} diff --git a/fa/downloads/releases/index.md b/fa/downloads/releases/index.md index 4385de0419..f5e68a474d 100644 --- a/fa/downloads/releases/index.md +++ b/fa/downloads/releases/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Ruby Releases" -lang: en +lang: fa --- {% comment %} diff --git a/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md b/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md index 948ec405fc..81d766ec31 100644 --- a/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md +++ b/fa/news/_posts/2019-03-13-ruby-2-5-4-released.md @@ -9,7 +9,7 @@ lang: fa روبی ۲٫۵٫۴ منتشر شد. -این نسخه شامل رفع اشکال و بهروز رسانی امنیتی RubyGems همراه است. +این نسخه شامل رفع اشکال و بهروز رسانی امنیتی RubyGems همراه است. جزئیات [آسیب پذیری متعدد در RubyGems](/fa/news/2019/03/05/multiple-vulnerabilities-in-rubygems/) و [commit logs](https://github.com/ruby/ruby/compare/v2_6_1...v2_6_2) را مشاهده کنید. ## دانلود From 54358fd20a07ed422c40ee82397a90f3e675cdd4 Mon Sep 17 00:00:00 2001 From: Goudarz <goudarz.jafari@gmail.com> Date: Fri, 18 Oct 2019 04:25:55 +0330 Subject: [PATCH 07/10] Fix Travis CI build failed --- fa/community/conferences/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fa/community/conferences/index.md b/fa/community/conferences/index.md index 85cceb7dbe..14ef1f3c2e 100644 --- a/fa/community/conferences/index.md +++ b/fa/community/conferences/index.md @@ -1,7 +1,7 @@ --- layout: page title: "Ruby Conferences" -lang: en +lang: fa --- Ruby programmers around the world are getting involved in more and more From af9efd0400a6f17830dd37c6447bdce50d88bc4c Mon Sep 17 00:00:00 2001 From: Goudarz <goudarz.jafari@gmail.com> Date: Fri, 18 Oct 2019 04:32:09 +0330 Subject: [PATCH 08/10] Fix blank line at end of file --- fa/community/mailing-lists/manual-instructions/index.md | 1 - fa/documentation/quickstart/2/index.md | 1 - fa/documentation/quickstart/3/index.md | 1 - .../ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md | 1 - .../ruby-from-other-languages/to-ruby-from-php/index.md | 1 - .../ruby-from-other-languages/to-ruby-from-python/index.md | 1 - 6 files changed, 6 deletions(-) diff --git a/fa/community/mailing-lists/manual-instructions/index.md b/fa/community/mailing-lists/manual-instructions/index.md index 817efab201..73cccf8d4a 100644 --- a/fa/community/mailing-lists/manual-instructions/index.md +++ b/fa/community/mailing-lists/manual-instructions/index.md @@ -60,4 +60,3 @@ Make sure to send a plain text mail, an HTML mail might not work. To see the list of commands, send a mail which body is “help” to the controller address. - diff --git a/fa/documentation/quickstart/2/index.md b/fa/documentation/quickstart/2/index.md index 5a3101a82a..6ff7c46b8e 100644 --- a/fa/documentation/quickstart/2/index.md +++ b/fa/documentation/quickstart/2/index.md @@ -123,4 +123,3 @@ you can see it’s used by `say_hi` and `say_bye`. So how do we get this Greeter class set in motion? [Create an object.](../3/) - diff --git a/fa/documentation/quickstart/3/index.md b/fa/documentation/quickstart/3/index.md index cebce10f0e..264ede4c51 100644 --- a/fa/documentation/quickstart/3/index.md +++ b/fa/documentation/quickstart/3/index.md @@ -227,4 +227,3 @@ output should be: There are a lot of new things thrown into this final example that we [can take a deeper look at.](../4/) - diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md index de6383a29c..0a2fdcb9e0 100644 --- a/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-c-and-cpp/index.md @@ -146,4 +146,3 @@ Unlike C++, in Ruby,... threads” (implemented only within the interpreter) as opposed to native threads. * A unit testing lib comes standard with Ruby. - diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md index f85b16d88a..5ba0c52c79 100644 --- a/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-php/index.md @@ -48,4 +48,3 @@ Unlike in PHP, in Ruby… * Only `false` and `nil` are false: `0`, `array()` and `""` are all true in conditionals. * Almost everything is a method call, even `raise` (`throw` in PHP). - diff --git a/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md b/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md index 41ff09f098..0243d2a356 100644 --- a/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md +++ b/fa/documentation/ruby-from-other-languages/to-ruby-from-python/index.md @@ -80,4 +80,3 @@ Unlike Python, in Ruby,... then immediately resume. * Python supports just one kind of anonymous functions, lambdas, while Ruby contains blocks, Procs, and lambdas. - From 5808bf2031a8111d7fedf166bad2ae78ae4b9d68 Mon Sep 17 00:00:00 2001 From: Goudarz <goudarz.jafari@gmail.com> Date: Fri, 18 Oct 2019 18:32:30 +0330 Subject: [PATCH 09/10] Translate Ruby 2.4.6 Release News (fa) --- .../_posts/2019-04-01-ruby-2-4-6-released.md | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 fa/news/_posts/2019-04-01-ruby-2-4-6-released.md diff --git a/fa/news/_posts/2019-04-01-ruby-2-4-6-released.md b/fa/news/_posts/2019-04-01-ruby-2-4-6-released.md new file mode 100644 index 0000000000..e064b2c80d --- /dev/null +++ b/fa/news/_posts/2019-04-01-ruby-2-4-6-released.md @@ -0,0 +1,59 @@ +--- +layout: news_post +title: "روبی ۲٫۴٫۶ منتشر شد" +author: "usa" +translator: "Goudarz Jafari" +date: 2019-04-01 06:00:00 +0000 +lang: fa +--- + +روبی ۲٫۴٫۶ منتشر شد. + +این نسخه شامل رفع ۲۰ مشکل پس از انتشار نسخه قبلی است و همچنین شامل رفع چندین اشکال امنیتی است. + لطفا برای جزئیات بیشتر مباحث زیر را بررسی کنید. + +* [آسیب پذیریهای متعددی در RubyGems](/fa/news/2019/03/05/multiple-vulnerabilities-in-rubygems/) + +برای جزئیات بیشتر [commit log](https://github.com/ruby/ruby/compare/v2_4_5...v2_4_6) را ببینید. + +بعد از این نسخه، ما به مرحله نگهداری معمولی روبی ۲٫۴ پایان میدهیم و مرحله نگهداری امنیتی آن را شروع میکنیم. این بدان معنی است که پس از انتشار نسخه ۲٫۴٫۶، ما هیچ گونه رفع اشکالی را به جز رفع مشکلات امنیتی در نسخه ۲٫۴ پشتیبانی نمیکنیم. +مدت مرحله نگهداری امنیتی برای ۱ سال تعیین شده است. +با پایان این مدت، حمایت رسمی از روبی ۲٫۴ به پایان میرسد. +بنابراین، توصیه میکنیم برنامهریزی برای بهروزرسانی به روبی ۲٫۵ یا ۲٫۶ را شروع کنید. + +## دانلود + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.tar.bz2> + + SIZE: 12623913 bytes + SHA1: b44b5c6637a69b3b95971b1937ecb583dc1de568 + SHA256: 909f360debed1f22fdcfc9f5335c6eaa0713198db4a6c13bab426f8b89b28b02 + SHA512: 292802984e5cff6d526d817bde08216fe801d255c4cede0646e450f22d4a3a81ae612ec5d193dcc2a888e3e98b2531af845b6b863a2952bcf3fb863f95368bcf + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.tar.gz> + + SIZE: 15880585 bytes + SHA1: 3bc2d9ab3381887c57e0fb7937dc14e9f419f06c + SHA256: de0dc8097023716099f7c8a6ffc751511b90de7f5694f401b59f2d071db910be + SHA512: 7eb7720961e98e22e4335c38eeead9db96d049ef3ac1da437769b98fee7a10feb092643ce75822a2fe3bd5fd94938417ab5c2de7c6056afe0abf6e4cf03ca282 + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.tar.xz> + + SIZE: 10005544 bytes + SHA1: 86a4fa22cb3547005ec4bfcf77489a4254226187 + SHA256: 25da31b9815bfa9bba9f9b793c055a40a35c43c6adfb1fdbd81a09099f9b529c + SHA512: eafb2257747f99e2ed262af142e71175b70f7cceaa4d1253b92c8337f075a9a58a2d93b029d75e11a9b124f112a8f0983273b2b30afc147b5cf71a8dbb5fa0ba + +* <https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.6.zip> + + SIZE: 17469891 bytes + SHA1: 0e55d231c0e119304e077e42923ce6a1c3daa1d1 + SHA256: c5de9f11d4b7608d57139b96f7bc94899bb2fc9dee2e192c8951f6647a9d60f7 + SHA512: cfa779cdb970dfd35dc2a97951310cb3cde1d380b040c283fda6609c591039817a2847ab7174f7a9ee7f7adbb610709b57914bb26e5c015a20d5fe880c569855 + +## نظر نسخه + +متاسفم که باعث شد شما مدت طولانی منتظر بمانید. +از همه کسانی که به این نسخه کمک کردند تشکر میکنم. + +نگهداری روبی ۲٫۴ از جمله این نسخه براساس «توافق برای نسخه پایدار روبی» انجمن روبی صورت است. From 5b8cc25170fea1715c0f3aa2ead7d9989adcfd79 Mon Sep 17 00:00:00 2001 From: Goudarz <goudarz.jafari@gmail.com> Date: Fri, 18 Oct 2019 20:03:22 +0330 Subject: [PATCH 10/10] Translate Ruby 2.6.3 Release News (fa) --- .../_posts/2019-04-17-ruby-2-6-3-released.md | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 fa/news/_posts/2019-04-17-ruby-2-6-3-released.md diff --git a/fa/news/_posts/2019-04-17-ruby-2-6-3-released.md b/fa/news/_posts/2019-04-17-ruby-2-6-3-released.md new file mode 100644 index 0000000000..d4b37a4f53 --- /dev/null +++ b/fa/news/_posts/2019-04-17-ruby-2-6-3-released.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "روبی ۲٫۶٫۳ منتشر شد" +author: "naruse" +translator: "Goudarz Jafari" +date: 2019-04-17 00:00:00 +0000 +lang: fa +--- + +روبی ۲٫۶٫۳ منتشر شد. + +در این نسخه پشتیبانی از دوره جدید ژاپنی “令和” (ریوا) اضافه شد. نسخه یونیکد را به ۱۲٫۱ آزمایشی ([#15195](https://bugs.ruby-lang.org/issues/15195)) و کتابخانه تاریخ ([#15742](https://bugs.ruby-lang.org/issues/15742)) را هم بهروزرسانی شد. + +این نسخه همچنین شامل رفع برخی از اشکالات میشود. +برای جزئیات بیشتر [commit logs](https://github.com/ruby/ruby/compare/v2_6_2...v2_6_3) را ببینید. + +## دانلود + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz> + + SIZE: 16784748 bytes + SHA1: 2347ed6ca5490a104ebd5684d2b9b5eefa6cd33c + SHA256: 577fd3795f22b8d91c1d4e6733637b0394d4082db659fccf224c774a2b1c82fb + SHA512: 8503b86da60e38da4f1a1553b2570d4125c1823280e6fb6d07825a0e92dd7b628e13147ebde085702cbf5c5eddfe7fa5a2445996bc29164196a53bc917b02112 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.zip> + + SIZE: 20611578 bytes + SHA1: 85e9ffe707fb1c1eb4131c953530bb01105a5948 + SHA256: 5ef6b8e5b5f242d41e4b3d9ab21a40d3f494dfca42b00b25ab8fd3122325fe2d + SHA512: 5c87e1eda0002e95684c08ea4eb55b5ce1941dd6304806117647c0bd44ab0714d50fe3b24c322a4f5978286a5442ceaa2d141ebe7cfe07198e0a0b876af6c004 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.bz2> + + SIZE: 14509165 bytes + SHA1: aed3bd3c5346b3b85a6b184bb320465d98994fe3 + SHA256: dd638bf42059182c1d04af0d5577131d4ce70b79105231c4cc0a60de77b14f2e + SHA512: c63c3f527bef88922345f4abb4b9ad467117b63f2132e41722ea6b4234cec3446626c3338e673065a06d2894feee92472807c284cbe613a442c8fda234ea7f88 + +* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.xz> + + SIZE: 11904360 bytes + SHA1: ee231856cee812cfc67440d643f7451857a760c9 + SHA256: 11a83f85c03d3f0fc9b8a9b6cad1b2674f26c5aaa43ba858d4b0fcc2b54171e1 + SHA512: 959a613f5cf5b3185a1d7a7ba0e1921166b3930f30461b391b1c9fcfe396f56dc3c736123dfc7b4e72c32a97dc5a1eb1fd7f09bcc3793a3c5526f6644ba421c8 + +## نظر نسخه + +از همهی توسعه دهندگان و کاربرانی که مشکلات را گزارش کردهاند تا در تهیه این نسخه به ما کمک کردند. + از همه آنها سپاسگزارم.