
Wie wir in der
vorherigen Ankündigung berichtet haben , wird am 3. März (Sonntag) die dritte internationale Konferenz Lua in Moskau 2019 im Büro der Mail.ru Group stattfinden.
Die Konferenz wird in zwei Streams abgehalten: Berichten und Seminaren.
Alle Berichte und Seminare werden ohne Simultanübersetzung in englischer Sprache verfasst.
Berichte (Besprechungsraum Nr. 1)
10:30 Beginn der Registrierung
11:00 - 11:45 „Warum (und warum nicht) Lua / Warum Lua (und warum nicht)“, Roberto Jerusalem, PUC-RioBei der Erstellung einer Programmiersprache führen Widersprüche in den Anforderungen häufig dazu, dass Autoren Lösungen kompromittieren. Dies ist in der Entwicklungswelt weit verbreitet. Verschiedene Sprachen kommen auf unterschiedliche Weise zu einem Kompromiss, wodurch jede Sprache für einige Szenarien besser geeignet und für andere weniger attraktiv ist.
Für die Lua-Sprache gibt es eine Reihe von Zielen, die die Richtung des Designs bestimmen. Vorrang haben Einbettbarkeit, geringe Größe, Einfachheit und Portabilität. Es gibt andere Ziele, wie Leistung und Benutzerfreundlichkeit für nicht professionelle Programmierer.
Im Rahmen des Berichts werden wir die Auswirkungen dieser Ziele erörtern. Wir werden sehen, wie sich diese Ziele auf die Sprache selbst, ihre Verwendung sowie die Möglichkeit ihrer Anwendung in verschiedenen Bereichen auswirken.
12:00 - 12:45 "Resty-Threadpool: Neuerfindung von Apache in Nginx / Resty-Threadpool: Neue Lesart von Apache in Nginx", Julien Desgats, CloudFlareAsynchrone Ereignisschleifen sind eine bewährte Methode zur Skalierung von Netzwerkservern. nginx verwendet (wie andere erfolgreiche Produkte) grundsätzlich diese spezielle Technik. Die Leistung hängt jedoch von einer Schlüsselbedingung ab: Die Geschäftslogik sollte nicht zu lange ausgearbeitet werden, da sonst die Gesamtleistung schnell abnimmt.
Cloudflare verlässt sich in Bezug auf Edgeserver stark auf OpenResty (nginx + Lua + Bibliotheken). Gleichzeitig ist eine vorhersehbare Leistung von entscheidender Bedeutung. Dies erfordert das Entfernen einiger komplexer Verarbeitungsteile aus der Ereignisschleife. Dies wurde in der Regel zuvor durch Schreiben von Microservices durchgeführt. Cloudflare versuchte einen anderen Ansatz: Verwenden Sie die Nginx-Thread-Pool-Funktion . Der Bericht beschreibt detailliert die Probleme und Ergebnisse des Extrahierens der grundlegenden Sicherheitsfunktionen aus dem Ereigniszyklus.
13:00 - 14:00 Mittagessen
14:00 - 14:45 „Erfahrung des Tarantool-Teams mit Lua-Entwicklertools / Erfahrung des Tarantool-Teams mit Entwicklungstools in der Lua-Sprache“, Yaroslav Dynnikov, Mail.ru GroupJede Programmiersprache hat ein eigenes Ökosystem, das für das Wohl der Community wichtig ist. Bei der Anwendungsentwicklung wird Code nicht nur geschrieben, sondern auch getestet, optimiert und Informationen an andere Personen weitergegeben. Es gibt viele Entwickler im Tarantool-Projekt, die jeden Tag mit Lua zusammenarbeiten.
Während des Vortrags werden wir verschiedene Aspekte der Entwicklung von Lua im Tarantool-Team diskutieren:
- Wie bequem ist es für Entwickler, Flusencode zu schreiben?
- Welche Tools verwenden sie zum Debuggen und Testen?
- Wie kann man Dokumentation erfolgreich vorbereiten und Pakete sammeln?
- Und ebenso wichtig ist, welche Funktionen fehlen ihnen noch?
15:00 - 15:45 "Shader und Lua / Shader und Lua", Sergey Lerg, Spiral Code StudioEs ist nicht möglich, Shader in Lua zu schreiben, aber Sie können sie mit dieser Sprache steuern. Der Bericht soll zeigen, wie Sie mit GLSL und Lua auf einfache Weise atemberaubende Effekte erzielen können. Außerdem werden nützliche Tipps und Ratschläge zur Arbeit mit Shadern in der Defold-Spiel-Engine gegeben.
15:45 - 16:15 Kaffeepause
16:15 - 17:00 „Einführung in den Dynasmus von Luajit / Einführung in den Dynasmus von Luajit“, Mikhail Filonenko, Mail.ru GroupDynasm ist ein Maschinencodegenerator für verschiedene Architekturen (x86, x86_64 usw.).
Es besteht aus zwei Teilen:
- Maschinencodegenerator geschrieben in C.
- und Assembler-Präprozessor auf Lua.
Der ursprüngliche Präprozessor arbeitet nur mit Quellcode in Assembler oder C.
Darüber hinaus gibt es eine Abzweigung von luapower, mit der Lua-Dateien mithilfe von Assembler-Codegeneratoren vorverarbeitet werden können.
In einigen Fällen ist es erforderlich, die Logik aus Benutzereingaben zu verwenden. Wir werden uns dieses Toolkit ansehen und einen einfachen S-Expression-Compiler erstellen.
Die Hauptfrage: "Wie bequem ist es, einen Compiler für Benutzereingaben zu erstellen."
17:15 - 18:00 "Herausforderungen der 'Paare' und 'nächsten' JIT-Kompilierung / Kompilierungsprobleme 'Paare' und 'nächste' in JIT", Maxim Bolshov, IPONWEBIPONWEB verwendet eine eigene Implementierung von Lua. Das Projekt wurde mit allen Einschränkungen von LuaJIT 2.0 gespalten. Insbesondere die pairs
und die next
Funktionen wurden vom JIT-Compiler nicht unterstützt. In unserer Lua-Codebasis ist dies jedoch einer der drei Hauptgründe für die Unterbrechung der Trace-Kompilierung, was zu erzwungenen Kompromissen zwischen Codestil und Anwendungsleistung führt.
Der Bericht plant:
- zu sagen, was es bedeutet, die Bibliotheksfunktion
JITable
; - Erläutern Sie die Besonderheiten der Implementierung von
pairs
und die next
in LuaJIT. - Sprechen Sie über die JIT-Einschränkungen, die das Kompilieren von
pairs
und die next
nicht triviale Aufgabe machen. - Demonstrieren Sie den Fortschritt bei der Lösung dieses Problems.
18:15 - 19:00 "Müllabfuhr in Lua", Roberto Jerusalem, PUC-RioBonusbericht von Roberto.
19:15 - 20:00 Runder Tisch mit allen LautsprechernSeminare (Kinosaal)
14:00 - 15:45 Uhr „Tarantool-Anwendungsfälle für umfangreiche Anwendungen / Tarantool-Anwendungsfälle für multifunktionale Anwendungen“, Vladimir Perepelitsa, Mail.ru GroupTarantool ist auf den ersten Blick eine Datenbank. Und es ist ziemlich schwierig, das volle Potenzial dieses Produkts als Anwendungsserver zu erkennen.
Das Seminar soll diesen Teil der Funktionen von Tarantool aufzeigen: Wie wird der integrierte LuaJIT-Server mit Sockeln, Fasern, Kanälen, ffi usw. verwendet? Wie kann man Code im laufenden Betrieb neu laden? Diese Themen werden am Beispiel des Aufbaus eines Warteschlangenservers Schritt für Schritt untersucht.
16:15 - 18:15 „Mit Defold einen einfachen Plattformer erstellen“, Sergey Lerg, Spiral Code StudioPlatformers ist ein sehr beliebtes Spielgenre. Einige von ihnen sind einfach, andere ziemlich komplex. Im Rahmen des Seminars werde ich zeigen, wie ein grundlegender Plattformer auf der Defold-Spiel-Engine erstellt wird. Die Autoren der meisten Schulungsmaterialien zu diesem Thema vereinfachen in der Regel alles und zeigen die manuelle Erstellung von Ebenen, während sie automatisch generiert werden können. Außerdem verwenden sie eine physische Engine, wenn sie überhaupt nicht benötigt wird.
Der Eintritt ist frei.
Eine Registrierung ist erforderlich.
Adresse: Büro der Mail.ru Group, Leningradsky pr., 39, S. 79.
Wir warten auf Sie bei Lua in Moskau 2019!