命令式编程语言,静态类型编程语言

以下由中文社区翻译,能力有限,如有翻译错误,欢迎加入
QQ 群指正!

就在今天,Nim团队非常荣幸地宣布万众期待的1.0语言版本。

概述

在本教程中,我们将学习如何在Ubuntu
16.04上安装Nim。 我们将从Ubuntu存储库安装Nim,并从源代码安装nim。

Nim是:

  • 一个系统和应用程序编程语言。
    静态类型和编译,它提供了一个优雅的包装无与伦比的性能。

Nim提供:

  • 高性能垃圾收集的语言
  • 编译为C,C ++或JavaScript
  • 生成无依赖关系的二进制文件
  • 在Windows,MacOS,Linux等上运行

Nim 团队很高兴为大家带来 1.0.4 版本发布的消息, 这是我们在 Nim 1.0.0
之后发布的第二个补丁版本。

Nim一直专注于提供高效、可读和灵活的静态编译类语言。

从存储库安装nim

Nim在Ubuntu
16.04存储库上可用。
要安装Nim,我们可以运行下面的命令

$ sudo apt-get update
$ sudo apt-get install -y nim

现在我们可以检查安装了以下内容的Nim版本:

$ nim -v
Nim Compiler Version 0.12.0 (2015-11-02) [Linux: amd64]
Copyright (c) 2006-2015 by Andreas Rumpf

active boot switches: -d:release

想要了解更多关于 1.0.0 版本的细节,可以查看我们两个月前
版本发布说明。

1.0版本标志可以在接下来的几年使用Nim的未来版本不会破坏当前版本的代码,开始有稳定的基础。

Hello Nim

我们来为Nim创建一个Hello World应用程序。
创建一个名为hello.nim的新文件,内容如下:

echo "Hello Nim! - howtodojo.com"

使用下面的命令编译源代码

$ nim c hello.nim 
Hint: system [Processing]
Hint: hello [Processing]
CC: hello
CC: system
Error: execution of an external compiler program 'gcc -c  -w  -I/usr/lib/nim -o /home/ubuntu/nimcache/hello.o /home/ubuntu/nimcache/hello.c' failed with exit code: 32512

/bin/sh: 1: gcc: not found

由于我们没有安装gcc,所以仍然出现错误。 是的,nim依靠c/c
++编译器来编译。

使用下面的命令安装gcc

$ sudo apt-get install gcc

现在让我们重新编译我们的hello.nim源代码。

$ nim c hello.nim
Hint: system [Processing]
Hint: hello [Processing]
CC: hello
CC: system
Hint:  [Link]
Hint: operation successful (9852 lines compiled; 0.910 sec total; 14.148MB; Debug Build) [SuccessX]

源代码编译成功。 二进制文件名是hello。
我们可以使用file命令检查文件类型。

$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=fe9a2d66209c2adb082ae63e15fc35e8f991a322, not stripped

我们可以在上面看到,hello是一个ELF / Linux二进制文件。

现在让我们执行hello应用程序。

$ ./hello 
Hello Nim! - howtodojo.com

应用程序成功运行。

距离前一个版本的发布尽管只是过去了一个月的时间,
但这次的版本已经包含了超过 70
次新的提交,
新修复了 20 个问题, 让我们的 1.0 版本变成了更好的样子。

Nim构建了一个温暖和热情的社区,准备好了迎接新手们的到来。

从源代码安装nim

如上所见,Ubuntu 16.04附带的Nim版本是0.12.0。

在撰写本文时,Nim的最新稳定版本是0.17.2。
在本节中,我们将学习如何从源代码安装nim。

我们可以从Nim instal
Unix页面下载最新版本的Nim。

使用wget下载nim源代码。

$ wget -c https://nim-lang.org/download/nim-0.17.2.tar.xz

下载包含nim源代码文件哈希的sha256文件。
我们将使用这个文件来确保nim源代码的完整性。

$ wget -c https://nim-lang.org/download/nim-0.17.2.tar.xz.sha256  

现在让我们使用sha256sum命令来检查nim源代码的完整性

$ sha256sum -c nim-0.17.2.tar.xz.sha256
nim-0.17.2.tar.xz: OK

如果要输出OK,如下图所示。 如果没有,那么你将需要重新下载nim源代码。

使用下面的命令提取nim源代码。

$ tar xJf nim-0.17.2.tar.xz

转到提取的目录

$ cd nim-0.17.2    

运行下面的命令来构建nim和工具。 我们假设你在编译Nim之前已经安装了gcc。

$ ./build.sh
$ bin/nim c koch
$ ./koch tools        

安装nim到 /opt目录

$ sudo ./install.sh /opt

选择Nim版本

$ /opt/nim/bin/nim -v
Nim Compiler Version 0.17.2 (2017-09-07) [Linux: amd64]
Copyright (c) 2006-2017 by Andreas Rumpf

git hash: 811fbdafd958443ddac98ad58c77245860b38620
active boot switches: -d:release

安装 1.0.4

如果你已经用 choosenim 安装了之前版本的 Nim , 升级到 Nim 的 1.0.4
版本会非常简单:

$ choosenim update stable

如果你还没有安装 choosenim , 你可以通过
这些说明 来下载和安装
choosenim, 当然你也可以按照我们的
安装 页面直接安装。

如果你是一名新手,看看我们的学习资源,在我们的试练场试用Nim。

小结

在本教程中,我们学习了如何从Ubuntu存储库安装Nim。
我们学习了如何编译Hello Nim! 源代码来测试我们的安装。

我们还学习了如何从源代码安装Nim。 祝你与Nim玩得开心!

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149213.htm

图片 1

更新日志

你可以 在我们的 GitHub
仓库中
查阅此版本的变更日志以及 Nim 的其余源码。


附《更新日志》

稳定保证

1.0版本是长期支持的稳定发布版,只接受bug修复和未来新特性,前提是它们不破坏向后兼容性。

1.0.x分支将按需接收bug修复。不影响向后兼容的新特性将继续稳步进入1.x分支。

我们的目标是保证Nim1.0编译的代码在未来任何稳定的Nim1.x版本上可持续的编译。

语言层面的变更

  • 模仿早期版本的 Nim ,在运行时取消了对无符号整数转换的检查。
    文档中已针对这一改进做出了说明。查看
    https://github.com/nim-lang/RFCs/issues/175
    了解更多细节 (#12688)
  • 添加了 or detectOs(Manjaro),这样当检测到系统为 Manjaro
    时,调用原生的包管理器会使用 pacman 进行包管理
    (#12587)
  • --os:ios 编译指令现在也代表了 macosx
    (#12585)
  • 导出了 nim.cfg 解析器,现在其他工具也可以调用 readConfigFile
    (#12602)

稳定性保证包含哪些?

向后兼容只覆盖语言的稳定部分,这些部分定义在手册上。

编译器将实现实验性的特性记载在实验手册。这些特性可能存在向后不兼容;包括concepts,do记号和一些其它特性。也有标准库模块仍然不稳定——这些已经在文档中标记为“不稳定API”。

你可以使用实验特性,即便是产品中,但注意这些不像我们期待的那样饱满。

标准库也被覆盖,只要相关问题在文档中模块清晰的标记了v1.0标签。

BUG 修复

  • 修复了 “在 OSX 上多次调用后,gorgeEx() 失败”的问题
    (#12337)
  • 优化和加强了 posix 模块
    (#10723)
  • 修复了 “Nim 的语法检查 允许使用 gorgeEx(),但不允许 writeFile()
    的问题,现在这两个都被提示 don’t run staticExec for ‘nim suggest
    了 (#12491)
  • 修复了 “一个算数的低级错误: -3 mod 7 == 3”
    (#12514)
  • 修复了 “后端集成文档中 c2nim 链接失效”
    的问题(#12537)
  • 修复了 “‎具有默认值的泛型参数会导致不正确的泛型类型解析‎” 的问题
    (#12528)
  • 修复了 “再次出现的问题: compiler/vmgen.nim(354, 20) false leaking
    temporary 10 slotTempInt [AssertionError]
    (#12547)
  • 修复了 “Windows 上的 64 位(只有在 64 位上有问题) nim 编译/链接断开”
    (#12536)
  • 修复了 “除了最新的 devel 版本No =destroy for elements of closure
    environments other than for latest devel –gc:destructors”
    (#12577)
  • 修复了 “[1.0.0] 无法使用 –cpu:avr 进行编译”
    (#12395)
  • 修复了 “使用无效的对象变体会导致编译器崩溃”
    (#12379)
  • 修复了 “import 之前写的编译指示会被静默忽略”
    (#5050)
  • 修复了 “ strformat + asyncdispatch + const 同时使用会报错” 的问题
    (#12612)
  • 修复了 “--nimblePath 是附加的,需要一个无痛的解决方案”
    (#12601)
  • 修复了 “nim.cfg 中 –define:FOO:VAL 的语法没有文档或者缺失”
    (#12367)
  • 修复了 “使用宏生成的 vm 字符串无法正常使用”
    (#12670)
  • 修复了 “staticRead() 引入的静态文件变更时,会强制触发重新编译。”
    (#12663)
  • 修复了终止处理程序中调用 throw 引发的崩溃
    (#12572)
  • 修复了用于 具有字符串字段的对象 的 newLit
    (#12542)

例外情况

我们当然也必须承认存在例外。在一些严重的情况下,例如标准库的安全漏洞,我们保留使用它的向后不兼容性权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注