Crystal 0.30.1 发布了。Crystal 是一门基于 LLVM
的可编译的静态类型语言,它的整体设计尽可能地接近 Ruby
的体验,语法与各种标准库的接口都几乎和 Ruby 一样(但兼容 Ruby
不是它的目标)。

澳门葡萄京官方网站 1

Ruby语言在Web开发中的地位越来越高,在红宝石风靡的同时,又出现了一个名为Crystal的编程语言。Crystal是一个开源的、类似于Ruby语法的编程语言,其将Ruby的编程高效性和C语言的性能结合到了一起。特性如下:受Ruby影响的语法无须为变量或方法参数指定类型可以通过编写绑定来调用C代码编译时评估和代码生成功能,避免产生重复的样板代码可以编译为高效的本地代码示例:

开发团队表示他们热爱 Ruby 编写代码的效率,又倾心于 C
语言的性能,所以打造的 Crystal 语言给开发者提供了 Ruby
一样的语法体验,而且还拥有 C 一样的性能。

Crystal是一个开源的、类似于Ruby语法的编程语言,其特性如下:类似于Ruby的语法;支持静态类型检查,但无需指定变量类型或方法参数;可在Crystal内通过代码绑定调用C代码;在编译时进行代码评估和生成,避免了公式化的代码;编译后的代码是高效的本地码。Crystal语法:Hello
World
在Crytal中经典的Hello
World程序代码是:采用面向对象思路的写法是:采用块思路的写法是:尽管不同写法得出的程序性能各有差异,但幸好这些写法都是具表达力的。要运行Hellow
World程序,请先安装好相关程序。然后把Crystal代码保存为hello.cr文件,启动控制台后键入以下命令:Crystal特性综述高效代码生成Crystal是非解释型语言,没有虚拟机,由LLVM编译为机器代码。你不必指定变量类型,实例变量或方法参数,与静态编译语言类似;Crytal可自行判断该采用什么类型。多类型变量可以不指定变量类型。如果变量被指派了多种类型,在编译时变量类型是包括所有类型的。在运行时时变量类型才是唯一的。可以通过a.is_a?或a.responds_to?来检查类型。方法在Crystal中,方法是可以重载的,重载依据是参数个数,类型限制及方法的使用与否。进行C绑定可在Crystal中进行C代码绑定,例如以下的SDL绑定:未来特性展望提供高效的,并行的垃圾回收器;提供类似于Erlang和Go的并发原生处理功能;更好的元编程方式;提供结构体类型,除了进行C代码绑定,还能编写更有效的封装代码和更少的内存占用;元组,命名元组和参数。Hacker
News上开发者对Crystal的精彩评论:Habosa:我对一个有如此良好文档支持的新语言所深深震撼了,其技术博客有很多完整的里程碑式文章。Arikrak:与Ruby如此相似的目的是什么呢?难道是能够直接运行Rails?我对此充满期待。SomeCallMeTim:它真的酷毙了!如果能够在Windows平台上能够更高效地运行例如C/Go,就更加完美了。文章来自:crystal-lang.org

max = 100sieve = Array.new(max, true)sieve[0] = false(2...max).each do |i| if sieve[i] (2 * i).step(max - 1, i) do |j| sieve[j] = false end endendsieve.each_with_index do |prime, number| puts number if primeend

此版本 darwin 包使用 LLVM 6.0.1;在 0.30.0
中引入的“抽象方法检查”得到了一些改进,考虑了在整个类型层次结构中定义的方法。

Crystal的Hello World:

并发方面,libevent 2.1.11
强制执行的新约束与运行时恢复构造的方式相冲突,此版本中得到优化。

puts "Hello World"

网络方面,修复了头文件出错的问题,还修复了 SSL
连接失败后的套接字泄漏问题。

你也可以使用面向对象方法:

详情查看更新说明:

class Greeter def initialize(name) @name = name.capitalize end def salute puts "Hello #{@name}!" endendg = Greeter.new("world")g.salute

或者使用块:

(文/开源中国)    

"Hello World".each_char do |char| print charendprint 'n'

官网:Github地址: