《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的 Crystal 是兼容编码和运行于一体的编程语言。
Crystal 对程序员友好的语法很大程度上取自 Ruby,因此读起来自然且易于编写,从而提高了开发团队的工作效率。添加编译时静态类型检查提供了一个额外的安全层,这在更大的代码库中被证明是无价的,这是几个基于动态语言构建的长期运行项目所面临的问题。最重要的是,Crystal 运行速度极快,内存占用极低。
Crystal特征- 具有类似于 Ruby 的语法(但与其兼容不是目标)
- 静态类型检查,但无需指定变量或方法参数的类型。
- 能够通过在 Crystal 中编写绑定来调用 C 代码。
- 具有编译时评估和代码生成,以避免样板代码。
- 编译为高效的本机代码。
1.从源代码安装 Crystal
- 安装最新的 Crystal 版本。要编译 Crystal,您需要 Crystal。
- 确保路径中存在受支持的 LLVM 版本。
- 确保安装所有必需的库。
- 克隆存储库:git clone https://github.com/crystal-lang/crystal
- 运行make以构建您自己的编译器版本。
- 运行以确保所有规范都通过,并且您已正确安装所有内容。make std_spec compiler_spec
- 用于运行您的水晶文件。bin/crystal
2.在 macOS 上
要在 macOS 上轻松安装 Crystal,您可以使用Homebrew。
brew update
brew install crystal
当新的 Crystal 版本发布时,您可以使用以下方式升级您的系统:
brew update
brew upgrade crystal
如果您收到如下错误:
ld: library not found for -lssl (this usually means you need to install the development package for libssl)
您可能需要安装 OpenSSL 并将 pkg-config 链接到 OpenSSL:
brew install openssl
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opt/openssl/lib/pkgconfig
3.在 OpenBSD 上
Crystal 可作为编译包使用。但是,它可能不是可用的最新版本。该软件包还包括shards.
doas pkg_add crystal
对于自己构建 Crystal,所需的安装在端口树中可用。
如果还没有安装 ports 集合,可以在OpenBSD Ports guide中找到安装说明。
cd /usr/ports/lang/crystal
doas make clean install
为了避免从源代码构建依赖项(这可能需要很长时间),您可以首先从二进制包中安装它们:
doas pkg_add llvm libiconv boehm-gc libevent2 pcre libyaml
1.2011 年 6 月从 Manas 实验室开始的实验发展远远超出了预期:它被BlockVue的 CTO称为2018 年最有前途的编程语言,并被 TechBeacon 等预测为前景光明。Crystal 社区有来自世界各地的贡献者,已经建立了3500 多个公共图书馆,并聚集了13000 多名观星者。几家公司已经使用 Crystal 构建了他们的部分技术堆栈,在保持可维护性的同时实现了巨大的性能改进。
2.除了开放的社区渠道,您可以在其中找到其他 Crystal 用户回答的大部分问题,如果您在 Crystal 中实施您的项目,您可以依靠我们的企业级支持和咨询服务。
3.Crystal 对程序员友好的语法很大程度上取自 Ruby,因此读起来自然且易于编写,从而提高了开发团队的工作效率。添加编译时静态类型检查提供了一个额外的安全层,这在更大的代码库中被证明是无价的,这是几个基于动态语言构建的长期运行项目所面临的问题。最重要的是,Crystal 运行速度极快,内存占用极低。
Ruby 以其优美的语法而闻名,它允许开发人员以难以置信的速度编写代码,非常适合快速启动大多数项目。Crystal 语法直接来自 Ruby,继承了所有这些特征。
require "html_builder"
html = HTML.build do
link(href: "http://crystal-lang.org") do
text "Crystal is awesome"
end
end
几种主流动态语言目前正在添加类型检查功能,以帮助开发人员处理大型代码库 - Crystal 具有从头开始构建的类型检查,因此甚至可以防止可怕的空指针异常,并具有全局类型推断的额外好处,以减少冗长。
—END—
开源协议:Apache-2.0 License
开源地址:https://github.com/crystal-lang/crystal
,