IronPython
IronPython 2.7.3 新特性
IronPython 2.7.3 现已发布,以下是新特性的简要概述。
新模块
新增了三个模块:bz2、winsound 和 _bisect。
bz2 模块使用 bzip2 算法实现压缩和解压缩;特别是,它允许(与已支持的 tarfile 模块结合使用)读取 .tar.bz2 文件。它使用来自 DotNetZip 库 的代码,用纯 C# 实现。
winsound 模块提供对标准 Windows 声音函数的访问,例如 winsound.MessageBeep()。
_bisect 是已支持的纯 Python bisect 模块的加速模块。
对 _ast 模块进行了重大升级,使其与 CPython 2.7 兼容。最后,许多其他模块都进行了大小不一的错误修复。
从资源加载 zip 包
IronPython 2.7.2 添加了从 zip 文件加载 Python 代码的功能;在 2.7.3 中,此功能已扩展为支持存储为资源的 zip 文件。由于这只有在托管 IronPython 时才有意义,因此无法从 Python 代码直接访问它。相反,托管应用程序必须添加资源,如下所示
class Program
{
static void Main(string[] args)
{
var assembly = typeof (Program).Assembly;
const string resourceName = "python_27_lib.zip";
var importer = new IronPython.Modules.ResourceMetaPathImporter(assembly, resourceName);
var engine = IronPython.Hosting.Python.CreateEngine();
dynamic sys = IronPython.Hosting.Python.GetSysModule(engine);
sys.meta_path.append(importer);
var script = "import os" + Environment.NewLine + "os.name";
var result = engine.Execute(script);
Console.WriteLine("os.name: {0}", result);
Console.ReadKey();
}
}
移动支持
对 Android 的支持略有改进;IronPython 应用程序现在可以在实际硬件上运行。由于 Mono for Android 的限制,编写它们有点棘手,但希望在 IronPython 2.7.4 中得到改进。
已放弃对 Windows Phone 的支持,因为当前版本存在严重问题,并且 WP7 的日子屈指可数。相反,重点将转移到 WinRT(“Metro”),它将在 Windows 8 和 Window Phone 8 中运行。
其他改进
pyc.py 编译器(在 Tools\Scripts 中)获得了使用响应文件处理大型命令行参数的能力。语法与大多数其他 Microsoft 工具(如 csc.exe)相同:pyc.py @response.txt。
修复了许多其他错误,提高了多个不同领域的整体发布质量。
致谢
特别感谢 Alex Earl、Keith Rome 和 Pavel Jasinski 的贡献,以及提交错误报告的无数人,当然还有所有 IronPython 用户。