Ich bin überrascht, dass niemand Java-Hardware erwähnt hat. Sie sollte uns dazu inspirieren, die Evolution der Hardware durch die Entwicklung eines noch leistungsfähigeren Prozessors voranzutreiben.
Es gibt ein weiteres Projekt, das ich gerade gefunden habe: " Pycorn ".
Wenn es einen Python-Bytecode-Prozessor gäbe, wäre es möglich, ein schnelles Betriebssystem in 100% Python zu erstellen. Der Prozessor könnte den gesamten CPython-Bytecode implementieren, oder alles, was mit der Python-Sprache kompatibel ist (aber keine C-Module!). Der Prozessor müsste mit Referenzzählung, Klassen und Objekten umgehen können. Natives Hashing für Dicts wäre sehr hilfreich, alle komplexen Datenstrukturmanipulationen, die Python derzeit in Software benötigt, sollten rein in Hardware erfolgen. Es gäbe kein Konzept von Zeigern, was ich als Hauptmotivation für den Bau eines solchen Prozessors ansehe, da es unmöglich wäre, den Stack zu zerstören.
Alles wäre ein Objekt! Der Kernel selbst würde Methoden auf dem Speicherobjekt aufrufen, obwohl Sie es nicht viel berühren müssten, da die Hardware sowieso die Zuweisung und die Garbage Collection übernimmt. Interrupt-Handler können einfach auf Python-Methoden gesetzt werden. MSRs, Caches, Debug-Register und I/O-Ports sind Objekte.
Es gibt eine interessante Diskussion über die Implementierung von Python auf einem FPGA aquí .
Auf eine andere Anmerkung, (in Bezug auf eine Python O/S auf einem nicht-Python-Prozessor) zu den Menschen, die behaupten, dass Sie nicht Inline-Assembler Pythonic machen können, ist es ziemlich einfach, nur Assembler von einer Abstraktion, z. B. emittieren:
asm = MetaASM()
asm.r1 = 1234
asm.r2 = r1 + 5
asm.io.out(r1)
Sie können bei Bedarf auf architekturspezifische Assemblierung oder architekturspezifische Operationen/Register umschalten:
asm = ASM("IA-32")
asm.xor(asm.eax, asm.eax)
asm.cr0 = asm.eax
asm.invtlb
asm.fs.0x00123456 = asm.eax
asm.al = 123
asm.dword.ptr.eax = 1234 # mov dword ptr [eax], 1234
asm.push(asm.eax)
CorePy Interesse an diesem Thema aufkommt.