0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Ruby 3.2.0正式发布 新增多项改进

OSC开源社区 来源: OSC开源社区 2022-12-27 10:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Ruby 3.2.0 现已发布,该版本添加了许多功能和性能改进。具体更新内容如下:

基于 WASI 的 WebAssembly 支持

这是基于 WASI 的 WebAssembly 支持的初始移植。此项特性使得 CRuby 二进制文件可在 Web 浏览器、Serverless Edge 环境和其他 WebAssembly/WASI 嵌入器上使用。目前,此移植可在不使用 Thread API 的前提下通过基本和引导测试套件的测试。2cb1ef12-852e-11ed-bfe3-dac502259ad0.png

生产就绪的 YJIT

2cce2984-852e-11ed-bfe3-dac502259ad0.png
  • YJIT 不再是实验性的

    • 已经在生产工作负载上进行了一年多的测试,证明非常稳定。

  • YJIT 现在支持 Linux、MacOS、BSD 和其他 UNIX 平台上的 x86-64 和 arm64/aarch64 CPU

    • 此版本支持 Apple M1/M2、AWS Graviton、Raspberry Pi 4 等。

  • 构建 YJIT 现在需要 Rust 1.58.0+。[Feature #18481 ]

    • 为了确保 CRuby 是使用 YJIT 构建的,请在运行./configure脚本之前安装rustc>= 1.58.0 。

  • YJIT 3.2 版本比 3.1 更快,内存开销大约是 3.1 的 1/3。

    • 总体而言,YJIT 比 yjit-bench 上的 Ruby 解释器快 41%(几何平均值)。

    • JIT 代码的物理内存是延迟分配的。与 Ruby 3.1 不同,Ruby 进程的 RSS 被最小化,因为--yjit-exec-mem-size分配的虚拟内存页在 JIT 代码实际使用之前不会映射到物理内存页。

    • 引入 Code GC,当 JIT 代码的内存消耗达到--yjit-exec-mem-size时,释放所有代码页。

    • RubyVM::YJIT.runtime_stats在现有的inline_code_sizeoutlined_code_sizekeys 之外,还返回 Code GC metrics:code_gc_countlive_page_countfreed_page_countfreed_code_size

  • RubyVM::YJIT.runtime_stats生成的大部分统计数据现在都可以在发布版本中使用。

    • 只需使用--yjit-stats运行 ruby 来计算和转储统计信息(会产生一些运行时开销)。

  • YJIT 现在经过优化以利用 object shapes。[Feature #18776 ]

  • 在定义新常量时,利用更细粒度的常量失效来减少代码的无效化。[Feature #18589 ]

  • 默认--yjit-exec-mem-size更改为 64 (MiB)。

  • 默认--yjit-call-threshold更改为 30。

针对 ReDoS 的正则表达式改进

由于正则表达式匹配会耗费不少时间,当代码试图向不受信任的输入匹配低效的正则表达式时,攻击者可能会利用它进行 DoS 攻击(即正则表达式 DoS,或称作 ReDoS)。因此新版本引入了两项可显着缓解 ReDoS 攻击的改进。改进的正则表达式匹配算法从 Ruby 3.2 开始,Regexp 的匹配算法通过使用记忆技术得到了极大的改进。
# This match takes 10 sec. in Ruby 3.1, and 0.003 sec. in Ruby 3.2 /^a*b?a*$/ =~ "a" * 50000 + "x"
2ceafd02-852e-11ed-bfe3-dac502259ad0.png2d11e5c0-852e-11ed-bfe3-dac502259ad0.png改进后的匹配算法使得大多数 Regexp 匹配(实验中大约为 90%)在线性时间内完成。对于 3.2.0 预览版本的用户:此优化可能会消耗与每个匹配的输入长度成比例的内存。预计不会出现实际问题,因为此内存分配通常会延迟,并且正常的 Regexp 匹配最多应消耗 10 倍的内存输入长度。正则表达式超时退出机制此版本引入了正则表达式超时退出机制。
Regexp.timeout = 1.0

/^a*b?a*$/ =~ "a" * 50000 + "x"
#=> Regexp::TimeoutError is raised in one second
Regexp.timeout根据 Ruby 应用程序的要求进行配置,可以防止或显着降低 DoS 的风险。请注意,Regexp.timeout是全局配置项,如果希望对某些特殊的正则表达式使用不同的超时设置,需要使用timeout关键字Regexp.new
Regexp.timeout = 1.0

# This regexp has no timeout
long_time_re = Regexp.new("^a*b?a*$", timeout: nil)

long_time_re =~ "a" * 50000 + "x" # never interrupted
此项特性的最初提案:https://bugs.ruby-lang.org/issues/17837

其他值得注意的新功能

语法建议
  • syntax_suggest(以前的dead_end)的功能已集成到 Ruby 中,可以帮助找到错误的位置,例如丢失或多余的 end 。

Unmatched `end', missing keyword (`do', `def`, `if`, etc.) ?

  1  class Dog
> 2    defbark
> 4    end
  5  end
[Feature #18159]错误高亮
  • 现在它指向 TypeError 和 ArgumentError 的相关参数

test.rbin `+': nil can't be coerced into Integer (TypeError)

sum = ary[0] + ary[1]
               ^^^^^^
语言
  • 匿名 rest 和关键字 rest 参数可以作为参数传递,而不仅仅是在方法参数中使用。[Feature #18351]

  deffoo(*)
    bar(*)
  end
  defbaz(**)
    quux(**)
  end
更多详情可查看官方公告:https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ruby
    +关注

    关注

    0

    文章

    44

    浏览量

    3827

原文标题:Ruby 3.2.0正式发布,新增多项改进

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Matter 1.5 正式发布

    景,包括对摄像头、闭合设备、土壤传感器的支持,同时还新增多项能源管理功能。此次更新延续了 Matter 的核心使命,即简化智能家居开发流程、增强设备互操作性,为消费者与开发者打造更丰富、更可持续的互操作体验。 今年早些时候联盟发布的聚焦质量优化的 Matter 1.
    的头像 发表于 12-01 14:45 216次阅读
    Matter 1.5 正式<b class='flag-5'>发布</b>

    连接标准联盟正式推出Matter 1.5版本

    、土壤传感器的支持,同时还新增多项能源管理功能。此次更新延续了 Matter 的核心使命,即简化智能家居开发流程、增强设备互操作性,为消费者与开发者打造更丰富、更可持续的互操作体验。
    的头像 发表于 11-30 10:34 533次阅读

    Imagination GPU 驱动更新:新增多项 Vulkan 与 OpenCL 扩展支持

    最近,ImaginationGPU驱动完成了重大更新。Imagination客户现已可通过合作伙伴门户(PartnerPortal)获取最新版Linux与Android驱动开发套件(DDK)。我们整理了本次更新的重点内容。Vulkan协作矩阵(CooperativeMatrix)支持为加速图形后处理、神经着色器、物理仿真以及GPU上的机器学习推理,DDK25
    的头像 发表于 10-13 09:21 535次阅读
    Imagination GPU 驱动更新:<b class='flag-5'>新增多项</b> Vulkan 与 OpenCL 扩展支持

    开鸿Bot系列大版本更新:体验稳定升级,乐享高效协同!

    V5.0.1.22版本开鸿Bot系列今日,开鸿Bot系列迎来第二次大版本更新——V5.0.1.22。此次版本更新致力于进一步提升系统稳定性与用户体验,新增多项实用功能,并在磁盘管理、OTA升级、设备
    的头像 发表于 09-26 17:06 1118次阅读
    开鸿Bot系列大版本更新:体验稳定升级,乐享高效协同!

    NVIDIA RAPIDS 25.06版本新增多项功能

    RAPIDS 是一套面向 Python 数据科学的 NVIDIA CUDA-X 库,最新发布的 25.06 版本引入了多项亮眼新功能,其中包括 Polars GPU 流执行引擎——这是一种面向图
    的头像 发表于 09-09 09:54 715次阅读

    了解SOLIDWORKS202仿真方面的改进

    随着SOLIDWORKS 2025版本的发布,这款三维CAD和仿真分析软件的再次展现了其在技术创新上的强劲实力。SOLIDWORKS 2025在仿真方面进行了多项重大改进,旨在提升仿真精度、可靠性
    的头像 发表于 09-04 10:36 491次阅读
    了解SOLIDWORKS202仿真方面的<b class='flag-5'>改进</b>

    匠芯创发布新版GUI开发工具 新增多国语言设置等功能

    。此次版本更新,为用户带来了诸多实用的新功能,进一步提升了设计体验和开发效率。在V1.3.0版本中,AiUIBuilder新增了多国语言切换功能,支持设计界面显示
    的头像 发表于 08-07 15:36 870次阅读
    匠芯创<b class='flag-5'>发布</b>新版GUI开发工具 <b class='flag-5'>新增多</b>国语言设置等功能

    商汤大装置重磅发布多项标志性成果

    在2025世界人工智能大会(WAIC 2025)期间,作为“最懂大模型的AI基础设施”,商汤大装置重磅发布多项标志性成果,持续打造AI基础设施发展新范式,力推动产业生态与应用场景的系统化落地。
    的头像 发表于 08-05 10:07 848次阅读

    亚马逊云科技在2025纽约峰会发布多项AI agent创新

    七大核心服务,帮助企业大规模、安全部署与运行AI agents 亚马逊云科技Marketplace新增多项产品,助力企业发现、采购并部署领先的AI agents和工具 向亚马逊云科技生成式AI创新中心
    的头像 发表于 07-17 16:06 680次阅读
    亚马逊云科技在2025纽约峰会<b class='flag-5'>发布</b><b class='flag-5'>多项</b>AI agent创新

    匠芯创发布新版GUI开发工具 新增多国语言设置等功能

    。此次版本更新,为用户带来了诸多实用的新功能,进一步提升了设计体验和开发效率。 在V1.3.0版本中,AiUIBuilder新增了 多国语言切换功能,支持设计界面显示刻度尺,拖动控件与相邻控件对齐停靠
    发表于 07-16 13:54

    u-blox发布首款车规级Wi-Fi 7模块RUBY-W2

    基于高通技术公司Snapdragon汽车连接平台先进Wi-Fi 7技术,RUBY-W2支持更多并发用户连接,以高吞吐量和低延迟实现车规级互联体验。
    的头像 发表于 06-17 10:56 1675次阅读

    光峰科技为2025款问界M9供应智能激光投影巨幕系统2.0

    近日,鸿蒙智行2025款旗舰SUV问界M9正式发布新增多项黑科技与升级版智驾体验,打造50万级销冠巅峰之上的新气象,仅上市两小时,就实现了大定突破一万辆。
    的头像 发表于 03-24 17:49 1002次阅读

    SOLIDWORKS 2025 PDM新增功能

    随着SOLIDWORKS 2025的发布其PDM系统也迎来了一系列重要的新增功能。这些功能不仅进一步简化了产品数据管理流程,还显著提升了团队协作的效率和准确性。本文将详细解析SOLIDWORKS 2025 PDM的新增功能,以便
    的头像 发表于 01-22 13:48 688次阅读
    SOLIDWORKS 2025 PDM<b class='flag-5'>新增</b>功能

    SOLIDWORKS 2025设计新增功能

    SOLIDWORKS 2025的发布为设计领域注入了新的活力,其新增功能不仅提升了设计效率,还增强了协作和数据管理的能力
    的头像 发表于 12-20 17:13 1053次阅读

    SOLIDWORKS 2025引入了多项新增工具和增强功能

    在工程设计领域,SOLIDWORKS一直以其强大的功能和灵活的操作性赢得了广泛的认可。随着SOLIDWORKS 2025版本的发布,这款三维CAD设计软件再次以一系列令人瞩目的新增工具和增强功能,为全球设计师和工程师们带来了设计体验和效率提升
    的头像 发表于 12-17 15:23 1102次阅读