JS 引擎 V8 发布 v7.4;内存价格跌了 20%,Q2 预计还要再跌 20%

(给技术最前线加星标,每天看技术热点)

转自:开源中国、solidot、cnBeta、腾讯科技、快科技等

【技术资讯】

0、JS 引擎 V8 发布 v7.4 性能再次大幅提高

JavaScript 引擎 V8 发布了 7.4 版本,目前处于 beta 阶段,正式版将于几个星期后与 Chrome 74 Stable 一起发布。此版本带来了一些新特性,并极大提升了性能。V8 现在不需要运行时分配可执行内存就可以执行 JavaScript。

WebAssembly Threads/Atomics

在非 Android 操作系统上启用了 WebAssembly Threads/Atomics,可以通过 chrom://flags/#enable-webassembly-threads 在 Chrome 中启用此功能。

此特性可以通过 WebAssembly 解锁用户计算机上多核的使用,从而在 Web 上实现新的、计算量大的用例。

参数不匹配的调用速度更快

JavaScript 中允许调用函数时参数的数量与定义时不同的情况,不管是参数少了还是多了都完全有效,同时 JavaScript 函数可以通过参数对象、rest 参数等方式获取实际参数。因此,JavaScript 引擎中必须提供一种获取实际参数的方法,在 V8 中,这是通过一种称为参数自适应的技术完成的。

参数自适应可以获取实际参数,但却是以性能为代价的,而这种性能损耗在现代前端和中间件框架中通常是没法避免的,因为有太多 API 具有可选参数或可变参数列表了。

V8 7.4 版本中带来了一项新特性解决了这一问题。

在某些情况下,比如当被调用的是严格模式的函数时,既不使用参数也不使用 rest 参数,这时候就完全不需要去进行参数自适应。现在 V8 在这种情况下就直接跳过这一自适应过程,将调用开销减少了超过 60%。

640?wx_fmt=png

改进了原生访问器性能

Angular 团队发现,在 Chrome 中直接通过各自的 get 函数调用 DOM 属性访问器之类的原生访问器,比单态(monomorphic)甚至是综合态(megamorphic )属性访问要慢得多。这是因为在 V8 中使用慢速路径通过 Function#call() 调用 DOM 访问器,而不是已经存在属性访问的快速路径。

此版本中提高了调用原生访问器的性能,使其比综合态属性访问快得多,效果如下:

640?wx_fmt=png

解释器性能

在 Chrome 中,下载大脚本时是在 worker 线程上以流进行解析的,此版本修复了一个源流中用自定义 UTF-8 进行解码的问题,修复后使得流式解析性能平均快了 8%。

还在 V8 预解析器中发现了另一个问题:worker 线程中属性名被不必要地重复。删除这些重复数据后将流式解析器性能提高了 10.5%。

640?wx_fmt=png

字节码 flush

从 JavaScript 源码编译的字节码占据了很大一部分 V8 堆空间,通常约为 15%,包括相关的元数据。但是有许多函数只在初始化期间执行,或者在编译后很少使用,这显然是一种浪费。

为了减少 V8 的内存开销,此版本实现了一项字节码 flush 新功能,即如果已编译的字节码最近没有被执行,那么在 GC 期间将从函数中将其清除。为了实现这一点,V8 会跟踪函数节码的年龄,在 GC 期间递增年龄,并在执行函数时将其重置为零。任何超预设“老化阈值”的字节码的内存都会被下一个垃圾回收器收走,并且如果将来再次执行该函数,它将重新编译其字节码。

640?wx_fmt=png

该字节码 flush 功能为 Chrome 用户节省了大量内存,将 V8 堆中的内存量减少了 5-15%,同时不会降低性能或显着增加编译 JavaScript 代码所花费的 CPU 时间。

此外还有 JavaScript 私有类字段、V8 API 等改进,详情查看发布公告。

1、WordPress 插件漏洞被利用,近 20 万站点还没打补丁

攻击者正在利用两个广泛使用的 WordPress 插件中的严重漏洞,以入侵托管站点,影响站点数量众多。

前几天我们才报导过流量排名前一千万网站,三分之一使用 WordPress,这么广泛的采用,一旦其中有安全漏洞被利用,影响会相当广。 

被利用的两个插件,其中之一是 Easy WP SMTP,最早由安全公司 NinTechNet 在上周日报导了其被利用进行攻击,数据显示有 300 000 次下载安装;另一个插件是 Social Warfare,已经被安装了 70 000 次,它的利用是由另一家安全公司 Defiant 披露的。 

两个插件漏洞都允许攻击者在受攻击的网站上创建恶意管理员帐户。据 Defiant 报导,有两个竞争组织正在实施攻击,其中一个在创建管理员帐户后暂时停止操作,而另一个组织则会进行后续步骤,其会使用虚假帐户更改站点,将访问者重定向到恶意站点。

有趣的是,这两个攻击组织使用了相同的代码用于创建管理员账户,而且这些代码源于最初 NinTechNet 在披露插件漏洞时使用的概念验证代码。不打补丁中招的成本也太低了。

据 arstechnica 的报导,虽然开发人员已经针对这两个被利用的漏洞发布了安全补丁,但是下载数据表明许多易受攻击的网站尚未安装更新,Easy WP SMTP 在过去 7 天内的下载量仅为 135 000次,而 Social Warfare 补丁自周五发布以来,也仅被下载了少于 20 000 次。

安全事大,如果你的网站托管在 WorPress 上,并且使用了这两个插件中的任一一个,那么需要确保已将其更新为:Easy WP SMTP 1.3.9.1 或 Social Warfare 3.5.3。

2、Swift 编程语言发布 5.0 版本

苹果开发者 Ted Kremenek 宣布 Swift 编程语言发布 5.0 版本。他表示,Swift 5 是 Swift 语言演化的一种重要里程碑。感谢 ABI 的稳定,Swift 运行时将包含在当前和未来版本的苹果操作系统 macOS、iOS、tvOS 和 watchOS 中。

Swift 5 还重新实现了 String,改进了字符串实值中 Raw Text 的支持,增强了 String 插值,包管理器增加了一系列新功能。

【业界资讯】

0、内存价格跌了 20%,Q2 预计还要再跌 20%

由于存储芯片今年以来不断跌价,就连DRAM内存芯片也转入熊市,三星、美光、SK Hynix的营收及盈利也随即暴跌,为此他们已经决定削减今年的资本开支,减少产能,美光就宣布将内存、闪存产能各自减少5%。这些厂商希望通过减产控制内存及闪存降价,闪存这边可能有效,预计Q2季度跌幅会收窄,但是内存芯片降价幅度是止不住了,Q1季度均价跌了20%,Q2季度预计还要再跌20%,这个趋势会一直持续到Q3季度。

1、多款 App 点分享至微信会跳深圳航空 App?微信:被劫持

3月26日,有数位苹果用户向澎湃新闻记者反映 ,在自己手机中大量App内,点击“分享到微信”链接或拉起“微信支付”时,会自动跳转到“深圳航空”App。这些用户此前都安装了“深圳航空”App。在“虎扑”、“国务院”、“网易云音乐”、“澎湃新闻”等大量App中试图拉起微信时,都会发生问题。而卸载“深圳航空”App后,则恢复正常。

对此,腾讯微信团队向澎湃新闻记者回应称,这是由于深航App“劫持”了微信跳转,微信已和对方沟通处理,近期深航将发版修复。

深圳航空方面表示,目前已经修复这一问题,不会造成用户数据泄露。

点击“分享到微信”,却跳转到“深圳航空”App。

这不是第一次iOS系统用户发现手机App跳转被劫持。

2018年5月,有苹果iPhone用户反馈,如果在支付宝内尝试打开淘宝App,会自动跳转到另外一个App,仿佛被“劫持”了一样。

经过支付宝和淘宝技术团队排查发现,这个App使用了和淘宝同样的URL Scheme(类似URL网址),从而干扰iOS系统判断,出现跳转错误。

支付宝表示,只有安装了这个App的iPhone手机才会出现这一跳转错误问题,安卓不受影响。用户可以手动关闭这个被打开的App,将其卸载,就能恢复正常。

当时技术专家表示,这一问题的根源在于苹果iOS系统不完善,允许不同的APP设置同一个URL Scheme,事实上很多APP都曾受到困扰。

不过,微信此次被劫持情况与淘宝被劫持的情况不太一样,这次所有App拉起微信时都会遇到劫持问题,之前只是在支付宝内拉起淘宝会遇到这一问题。

截至发稿,微信团队尚未发布进一步的技术细节解释。

2、数据网格组件 Handsontable 不再开源,采用自拟的非商业许可证

数据网格组件 Handsontable 本月初发布了一个公告,表示从 Handsontable 7.0.0 版本起,Handsontable Pro 和 Handsontable CE 会合并到一起,并且不再开源(采用 source-available 的形式提供源码),转而使用自拟的非商业许可证。官方称这个许可证为‘free for non-commercial and evaluation’(免费用于非商业和评估)。

640?wx_fmt=png

更改从2019年3月6日发布的 7.0.0 版本开始生效,摘要如下:

  • Handsontable Pro 合并到 Handsontable CE 社区版

  • 合并后软件名统称为“Handsontable”

  • Handsontable 7.0.0 是 Handsontable CE 6.2.2 和 Handsontable Pro 6.2.2 的继承者

  • 之前的 MIT 开源许可证被替换为自拟的‘free for non-commercial and evaluation’许可证

  • NPM 上的 Handsontable Pro 软件包被标记为已弃用状态,对应的 GitHub 仓库也已经被归档(处于只读状态)


改变背后的原因

Handsontable CEO 表示,一直以来,Handsontable 基本上是依靠出售 Handsontable Pro 获得的收入而维持运转 —— 这与当初期望开源项目在社区的帮助下而稳步发展的愿景有所出入。更不幸的是,Handsontable 付费用户和免费用户的比例大约为 1:25,如此微薄的收入不得不让他重新思考 Handsontable 的未来。经过长期而激烈的内部讨论后,大家达成了共识,最后认为继续投资该产品的唯一方法是将更多免费用户转换为付费用户。

他们希望不断改进 Handsontable,他们也有极具前瞻性的路线图和充满激情的团队,但更需要一种更加平衡的商业模式以支持长期的目标。

新许可证

新许可证适用于所有使用 Handsontable 用于非商业目的的人,官方表示旨在提供免费软件,特别是以下用户:

  • 科学家用于研究和开发

  • 学生和老师

  • 希望试用该软件的用户

  • 真正的非营利组织

  • 进行开发和测试的公司

在技术方面,除许可证外,Handsontable 的可用性和开放性方面没有任何变化。它依然会托管在 GitHub 上,并会审查用户提交的 PR。

对于购买了 Handsontable Pro 的客户,唯一改变的是 GitHub 仓库和 NPM 包名称。Handsontable Pro 仓库已被归档,处于只读状态。

由于变更是从 Handsontable 7.0 版本才开始生效,所以 Handsontable CE 6.2.2 及更低版本使用的依然是 MIT 许可证。你可以 fork 这些版本并在许可证允许的范围内进行任意的改动以满足需求,但请注意,官方表示没有计划在未来维护之前的 OSS 版本,因为这会导致开发更加复杂。

觉得这些资讯有帮助?请转发给更多人

关注 技术最前线 加星标看 IT 要闻

640?wx_fmt=png

喜欢就点一下「好看」呗~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值