Was ist eine gute VM für die Entwicklung einer Hobbysprache?

8

Ich denke darüber nach, meine eigene kleine Sprache zu schreiben.

Ich habe ein paar Optionen gefunden, aber zögern Sie nicht, mehr zu empfehlen.

  • JVM
  • Papagei
  • OSA

Viele Sprachen benutzen die JVM, aber wenn Sie nicht eine Java-ische Sprache schreiben, wird die ganze Macht, die die stdlib Ihnen gibt, hässlich werden; Es ist auch nicht sehr gut in dynamischen Sachen.

Papagei scheint eine gute VM für die Entwicklung von Sprachen zu sein, aber es hat ein wenig verlassenen / unvollendeten / Hobby-Projekt Geruch.

OSA ist das, was Applescript antreibt, keine besonders bekannte VM, aber ich benutze Mac und es bietet eine gute Systemintegration.

CLR + Mac scheint keine gute Kombination zu sein ...

Meine Sprache wird eine objektorientierte funktionale gleichzeitige Datenflusssprache mit starker Typisierung und einer Mischung aus Python- und Lisp-Syntax sein. Klingt gut, wie?

[Bearbeiten]
Ich akzeptierte Python für jetzt, aber ich würde gerne mehr über OSA und Parrot erfahren.

    
Pepijn 30.01.2010, 10:52
quelle

4 Antworten

5

Ein Ansatz, mit dem ich gespielt habe, ist das Python-Modul ast , um eine abstrakte Syntax zu erstellen Baum, der den auszuführenden Code darstellt. Die Python-Funktion compile kann einen AST in Python-Bytecode kompilieren, wobei exec kann dann ausgeführt werden. Dies ist etwas höher als das direkte Erzeugen von Bytecode, aber Sie werden sich mit einigen Macken der Python-Sprache befassen müssen (zum Beispiel der grundlegende Unterschied zwischen Anweisungen und Ausdrücken).

Dazu habe ich auch ein "deparse" -Modul geschrieben, das versucht, eine AST zurück in äquivalenten Python-Quellcode zu konvertieren, nur zum Debuggen. Sie können Code im Psil Repository finden, wenn Sie daran interessiert sind.

    
Greg Hewgill 30.01.2010, 11:26
quelle
4

Schauen Sie sich LLVM an. Es handelt sich nicht um eine reine VM als solches, sondern vielmehr um ein Framework mit einer eigenen IR, die es Ihnen ermöglicht, High-Level-VMs zu erstellen. Hat schöne Sachen wie statische Code-Analyse und JIT-Unterstützung

    
zebrabox 30.01.2010 10:57
quelle
2
  • Lua hat eine kleine, gut geschriebene und schnelle VM
  • Python VM - Sie können wirklich eine neue Sprache anhängen, wenn Sie möchten. Oder schreiben (benutzen?) Etwas wie tinypy, das eine kleine und einfache Implementierung der Python-VM ist.

Beide oben genannten Optionen haben Zugriff auf nützliche Standardbibliotheken, die Ihnen Arbeit ersparen und in relativ sauberem und modularem C codiert sind, so dass sie nicht schwer zu verbinden sein sollten.

Das stimmt, ich stimme nicht zu, dass Papagei aufgegeben / Hobby ist. Es ist ziemlich ausgereift und hat einige sehr starke Entwickler, die daran arbeiten. Darüber hinaus ist es speziell eine VM, die auf mehrere dynamische Sprachen ausgerichtet ist. So wurde mit Flexibilität konzipiert.

    
Eli Bendersky 30.01.2010 10:55
quelle
1

Haben Sie Pypy in Betracht gezogen? Von dem, was ich gelesen habe, abgesehen davon, dass es ein Python JIT Compiler ist, hat es auch die Fähigkeit, mit anderen Sprachen umzugehen. Zum Beispiel gibt es ein Tutorial , das erklärt, wie man einen Brainfuck JIT erstellt Compiler mit Pypy.

    
Antimony 10.06.2012 00:37
quelle