
Wie im
vorherigen Beitrag angekĂŒndigt, wird am 3. MĂ€rz (dem ersten Sonntag im MĂ€rz) im Moskauer BĂŒro der Mail.ru Group die dritte internationale Lua-Konferenz, Lua in Moskau 2019, stattfinden. Einzelheiten zum Zeitplan finden Sie unter der KĂŒrzung.
Die Konferenz wird zwei parallele Tracks beinhalten: VortrÀge und Workshops.
Alle VortrÀge und Workshops werden in englischer Sprache ohne gleichzeitige Interpretation ins Russische gehalten.
VortrÀge (Konferenzraum Nr. 1)
10:30 Abzeichenabholung
11:00 - 11:45 âWarum (und warum nicht) Luaâ, Roberto Ierusalimschy, PUC-RioDas Design einer Programmiersprache wie jedes andere Artefakt bringt viele Kompromisse mit sich, die mit widersprĂŒchlichen Anforderungen verbunden sind. Verschiedene Sprachen lösen diese Kompromisse auf unterschiedliche Weise, sodass sie fĂŒr einige Szenarien besser geeignet und fĂŒr andere Einstellungen weniger attraktiv sind.
Lua hat seine eigenen Ziele, die das Design bestimmen. Dieser Satz priorisiert Einbettbarkeit, geringe GröĂe, Einfachheit und PortabilitĂ€t. (Es gibt auch andere Ziele, wie Leistung und Benutzerfreundlichkeit fĂŒr nicht professionelle Programmierer.)
In diesem Vortrag werden wir die Auswirkungen dieser Ziele diskutieren. Wir werden sehen, wie sich diese Ziele auf die Sprache selbst auswirken, wie sie sich auf ihre Verwendung auswirkt und wie sie sich auf ihre Eignung fĂŒr verschiedene Anwendungsbereiche auswirkt.
12:00 - 12:45 "Resty-Threadpool: Apache in Nginx neu erfinden", Julien Desgats, CloudFlareAsynchrone Ereignisschleifen sind eine bewĂ€hrte Methode zur Skalierung von Netzwerkservern. Nginx (neben vielen anderen erfolgreichen Produkten) verwendet diese Technik im Kern. Die Leistung hĂ€ngt jedoch von einer wichtigen Annahme ab: Die GeschĂ€ftslogik darf nicht zu lange ausgefĂŒhrt werden, da sonst die Gesamtleistung schnell zusammenbricht.
Bei Cloudflare verlassen wir uns bei unseren Edgeservern stark auf OpenResty (nginx + Lua + -Bibliotheken) und stellen sicher, dass eine vorhersehbare Leistung von entscheidender Bedeutung ist. Das Entladen einiger komplexer Teile der Verarbeitung auĂerhalb der Ereignisschleife ist daher erforderlich und wurde normalerweise durch Schreiben von Mikrodiensten durchgefĂŒhrt. Wir haben einen anderen Ansatz versucht, bei dem die Nginx-Thread-Pool-Funktion genutzt wird . In diesem Vortrag werde ich detailliert auf die Herausforderungen und Ergebnisse der Herausnahme der wichtigsten Sicherheitsfunktionen aus der Ereignisschleife eingehen.
13:00 - 14:00 Mittagessen
14:00 - 14:45 Uhr âErfahrung des Tarantool-Teams mit Lua-Entwicklertoolsâ, Yaroslav Dynnikov, Mail.ru GroupJede Programmiersprache hat ein eigenes Ăkosystem, das fĂŒr das Wohlbefinden der Gemeinschaft wichtig ist. Bei der Anwendungsentwicklung geht es nicht nur darum, den Code zu schreiben, sondern ihn auch zu testen, zu optimieren und mit anderen zu teilen. Hier in Tarantool haben wir viele Entwickler, die ganztĂ€gig mit Lua interagieren.
Ich werde verschiedene Aspekte der Lua-Entwicklung in unserer Umgebung diskutieren:
- Wie wir bequem mit Flusen Code schreiben.
- Welche Tools verwenden wir zum Debuggen und Testen?
- Wie wir Dokumentation und Verpackung bequem verwalten.
- Und vor allem, welche Funktionen uns fehlen.
15:00 - 15:45 "Shaders and Lua", Sergey Lerg, Spiral Code StudioEs ist nicht möglich, Shader in Lua zu schreiben, aber es ist möglich, sie mit Lua zu steuern. Ich möchte zeigen, wie einfach es ist, mit der Kraft von GLSL und Lua schöne Effekte zu erzielen. ZusĂ€tzlich werde ich nĂŒtzliche Tipps und Tricks fĂŒr die Arbeit mit Shadern in der Defold-Game-Engine bereitstellen.
15:45 - 16:15 Kaffeepause
16:15 - 17:00 "EinfĂŒhrung in den Dynasmus von Luajit", Michael Filonenko, Mail.ru GroupDynasm ist ein Maschinencodegenerator fĂŒr verschiedene Architekturen (x86, x86_64 usw.). Es enthĂ€lt zwei Teile:
- Maschinencode-Generator geschrieben in C,
- und Assembler-PrÀprozessor in Lua.
Der ursprĂŒngliche PrĂ€prozessor funktioniert nur mit C / Assembler-Quellen. Und es gibt eine Abzweigung von luapower, die Lua-Dateien mit Assembler-Codegeneratoren vorverarbeiten kann. Es gibt einen Fall, in dem wir Logik aus Benutzereingaben verwenden möchten. Lassen Sie uns dieses Toolset untersuchen und einen einfachen S-Expression-Compiler erstellen.
Die Hauptfrage lautet: "Wie komfortabel ist es, einen Compiler fĂŒr Benutzereingaben zu erstellen?".
17:15 - 18:00 "Herausforderungen von 'Paaren' und 'nÀchster' JIT-Zusammenstellung", Maxim Bolshov, IPONWEBIn IPONWEB haben wir unsere eigene Lua-Implementierung. Es wurde von LuaJIT 2.0 gegabelt und erbte so alle seine EinschrÀnkungen. Insbesondere pairs
und next
Funktionen wurden vom JIT-Compiler nicht unterstĂŒtzt. In unserer Lua-Codebasis ist dies jedoch ein Hauptgrund fĂŒr AbbrĂŒche der Trace-Kompilierung, der einige Kompromisse zwischen Codestil und Anwendungsleistung mit sich bringt. In diesem Vortrag werde ich:
- Besprechen Sie, was es bedeutet, dass die Bibliotheksfunktion
JITable
. - ErklÀren Sie die Implementierungsspezifikationen von
pairs
und die next
in LuaJIT. - ErzÀhlen Sie von JIT-EinschrÀnkungen, die
pairs
und die next
Kompilierung zu einer nicht so trivialen Aufgabe machen. - Zeigen Sie unsere Fortschritte bei der Lösung dieser Aufgabe.
18:15 - 19:00 "MĂŒllabfuhr in Lua", Roberto Ierusalimschy, PUC-RioEin Bonusvortrag von Roberto.
19:15 - 20:00 Runder Tisch mit allen LautsprechernWerkstÀtten (Kinosaal)
14:00 - 15:45 "Tarantool-AnwendungsfĂ€lle fĂŒr umfangreiche Anwendungen", Mons Anderson, Mail.ru GroupAuf den ersten Blick ist Tarantool eine Datenbank. Und es ist ziemlich schwer, das gesamte Potenzial dieses Produkts als Anwendungsserver zu erkennen.
Ich werde Ihnen dabei helfen, dieses Potenzial auszuschöpfen: Verwendung des integrierten LuaJIT-Servers mit Sockets, Fasern, KanĂ€len, ffi und vielem mehr. So machen Sie Code im laufenden Betrieb nachladbar. Diese Themen werden am Beispiel des Aufbaus des Warteschlangenservers als Beispielanwendung Schritt fĂŒr Schritt erlĂ€utert.
16:15 - 18:15 âMit Defold einen einfachen Plattformer erstellenâ, Sergey Lerg, Spiral Code StudioPlattformer sind ein sehr beliebtes Spielgenre, einige sind einfach, andere ziemlich komplex. In diesem Workshop werde ich zeigen, wie man mit der Defold-Game-Engine einen einfachen Plattformer erstellt. Die meisten Tutorials zu diesem Thema vereinfachen Dinge mit handgefertigten Levels, wenn sie generiert werden können, und mit der Verwendung einer Physik-Engine, wenn dies völlig unnötig ist.
Der Eintritt ist frei, aber vergessen Sie nicht,
sich anzumelden .
Standort: Mail.ru KonzernbĂŒro, Moskau, Leningradsky Prospekt 39, Bld. 79.
Wir freuen uns, Sie auf der Lua in Moskau 2019 begrĂŒĂen zu dĂŒrfen!