[#111121] [Ruby master Bug#19165] Method (with no param) delegation with *, **, and ... is slow — "matsuda (Akira Matsuda)" <noreply@...>

Issue #19165 has been reported by matsuda (Akira Matsuda).

9 messages 2022/12/01

[#111135] [Ruby master Bug#19167] Object#inspect does not correctly show NilClass TrueClass and FalseClass stored in instance variables — "tompng (tomoya ishida)" <noreply@...>

Issue #19167 has been reported by tompng (tomoya ishida).

7 messages 2022/12/01

[#111183] [Ruby master Misc#19178] How does CRuby handle CVE issues in stdlib gems which get patched? — "Segaja (Andreas Schleifer)" <noreply@...>

Issue #19178 has been reported by Segaja (Andreas Schleifer).

14 messages 2022/12/03

[#111220] [Ruby master Bug#19187] Ruby 3.1.3 testsuite fails after timezone 2022g update is applied — "coolo (Stephan Kulow)" <noreply@...>

Issue #19187 has been reported by coolo (Stephan Kulow).

11 messages 2022/12/06

[#111264] [Ruby master Feature#19197] Add Exception#root_cause — "AMomchilov (Alexander Momchilov)" <noreply@...>

Issue #19197 has been reported by AMomchilov (Alexander Momchilov).

8 messages 2022/12/12

[#111272] [Ruby master Bug#19231] Integer#step and Float::INFINITY - inconsistent behaviour when called with and without a block — "andrykonchin (Andrew Konchin)" <noreply@...>

Issue #19231 has been reported by andrykonchin (Andrew Konchin).

7 messages 2022/12/13

[#111279] [Ruby master Bug#19233] Failed to install sqlite3 gem since 7f1ca666424849134990d022266bcd4d6636465f using Docker — "yahonda (Yasuo Honda)" <noreply@...>

Issue #19233 has been reported by yahonda (Yasuo Honda).

9 messages 2022/12/14

[#111306] [Ruby master Feature#19236] Allow to create hashes with a specific capacity from Ruby — "byroot (Jean Boussier)" <noreply@...>

Issue #19236 has been reported by byroot (Jean Boussier).

15 messages 2022/12/15

[#111318] [Ruby master Misc#19240] DevMeeting-2023-01-19 — "mame (Yusuke Endoh) via ruby-core" <ruby-core@...>

Issue #19240 has been reported by mame (Yusuke Endoh).

14 messages 2022/12/16

[#111339] [Ruby master Feature#19245] Strict mode for Array#pack that doesn't silently truncate numbers that are too large for the given directive — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>

Issue #19245 has been reported by byroot (Jean Boussier).

8 messages 2022/12/20

[#111342] [Ruby master Bug#19246] Rebuilding the loaded feature index much slower in Ruby 3.1 — "thomthom (Thomas Thomassen) via ruby-core" <ruby-core@...>

Issue #19246 has been reported by thomthom (Thomas Thomassen).

22 messages 2022/12/20

[#111361] [Ruby master Bug#19248] TestGCCompact#test_moving_objects_between_size_pools test failure — "vo.x (Vit Ondruch) via ruby-core" <ruby-core@...>

Issue #19248 has been reported by vo.x (Vit Ondruch).

25 messages 2022/12/21

[#111400] [Ruby master Bug#19254] Enabling YJIT configuration option breaks rspec-core test suite — "vo.x (Vit Ondruch) via ruby-core" <ruby-core@...>

Issue #19254 has been reported by vo.x (Vit Ondruch).

7 messages 2022/12/23

[#111448] [Ruby master Bug#19266] URI::Generic should use URI::RFC3986_PARSER instead of URI::DEFAULT_PARSER — "gareth (Gareth Adams) via ruby-core" <ruby-core@...>

Issue #19266 has been reported by gareth (Gareth Adams).

9 messages 2022/12/26

[#111456] [Ruby master Bug#19271] irb ignores rbs and debug with YJIT enabled — "olivierlacan (Olivier Lacan) via ruby-core" <ruby-core@...>

Issue #19271 has been reported by olivierlacan (Olivier Lacan).

9 messages 2022/12/27

[#111461] [Ruby master Feature#19272] Hash#merge: smarter protocol depending on passed block arity — "zverok (Victor Shepelev) via ruby-core" <ruby-core@...>

Issue #19272 has been reported by zverok (Victor Shepelev).

9 messages 2022/12/27

[#111465] [Ruby master Bug#19273] [Regexp] regexp does not does not match expected — "taichi730 (Taichi Ishitani) via ruby-core" <ruby-core@...>

Issue #19273 has been reported by taichi730 (Taichi Ishitani).

8 messages 2022/12/28

[#111477] [Ruby master Bug#19275] Bundled gems extensions are not installed with 3.2.0 release tarball — "xtkoba (Tee KOBAYASHI) via ruby-core" <ruby-core@...>

Issue #19275 has been reported by xtkoba (Tee KOBAYASHI).

8 messages 2022/12/28

[#111480] [Ruby master Misc#19276] It is not possible to reply to emails from rubymine — "graywolf (Gray Wolf) via ruby-core" <ruby-core@...>

Issue #19276 has been reported by graywolf (Gray Wolf).

8 messages 2022/12/28

[#111484] [Ruby master Bug#19278] Constructing subclasses of Data with positional arguments — "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>

Issue #19278 has been reported by tenderlovemaking (Aaron Patterson).

16 messages 2022/12/28

[#111485] [Ruby master Bug#19279] Allow `Coverage.supported?` to recognize oneshot lines mode — "kevin-j-m (Kevin Murphy) via ruby-core" <ruby-core@...>

SXNzdWUgIzE5Mjc5IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtldmluLWotbSAoS2V2aW4gTXVycGh5

7 messages 2022/12/28

[#111526] [Ruby master Bug#19288] Ractor JSON parsing significantly slower than linear parsing — "maciej.mensfeld (Maciej Mensfeld) via ruby-core" <ruby-core@...>

Issue #19288 has been reported by maciej.mensfeld (Maciej Mensfeld).

24 messages 2022/12/30

[#111529] [Ruby master Bug#19289] RbConfig::CONFIG["STRIP"] should keep `rb_abi_version` and `rb_abi_version` should always be part of Ruby — "Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>

Issue #19289 has been reported by Eregon (Benoit Daloze).

8 messages 2022/12/30

[ruby-core:111302] [Ruby master Feature#8223] Make Matrix more omnivorous.

From: "hsbt (Hiroshi SHIBATA)" <noreply@...>
Date: 2022-12-15 08:48:00 UTC
List: ruby-core #111302
Issue #8223 has been updated by hsbt (Hiroshi SHIBATA).



Status changed from Open to Third Party's Issue



`matrix` has been extracted to https://github.com/ruby/matrix.



----------------------------------------

Feature #8223: Make Matrix more omnivorous.

https://bugs.ruby-lang.org/issues/8223#change-100669



* Author: Anonymous

* Status: Third Party's Issue

* Priority: Normal

* Assignee: marcandre (Marc-Andre Lafortune)

----------------------------------------

Let's imagine a class Metre, whose instances represent physical magnitudes =
in metres.



    class Metre

      attr_reader :magnitude

      def initialize magnitude; @magnitude =3D magnitude end

      def to_s; magnitude.to_s + ".m" end

    end



Let's say that metres can be multiplied by a number:



    class Metre

      def * multiplicand

        case multiplicand

        when Numeric then Metre.new( magnitude * multiplicand )

        else

          raise "Metres can only be multiplied by numbers, multiplication b=
y #{multiplicand.class} attempted!"

        end

      end

    end



And that they can be summed up with other magnitudes in metres, but, as a f=
eature,

not with numbers (apples, pears, seconds, kelvins...).



    class Metre

      def + summand

        case summand

        when Metre then Metre.new( magnitude + summand.magnitude )

        else

          raise "Metres can only be summed with metres, summation with #{su=
mmand.class} attempted!"

        end

      end

    end



Now with one more convenience constructor Numeric#m:



    class Numeric

      def m; Metre.new self end

    end



We can write expressions such as



    3.m + 5.m

    #=3D> 8.m

    3.m * 2

    #=3D> 6.m



And with defined #coerce:



    class Metre

      def coerce other; [ self, other ] end

    end



Also this expression is valid:



    2 * 3.m

    #=3D> 6.m



Before long, the user will want to make a matrix of magnitudes:



    require 'matrix'

    mx =3D Matrix.build 2, 2 do 1.m end

    #=3D> Matrix[[1.m, 1.m], [1.m, 1.m]]



It works, but the joy does not last long. The user will fail miserably if z=
e wants to perform matrix multiplication:



    cv =3D Matrix.column_vector [1, 1]

    mx * cv

    #=3D> RuntimeError: Metres can only be summed with metres, summation wi=
th Fixnum attempted!

    # where 2.m would be expected



In theory, everything should be O.K., since Metre class has both metre summ=
ation and multiplication by a number defined. The failure happens due to th=
e internal workings of the Matrix class, which assumes that the elements ca=
n be summed together with numeric 0. But it is a feature of metres, that th=
ey are picky and allow themselves to be summed only with other Metre instan=
ces.



In my real physical units library that I have written, I have solved this p=
roblem by

defining an =FCber zero object that produces the expected result, when summ=
ed with objects, that would otherwise not lend themselves to summation with=
 ordinary numeric 0,

and patching the Matrix class so that it uses this =FCber zero instead of t=
he ordinary one.



But this is not a very systematic solution. Actually, I think that the Matr=
ix class would be more flexible, if, instead of simply using 0, it asked th=
e elements of the matrix what their zero is, as in:



    class << Metre

      def zero; new 0 end

    end



But of course, that would also require that ordinary numeric classes can te=
ll what their zero is, as in:



    def Integer.zero; 0 end

    def Float.zero; 0.0 end

    def Complex.zero; Complex 0.0, 0.0 end

    # etc.



I think that this way of doing things (that is, having #zero methods in num=
eric classes and making Matrix actually require the class of the objects in=
 it to have public class method #zero defined) would make everything more c=
onsistent and more algebra-like. I am having this problem for already almos=
t half a year, but I only gathered courage today to encumber you guys with =
this proposal. Please don't judge me harshly for it. I have actually alread=
y seen something like this, in particular with bigdecimal's Jacobian (http:=
//ruby-doc.org/stdlib-2.0/libdoc/bigdecimal/rdoc/Jacobian.html), which requ=
ires that the object from which the Jacobian is computed implements methods=
 #zero, #one, #two etc. Sorry again.







--=20

https://bugs.ruby-lang.org/

 ______________________________________________
 ruby-core mailing list -- [email protected]
 To unsubscribe send an email to [email protected]
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-c=
ore.ml.ruby-lang.org/

In This Thread

Prev Next