From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 5FE801396D0 for ; Sun, 3 Sep 2017 20:35:13 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0698DE0EA4; Sun, 3 Sep 2017 20:35:07 +0000 (UTC) Received: from mail-yw0-x234.google.com (mail-yw0-x234.google.com [IPv6:2607:f8b0:4002:c05::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id A543DE0E95 for ; Sun, 3 Sep 2017 20:35:06 +0000 (UTC) Received: by mail-yw0-x234.google.com with SMTP id c85so12176260ywa.0 for ; Sun, 03 Sep 2017 13:35:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-transfer-encoding; bh=shUGrGYT01oMyqxbvBlSQ3XBhKW8/pjeea0NF/aP980=; b=BCpwyergH012aiwWnq/QIpBo+0+dMLMn4i6dwV8tAD0Yao8/pBLwsy0nI+dOShEYXy +SBykTnq5z+TKWG1obvShAbKAMNbiS6vcCuYFCTc3Y5lFopaBYSqzNU+mC8eRrD9hO+X cobU7hH9cf84sLKv1MhBAvSNznlpiNyvFuCGcBc1JbIoLUEztBKNZsoAIhf/V4UIDAqr AEauM4424+neVYtDYzHyOJdI5d311OZ2QvpYYYyJrEZBQyz6Nj1Ict6cvzSC0kOIQI1v qARMZ6AThWSWbGKODLFmFgLWNflOWdMipNrYfn9Ezr5f7AVDDWCQH/3eFy/JVbcnws36 aYQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:content-transfer-encoding; bh=shUGrGYT01oMyqxbvBlSQ3XBhKW8/pjeea0NF/aP980=; b=gLMcVw6/SmGKE82HZ5VwDJPbSsS+G+ZIN2I7B+QdmZAoPHjXGEUb8ggGW4K+kpkr+r EfJiEYfvcxxKQd7h8ATJDv/HSjbq/+EbZ6wO9F07AF5RhfGith4baddMIXxkYJc8u6hr UGhU2bjRptrK5SkRSSy1exGl46bwaBhZ7dyRIF//NEWWOawTDdknOAgvwIj4qFMmYgXE 5/9bXySi/z0AR5oZ0XylGFzeoeWmv/CAoG8dwLocEqWEmet5DWWBfG6cEkGeMMEIErzA So+V0ounzqsxF7sIefoU93JfCDa9UH9hDwbgpmU2bAYquK/C/RceQRlFboMEjUY7t5h4 O72Q== X-Gm-Message-State: AHPjjUiCHgc7IWZJgIqqH9kT9zeX6EVeo3vU+zGOODJ+E92SzTkDba6M 5Q1TzBx05p4H8fr6XI4adGUXxy0clv78 X-Google-Smtp-Source: ADKCNb4IC1MGp6oxJ25+CntkYbrln92n07XOh02JGlnPXfsZ+g8FQK3AnikI9KQgYwTzd4PXQgDd5XMbnr4qtcDuShc= X-Received: by 10.129.41.206 with SMTP id p197mr3912035ywp.220.1504470904829; Sun, 03 Sep 2017 13:35:04 -0700 (PDT) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-user@lists.gentoo.org Reply-to: gentoo-user@lists.gentoo.org MIME-Version: 1.0 Received: by 10.129.211.10 with HTTP; Sun, 3 Sep 2017 13:35:04 -0700 (PDT) In-Reply-To: <20170903103123.GB12087@hades.fritz.box> References: <7b8d7e5b-51d5-2bc2-e1be-e4c9e5510bda@wht.com.au> <9dfc7db0-cf95-e420-5f1d-c664ab547f2f@gmail.com> <20170902213730.GA13386@hades.fritz.box> <20170903103123.GB12087@hades.fritz.box> From: R0b0t1 Date: Sun, 3 Sep 2017 15:35:04 -0500 Message-ID: Subject: Re: [gentoo-user] Ruby - 3 versions - seriously???? To: gentoo-user@lists.gentoo.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Archives-Salt: df580805-765a-45a3-be3a-df1363b11413 X-Archives-Hash: ef0f5438bdce542194640c790c93e09d On Sun, Sep 3, 2017 at 1:08 AM, Hans de Graaff wrote: > The situation with ruby really isn't different from python or perl at > all. We also have multiple python versions in the tree just like with > ruby. perl is not slotted but faces the same issues on each version (e.g. > the "no . in INC path anymore" issue that made ruby 1.8 to 1.9 such a big > deal). > I think the takeaway from Alan's comment is that Python is unnaturally stable compared to other interpreted languages. One might be inclined to think Python developers consider their work to be a widely used tool as opposed to a toy to play with. Consequently the number of breaking changes does seem to be far higher in Ruby. Please see my reply to Marvin below. > I find it very unlikely that you would *need* all three versions, unless > you are doing ruby development and want to actively use all three. The > RUBY_TARGETS=3D"ruby22" advice matches the current default in the profile= . > Then why does he have all three installed? On Sun, Sep 3, 2017 at 5:31 AM, Marvin G=C3=BClker wrote: > Am 02. September 2017 um 21:18 Uhr -0500 schrieb R0b0t1 : >> Seeing as the OP is saying there are 3 versions queued for merge and >> he has not installed any of them by hand it looks like Alan is >> right. Perhaps the OP is using "old" Ruby based software, but software >> of that age in another language could work on new interpreters. > > I took a moment and looked up the release announcements for the minor > version releases between the versions the OP has installed: > > * https://www.ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released/ > * https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/ > > 2.4.0 saw breaking changes, 2.3.0 not. In 2.4.0, the most notable > breaking change was the unification of Fixnum and Bignum into > Integer. Other breaking changes affected the standard library (stdlib): > > * Tk was dropped from the stdlib. > * XMLRPC was dropped from the stdlib. > * Support for OpenSSL <=3D 0.9.7 was dropped from the stdlib. > > For Tk specifically, the reason for the removal was that the maintainer > got demotivated by useless and even hostile feedback[1] and since nobody > wanted step up, the library was removed from the stdlib[2]. > > The exact judgement of how grave these changes are is subjective. Fixnum > and Bignum were not classes commonly used in Ruby code, so it may be > viewed as a detail. They saw a more frequent use in C extensions, which > may then be viewed more grave; the release announcement iself is pretty > clear on this topic: > > Ruby 2.4.0 release announcment from 2016-12-25: >> All C extensions which touch the Fixnum or Bignum class need to be >> fixed. > > I was not too happy with this either, but most software continued to > work. > These are all fairly major changes for a minor release. I'm not really sure any of this evidence supports the opinion that Ruby doesn't experience breaking changes more regularly than other languages. E.g. Python doesn't see name changes or standard class removals in minor versions. There has only been one major set of breaking change to date, Python 2 to Python 3, and it seems like the Python developers will continue > I don't know the reason why the OP was left with three versions of > Ruby. Given the above release announcements, there are not too many > reasons why his software should not work with newer versions of > Ruby. > > All this only applies to the core language. Some RubyGems packages > release very rigorously and some even make use of undocumented features > of (the C interface of) the Ruby language. That's however a different > problem. > Leading into my next point, I remember some conversations about people discussing the Ruby parser and how there was no BNF description of the language. Consequently (from memory) there was at least one implementation of Ruby were encountering regressions in the parser between versions that were undocumented and not detected until the releases had already been made. The result was that code was semantically different between some versions. Regrettably I'm having trouble citing this one. Situations like the above, and reliance on private C interfaces, are what makes it seem plausible to me that there are packages that require a version that has no listed breaking changes. I admit I have not looked in great detail because I do not have the time. > Am 02. September 2017 um 21:18 Uhr -0500 schrieb R0b0t1 : >> One of the reasons I dislike Ruby is that there is no complete >> specification of the language available, making this statement >> (technically) untestable. > > There *is* a formal complete ISO specification of the language available, > approved in 2012[3]. > This statement makes me think you haven't tried to understand the issue, as that ISO document - to the best of my knowledge, I can't actually view it without paying money - implements Ruby 1.8.1 and potentially some features from 1.9. Hearsay indicates it was started at the behest of the Japanese government so that they could use Ruby for internal projects as their rules seem to require standards documents for software. This is important, because it shows that there is no real effort by Ruby's lead developer or the Ruby community to produce a legitimate standards document. In practice one finds more references to something called RubySpec which is an executable implementation of what people like to call a specification. RubySpec appears to be discontinued[1], but even when it was in use there are three things that should be pointed out: 1) RubySpec had nothing to do with the core Ruby implementation, 2) RubySpec is written in Ruby, and 3) it is impossible to define something by listing what it is not. If you look at the RubySpec code you will see that the "specification" consists of testcases that attempt to define the behavior of Ruby. As mentioned, these tests are written in Ruby, and are subject to bugs in Ruby that are made undetectable, or very hard to detect, by the self-referential relationship of the behavioral specification and the language. The last point may look like an irrelevant epistemological concern but is extremely relevant because the study of programming languages can only happen through mathematics. The same logic, stated differently, is what is used to conclude that the halting problem is intractable: if I only give you what x is not, it is always possible to use the rules already given to define an x that is not what someone else might intend x to be. If you search for something as simple as "Ruby BNF" or "Ruby standard" you will find plenty of comments going into the details of how no standard is actually complete, and how no standard is actually related to the Ruby project. The source below touches on some of the issues I presented above in a Ruby-specific way. What I have read in this regard leads me to conclude that Ruby is not a language that I should use for my development, and it pains me to say this. Cheers, R0b0t1. [1] https://github.com/rubinius/rubinius-website-archive/blob/cf54187d42127= 5eec7d2db0abd5d4c059755b577/_posts/2014-12-31-matz-s-ruby-developers-don-t-= use-rubyspec.markdown