luajit开发文档中文版(三)FAQ 常见问题

2022年6月10日15:33:34

luajit开发文档中文版(一)下载和安装

luajit开发文档中文版(二)LuaJIT扩展

luajit开发文档中文版(三)FAQ 常见问题

luajit开发文档wiki中文版(一) 总目录

luajit开发文档wiki中文版(二) LuaJIT 扩展

luajit开发文档wiki中文版(三)性能调优和测试

luajit开发文档wiki中文版(四) LuaJIT 内部结构

luajit开发文档wiki中文版(五) 系统集成

luajit开发文档wiki中文版(六) LuaJIT 开发

常见问题 (FAQ)

问:我在哪里可以了解更多关于 LuaJIT 和 Lua 的信息?
  • LuaJIT 邮件列表专注于与 LuaJIT 相关的主题。
  • LuaJIT wiki收集有关 LuaJIT的社区资源。
  • 有关 Lua 本身的新闻可以在 Lua 邮件列表中找到。邮件列表档案值得查看有关 LuaJIT 的旧帖子。
  • Lua.org主站点有完整 的语言文档以及关于 Lua 的书籍和论文的链接。
  • 社区管理的Lua Wiki 包含有关不同主题的信息。
问:我在哪里可以了解更多关于 LuaJIT 使用的编译器技术的信息?
请使用以下 Google Scholar 搜索找到相关论文: 搜索: Trace Compiler 搜索: JIT Compiler 搜索: Dynamic Language Optimizations 搜索: SSA Form 搜索: Linear Scan Register Allocation 以下是 LuaJIT 中的创新功能 列表. 而且,您知道,阅读源代码当然是获得启蒙的唯一途径。
问:为什么我会收到此错误:“尝试索引全局 'arg'(一个 nil 值)”? 问:切换到 LuaJIT 后,我的 vararg 函数失败!
LuaJIT 兼容 Lua 5.1 语言标准。它不支持Lua 5.0 中老式 vararg 函数的隐式 arg参数。 请将您的代码转换为  Lua 5.1 可变参数语法
问:为什么会出现这个错误:“bad FPU precision”? 问:我在初始化 Direct3D 后出现了奇怪的行为。 问:加载 Delphi DLL 后,某些 FPU 操作崩溃。
DirectX/Direct3D(最高版本 9)默认将 x87 FPU 设置为单精度模式。这违反了 Windows ABI 并干扰了许多程序的运行——LuaJIT 也受到了影响。请确保在初始化 Direct3D 时始终使用 D3DCREATE_FPU_PRESERVE标志。 Direct3D 版本 10 或更高版本不再显示此行为。也可以考虑使用旧版本测试您的应用程序。 类似地,Borland/Delphi 运行时修改 FPU 控制字并启用 FP 异常。当然,这也违反了 Windows ABI。请查看 Delphi 文档以了解 Set8087CW 方法。
问:有时 Ctrl-C 无法停止我的 Lua 程序。为什么?
中断信号处理程序设置了一个 Lua 调试钩子。但这被编译的代码忽略了。如果你的程序在一个紧密的循环中运行并且永远不会回退到解释器,那么调试钩子永远不会运行并且不能抛出“中断!” 错误。 您必须按 Ctrl-C 两次才能停止您的程序。这类似于它在 Lua 解释器下的 C 函数中运行。
问:使用pairs() 的表迭代不会产生相同的顺序?
Lua 语言标准明确 未定义 表迭代的顺序。 不同的 Lua 实现或版本可能对其他相同的表使用不同的顺序。构建表的不同方式也可能导致不同的顺序。 由于提高了 VM 安全性,LuaJIT 2.1 甚至可以在单独的 VM 调用或新的字符串键被实习时使用不同的顺序。 如果您的程序依赖于确定性顺序,那么它就有一个错误。重写它,因此它不依赖于密钥顺序。或者,如果必须,对表键进行排序。
问:Lua 代码可以安全地沙盒化吗?
也许对于 Lua 的一个极其受限的子集,如果你无情地检查你提供给不受信任代码的每一个接口函数。 尽管 Lua 提供了一些沙盒功能( setfenv() ,钩子),但即使对于 Lua 核心库,也很难做到这一点。当然,您还需要检查任何扩展库。还有一些库本质上是不安全的,例如 FFI 库Lua WikiWikipedia 上的更多阅读材料。 相关地,加载不受信任的字节码是不安全的! 使用恶意制作的字节码使 Lua 或 LuaJIT VM 崩溃是微不足道的。这是众所周知的,并且没有故意进行字节码验证,因此请不要报告有关它的错误。检查load*()函数的 模式 参数 以禁用字节码的加载。一般来说,唯一有希望的方法是在进程级别而不是 VM 级别沙箱 Lua 代码。
问:Lua 到处跑。为什么 LuaJIT 不支持我的 CPU?
因为它是一个编译器——它需要生成本机机器代码。这意味着代码生成器必须移植到每个架构。而且快速解释器是用汇编程序编写的,也必须移植。这是一项艰巨的任务。安装文档 显示了支持 的架构。 基于足够的用户需求和架构的市场相关性,可能会采用其他架构。需要赞助来开发港口本身,整合它并在积极发展的分支机构中持续维护它。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值