查看原文
其他

Crystal编程语言正式迈入1.0版本

Travis FOSS Lab 2022-05-25
点击蓝字默默关注


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

Crystal 1.0.0 版本正式发布,该版本是 Crystal 的第一个主要版本,也是它的一个重要里程碑。此版本更新内容如下:


语言变化


  • 支持 Tuple#[](Range) 编译时范围资源. (#10379)



  • 不要使用命名的参数键名作为 method_missing 调用的参数


标准库


  • (break-change) 删除已废弃的定义

  • 修正多处的示例代码



  • (break-change) 总是在 getter/property 宏中添加显式返回类型。


数值


  • (break-change) 将默认的四舍五入模式改为 TIES_EVEN

  • 修复降频浮动无穷大

  • 修正 String#to_f 超出范围的行为

  • 实现 Number#round 的四舍五入模式。

  • Add missing unicode whitespace support to String methods. (#10367, thanks @straight-shoota)


文本


  • 为 String 方法添加缺失的 unicode 空白支持


集合


  • 修正 Range#== 忽略通用类型参数

  • 让 Enumerable#flat_map、 Iterator#flat_map 可以和混合元素类型一起使用

  • 删除重复的 sort 相关规格

  • 修正关于 Set#each 返回类型的文档

  • 修正文档中关于 Set#*set_of? 的例子

  • 修正对设定规格的期望


序列化


  • (break-change) 默认将 Enum 序列化为下划线的 String

  • (break-change)在 XML 模块中使用类代替结构体

  • 增加 YAML::Nodes::Node#kind


文件


  • 让 IO::Memory 不能用只读的 Slice 写入

  • 允许在 IO#read_at 中使用 Int64 值

  • 增加 IO::Sized#remaining=(value) 来重用一个现有的实例


联网


  • (security) 删除 Cookie 名称解码

  • (break-change) 删除 cookie 值的隐式编。(#10485, thanks @straight-shoota)

  • (break-change) 将 HTTP::Cookies.from_headers 拆分成服务器/客户端的独立方法

  • (性能) 对 HTTP::Cookies 进行了小幅性能改进

  • 从类方法构造 HTTP::Client 时,遵循子类

  • 让 content-length 标头更符合 RFC 标准

  • 修正 #respond_with_status,当标头文件写入或关闭时

  • 修正 Cookie#==,把所有的 ivars 都考虑进去

  • 删除 HTTP::Cookie 中隐含的 path=/

  • 添加 HTTP::Request#local_address


日志


  • 在 #finalize 时关闭 AsyncDispatcher


系统


  • 修正 Process.parse_argument 的行为

  • 为 macOS/darwin 目标添加 aarch64 支持

  • 在 x86_64-darwin 中加入 LibC::MAP_ANONYMOUS 以匹配其他平台


运行时


  • 改进 ELF 阅读器在未初始化运行时的错误信息。


编译器


  • (break-change) 不允许在字符串和字符文字的转义序列中代入一半, \\x 用于任意二进制值。

  • 修正当在详尽的段内调用伪方法时的 ICE

  • 修复解析 foo.% 调用时的 ICE

  • 修正符号引用规则的边缘情况

  • 在 Const 初始化器中支持封闭的变量

  • 文档语法修正

更多详情可查看:https://github.com/crystal-lang/crystal/releases/tag/1.0.0




往期推荐

霸榜GitHub:一款开源的Linux资源监控器!

2021-03-22

谷歌准备发布Fuchsia首个开发者预览版

2021-03-22

Debian 11 Bullseye开发工作进入硬冻结阶段

2021-03-22


扫码关注最新动态

公众号ID:fosslab

我就知道你“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存