`
RednaxelaFX
  • 浏览: 3048071 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

IronPython放出RC1

    博客分类:
  • DLR
阅读更多
下载链接:http://www.codeplex.com/IronPython/Release/ProjectReleases.aspx?ReleaseId=17404
Release Notes: [url]http://www.codeplex.com/IronPython/Wiki/View.aspx?title=v2.0 Release Candidate 1 Release Notes&referringTitle=Home[/url]

这次的RC1最大的一个特征就是在MSI安装包里提供了Ngen安装的程序集的选项。把安装的程序集Ngen过之后,程序启动速度会大幅提升,代价是Ngen出来的二进制文件会占据一定空间。(“一定”还是太保守了。Ngen之后的IronPython+标准库+DLR居然会吃掉40M+的内存。天啊!)
另外,还是为了解决DLR与.NET Framework 3.5的System.Core.dll的冲突,在RC1里新增了一个Microsoft.Scripting.ExtensionAttribute.dll程序集,里面只有一个ExtensionAttribute类;只要不同时引用这个程序集合System.Core.dll,应该就不会发生冲突(因为随着IronPython 2.0 RC1发布的DLR里的System.*命名空间全都改成Microsoft.*了,所以不会冲突)。

对DLR的关注者而言有个好消息,那就是已经几个月没跟随IronPython一起发布的ToyScript在这次的RC1里终于回来了。

进入到RC阶段,IronPython 2.0系列的对外API大致进入了稳定阶段(也就是说Beta5之后就不会有大的API变化,只会有bugfix)。但这不代表其底层所使用的内部API到达了稳定阶段——至少,DLR的API还在不停的调整,至少LINQv2的API还在调整,Old-*系的老类/接口也尚未清理完。可以预见,正式发布的IronPython 2.0中的DLR也不会达到API稳定的阶段。我的猜测是DLR的开发进度(deadline)或许会跟C# 4同步,因为C# 4的动态特性依赖于DLR。

===========================================================================

顺便说说最近DLR里的一些变化。我最高兴的一点是文档明显增加了。
许多优化很明显是为了性能改善而做的努力,其中有两个有趣的地方:尽量使用普通for而减少使用foreach来访问数组和实现了IList<T>接口的容器、尽量减少数据所占的空间。
使用普通的for循环是为了减少创建enumerator(也就是iterator)的个数;实际效果看,enumerator对象个数确实是能减少,能减轻GC的压力,但在GC以外这个做法能有多少改善呢?CLR的优化还真是有待进一步提升。
减少数据占用的空间主要是通过把成员变量提升为静态变量,或者使用更小的类型来装数据(例如把ExpressionType跟NodeFlags放在一个Int32里),或者干脆把作用不大的成员变量去掉。
一个东西开发到一定阶段之后,为了性能考虑,代码果然是不得不变丑啊……||

Action方面,原本叫做Rule<T>的类改名为CallSiteRule<T>了,更显著的变化是它的可见性从public变为了internal,而其中一些成员(_parameters、_returnLabel)变成了静态只读成员(Parameters、ReturnLabel),于是原本每个实例都会带着的一些数据变为由每个泛型类型实例带着。CallSiteBinder<T>.Bind()也不再返回Rule<T>,而是直接返回一个“测试+执行”的Expression。

AST方面,有更多类型从Statement转变为Expression,例如Block->BlockExpression、EmptyStatement->EmptyExpression、LoopStatement->LoopExpression、SwitchStatement->SwitchExpression、ThrowStatement->ThrowExpression、TryStatement->TryExpression。
Variable相关的好几个类型也在不停的调整,例如说把VariableExpression合并到ParameterExpression里去之类。
控制流跳转的节点(break、continue、return、goto)合并为GotoExpression。这点比较诡异,没看出具体的好处是什么。而且ReturnStatement为什么还在呢……
另外,早些时候用于标记代码位置信息的SourceLocation和SourceSpan两个类都从Microsoft.Scripting.dll移回到了Microsoft.Scripting.Core.dll里,位于System.Linq.Expression命名空间里(或者IronPython 2.0里叫Microsoft.Linq.Expression)。但没有任何Expression类对它有直接引用,这是怎么回事?其实同一命名空间里有一个Annotations类,SourceSpan信息可以放在它的实例里被Expression所引用。最近新增了一个SymbolDocumentInfo类也是为了生成调试符号信息而存在的。(其实是从SourceFileInformation改名而来,但不知为何SourceFileInformation没被删掉)。这样,以后使用LINQv2的时候就有希望在调试时得到正确的行号信息了。
分享到:
评论

相关推荐

    IronPython-1.1.1

    IronPython-1.1.1 是一个特定版本的IronPython实现,它是一个高效且功能强大的Python解释器,专为.NET Framework和Mono平台设计。由Jim Hugunin在微软的引领下开发,IronPython的独特之处在于它能够无缝地融入.NET...

    IronPython-2.7.5.zip

    1. **兼容性**:IronPython 2.7.5是基于Python 2.7版本的,因此它兼容大部分Python 2.7的语法和标准库。这使得开发者可以在.NET平台上使用熟悉的Python语言进行开发。 2. **.NET集成**:IronPython能够无缝地与.NET...

    IronPython-2.7.4(内附样例程序)

    1. 创建`PythonEngine`实例来初始化Python运行时。 2. 使用`PythonEngine.ImportModule`导入Python模块,这通常对应于.py文件中的内容。 3. 调用Python模块中的函数,将C#对象作为参数传递,也可以接收返回值。 ...

    在.Net6中调用IronPython实现动态执行脚本

    在.NET 6中调用IronPython来实现动态执行脚本是一项强大的功能,它允许程序员在运行时编写和执行Python代码,极大地增强了应用的灵活性。IronPython是一个开源的Python实现,它能够无缝集成到.NET环境中,使得.NET...

    IronPython安装python第三方库的必须工具setuptools-py2.7.egg

    1. **下载setuptools-py2.7.egg**:你可以从Python Package Index (PyPI)或其他可靠的源下载适合IronPython的setuptools版本。确保下载的版本与你的IronPython版本兼容。 2. **运行Egg文件**:在命令行或终端中,...

    ironpython.zip

    IronPython是一种基于.NET和Mono平台的Python实现,它是由Jim Hugunin开发的,而他也是Jython的创始人。这个项目的主要目标是提供一个与标准CPython解释器兼容的Python环境,同时利用.NET框架的强大功能。IronPython...

    IronPython in Action.pdf

    《IronPython in Action》是一本专门探讨IronPython技术的权威著作。IronPython是Python编程语言的一个实现,它允许开发者在.NET Framework和Mono平台上编写Python代码,并能无缝集成.NET类库。这本书深入浅出地介绍...

    Professional IronPython.pdf

    - **第1章:发现IronPython** 本章主要介绍IronPython的基本概念和发展历程,帮助读者了解IronPython与Python以及其他.NET语言之间的关系。 - **第2章:理解IronPython基础知识** 详细介绍IronPython的基本语法...

    IronPython-2.7.7.msi 金蝶云 调试python脚本环境搭建。

    标题中的"IronPython-2.7.7.msi"指的是IronPython的一个版本,这是一个开源的Python实现,可以在.NET Framework上运行。它允许开发者使用Python语言编写应用程序,同时利用.NET平台的强大功能。金蝶云,另一方面,是...

    IronPython in Action 无水印pdf版

    IronPython in Action 无水印pdf版。 IronPython in Action 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络 IronPython Action

    IronPython in Action

    《IronPython in Action》是一本深入探讨IronPython的权威书籍,专为那些希望利用Python的强大功能与.NET Framework的丰富库进行交互的开发者而设计。这本书不仅涵盖了Python的基础知识,更着重于讲解如何在.NET环境...

    微软IronPython源码

    1. **Python与.NET集成**:IronPython允许Python程序直接调用.NET Framework的类库,反之亦然,这使得.NET开发者可以利用Python的简洁语法和快速原型开发能力。 2. **JIT编译**:IronPython利用.NET的Just-In-Time ...

    IronPython简单程序源码

    IronPython是一种基于Python编程语言的开源实现,它允许开发者在.NET Framework上运行Python代码,并能够无缝集成到.NET环境中。这个“IronPython简单程序源码”很可能是为了展示如何在Visual Studio 2008中使用Iron...

    IronPython.zip

    1. 引入IronPython库:在C#项目中,你需要引用IronPython和IronPython.Modules这两个NuGet包,它们提供了运行Python代码所需的API。 2. 创建Python运行时环境(Runtime):使用`IronPython.Hosting.Python....

    IronPython-2.7.11.rar

    1. **.NET集成**:IronPython能够无缝地与.NET Framework交互,允许Python程序员使用.NET类库,如System.IO、System.Drawing等,这极大地扩展了Python的可用功能。 2. **互操作性(Interop)**:由于IronPython是...

    IronPython in Action 2012.pdf

    1. **IronPython 概述** - 定义与背景 - Python 和 .NET 的结合 - IronPython 的特性与优势 - 实际应用场景 2. **IronPython 入门** - 安装与配置 - 第一个 IronPython 程序 - 基本语法与数据类型 3. **.NET ...

    IronPython.7z

    1. **Python for .NET**: IronPython的核心功能是将Python与.NET Framework集成。这意味着Python程序员可以利用.NET库,如Windows Forms、WPF、ASP.NET等,开发出具有高性能和广泛功能的应用程序。它还支持交互式...

    Atom-ironpython-stubs,通用ironpython/.net库的自动完成存根.zip

    1. **IronPython**: IronPython是Python的一个实现,它运行在.NET Framework或.NET Core之上,允许Python代码与.NET平台无缝集成。IronPython可以直接调用.NET的类库,反之亦然,使得Python开发者能够利用.NET的...

    IronPython2.0最新版本以及IDE等源码

    【IronPython2.0最新版本】是Python编程语言的一个实现,它允许开发者在.NET Framework上运行Python代码。这个实现由Microsoft开发,旨在提供一个与标准CPython解释器兼容的环境,同时利用.NET平台的高性能和丰富的...

Global site tag (gtag.js) - Google Analytics