Was sind die Hauptunterlassungen in mruby im Vergleich zu MRT?

8

Ich bin ziemlich interessiert an dem mruby Projekt, aber ich hatte kein Glück darin, eine Zusammenfassung der wichtigsten Lücken in mruby zu finden verglichen mit anderen, vollständigeren Ruby-Implementierungen (am wichtigsten, MRI).

Die README im Projekt besagt, dass mruby "Teil des" ISO-Standards für Ruby, aber geht nicht ins Detail, welche Features weggelassen werden.

Kennt jemand eine Liste solcher Versäumnisse oder ist jemand, der mit der Implementierung vertraut ist, zusammenzufassen?

    
grumbler 11.09.2013, 04:41
quelle

4 Antworten

5

Also habe ich die Quelle nicht genau gelesen, aber nachdem ich mruby gebaut und den Interpreter ein wenig ausgeführt habe, habe ich festgestellt, dass die folgenden Dinge fehlten (keineswegs eine vollständige Liste, noch weiß ich, ob es diese sind) absichtliche Auslassungen oder nur Dinge, die noch nicht geschrieben wurden):

  • Backticks
  • eval
  • String#scan
  • (instance|module|class)_eval mit String Argumente
  • Module.constants
  • Regexp
  • Process
  • Bignum
  • IO , File und Dir
  • Encoding
  • Thread und Mutex
  • Marshal

Wenn jemand eine vollständigere Liste hat oder die Details weiß, ob diese Bits einfach nicht noch implementiert sind oder absichtlich weggelassen werden, würde ich immer noch neugierig sein.

    
grumbler 12.09.2013 05:05
quelle
3

Sehen Sie sich die so genannten mrbgems ( Ссылка ) an. Einige Ihrer fehlenden Features (d. H. RegExp, eval, File) sind als zusätzliches GEM verfügbar.

    
Daniel Bovensiepen 01.10.2013 18:09
quelle
1

Ich starte einfach den einfachen Code-Clip mit mruby und erhalte ein anderes Ergebnis von der MRT.

%Vor%

mruby gibt 7 aus, während das MRI 12 ausgibt

    
Tim Wu 18.03.2014 03:07
quelle
0

Eine unvollständige, aber aktuelle Liste der Unterschiede zwischen Ruby MRI und MRuby finden Sie unter Ссылка .

Ab Februar 2018 sind dies die aufgeführten Unterschiede:

  • 1/2 gibt Float(0.5) , weil mruby Bignum nicht unterstützt.
  • Wenn ein Array an puts übergeben wird, wird eine andere Ausgabe ausgegeben.
  • Kernel.raise ohne Argumente löst die aktuelle Ausnahme innerhalb einer rescue-Klausel nicht aus.
  • Die Faserausführung kann die C-Funktionsgrenze nicht überschreiten
  • Array unterstützt keine Instanzvariablen
  • Keine Methodensichtbarkeit ( public / private / protected ) wird unterstützt.
  • defined? fehlt
  • Das Aliasing einer globalen Variablen funktioniert in CRuby, ist aber nicht Teil des ISO-Standards.
  • Ein Operator kann nicht vom Benutzer überschrieben werden.
gioele 02.02.2018 10:49
quelle

Tags und Links