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

开发 后端
编程语言 Crystal 1.2 已经发布,其开发人员正试图将 Ruby 语言开发的便利性与 C 语言固有的高应用程序性能相结合。Crystal 语法与 Ruby很接近,但并不完全兼容,尽管有些 Ruby 程序无需修改即可执行。编译器代码是用 Crystal 编写的,并在 Apache 2.0许可证下获得许可。

[[431531]]

编程语言 Crystal 1.2 已经发布,其开发人员正试图将 Ruby 语言开发的便利性与 C 语言固有的高应用程序性能相结合。Crystal 语法与 Ruby很接近,但并不完全兼容,尽管有些 Ruby 程序无需修改即可执行。编译器代码是用 Crystal 编写的,并在 Apache 2.0许可证下获得许可。

该语言使用静态类型检查,无需在代码中显式指定变量和方法参数的类型即可实现。Crystal 程序被编译成可执行文件,并在编译时进行宏评估和代码生成。在 Crystal 语言的程序中,允许连接用 C 语言编写的绑定。代码执行的并行化是使用“spawn”关键字进行的,它允许您以称为纤程(Fiber)的轻量级线程的形式在不阻塞主线程的情况下异步启动后台任务。

标准库提供了大量常用功能,包括用于处理 CSV、YAML 和 JSON 的工具、用于构建 HTTP 服务器的组件以及支持 WebSocket。在开发过程中,可以方便地使用“crystal play”命令,它会生成一个web界面(默认localhost:8080),用于以Crystal语言交互执行代码。

Crystal 1.2 的主要变化:

添加了将泛型类的子类分配给父类的元素的功能。

  1. class Foo (T); end 
  2.    class Bar (T) <Foo (T); end 
  3.    x = Foo 
  4.    x = Bar 

在宏中,您现在可以使用下划线来忽略“for”循环中的值。

 

  1. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6}%} 
  2.      p {{v + i}} 
  3.    {% end%} 

添加了“file_exists?” 宏的方法。检查文件是否存在。

标准库提供对 128 位整数的支持。

添加 Indexable::Mutable (T) 模块以实现对 BitArray 和 Deque 等集合的扩展操作。

 

  1. ba = BitArray.new (10) # ba = BitArray [0000000000] 
  2.    ba [0] = true # ba = BitArray [1000000000] 
  3.    ba.rotate! (- 1) # ba = BitArray [0100000000] 

添加了 XML :: Node # namespace_definition 方法以从 XML 中提取特定的命名空间。IO # write_utf8 和 URI.encode 方法已被弃用,应替换为 IO # write_string 和 URI.encode_path。对 32 位 x86 架构的支持已移至第二级(不再生成现成的包)。正在准备转移到对 ARM64 架构的第一级支持。继续为 Windows 平台提供全面支持的工作。添加了对 Windows 套接字的支持。对于 macOS,添加了一个通用包,可在具有 x86 处理器的设备和具有 Apple M1 芯片的硬件上运行。

 

责任编辑:庞桂玉 来源: Linux公社
相关推荐

2011-10-28 14:23:46

Ruby

2012-04-23 14:35:29

JVMJavaClojure

2011-10-10 09:56:43

Ruby

2013-02-26 09:36:57

RubyRuby 2.0

2009-11-30 13:43:49

Rails 2.3Ruby 1.9

2009-07-21 12:49:10

Ruby on RaiRoR

2011-07-07 10:33:27

Ruby

2010-01-11 10:02:26

Frugalware Linux

2012-05-22 01:31:30

Highlight代码工具Java

2009-11-09 12:01:30

LinuxFrugalware 操作系统

2009-09-04 16:21:37

Ruby on Rai

2012-05-21 13:17:05

JavaNTRU加密算法

2015-10-19 17:28:00

MPlayer媒体播放器开源

2009-06-16 09:50:16

JS.Class 2.

2020-12-28 12:06:42

Ruby 3编程语言优化

2012-05-10 10:18:14

JavaDisruptor

2012-02-13 09:57:51

JavaDisruptor

2011-03-29 10:18:50

MeeGo 1.2N900诺基亚

2012-03-02 10:14:12

JavaApache Ant

2011-11-02 17:08:48

OpenBSD发布
点赞
收藏

51CTO技术栈公众号