1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 Nim 0.10.2 发布,命令式编程语言 下载

本帖由 漂亮的石头2014-12-30 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,020
    赞:
    46
    Nimrod (已改名为 Nim)是一个新型的静态类型、命令式编程语言,支持过程式、函数式、面向对象和泛型编程风格而保持简单和高效。Nimrod从Lisp继承来的一个特殊 特性--抽象语法树(AST)作为语言规范的一部分,可以用作创建领域特定语言的强大宏系统。

    Nimrod是一个编译型的具有垃圾收集的系统编程语言,有着极其卓越的生产/性能比。Nimrod的设计集中在三个E上:即效率(efficiency)、表达能力(expressiveness)和优雅(elegance)。

    Nim 0.10.2 发布,此版本包括大量的语言改进,一些可能会跟现有的代码大不相同。为了大家的方便,添加了一个新的工具 nimfix,使用最新版本的编译器,帮助转换现有的项目。

    Nim 很快就要开始 1.0 版本了,1.0 版本将不会有太多重大的改进。现阶段添加了新的模块 asyncdispatch ,帮助便携高效的 web 服务器应用,使用非阻塞代码。Nim 添加了一个内置线程池,为了使用 spawn 进行轻量级的线程开发。

    此版本废弃了T "T" 和 "P" 类型前缀,添加了一个新的可搜索的论坛,添加了新的网站和改进现有的文档生成器 docgen。

    Nim 将会很快到达 1.0 版本,除了 bug 修复,计划添加两个重要特性:


    • static[T] needs to be defined precisely and the bugs in the implementation need to be fixed.


    • Overloading of the assignment operator is required for some generic containers and needs to be implemented.
    更新日志


    影响向后兼容方面的改进


    • The language has been renamed from Nimrod to Nim. The name of the compiler changed from nimrod to nim too.


    • system.fileHandle has been renamed to system.getFileHandle to prevent name conflicts with the new type FileHandle.


    • Comments are now not part of the AST anymore, as such you cannot use them in place of discard.


    • Large parts of the stdlib got rid of the T/P type prefixes. Instead most types now simply start with an uppercased letter. The so called "partial case sensitivity" rule is now active allowing for code like var foo: Foo in more contexts.


    • String case (or any non-ordinal case) statements without 'else' are deprecated.


    • Recursive tuple types are not allowed anymore. Use object instead.


    • The PEGS module returns nil instead of "" when an optional capture fails to match.


    • The re module returns nil instead of "" when an optional capture fails to match.


    • The "symmetric set difference" operator (-+-) never worked and has been removed.


    • defer is a keyword now.


    • func is a keyword now.


    • The using language feature now needs to be activated via the new {.experimental.} pragma that enables experimental language features.


    • Destructors are now officially experimental.


    • Standalone except and finally statements are deprecated now. The standalone finally can be replaced with defer, standalone except requires an explicit try.


    • Operators ending in > are considered as "arrow like" and have their own priority level and are right associative. This means that the => and -> operators from the future module work better.


    • Field names in tuples are now ignored for type comparisons. This allows for greater interoperability between different modules.


    • Statement lists are not converted to an implicit do block anymore. This means the confusing nnkDo nodes when working with macros are gone for good.

    语言组件


    • The new concurrency model has been implemented including locks sections, lock levels and object field guards.


    • The parallel statement has been implemented.


    • deepCopy has been added to the language.


    • The builtin procCall can be used to get super-like functionality for multi methods.


    • There is a new pragma {.experimental.} that enables experimental language features per module, or you can enable this features on a global level with the --experimental command line option.

    编译器组件


    • The compiler now supports mixed Objective C / C++ / C code generation: The modules that use importCpp or importObjc are compiled to C++ or Objective C code, any other module is compiled to C code. This improves interoperability.


    • There is a new parallel statement for safe fork&join parallel computing.


    • guard and lock pragmas have been implemented to support safer concurrent programming.


    • The following procs are now available at compile-time:

      math.sqrt, math.ln, math.log10, math.log2, math.exp, math.round,
      math.arccos, math.arcsin, math.arctan, math.arctan2, math.cos, math.cosh,
      math.hypot, math.sinh, math.sin, math.tan, math.tanh, math.pow,
      math.trunc, math.floor, math.ceil, math.fmod,
      os.getEnv, os.existsEnv, os.dirExists, os.fileExists,
      system.writeFile

    • Two backticks now produce a single backtick within an emit or asm statement.


    • There is a new tool, nimfix to help you in updating your code from Nimrod to Nim.


    • The compiler's output has been prettified.

    库组件


    • Added module fenv to control the handling of floating-point rounding and exceptions (overflow, division by zero, etc.).


    • system.setupForeignThreadGc can be used for better interaction with foreign libraries that create threads and run a Nim callback from these foreign threads.


    • List comprehensions have been implemented as a macro in the future module.


    • The new Async module (asyncnet) now supports SSL.


    • The smtp module now has an async implementation.


    • Added module asyncfile which implements asynchronous file reading and writing.


    • osproc.kill has been added.


    • asyncnet and asynchttpserver now support SO_REUSEADDR.

    Bug 修复


    • nil and NULL are now preserved between Nim and databases in the db_* modules.


    • Fixed issue with OS module in non-unicode mode on Windows.


    • Fixed issue with x.low (#1366).


    • Fixed tuple unpacking issue inside closure iterators (#1067).


    • Fixed ENDB compilation issues.


    • Many asynchttpserver fixes.


    • Macros can now keep global state across macro calls (#903).


    • osproc fixes on Windows.


    • osproc.terminate fixed.


    • Improvements to exception handling in async procedures. (#1487).


    • try now works at compile-time.


    • Fixes T = ref T to be an illegal recursive type.


    • Self imports are now disallowed.


    • Improved effect inference.


    • Fixes for the math module on Windows.


    • User defined pragmas will now work for generics that have been instantiated in different modules.


    • Fixed queue exhaustion bug.


    • Many, many more.

    更多内容请看发行说明
    Nim 0.10.2 发布,命令式编程语言下载地址
     
正在加载...