问题标签 [lua]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
1577 浏览

c - 高效的堆管理器,用于处理大量流失、微小的分配?

我正在寻找堆管理器的想法来处理非常具体的情况:很多非常小的分配,每个分配范围从 12 到 64 字节。任何更大的东西,我都会传递给常规的堆管理器,所以只需要处理小块。只需要 4 字节对齐。

我主要担心的是

  1. 高架。常规的 libc 堆通常会将分配四舍五入为 16 字节的倍数,然后添加另一个 16 字节标头 - 这意味着 20 字节分配的开销超过 50%,这很糟糕。
  2. 表现

一个有用的方面是 Lua(它是这个堆的用户)会在调用 free() 时告诉你它正在释放的块的大小——这可能会启用某些优化。

我会发布我目前的方法,它工作正常,但如果可能的话,我想改进它。有任何想法吗?

0 投票
9 回答
1811 浏览

python - 有了 Lua 和 Python 的可嵌入性,Basic 有没有一席之地?

我开始在ZX81上使用 Basic 编程,然后是BASICAGW-BASICQBasic。我转向 C(啊,Turbo C 3.1,我几乎不知道你......)

当我开始使用微控制器时,我使用Parallax的BASIC Stamp退步了。然而,BASIC 非常棒,因为它很容易理解,而且很难出错。我最终转向汇编和 C 语言,因为我需要额外的能力(速度、容量、资源等),但我知道,如果门槛更高,许多人将永远不会进入微控制器编程。

我一直渴望制作自己的片上 BASIC 解释器,但我想知道现在是否需要 BASIC,因为 Lua 和 Python 易于嵌入,并且与 BASIC 一样平易近人。

  • BASIC 与其他语言相比有哪些优势(如果有的话)?
  • 为什么它还在?
  • 如果我决定制作带有解释器的通用微控制器板,是否有理由制作 BASIC 版本?

很多其他语言都被认为已经死了,但 BASIC 一直在坚持。

0 投票
11 回答
12465 浏览

python - Lua 作为通用脚本语言?

当我看到 Lua 时,我唯一读过的就是“非常适合嵌入”、“快速”、“轻量级”,而且比其他任何东西都多:“魔兽世界”或简称“魔兽世界”。

为什么仅限于将整个事物嵌入到另一个应用程序中?为什么不像使用 Python 或 Perl 那样编写通用脚本呢?

Lua 似乎在速度和内存使用(最快的脚本语言 afaik)等方面做得很好,那么为什么我从来没有看到 Lua 被用作“桌面脚本语言”来自动化任务呢?例如:

  • 重命名一堆文件
  • 从网上下载一些文件
  • 网页抓取

是缺少标准库吗?

0 投票
3 回答
356 浏览

.net - 是否存在任何实现 luac 功能的 .NET DLL?

有谁知道封装 lua 5.1 编译器的任何 DLL(最好是 .net)?我正在开发一个 .net 项目,其中一部分需要编译 lua 脚本,我宁愿有一个可以发送脚本代码的 DLL,而不是将脚本发送到临时文件并运行 luac.exe。

编辑:我需要一个 .NET 库,它以输出标准 lua 字节码的方式实现 luac(不是编译到 CLR 的 lua 库)。编译 lua c 源代码不起作用,因为当我在 ac# 项目中包含对 dll 的引用时,Visual Studio 抱怨它不是一个有效的程序集。我的搜索到目前为止还没有找到任何东西。

0 投票
4 回答
549 浏览

iphone - 解析 Unix/iPhone/Mac OS X 版本的 PE 标头

这有点令人费解,但让我们试试:

我正在将 LUA 脚本集成到我的游戏引擎中,过去我在 win32 上以一种优雅的方式完成了这项工作。在 win32 上,我所做的只是将我想向 LUA 公开的所有函数标记为导出函数。然后,为了将它们集成到 LUA 中,我会解析可执行文件的 PE 头,解开名称,解析参数等,然后将它们注册到我的 LUA 运行时。这让我可以避免单独手动注册每个函数,只是为了将它们暴露给 LUA。

现在,快进到今天我在 iPhone 上工作的地方。我浏览了一些 Unix 的东西,并且非常接近采用类似的方法,但是我不确定它是否真的有效。

我对 Unix 并不完全熟悉,但这是我目前在 iPhone 上所拥有的:

    第 1 步:通过 Objective-C 查询可执行路径并获取我的应用程序的路径
    第 2 步:使用 dlopen 获取我的应用程序的句柄,使用:`dlopen(path, RTLD_NOW)`
    第 3 步:使用`dlsym( libraryHandle, objectName )` 尝试获取已知符号的地址。

上述步骤实际上不会让我到达我想去的地方,但即使这样也行不通。有没有人有在 Unix 上做这种事情的经验?是否有任何标题或功能我可以谷歌让我走上正确的轨道?

谢谢;)

0 投票
9 回答
4754 浏览

scripting - Lua 作为通用脚本语言有前途吗?

正如在“ Lua 作为一种通用脚本语言? ”中已经讨论的那样,Lua 目前可能不是桌面环境的最佳脚本语言。

但是你对未来有什么看法?Lua 会变得如此受欢迎,以至于很快就会有足够多的库可以像 Python、Ruby 或类似的东西一样使用它吗?

或者它会仅仅停留在它的魔兽世界中,仅此而已?

0 投票
2 回答
1075 浏览

lua - 如何将表名分配给变量?

我在 lua 中有一个包含一些数据的表。

然后我想遍历表并为每个名称分配一个数字作为变量。lua的新手并像这样尝试过。

然后我假设 print("name1", bob) 会给我 name1 = 1。现在我得到了 nil。所以我回到我丑陋的静态变量列表,直到某个善良的灵魂告诉我我是个白痴。

0 投票
1 回答
4554 浏览

winapi - 在 Lua 中调用 Win32 函数返回带有外星人的字符串

我正在尝试使用外星人来调用 Win32 函数。我试过这段代码,但它崩溃了,我不明白为什么。

0 投票
4 回答
3815 浏览

c++ - 如何在 C++ 和 Lua 之间来回传递大型结构

我正在考虑将 Lua 嵌入到我正在开发的 C++ 应用程序中。我的意图是使用 Lua 编写脚本,为某些给定的输入执行哪些有序操作,即。在 c++ 程序中接收一个新的工作项,将详细信息传递给 Lua 后端,Lua 回调到 c++ 中执行必要的工作,返回完成的结果。

涉及的主要数据结构是一个大型(大约 80 多个成员)struct。我(非常)是 Lua 新手,我不确定如何将它传入和传出我的主机应用程序和嵌入式 Lua 状态。

到目前为止,我认为我的选择是:

a) 在 C++ 和 Lua 之间交叉时,将所有单独的数据成员推入/弹出堆栈(听起来很乱)。

b)构造一个表并填充值,然后将其放入/退出堆栈(更简洁一些)。

c)将它作为userdata(轻/重?)传递(我对此很粗略,不确定是否/如何从Lua端访问它以查询哪些操作是必要的)。

任何指导将不胜感激。

0 投票
6 回答
9217 浏览

math - Lua 的标准(或最受支持的)大数(任意精度)库是什么?

我正在处理无法四舍五入的大量数字。使用 Lua 的标准数学库,似乎没有方便的方法来保持超出某些内部限制的精度。我还看到有几个库可以加载以处理大数字:

  1. http://oss.digirati.com.br/luabignum/
  2. http://www.tc.umn.edu/~ringx004/mapm-main.html
  3. http://lua-users.org/lists/lua-l/2002-02/msg00312.html(可能与#2相同)
  4. http://www.gammon.com.au/scripts/doc.php?general=lua_bc(但我找不到任何来源)

此外,如果建立了绑定,可以从 Lua 调用 C中的许多库。

您对这些库中的一个或多个有任何经验吗?