最新 | 最热门 | 最高评价

+3  Lua 5.2 的细节改变

Tag: lua与虚拟机
云风 发于 2012年09月29日 10:47 | 点击: 1935 | 展开摘要
最近想试一下, Lua JIT 2.0 能给我们的系统带来多大的提升。但可惜的是,我们一开始就在用 Lua 5.2 来构建系统,而 Lua JIT 2.0 只支持 Lua 5.1 的 API ,在可以看到的时间里,恐怕也不太会去支持 5.2 了。

所以,我只能想办法反向支持 Lua 5.1 。

语法层面最重大的改变是 Lua 5.2 取消了环境表这个概念,转而提供 _ENV 这个语法糖。

许多小细节是 C API 上的变化。这使得按 Lua 5.2 标准写的 C 库,无

查看全文: http://www.udpwork.com/item/8105.html

+1  Luacc

Tag: lua与虚拟机
云风 发于 2012年12月14日 15:39 | 点击: 1057 | 展开摘要
因为内存限制问题, 我们暂时放弃了 luajit 。这两天,我想另辟蹊径找到别的方法去加速 lua 程序的运行。

所以我这两天做了这么一个玩具,试一下是否可行。

luacc 是类似 cython 的东西,它允许你在 Lua 代码中直接写 C 代码。由于是用 tcc 运行时编译运行的,所以你可以获得和 C 一样的效率。(同样,C 语言引入的问题也同样要考虑)

之所以我称之为玩具,是因为它现在还不支持复杂的数据结构。你只能把单层的,以 string 为 key 的 lua

查看全文: http://www.udpwork.com/item/8857.html

+1  开发笔记(28) : 重构优化

Tag: lua与虚拟机 | 游戏开发
云风 发于 2012年11月05日 10:37 | 点击: 1340 | 展开摘要
正如上一篇笔记 记载的,我们第 2 里程碑按计划在 9 月 30 日完成,但因为赶进度,有许多 bug 。性能方面也有很大问题,大家都认为需要重构许多模块。所以,在最后几天修补 bug 时,许多补丁是临时对付的(因为整个模块都需要重写了)。为此,我们留下了一个月专门重构代码、修改 bug 、并对最后的结果再做一次评测。

这项工作,终于如期完成了。

半个多月前在白板上留下的工作计划还没擦掉。我列出了 12 点需要改进或重写的地方,考虑到内容较多,又去掉了 3 项。在大家的通

查看全文: http://www.udpwork.com/item/8509.html

+1  实现一个简单的服务端推方案

Tag: Technical | Lua | Nginx
老王 发于 2012年09月28日 16:34 | 点击: 2669 | 展开摘要
客户端和服务端的交互有推和拉两种方式:如果是客户端拉的话,通常就是Polling;如果是服务端推的话,一般就是Comet,目前比较流行的Comet实现方式是Long Polling。

注:如果不清楚相关名词含义,可以参考:Browser 與 Server 持續同步的作法介紹。

先来看看Polling,它其实就是我们平常所说的轮询,大致如下所示:

Polling

因为服务端不会主动告诉客户端它是否有新数据,所以Polling的实时性较差。虽然可以通过加快轮询频率的方式来

查看全文: http://www.udpwork.com/item/8177.html

+1  Nginx与Lua

Tag: Technical | Lua | Nginx
老王 发于 2012年08月31日 17:05 | 点击: 3200 | 展开摘要
火云邪神语录:天下武功,无坚不破,唯快不破!Nginx的看家本领就是速度,Lua的拿手好戏亦是速度,这两者的结合在速度上无疑有基因上的优势。

最先将Nginx,Lua组合到一起的是OpenResty,它有一个ngx_lua模块,将Lua嵌入到了Nginx里面;随后Tengine也包含了ngx_lua模块。至于二者的区别:OpenResty是Nginx的Bundle;而Tengine则是Nginx的Fork。值得一提的是,OpenResty和Tengine均是国人自己创建的项

查看全文: http://www.udpwork.com/item/8037.html

+1  pbc 优化

Tag: lua与虚拟机
云风 发于 2012年04月26日 18:47 | 点击: 1387 | 展开摘要
最近几天优化了一下 pbc 。

这是一个大改动,所以写 blog 记录一下。

首先,我为 rmessage 定制了一个 heap alloc ,在使用 rmessage 解包的时候不再调用系统的 malloc 。而是从一个连续内存 heap 上取用内存。这样在删除 rmessage 对象时也会更快。因为只需要把 heap 回收即可。

当然这样会导致 rmessage 解包时用到的内存增加。对于内存紧张,性能关键部分,我还是推荐 pattern 模式。虽然比较难用,但可

查看全文: http://www.udpwork.com/item/7185.html

+1  Lua int64 的支持

Tag: lua与虚拟机
云风 发于 2012年04月11日 19:01 | 点击: 2414 | 展开摘要
虽然今天发了 twitter ,以及向 lua mailling list 里投递了消息,不过想想还是写一篇 blog 记录一下。

Lua 只支持一种 number ,默认是 double 类型。虽然你可以通过修改 luaconf.h 里的定义,把 lua number 改成 int64 。但是为了 int64 类型而放弃浮点数,恐怕不是大多数人想要的。

int64 通常用在 uuid 上,也就是说不需要对其数学运算,只需要可以比较就好了。我以前最喜欢的做法是用 8 by

查看全文: http://www.udpwork.com/item/7108.html

+1  lua 5.2 的 _ENV

Tag: lua与虚拟机
云风 发于 2011年12月30日 00:34 | 点击: 2421 | 展开摘要
lua 5.2 正式发布了,对于 lua 语言本身的修改,重中之重就是对 environment 这个概念的修改。

可以说, 5.1 以前的 environment 已经没有了。environment 对于制造一个安全的沙盒(或是实现 DSL)是一个很重要的语言特性,我以前很喜欢使用,但也很容易用错。这次的修改我认为是一个谨慎的决定,并使得 lua 语言更为精简和严谨了。

我这样理解 5.2 中的 environment 。本质上,lua 取消了原有意义上的 enviro

查看全文: http://www.udpwork.com/item/6598.html

+1  Lua 下实现抢占式多线程

Tag: lua与虚拟机
云风 发于 2011年08月09日 18:50 | 点击: 1558 | 展开摘要
Lua 5.2 的开发进度可以回溯到 2010 年 1 月。漫长的流程到今天已经快两年过去,终于等到了 beta 版。我十分期待它可以在 2011 年内正式发布。在这几经折腾的两年里,许多新特性企图挤进 5.2 版,又最终被否决。

当我们审视改进列表,似乎看不到太多耳目一新的东西。但如果仔细阅读一下源代码,就会发现,大部分地方都重新实现过了,以配合这些表面上看起来不大的修改。如果你对 Lua 有足够理解,会发现,这次最激动人心的改进是 "yieldable pcall an

查看全文: http://www.udpwork.com/item/5616.html

+0  Lua 虚拟机的封装

Tag: lua与虚拟机 | 游戏开发
云风 发于 2018年08月15日 16:06 | 点击: 312 | 展开摘要
我打算就我们在开发客户端引擎框架时最近遇到的两个问题写两篇 Blog ,这里先谈第一个问题。

我们的框架技术选型是用 Lua 做开发。和很多 C++ 开发背景(现有大部分的游戏客户端引擎使用 C++ 开发)的人的认知不同,我们并不把 Lua 作为一个嵌入式脚本来看待,而是把它当成一种通用语言来设计整个引擎框架。

其实这更接近 HTML5 流行之后,用 javascript 设计游戏引擎框架:虽然 javascript 的虚拟机本身是用 C++ 开发的,但和游戏引擎相关的部

查看全文: http://www.udpwork.com/item/17003.html

+0  数学运算的实时编译及 Lua 中的一点奇技淫巧

Tag: lua与虚拟机 | 算法 | 优化与技巧
云风 发于 2018年07月12日 11:24 | 点击: 392 | 展开摘要
我为 3d engine 项目设计的向量运算库 已经用了一段时间了。在使用过程中也一直在改进 。从一开始,我就考虑过,这个库的设计主要考量是减少 lua 和 C 交互间的开销,提高内聚性。而易用性方面,计划再上面再做封装。这段时间继续在想怎样从更自然的表达形式转换到这个库的逆波兰指令流上。

大致的方向有两个:

其一,实现一个小语言,用字符串输入表达式组。

其二,利用 Lua 已有的语法解析设施,把 lua 的一个函数翻译成对应的数学运算指令流。

两者都可以看成是一种

查看全文: http://www.udpwork.com/item/16947.html

+0  Lua 5.4 的改进及 Lua 的版本演进

Tag: lua与虚拟机
云风 发于 2018年04月09日 18:42 | 点击: 696 | 展开摘要
Lua 社区最近的一件大事是 Lua 5.4 的 work1 版本发布了。

这次的首发版本中引入了一个试验性的新特性,用来解决将 nil 放入数组的问题。因为是实验性特性,所以开发组决定默认关闭,必须在编译源代码的时候定义 LUA_NILINTABLE 这个宏才能开启。注意:默认是不开启的,后面的讨论都以这个为基础。

在邮件列表的讨论中,有不少人引入了不必要的激烈情绪,反对这种影响兼容性的改变。 Roberto 同学看起来是生气了,用全大写字母又重新强调了一次。当然虽然也

查看全文: http://www.udpwork.com/item/16778.html
|<<<1234567>>>| 一共10页, 120条记录