Ruby Internals Glossar

Nur eine Liste von Akronymen, die mir im Ruby-Quellcode begegnet sind, und ihre Bedeutungen.

Begriff Definition
bmethod Durch define_method() {} definierte Methode (ein Block, der als Methode ausgeführt wird).
BIN Basic Instruction Name. Wird als Makro verwendet, um auf die YARV-Instruktion zu verweisen. Konvertiert pop in YARVINSN_pop.
bop Basic Operator. Bezieht sich auf Methoden wie Integer plus und minus, die optimiert werden können, solange sie nicht neu definiert wurden.
cc Call Cache. Eine Inline-Cache-Struktur für die Aufrufstelle. Gespeichert im cd
cd Call Data. Eine Datenstruktur, die auf ci und cc zeigt. iseq-Objekte zeigen auf cd und greifen über diese Struktur auf Aufrufsinformationen und Aufruf-Caches zu.
CFG Control Flow Graph. Darstellung des Programms, bei der alle Kontrollfluss- und Datenabhängigkeiten durch Aufrollen des Stacks und lokaler Variablen explizit gemacht wurden.
cfp Control Frame Pointer. Repräsentiert einen Ruby-Stack-Frame. Das Aufrufen einer Methode fügt einen neuen Frame (cfp) hinzu, das Zurückkehren entfernt einen Frame. Zeigt auf pc, sp, ep und das entsprechende iseq.
ci Call Information. Bezieht sich auf eine rb_callinfo-Struktur. Enthält Aufrufsinformationen über die Aufrufstelle, einschließlich der Anzahl der zu übergebenden Parameter, ob es sich um Schlüsselwortargumente handelt oder nicht usw. Wird zusammen mit cc und cd verwendet.
cme Callable Method Entry. Bezieht sich auf die Struktur rb_callable_method_entry_t, die interne Darstellung einer Ruby-Methode, bei der defined_class und owner gesetzt sind und die zur Dispatching bereit ist.
cref Class Reference. Eine Struktur, die auf die Klassenreferenz zeigt, in der klass_or_self, der Sichtbarkeitsbereich und Verfeinerungen gespeichert sind. Sie speichert auch einen Zeiger auf die nächste Klasse in der Hierarchie, auf die von rb_cref_struct * next verwiesen wird. Die Klassenreferenz ist lexikalisch begrenzt.
CRuby Referenzimplementierung von Ruby in C geschrieben.
cvar Klassenvariable. Bezieht sich auf eine Ruby-Klassenvariable wie @@foo.
dvar Dynamische Variable. Wird vom Parser verwendet, um lokale Variablen zu referenzieren, die außerhalb des aktuellen lexikalischen Geltungsbereichs definiert sind. Zum Beispiel def foo; bar = 1; -> { p bar }; end, das "bar" innerhalb des Blocks ist ein dvar.
ec Execution Context. Der VM-Kontext der obersten Ebene, zeigt auf den aktuellen cfp.
ep Environment Pointer. Lokale Variablen, einschließlich Methodeparameter, werden im ep-Array gespeichert. Der ep wird vom cfp referenziert.
GC Garbage Collector
gvar Globale Variable. Bezieht sich auf eine Ruby-Globale Variable wie $$ usw.
ICLASS Interne Klasse. Wenn ein Modul enthalten ist, erhält die Zielklasse eine neue Oberklasse, die eine Instanz von ICLASS ist. Die ICLASS repräsentiert das Modul in der Vererbungskette.
ifunc Internal FUNCtion. Ein in C implementierter Block.
iseq Instruction Sequence. Normalerweise verweist "iseq" im C-Code auf ein rb_iseq_t-Objekt, das eine Referenz auf die tatsächlichen Instruktionssequenzen enthält, die von der VM ausgeführt werden. Das Objekt enthält auch Informationen über den Code, wie z. B. den dem Code zugeordneten Methodennamen.
insn Instruktion. Bezieht sich auf eine YARV-Instruktion.
insns Instruktionen. Normalerweise ein Array von YARV-Instruktionen.
ivar Instanzvariable. Bezieht sich auf eine Ruby-Instanzvariable wie @foo.
imemo Internal Memo. Eine getaggte Struktur, deren Speicher von Rubys GC verwaltet wird, aber interne Informationen enthält und nicht für Ruby-Programme bestimmt ist. Enthält je nach Typ verschiedene Informationen. Siehe die Enum imemo_type für verschiedene Typen.
IVC Instance Variable Cache. Spezieller Cache für den Zugriff auf Instanzvariablen.
JIT Just In Time compiler
lep Local Environment Pointer. Ein ep, das mit VM_ENV_FLAG_LOCAL getaggt ist. Normalerweise ist dies der ep einer Methode (im Gegensatz zu einem Block, dessen ep nicht "lokal" ist).
local Lokal. Bezieht sich auf eine lokale Variable.
me Method Entry. Bezieht sich auf eine rb_method_entry_t-Struktur, die interne Darstellung einer Ruby-Methode.
MRI Matz's Ruby Implementation
pc Program Counter. Normalerweise die Instruktion, die von der VM als nächstes ausgeführt wird. Wird vom cfp referenziert und von der VM inkrementiert.
snt Shared Native Thread. OS-Thread, auf dem viele Ruby-Threads laufen können. Ruby-Threads aus verschiedenen Raktoren können sogar auf demselben SNT laufen. Ruby-Threads können SNTs beim Kontextwechsel wechseln. SNTs werden im M:N-Threading-Modell verwendet. Standardmäßig verwenden Nicht-Haupt-Raktoren dieses Modell.
dnt Dedicated Native Thread. OS-Thread, auf dem nur ein Ruby-Thread laufen kann. Der Ruby-Thread läuft immer auf demselben OS-Thread. DNTs werden im 1:1-Threading-Modell verwendet. Standardmäßig verwendet der Haupt-Raktor dieses Modell.
sp Stack Pointer. Die Spitze des Stacks. Die VM führt Anweisungen im iseq aus, und Anweisungen pushen und poppen Werte auf dem Stack. Die VM aktualisiert den sp auf dem cfp, um auf die Spitze des Stacks zu zeigen.
ST table ST table ist die Haupt-C-Implementierung eines Hash (kleinere Ruby-Hashes können von AR-Tabellen unterstützt werden).
svar Spezialvariable. Bezieht sich auf spezielle lokale Variablen wie $~ und $_. Siehe die Instruktion getspecial in insns.def.
VALUE VALUE ist ein Zeiger auf ein Ruby-Objekt aus dem Ruby-C-Code.
VM Virtual Machine. Im Fall von MRI YARV (Yet Another Ruby VM).
WB Write Barrier. Im Zusammenhang mit GC-Write-Barrieren.
WC Wild Card. Wie in Anweisungen wie getlocal_WC_0 zu sehen. Es bedeutet, dass diese Anweisung einen "Platzhalter" für den Parameter nimmt (in diesem Fall einen Index für eine lokale Variable).
YARV Yet Another Ruby VM. Die virtuelle Maschine, die CRuby verwendet.
ZOMBIE Ein Zombie-Objekt. Ein Objekt, das einen Finalizer hat, der noch nicht ausgeführt wurde. Das Objekt wurde gesammelt, ist also "tot", aber der Finalizer wurde noch nicht ausgeführt, so dass es immer noch einigermaßen lebendig ist.