BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

第三方开发者可将JIT和编译器引入WinRT吗?

| 作者 Jeff Martin 关注 16 他的粉丝 ,译者 巨泽建 关注 0 他的粉丝 发布于 2012年9月9日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

微软在向开发者和终端用户大力推广WinRT平台的特性,以鼓励更多人采用它。但是,随着人们对WinRT “围墙花园”所强加的限制的关注,这些特性的代价逐渐被大家所全面认识。

Mozilla的Brian R. Bondy在三月份曾宣布过为Windows8开发Firefox的计划,以及该项目如何展示三类应用:“……经典桌面应用,Metro应用以及支持Metro风格的桌面浏览器”。微软的白皮书《开发支持Metro风格的桌面浏览器》详细讲述了开发者怎样将他们的浏览器移植到Windows8中。

LuaJIT的开发者Mike Pall在5月份表示,ARM版Windows8(WOA或Windows 8 on ARM)的组成架构不支持第三方JIT(Just-in-time)编译器:

“Windows8/ARM只支持在沙箱(Sandbox)内运行独立开发者的应用。这些应用只能访问WinRT API,无法访问所有WIN32 API。是的,WIN32 API在W8ARM上的确存在,但只有IE和系统进程可以访问”

该限制的影响广泛。Pall关注的是JuaJIT的开发,但几乎所有用户都受到影响:“……对于[WOA],将没有LuaJIT(JIT模式下),没有PyPy,没有java,没有v8等等,以及依赖或内嵌它们的任何软件(Scala、Clojure、Jruby)”。然而,“……[WOA]版IE具有特殊权限,是唯一被允许运行JIT编译器以加速JavaScript的软件”。对于任何其他浏览器,IE将有天然的速度优势。

Embarcadero的Allen Bauer带来了最新的发展,他在工作中发现,在WinRT平台上将本地代码生成能力添加到其公司的编译器中是行不通的:

“我们非常希望在WinRT上支持本地Delphi&C++代码。问题是,任何人实现其语言的运行库(RTL)时都需要使用一些操作系统提供的API,而事实上WinRT却限制这些API的使用,除非VC++运行库”。

最新的微软官方响应依旧延续了Steven Sinofsky以前发表的文章的论调:

“……WOA将不会支持任何虚拟化或模拟化手段,不支持现有x86/64应用的移植或运行。支持各种形式的模拟器有碍于提供系统可靠性及可预测性的产品发布,设计即是如此。现有代码没有像WOA那样针对该平台进行优化。虚拟化或模拟化软件耗费太多的系统资源,包括电池寿命和CPU。”

让事情更复杂的是微软材料中存在明显的自相矛盾。上述的浏览器开发指南声称“支持Metro风格的桌面浏览器”允许使用JIT编译,系统中同时只有这类浏览器的一个活动版本。这种情况下,当面对基于JIT的浏览器不再是默认配置时,WinRT平台会如何应对尚不明确。

对整个业界的观察中,可以注意到,开发者历来会接受苹果iOS平台对他们开发的限制。而不同的是,微软试图得到他们现存桌面开发者社区的支持,而这些开发者历来不喜欢类似WinRT这种形式的限制。


查看英文原文:Can 3rd Party Developers Bring JIT and Compilers to WinRT?

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT