Nim是一种极少见的 可编程 静态类型的, 并结合了C的速度和内存效率、凝练的语法、内存安全性和其他多种目标的语言。
编译器和标准库正在积极开发中,并有一套测试用例来持续确保稳定性。 每三到六个月会定期发布一次稳定版,让稳定性要求高的系统可以得到保证。
很少出现不向后兼容的更新, 但每次出现我们都做了详细的文档记录, 让你可以轻松地进行管理。 编译器也会对已弃用的功能进行高亮显示, 以便为更新提供足够的提示和转换时间。
Nim通过不执行指针运算、 可选检查、 跟踪和非跟踪引用 以及可选的非可空类型来保证内存安全性。 它通过koch工具和污点分析对Valgrind提供支持。
Nim编译器和库是MIT许可的。 这意味着你可以为你使用Nim开发的程序选取任何许可。
我们最近并没有计划对JVM/CLR提供支持。 但是由于这些VM支持FFI到C, 因此应该可以创建原生Nim桥接, 通过Nim强大的元编程功能,可以显式生成所有粘水代码。
Nim大量借用了(按照受影响的顺序):Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
proc
?过程曾经是常用术语,而不是作为没有别的用的数学的函数实体。
而且在Nim中func
确实是proc {.noSideEffect.}
的语法糖。
还因为Nim提供了一个iterator
和一个method
关键字,而def
代表define
,
所以叫它def
也就不可能了。
对于标准的配置文件,-d:danger
通过禁用 所有 运行时安全检查(包括边界检查、流程检查、空值检查等等),以尽最快速度构建二进制文件。
更多的情况下用-d:release
就已经足以应付。
当然如果你的编译器支持,你也可以开启链接时优化来更快地构建一个可执行文件: 在 Nim 1.4 以上版本使用 --passc:-flto
或者 -d:lto
对于标配的文件, -d:danger -d:strip --opt:size
就能得到你想要的。
当然如果你的编译器支持,你也可以和上一个问题中描述的相同方式,开启链接时优化来构建一个更快的可执行文件
打开并编辑config/nim.cfg
文件。
将cc
变量的值对照下方表格进行修改:
缩写 | C/C++ 编译器 |
---|---|
gcc |
GNU C编译器 |
clang |
Clang编译器 |
vcc |
微软Visual C++ |
icc |
Intel C编译器 |
llvm_gcc |
LLVM-GCC编译器 |
ucc |
通用UNIX C编译器 |
tcc |
微型 C 编译器 |
bcc |
Borland C 编译器 |
envcc |
你环境中的默认 C 编译器 |
其他的C编译器我们不进行官方支持,但是它可能也能用,大概吧。
如果你的C编译器不在上述列表中,
尝试使用 环境中的默认 C 编译器 (envcc
) 。
如果C编译器需要不同的命令行参数,可以尝试使用 --passc
和 --passl
进行切换。