想要领会越来越多关于 1.0.0 版本的底细,可以查看大家四个月前
本子发表表达。

语言加上

– 内联迭代器未来帮助回到lent T类型,近似于再次来到var T的迭代器:

iterator myitems[T](x: openarray[T]): lent T
iterator mypairs[T](x: openarray[T]): tuple[idx: int, val: lent T]


增添importjs编写翻译提醒能够用于替换importcpp和importc来导入JavaScript符号。importjs例程类型应用最大灵活性方式。

概述

在本教程中,大家将学习如何在Ubuntu
16.04上设置Nim。 大家将从Ubuntu存款和储蓄库安装Nim,并从源代码安装nim。

Nim是:

  • 一个系统和应用程序编制程序语言。
    静态类型和编写翻译,它提供了贰个文雅的包装独一无二的性子。

Nim提供:

  • 高品质垃圾搜罗的语言
  • 编译为C,C ++或JavaScript
  • 变化无依据关系的二进制文件
  • 在Windows,MacOS,Linux等上运转

包含了 bug 修复、文书档案更新 等内容

文书档案更新

  • 给 Math 模块增加了文书档案(#12460)
  • 修补了好些个失效的链接,尽量将链接替换为了链接到文书档案内部
    (#12463)
  • sequtils:在示范中替换掉了曾经遗弃的 ‘random’ 用法
    (#12515)
  • 给整型增加了文档(#12513)
  • 修复了代码风格的不当
    (#12545)
  • 改良文书档案和注释中的多少个谬误
    (#12553)
  • 累Gavin书档案以更加好所在分 getProjectPath, getCurrentDir
    currentSourcePath (#12565)
  • doc/tut3.rst: 修复了介绍中的错别字
    (#12607)
  • 加多了指向 packagingdistro 页面的链接
    (#12603)
  • 修复了 $*(dt: DateTime) 的说明
    (#12660)
  • 在 manual.rst 中对 experimental / parallel 插足了示范以明显区分
    (#12472)
  • 修补手册中错误的章节层级关系
    (#12724)

(文/开源中华夏族民共和国卡塔尔(قطر‎    

Nim的未来

我们想专心于Nim的工具,富含Nimsuggest(多样编辑器的Nim代码补全引擎卡塔尔(قطر‎,Nimble(Nim的包微型机State of Qatar和Nimpretty(Nim的源代码格式化学工业具)。个人认为”增量编写翻译”(IC卡塔尔国是Nim编写翻译器的下个里程碑。IC将更为加速已经飞快的Nim编译,缓存宏进行结果和别的组织。

关于concepts和owned:
大家告诉自身这两特性状必需和1.0本子一同宣布因为它们更换了Nim代码的莫过于编纂。小编不认同,未有concept语言工作的很好,已经有个别concepts也可用,就算它们的语法和语义亟待纠正。以往还不鲜明是还是不是会在言语中采用owned,作者也可以有改正Nim内部存款和储蓄器管理的其它思忖。

1.0本子的大旨是交给我们有的,不是咱们想要的。前程是美好的,1.0本子只是叁个早先。就如一场婚姻,只是婚典的始发。

从存款和储蓄库安装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

Nim 团队很心仪发布 v1.0.2 版本, 那是在 1.0.0 之后大家第叁遍发布补丁。

距离前三个版本的公布即便只是病故了七个月的时日,
但此次的本子已经满含了当先 陆十七次新的交付,
新修复了 20 个难题, 让我们的 1.0 版本造成了更好的轨范。

耳熟能详向后包容性的改观


-d:nimBinaryStdFiles开关未有了。stdin/stdout/stderr再度成为二进制文件。仅影响Windows。


在Windows控制台应用,code-page在前后相继伊始时设置为UTF-8。使用-d:nimDontSetUtf8CodePage开关来关闭。


语言定义和编写翻译器关于gensym的标记在干净模板中更为凶残。见手册。越多细节,使用编写翻译器开关–oldgensym:on作为过度期。

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

应用程序成功运维。

想要了然越来越多关于 v1.0.0 的内容,
看一看大家八个月前发的 透露表明。

以下由华语社区翻译,本事有限,如有翻译错误,接待出席QQ 群指正!

例外情状

作者们当然也必须要认同存在不相同。在有个别严重的事态下,举例规范库的安全漏洞,我们保留使用它的向后不包容性任务。

小结

在本教程中,大家上学了何等从Ubuntu存储库安装Nim。
大家学习了什么编写翻译Hello Nim! 源代码来测量检验大家的安装。

笔者们还学习了怎么着从源代码安装Nim。 祝你与Nim玩得欢快!

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

0907威尼斯网址 1

即使间距上个版本独有八个月,
这些本子也早就经验了超越 六拾次新的提交,
修复了超过肆13个错误报告, 让我们的 1.0.0 可以更进一层强健。

语言层面包车型地铁改观

  • 效仿开始的一段时期版本的 Nim ,在运营时打消了对无标识整数调换的反省。
    文书档案中已针对性这一更进一步做出了表明。查看
    https://github.com/nim-lang/RFCs/issues/175
    精通更加多细节 (#12688)
  • 添加了 or detectOs(Manjaro),这样当检查实验到系统为 Manjaro
    时,调用原生的包微电脑会动用 pacman 实行李包裹管理(#12587)
  • --os:ios 编译指令现在也代表了 macosx
    (#12585)
  • 导出了 nim.cfg 深入深入分析器,以往别的工具也能够调用 readConfigFile
    (#12602)

v1.0 – 2019-09-23

从源代码安装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.2

设若您曾经用 choosenim 安装了事前版本, 获取 Nim 1.0.2 版本会非常轻易:

$ choosenim update stable

借让你还一向不,你能够因而 此间的牵线 来获取 choosenim
当然你也得以由此大家的 安装 页面直接设置。

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 举办编写翻译”
    (#0907威尼斯网址,12395)
  • 修复了 “使用无效的目的变心得诱致编写翻译器崩溃”
    (#12379)
  • 修复了 “import 早先写的编写翻译提示会被沉默寡言忽视”
    (#5050)
  • 修复了 “ strformat + asyncdispatch + const 同不平时间接选举择会报错” 的主题素材(#12612)
  • 0907vip,修复了 “--nimblePath 是外加的,必要叁个无痛的建设方案”
    (#12601)
  • 修补了 “nim.cfg 中 –define:FOO:VAL 的语法未有文书档案或许缺点和失误”
    (#12367)
  • 修补了 “使用宏生成的 vm 字符串不能够平常使用”
    (#12670)
  • 修复了 “staticRead() 引进的静态文件更动时,会免强触发重新编写翻译。”
    (#12663)
  • 修复了甘休管理程序中调用 throw 引发的崩溃
    (#12572)
  • 修复了用来 具备字符串字段的指标 的 newLit
    (#12542)

标准库中的破坏性退换


大家移除了unicde.Rune16,因为名字是错的,也远非察觉使用它的地点。要是您需求,增多如下代码到项目:

type
  Rune16* = distinct int16

– exportc在nim cpp今后应用C命名粉碎并不是C++命名碎裂,匹配importc。nim
cpp时接纳新的exportcpp C++破裂。

更新日志

翻看此版本的改革日志以至 Nim 的别的源代码,可访谈 我们的 GitHub
仓库。

(文/开源中夏族民共和国State of Qatar    

发表评论

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