Crystal 1.8.0 发布,语法类似 Ruby 的编译型编程语言

993次阅读
没有评论

C++rystal 是一种通用的、面向对象的编程语言,由 Ary Borenszweig、Juan Wajnerman、Brian Cardiff 和 300 多名贡献者设计开发。Crystal 的语法受到 Ruby 的启发,属于编译语言,具有静态类型检查功能,但一般不需要指定变量或方法参数的类型,可实现接近 C/C++ 的性能。它的类型由一个先进的全局类型推理算法来解决。

 Crystal 1.8.0 已发布,此版本的一些修改:

正则表达式:PCRE2

此版本中一个重大且必要的更改是 PCRE2 成为 Regex ( #12978 ) 的默认引擎。 1.7 中添加了对 PCRE2 的支持,并在 1.7.3 中稳定下来。我们认为默认使用它是安全的。仍然可以回退到 PCRE,如果 PCRE2 在编译时不可用则自动回退,或者通过编译器标志 -Duse_pcre 回退。

从 1.8 开始,Crystal 编译器应使用 PCRE2 构建以确保一致性。

作为简化向 PCRE2 迁移的措施, Regex::Options 获得了更多可在两个引擎版本中工作的命名成员。为了容纳额外的值,枚举基类型从 Int32 更改为 UInt64 ( #13223 )。

此外,添加了一个新的枚举 Regex::MatchOptions 来保存特定于匹配操作的选项, Regex::Options 现在别名为 Regex::CompileOptions ( #13248 )。不推荐使用匹配方法的 Regex::Options 重载。

正则表达式:无效的 UTF

与升级无关,此版本包含影响两个引擎版本的错误修复。 Crystal 的 String 类旨在成为有效的 UTF-8,但并未强制执行,完全可以接受包含无效的 UTF-8。字符串传递给 PCRE 或 PCRE2 时,有必要确保其内容有效。

之前没有这样做,库可能会崩溃。现在 Regex.new 和所有匹配方法都会验证字符串,并在它们包含无效的 UTF-8 时引发异常。如果已知字符串是有效的 UTF-8,则 Regex::CompileOptions::NO_CHECK_UTF  Regex::MatchOptions::NO_CHECK_UTF 会跳过验证以提高性能。

语言

此版本增加了对 LLVM 15 ( #13173 )的支持,其中包括迁移到 LLVM 的不透明指针。这已证明可以显着提高编译速度。

  • 建议使用 LLVM 15 构建 Crystal 以提高编译性能。
  • 此版本放弃了对旧 LLVM 版本的支持。 Crystal 现在需要 LLVM 8 或更高版本 ( #12906 )。
  • LLVM 16 支持正在开发中 ( #13181 )。

平台支持

此版本支持 Android,并在 Windows 中取得了重大进步

AArch64 安卓

  • 现在可以使用 Bionic C 运行时 ( aarch64-linux-android ) 以 Android 为目标。有关如何实现此工作的详细信息,请参阅相关 PR ( #13065 )。

 

Windows 

  • 在实现 Windows 的完整 stdlib 功能覆盖方面取得了进展。
  • 此版本包括一些与符号链接( #13141  #13195 )相关的改进
  • 此版本还为 Windows 信号 ( #13131 ) 添加了一个完整的存根。
  • 接受了一个补丁来支持 Windows 7 版本 ( #11505 )。

信号

在 Unix 系统中,进程间通信(例如终止进程和响应中断)是基于信号的, Crystal 中的 Signal API 用于此。为了支持使用不同机制的操作系统(例如 Windows),有必要使用可移植的 API,从实现中抽象出意图。

  • Process.on_interrupt 处理中断: SIGINT (Unix) 和 Ctrl+C  Ctrl+Break (Windows) ( #13034 )。
  • Process#terminate 获得了一个 graceful 参数。在 Unix 上,它会在 SIGTERM  SIGKILL 之间进行选择,而它对 Windows 没有影响,并且不管怎样( #13070 ),其行为都类似于 taskkill /f 
  • Process::Status#exit_reason  Process::ExitReason 以可移植的方式提供有关程序退出状态的信息 ( #13052 )

 标准库

  • 修复了 LibC 的一些函数定义,它们在 #13242  #13249 中使用了错误的类型(例如 Int 而不是 SizeT )。这会影响在 *-linux-gnu 目标上发送大量网络数据包的错误。

http

  • HTTP::StaticFileHandler 现在支持 Range 请求( #12886 )。

 

Spec

  • spec 结果使用 pretty_inspect ( #11635 ) 格式化,规范运行器支持 --color 选项 ( #12932 )。

Enum

  • Enum#includes? 现在需要设置所有位 ( #13229 )。
  • Enum.[] 是一个新的便捷构造函数,对标志枚举特别有用。它取代了现在已弃用的 Enum.flags ( #12900 )。 Enum#inspect 使用 Enum.[] ( #13004 ) 的简洁语法。

Range

当泛型参数为 Nil 时, Range#size  #each  #sample 在编译时不再出错。例如, (..4).each { } 现在在运行时引发而不是编译失败 ( #13278 )。

 

Indexable

Indexable 的实现应该是稳定的,即除非显式突变 ( #13061 ),否则不会改变行为。

 

更新公告:https://crystal-lang.org/2023/04/14/1.8.0-released/

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2023 年 4 月
 12
3456789
10111213141516
17181920212223
24252627282930
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026 Jay 2025-12-22 09...
“昆山杯”第二十七届清华大学创业大赛决赛举行

“昆山杯”第二十七届清华大学创业大赛决赛举行

“昆山杯”第二十七届清华大学创业大赛决赛举行 一水 2025-12-22 17:04:24 来源:量子位 本届...
MiniMax海螺视频团队首次开源:Tokenizer也具备明确的Scaling Law

MiniMax海螺视频团队首次开源:Tokenizer也具备明确的Scaling Law

MiniMax海螺视频团队首次开源:Tokenizer也具备明确的Scaling Law 一水 2025-12...
清库存!DeepSeek突然补全R1技术报告,训练路径首次详细公开

清库存!DeepSeek突然补全R1技术报告,训练路径首次详细公开

清库存!DeepSeek突然补全R1技术报告,训练路径首次详细公开 Jay 2026-01-08 20:18:...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
摩尔线程的野心,不藏了

摩尔线程的野心,不藏了

摩尔线程的野心,不藏了 量子位的朋友们 2025-12-22 10:11:58 来源:量子位 上市后的仅15天...
摩尔线程的野心,不藏了

摩尔线程的野心,不藏了

摩尔线程的野心,不藏了 量子位的朋友们 2025-12-22 10:11:58 来源:量子位 上市后的仅15天...
AI体育教练来了!中国团队打造SportsGPT,完成从数值评估到专业指导的智能转身

AI体育教练来了!中国团队打造SportsGPT,完成从数值评估到专业指导的智能转身

AI体育教练来了!中国团队打造SportsGPT,完成从数值评估到专业指导的智能转身 量子位的朋友们 2025...
AI体育教练来了!中国团队打造SportsGPT,完成从数值评估到专业指导的智能转身

AI体育教练来了!中国团队打造SportsGPT,完成从数值评估到专业指导的智能转身

AI体育教练来了!中国团队打造SportsGPT,完成从数值评估到专业指导的智能转身 量子位的朋友们 2025...
真正面向大模型的AI Infra,必须同时懂模型、系统、产业|商汤大装置宣善明@MEET2026

真正面向大模型的AI Infra,必须同时懂模型、系统、产业|商汤大装置宣善明@MEET2026

真正面向大模型的AI Infra,必须同时懂模型、系统、产业|商汤大装置宣善明@MEET2026 量子位的朋友...