Lua C++ Binding
-
WOOOOOO? schrieb:
ja WO sind diese beschreibungen? WO ist der ISO-standard? darum gehts doch hier
WOOOOO? Nur WOOOOO?? sind die lustigen trolle?
Darum gehts doch hier.PS:
Ein Standard ist keinen pfifferling Wert.
Den Wert bekommt ein Standard durch die Umsetzung von Leuten. Und das ist das essentielle. Mit genug Geld kann alles ein ISO Standard werden, aber praktischen nutzen hat sowas nicht.Die Frage ob Python ISO Standardisiert werden soll, ist eine reine finanzielle Frage. Und ein ISO Standard wäre für Sprachen wie Python sehr schlecht.
-
Shade Of Mine schrieb:
WOOOOOO? schrieb:
ja WO sind diese beschreibungen? WO ist der ISO-standard? darum gehts doch hier
WOOOOO? Nur WOOOOO?? sind die lustigen trolle?
Darum gehts doch hier.PS:
Ein Standard ist keinen pfifferling Wert.
Den Wert bekommt ein Standard durch die Umsetzung von Leuten. Und das ist das essentielle. Mit genug Geld kann alles ein ISO Standard werden, aber praktischen nutzen hat sowas nicht.Die Frage ob Python ISO Standardisiert werden soll, ist eine reine finanzielle Frage. Und ein ISO Standard wäre für Sprachen wie Python sehr schlecht.
ach ihr mit euren trollen, ich seid doch alle paranoid.
sowohl lua als auch python sind sprachen unter freien lizenzen, warum sollte es keine öffentlichen standards geben? es gibt ja nichtmal irgendwelche beschreibungen, nichtmal das. nach welchen standards werden denn die parser und interpreter geschrieben? das würde mich mal interessieren.
es MUSS irgendwo einen standard oder eine genaue beschreibung geben, sonst funktioniert das nicht. das ist mit allen dingen so. wenn alle ihr eigenes ding machen, dann funkioniert nix
-
das hier wäre z.b. was:
http://www.lua.org/manual/5.2/manual.html
ist aber halt nicht genau das, was ich suche.
-
<link> schrieb:
es gibt ja nichtmal irgendwelche beschreibungen, nichtmal das. nach welchen standards werden denn die parser und interpreter geschrieben? das würde mich mal interessieren.
es MUSS irgendwo einen standard oder eine genaue beschreibung geben, sonst funktioniert das nicht. das ist mit allen dingen so. wenn alle ihr eigenes ding machen, dann funkioniert nix
Augen auf und lesen:
http://www.lua.org/manual/5.2/manual.html
http://docs.python.org/3/reference/abbba schrieb:
das hier wäre z.b. was:
http://www.lua.org/manual/5.2/manual.html
ist aber halt nicht genau das, was ich suche.Was suchst du dann? Die ganze Sprache ist dort beschrieben. Inklusive der Standardbibliothek, der API, der Hilfs-API und am Ende sogar noch mit der EBNF Angabe für die Parser. Das ist sogar ausführlicher als der C++ Standard.
Falls da wirklich noch etwas unklar bliebe, kannst ja auch gerne die Referenz-Implementation anschauen gehen.
Grüssli
-
Ich habe mir vorhin den Spaß gemacht, LuaJit und LuaBind in mein Programm reinzufrickeln. Ich muss schon sagen, das geht echt wie geschmiert, Hut ab. Die Schattenseite ist allerdings, dass das alleinige includen von luabind Visual Studio fast in die Knie zwingt. Da geht der CPU-Lüfter meines alten Core 2 Duo los und das Tippen wird streckenweise auch verzögert. Intellisense muss man dann immer zweimal antippen, bis irgendwas kommt. Ich werde morgen mal probieren, dafür einen pch zu generieren...
Das liegt doch hauptsächlich an den ganzen Variadics, die da simuliert werden, hoffe ich? Wenn ja, wäre das mal ein weiterer Grund, warum Microsoft mal über eine Consumer Preview hinaus kommen sollte
-
Okay, luabind hat seine Stärken, aber wenn man die nicht braucht, sorgt es für zuviel Overhead, außerdem funktionieren seine Exceptions nicht so gut in Verbindung mit LuaJit. Ich hätte hier eigentlich zwei Verwendungen für Lua: Einmal eine nicht performance-kritische, bei der aber viel von meinem Programm erreichbar sein sollte, und eine performance-kritische "Echtzeit"-Sache. Nun wäre es toll, wenn ich für das eine LuaJit verwenden könnte und für das andere normales Lua + Luabind. Nun sind die beiden Drop-In-kompatibel. Kann man irgendwie zwei unterschiedliche C++-Übersetzungseinheiten an unterschiedliche Bibliotheken mit gleichem Interface binden? Sodass praktisch die obj-Datei, die der Compiler pro Übersetzungseinheit ausspuckt schon an die zu verwendende Bibliothek gebunden ist?
Andererseits glaube ich gelesen zu haben, dass man bei LuaJit angeben kann, dass es kein Jit machen soll, vielleicht funktionieren dann ja exceptions so, wie man es möchte, dann könnte ich mir Frickeleien ersparen.
-
Hier gibts eine Übersicht über C++-Bindings. LuaBridge sieht auf den ersten Blick auch recht nett aus.
Ich habe auch ein wenig mit LuaBind gearbeitet, bisher allerdings erst für Konfigurationsdateien (keine Skripts). Die Bibliothek gehört vergleichsweise schon eher zu den Schwergewichten, auch da sie viel Boost verwendet, was die Kompilierzeit teilweise recht in die Höhe treibt.
-
Okay, die pch-Datei meiner kompletten Anwendung, inklusive MFC-Gedöns, und all denn Windows-Headern liegt derzeit bei ungefähr 80mb. Eine pch-Datei, die nur luabind enthält kommt bei 46mb zum Liegen.
-
Wenn ich hier gerade schon rumlungere...
LuaBind + LuaJIT + Ausnahmen sind unter win32 x86 wirklich problematisch (also wenn eine exception fliegt in einem Aufruf aus Lua), aber das lässt sich beheben. Jetzt funktioniert das bei mir gut, sogar mit Ausnahmen.
-
Decimad schrieb:
Wenn ich hier gerade schon rumlungere...
LuaBind + LuaJIT + Ausnahmen sind unter win32 x86 wirklich problematisch (also wenn eine exception fliegt in einem Aufruf aus Lua), aber das lässt sich beheben. Jetzt funktioniert das bei mir gut, sogar mit Ausnahmen.Wird ja auch hier beschrieben:
http://luajit.org/extensions.html#exceptionsUnd gilt halt eben nur für LuaJIT.
Grüssli
-
Ich habe ja geschrieben, dass das zu erwarten war, weil bekanntes Problem. LuaBind ist aber in der Form wie sie online steht so konzipiert, dass sie nicht zu LuaJit kompatibel ist, wenn es um exceptions auf x86 geht. Wenn man die invoke-Aufrufe in eine Wrapper-Funktion auslagert, funktioniert es aber wieder und das ist im Prinzip ein schnell gemachter fix.
-
Decimad schrieb:
Ich habe ja geschrieben, dass das zu erwarten war, weil bekanntes Problem.
Bekannt nur für denjenigen, der es schon weiss. Daher war dein Beitrag zuvor etwas inhaltsleer. Auch deine Lösung hast du nicht beschrieben. Weshalb ich eben diesen Zusatz mit dem Link gemacht habe:
1. Damit jemand anderes versteht, was du damit meinst.
2. Um zu prüfen, ob du es wirklich weisst.Exceptions sind aber eigentlich auch sonst mit Lua ein Problem, auch wenn man Lua als C++ Code kompiliert. Dann verwendet Lua zwar intern ebenfalls Exceptions statt
setjmp
undlongjmp
, aber leider verwenden sie zum Fangen ein Catch-All.
SieheLUAI_TRY
- http://www.lua.org/source/5.2/ldo.c.htmlMan bekommt somit nie seine eigene Exception durch irgendwelchen Lua-Code durch.
Grüssli