`
RednaxelaFX
  • 浏览: 3052707 次
  • 性别: 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的时候就有希望在调试时得到正确的行号信息了。
分享到:
评论

相关推荐

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

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

    ironpython.zip

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

    IronPython开发工具

    IronPython是一种基于.NET框架的Python实现,它允许开发者在.NET平台上使用Python语法编写代码,并能够无缝集成.NET生态系统中的各种资源。IronPython与传统的CPython(标准Python解释器)相比,最大的优势在于它...

    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 2.6源代码

    1. **语言特性融合**:IronPython 2.6实现了Python 2.6的标准语法和大部分功能,同时还能利用.NET的类型系统和特性。例如,Python程序员可以使用.NET的类库,同时也能享受到Python的动态性和简洁性。 2. **C#与...

    IronPython各个支持平台对应的DLL资源

    1. **C#调用IronPython**:IronPython的一个重要特性是能够被C#等.NET语言调用。通过.NET互操作性,C#程序可以创建IronPython的实例,执行Python脚本,或者直接调用Python模块和函数,实现了语言间的无缝集成。 2. ...

    IronPython-2.7.11.rar

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

    C# IronPython 脚本引擎源码 + 例子

    1. **源代码**:这是IronPython的源代码,开发者可以通过阅读这些代码了解IronPython如何在.NET环境中实现Python解释器,如何解析Python语法,以及如何与.NET框架交互。 2. **文档**:可能包括了IronPython的使用...

    IronPython.7z

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

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

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

    IronPython和C#交互

    1. **IronPython简介**:IronPython是Python的一个实现,它完全兼容CPython的语法,并且能够无缝接入.NET Framework。这意味着使用IronPython编写的代码可以调用.NET库,反之亦然。 2. **C#简介**:C#是微软推出的...

    IronPython-2.7.5

    1. 快速原型:Python 的动态特性使得编写原型代码变得非常快捷,而 .NET 支持则提供了丰富的类库和性能。 2. 自动化:结合 .NET 的自动化工具,如 Windows Workflow Foundation 或 PowerShell,Python 可以用来编写...

    Manning.IronPython.in.Action

    1. **Python基础**:首先,理解Python的基础语法和特性是必不可少的,包括变量、数据类型、控制结构(如if-else、for循环、while循环)、函数、类和对象等。IronPython保留了Python的简洁和易读性,但运行于.NET之上...

    环境“IronPython|2.7-32”似乎未正确配置或缺失

    标题中的"IronPython|2.7-32"指的是IronPython的一个特定版本,它是一个开源实现的Python解释器,能够运行在.NET Framework和.NET Core上。IronPython 2.7-32是针对32位操作系统的版本。描述中提到的问题是关于...

    [IronPython] IronPython 高级程序设计 (英文版)

    [Apress] IronPython 高级程序设计 (英文版) [Apress] Pro IronPython (E-Book) ☆ 出版信息:☆ [作者信息] Alan Harris [出版机构] Apress [出版日期] 2009年06月22日 [图书页数] 312页 [图书语言] 英语 ...

    VS2010调用IronPython脚本的示例代码

    在本文中,我们将深入探讨如何在Visual Studio 2010 (VS2010) 中使用C# 4.0来调用IronPython脚本,这是一个强大的动态语言运行时,能够让我们在.NET环境中执行Python代码。IronPython使得C#开发者能够轻松地利用...

Global site tag (gtag.js) - Google Analytics