Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Ein wenig über die Implementierungstypen von Ruby (CRuby (MRI), JRuby, Rubinius, TruffleRuby, mruby)

Beitrags-Cover: Ein wenig über die Implementierungstypen von Ruby (CRuby (MRI), JRuby, Rubinius, TruffleRuby, mruby)
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Ruby - objektorientierte Programmiersprache mit dynamischer Typisierung. Sie hat mehrere Implementierungsvarianten, die speziell auf bestimmte Umgebungen und Bedürfnisse abgestimmt sind.

CRuby

Offizieller Interpreter - CRuby, auch bekannt als Matz's (Spitzname von Yukihiro Matsumoto, dem Schöpfer von Ruby) Ruby Interpreter (MRI), ist die offizielle und beliebteste Implementierung von Ruby. Er ist in C geschrieben und ist der Standard für die Kompatibilität verschiedener Bibliotheken (Gems).
CRuby eignet sich hervorragend für die Webentwicklung, insbesondere mit dem Ruby on Rails-Framework. Es unterstützt viele Bibliotheken und hat ein großes Ökosystem und eine Community.

JRuby

JRuby ist eine Ruby-Implementierung, die auf der Java Virtual Machine (JVM) läuft. Es vereinfacht die Integration mit Java-Bibliotheken und ermöglicht die Integration in bestehende Java-Systeme.
Zum Beispiel kann JRuby in großen Unternehmensanwendungen verwendet werden, in denen eine Integration mit bestehenden (Legacy) Java-Systemen erforderlich ist.

Rubinius

Rubinius verwendet LLVM (Low Level Virtual Machine) zur Kompilierung von Code und bietet Multithreading auf der Ausführungsebene. Rubinius versucht, vollständig kompatibel mit CRuby zu sein, was es in einigen Fällen zu einer guten Wahl als Interpreter-Implementierung macht. Rubinius kann in der Entwicklung von Systemen verwendet werden, die eine Verarbeitung paralleler Anfragen (in großer Anzahl) erfordern, wie z.B. Hintergrundaufgaben in Webanwendungen.

TruffleRuby

TruffleRuby ist Teil des Oracle Graal-Projekts und bietet hohe Leistung durch Optimierung auf der Ebene der GraalVM. TruffleRuby eignet sich zur Verarbeitung großer Datenmengen (z.B. in der wissenschaftlichen Forschung), wo maximale Ausführungsgeschwindigkeit und reduzierte Kosten für Rechenressourcen erforderlich sind.

mruby

mruby ist eine leichtgewichtige Version von Ruby, die für eingebettete Systeme konzipiert ist. Sie hat eine kleinere Größe und verbraucht weniger Ressourcen, was sie ideal für eingeschränkte Umgebungen macht. mruby kann in eingebetteten Systemen verwendet werden, wie z.B. Mikrocontrollern oder anderen tragbaren Geräten, wo der Speicherverbrauch minimiert werden muss.

Kann man Ruby im Browser ausführen?

Ruby wird nicht direkt im Browser ausgeführt, wie es bei JavaScript der Fall ist. Es gibt mehrere Ansätze und Werkzeuge, die es ermöglichen, Ruby im Browser auszuführen.
Opal ist ein Compiler, der Ruby-Code in JavaScript umwandelt, sodass Sie Frontend-Logik in Ruby schreiben und dann im Browser als JavaScript ausführen können. Opal verarbeitet Ruby-Code und wandelt ihn in optimiertes JavaScript um, das einen Großteil der Funktionalität von Ruby bereitstellt.
Zum Beispiel können Sie auf der Opal-Website die Funktionalität testen und ein Beispiel sehen, wie der Compiler arbeitet und wie Ruby-Code in JS umgewandelt und im Browser ausgeführt wird. Ein einfaches Beispiel:
Конвертуємо Ruby в JS за допомогою Opal
Конвертуємо Ruby в JS за допомогою Opal
Ruby:
def title(s)
  puts "title is #{s}"
end

puts title('hehe')
JS-Ausgabe:
Opal.queue(function(Opal) {/* Generiert von Opal 1.8.2 */
  var $def = Opal.def, self = Opal.top, nil = Opal.nil;

  Opal.add_stubs('puts,title');
  
  
  $def(self, '$title', function $$title(s) {
    var self = this;

    return self.$puts("title is " + (s))
  });
  return self.$puts(self.$title("hehe"));
});
Und das Ergebnis:
title is hehe
WebAssembly (Wasm) ist ein Werkzeug, das Code einer Programmiersprache kompilieren und im Browser ausführen kann. Dies ist kein direkter Start von Ruby im Browser. Es ist ziemlich kompliziert, aber möglich. Eine der Möglichkeiten könnte so aussehen: mruby wird in C konvertiert, und WebAssembly konvertiert den Code dann in JavaScript, das bereits im Browser ausgeführt werden kann.
Es gibt auch andere Möglichkeiten, Ruby-Code im Browser zu kompilieren und auszuführen. Aber so kann man verstehen, dass es derzeit keine Möglichkeit gibt, Ruby-Code direkt im Browser auszuführen.

Wie kann ich überprüfen, welche Ruby-Implementierung ich verwende?

Es ist ganz einfach - führen Sie im Terminal den Befehl aus, um die Ruby-Version, die Implementierung und die Architektur anzuzeigen.
ruby -e "puts RUBY_DESCRIPTION"
In meinem Fall:
ruby 3.2.1 (2023-02-08 revision 31819e82c8) [x86_64-darwin22]
Unter ruby ist die Standardimplementierung (CRuby) gemeint.
Für JRuby wäre das Ergebnis ungefähr so:
jruby 9.2.11.1 (2.5.7) 2020-03-02 d8d4b94 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 auf 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 +jit [linux-x86_64]
Das heißt, hier sehen wir deutlich den Text jruby.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

18. Apr, 05:27 Uhr

Wir beheben ActiveRecord::ProtectedEnvironmentError in der lokalen Umgebung.

meme code
meme code@memecode
18. Apr, 06:06 Uhr

Wir analysieren den Fehler PG::ObjectInUse (Ruby on Rails)

meme code
meme code@memecode
27. Apr, 09:29 Uhr

Was sind CC und BCC in E-Mails? Wozu und wie verwendet man sie?

meme code
meme code@memecode
Was ist ein Prompt und Prompt-Engineering?
03. Mai, 12:08 Uhr

Was ist ein Prompt und Prompt-Engineering?

meme code
meme code@memecode
ZOMBIE in Ruby. Was ist das?
03. Mai, 12:41 Uhr

ZOMBIE in Ruby. Was ist das?

meme code
meme code@memecode
03. Mai, 13:13 Uhr

Was ist der Garbage Collector in Ruby? Wie funktioniert er und wozu wird der GC benötigt?

meme code
meme code@memecode
07. Mai, 07:24 Uhr

Was ist nativer Maschinencode?

meme code
meme code@memecode
Wir aktivieren YJIT in Ruby 3.2.1 (Ruby on Rails)
08. Mai, 07:57 Uhr

Wir aktivieren YJIT in Ruby 3.2.1 (Ruby on Rails)

meme code
meme code@memecode
09. Mai, 12:43 Uhr

[Fix] Rails Admin - undefinierte lokale Variable oder Methode javascript_importmap_shim_nonce_configuration_tag

meme code
meme code@memecode
Was ist technischer Schulden (technical debt) in IT-Projekten?
13. Mai, 06:17 Uhr

Was ist technischer Schulden (technical debt) in IT-Projekten?

meme code
meme code@memecode
13. Mai, 07:11 Uhr

Was bedeutet Scope im IT-Projektmanagement?

meme code
meme code@memecode
Was ist "Scope Creep"?
13. Mai, 07:20 Uhr

Was ist "Scope Creep"?

meme code
meme code@memecode