所有讲座和讲习班将以英语授课,而不会同时翻译成俄语。
与其他任何工件一样,编程语言的设计需要进行很多折衷,涉及相互矛盾的需求。 不同的语言以不同的方式解决了这些折衷问题,从而使每种语言都更适合某些情况,而对其他设置则没有吸引力。Lua有其自己的目标集,可指导其设计。 该集合优先考虑可嵌入性,小尺寸,简单性和可移植性。 (还有其他目标,例如非专业程序员的性能和易用性。)在本次演讲中,我们将讨论这组目标的影响。 我们将看到这些目标如何影响语言本身,如何影响语言使用以及如何影响其对不同应用程序域的适用性。
异步事件循环是扩展网络服务器的一种行之有效的方法,nginx(在许多其他成功的产品中)将这种技术用作其核心。 但是,其性能取决于一个关键的假设:业务逻辑不得运行太长时间,否则整体性能会迅速崩溃。在Cloudflare ,我们在边缘服务器上高度依赖OpenResty (nginx + Lua +库),因此确保可预测的性能至关重要。 因此,有必要在事件循环之外分流处理的某些复杂部分,通常是通过编写微服务来完成的。 我们尝试了另一种利用nginx线程池功能的方法 。 在本演讲中,我将详细介绍将核心安全功能带出事件循环的挑战和结果。
每种编程语言都有其自己的生态系统,这对于社区福祉至关重要。 应用程序开发不仅与编写代码有关,而且还与测试代码,进行优化和与他人共享有关。 在Tarantool中,我们有很多开发人员,他们与Lua进行全职交互。我将在我们的环境中讨论Lua开发的不同方面:我们如何轻松地编写代码。我们使用哪些工具进行调试和测试。我们如何方便地管理文档和包装。而且,更重要的是,我们缺少什么功能。
用Lua编写着色器是不可能的,但是可以用Lua来控制它们。 我想展示使用GLSL和Lua的强大功能制作精美效果有多么容易。 另外,我将提供在Defold游戏引擎中使用着色器的有用提示和技巧。
Dynasm是用于多种架构(x86,x86_64等)的机器代码生成器。 它包含两个部分:用C编写的机器代码生成器,和Lua中的汇编程序预处理器。原始预处理器仅适用于C / Assembler源。 luapower提供了一个fork,可以使用Assembler代码生成器预处理Lua文件。 在某些情况下,我们想使用来自用户输入的逻辑。 让我们研究这个工具集,并制作一个简单的s表达式编译器。主要问题是“制作用于用户输入的编译器有多舒适”。
在IPONWEB中,我们有自己的Lua实现。 它是从LuaJIT 2.0派生的,因此继承了它的所有局限性。 特别是,JIT编译器不支持pairs和next函数。 但是,在我们的Lua代码库上,这是跟踪编译中止的三大原因,这在代码样式和应用程序性能之间进行了一些折衷。 在本次演讲中,我将要:讨论使库函数调用JITable意味着什么;在LuaJIT中解释pairs和next的实现细节;讲述一下JIT的局限性,这使得pairs和next编译不是一件容易的事;展示我们在解决此任务方面的进展。
pairs
next
JITable
罗伯托的奖金演讲。
乍一看,Tarantool是一个数据库。 而且很难看到该产品作为应用服务器的全部潜力。我将帮助您释放这种潜力:如何将内置的LuaJIT服务器与套接字,光纤,通道,ffi等一起使用。 如何使代码即时可重装。 这些主题将在将队列服务器构建为示例应用程序的示例中逐步讨论。
平台游戏是一种非常流行的游戏类型,有些很简单,有些很复杂。 在本研讨会中,我将演示如何使用Defold游戏引擎制作基本平台游戏。 关于此主题的大多数教程倾向于在可以生成手工水平时简化事情,而在完全不必要时则使用物理引擎。
Source: https://habr.com/ru/post/zh-CN441680/More articles:Linus Torvalds不相信ARM体系结构上的服务器会取代x86。 “出售64位模型-白痴”STM32。 减肥练习或控制者饮食测试布局? 容易的如何结识PLUTO和HDSDR游戏龙卷风物理学:《正当防卫4》(交通)如何实现空气动力学HyperX Fury 3D-具有清晰血统的SSD预测:云将在2019年改变我们如何在Tarantool数据库上实现缓存游戏改变了世界:地狱之刃如何吸引人们关注精神疾病患者的问题您不需要区块链:八个众所周知的用例以及它们为什么不起作用All Articles