Nim命令式編程語言0.17.0官方最新版是一個新型的靜態類型、命令式編程語言,支持過程式、函數式、麵向對象和泛型編程風格而保持簡單和高效。Nimrod從Lisp繼承來的一個特殊特性--抽象語法樹(AST)作為語言規範的一部分,可以用作創建領域特定語言的強大宏係統。
Nimrod 是一個編譯型的具有垃圾收集的係統編程語言,有著極其卓越的生產/性能比。Nimrod 的設計集中在三個E上:即效率(efficiency)、表達能力(expressiveness)和優雅(elegance)。
Nim 0.17.0 發布了,Nim 是一種專注於性能,可移植性和表現力的係統編程語言。
此版本修複了 0.16.0 版本中最重要的回歸,特別是內存管理器和通道錯誤已經修複。
語言方麵也有很多重大改進,特別是在概念(concepts)方麵投入大量的工作。請查看下麵的更改日誌,獲取全麵的更改列表。
影響向後兼容性的變更:
There are now two different HTTP response types, Response and AsyncResponse. AsyncResponse’s body accessor returns a Future[string]!
Due to this change you may need to add another await in your code.
httpclient.request now respects the maxRedirects option. Previously redirects were handled only by get and post procs.
The IO routines now raise EOFError for the “end of file” condition. EOFError is a subtype of IOError and so it’s easier to distinguish between “error during read” and “error due to EOF”.
A hash procedure has been added for cstring type in hashes module. Previously, hash of a cstring would be calculated as a hash of the pointer. Now the hash is calculated from the contents of the string, assumingcstring is a null-terminated string. Equal string and cstring values produce an equal hash value.
Macros accepting varargs arguments will now receive a node having the nkArgList node kind. Previous code expecting the node kind to be nkBracket may have to be updated.
memfiles.open now closes file handles/fds by default. Passing allowRemap=true to memfiles.open recovers the old behavior. The old behavior is only needed to call mapMem on the resulting MemFile.
posix.nim: For better C++ interop the field sa_sigaction*: proc (x: cint, y: var SigInfo, z: pointer) {.noconv.} was changed to sa_sigaction*: proc (x: cint, y: ptr SigInfo, z: pointer) {.noconv.}.
The compiler doesn’t infer effects for .base methods anymore. This means you need to annotate them with .gcsafe or similar to clearly declare upfront every implementation needs to fullfill these contracts.
system.getAst templateCall(x, y) now typechecks the templateCall properly. You need to patch your code accordingly.
macros.getType and macros.getTypeImpl for an enum will now return an AST that is the same as what is used to define an enum. Previously the AST returned had a repeated EnumTy node and was missing the initial pragma node (which is currently empty for an enum).
macros.getTypeImpl now correctly returns the implementation for a symbol of type tyGenericBody.
If the dispatcher parameter’s value used in multi method is nil, a NilError exception is raised. The old behavior was that the method would be a nop then.
posix.nim: the family of ntohs procs now takes unsigned integers instead of signed integers.
In Nim identifiers en-dash (Unicode point U+2013) is not an alias for the underscore anymore. Use underscores instead.
When the requiresInit pragma is applied to a record type, future versions of Nim will also require you to initialize all the fields of the type during object construction. For now, only a warning will be produced.
The Object construction syntax now performs a number of additional safety checks. When fields within case objects are initialiazed, the compiler will now demand that the respective discriminator field has a matching known compile-time value.
On posix, the results of waitForExit, peekExitCode, execCmd will return 128 + signal number if the application terminates via signal.
ospaths.getConfigDir now conforms to the XDG Base Directory specification on non-Windows OSs. It returns the value of the XDG_CONFIG_DIR environment variable if it is set, and returns the default configuration directory, “~/.config/”, otherwise.
Renamed the line info node parameter for newNimNode procedure.
The parsing rules of do changed.
76.4M / 03-25
立即下載55M / 06-05
立即下載237.9M / 04-13
立即下載140.5M / 03-06
立即下載900.9M / 03-02
立即下載96.2M / 07-06
立即下載311.2M / 07-06
立即下載335M / 07-06
立即下載200M / 07-06
立即下載413.8M / 07-06
立即下載353.9M / 06-05
立即下載131.8M / 04-13
立即下載230.8M / 03-03
立即下載195.6M / 03-03
立即下載165.4M / 03-03
立即下載45.6M / 09-08
立即下載665.2M / 07-06
立即下載2.84G / 07-06
立即下載93M / 07-06
立即下載338.3M / 07-06
立即下載1.38G / 07-26
立即下載488.3M / 07-16
立即下載109.8M / 06-03
立即下載142M / 01-08
立即下載1.2M / 11-23
立即下載548.8M / 04-13
立即下載1.6M / 04-13
立即下載1.48G / 03-18
立即下載646.6M / 03-03
立即下載133.7M / 03-03
立即下載325.8M / 06-07
立即下載60M / 04-29
立即下載254M / 04-25
立即下載659M / 04-23
立即下載1M / 12-26
立即下載253.4M / 12-08
立即下載253M / 12-08
立即下載1.19G / 11-16
立即下載110.5M / 04-23
立即下載26.7M / 03-16
立即下載488.3M / 07-16
立即下載248.9M / 12-08
立即下載248.9M / 12-08
立即下載201.2M / 04-13
立即下載100.6M / 03-06
立即下載148.9M / 03-06
立即下載1.12G / 07-06
立即下載1.25G / 07-06
立即下載9.48G / 07-06
立即下載50KB / 07-06
立即下載116.2M / 04-10
立即下載1.92G / 04-17
立即下載201.5M / 04-13
立即下載7.31G / 07-01
立即下載94.3M / 07-06
立即下載2.48G / 07-06
立即下載7.63G / 07-06
立即下載1M / 07-06
立即下載778.1M / 07-06
立即下載509.7M / 07-06
立即下載561.8M / 07-11
立即下載1.32G / 01-19
立即下載72M / 07-06
立即下載548.7M / 07-06
立即下載1.00G / 07-06
立即下載9.13G / 07-06
立即下載126.2M / 07-06
立即下載72M / 07-06
立即下載105.1M / 07-06
立即下載132M / 07-06
立即下載