
Comme annoncé dans le
billet précédent , le 3 mars (le premier dimanche de mars), le bureau de Moscou de Mail.ru Group accueillera la troisième conférence internationale Lua, Lua à Moscou 2019. Voir les détails du calendrier sous la coupe.
La conférence comprendra deux volets parallèles: discussions et ateliers.
Tous les exposés et ateliers seront livrés en anglais, sans interprétation simultanée en russe.
Conférences (salle de conférence # 1)
10h30 Retrait du badge
11h00 - 11h45 «Pourquoi (et pourquoi pas) Lua», Roberto Ierusalimschy, PUC-RioLa conception d'un langage de programmation, comme celle de tout autre artefact, implique de nombreux compromis impliquant des exigences contradictoires. Différentes langues résolvent ces compromis de différentes manières, les rendant plus appropriées pour certains scénarios et moins attrayantes pour d'autres paramètres.
Lua a son propre ensemble d'objectifs, qui guide sa conception. Cet ensemble priorise l'intégration, la petite taille, la simplicité et la portabilité. (Il existe également d'autres objectifs, tels que les performances et la facilité d'utilisation par des programmeurs non professionnels.)
Dans cet exposé, nous discuterons de l'impact de cet ensemble d'objectifs. Nous verrons comment ces objectifs affectent le langage lui-même, comment il affecte ses utilisations et comment il influe sur sa pertinence pour différents domaines d'application.
12:00 - 12:45 «resty-threadpool: réinventer Apache dans nginx», Julien Desgats, CloudFlareLes boucles d'événements asynchrones sont un moyen éprouvé de faire évoluer les serveurs de réseau, nginx (parmi de nombreux autres produits à succès) utilise cette technique à sa base. Cependant, ses performances dépendent d'une hypothèse clé: la logique métier ne doit pas fonctionner trop longtemps, sinon les performances globales s'effondrent rapidement.
Chez Cloudflare , nous comptons fortement sur OpenResty ( bibliothèques nginx + Lua +) pour nos serveurs de périphérie et assurer une performance prévisible est essentiel. Le déchargement de certaines parties complexes du traitement en dehors de la boucle d'événement est donc nécessaire et a été généralement effectué en écrivant des microservices. Nous avons essayé une autre approche en utilisant la fonction de pool de threads nginx . Dans cet exposé, j'aborderai en détail les défis et les résultats de la suppression des principales fonctionnalités de sécurité de la boucle d'événements.
13h00 - 14h00 Déjeuner
14:00 - 14:45 "Expérience de l'équipe Tarantool avec les outils de développement Lua", Yaroslav Dynnikov, Mail.ru GroupChaque langage de programmation possède son propre écosystème, ce qui est important pour le bien-être de la communauté. Le développement d'applications ne consiste pas seulement à écrire le code, mais aussi à le tester, à l'optimiser et à le partager avec les autres. Ici, à Tarantool, nous avons de nombreux développeurs, qui interagissent avec Lua à temps plein.
Je vais discuter de différents aspects du développement de Lua dans notre environnement:
- Comment nous écrivons le code confortablement avec des peluches.
- Quels outils nous utilisons pour le débogage et les tests.
- Comment nous gérons facilement la documentation et l'emballage.
- Et, plus important encore, quelles fonctionnalités nous manquent.
15h00 - 15h45 «Shaders et Lua», Sergey Lerg, Spiral Code StudioIl n'est pas possible d'écrire des shaders en Lua, mais il est possible de les contrôler avec Lua. Je veux montrer à quel point il est facile de faire de beaux effets avec la puissance de GLSL et Lua. De plus, je fournirai des conseils et astuces utiles pour travailler avec des shaders dans le moteur de jeu Defold.
15h45 - 16h15 Pause café
16:15 - 17:00 «Introduction au dynasme de luajit», Michael Filonenko, Mail.ru GroupDynasm est un générateur de code machine pour plusieurs architectures (x86, x86_64, etc.). Il contient deux parties:
- générateur de code machine écrit en C,
- et pré-processeur assembleur à Lua.
Le préprocesseur d'origine ne fonctionne qu'avec les sources C / Assembler. Et il y a un fork de luapower qui peut prétraiter les fichiers Lua avec des générateurs de code Assembler. Il y a un cas où nous voulons utiliser la logique de l'entrée utilisateur. Faisons des recherches sur ce jeu d'outils et créons un simple compilateur d'expression s.
La question principale est "Comme il est confortable de créer un compilateur pour les entrées utilisateur".
17:15 - 18:00 "Défis des 'paires' et 'prochaine' compilation JIT", Maxim Bolshov, IPONWEBDans IPONWEB, nous avons notre propre implémentation Lua. Il a été dérivé de LuaJIT 2.0 et a donc hérité de toutes ses limites. En particulier, les pairs
et next
fonctions next
n'étaient pas prises en charge par le compilateur JIT. Cependant, sur notre base de code Lua, c'est une des trois principales raisons d'abandon de la compilation de trace, ce qui impose certains compromis entre le style de code et les performances de l'application. Dans cet exposé, je vais:
- discuter de ce que signifie faire appel à la fonction de bibliothèque
JITable
; - expliquer les spécificités d'implémentation des
pairs
et next
dans LuaJIT; - parler des limitations de JIT, ce qui fait des
pairs
et de la next
compilation une tâche pas si simple; - démontrer nos progrès dans la résolution de cette tâche.
18:15 - 19:00 «Collecte des ordures à Lua», Roberto Ierusalimschy, PUC-RioUn discours bonus de Roberto.
19h15 - 20h00 Table ronde avec tous les intervenantsAteliers (salle de cinéma)
14h00 - 15h45 «Cas d'utilisation de Tarantool pour les applications riches», Mons Anderson, Mail.ru GroupÀ première vue, Tarantool est une base de données. Et il est assez difficile de voir tout le potentiel de ce produit en tant que serveur d'applications.
Je vais vous aider à libérer ce potentiel: comment utiliser le serveur LuaJIT intégré avec des sockets, des fibres, des canaux, ffi et bien d'autres. Comment rendre le code rechargeable à la volée. Ces sujets seront abordés étape par étape sur l'exemple de la construction du serveur de files d'attente comme exemple d'application.
16h15 - 18h15 "Créer un jeu de plateforme simple avec Defold", Sergey Lerg, Spiral Code StudioLes jeux de plateforme sont un genre de jeu très populaire, certains sont simples, certains sont plutôt complexes. Dans cet atelier, je montrerai comment créer un jeu de plateforme de base avec le moteur de jeu Defold. La plupart des didacticiels sur ce sujet ont tendance à simplifier à l'excès les choses avec des niveaux artisanaux lorsqu'ils peuvent être générés et avec l'utilisation d'un moteur physique quand cela est complètement inutile.
L'entrée est gratuite, mais n'oubliez pas de
vous inscrire .
Emplacement: Bureau du groupe Mail.ru, Moscou, Leningradsky prospekt 39, bld. 79.
Au plaisir de vous rencontrer à Lua à Moscou 2019!