出品
开源中国
文
Travis
Crystal是一种通用的、面向对象的编程语言,由AryBorenszweig、JuanWajnerman、BrianCardiff和多名贡献者设计开发。它的语法受到Ruby语言的启发,它是一种编译语言,具有静态类型检查功能,但一般不需要指定变量或方法参数的类型,可实现接近c/c++的性能。它的类型由一个先进的全局类型推理算法来解决。
Crystal1.0.0版本正式发布,该版本是Crystal的第一个主要版本,也是它的一个重要里程碑。此版本更新内容如下:
语言变化
支持Tuple#[](Range)编译时范围资源.(#)宏
不要使用命名的参数键名作为method_missing调用的参数标准库
(break-change)删除已废弃的定义修正多处的示例代码宏
(break-change)总是在getter/property宏中添加显式返回类型。数值
(break-change)将默认的四舍五入模式改为TIES_EVEN修复降频浮动无穷大修正String#to_f超出范围的行为实现Number#round的四舍五入模式。AddmissingunicodewhitespacesupporttoStringmethods.(#,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值的隐式编。(#,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初始化器中支持封闭的变量文档语法修正